deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Vithrive/Deepseek-Harness-for-VS-Code
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
一个零依赖的 VS Code 扩展,把 DeepSeek Harness (DSH) 接入 VS Code 的两种形态:
Copilot 桥接不影响「忠实窗口」形态——它只是为便捷编程而做的功能提升;你不选这些模型条目时,一切与没有桥接功能时完全一样。
如果喜欢本扩展请转至 Deepseek-Harness-for-VS-Code 星标助力;对 Chrome Extension 有需求也请关注 Deepseek-Harness-for-Chrome。
版本适配:本扩展 v0.8.34 起适配 dsh v0.1.2-rc.1 及以上版本——自动完成该版本起新增的 Web 浏览器认证(扩展受管认证代理,面板与 Copilot 桥接全程免登录、免打扰,详见下文「dsh web 浏览器认证」);同时向下兼容未启用认证的旧版 dsh(启动参数探测、RPC 端点新旧格式自动回退)。
dsh-webview-clipboard,PR #11、#14)。Marketplace:在 VS Code 扩展市场搜索 DeepSeek Harness for VSCode 一键安装(Marketplace 页面)。
.vsix:从 GitHub Releases 下载 deepseek-harness-vscode-<版本>.vsix,然后:
code --install-extension deepseek-harness-vscode-<版本>.vsix
或在 VS Code 中:Ctrl+Shift+P → Extensions: Install from VSIX...。
安装后 Ctrl+Shift+P → Reload Window。打开面板时扩展会自动检测并启动 DSH(未安装会提示并代为执行 npm install -g @deepseek-ai/dsh)。
editor.fontSize 等比缩放(CSS zoom 实现,非整数倍缩放同样清晰);dsh-drop-caret):把文件、文件夹、代码段以 路径:行号 引用精确插入对话框光标处——从 VS Code 资源管理器拖拽直接引用源文件本身(不产生副本);从系统文件管理器拖入时浏览器无法取得真实路径,此时才回退为工作区 .dsh-drop/ 下的内容快照。点击 DSH 对话中的外链在系统浏览器打开(配合 DSH 插件 dsh-open-links)。dsh-webview-clipboard):修复 macOS 上面板内 ⌘C/⌘V/⌘X 失效的问题——DSH 页面以跨源 iframe 内嵌于 webview 时,浏览器的原生剪贴板默认动作不会发生。插件注入 DSH 页面后拦截这三个键并经 execCommand 显式执行。仅 macOS + 被内嵌时启用,其余环境行为不变。拖拽 / 右键发送是 dsh-drop-caret 最常用的能力,操作如下:
在 VS Code 中框选住代码块 / 文字块;
右键,点击 「DeepSeek Harness: 发送选中内容到对话框」:

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

在 DSH 里直接发送消息即可,模型可通过引用精确定位到代码块所在文件与行号。
同样地,也可以把文件 / 文件夹从系统文件管理器或 VS Code 资源管理器直接拖进对话框,插入位置同样是拖放点对应的光标位置。
| 配置项 | 默认值 | 说明 |
|---|---|---|
dshPanel.url |
http://127.0.0.1:3080 |
面板连接的 DSH 地址 |
dshPanel.host / dshPanel.port |
127.0.0.1 / 3080 |
自动启动时绑定的主机与端口 |
dshPanel.autoStart |
true |
未运行时是否自动启动 dsh |
dshPanel.autoRegisterWorkspace |
true |
是否把当前工作区自动注册为 DSH 工作区 |
dshPanel.autoInstallDsh |
true |
未安装 dsh 时是否提示并代为安装 |
dshPanel.dshCommand |
dsh |
dsh 命令(可填完整路径) |
dshPanel.killOnDispose |
true |
扩展停用时是否结束它启动的 dsh |
dshPanel.openSystemBrowser |
false |
扩展启动 dsh 时是否保留弹系统浏览器的旧行为 |
dshPanel.installClipboardPlugin |
true |
自动安装内置 dsh-webview-clipboard 插件(修复 macOS 面板内编辑快捷键;Windows/Linux 上为惰性文件不影响行为)。怀疑影响 dsh web 启动时可关闭对比 |
dsh 0.1.2-rc 起为 Web GUI 启用了浏览器认证:每次 dsh web 启动会生成一个一次性「进程启动令牌」并打印形如 dsh web: http://127.0.0.1:3080/?token=… 的认证链接,浏览器打开该链接后换取签名 Cookie,此后凭 Cookie 访问;裸地址一律返回 401。同时 /api 还有浏览器信任围栏(Host 必须回环、Origin 与 Host 一致、拒绝跨站请求)。
扩展的处理方式(不关闭 dsh 的任何安全机制,全程无感):
127.0.0.1 随机端口启动一个受管认证代理:由代理完成令牌 → Cookie 换发,之后给每个转发请求(页面、API、WebSocket)注入凭据,面板与 Copilot 桥接全部改走代理;--no-open,不再弹出系统浏览器(需要旧行为时打开 dshPanel.openSystemBrowser);dsh web: 打印的认证链接整行粘贴进来;扩展对未启用 web 认证的旧版 dsh 保持完整兼容,回退路径全部自动、无感:
--no-open 先经 dsh web --help 探测,老版本不支持就不传(不会因未知参数导致启动失败);workspace/create 等)请求,收到 404 自动回退旧点号端点(workspace.create);session/page 不可用时回退 session.history;dsh web: 打印行」为就绪信号(新旧版本都会打印);个别从不打印的极老版本会被记忆(dsh.quietBoot),之后不再等待。扩展声明 extensionKind: ["workspace"],在 Remote-SSH / Dev Containers 等场景下运行于服务器端:
npm install -g @deepseek-ai/dsh,要求服务器已装 Node.js 与 npm);vscode.env.asExternalUri 把远程 127.0.0.1:3080 暴露到本地,iframe 直接加载,无需手动配 SSH 隧道(首次转发确认允许即可);如果 DSH 跑在另一台机器、且不是通过 VS Code Remote 连接的,可手动建隧道:ssh -L 3080:127.0.0.1:3080 user@server,并把 dshPanel.autoStart 设为 false。
Ctrl+Alt+I)→ 模型选择器(Ctrl+Alt+.)里选择 DSH (DeepSeek Harness)(或直接选 DeepSeek-V4-Pro (DSH) 等固定条目);DSH (DeepSeek Harness) 条目默认跟随 DSH 设置里的默认模型(agent-default-model);也可用 dshPanel.chatProvider / dshPanel.chatModel 指定(如 deepseek-official / deepseek-v4-pro,需先在 DSH 设置中配置好对应 provider)。模型选择器里的 DeepSeek-V4-Pro (DSH) 等条目则固定对应 DeepSeek 官方模型。dshPanel.dshReasoningEffort 作为兜底配置。Copilot 会话中途切到其他自定义模型问答、再切回 DSH 模型时,扩展会把「其他模型产出的中间对话」打上产地标签补发给 DSH 会话;DSH 自己答过的内容不会重复回传(省 token、不占上下文)——DSH 侧时间线保持完整。
| 命令 | 作用 |
|---|---|
DeepSeek Harness: 重置 DSH 会话映射 |
清空「聊天 → DSH 会话」映射,下次提问创建全新 DSH 会话 |
DeepSeek Harness: 检查 DSH 状态 |
查看 DSH 是否可达、模型提供方是否注册、当前模型配置 |
DeepSeek Harness: 诊断 DSH 模型注册表 |
导出模型注册表诊断数据(排查用) |
取消等待不会杀掉 DSH 任务:任务会继续在 DSH 中运行,可到面板查看。
| 配置项 | 默认值 | 说明 |
|---|---|---|
dshPanel.enableDshModel |
true |
是否注册 DSH 聊天模型条目(关闭则桥接不生效,面板不受影响) |
dshPanel.chatProvider / dshPanel.chatModel |
空 | DSH (DeepSeek Harness) 条目使用的 provider / 模型(如 deepseek-official / deepseek-v4-pro);留空跟随 DSH 默认 |
dshPanel.chatAgentPreset |
空 | DSH 会话创建时使用的 agent 预设(如 liangshen);留空=DSH 默认 |
dshPanel.dshReasoningEffort |
空 | 推理档位兜底:off / low / high / max;界面选择优先 |
dshPanel.chatTimeoutMs |
900000 |
单次任务最长等待毫秒数(15 分钟),超时后任务仍在 DSH 面板运行 |
dshPanel.chatSyncLookbackMin |
60 |
聊天会话文件扫描窗口(分钟) |
dshPanel.debugModelMessages |
false |
调试:把 VS Code 发给模型的消息结构写入 .dsh-debug/ |
整体数据流:
Copilot Chat(VS Code 组织好的对话)
│ 语言模型提供方协议(vscode.lm.registerLanguageModelChatProvider)
▼
本扩展(dsh 提供方)
1. 滤除杂音:剥离系统提示词、工具定义、环境/上下文包裹(<prompt>/<userRequest>/<instructions>…),
只保留真实问答与 Copilot 记忆正文
2. 会话映射:以 Copilot 聊天的 sessionId 为键,映射到 DSH 会话(一聊天一会话)
3. 增量同步:只把 DSH 尚未见过的内容发给 DSH(自己答过的不回传;其他模型的问答打产地标签补发)
4. 档位同步:把界面选择的 reasoningEffort 传给 DSH(session.selectModel)
│ session.create / session.prompt / session.history(DSH RPC)
▼
DSH:用自己的一套 harness(记忆 / 技能 / AGENTS.md / 工具 / agent 预设)二次组织,交给配置的模型执行
│ 流式事件(text-delta)
▼
本扩展:增量流式回写 Copilot 聊天框
要点:
<instructions>(.copilot/instructions、AGENTS.md 引用)、<prompt> 真实提问、<userMemory>/<sessionMemory> 记忆块等。扩展只提取真实提问与记忆正文——上下文组织交给 DSH 自己的 harness,避免两套 harness 互相干扰。workspaceStorage/<哈希>/chatSessions/<sessionId>.jsonl(文件名即 sessionId)。扩展以 m-<sessionId> 为键建立「聊天 → DSH 会话」的一对一映射:【Copilot 其他模型回答】 标签补发。Copilot 桥接是早期版本,但已经过充分测试、功能完全可用:
本扩展是纯 JavaScript,不需要 npm install、不需要编译:
git clone https://github.com/Vithrive/Deepseek-Harness-for-VS-Code.git
code Deepseek-Harness-for-VS-Code
在 VS Code 中按 F5 打开扩展开发宿主窗口,在其中打开你的项目文件夹即可。自行打包安装:
npx --yes @vscode/vsce package --allow-missing-repository
code --install-extension deepseek-harness-vscode-<版本>.vsix
npm install -g @deepseek-ai/dsh 全局安装或 npx @deepseek-ai/dsh 均可,扩展自动识别两种方式,也可用 dshPanel.dshCommand 指定完整路径);DSH 默认响应头未设置 X-Frame-Options / 严格 CSP,可被 iframe 正常内嵌。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。