Skip to main content

ClaudeCode launch.json 作用是什么?

· 5 min read

.vscode/launch.json 不是 Claude Code 的配置文件,但它是 Claude Code 获得调试能力的"基础设施"——MCP 调试服务器通过它让 AI 学会打断点、查变量、单步执行。

  1. launch.json 的归属:它是 VS Code 调试器的配置,定义"怎么启动调试器"——用 Node 还是 Python、传什么参数、设什么环境变量。
  2. Claude Code 怎么调试:通过 MCP 服务器(如 Claude Debugs For You)桥接——Claude 发指令 → MCP 翻译 → 调 VS Code Debugger API → 读 launch.json → 启动调试。
  3. Claude Code 自己的"launch config":不在 .vscode/,在 .claude/settings.json(权限和钩子)+ CLAUDE.md(项目指令)+ .mcp.json(工具集成)——它定义的是"AI 怎么跑",不是"程序怎么跑"。
  4. 核心区别:launch.json 回答"程序从哪里启动、参数是什么";Claude Code 配置回答"AI 能改哪些文件、能用什么工具、每一步要遵循什么流程"。
  5. 一句话记住launch.json 是程序的入口,Claude Code 配置是 AI 的入口——两件事别搞混

launch.json 到底是谁的?

先说结论:launch.json 是 VS Code 的,不是 Claude Code 的。

你项目里那个 .vscode/launch.json 是 VS Code 调试器读的。它告诉 VS Code:用什么运行时启动你的程序、传什么命令行参数、环境变量怎么设、断点打在哪个文件。每个用过 VS Code 调试的人应该见过这东西。

{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug Server",
"program": "${workspaceFolder}/src/index.ts",
"env": { "NODE_ENV": "development" }
}
]
}

把它删了,Claude Code 照常工作。Claude 写代码不依赖 launch.json——它依赖的是 .claude/ 目录下的 settings.json、CLAUDE.md 和 MCP 服务器配置。

但反过来,如果你想让 Claude Code 帮你调试——launch.json 就是基础设施了。

从"读 launch.json"到"帮我 debug"

问题出在这里:Claude Code 没有原生的调试能力。它不能自己在你的机器上起一个 Node 进程,然后挂断点、单步执行、查看变量——这些是 VS Code Debugger 的活。

要让 Claude Code 获得调试能力,需要一个中间人。这个中间人就是 MCP 调试服务器。

目前有两个主要的:

  • Claude Debugs For You:MCP Server + VS Code 扩展,语言无关,依赖 .vscode/launch.json 的第一条配置来启动调试
  • Debugger MCP:更新一些,22 个 MCP 工具覆盖完整的调试生命周期

交互链路是这样的:

Claude 说"帮我在第 42 行打个断点",MCP 服务器把这个指令翻译成 VS Code 的 Debug Adapter Protocol 调用,VS Code 再实际操纵调试器。整个链条里,launch.json 的角色是最后一步的启动参数源——没有它,VS Code 不知道程序怎么启动。

实操:三步

如果你的项目已经有 .vscode/launch.json(第一条配置支持 ${file} 即可),配通 Claude Code 调试就是三步:

  1. 装 VS Code 扩展:在 VS Code 市场搜 "Claude Debugs For You" 或 "Debugger MCP",安装
  2. 注册 MCP 服务器:扩展安装后会给出 stdio 路径,复制到 .mcp.json~/.claude.json
  3. 重启 Claude Code/mcp 看 debug 服务器已连接,然后直接说话:"帮我在 src/handler.ts 第 30 行打断点,看看 req.body 是什么"

说白了,launch.json 里的配置越完整,Claude Code 的调试能力越强。如果你 launch.json 里只配了一个 Node 配置,那 Claude 只能调试 Node 程序;如果还配了 Chrome、Python、Go,Claude 就能帮你调试这些。

Claude Code 自己的"launch config"在哪?

搞清楚 launch.json 不是 Claude Code 的配置之后,再看 Claude Code 自己怎么"启动":

文件作用类比
.claude/settings.json权限白名单、环境变量、钩子脚本AI 的 launch.json
CLAUDE.md项目规范、架构约定、禁止事项AI 的系统 prompt
.mcp.jsonMCP 服务器注册AI 的插件清单
.vscode/launch.jsonVS Code 调试器配置程序的 launch.json

settings.jsonpermissions 块是 Claude Code 最接近"launch config"的东西——它决定了 AI 能跑什么命令、能读什么文件、能调用什么工具:

{
"permissions": {
"allow": ["Bash(npm run *)", "Bash(git *)", "Read", "Write"],
"deny": ["Bash(rm -rf *)", "Read(.env)"]
},
"hooks": {
"PreToolUse": [
{ "matcher": "Bash(git push *)", "hooks": [{ "command": "npm test" }] }
]
}
}

launch.json 定义程序的启动参数,settings.json 定义 AI 的操作边界——两件事,别搞混

理解这一层的人,就不会到处问"Claude Code 的 launch.json 在哪"——答案是没有,也不需要。程序的启动归 launch.json 管,AI 的行为归 .claude/ 管,通过 MCP 桥接在一起。

References

  1. Claude Debugs For You —— jasonjmcghee, MCP 调试服务器
  2. Debugger MCP —— VS Code Marketplace
  3. Claude Code settings —— 官方配置文档