Deepseek-Harness-for-VS-Code
其他 活跃维护

Deepseek-Harness-for-VS-Code

Vithrive/Deepseek-Harness-for-VS-Code

作为VS Code扩展插件,接入大语言模型能力,支持代码智能补全、注释自动生成、bug快速排查、代码重构等功能,适配多编程语言,安装后可直接在编辑器内调用,无需切换工具。

6
Stars 标星
0
Forks 分支
6
Watchers 关注
4
Open Issues
JavaScript
主要语言
MIT
开源协议
317 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Vithrive/Deepseek-Harness-for-VS-Code
git clone https://github.com/Vithrive/Deepseek-Harness-for-VS-Code.git
git clone git@github.com:Vithrive/Deepseek-Harness-for-VS-Code.git
README.md main

DeepSeek Harness for VS Code

一个零依赖的 VS Code 扩展,把 DeepSeek Harness (DSH) 的 Web GUI 内嵌到 VS Code 侧边栏 / 辅助侧边栏中,并自动检测、启动 DSH 服务。

本扩展的设计哲学是「只做一个忠实的窗口」:最大程度上客观、原样地呈现 DSH Web GUI,不注入脚本、不改写界面、不拦截交互,也完全不干涉你对 DSH 的插件开发、界面魔改等任何二次定制——DSH 的功能表达始终由你完全掌控。

如果喜欢本扩展请转至 Deepseek-Harness-for-VS-Code 星标助力;对 Chrome Extension 有需求也请关注 Deepseek-Harness-for-Chrome

快速安装(下载 .vsix)

最简单的方式:在 VS Code 扩展市场搜索 DeepSeek Harness for VSCode 一键安装(Marketplace 页面)。

也可以从 GitHub 手动下载安装:

  1. GitHub Releases 下载最新的 .vsix 安装包:

    https://github.com/Vithrive/Deepseek-Harness-for-VS-Code/releases/latest/download/deepseek-harness-vscode-0.3.6.vsix
  2. 在 VS Code 中安装:

    code --install-extension deepseek-harness-vscode-0.3.6.vsix

    或在 VS Code 中:Ctrl+Shift+PExtensions: Install from VSIX... → 选择下载的 .vsix 文件。

  3. 重载窗口:Ctrl+Shift+PReload Window

  4. 打开项目文件夹,点击 Activity Bar 的「DeepSeek Harness」图标,扩展会自动检测并启动 DSH。

特性

  • 在 Activity Bar 中新增「DeepSeek Harness」图标,点击后打开内嵌面板
  • 支持把面板移动到辅助侧边栏(右键图标 → Move to Secondary Side Bar,或直接拖拽)
  • 标签页模式:通过「DeepSeek Harness: 在标签页中打开」(面板标题栏按钮或命令面板)在编辑器区域以标签页打开 DSH,页面宽度最大化,标签页可右键 Pin 住;标签页打开时侧边栏自动让位显示占位、关闭标签页后自动恢复(v0.3.5)
  • 自动检测:打开面板时探测 dshPanel.url 是否可访问
  • 自动启动:检测到未运行时,自动执行 dsh web --host <host> --port <port> 启动 DSH
  • 工作区自动绑定:启动 dsh 时使用 VS Code 当前打开的工作区文件夹作为 dsh 工作目录(无工作区则退回用户主目录)
  • 工作区自动注册:把 VS Code 当前工作区自动注册为 DSH 工作区,新会话默认使用该工作区(除非用户在 DSH 里手动切换)
  • 远程(vscode-server)支持:在 Remote-SSH / Dev Containers 等远程场景下运行,自动检测并安装服务器端的 dsh,并通过端口转发把 DSH 面板接入本地 VS Code
  • 就绪等待:启动后自动轮询等待服务就绪,再渲染界面,避免白屏
  • 字号跟随编辑器:面板整体等比缩放,从而让 16px 对话正文对齐 VS Code editor.fontSize(缩放比例 = editor.fontSize / 16,安全夹取到 8..72px / 0.5..2 倍),修改后即时生效,无需重载当前对话
  • 面板顶部提供「刷新」「重启 dsh web」和「在浏览器中打开」按钮:「刷新」会重新加载内嵌的 DSH 页面(不影响 dsh web 服务与运行中的任务);「重启」始终可启动/重启 dsh,仅当 dsh 非本窗口启动时会先弹确认,避免误中断其他窗口正在运行的任务
  • 发送选中代码到 DSH:选中代码后右键 → 「DeepSeek Harness: 发送选中内容到对话框」,自动插入到 DSH 对话框,支持精确光标定位(v0.2.12;v0.3.2 修复该功能不生效的问题,详见下方使用示例
  • 对话链接外部打开:点击 DSH 对话中的外部链接会在系统默认浏览器打开,不在 iframe 内导航(v0.2.13,配合 DSH 插件 dsh-open-links
  • 自动安装 DSH 配套插件 dsh-drop-caret(v0.3.0):打开面板时自动检测并在 DSH 中安装配套插件,实现「把文件/文件夹/选中代码段插入 DSH 对话框」,用户只需安装本扩展

为什么自动安装 DSH 插件 dsh-drop-caret

本扩展把 DeepSeek Harness (DSH) 的 Web GUI 内嵌在跨域 iframe 中。受浏览器同源安全策略限制,扩展(webview 是 iframe 的父容器)无法直接操作 DSH 页面内部的输入框——「把文件/文件夹/代码段插入对话框」这个动作必须由 DSH 页面内部的代码(一个 DSH 插件)来完成。

为了让你只安装本扩展就能获得完整能力,扩展会在每次打开面板时自动检查 DSH web profile,若缺少配套插件 dsh-drop-caret 则自动安装(优先 dsh plugin --profile web add dsh-drop-caret,失败时回退为 npm 拉取并写入 profile),并保持其版本满足要求。该插件实现以下功能:

  • 拖放文件:把文件拖进 DSH 对话框,在拖放点对应的精确光标位置插入路径引用(会话隔离存储,agent 可读)
  • 拖放文件夹:递归读取文件夹内所有文件并逐个插入引用
  • VS Code 资源管理器拖拽:把 VS Code 侧边栏 Explorer 的文件/文件夹直接拖入对话框
  • 发送选中代码段:在编辑器选中代码 → 右键「DeepSeek Harness: 发送选中内容到对话框」→ 在对话框光标处插入 路径:起始行-结束行,模型可定位到该代码段
  • 精确光标定位:所有插入都发生在拖放点 / 当前光标处,而非简单的末尾追加

该插件由本扩展自动安装并保持更新,你无需(也不建议)手动在 DSH 里重复安装。

使用示例:发送选中内容到对话框

拖拽 / 右键发送是 dsh-drop-caret 最常用的能力,操作如下:

  1. 在 VS Code 中框选住代码块 / 文字块

  2. 右键,点击 「DeepSeek Harness: 发送选中内容到对话框」

    右键菜单:发送选中内容到对话框

  3. 该脚本对应代码块所在行数的链接(路径:起始行-结束行)就会被发送到对话框,插入在当前光标位置:

    发送结果出现在 DSH 对话框中

  4. 在 DSH 里直接发送消息即可,模型可通过引用精确定位到代码块所在文件与行号。

同样地,也可以把文件 / 文件夹从系统文件管理器或 VS Code 资源管理器直接拖进对话框,插入位置同样是拖放点对应的光标位置。

从源码安装(开发模式,零依赖,无需编译)

本扩展是纯 JavaScript,不需要 npm install、不需要 TypeScript 编译

方式一:直接加载开发扩展

  1. 克隆并打开本目录:

    git clone https://github.com/Vithrive/Deepseek-Harness-for-VS-Code.git
    code Deepseek-Harness-for-VS-Code
  2. 在 VS Code 中按 F5,会弹出「扩展开发宿主」窗口。

  3. 在扩展开发宿主中打开你的项目文件夹(File → Open Folder),这样 DSH 的工作区就是你的项目。

  4. 点击左侧 Activity Bar 的「DeepSeek Harness」图标,面板会:

    • 检测 http://127.0.0.1:3080 是否已运行;
    • 若未运行,自动执行 dsh web --host 127.0.0.1 --port 3080,工作目录为当前项目;
    • 服务就绪后自动渲染 DSH 界面。
  5. 把图标移到辅助侧边栏:右键图标 → Move to Secondary Side Bar

方式二:自行打包成 .vsix 并安装

cd DeepSeek-Harness-for-VS-Code
npx --yes @vscode/vsce package --allow-missing-repository
code --install-extension deepseek-harness-vscode-0.3.6.vsix

配置

在 VS Code 设置(settings.json)中可覆盖默认值:

{
  "dshPanel.url": "http://127.0.0.1:3080",
  "dshPanel.host": "127.0.0.1",
  "dshPanel.port": 3080,
  "dshPanel.autoStart": true,
  "dshPanel.autoRegisterWorkspace": true,
  "dshPanel.autoInstallDsh": true,
  "dshPanel.dshCommand": "dsh",
  "dshPanel.killOnDispose": true
}

各配置项含义

配置项 默认值 说明
dshPanel.url http://127.0.0.1:3080 面板连接的 DSH 地址
dshPanel.host 127.0.0.1 自动启动时绑定的主机
dshPanel.port 3080 自动启动时监听的端口
dshPanel.autoStart true 未运行时是否自动启动 dsh
dshPanel.autoRegisterWorkspace true 是否把 VS Code 当前工作区自动注册为 DSH 工作区
dshPanel.autoInstallDsh true 未安装 dsh 时是否提示并代为安装
dshPanel.dshCommand dsh dsh 命令(可填完整路径)
dshPanel.killOnDispose true 扩展停用时是否结束它启动的 dsh

远程服务器(vscode-server)场景

本扩展声明 extensionKind: ["workspace"],在 Remote-SSH / Dev Containers 等远程场景下运行于服务器端,因此:

  1. 自动检测并安装 dsh:打开面板时,会在服务器端执行 dsh --version 检测是否已安装 DeepSeek Harness。未安装时弹出提示,确认后自动执行 npm install -g @deepseek-ai/dsh(要求服务器已安装 Node.js 与 npm)。

  2. 自动端口转发:DSH 在服务器上监听 127.0.0.1:3080。扩展通过 vscode.env.asExternalUri 自动建立端口转发,把远程端口暴露到本地,使侧边栏中的 iframe 能直接加载远程 DSH 界面,无需手动配置 SSH 隧道。

  3. 工作区自动对接:dsh 以远程工作区为 cwd 启动,新会话默认使用该远程工作区,并自动注册到 DSH 工作区列表。

注意:VS Code 首次转发端口可能弹出「是否转发端口」的确认,选择允许即可。

手动 SSH 隧道(可选,非远程场景)

如果你的 DSH 跑在另一台机器、且不是通过 VS Code Remote 连接的,可手动建立 SSH 隧道:

ssh -L 3080:127.0.0.1:3080 user@your-server

然后把 dshPanel.autoStart 设为 false(避免在本地又起一个),dshPanel.url 保持 http://127.0.0.1:3080

工作原理

  1. 打开面板 → 先显示「正在启动」加载页;
  2. 用 Node 内置 http/https 探测 dshPanel.url
  3. 未连接且 autoStart 开启 → spawn('dsh web --host ... --port ...')cwd 设为 VS Code 工作区;
  4. 轮询等待服务就绪(最多约 30 秒);
  5. 服务就绪后,通过 POST /api/workspace.create 把 VS Code 当前工作区注册为 DSH 工作区;
  6. 就绪后通过 WebviewViewProvider 渲染 iframe;
  7. retainContextWhenHidden: true 保持面板隐藏时不丢会话状态;
  8. 扩展停用时按 killOnDispose 决定是否结束它自己启动的 dsh(不影响你手动启动的实例)。

工作区行为说明

  • 新会话默认工作区:DSH 的新会话默认使用 dsh 进程的启动目录(cwd)作为工作区。扩展以 VS Code 当前工作区作为 cwd 启动 dsh,因此新会话默认指向 VS Code 工作区。
  • 工作区列表注册:扩展会在服务就绪后调用 workspace.create,把 VS Code 工作区加入 DSH 的工作区列表(幂等,已存在则不重复)。
  • 用户可手动更改:在 DSH 里手动选择其他工作区后,新会话会按你选择的工作区创建,扩展不会覆盖你的选择。

分支说明

  • dev-<版本号>:开发分支,命名与扩展版本号一致(历史 dev-0.1.0,当前 dev-0.3.6
  • main:与最新 dev-* 内容保持一致,作为默认分支
  • .vsix 安装包通过 GitHub Releases 发布

前置条件

  • 已安装 DeepSeek Harness:支持 npm install -g @deepseek-ai/dsh 全局安装,也支持 npx @deepseek-ai/dsh 安装(包只缓存在 npx 目录、不写全局 PATH 也能识别);扩展会自动检测这两种方式,也可通过 dshPanel.dshCommand 指定完整路径
  • 实测 DSH 默认响应头未设置 X-Frame-Options / 严格 CSP,可被 iframe 正常内嵌