DeepSeek Harness by MoMoya
在 VS Code 侧边栏中直接运行 DeepSeek Harness,把当前工作区交给编码代理:对话、读写文件、运行命令、查看改动,都可以在编辑器里完成。
功能
- 侧边栏常驻:Activity Bar 中新增 DeepSeek Harness 图标,点击即可打开完整 Harness Web UI。
- 编辑器大视图:需要更宽的工作区时,可一键在编辑器标签页中打开同一会话界面。
- 跟随工作区:默认自动跟随 VS Code 当前工作区。打开/切换文件夹,或在多根工作区切换活动编辑器,Harness 会自动切换到对应目录并重启,代理的读文件、改代码、执行命令都发生在该目录。
- 自动选中 Harness 工作区:通过轻量 DSH
--patch 插件把当前 VS Code 文件夹注册为 Harness Workspace,并在 Web UI 中自动选中,不需要再手动选择一次目录。
- 主题跟随:Harness 的明暗主题与当前 VS Code 主题同步(深色 / 浅色 / 高对比度)。
- 自动发现安装:支持 PATH 中的
dsh、Windows 注册表登记的桌面版安装目录,以及自定义 dsh.cmd 路径。
- 安全的本机嵌入:扩展启动
dsh web 后,在本机回环地址上建立一个带会话 Cookie 的反向代理,让 Webview iframe 在 VS Code 的跨站上下文中也能正常登录 Harness。
- 生命周期管理:侧边栏关闭或 VS Code 退出时停止子进程;提供重启、查看日志、选择工作区等命令。
- 只监听 127.0.0.1:Harness 和代理都不会暴露到局域网。
环境要求
- VS Code 1.90 或更高版本。
- 已安装 DeepSeek Harness 桌面版(推荐),或可执行的
dsh CLI。
- 首次使用需要能在 Harness 中访问模型;与桌面版共用
$DSH_HOME 下的账号凭据。
安装
从 VSIX 安装
code --install-extension deepseek-harness-ide-0.2.3.vsix
开发模式
code --extensionDevelopmentPath="F:\DSH_Work\DSH_VSC" "F:\DSH_Work\DSH_VSC"
然后在 Activity Bar 点击 DeepSeek Harness 图标。
使用
- 打开一个代码文件夹。
- 点击左侧 Activity Bar 的 DeepSeek Harness 图标,或按
Ctrl+Alt+D(macOS 为 Cmd+Alt+D)。
- 首次启动会拉取 Harness Web UI,通常需要几秒;状态栏会显示启动进度。
- Harness 会自动打开当前 VS Code 文件夹,无需再次选择工作区。选择模型后即可像桌面版一样对话、让代理修改代码。
- 需要更大空间时,点击侧边栏标题栏的“在编辑器标签页中打开”。
常用命令(命令面板输入 DeepSeek Harness):
| 命令 |
说明 |
| 打开侧边栏 |
打开并聚焦 Harness 视图 |
| 重启会话服务 |
停止当前 dsh web 进程并重新启动 |
| 在编辑器标签页中打开 |
用更宽的 Webview 面板打开同一界面 |
| 在浏览器中打开 |
用系统浏览器打开 Harness(便于使用浏览器扩展或调试) |
| 选择工作区目录 |
固定 Harness 的工作目录(会自动关闭自动跟随) |
| 恢复自动跟随 VS Code 工作区 |
清除固定目录,重新跟随当前 VS Code 工作区 |
| 显示日志 |
查看 dsh web 与代理日志(令牌已脱敏) |
配置
| 配置项 |
默认值 |
说明 |
deepseekHarness.cliPath |
空 |
dsh 启动器或 DeepSeek Harness 安装目录。留空自动查找。 |
deepseekHarness.followWorkspace |
true |
自动跟随 VS Code 当前工作区(单根窗口跟随文件夹;多根窗口跟随活动编辑器所属根)。 |
deepseekHarness.workspaceFolder |
空 |
固定工作目录,仅在 followWorkspace=false 时使用。 |
deepseekHarness.extraArgs |
[] |
追加给 dsh web 的参数。 |
deepseekHarness.autoStart |
true |
打开侧边栏时自动启动服务。 |
deepseekHarness.startupTimeoutSeconds |
90 |
启动超时时间。 |
自动发现顺序:
deepseekHarness.cliPath
- 环境变量
DSH_CLI_PATH / DSH_CLI / DSH_DESKTOP_CLI
PATH 中的 dsh
- Windows 卸载注册表中的 DeepSeek Harness 安装目录
- 常见安装目录(
%LOCALAPPDATA%\Programs\DeepSeek Harness、%ProgramFiles%\DeepSeek Harness 等)
实现说明
VS Code Webview
│ iframe http://127.0.0.1:<proxy>/
▼
HarnessProxy(扩展进程内)
│ 持有 dsh web 的签名 Cookie,重写 Host,剥离 sec-fetch-site
▼
dsh web(子进程,127.0.0.1:<随机端口>,启动令牌鉴权)
│
▼
当前 VS Code 工作区
dsh web 每次启动都会打印一个带一次性令牌的 URL。扩展解析该 URL,向 Harness 换取 SameSite=Strict 会话 Cookie,再由本地代理附加到每个 HTTP/WebSocket 请求上。
- 扩展生成一个
--patch 覆盖层,加载 src/dsh/plugin/ensure-workspace.mjs。该宿主插件在 Harness 启动时调用 workspaceRegistry.create(process.cwd()),把当前 VS Code 文件夹注册为 Workspace;因此 Harness 首次打开时就能选中它。
- iframe 还会带上
dsh-vscode-workspace / dsh-vscode-workspace-title;如果 Harness 的“最近工作区”逻辑仍选中了别的目录,注入脚本会通过界面上的工作区菜单切回当前 VS Code 文件夹。
- 代理只监听
127.0.0.1,随机端口,不把令牌写入 Webview DOM。
- 日志中的
token= 会被替换为 ***。
- iframe 会带上
dsh-vscode-theme 参数,代理注入的启动脚本据此覆盖 prefers-color-scheme,让 Harness 的首屏和后续主题切换都跟随 VS Code。
开发与测试
# 端到端核心测试:真实启动 dsh web,验证页面、静态资源、/api 鉴权和 WebSocket
node scripts/test-core.js
# 启动一个供浏览器检查的 Harness 代理
node scripts/serve-test.js
项目没有运行时 npm 依赖,直接使用 VS Code 内置 Node API。
已知限制
- 本扩展嵌入的是 DeepSeek Harness 官方 Web UI,Harness 版本升级可能改变 UI 结构;建议使用 0.2.x。
- 第三方 OAuth / 账号登录通常会在 iframe 中打开新窗口;扩展会尝试用系统浏览器打开,但登录回调无法自动回到 iframe。桌面版已登录的账号不受影响。
- 多根工作区会跟随“当前活动编辑器所属的根目录”;切换根目录会重启 Harness 并开启该目录的新会话,历史会话仍保留在 Harness 会话列表中。可在设置中关闭
deepseekHarness.followWorkspace 使用固定目录。
- 工作区与桌面版共享
$DSH_HOME,同时运行两个 Host 时请避免对同一会话进行冲突性操作。
License
MIT
| |