[Bug]: One-click install of DeepSeek Harness (dsh) in Docker fails with npm ETARGET

未關閉 適合新手
#475 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

還沒有人認領這個 Issue。

評估

難度
2/5
預估耗時
1-3 小時
新手友好度
75/100
Issue 類型
缺陷
描述清晰度
描述清楚
活躍度
活躍
技術堆疊
docker, go, nodejs
領域
cli, devops

研究方向

從 internal/runtime/cli_ondemand.go 開始:第 43 行的 dsh 項目將 Package 設為 @deepseek-ai/dsh,第 147-153 行建立的 npm install 指令沒有 dist-tag。請決定規格是否應在此處使用 @latest,還是應像 Codex 和 CodeBuddy 那樣由 Dockerfile 預先安裝該套件。在 npm 10.9.9 的 loopforge-platform 容器內 dsh 安裝成功且沒有出現 ETARGET 錯誤,即為完成。

由索引模型根據 Issue 內容生成。

描述

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 image node:22-bookworm)
  • Container npm version: 10.9.9 (contrast with macOS host npm 11.13.0, where installing @deepseek-ai/dsh without @latest succeeds)
  • 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
  1. Start LoopForge via Docker (./start.sh dev).
  2. Open the Studio Assistant UI, select DeepSeek Harness (dsh), and trigger one-click install (POST /api/assistant/cli-install).
  3. 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
  1. Dockerfile preinstalls @openai/codex and @tencent-ai/codebuddy-code, but does not preinstall @deepseek-ai/dsh, so dsh relies on runtime on-demand installation via internal/runtime/cli_ondemand.go.
  2. 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/dsh without an explicit @latest dist-tag.
  3. Because @deepseek-ai/dsh currently only has prerelease versions (its latest tag points to 0.2.2-rc.1), npm 10.9.9 inside node:22-bookworm resolves an untagged package spec as @deepseek-ai/dsh@* and rejects prerelease versions with ETARGET.
  4. Verified inside the same loopforge-platform-1 container that appending @latest (@deepseek-ai/dsh@latest) with --dry-run resolves add @deepseek-ai/dsh 0.2.2-rc.1 (added 724 packages, exit code 0).
Possible Fix Directions
  • Append @latest to Package for "dsh" (or when no explicit version/tag is specified in installNPMCLI) in internal/runtime/cli_ondemand.go, or
  • Preinstall @deepseek-ai/dsh@latest in Dockerfile (similar to Codex / CodeBuddy) or upgrade npm in 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' }
    
复现步骤
  1. 通过 Docker 启动 LoopForge(./start.sh dev)。
  2. 打开 Studio 助手界面,选择 DeepSeek Harness (dsh) 并触发一键安装(POST /api/assistant/cli-install)。
  3. 观察界面报错并查看 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)
根因分析
  1. Dockerfile 仅预装了 @openai/codex 和 @tencent-ai/codebuddy-code,未预装 @deepseek-ai/dsh,因此 dsh 依赖 internal/runtime/cli_ondemand.go 在运行时按需安装。
  2. 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 标签。
  3. 由于 @deepseek-ai/dsh 当前只发布了预发布版本(latest 指向 0.2.2-rc.1),node:22-bookworm 自带的 npm 10.9.9 会把未指定标签的包名按 @deepseek-ai/dsh@* 解析,从而拒绝预发布版本并报 ETARGET。
  4. 已在同一个 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 版本。
主要語言
Go
星號
141
分支
28
平均合併
1 天 15 小時
30 天內合併 PR
113

環境準備

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

Tencent/LoopForge 的其他 Issue

查看 Tencent/LoopForge 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。