[Bug] DeepSeek Harness (deepseek-harness): model list is empty and no model picker

这个报错通常发生在 LobeHub 把设备接入为 DeepSeek Harness(agent type deepseek-harness )之后:模型发现逻辑没有为该 agent 走 ACP,反而回退到 --list-models 探测,而 dsh 不支持该 flag;同时前端缺少该 agent

快速结论:这个报错通常发生在 LobeHub 把设备接入为 DeepSeek Harness(agent type deepseek-harness)之后:模型发现逻辑没有为该 agent 走 ACP,反而回退到 --list-models 探测,而 dsh 不支持该 flag;同时前端缺少该 agent 的模型选择能力声明,所以既报错也不显示模型下拉。优先排查模型发现是否走 ACP、以及选择器能力表是否包含该 agent。

适用环境:@lobehub/cli 0.0.66;@deepseek-ai/dsh 0.2.1-rc.2(验证时也用到 0.2.2-rc.1);Ubuntu 26.04 x64、macOS arm64、WSL2;通过 lh connect --daemon(standalone daemon)连接,验证阶段使用 lh connect --gateway。

最快修复方案:升级到包含 #22542 修复的版本。该修复改为通过 ACP 向运行时请求模型目录,而不是调用 --list-models,并把选中的模型传递到设备执行阶段。

注意事项:修复后的模型选择器可能列出某个模型,但发送时仍返回 MISSING_CREDENTIAL。这是 dsh 自身的路由凭据状态:deepseek-official 走 API key 路由(解析 DEEPSEEK_API_KEY),登录态不会填充它;deepseek-account 才是账号 token 路由。需要在 Settings → Models 保存 key 或导出对应环境变量后,官方路由才可用。

问题场景

在 LobeHub 中把执行设备接为 DeepSeek Harness(agent type 为 deepseek-harness)后,打开模型选择器时列表为空,前端只显示 DeepSeek Harness model discovery failed,选择器里也不会出现模型这一维度。虽然 dsh 的 ACP profile 本身支持模型枚举与切换,但 LobeHub 这一侧的模型发现没有走 ACP。

报错原文

[Bug] DeepSeek Harness (deepseek-harness): model list is empty and no model picker

DeepSeek Harness model discovery failed

$ dsh --list-models
error: --profile <name> is required          # exit 1

$ dsh --profile acp --list-models
error: unknown option '--list-models'        # exit 1

原因分析

问题出在 CLI/前端侧的两处缺口:

  • listHeterogeneousAgentModels() 没有 deepseek-harness 分支,落进默认的 --list-models 探测;而 dsh 不支持该 flag,命令以 exit 1 结束。
  • 失败被 classifyCatalogError() 归为 command_failed,前端据此显示 DeepSeek Harness model discovery failed。
  • HETERO_SELECTOR_CAPABILITIES 中没有 deepseek-harness 条目,前端因此认为该 agent 不具备模型选择能力,选择器里不会出现模型维度。

后续排查还补充到:当前 DshAcpSession 继承的是共享 ACP session 基类,并不继承 TRAE 的模型发现实现;其模型选择器按模型名匹配,而不是按持久化的完整 JSON 二元组匹配。这也是修复中需要一并调整的地方。

环境排查

  • 确认 @lobehub/cli 版本,Issue 复现环境为 0.0.66。
  • 确认 @deepseek-ai/dsh 版本,复现与验证使用 0.2.1-rc.2,验证也覆盖 0.2.2-rc.1。
  • 确认连接方式:lh connect --daemon(standalone daemon)或 lh connect --gateway,Issue 中两种都出现过。
  • 确认设备接入的 agent type 为 deepseek-harness。
  • 手动执行 dsh --profile acp,确认 ACP 握手(initialize → session/new)能完成。
  • 检查设备侧 dsh home 是否配置了 DEEPSEEK_API_KEY 或已登录账号 token。

解决步骤

  1. 先确认基线问题:执行 dsh --profile acp --list-models,若返回 unknown option '--list-models',说明模型发现确实不应依赖 CLI flag。
  2. 升级到包含 #22542 修复的版本。该实现为 deepseek-harness 增加 DSH 原生 ACP 目录发现:复用分组 config-option 遍历,暴露 provider/model 元数据,同时保留原始 value 作为选择 ID,并让精确二元组匹配优先于原有的模型名回退。
  3. 修复同时处理了两处细节(按 PR 说明):默认 dsh 可执行文件通过运行时自带的探测器解析,因为通用解析器不覆盖 runtime provider 类型,否则会解析为空字符串;以及在 resolveHeteroSpawnCommand 之前收窄 catalog 类型,避免能力表扩展后出现类型错误。
  4. 升级后重启 LobeHub 与设备连接,重新进入该设备的模型选择器。
  5. 如果选择器已列出模型但发送时报 MISSING_CREDENTIAL:在 Settings → Models 保存 DeepSeek API key(或导出 DEEPSEEK_API_KEY 环境变量),使 deepseek-official 路由可用;仅登录账号只会创建 deepseek-account 路由。

验证方法

在绑定设备的 composer 中应能看到 DeepSeek Harness 的模型触发入口;展开后菜单列出设备运行时返回的模型(例如 deepseek-official 分组下的 deepseek-v4-flash),而不仅是 Default;选中后 composer 更新,并且刷新页面后仍然保持该选择。另需注意:未配置 key 时 ACP 模型目录仍会列出内置官方模型,选择器显示该条目属正常现象,真正发送时才会因凭据缺失失败。

参考来源

lobehub/lobe-chat #21173

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 34867

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注