前言¶
DeepSeek Harness(DSH)的插件生态采用「一切皆插件」的思路:每个插件通过 Cordis 注册一个工具,由智能体按需调用。在需要处理超长、多模态原始文件(财报工作簿、长合同、业务台账)的场景下,直接把文件丢给大模型往往会导致 Token 爆炸、注意力分散、数字算错或条款遗漏。本插件在「读文件」之前先做一层确定性萃取:将原始文件压成高密度结构化 Markdown + JSON,过滤冗余、抽取实体、做勾稽校验,供下游 M1–M4 模块用最省 Token 的上下文。
是什么¶
dsh-context-extract 是一个纯 host 插件,为 DSH 注入一个全局工具 context_extract,以及一段「上下文萃取与压缩器」的系统提示。安装后,任何会话都可以直接调用该工具,把超长原始文件转为结构化输出。插件本身不新增 GUI、不改 DSH 源码、没有 npm 运行时依赖。
核心功能¶
安装后,context_extract 会完成以下工作:
- 类型识别:自动判断文件类型(财务报表·法律合同·业务台账)。
- 关键指标抽取:针对财务报表抽取关键指标交叉表。
- 表格与条款切分:将台账表格 dump,将合同按条款编号化切分。
- 实体抽取:识别公司、日期、金额等实体。
- 勾稽校验:仅在财务报表时自动校验平衡关系与现金勾稽,发现异常输出
<alert>。 - 输出结构化 Markdown + JSON:包含
type、type_label、key_items、tables、clauses、entities、alerts、markdown、token_estimate、report.markdownPath、report.jsonPath。 - 只读输入:插件只读取原文件,绝不修改。
典型用法¶
调用示例:
context_extract(
path: "/abs/or/relative/财报.xlsx", // 必填;支持 .xlsx/.xlsm/.csv/.docx/.txt/.md
targets: ["货币资金", "净利润"], // 可选:只抽指定指标
outputDir: "..." // 可选:报告目录(默认 <输入目录>/.context-extract)
)
返回值示例(JSON):
{
"type": "financial-report",
"type_label": "财务报表",
"key_items": [
{"item": "货币资金", "value": 1234567890, "row": "资产总计"},
{"item": "净利润", "value": 987654321, "row": "利润表"}
],
"tables": [...],
"clauses": [...],
"entities": [...],
"alerts": [
{"type": "balance-sheet", "message": "资产总计 ≠ 负债合计 + 所有者权益合计(容差 0.1%)"},
{"type": "cash-tieout", "message": "BS 货币资金 ≠ CF 期末现金及现金等价物"}
],
"markdown": "...",
"token_estimate": "...",
"report": {
"markdownPath": "...",
"jsonPath": "..."
}
}
能力边界(v0.1)¶
| 文件 | 处理方式 |
|---|---|
.xlsx/.xlsm |
财务报表:关键指标交叉表 + 勾稽;台账:表格 dump(前 200 行) |
.csv |
解析为表 |
.docx |
抽取段落 + 表格,合同按条款切分 |
.txt/.md |
文本直读,识别合同/财务标记 |
.pdf |
不支持(运行时 pdfplumber 损坏、无 pymupdf);需先用 LibreOffice Kit 转文本或 xlsx |
勾稽校验(自动,仅在财务报表时)¶
balance-sheet:资产总计 ≠ 负债合计 + 所有者权益合计(容差 0.1%)→<alert>。cash-tieout:BS 货币资金 ≠ CF 期末现金及现金等价物 →<alert>。
安装与启用¶
以 desktop profile 为例:
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 检查。
适用场景与注意¶
- 适合需要从财报、合同、台账等超长原始文件中快速抽取结构化信息的 DSH 智能体开发场景。
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
- 已知限制:
- 关键指标依赖中文行标签(资产总计、负债合计、货币资金等);非中文模板会退化为台账/文本。
- 公式单元格若无缓存值,按空处理(报告中会标注;需要精确值可先用 LibreOffice 重算)。
- 条款切分为结构性切分,不生成语义摘要——「条款号 + 核心义务/权利」的概括由 agent 按系统提示完成。
- PDF 不支持,需先转换。
结尾¶
通过在「读文件」之前先做一层确定性萃取,本插件能让下游模块用更少的 Token 掌握同样的事实,降低 Token 爆炸与数字出错的风险。相关目录与源码见下:
- SkillHub 插件页:https://www.skillhub.cn/plugins/zirscard/dsh-context-extract
- GitHub 仓库:https://github.com/zirscard/dsh-context-extract