Repository navigation
Releases: VSworder/deepseek-harness-visual-studio
Release list
0.2.2 — the plugin installs the Visual Studio tools too
English · 中文版在下方 ↓
Behaviour change only: the standalone DeepSeek Harness plugin now gets the Visual Studio tools as well as the diff gate.
Changed
packages/dsh-plugin-vs-gatemounts@deepseek-ai/dsh-mcp-clientitself. Installed withdsh plugin add, it used to hand over the diff gate and nothing else — the MCP client carryingget_environment,get_open_filesandget_current_selectionwas an entry in the patch the extension generates, so a session started any other way never saw it. A plugin installed on its own gave a visibly smaller product than pressing Start session, and nothing said so.- The extension's patch no longer carries that entry, which leaves exactly one place able to mount the client and no way to register every tool twice.
- It retries for ten minutes instead of trying once, because starting the session first and Visual Studio second is an ordinary order to do things in.
Fixed
tests/plugin-rebuild.test.mjsno longer reads the machine's real%LOCALAPPDATA%. A Visual Studio running alongside turned the "no bridge" cases into a live bridge answering, which failed as a denial nowhere near the cause.
Install from the Marketplace, or the VSIX below. Requirements and the rest: README. Full history: CHANGELOG.md.
中文
中文版 · English above ↑
只改行为:独立安装的 DeepSeek Harness 插件现在除了 diff 闸门,也会拿到 Visual Studio 的工具。
变更
packages/dsh-plugin-vs-gate自己挂载@deepseek-ai/dsh-mcp-client。 用dsh plugin add装的时候,它以前只给闸门、别的什么都没有 —— 承载get_environment、get_open_files、get_current_selection的那个 MCP 客户端,是扩展生成的补丁里的一条,所以不是扩展启动的会话根本看不到。单独装了插件的人,拿到的是一个明显比"点 Start session"更小的东西,而且没有任何东西告诉他。- 扩展的补丁不再带这一条,于是挂载点只剩一处,不可能出现每个工具被注册两遍。
- 它重试十分钟而不是只试一次,因为"先开会话、后开 Visual Studio"是很正常的顺序。
修复
tests/plugin-rebuild.test.mjs不再读机器的真实%LOCALAPPDATA%。以前一个正在运行的 Visual Studio 会把"无桥"的用例变成一个正在应答的桥,失败信息是一句"被拒绝",离原因十万八千里。
从 Marketplace 或下面的 VSIX 安装。前置条件和其余内容见 README。完整历史:CHANGELOG.md。
0.2.1 — on the Visual Studio Marketplace
English · 中文版在下方 ↓
Now on the Visual Studio Marketplace. Install it from inside Visual Studio: Extensions → Manage Extensions → search "DeepSeek Harness", or open the listing.
Behaviour is unchanged from 0.2.0. Three things in the manifest were wrong, and all three are visible in Visual Studio's own Extensions Manager.
Install
From the Marketplace (recommended). In Visual Studio: Extensions → Manage Extensions, search for DeepSeek Harness, install, restart. Updates arrive through the normal extension update flow.
From the VSIX below. Download DeepSeekHarness.VisualStudio.vsix, close Visual Studio, double-click the file, restart.
Then open a solution and pick Tools → DeepSeek Harness → Start session.
Requirements: Visual Studio 2022 17.14 or newer (developed against Visual Studio 2026 18.10), the .NET Framework 4.8 runtime, and DeepSeek Harness itself:
npm install -g @deepseek-ai/dshWhat changed in 0.2.1
The MoreInfo link pointed at https://github.com/ — the site root, not this repository. It is the link the Extensions Manager offers for more information, so it went nowhere useful.
The description named the removal command by its old name and called it mandatory. It said to run Remove everything before uninstalling, because a VSIX uninstall cannot run code and would leave the plugin behind. That was true when it was written and is not true now: the command is Clean up installed files, and it is optional. Uninstalling already removes every capability, because without Visual Studio there is no bridge and no diff window. What remains is a folder under %LOCALAPPDATA% that does nothing on its own.
The extension is marked preview. The Marketplace reads this from the manifest; the checkbox on the publisher portal only applies to extensions listed by link rather than uploaded as a VSIX, so it could not be set there.
The description also had to be shortened to fit. The schema caps it at 1000 characters after entity decoding, and the first attempt at these edits came to 1142 and failed validation with VSSDK1062. It is 879 now.
If you installed 0.2.0 from this repository, note that its publisher was DeepSeekHarness. Visual Studio identifies an extension by publisher and id together, so uninstall that one first — otherwise both sit side by side and both answer the same commands.
What the extension does
Review every file the agent wants to change, in Visual Studio's own diff window, before it touches disk. Accept writes it. Reject fails the tool call with your reason attached, so the model knows why.
Three read-only MCP tools report IDE state to the agent: get_environment, get_open_files, and get_current_selection — the last of which works while you are typing in the terminal, because it asks the text manager for the last active view rather than the focused one.
Nothing is installed into your DeepSeek Harness profile. The gate is a plugin this project owns, mounted from the extension's own directory.
Note on this release
Marked preview, and the reason is specific rather than a hedge: everything below was verified on one machine, running Visual Studio 2026 18.10, even though the extension declares support from 17.14. Nothing has been installed on a second machine or a second Visual Studio version. Treat it as something to try, not something to depend on.
Verified
- 26 checks over the plugin's proposal reconstruction:
write,edit(LF and CRLF),create,str_replace,insert, a deletion, the read-onlyview, an unmatched search, an ambiguous match, rejection reasons, discovery through a lock file with and without a BOM, and the no-bridge path - End to end against a real DeepSeek Harness session: the gate intercepts, Reject leaves the file untouched and the reason reaches the model, Accept writes
dsh plugin addinstalls the plugin and a session routes through it
Full history: CHANGELOG.md
中文
中文版 · English above ↑
已上架 Visual Studio Marketplace。 可以直接在 Visual Studio 里装:扩展 → 管理扩展 → 搜索 "DeepSeek Harness",或者打开商店页面。
行为与 0.2.0 完全一致。这次改的是 manifest 里的三处错误,它们都会显示在 Visual Studio 自己的扩展管理器里。
安装
从 Marketplace 装(推荐)。 在 Visual Studio 里:扩展 → 管理扩展,搜 DeepSeek Harness,安装,重启。以后的更新走正常的扩展更新流程。
从下面的 VSIX 装。 下载 DeepSeekHarness.VisualStudio.vsix,关闭 Visual Studio,双击文件,重启。
然后打开解决方案,选 工具 → DeepSeek Harness → Start session。
前置条件: Visual Studio 2022 17.14 或更新(开发环境是 Visual Studio 2026 18.10)、.NET Framework 4.8 运行时,以及 DeepSeek Harness 本体:
npm install -g @deepseek-ai/dsh0.2.1 改了什么
MoreInfo 链接指向 https://github.com/ —— 站点根目录,不是本仓库。那是扩展管理器里"更多信息"按钮的目标,点过去毫无用处。
描述里用的是卸载命令的旧名字,而且说它是必需的。 它说卸载前要先跑 Remove everything,因为 VSIX 卸载时无法执行代码、会把插件留在磁盘上。这句话写的时候是对的,现在不对了:命令叫 Clean up installed files,而且是可选的。卸载本身已经移除了全部能力,因为没有 Visual Studio 就没有 bridge、也没有 diff 窗口。剩下的是 %LOCALAPPDATA% 下一个不会自己运行的文件夹。
扩展标记为预览版。 Marketplace 从 manifest 读这个标记;发布者门户上的勾选框只对"链接型"扩展有效,不对上传 VSIX 的扩展开放,所以在那里勾不上。
描述还被迫缩短了。schema 限制它实体解码后不超过 1000 字符,而第一次改完是 1142,校验直接失败(VSSDK1062)。现在是 879。
如果你从本仓库装过 0.2.0,注意那版的发布者是 DeepSeekHarness。Visual Studio 用"发布者 + 标识"一起来认扩展,所以请先把那个卸掉 —— 否则两个会并排存在,抢同一批命令。
这个扩展做什么
agent 提出要改的每个文件,都会先在 Visual Studio 自己的 diff 窗口里给你过一遍,你点接受才落盘。点拒绝,这次调用直接失败,你写的原因会原样带给模型。
三个只读的 MCP 工具向 agent 汇报 IDE 状态:get_environment、get_open_files、get_current_selection —— 最后那个在你于终端里打字时也能用,因为它问的是文本管理器"最后活动的视图",而不是"当前有焦点的视图"。
不会往你的 DeepSeek Harness profile 里装任何东西。闸门是本项目自己维护的插件,从扩展自己的目录挂载。
关于这个版本
标记为预览版,理由很具体,不是客套:下面所有内容都只在一台机器、Visual Studio 2026 18.10 上验证过,而扩展声明支持到 17.14。没有在第二台机器或第二个 VS 版本上装过。 请把它当成"可以试试的东西",而不是"可以依赖的东西"。
验证情况
- 插件提议内容的 26 项测试:
write、edit(LF 与 CRLF)、create、str_replace、insert、删除、只读的view、匹配失败、多重匹配、拒绝理由、带与不带 BOM 的锁文件发现、以及无桥路径 - 对真实 DeepSeek Harness 会话的端到端验证:闸门确实拦截、拒绝后文件纹丝未动且理由到达模型、接受后正常写入
dsh plugin add能装上,并且会话确实从它路由
完整历史:CHANGELOG.md
0.2.0 — the gate plugin installs on its own
English · 中文版在下方 ↓
Review every file the agent proposes to change, in Visual Studio's own diff window, before it touches disk. Accept writes it. Reject fails the tool call with your reason attached, so the model knows why.
Community-built and unofficial — not affiliated with DeepSeek.
Install
- Download DeepSeekHarness.VisualStudio.vsix below
- Close Visual Studio
- Double-click the file
- Restart Visual Studio
Then open a solution and use Tools → DeepSeek Harness → Start session. File edits the agent proposes now open beside your code; nothing is written until you accept.
Requirements: Visual Studio 2022 17.14 or newer (including 2026), the .NET Framework 4.8 runtime, and DeepSeek Harness itself:
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tuiWhat's new in 0.2.0
The gate plugin installs on its own. packages/dsh-plugin-vs-gate now declares a dsh.bundle manifest, so DeepSeek Harness can mount it directly:
dsh plugin add github:VSworder/deepseek-harness-visual-studio#packages/dsh-plugin-vs-gateThat is for running DeepSeek Harness in your own terminal instead of through Start session. The diff window still comes from the extension — it owns the loopback bridge — so Visual Studio has to be open with the extension installed. Nothing needs the extension to have launched the session.
It finds Visual Studio without being told where it is. The extension used to inject the bridge port and token, which is useless to a session it did not start. The plugin now also reads the lock files the extension writes, ranked by how well their workspace matches the session directory.
It says nothing when there is nothing to say. With no Visual Studio reachable the plugin has no opinion, rather than prompting on every edit. A session the extension launched is the exception and still answers ask, because there a window was promised and one that cannot open should be reported rather than skipped.
Fixes
- A lock file with a byte-order mark is now read.
JSON.parserejects a BOM outright, so one was skipped in silence and nothing was routed — the same shape of failure as the package-directory URL that once made the gate absent without a word. - One edit, one diff. The bridge de-duplicates by call id, so mounting the gate twice — once by the extension, once by a profile install — no longer shows two windows for one change.
- Rejecting a new file creates nothing: not the file, not its parent directories.
Verified
- 26 checks over the plugin's proposal reconstruction:
write,edit(LF and CRLF),create,str_replace,insert, a deletion, the read-onlyview, an unmatched search, an ambiguous match, rejection reasons, discovery through a lock file with and without a BOM, and the no-bridge path - End to end against a real DeepSeek Harness session: the gate intercepts, Reject leaves the file untouched and the reason reaches the model, Accept writes
dsh plugin addinstalls the plugin and a session routes through it
Note on this release
This is marked a pre-release, and the reason is specific rather than a hedge: everything above was verified on one machine, running Visual Studio 2026 18.10, even though the extension declares support from 17.14. Nothing has been installed on a second machine or a second Visual Studio version. Treat it as something to try, not something to depend on.
Full history: CHANGELOG.md
中文
中文 · English above ↑
agent 提出要改的每个文件,都会先在 Visual Studio 自己的 diff 窗口里给你过一遍,你点接受才落盘。点拒绝,这次调用直接失败,你写的原因会原样带给模型。
社区作品,非官方 —— 与 DeepSeek 无隶属关系。
安装
- 下载下面的 DeepSeekHarness.VisualStudio.vsix
- 关掉 Visual Studio
- 双击那个文件
- 重开 Visual Studio
然后打开解决方案,用 工具 → DeepSeek Harness → Start session。之后 agent 要改文件时,diff 会开在你代码旁边;你不点接受,就什么都不写。
前置条件: Visual Studio 2022 17.14 或更新(含 2026)、.NET Framework 4.8 运行时,以及 DeepSeek Harness 本体:
npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui0.2.0 新增
闸门插件现在可以独立安装。 packages/dsh-plugin-vs-gate 声明了 dsh.bundle manifest,DeepSeek Harness 能直接挂载:
dsh plugin add github:VSworder/deepseek-harness-visual-studio#packages/dsh-plugin-vs-gate这条路是给在自己的终端里跑 DeepSeek Harness 的人准备的,不走 Start session。diff 窗口仍然由扩展提供 —— loopback bridge 归它所有 —— 所以 Visual Studio 得开着、扩展得装着。但不要求会话是由扩展启动的。
它自己找得到 Visual Studio。 以前靠扩展注入端口和 token,对"不是扩展启动的会话"完全无用。现在插件还会读扩展写的锁文件,按工作区匹配程度排序。
没什么可说的时候它就不说话。 找不到 Visual Studio 时插件不表态,而不是每次编辑都弹一个询问。扩展启动的会话是例外 —— 那里本来就承诺了一个窗口,承诺了却开不出来,就该报出来而不是跳过去。
修复
- 带 BOM 的锁文件现在能读了。
JSON.parse见到 BOM 直接报错,于是一个完全正常的锁文件被静默跳过、什么都没路由 —— 和当初"包目录 URL"导致闸门凭空消失是同一种失败形态。 - 一次编辑,一个 diff。 bridge 按 call id 去重,所以闸门被挂两次(扩展一次、profile 装一次)不会再弹两个窗口。
- 拒绝新建文件时不留痕:文件不创建,父目录也不创建。
验证情况
- 插件提议内容的 26 项测试:
write、edit(LF 与 CRLF)、create、str_replace、insert、删除、只读的view、匹配失败、多重匹配、拒绝理由、带与不带 BOM 的锁文件发现、以及无桥路径 - 对真实 DeepSeek Harness 会话的端到端验证:闸门确实拦截、拒绝后文件纹丝未动且理由到达模型、接受后正常写入
dsh plugin add能装上,并且会话确实从它路由
关于这个版本
这个 release 标为 pre-release,理由很具体,不是客套:上面所有内容都只在一台机器、Visual Studio 2026 18.10 上验证过,而扩展声明支持到 17.14。没有在第二台机器或第二个 VS 版本上装过。 请把它当成"可以试试的东西",而不是"可以依赖的东西"。
完整历史:CHANGELOG.md
v0.1.0: 0.1.0: the diff gate, the IDE tools, and one-click session start
First working release.
The diff gate. File edits the agent proposes open in Visual Studio's own diff window —
left is what is on disk, right is what the model proposes. Accept writes it; Reject fails the
call with your reason attached, which the model sees. Rejecting a new file creates nothing,
not even a zero-byte placeholder.
The IDE tools. Three read-only MCP tools report IDE state to the agent:
get_environment, get_open_files, get_current_selection. The last works while you are
typing in the terminal.
One-click start. Tools → DeepSeek Harness → Start session opens a gated session in a
terminal tab.
Nothing is installed into your DeepSeek Harness profile. The gate is a plugin this
repository owns, mounted from the extension's own directory. Your profile's dependencies,
approval policy and sandbox policy are untouched.
Community-built and unofficial; not affiliated with DeepSeek.