dsh-plugin
DayuanJiang/next-ai-draw-iodsh 的 draw.io 绘图插件:通过 next-ai-drawio MCP 服务器作图,点回复里的链接在右侧栏打开实时预览,可以手动修改图,AI 的每次修改都是可以恢复的版本。需 Node.js 18+,首次使用由 npx 下载 MCP 服务器。
为 DeepSeek Harness 注册一个 `context_extract` 工具:把长篇原始文件(财报底稿、合同、台账)压成高密度结构化 Markdown + JSON——关键指标、表格、条款切分、实体与勾稽 alert,让下游流程直接基于压缩结果工作,而不是重读原文。财报 / 合同 / 台账分别走不同解析路径;资产负债表与现金勾稽不平只报 alert,不静默修正。只读,不改原文件。需 Python 并安装 openpyxl 与 python-docx。
把「前置信息萃取与路由 Agent」做成 DSH 插件:agent 直接调用 context_extract 工具,把超长、多模态的原始文件(财报工作簿、长合同、业务台账)压成高密度结构化 Markdown + JSON,过滤冗余、抽取实体、做勾稽校验,供下游 M1–M4 模块用最省 Token 的上下文。
痛点:几十页财报 / 协议原图 / 长文本直接丢给 AI → Token 爆炸、注意力分散、算错数字、漏掉条款。本插件在「读文件」之前先做一层确定性萃取。
原始文件 → context_extract → 类型识别 → 关键指标/表格/条款/实体 + 勾稽 alert → 密集 Markdown + JSON
context_extract(所有会话可用)。context_extract(
path: "/abs/or/relative/财报.xlsx", # 必填;.xlsx/.xlsm/.csv/.docx/.txt/.md
targets: ["货币资金","净利润"], # 可选:只抽指定指标
outputDir: "..." # 可选:报告目录(默认 <输入目录>/.context-extract)
)
返回:type / type_label(财务报表·法律合同·业务台账)、key_items(关键指标交叉表)、tables(台账表格)、clauses(合同条款切分)、entities(公司/日期/金额)、alerts(勾稽 <alert>)、markdown(密集压缩文本)、token_estimate(≈字符/4)、report.markdownPath / jsonPath。
只读输入,从不修改原文件。
| 文件 | 处理 |
|---|---|
.xlsx/.xlsm | 财务报表 → 关键指标交叉表 + 勾稽;台账 → 表格 dump(前 200 行) |
.csv | 解析为表 |
.docx | 抽取段落 + 表格,合同按条款切分 |
.txt/.md | 文本直读,识别合同/财务标记 |
.pdf | 不支持(运行时 pdfplumber 损坏、无 pymupdf);先经 LibreOffice Kit 转文本或 xlsx |
balance-sheet:资产总计 ≠ 负债合计 + 所有者权益合计(容差 0.1%)→ <alert>cash-tieout:BS 货币资金 ≠ CF 期末现金及现金等价物 → <alert>CLI="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"
"$CLI" plugin --profile desktop add link:<plugin-dir>/dsh-context-extract
确认 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 里有 dsh-context-extract;改完在 GUI 工具列表里确认出现 context_extract(没出现则重启一次 DSH)。
卸载:"$CLI" plugin --profile desktop remove dsh-context-extract(不删报告)。
| 依赖 | 来源 |
|---|---|
| Python 3 + openpyxl + python-docx | ~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/python |
可用 DSH_CONTEXT_EXTRACT_PYTHON 覆盖 Python 路径。Python 缺失时工具报错并提示用 load_workspace_dependencies 检查。
plugins/dsh-context-extract/
├── index.js # host 插件:注册 context_extract + 系统提示
├── runner.js # 探测 python,spawn 萃取引擎
├── core/extract.py # 引擎 CLI(--input/--targets/--out-json/--out-md)
├── test/make_fixture.py # 生成自测样本
├── cordis.patch.yml
└── package.json
PY="$HOME/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/python/bin/python3"
PY test/make_fixture.py # 生成样本财报/台账/合同
PY core/extract.py --input test/fixtures/sample-financial.xlsx \
--out-json /tmp/extract.json --out-md /tmp/extract.md
sample-financial.xlsx 应输出 13 个关键指标、2 条 cash-tieout 勾稽提示;sample-contract.txt 切出 3 个条款;sample-ledger.csv 识别为台账。
MIT。