dsh-tool-call-guard
在终端中运行以下命令:
dsh plugin install alchemistwu/dsh-tool-call-guard
将以下提示词粘贴到 DeepSeek Harness 对话框中:
在终端执行 dsh plugin install alchemistwu/dsh-tool-call-guard 完成安装,插件源码见 https://github.com/alchemistwu/dsh-tool-call-guard
插件介绍
有些模型偶尔会输出一段 arguments 不是合法 JSON 的工具调用,最常见的情况是内部引号未转义。流式生成阶段,宽松的服务器会让这条畸形调用通过并写入会话日志,该轮看起来完全成功;但下一次请求回放历史时,严格的服务器(如 vLLM)会校验 arguments 并拒绝整个请求,此后该会话中所有后续轮次都会返回 400,直到人工逐条修复日志才能恢复。
dsh-tool-call-guard 挂在 harness 的 llm/stream 瀑布流上。对每一条 arguments 未能通过 JSON.parse 的 assistant 工具调用,它会做两件事:先把该调用改写为一段纯文本记录(仅作用于 wire,不改写持久化日志),让模型在上下文中看到自己原始输出并重发修正后的调用;再把对应的 tool result 转为一条普通 user 消息,保持会话协议平衡,不留下悬空的 tool_calls 或孤儿 role:tool 回复——这两种情况在严格服务器上同样会触发 400。干净的历史会话零额外开销:每条工具调用一次 JSON.parse,消息数组以对象引用原样透传。
它面向所有使用 dsh 搭配 OpenAI 兼容后端(vLLM 等)运行多轮 agent 会话的用户。一次安装、一次重启即生效,无需任何配置。guard 自身若发生异常会 fail-open,原请求原样放行,不会引入新的故障面。
使用场景
- 多轮 agent 会话中某次工具调用 arguments 含未转义引号,导致后续所有请求 400
- vLLM --enable-auto-tool-choice 下模型偶发输出非法 JSON,会话被永久污染
- 长对话回放历史时严格服务器拒绝请求,需要无需手动修日志即自动恢复
适合人员
- 使用 dsh 搭配 vLLM 等严格后端运行 agent 循环的开发者
- 构建多轮工具调用应用、担心单次畸形输出击穿会话的团队
- 管理共享推理会话、追求零配置稳定性的平台管理员