DeepSeek Harness 插件:dsh-tool-args-unwrap

前言

DeepSeek Harness (DSH) 在处理模型工具调用时,有时会遇到模型输出的畸形参数(如嵌套的 {"arguments":{…}} 包装)。如果这些参数被原样持久化,下一轮历史回放时模型会模仿错误,导致调用链路越来越畸形。dsh-tool-args-unwrap 插件在 llm/stream 水位线上拦截并修正这些参数,从源头阻断坏示范的生成与传播。

插件简介

插件名称:dsh-tool-args-unwrap
维护者:shy19805
核心价值:在 DSH 的 llm/stream 流水线上修复模型产出的畸形工具参数,防止坏示范进入历史记录。

核心功能

  1. 修复畸形参数:处理嵌套 arguments 包装、键别名(如 args、parameters)、参数键名别名(如 skill_name、name)等情况。
  2. 全链路修复:在参数持久化之前拦截,同时解决执行、持久化、历史回放三个环节中的畸形参数问题。
  3. 历史会话修正:v0.3.1 版本增加了对老会话输入侧的修正能力。在请求发往模型之前,对历史记录中的存量畸形参数进行就地修正,防止模型继续模仿错误。
  4. 宿主校验:基于宿主的 validateJsonSchemaValue 校验器进行判定,确保修复后的参数符合 schema 要求。
  5. 静默处理:对于没有必填参数的工具,插件会静默吞掉多余的包装层,避免因包装导致的报错。

安装与启用

通过在 profile 的 package.json 中配置依赖和 bundles 来安装。

// <profile>/package.json
{
  "dependencies": { "@dsh-external/dsh-tool-args-unwrap": "link:/abs/path/to/dsh-tool-args-unwrap" },
  "dsh": { "profile": { "bundles": ["@dsh-external/dsh-tool-args-unwrap"] } }
}

配置完成后重启 DSH 即可生效。

验证与调试

  1. 确认生效:检查插件目录下的 state.json 文件,确认 listenerRegistered: true。
  2. 临时停用:在配置中设置 enabled: false 即可完全停用流改写,无需卸载插件。

注意事项与限制

  • 修复范围:插件只修复参数的“形状畸形”(如多了一层包装),不修复语义缺失(例如模型真的漏写了必填字段)。
  • 跨 Provider:跨 provider 的实机复现工作尚未全部完成。
  • 根本修复:插件是一个可插拔的实现参考,根本的修复方案应在宿主侧(持久化前对 tool-call 参数做 schema 校验 + 规范化)。

参考资料

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜