跳到正文

omdsh-dev/dsh-tool-diff

40最近提交 2026年8月14日

dsh-tool-diff DSH 插件

DSH Diff 是一个确定性的纯函数差异工具,为 DSH Agent 提供行级 Myers 差异、JSON 路径级变更、CSV 主键/位置比较、Markdown 块级差异以及补丁生成与校验。所有操作均为只读、内存有界且超时安全。

如何安装 dsh-tool-diff DSH 插件

dsh plugin --profile web add github:omdsh-dev/dsh-tool-diff

复制不会执行命令。安装 dsh-tool-diff DSH 插件前请核对仓库和版本。

dsh-tool-diff DSH 插件数据来源

dsh-tool-diff DSH 插件快照日期:2026年8月16日

discovered

dsh-tool-diff DSH 插件能做什么

  • 行级 Myers 差异 (text),支持 unified 或 structured 输出
  • 递归 JSON 比较,输出路径级 add/remove/replace
  • RFC 4180 CSV 解析,支持主键或位置比较
  • Markdown 块级 tokenizer (标题、代码块、列表、引用、表格),识别标题重命名
  • 补丁生成与内存校验,支持 hunk 级错误报告

dsh-tool-diff DSH 插件适合哪些场景

  • 对比两个 API 响应以检测 JSON 结构变化
  • 比较配置文件(如 YAML、INI)的文本差异
  • 追踪 Markdown 文档的修订历史
  • 比较带有主键或不带主键的 CSV 表格
  • 生成并验证自动化文本更新的补丁

dsh-tool-diff DSH 插件适合谁

  • 需要在 Agent 工作流中可靠执行差异比较的 DSH 插件开发者
  • 希望避免使用系统 diff 或手写比较代码的用户

dsh-tool-diff DSH 插件的限制

  • 输入单侧 ≤ 256 KiB,输出 ≤ 64 KiB
  • 最大行数 50K,JSON 嵌套 ≤ 64 层,CSV ≤ 50K 行 / 512 列
  • 超时固定为 2000 ms,不读写文件,不联网
  • patch action 拒绝 ignoreWhitespace 和 ignoreCase 选项

dsh-tool-diff DSH 插件的仓库 README 摘录

以下文字摘自 dsh-tool-diff DSH 插件的上游仓库 omdsh-dev/dsh-tool-diff 的 README,版权归原作者,仅作引用。

DSH Diff 文本差异工具插件 —— 文本 / JSON / CSV / Markdown 结构化比较与 unified diff 生成。零依赖、纯函数、只读。 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) ## 动机 Agent 需要对比两份内容(配置片段、API 响应、表格、文档修订)时,现有路径是起 `bash` 进程调用系统 diff 或手写比较逻辑: 1. **每次调用都起进程**——Windows 上尤其昂贵 2. **系统 diff 不懂结构**——JSON 只能给整段文本差异,看不出 `$.user.name` 这样的路径级变更 3. **手写比较代码不可验证**——边界(引号内逗号、嵌套数组、标题重命名)极易出错 本插件提供确定性、零依赖、纯函数的差异比较:一次函数调用,毫秒级返回结构化 JSON 报告或标准 unified diff。 ## 安全模型 - **零依赖**:Myers 行级 diff、RFC 4180 解析器、JSON 递归比较全部手写 - **只读**:不读文件、不写文件、不联网、不调 git;`patch` action 只在内存中生成并校验补丁,绝不落盘 - **预算**: - 输入单侧 ≤ 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 值 | `$` 路

阅读完整 README仓库许可: MIT

dsh-tool-diff DSH 插件常见问题

如何安装 DSH Diff 插件?

使用 `dsh plugin --profile web add github:omdsh-dev/dsh-tool-diff` 安装到 web profile,将 `web` 替换为 `headless` 可安装到 headless profile。也可以先用 `npm pack` 打包,然后通过 `dsh plugin add ./路径/包.tgz` 安装。插件会自动注册 `diff` 工具(row id: tool-diff)。

差异工具的最大输入大小是多少?

输入侧(before 或 after)不能超过 256 KiB。输出 JSON 信封上限为 64 KiB。文本行数不能超过 50K 行,JSON 嵌套深度不超过 64 层。

可以用这个插件比较两个 JSON 文件吗?

可以,使用 action `json`。它会递归比较两个 JSON 值,输出路径级变更,如 `$.user.name`,包含 add/remove/replace 操作。可以通过 `sortKeys` 参数控制键排序(默认 true)。

CSV 比较能处理重复主键吗?

可以。插件会检测 before 和 after 两侧的重复主键,如果存在重复,结果中 `equal: false`,`duplicateKeys` 会列出重复的键,且重复键的行不参与匹配。

patch action 的作用是什么?

patch action 从 before 和 after 生成 unified diff,然后在内存中验证该补丁是否能从 before 应用到 after。如果补丁有问题,会报告 hunk 级错误。`valid` 字段表示验证是否通过,补丁不会写入磁盘。