[Bug]: DeepSeek Harness (dsh) fails with INVALID_REQUEST when "CLI default" (default) model is selected
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start with the trace the issue gives: the placeholder model in internal/httpapi/assistant_models.go, the splitting in assistantModelEngine in internal/httpapi/assistant.go, and the AgentCLIDeepSeek branch of ApplyAgentCLICredential in internal/runtime/agent_cli.go. Pull request #482 is already open against this issue, so check its diff before starting. Done means a dsh request with the CLI default selected no longer sends model "default" to the DeepSeek API.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Component / host
Platform — web / API
Edition
Platform
LoopForge version
main at b751e09 (v0.3.6-29-gb751e09)
What happened?
When using DeepSeek Harness (dsh) in AI Chat and selecting the CLI default model option (model ID "default"), every message fails with "AI 助手生成失败,请稍后重试".
Switching the model selector to an explicit model such as DeepSeek V4.1 Flash (deepseek-flash) works immediately with the exact same API key.
Root cause in code:
internal/httpapi/assistant_models.goreturns a placeholder entry{ID: "default", Name: "CLI default"}for non-CodeBuddy executors (executor=dsh, etc.).internal/httpapi/assistant_engines.go(assistantRequestModel) prefixes it to"dsh:default", andinternal/httpapi/assistant.go(assistantModelEngine) splits outengineModel = "default"without normalizing"default"to""for non-CodeBuddy CLIs.internal/runtime/agent_cli.go(ApplyAgentCLICredential,case AgentCLIDeepSeek) only checksif model != "", so it writes{"id": "agent-default-model", "config": {"provider": "deepseek-official", "model": "default"}}into.dsh/agentflow-model.jsonvia--patch, overridingdsh's own built-in default model.dshsends"model": "default"to the DeepSeek API, which rejects it with400 INVALID_REQUEST, andassistantGenerationFailuremaps it to the generic"AI 助手生成失败,请稍后重试"error.
(Note: Other non-CodeBuddy CLIs such as Codex in assistant_engine_codex.go and other AgentCLI branches in agent_cli.go also pass model = "default" through instead of omitting it.)
Reproduction
- Configure a valid DeepSeek Harness API Key in personal settings (official endpoint, empty Base URL) and ensure
dshis installed. - In AI Chat, switch the CLI selector to DeepSeek Harness and keep the model selector on
CLI default(default). - Send any message (e.g.
hello??). - Observe the failure (
AI 助手生成失败,请稍后重试), while switching toDeepSeek V4.1 Flashsucceeds.
Screenshots
| Scenario | Screenshot |
|---|---|
DeepSeek Harness + CLI default fails |
![]() |
Switching model to DeepSeek V4.1 Flash |
![]() |
DeepSeek V4.1 Flash replies normally |
![]() |
Sanitized diagnostics
assistant CLI session=<redacted>: DeepSeek Harness 运行结束:error; stderr=[llm-deepseek-api-key] model listing from https://api.deepseek.com/models loaded 2 model(s), skipped 0 row(s) | dsh: INVALID_REQUEST: The supported API model names are deepseek-flash, deepseek-v4-pro, but you passed default. (request_id: <redacted>)
Safety checks
- I removed credentials, private endpoints, internal identifiers, and personal data.
- I searched existing issues for duplicates.
中文说明
组件 / 宿主
Platform — web / API
版本形态
Platform
LoopForge 版本
main 提交 b751e09(v0.3.6-29-gb751e09)
现象描述
在 AI 对话中切换为 DeepSeek Harness(dsh) 并保持模型选择器为 CLI default(模型 ID 为 "default")时,发送任意消息都会报错 "AI 助手生成失败,请稍后重试"。
使用同一把 API Key,只要把模型手动切换为 DeepSeek V4.1 Flash(deepseek-flash),即可立即正常回复。
代码根因定位:
internal/httpapi/assistant_models.go为非 CodeBuddy 执行器(如executor=dsh)返回了占位模型{ID: "default", Name: "CLI default"}。internal/httpapi/assistant_engines.go(assistantRequestModel)将其拼成"dsh:default",随后internal/httpapi/assistant.go(assistantModelEngine)拆出engineModel = "default",但没有为非 CodeBuddy CLI 将"default"归一为空字符串""。internal/runtime/agent_cli.go(ApplyAgentCLICredential的AgentCLIDeepSeek分支)只判断了if model != "",直接把{"id": "agent-default-model", "config": {"provider": "deepseek-official", "model": "default"}}写入.dsh/agentflow-model.json并通过--patch注入,覆盖了dsh本身的内置默认模型。dsh把"model": "default"发给 DeepSeek 接口后触发400 INVALID_REQUEST,最终被assistantGenerationFailure兜底成"AI 助手生成失败,请稍后重试"。
(附注:同构的非 CodeBuddy CLI 链路,如 assistant_engine_codex.go 与 agent_cli.go 其他分支,同样存在未将 "default" 归一为空字符串的问题。)
复现步骤
- 在个人配置中填写有效的 DeepSeek Harness API Key(默认官方端点,Base URL 留空)并确保
dsh已安装。 - 在 AI 对话底部将 CLI 切换为 DeepSeek Harness,模型保持
CLI default(default)。 - 发送任意消息(例如
hello??)。 - 观察到报错
AI 助手生成失败,请稍后重试;将模型切换为DeepSeek V4.1 Flash后同一会话即可正常回复。
复现截图
| 场景 | 截图 |
|---|---|
DeepSeek Harness + CLI default 失败 |
![]() |
切换为 DeepSeek V4.1 Flash |
![]() |
DeepSeek V4.1 Flash 正常回复 |
![]() |
脱敏诊断日志
assistant CLI session=<redacted>: DeepSeek Harness 运行结束:error; stderr=[llm-deepseek-api-key] model listing from https://api.deepseek.com/models loaded 2 model(s), skipped 0 row(s) | dsh: INVALID_REQUEST: The supported API model names are deepseek-flash, deepseek-v4-pro, but you passed default. (request_id: <redacted>)
安全检查
- 已移除所有凭据、私有端点、内部标识符与个人数据。
- 已检索现有 Issue 确认无重复提交。
- Ngôn ngữ chính
- Go
- Star
- 141
- Fork
- 28
- Merge trung bình
- 1 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 113
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Tencent/LoopForge
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: 官方镜像未安装 wecom-cli,企业微信通知报「通知服务未安装 wecom-cli」Có thể đã có người làm @newexploreor đã nhận 1 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Tencent/LoopForge#156 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentityCó thể đã có người làm @fx-kurumi đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 40/100
Maintainer thường phản hồi trong vòng 1 ngày
-
【架构优化】从 runtime.installNPMCLI 中拆出 npm 参数拼装 npmCLIInstallArgs 与安装结果启用 activateNPMStageCó thể đã có người làm @fx-kurumi đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 30/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Tencent/LoopForge
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
bazel-contrib/rules_go#4784 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Уязвимые компоненты в GoĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
POSIdev-community/aictl#40 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
nebari-dev/nebari-infrastructure-core#774 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
oracle/terraform-provider-oci#2662 ·
-
[BUG]: A pre-hashed ACL password in uppercase hex fails ACL LOAD and crash-loops restarted podsĐang mởbug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
valkey-io/valkey-operator#644 ·
Maintainer thường phản hồi trong vòng 3 ngày


