Show HN:Visual Studio 原生支持 Claude Code 差异对比与接受拒绝
速览
该工具展示了如何在 Visual Studio 中原生集成 Claude Code。它提供了差异对比功能,并允许用户直接接受或拒绝代码更改。这提升了开发者使用 AI 辅助编程时的交互体验。
AI 深度解读
Show HN: Claude Code for Visual Studio (原生 Diff 与接受/拒绝机制)
背景
尽管 Anthropic 的 Claude Code 已经在 VS Code 和 JetBrains 系列 IDE 中提供了第一流的集成体验,但在微软的 Visual Studio 生态中,这一体验长期缺席。社区用户 anthropics/claude-code#15942 曾指出这一缺口,而本文介绍的开源项目正是为了填补这一空白。
该项目是一个名为 "Claude Code for Visual Studio" 的社区扩展,旨在将 Claude Code 的 CLI(命令行界面)能力原生引入 Visual Studio 2026。它并非对 AI 代理功能的重新实现,而是作为 Claude Code 集成协议在 IDE 端的“另一半”,通过本地 WebSocket 桥接,让 CLI 驱动 Visual Studio 的原生 Diff 窗口、获取编译器诊断信息以及读取用户选中的代码上下文。
重要声明:这是一个社区项目,与 Anthropic 无关。目前仅支持 Visual Studio 2026。
核心内容
该扩展的核心价值在于实现了 Claude Code 与 Visual Studio 之间的原生协议桥接,消除了传统终端交互中繁琐的复制粘贴步骤,提供了更流畅的 IDE 内体验。
1. 原生 Diff 窗口与审批机制
- 单一审批门控:Claude 生成的代码编辑建议直接在 Visual Studio 的原生 Diff 查看器中打开。用户只需点击“Accept”(接受)或“Reject”(拒绝)即可完成操作,无需在终端中再次输入
y/n进行确认。 - 拒绝并反馈:如果用户拒绝某次编辑,可以附带反馈信息告诉 Claude 需要修改的地方,Claude 会根据这些备注重新生成代码。
- 自动应用(Run Wild):面板提供切换开关,允许用户在不打开 Diff 窗口的情况下直接应用编辑。这适用于用户信任 AI 输出、希望让其“自由发挥”的场景。此设置每次会话启动时重置。
2. 上下文感知能力
- 诊断信息共享:扩展能够读取 Visual Studio 的编译器错误和警告(支持 C# 和 C++),并将这些上下文传递给 Claude,使其能够针对性地修复代码问题。
- 选中内容上下文:Claude 自动感知用户当前正在查看的文件及选中的代码行,从而提供更精准的代码建议。
3. 实时状态面板
- 这是一个可停靠的面板,显示连接状态、编辑决策历史、Token 使用情况以及预估成本(包括最新调用成本和累计会话成本)。
4. 技术架构与工作原理
- 协议桥接:扩展本身不执行任何 AI 模型调用或代理工作。它启动一个本地 WebSocket 服务器,并在
~/.claude/ide/<port>.lock写入锁文件。 - CLI 驱动:扩展启动
claudeCLI,设置ENABLE_IDE_INTEGRATION环境变量并传入桥接端口,使 CLI 自动连接并通过 MCP / JSON-RPC 协议通信。 - 工具实现:扩展实现了 CLI 驱动所需的 IDE 工具,包括
openDiff、openFile、getDiagnostics、选中内容更新以及 Diff 标签页的生命周期管理。 - 权限钩子:为了让 Visual Studio 的 Diff 成为唯一的审批门控,扩展会在工作区的
.claude/settings.json中安装一个PreToolUse钩子,将提议的编辑路由到 Diff 窗口。vs-permission-hook.ps1:将 Edit/Write/MultiEdit 编辑通过 VS Diff 路由。vs-usage-hook.ps1:报告转录路径,以便面板显示 Token 统计信息。
5. 安装与使用
- 安装方式:
- 通过 Visual Studio 扩展管理器搜索 "Claude Code for Visual Studio"。
- 从 Releases 下载
.vsix文件并双击安装。
- 前置条件:
- Visual Studio 2026。
- 已安装并认证 Claude Code CLI(参考 Claude Code 文档)。
- 已针对
claude 2.1.173版本进行测试。
- 操作流程:
- 在 VS 2026 中打开项目或解决方案。
- 通过
View -> Other Windows -> Claude Code打开面板,点击 "Launch Claude Code"(也可在 Tools 菜单中找到)。 - 终端将启动
claude并自动连接 IDE(无需手动输入/ide)。面板状态指示灯变为绿色表示“Connected”。 - 向 Claude 提出修改请求,其编辑将以 Diff 形式呈现,点击 Accept、Reject 或 Reject with feedback 即可。
6. 安全与隐私
- 本地通信:桥接仅绑定到
127.0.0.1,并在每次连接时验证来自锁文件的认证令牌。令牌不会被记录。 - 无外部调用:扩展本身不进行任何网络调用或 LLM 调用。所有 AI 工作均由
claudeCLI 在用户自己的认证下完成。 - 成本估算:Token 成本为基于固定层级价格的估算值,仅在点击 "Show est. cost" 时显示,不作为计费依据。
关键要点
- 社区驱动,非官方:该项目由 Rishi Gulati 开发,MIT 许可,与 Anthropic 无隶属关系。
- 仅支持 VS 2026:目前不支持 Visual Studio 2022,但若有需求计划后续支持。
- 依赖 CLI 版本:IDE 集成协议未公开文档化且版本脆弱,当前已知兼容版本为
claude 2.1.173。升级 CLI 后需运行冒烟测试。 - 诊断限制:获取编译器诊断信息需要加载完整的项目(而非“打开文件夹”模式下的松散文件),因为 Roslyn 编译器分析器需要项目上下文。
- Token 统计刷新机制:Token 统计仅在编辑发生时刷新(通过可靠的钩子触发),纯聊天轮次可能不会立即更新统计信息。
- 工作目录问题:新文件可能出现在错误文件夹,建议通过扩展启动(它会将工作目录固定到工作区)或在仓库内部运行
claude。 - 调试构建:开发者可通过
msbuild重建项目,并按 F5 在实验实例中调试。架构指南见CLAUDE.md,未来规划见ROADMAP.md。
意义与影响
1. 完善 AI 编程助手生态
Visual Studio 作为企业级开发的重要平台,此前在 AI 代码助手方面落后于 VS Code 和 JetBrains。该扩展通过协议桥接的方式,以较低成本实现了与 Claude Code 的深度集成,填补了微软旗舰 IDE 在这一领域的空白。
2. 提升开发者体验 (DX)
通过将 Diff 审批、上下文感知和诊断信息整合到 IDE 原生界面中,开发者无需在终端和编辑器之间频繁切换。特别是“原生 Diff 窗口”和“拒绝并反馈”功能,使得 AI 辅助编程更加可控和直观,减少了误操作风险。
3. 开源社区的协作力量
该项目展示了开源社区如何快速响应官方产品的不足。通过逆向工程或社区协作实现未文档化的集成协议,开发者能够迅速获得类似官方支持的功能,同时也为官方后续可能推出的原生支持提供了参考和压力测试。
4. 安全与透明的实践
项目强调“协议桥接”而非“重新实现代理”,确保了所有 AI 调用均在用户本地 CLI 控制下完成,扩展本身不收集数据或进行外部调用。这种设计在提升便利性的同时,最大限度地保障了用户的数据隐私和控制权。
5. 潜在挑战与未来展望
由于集成协议未公开文档化,该扩展的稳定性依赖于 Claude CLI 的版本兼容性。随着 Anthropic 可能推出官方支持的 Visual Studio 集成,此类社区项目可能需要调整策略。然而,其实现的技术细节(如 PreToolUse 钩子、WebSocket 桥接)为
