moxingovo/dsh-web-panel0

dsh-webview

在 VS Code 内部嵌入 DeepSeek Harness 网页端界面的插件

AI 分析

核心用途是将 DSH 的完整 Web 界面(含会话、终端、审批等)无缝嵌入到 VS Code 的侧边栏或编辑器标签页中。适合习惯在 IDE 内部一站式开发和调试 Agent 的用户。

包名
dsh-webview
版本
0.2.1
许可证
MIT
最近更新
2026年8月14日

安装

此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗

DSH Web Panel

Embed the DeepSeek Harness (dsh) web GUI inside VS Code. Attaches to — or automatically starts — the local dsh web server and renders the full GUI in an iframe: sessions, terminal, plan approval, slash commands, todo, token/cache stats — everything, unchanged.

Unofficial community extension. Not affiliated with DeepSeek.

  • Sidebar view: DSH activity-bar icon → "DSH Panel".
  • Editor-tab panel (recommended, wider): Command Palette → DSH: Open Panel; opens automatically on startup by default (dshWeb.autoOpen).
  • Status bar indicator (✓ running / ⎌ attached / ⟳ starting / ⛔ error); click to open the panel.
  • Panel memory: the DSH tab is restored with your window layout across restarts.
  • Workspace follow: a self-started server restarts with the new cwd when the first workspace folder changes (dsh's workspace root = server cwd).
  • No extra windows: the extension spawns dsh hidden (windowsHide); nothing pops up.
  • Self-healing: if an attached instance dies (e.g. its desktop window was closed), it is detected within ~15s and a hidden instance takes over; a crashed self-started instance restarts automatically.

Install

From a released .vsix:

code --install-extension dsh-web-panel-0.2.1.vsix

Or build it yourself:

cd dsh-webview
npx @vscode/vsce package
code --install-extension dsh-webview-0.2.1.vsix

Zero-config launch

On startup the extension probes dshWeb.port (default 3080) and attaches if a real dsh instance responds (page carries the __DSH_BOOT__ manifest). Otherwise it starts one, trying each strategy in order (120s each):

  1. dshWeb.command (explicit override),
  2. dshWeb.checkout (a deepseek-harness checkout, if set and present),
  3. dsh on PATH (official npm install: npm i -g @deepseek-ai/dsh),
  4. npx --yes @deepseek-ai/dsh (downloads the CLI on demand — zero setup).

The server runs with cwd = the first workspace folder, so each project gets its own dsh workspace. Requirements: VS Code ≥ 1.85 and Node.js (both already required by the official dsh setup). Configure your DeepSeek API key in the GUI as usual.

Settings

SettingDefaultMeaning
dshWeb.port3080Port to attach to or start on
dshWeb.attachExistingtrueReuse a running instance instead of starting a new one
dshWeb.spawnIfMissingtrueStart a server when none is running
dshWeb.checkout"" (auto)Optional checkout path (launches apps/cli/lib/bin.js)
dshWeb.command""Full command override, e.g. pnpm dsh (runs via shell in the workspace)
dshWeb.extraArgs[]Extra arguments appended to the launch, e.g. --trusted-host
dshWeb.autoOpentrueOpen the DSH panel automatically on startup
dshWeb.followWorkspacetrueRestart self-started server when the first folder changes
dshWeb.stopOnExittrueStop a self-started server when VS Code exits (process-tree kill)

Troubleshooting: Output → DSH Server.

Known boundaries

  • The panel shows dsh's own web UI — it is not a Claude Code panel clone.
  • "DSH: Restart Server" only restarts servers started by this extension; restart an external instance yourself, then run "DSH: Reload Panel".
  • On exit, self-started servers are killed hard (taskkill /T on Windows); dsh session logs survive crashes, so this is generally harmless.

Development

# headless checks (mock the vscode API; attach + spawn + real-launch paths)
node test/mock-verify.js
node test/spawn-verify.js      # needs pipe-capable shell (no sandbox)
node test/real-launch-verify.js # spawns the real dsh from the checkout

License

MIT — see LICENSE.