DeepSeek Harness 插件:修复第三方 API 缺失 message_stop 的重复重试

DeepSeek Harness (DSH) 是一个插件化的智能体运行时。当对接的第三方网关(如 pi-ai)在流式传输内容结束后未发送终止事件 message_stop 或 done 时,DSH 会误判为 TRANSPORT 错误,并在同一步骤内触发最多 5 次指数退避重试。本插件通过监听 llm/stream 水平瀑布,对“内容已到但缺终止信号”的情况进行修复,使回复正常提交,避免无效重试。

核心功能

  • 监听并修复流事件:监听 dsh host 端的 llm/stream 水平瀑布,对特定错误进行拦截。
  • 条件性丢弃错误:仅在内容已完整到达、且未闭合的 tool-call 参数为合法 JSON 时,才丢弃错误并干净结束流。
  • 精准生效范围:支持通过配置指定 provider 和 models,不影响其他接口。
  • 不接触凭据:仅作为流包装层,不发起额外网络请求,不涉及敏感信息。

安装

安装前请确保 dsh web 版本满足要求(>= 0.1.0-rc.6)。

dsh plugin --profile web add dsh-missing-stop-heal

安装完成后需要重启 dsh 进程(profile bundle 在启动时读取)。

配置

配置分为行内配置(agent.cordis.yml)和设置页(GUI)两种方式。核心配置项为 rules 数组,每条规则包含 provider 和 models。

方式 A:GUI 设置页(推荐)

安装为 web profile bundle 后,dsh web 的设置侧栏会出现「流重试修复」入口。在设置页中:
- Provider:下拉选择或手动填写 provider 标识(如 xjhc)。
- Models:支持 * 通配符,填写具体模型或留空表示全部模型。
- 启用:勾选启用该规则,点击保存后立即生效。

方式 B:YAML 行内配置

在 agent preset 的 agent.cordis.yml 末尾添加:

- id: missing-stop-heal
  name: './heal.mjs'
  config:
    rules:
      - provider: xjhc
        models: ['*']
        enabled: true

使用说明

  1. 生效范围:仅对命中规则的 provider 和模型生效。未被规则命中的请求(如官方 API)完全不受影响。
  2. 修复逻辑:当检测到 STREAM_CLOSED 错误且满足“内容已到、tool-call 参数合法 JSON”的条件时,插件会吞掉该错误,让流正常结束。
  3. 不掩盖错误:对于参数残缺、空响应、真断网、鉴权失败等错误,插件会原样放行或照常抛错,不会掩盖真正的错误。

注意事项

  • 版本要求:需要 dsh web >= 0.1.0-rc.6。
  • 规则生效:配置修改对当前正在进行的请求不追溯,仅对下一条请求生效。
  • 许可协议:MIT 许可证。

验证方式

通过查看 $DSH_HOME/sessions/.../session.jsonl 日志判断修复效果:
- 修复前:可见 llm/retry、TRANSPORT、Anthropic stream ended before message_stop。
- 修复后:assistant/message 的 sourceEventSeqs 为单次连续区间,不再出现 llm/retry 事件。

生态背景

DeepSeek Harness 的理念是“一切皆插件”。本插件由社区维护,与 DeepSeek 官方无从属关系,仅供开发者根据自身需求集成使用。

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

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

小夜