12. 调试与排错
调试的原则
来自 superpowers:systematic-debugging Skill 的核心思想:
先找根因,再动手修。 不理解为什么出错就改代码,等于在随机游走。
Claude Code 常见问题分类
1. 安装/环境问题
症状:claude: command not found
排查步骤:
- 确认
~/.npm-global/bin或~/.local/bin在 PATHecho $PATH | tr ':' '\n' | grep -E '(npm|local)/bin' - macOS 用
~/.zshrc,Linux 用~/.bashrc,加入:export PATH="$HOME/.local/bin:$PATH" - 重启终端
症状:中文乱码
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
症状:API Key 无效
- 检查 Key 前后没有多余空格
- 确认账号余额
- 看
~/.claude/logs/下日志
2. 工具调用问题
Claude 不读某个文件
> 请用 Read 工具读 ./src/main.py
显式指明工具,别假设它会自动用。
Claude 改了不该改的文件
在 CLAUDE.md 里明确:
# 项目约束
- 不要修改 docs/ 目录
- 不要修改 tests/ 目录
- 改完后必须跑 npm test
或者在对话中说:
> 只改 src/ 目录,其他目录都不要碰
命令执行失败
Claude 会把错误贴出来。常见原因:
- 缺依赖 → 让它跑
npm install/pip install - 权限不足 → 用 sudo 或换用户
- 网络问题 → 配置代理
3. Skill 相关问题
Skill 没自动触发
排查:
- description 写得够具体吗?(用关键词,不要泛泛)
- 用户的提问里有触发关键词吗?
- 重启 Claude Code——新加的 Skill 需重启生效
Skill 触发错了
description 太宽泛,会被误触发。改窄:
# 之前(太宽)
description: Helps with Python
# 之后(更准)
description: Use when refactoring legacy Python 2 code to Python 3 - applies 2to3 patterns and identifies print statements, xrange, and unicode literals
4. MCP 相关问题
MCP Server 启动失败
# 手动跑一遍,看错误
npx -y @modelcontextprotocol/server-postgres "postgresql://..."
常见原因:
- 包没装 →
npm install -g - 路径不对 → 检查
.mcp.json的 command 和 args - Token 无效 → 检查 env
Claude 看不到 MCP 工具
- 配置文件位置对吗?(用户级
~/.claude/mcp.json或项目级.mcp.json) - 重启 Claude Code
- 用
/mcp命令查看当前已加载的 MCP Server
5. Workflow 相关问题
Agent 输出不符合 Schema
不要让它自动重试。先看原始输出哪里不对:
const raw = await agent(...)
console.log('RAW:', raw)
调整方法:
- Schema 太严格 → 放宽
- Prompt 不清楚 → 加示例
- 输出格式描述缺失 → 在 prompt 里给示例
Workflow 跑一半卡住
排查:
- 看
log()输出,卡在哪一阶段 - 单独跑那个阶段的 agent,看输出
- 检查是不是网络/token 问题
Token 暴增
- 检查有没有把大文件全文塞给 Agent
- 用
/compact压缩 - 拆分任务
调试工作流
步骤 1:复现
写一个最小的复现 case。能不能用 1 行命令触发?
步骤 2:定位
- 哪一步开始出错?
- 是工具调用失败,还是 AI 决策出错?
- 输入是什么?输出是什么?
步骤 3:假设 + 验证
不要瞎猜。列出可能原因,逐个排除。
步骤 4:修
修的时候只改一处。改完跑测试。
步骤 5:防回归
加个测试,或者写进 CLAUDE.md,防止以后再犯。
调试时的 prompt 技巧
让它自我诊断
这个命令失败了,列出 3 个最可能的原因,以及如何验证。
让它读错误信息
仔细读错误堆栈,告诉我错误是从哪一行抛出来的、根本原因是什么。
让它做对照实验
把这个变量从 A 改成 B,跑一遍,把两次输出对比给我。
何时升级求助
- 重装 Claude Code 仍然同样的问题
- 怀疑是 API 服务本身的问题
- 涉及数据丢失风险
去官方 Discord / GitHub Issues / 文档查。
给教师的实用建议
- 教学场景慎用
bypassPermissions——学生用可能误删文件 - 配置 Git 自动 commit——Claude 改完自动提交,出问题能回滚
- 重要操作前备份——尤其在帮学生改项目代码时
- 保留日志——
~/.claude/logs/可能有用
下一步
- 想看实际教学场景应用 → 04. 教学场景实战