feat: 拆分 environment-setup 为 Python/Node.js 运行时双核心 + 父级路由

新增双核心 skill(深度集成 DesireCore Hatch/Volta + HTTP API + Socket.IO):
- python-runtime v1.0.1:Python 运行时管理
  · 四级降级:HTTP API → Hatch CLI 绝对路径 → 系统包管理器 → pyenv
  · references:hatch-desirecore / pyenv-fallback / virtualenv / troubleshooting
  · scripts/probe-python.sh:输出 JSON 快照供 Claude 解析决策
- nodejs-runtime v1.0.1:Node.js 运行时管理
  · 四级降级:HTTP API → Volta CLI → 系统包管理器/NodeSource → nvm/fnm
  · references:volta-desirecore / nvm-fallback / package-managers / troubleshooting
  · scripts/probe-node.sh:输出 JSON 快照(含 volta_tools / package_json_volta 等)

environment-setup → dev-environment-setup v2.0.1(重命名 + 重写为 router):
- 从 1380 行手册瘦身为 ~150 行索引
- 仅负责容器(Docker/Podman)/ WSL2 / 办公依赖速查 / 系统工具
- references/desirecore-runtime.md 沉淀 Hatch/Volta 路径表 + HTTP API 速查 +
  Socket.IO 事件契约,作为两个核心 skill 的共享底座
- references/decision-tree.md 定义四级降级决策树
- scripts/probe.sh + probe.ps1 系统级 JSON 探测

三个 SKILL.md 的 L0 改为场景驱动结构(何时使用 / 何时不要用 / 怎么做),
让 AI 凭名字与 L0 即可判断匹配场景。

注册更新:
- builtin-skills.json:新增 python-runtime / nodejs-runtime / dev-environment-setup
  (原 environment-setup 移除),按字母序,共 21 个 skill
- manifest.json:totalSkills 19→21,lastUpdated 2026-05-02

下游同步:
- docx / pdf / xlsx / pptx 中的环境引用从 environment-setup 拆分为
  python-runtime / nodejs-runtime / dev-environment-setup 三向指引

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-02 13:30:23 +08:00
parent 5472359814
commit 1a50969b93
29 changed files with 3310 additions and 1386 deletions

View File

@@ -0,0 +1,175 @@
# 办公技能依赖速查
DesireCore 办公四件套DOCX / PDF / XLSX / PPTX所需依赖汇总。Python 包通过 `python-runtime` skill 决策树安装Node.js 包通过 `nodejs-runtime` skill系统工具见 `system-tools.md`
## DOCXWord 文档)
```bash
# Python 包
pip install lxml defusedxml
# Node.js 包
npm install -g docx
# 系统工具
# pandoc —— 文本提取
# LibreOffice —— PDF 转换
```
## PDFPDF 文档)
```bash
# 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电子表格
```bash
# Python
pip install openpyxl pandas
# 系统工具
# LibreOffice —— 公式重算
```
## PPTX演示文稿
```bash
# Python
pip install "markitdown[pptx]" Pillow
# Node.js
npm install -g pptxgenjs
# 系统工具
# LibreOffice —— PDF 转换
# poppler-utils —— PDF 转图片
```
## 一键安装四件套全部依赖
### macOS / Linux
```bash
# 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
```powershell
# 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`
```bash
#!/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
```bash
~/.desirecore/runtime/hatch/local/3.12/python/bin/python3 -m pip install lxml defusedxml
```
如果使用 Volta 安装的 Node
```bash
~/.desirecore/runtime/volta/bin/npm install -g docx pptxgenjs
```