dsh-session-shield:防止畸形 tool call 导致会话日志无法加载

前言

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,或 设置 → 插件的安装入口安装。

  1. 安装包(推荐分发):直接给出本 .tgz 的绝对路径。
  2. 源码目录:解压源码 zip 后给出目录绝对路径。
  3. 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 的开发者。

目录页 | GitHub 仓库

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

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

Xiaoye