@deepseek-ai/dsh-tool-diff
DSH 差异工具:文本/JSON/CSV/Markdown 的结构化比较,以及统一差异生成和内存补丁验证。零依赖,只读。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:omdsh-dev/dsh-tool-diff说明文档
阅读完整 README ↗dsh-tool-diff
DSH Diff 文本差异工具插件 —— 文本 / JSON / CSV / Markdown 结构化比较与 unified diff 生成。零依赖、纯函数、只读。
动机
Agent 需要对比两份内容(配置片段、API 响应、表格、文档修订)时,现有路径是起 bash 进程调用系统 diff 或手写比较逻辑:
- 每次调用都起进程——Windows 上尤其昂贵
- 系统 diff 不懂结构——JSON 只能给整段文本差异,看不出
$.user.name这样的路径级变更 - 手写比较代码不可验证——边界(引号内逗号、嵌套数组、标题重命名)极易出错
本插件提供确定性、零依赖、纯函数的差异比较:一次函数调用,毫秒级返回结构化 JSON 报告或标准 unified diff。
安全模型
- 零依赖:Myers 行级 diff、RFC 4180 解析器、JSON 递归比较全部手写
- 只读:不读文件、不写文件、不联网、不调 git;
patchaction 只在内存中生成并校验补丁,绝不落盘 - 预算:
- 输入单侧 ≤ 256 KiB(超限直接报错)
- 输出 ≤ 64 KiB(超限按
maxChanges与字节预算截断并置truncated) - Myers diagonal 预算 2000 + 蛇步总预算 2000 万 + 公共前后缀修剪 + hash 快速拒绝 + 规模上限 4000 行 → 恶意重复/全异文本有界完成
- 行数 ≤ 50K、JSON 嵌套 ≤ 64 层、CSV ≤ 50K 行 / 512 列
timeoutMs: 2000
- 工具参数会记入会话日志,不要传入敏感数据
工具声明
注册 diff 工具(@deepseek-ai/dsh-tool-diff,row id tool-diff),统一输出 JSON 文本字符串信封:所有 action 都带通用摘要 { equal, truncated, beforeBytes, afterBytes, changes }。
| action | 作用 | 输出 |
|---|---|---|
text | 行级 Myers diff | unified diff(--- before / +++ after / @@ hunks,无时间戳)+ 统计;format=structured 输出带行号的操作列表 |
json | 递归比较两个 JSON 值 | $ 路径化变更($.user.name、$.items[0]、$['a.b'])+ add/remove/replace 汇总 |
csv | RFC 4180 解析后按主键或位置比较 | addedRows / removedRows / changedRows(列级)/ duplicateKeys / 列集合变化 |
markdown | 轻量块级 tokenizer(标题/代码块/列表/引用/表格) | (rename 识别)/ ( 路径)/ + 全文 diff |