dsh-model-fix:修复 opencode 端点 muse-spark 与 gpt-5.6-luna 的流式收尾缺陷

在 DeepSeek Harness (DSH) 开发智能体时,可能会遇到一种情况:流式内容正常输出,但对话回合结尾必定报错。这通常是因为 DSH 使用的 pi-ai SDK 强制要求流式响应以 finish_reason 收尾,而部分聚合端点未发送该信号。

dsh-model-fix 是一个 DSH 插件,由 Retr67 维护。它专门修复 opencode 聚合端点上 muse-spark-1.2 和 gpt-5.6-luna 的流式收尾缺陷。

核心功能

该插件作用于 DSH 的 llm/stream waterfall 阶段。当流式响应中已输出内容,但结尾因端点缺陷(未发送 finish_reason 或 [DONE])导致错误代码为 TRANSPORT / STREAM_CLOSED 时,它会将结束状态改写为正常的 stop。

它仅修复这一特定场景:
1. 内容已输出(存在 text-delta / reasoning-delta 等)。
2. 错误信息明确为“缺少终止事件”(如 Stream ended without finish_reason)。

对于真实的传输故障(如 Socket 关闭)或空响应,插件不会介入,保持原有逻辑。

安装与启用

使用 DSH 官方命令行工具安装插件。安装后必须重启目标 profile 才能生效。

npx -y @deepseek-ai/dsh plugin --profile web add github:Retr67/dsh-model-fix

安装完成后,重启运行该 profile 的服务(例如 dsh web)。

配置

插件通过 cordis.patch.yml 文件进行配置。主要涉及两个配置项:modelPattern 和 providers。

字段 默认值 说明
modelPattern ^(muse-spark\|gpt-5\.6-luna) 对模型 ID 进行匹配的正则表达式,仅修复匹配到的模型。
providers [] Provider 路由键的白名单。留空则匹配所有 provider 中符合条件的模型。

配置示例

在 cordis.patch.yml 中添加以下配置:

- id: model-fix
  name: dsh-model-fix
  config:
    modelPattern: '^(muse-spark|gpt-5\.6-luna)'
    providers: []

自定义范围:
- 若只想修复 gpt-5.6-luna,可将 modelPattern 改为 '^gpt-5\.6-luna'。
- 若只想限定特定路由,可添加 providers: ['opencode-go']。

适用场景与注意

技术要求

  • Node.js 版本:插件依赖 Node.js,要求版本为 ^22.19.0 或 >=24。

隐私与设置说明

使用该插件修复流式收尾缺陷,无需在 opencode 平台开启“Allow models that train on request data”开关。
- 该开关涉及数据训练授权,属于隐私敏感项,不应为了使用模型而开启。
- 本插件修复的是流式传输协议的缺失,与该隐私开关无关。

总结

dsh-model-fix 解决了因 opencode 聚合端点未发送标准 finish_reason 导致 DSH 智能体对话失败并触发重试的问题。修复后,模型直连即可正常使用,避免了不必要的 token 消耗。

项目地址:https://github.com/Retr67/dsh-model-fix

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

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

小夜