返回目录
开发工具 插件

dsh-vscode

name-loading/dsh-vscode

Use DeepSeek Harness (DSH) directly inside the VS Code sidebar by embedding its web UI. Reuses an already-running `dsh web` server, or launches one for you.

Stars
2
Forks
0
Issues
0
更新
2 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:name-loading/dsh-vscode

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

dsh-vscode — 在 VS Code 侧栏使用 DeepSeek Harness (DSH)

DeepSeek Harness 的完整 Web UI 嵌入 VS Code 侧栏,像 Codex 的扩展那样在编辑器里直接使用 DSH。

侧栏 Webview 用 <iframe> 复用现有的 dsh web 页面,因此会话、流式输出、工具卡片、审批、预设、设置等全部功能都原样可用——不是重写的简化面板,而是完整的一体化体验。扩展负责「找到 / 拉起 DSH 服务 + 放进侧栏 + 恢复最近会话」,并额外提供编辑器上下文桥(把当前文件 / 选区 / git diff 一键喂给 DSH)。

功能

  • 完整 DSH Web UI:侧栏内嵌 dsh web,功能与浏览器一致。
  • 历史会话自动恢复:打开时拼 ?session=<id>,直接回到最近一次对话。
  • 自动拉起 / 复用127.0.0.1:3080 有健康 DSH 就复用,没有就按配置启动。
  • 编辑器上下文桥:文件作为路径引用发送(不内联全文),选区 / git diff 直接内联。
  • 📎 Add file 按钮:侧栏左下角,一键把文件加入会话(Codex 式)。

安装

方式 A:VS Code Marketplace(发布后)

code --install-extension name-loading.dsh-vscode

方式 B:本地打包安装

npm install -g @vscode/vsce
vsce package
code --install-extension dsh-vscode-0.2.0.vsix

方式 C:直接放入扩展目录(开发)

git clone https://github.com/name-loading/dsh-vscode ~/.vscode/extensions/dsh-vscode

然后 Ctrl+Shift+PReload Window,点左侧活动栏的 DSH(鲸鱼)图标。

建议放右侧:在 DSH 视图标题右键 → 移动到右侧(次级侧栏),这样和编辑器并排、不用左右来回切换。

编辑器上下文桥

把编辑器里的内容作为消息注入 DSH 当前会话(复用 Web UI 自己的 /api,无需改 harness):

命令 作用 内容形式
DSH: 询问选中代码 分析选中代码 内联(短)
DSH: 询问当前文件 分析当前文件 路径引用
DSH: 解释当前文件 解释文件结构/职责 路径引用
DSH: 为当前文件写测试 写单元测试 路径引用
DSH: 审查当前改动 审查 git diff HEAD 内联
  • 文件类命令只发路径\绝对路径`(相对路径)+ 一句「先用 read 工具读取」),DSH 用自己的read` 工具去读文件,对话里不再出现几百行全文——Codex / Claude Code 的「文件作为引用」模型。
  • 选区 / git diff 没有文件路径,仍内联内容(本身通常较短)。
  • 📎 Add file 按钮(侧栏左下角):点击弹出文件选择器(可多选),把选中文件作为路径引用注入当前会话,agent 先读取、再等你下一步指令。

前提:文件类命令要求 DSH 当前会话的工作区 == 你在 VS Code 打开的那个文件夹,否则 agent 的 read 工具读不到文件。

工作原理

VS Code 侧栏 Webview
   └─ <iframe src="http://127.0.0.1:3080/?session=<最近会话id>">
        └─ 现有 DSH Web UI(完整功能)
              └─ /api + WebSocket ──> dsh web 进程
  • 复用优先:若 host:port 上已有健康的 DSH,直接接入,绝不重复启动。
  • 自动拉起:没有就按配置启动 dsh web,探活成功后再把 iframe 指向真实 URL。
  • 历史会话同步:扩展读取服务端 session.list,取最近一条非空会话,拼 ?session=<id> 打开。
  • 生命周期:扩展只终止「自己启动的」进程;复用外部进程时不接管它的生死。

历史同步的前置条件

会话列表本身存在 DSH 服务端、跨端天然一致;「自动打开最近会话」依赖 Web UI 支持 ?session=<id> 深链(对 harness 的一处小改动):

  • 改动:packages/client/runtime/src/client/sessions/service.ts(新增 readDeepLinkSession(),让 ?session= 覆盖 localStorage 的当前会话)。
  • 生效:重建 client 库 pnpm run build:lib:client,重启 dsh web。详见 docs/harness-deep-link-pr.md

配置

开箱即用:默认 dsh.command = dshdsh.args = ["web"]dsh.cwd = ""——适配 npm i -g @deepseek-ai/dshdsh 在 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 设置里加:

{
  "dsh.command": "pnpm",
  "dsh.args": ["run", "dsh", "web"],
  "dsh.cwd": "/path/to/deepseek-harness"
}

命令

侧栏标题栏按钮(也注册为命令面板命令):

  • DSH: Start / Reconnect (dsh.start) — 探活/启动并重连。
  • DSH: Stop Server (dsh.stop) — 停止自己拉起的进程;复用外部实例时仅解除挂接。
  • DSH: Open in Browser (dsh.openExternal) — 用系统浏览器打开 DSH。

底部状态栏显示 DSH 状态,点击可一键启动 / 在浏览器打开。

已知限制

  • 只嵌入 loopback127.0.0.1 / localhost)上的 DSH;跨主机/远程 DSH 需走浏览器。
  • 侧栏宽度较窄时,DSH 的 Web 布局会自适应收窄(与窄窗口浏览器体验一致)。
  • 部分 Web 动作若使用 window.open,会落在 iframe 内部而非新 VS Code 标签页;建议用「Open in Browser」处理需要独立窗口的场景。
  • 「自动恢复最近会话」取的是最近一条非空会话(按 updatedAt),并非浏览器里精确的 dsh.sessions.current
  • 编辑器上下文桥的文件类命令依赖 DSH 会话工作区与 VS Code 工作区一致(见上文)。

项目结构

.
├── package.json        # 扩展清单(视图容器、命令、配置项、图标)
├── extension.js        # 宿主逻辑:Webview 视图 + 子进程生命周期 + 会话深链 + 上下文桥
├── 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 模块由扩展宿主在运行时提供)。

License

MIT

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类开发工具
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: vscode-extension。