Files
market/skills/dev-environment-setup/references/office-deps.md
xyx 4f7037a6b6 fix: replace hardcoded ~/.desirecore paths with ${DESIRECORE_ROOT} variable (#16)
## Summary

- 将所有技能文件中的硬编码 `~/.desirecore/` 和 `$HOME/.desirecore/` 路径替换为
`${DESIRECORE_ROOT}/` 变量
- 递增 manifest.json version 至 1.2.1

## Why

dev 模式下 `DESIRECORE_HOME=~/.desirecore-dev`,硬编码路径导致技能读取错误的端口文件和目录。主仓库的
`variable-substitutor.ts` 会在运行时将 `${DESIRECORE_ROOT}` 替换为实际根目录。

## Test plan

- [ ] `npm run dev` 启动后触发任意技能,确认端口路径解析为
`~/.desirecore-dev/agent-service.port`
- [ ] prod 模式确认路径为 `~/.desirecore/agent-service.port`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-29 15:36:19 +08:00

4.2 KiB
Raw Blame History

办公技能依赖速查

DesireCore 办公四件套DOCX / PDF / XLSX / PPTX所需依赖汇总。Python 包通过 python-runtime skill 决策树安装Node.js 包通过 nodejs-runtime skill系统工具见 system-tools.md

DOCXWord 文档)

# Python 包
pip install lxml defusedxml

# Node.js 包
npm install -g docx

# 系统工具
# pandoc      —— 文本提取
# LibreOffice —— PDF 转换

PDFPDF 文档)

# Python 核心
pip install pypdf pdfplumber Pillow

# Python 可选
pip install reportlab     # PDF 创建
pip install pdf2image     # PDF 转图片(需 poppler
pip install pytesseract   # OCR需 tesseract

# 系统工具
# poppler-utils —— pdftotext / pdftoppm / pdfimages
# qpdf          —— 合并 / 拆分 / 解密
# tesseract     —— OCR 引擎

XLSX电子表格

# Python
pip install openpyxl pandas

# 系统工具
# LibreOffice —— 公式重算

PPTX演示文稿

# Python
pip install "markitdown[pptx]" Pillow

# Node.js
npm install -g pptxgenjs

# 系统工具
# LibreOffice    —— PDF 转换
# poppler-utils  —— PDF 转图片

一键安装四件套全部依赖

macOS / Linux

# Python在虚拟环境中或用 pipx 安装 CLI 工具)
pip install lxml defusedxml pypdf pdfplumber Pillow reportlab openpyxl pandas "markitdown[pptx]"

# Node.js用户级 prefix避免 sudo
npm install -g docx pptxgenjs

# 系统工具macOS
brew install --cask libreoffice
brew install poppler qpdf pandoc tesseract tesseract-lang

# 系统工具Ubuntu/Debian
sudo apt install libreoffice poppler-utils qpdf pandoc tesseract-ocr tesseract-ocr-chi-sim

Windows

# Python
pip install lxml defusedxml pypdf pdfplumber Pillow reportlab openpyxl pandas "markitdown[pptx]"

# Node.js
npm install -g docx pptxgenjs

# 系统工具
winget install TheDocumentFoundation.LibreOffice
winget install JohnMacFarlane.Pandoc
# poppler / qpdf / tesseract 见 system-tools.md

包名 vs import 名

安装名pip import 名
Pillow PIL
beautifulsoup4 bs4
python-dateutil dateutil
markitdown markitdown
pypdf pypdf

环境验证脚本

四件套依赖速查(保存为 check-office.sh

#!/usr/bin/env bash
echo "=== Python ==="
python3 --version 2>/dev/null || echo "MISSING: python3"

echo "=== pip ==="
pip3 --version 2>/dev/null || echo "MISSING: pip3"

echo "=== Node.js ==="
node --version 2>/dev/null || echo "MISSING: node"

echo "=== npm ==="
npm --version 2>/dev/null || echo "MISSING: npm"

echo "=== Python Packages ==="
python3 - <<'PY'
packages = {
    'lxml': 'lxml',
    'defusedxml': 'defusedxml',
    'pypdf': 'pypdf',
    'pdfplumber': 'pdfplumber',
    'PIL': 'Pillow',
    'openpyxl': 'openpyxl',
    'pandas': 'pandas',
    'markitdown': 'markitdown',
    'reportlab': 'reportlab',
}
for mod, pkg in packages.items():
    try:
        __import__(mod)
        print(f'  OK: {pkg}')
    except ImportError:
        print(f'  MISSING: {pkg}')
PY

echo "=== Node.js Global Packages ==="
for pkg in docx pptxgenjs; do
    node -e "require('$pkg')" 2>/dev/null && echo "  OK: $pkg" || echo "  MISSING: $pkg"
done

echo "=== System Tools ==="
for cmd in soffice pandoc pdftoppm pdftotext qpdf tesseract; do
    command -v "$cmd" >/dev/null 2>&1 && echo "  OK: $cmd" || echo "  MISSING: $cmd"
done

跨 skill 协作

办公技能docx / pdf / xlsx / pptx报告依赖缺失时按以下顺序

  1. Python 缺失 → 触发 python-runtime skill 决策树
  2. Node.js 缺失 → 触发 nodejs-runtime skill 决策树
  3. Python/Node.js 包缺失 → 上方一键命令
  4. 系统工具缺失system-tools.md

在 DesireCore 应用内通过 API 装包

DesireCore 内置 Hatch/Volta不直接管理 pip / npm 包安装——只管理 Python / Node 自身版本。包安装仍走 pip install / npm install

如果使用 Hatch 创建的 Python

${DESIRECORE_ROOT}/runtime/hatch/local/3.12/python/bin/python3 -m pip install lxml defusedxml

如果使用 Volta 安装的 Node

${DESIRECORE_ROOT}/runtime/volta/bin/npm install -g docx pptxgenjs