dsh2vs:让 DSH 通过 MSBuild 与 cdb 操作 Visual Studio C++ 工程

前言

在 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。

核心功能

资料中明确的能力包括:

  1. 工程感知:从 .sln 与配置推导可执行文件路径等,而不是只提供裸调试器、由调用方自行拼路径。
  2. 编译:通过 MSBuild.exe 构建 Visual Studio C++ 工程。
  3. 调试:通过 cdb.exe 子进程断点调试、查看调用栈与变量。
  4. 诊断层:例如启动失败可给出 0xC0000135 与缺失 DLL 信息;崩溃时可自动 dump 与报告。
  5. 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 并重启会话。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜