[Bug]: One-click install of DeepSeek Harness (dsh) in Docker fails with npm ETARGET
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 75/100
Hướng nghiên cứu
Bắt đầu từ internal/runtime/cli_ondemand.go: mục dsh ở dòng 43 đặt Package thành @deepseek-ai/dsh, còn các dòng 147-153 tạo lệnh npm install không có dist-tag. Hãy quyết định xem spec có nên thêm @latest ở đó hay Dockerfile nên cài sẵn gói này như cách đang làm với Codex và CodeBuddy. Hoàn thành khi việc cài dsh thành công bên trong container loopforge-platform với npm 10.9.9 và không xuất hiện lỗi ETARGET.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Clicking one-click install for DeepSeek Harness (dsh) in the Docker deployment (loopforge-platform:local built from Dockerfile based on node:22-bookworm) fails with HTTP 502 and npm error ETARGET: No matching version found for @deepseek-ai/dsh@*..
Note for maintainers: When evaluating whether to fix this issue, please re-test and reproduce this bug in a Docker container environment first to confirm the behavior on your side.
Environment
- Commit:
b751e09(v0.3.6-29-gb751e09) - Deployment: Docker Compose (
./start.sh dev, base imagenode:22-bookworm) - Container npm version:
10.9.9(contrast with macOS hostnpm 11.13.0, where installing@deepseek-ai/dshwithout@latestsucceeds) - Registry dist-tags for
@deepseek-ai/dsh:{ alpha: '0.2.2-alpha.3', latest: '0.2.2-rc.1', next: '0.2.2-rc.3' }
Reproduction Steps
- Start LoopForge via Docker (
./start.sh dev). - Open the Studio Assistant UI, select DeepSeek Harness (
dsh), and trigger one-click install (POST /api/assistant/cli-install). - Observe the UI error and check
docker logs loopforge-platform-1.
Actual Behavior
POST /api/assistant/cli-install returns 502:
2026/11/13 08:37:18 assistant CLI install dsh: 安装 DeepSeek Harness 失败:npm error code ETARGET npm error notarget No matching version found for @deepseek-ai/dsh@*.
2026/11/13 08:37:18 [HTTP] POST /api/assistant/cli-install -> 502 (204 bytes, 1.435s)
Root Cause Analysis
Dockerfilepreinstalls@openai/codexand@tencent-ai/codebuddy-code, but does not preinstall@deepseek-ai/dsh, sodshrelies on runtime on-demand installation viainternal/runtime/cli_ondemand.go.- In
internal/runtime/cli_ondemand.go:- Line 43 defines
"dsh": {Engine: "dsh", Binary: "dsh", Package: "@deepseek-ai/dsh", RelaxEngines: true}. - Lines 147–153 run
npm install ... @deepseek-ai/dshwithout an explicit@latestdist-tag.
- Line 43 defines
- Because
@deepseek-ai/dshcurrently only has prerelease versions (itslatesttag points to0.2.2-rc.1),npm 10.9.9insidenode:22-bookwormresolves an untagged package spec as@deepseek-ai/dsh@*and rejects prerelease versions withETARGET. - Verified inside the same
loopforge-platform-1container that appending@latest(@deepseek-ai/dsh@latest) with--dry-runresolvesadd @deepseek-ai/dsh 0.2.2-rc.1(added 724 packages, exit code0).
Possible Fix Directions
- Append
@latesttoPackagefor"dsh"(or when no explicit version/tag is specified ininstallNPMCLI) ininternal/runtime/cli_ondemand.go, or - Preinstall
@deepseek-ai/dsh@latestinDockerfile(similar to Codex / CodeBuddy) or upgradenpmin the base image.
中文说明
问题概述
在 Docker 部署环境(基于 node:22-bookworm 构建的 loopforge-platform:local)中,在界面点击一键安装 DeepSeek Harness (dsh) 会直接失败,返回 HTTP 502,底层 npm 报错 ETARGET: No matching version found for @deepseek-ai/dsh@*.。
评估说明:在评估是否需要修复该问题时,希望能够重新在 Docker 环境中复测并复现一次这个 Bug,以确认实际表现。
复现环境
- 代码版本:
b751e09(v0.3.6-29-gb751e09) - 部署方式:Docker Compose(
./start.sh dev,基础镜像node:22-bookworm) - 容器内 npm 版本:
10.9.9(对比 macOS 宿主机npm 11.13.0不带@latest可正常安装) @deepseek-ai/dsh的 dist-tags:{ alpha: '0.2.2-alpha.3', latest: '0.2.2-rc.1', next: '0.2.2-rc.3' }
复现步骤
- 通过 Docker 启动 LoopForge(
./start.sh dev)。 - 打开 Studio 助手界面,选择 DeepSeek Harness (
dsh) 并触发一键安装(POST /api/assistant/cli-install)。 - 观察界面报错并查看
docker logs loopforge-platform-1。
实际表现
POST /api/assistant/cli-install 返回 502:
2026/11/13 08:37:18 assistant CLI install dsh: 安装 DeepSeek Harness 失败:npm error code ETARGET npm error notarget No matching version found for @deepseek-ai/dsh@*.
2026/11/13 08:37:18 [HTTP] POST /api/assistant/cli-install -> 502 (204 bytes, 1.435s)
根因分析
Dockerfile仅预装了@openai/codex和@tencent-ai/codebuddy-code,未预装@deepseek-ai/dsh,因此dsh依赖internal/runtime/cli_ondemand.go在运行时按需安装。internal/runtime/cli_ondemand.go中:- 第 43 行定义
"dsh": {Engine: "dsh", Binary: "dsh", Package: "@deepseek-ai/dsh", RelaxEngines: true}。 - 第 147–153 行直接执行
npm install ... @deepseek-ai/dsh,未显式带@latest标签。
- 第 43 行定义
- 由于
@deepseek-ai/dsh当前只发布了预发布版本(latest指向0.2.2-rc.1),node:22-bookworm自带的npm 10.9.9会把未指定标签的包名按@deepseek-ai/dsh@*解析,从而拒绝预发布版本并报ETARGET。 - 已在同一个
loopforge-platform-1容器内使用--dry-run实测验证:改传@deepseek-ai/dsh@latest后可正常解析出add @deepseek-ai/dsh 0.2.2-rc.1(added 724 packages,退出码0)。
修复方向参考
- 在
internal/runtime/cli_ondemand.go中为dsh(或未显式指定版本的包)补全@latest;或者 - 在
Dockerfile中预装@deepseek-ai/dsh@latest(与 Codex / CodeBuddy 一致),或升级基础镜像中的npm版本。
- 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
-
[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
-
【架构优化】从 githubCombinedChecks 中拆出 commit status/check runs 读取与整体状态汇总 githubChecksOverallCó 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 18/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