把 DeepSeek Harness (DSH) 的完整 Web UI 嵌入到 VS Code 侧栏,像 Codex 的扩展那样在编辑器里直接使用 DSH。
侧栏 Webview 用 <iframe> 复用现有的 dsh web 页面,因此会话、流式输出、工具卡片、审批、预设、设置等全部功能都原样可用;扩展只负责「找到 / 拉起 DSH 服务 + 放进侧栏 + 恢复最近会话」。
- 嵌入完整 DSH:侧栏 iframe 直连 loopback 上的
dsh web,功能与浏览器一致。 - 复用优先:
127.0.0.1:3080上已有健康 DSH 就直接接入,绝不重复启动。 - 自动拉起:没在跑就按配置自动启动
dsh web,探活成功后再挂载 iframe。 - 恢复最近会话:读取服务端
session.list,取最近一条非空会话,拼?session=<id>打开,不再每次都落进新空会话。 - 进程归属:只终止「自己拉起的」进程;复用外部进程时不接管它的生死。
- 状态栏指示 + Start / Stop / Open in Browser 三个命令。
- DeepSeek Harness(
dsh web服务)。 - 「恢复最近会话」依赖 DSH Web 客户端支持
?session=<id>深链——见 docs/harness-deep-link-pr.md(含给官方 harness 的 PR 文本与补丁)。未合入前,扩展仍可用,只是dsh.resumeRecent静默失效(落到默认会话)。
方式 A:VS Code Marketplace(发布后)
code --install-extension dsh-community.dsh-vscode或在扩展面板搜索 "DSH"。
方式 B:本地安装
# 打包
npm install -g @vscode/vsce
vsce package
# 安装生成的 .vsix
code --install-extension dsh-vscode-0.1.0.vsix方式 C:开发 / 直接放入扩展目录
git clone <repo-url> ~/.vscode/extensions/dsh-vscode然后 Ctrl+Shift+P → Reload Window,点左侧活动栏的 DSH(鲸鱼)图标。
开箱即用:默认 dsh.command = dsh、dsh.args = ["web"]、dsh.cwd = ""——适配 npm i -g @deepseek-ai/dsh 后 dsh 在 PATH 上的用户,且默认复用已运行的 DSH。
| 设置 | 默认 | 说明 |
|---|---|---|
dsh.command |
dsh |
启动 DSH 的可执行文件 |
dsh.args |
["web"] |
传给 command 的参数 |
dsh.cwd |
"" |
进程工作目录(空 = 继承 VS Code) |
dsh.host |
127.0.0.1 |
绑定主机(侧栏只能嵌入 loopback) |
dsh.port |
3080 |
监听端口 |
dsh.autoStart |
true |
视图可见且无服务时自动启动 |
dsh.reuseExisting |
true |
优先复用已运行的 DSH |
dsh.resumeRecent |
true |
打开时恢复最近一条非空会话 |
dsh.startupTimeoutMs |
30000 |
启动后等待可达的时长 |
源码 checkout(dsh 不在 PATH 上),在 VS Code 设置里加:
VS Code 侧栏 Webview
└─ <iframe src="http://127.0.0.1:3080/?session=<最近会话id>">
└─ 现有 DSH Web UI(完整功能)
└─ /api + WebSocket ──> dsh web 进程
- 只嵌入 loopback(
127.0.0.1/localhost)上的 DSH;远程 DSH 请用浏览器。 - 「恢复最近会话」取的是最近一条非空会话(按
updatedAt),并非跨端精确的dsh.sessions.current。 - 尚未做「VS Code ↔ DSH」编辑器上下文桥(文件/选区注入、diff 预览、在 VS Code 打开)——可作后续路线图。
.
├── package.json # 扩展清单(视图容器、命令、配置项、图标)
├── extension.js # 宿主逻辑:Webview 视图 + DSH 子进程生命周期 + 会话深链
├── media/
│ ├── dsh-icon.png # 扩展商店图标(128×128,DSH 鲸鱼 logo,黑白)
│ ├── dsh.svg # 活动栏图标(鲸鱼,currentColor 自适应主题)
│ ├── main.js # 侧栏 Webview 脚本(iframe + 状态 overlay)
│ └── style.css # 侧栏 Webview 样式
└── docs/
└── harness-deep-link-pr.md # 官方 harness 深链 PR 文本与补丁
纯 JavaScript、零构建步骤、无 npm 依赖(vscode 模块由扩展宿主在运行时提供)。
{ "dsh.command": "pnpm", "dsh.args": ["run", "dsh", "web"], "dsh.cwd": "/path/to/deepseek-harness" }