ClaudeCode launch.json 作用是什么?
.vscode/launch.json 不是 Claude Code 的配置文件,但它是 Claude Code 获得调试能力的"基础设施"——MCP 调试服务器通过它让 AI 学会打断点、查变量、单步执行。
- launch.json 的归属:它是 VS Code 调试器的配置,定义"怎么启动调试器"——用 Node 还是 Python、传什么参数、设什么环境变量 。
- Claude Code 怎么调试:通过 MCP 服务器(如 Claude Debugs For You)桥接——Claude 发指令 → MCP 翻译 → 调 VS Code Debugger API → 读 launch.json → 启动调试。
- Claude Code 自己的"launch config":不在
.vscode/,在.claude/settings.json(权限和钩子)+CLAUDE.md(项目指令)+.mcp.json(工具集成)——它定义的是"AI 怎么跑",不是"程序怎么跑"。 - 核心区别:launch.json 回答"程序从哪里启动、参数是什么";Claude Code 配置回答"AI 能改哪些文件、能用什么工具、每一步要遵循什么流程"。
- 一句话记住: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 调试就是三步:
- 装 VS Code 扩展:在 VS Code 市场搜 "Claude Debugs For You" 或 "Debugger MCP",安装
- 注册 MCP 服务器:扩展安装后会给出 stdio 路径,复制到
.mcp.json或~/.claude.json - 重启 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.json | MCP 服务器注册 | AI 的插件清单 |
.vscode/launch.json | VS Code 调试器配置 | 程序的 launch.json |
settings.json 的 permissions 块是 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
- Claude Debugs For You —— jasonjmcghee, MCP 调试服务器
- Debugger MCP —— VS Code Marketplace
- Claude Code settings —— 官方配置文档