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
使用说明¶
- 生效范围:仅对命中规则的 provider 和模型生效。未被规则命中的请求(如官方 API)完全不受影响。
- 修复逻辑:当检测到
STREAM_CLOSED错误且满足“内容已到、tool-call 参数合法 JSON”的条件时,插件会吞掉该错误,让流正常结束。 - 不掩盖错误:对于参数残缺、空响应、真断网、鉴权失败等错误,插件会原样放行或照常抛错,不会掩盖真正的错误。
注意事项¶
- 版本要求:需要 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 官方无从属关系,仅供开发者根据自身需求集成使用。