dsh-tool-call-guard: 中和无效 JSON 参数的工具调用

前言

在 DeepSeek Harness (DSH) 的调试与测试流程中,模型生成的工具调用参数有时会包含无效的 JSON(例如未转义的内部引号)。这类问题在流式传输路径下可能被宽容处理,但在使用 vLLM 等严格服务器进行历史记录回放时,会触发 400 错误,导致整个会话被“破坏”。本文介绍 dsh-tool-call-guard 插件,用于在传输前中和这些无效的工具调用,防止会话损坏。

插件简介

dsh-tool-call-guard 是 DSH 的一个管理安全类插件,由 alchemistwu 维护。它拦截 DSH 的 llm/stream 水瀑布,对参数无法通过 JSON.parse 验证的工具调用进行中和处理,确保会话的连续性。

  • 插件名: dsh-tool-call-guard
  • 维护者: alchemistwu
  • 分类: admin-security
  • 许可证: MIT

核心功能

  1. 拦截与中和: 拦截 DSH 的 llm/stream 水瀑布,对无效 JSON 参数的工具调用进行中和。
  2. 纯文本记录: 将被中和的工具调用记录为纯文本,保留原始内容,以便模型在上下文中重新发出修正后的调用。
  3. 协议平衡: 将匹配的工具结果重写为纯用户消息,避免出现孤立的 tool_calls 或 role:"tool" 条目,防止因协议不平衡导致的后续请求失败。
  4. 零开销: 对于干净的历史记录,仅增加一次 JSON.parse 操作,消息数组对象保持不变。
  5. 追加-仅日志: 尊重 DSH 的追加-仅日志机制,不重写持久化的会话日志,仅在传输层进行中和。
  6. 提供商无关: 基于 llm/stream 接口,覆盖所有适配器(DeepSeek、社区适配器等)。
  7. Fail-open: 如果 Guard 本身出错,原始请求会通过,不影响正常流程。
  8. 零配置: 安装即用。

安装与启用

使用官方安装命令添加插件:

dsh plugin add dsh-tool-call-guard

安装完成后,必须重启 DSH 主机(dsh web 或 DSH Desktop)才能使插件生效。

典型场景

当模型发出类似以下格式的无效 JSON 参数时:

{"queries": [""The Idiots" trailer youtube official"]}

插件会执行以下操作:
1. 拦截该工具调用块。
2. 将其转换为文本记录,提示模型其参数无效。
3. 将对应的工具结果转换为用户消息,保持对话协议平衡。

这使得会话能够继续运行,避免了因参数无效导致的 400 错误阻断后续请求。

注意事项

  • 重启依赖: 插件安装后必须重启 DSH 主机才能生效。
  • Fail-open 行为: 插件设计为 Fail-open,如果 Guard 内部逻辑出错,原始请求会原样通过,不会阻断请求。
  • 许可证: 代码遵循 MIT 许可证。

总结

dsh-tool-call-guard 为 DSH 提供了在传输层修复无效工具调用参数的能力,特别适用于需要与严格 OpenAI 兼容服务器(如 vLLM)交互的场景。它以零配置和 Fail-open 的特性,在不改变现有日志结构的前提下,增加了会话的鲁棒性。

查看插件目录
查看源码

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

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

小夜