前言¶
DeepSeek Harness(DSH)在处理模型调用时,偶尔会遇到模型输出畸形 tool call 的情况,例如 id 为空、name 为空或 arguments 不是字符串。DSH 在运行期校验较宽松,但解码期要求严格,一旦坏事件落盘,会话日志便无法加载,侧边栏显示 stored session ... is corrupt。
下面介绍一个插件,它在日志落盘之前拦截并修复这些问题。
插件定位¶
这是一个 DeepSeek Harness 插件,由 hbgdjb 维护,许可证为 MIT。它挂在 DSH 官方的 llm/stream waterfall 上,通过一个钩子覆盖全部模型调用。
核心功能¶
- 坏调用自动修复:拦截并替换畸形 tool call。空
id会生成call-guard-<token>-<index>,空name会替换为guard_malformed_tool_call,非法arguments会转成 JSON 字符串。 - 正常调用原样通过:对于有效的 tool call,不做任何修改。
- 无额外依赖与零配置:无额外依赖,无客户端代码,不写任何文件,安装后即生效。
安装¶
通过插件管理器 install_bundle,或 设置 → 插件的安装入口安装。
- 安装包(推荐分发):直接给出本
.tgz的绝对路径。 - 源码目录:解压源码 zip 后给出目录绝对路径。
- Registry/Git:发布后用包名或仓库地址安装。
配置与生效¶
安装成功后,在 profile 的 cordis.patch.yml 中配置:
- id: session-shield
enabled: true
验证配置是否生效:
dsh --profile <profile> --dump-config
输出中应包含 # == dsh-session-shield 层与 - id: session-shield 行。最后重启 DSH 生效。
验证与注意¶
- 环境要求:需要 DeepSeek Harness 0.1.x(Web 端)。
- 日志行为:插件日志输出到内存 buffer,不打印到
manager.log。因此启动时看不到 “armed” 日志是正常现象。 - 安全性:插件以当前 DSH 进程权限运行,安装前请检查源码与许可证(MIT)。
结尾¶
dsh-session-shield 通过在流处理阶段拦截并修复畸形 tool call,解决了会话日志损坏的问题。这是一个轻量级、零配置的插件,适合所有使用 DSH 0.1.x 的开发者。