前言¶
在 DeepSeek Harness(DSH)里接 MCP 工具,常见诉求是让助手不仅能改代码,还能加载解决方案、编译、下断点、看调用栈。Visual Studio 生态里已有不少「进程内」MCP 方案:工具调用最终回到 VS 的 UI 线程,模态对话框一弹出,调用就会阻塞,RDP 断开、锁屏或 VS 重启也会拖垮连接。
dsh2vs 是维护者 aaalzk 的独立第三方项目(与 DeepSeek AI、Microsoft、MCP 官方无隶属关系)。它把「加载工程、编译、调试」拆成常驻 HTTP 服务加 DSH 配置包,构建走 MSBuild CLI,调试走 cdb 子进程,不装 VSIX,也不要求 Visual Studio 处于打开状态。下面介绍它是什么、能做什么,以及先起桥、再接 DSH 的安装顺序。
这是什么¶
dsh2vs 由两个独立部分组成,只装一半会连上一个不存在的地址:
| 部分 | 作用 |
|---|---|
| 桥 | .NET 程序,调用 MSBuild 编译、启动 cdb 调试、处理崩溃 dump 与报告 |
| DSH 插件 | 纯配置包,告诉 DSH 桥在 127.0.0.1:8790 |
AI 助手通过 MCP 调用桥暴露的接口,即可在无人值守或远程机器上跑 C++ 项目的「改代码 → 编译 → 调试」循环。它不是 VS 插件,也不替代 VS 图形界面;需要看 IDE 时仍可自行打开 Visual Studio。
npm 包名 dsh2vs,当前 package.json 版本为 0.1.1,许可证 MIT。社区目录页:https://www.skillhub.cn/plugins/aaalzk/dsh2vs;源码与文档:https://github.com/aaalzk/dsh2vs。
核心功能¶
资料中明确的能力包括:
- 工程感知:从
.sln与配置推导可执行文件路径等,而不是只提供裸调试器、由调用方自行拼路径。 - 编译:通过 MSBuild.exe 构建 Visual Studio C++ 工程。
- 调试:通过 cdb.exe 子进程断点调试、查看调用栈与变量。
- 诊断层:例如启动失败可给出
0xC0000135与缺失 DLL 信息;崩溃时可自动 dump 与报告。 - MCP 工具面:重启 DSH 会话后,会出现
mcp__vs__*等 40 个以上工具(完整列表见仓库docs/tools.md)。
与仅覆盖 Windbg 或仅覆盖 MSBuild 的同类 MCP 相比,项目自述的定位是:从解决方案出发的无人值守闭环,并叠加一层面向 agent 的诊断信息。若只需要成熟的 Windbg MCP,README 指向 mcp-windbg 作为更专深的调试方案。
安装与启用¶
顺序必须是:先确认桥存活,再安装 DSH 插件。只装插件、桥未启动时,DSH 会因 failOnStartupError: true 明确报错,不会静默丢失工具。
第 1 步:启动桥¶
绿色版(推荐:无需 .NET SDK、无需编译)
从 Releases 下载 dsh2vs-win-x64.zip,解压后运行(将工作区路径换成你的 C++ 工程根目录):
.\Dsh2Vs.Server.exe --Dsh2Vs:WorkspaceRoot=D:\Projects\你的C++工程
源码构建(需要改代码时)
git clone https://github.com/aaalzk/dsh2vs.git
cd dsh2vs; dotnet build
.\scripts\start.ps1 -Workspace D:\Projects\你的C++工程
MCPB 单文件包(Claude Desktop 等支持 MCPB 的客户端)
Releases 中提供 dsh2vs-0.1.0.mcpb(自带 .NET 9 运行时)。可直接用 Claude Desktop 打开,或解压后以 stdio 模式启动:
.\Dsh2Vs.Server.exe --stdio
stdio 模式下 stdout 仅用于 MCP 协议,日志写入 stderr。
确认桥正常:
(Invoke-WebRequest http://127.0.0.1:8790/healthz -UseBasicParsing).Content
期望类似:
{"status":"ok","name":"dsh2vs","version":"0.1.0","msbuild":"...MSBuild.exe"}
若 status 为 degraded,表示未找到 MSBuild,需参阅仓库 docs/faq.md。
第 2 步:接入 DSH¶
dsh plugin --profile web add dsh2vs
npm 不可用时,可使用资料给出的源码安装方式:
dsh plugin --profile web add github:aaalzk/dsh2vs
重启 DSH 会话(MCP 连接在会话启动时加载),上述工具才会出现在助手侧。
典型用法(架构层面)¶
数据流可概括为:
DSH ──MCP──▶ 插件(YAML:指向 127.0.0.1:8790)
│
▼ HTTP
桥(Dsh2Vs.Server)
├─▶ MSBuild.exe 编译
├─▶ cdb.exe 调试
└─▶ 崩溃 dump + 报告
面向 AI agent 的完整操作流程见仓库 skills/dsh2vs/SKILL.md;配置项、多工作区与常驻运行见 docs/configuration.md。
适用场景与注意¶
更适合:让 AI 在无人值守或远程 Windows 机器上处理 C++ 项目;需要「编译报错 → 改代码 → 再编译」的自动循环;希望避免 VS 弹「项目已过期,是否重新生成」等模态框卡住自动化。
不太适合:只想在 VS 里与 AI 聊天(README 建议考虑 Claude Code、cv4vs 等进程内方案);强依赖 VS 图形调试器;调试托管 .NET。
安全与权限:DSH 插件以当前 dsh 进程权限运行 MCP 与本地 HTTP 调用。安装前应阅读仓库源码与 MIT 许可证,确认桥只监听本机、工作区路径范围符合你的预期。
环境:桥侧为 Windows + Visual Studio 工具链(MSBuild、cdb);DSH 插件包要求 Node >=18(见 package.json engines)。
结尾¶
dsh2vs 用「HTTP 桥 + DSH 配置包」把 Visual Studio C++ 工程的加载、编译与 cdb 调试暴露给 MCP 客户端,刻意绕开 VS 进程内 UI 自动化带来的弹窗与断连问题。部署时牢记两步: Releases 或构建启动 Dsh2Vs.Server,healthz 返回 ok 后再执行 dsh plugin --profile web add dsh2vs 并重启会话。