Claude Code 打了 5 步任务的 1、2、3 步——然后没了。没报错、没”我做完了”、就一个闪烁光标。等 60 秒,再等一分钟,还是没动静。活儿没完,agent 没说为什么停,重 prompt 它走到第 4 步又卡在第 5 步。
「部分执行后卡死」有三种不同形态、不同修法:context 耗尽(agent 静默截断)、工具挂(Bash / Test 调用没回)、静默 abort(agent 以为完了但其实没)。不要硬撑 stuck session——分清哪种、存状态、从 STATUS.md 重启。
常见原因
按命中率从高到低:
1. context 接近满,agent 静默摘要丢了 plan
agent 的 plan 在它 context 里。context 满时 auto-summary 把 plan 压掉了——agent 做完它”记得”的,因为压缩后的视角里任务已经完了,所以不出输出。
如何判断:卡之前 session 很长 + 工具调用多。restart + 全 context 后同 prompt 能完成——就是 context 不是任务的问题。
2. 工具调用挂了,agent 等不存在的 callback
pnpm test 启动了但永远不返回(测试 setup 死循环、卡住的 dev server)——Claude 的工具层阻塞等,没输出到你这里。
如何判断:看进程 ps aux | grep -E "node|python|pnpm"——活着但不干活(无 CPU、无输出)——kill 掉 agent 往往就继续。
3. 流式连接静默断了
WiFi 抖动、VPN 重连、笔记本休眠——server 的流式响应断了。Claude 后台还在跑但你看不到输出。
如何判断:网络条件不好。试 /resume(如果客户端支持),或 restart——工作通常从 server 侧状态继续。
4. Agent 的 plan 自然结束,但实际没完
agent 内部 3 步 plan,你要 5 步。第 3 步后它认为完了就不输出。Plan 和现实分叉。
如何判断:问「你完成 task 了吗?列出剩余步骤」。它说”是”但你看到没完成——它的 plan 比你的小。
5. 输出被截断,结尾「完成」消息丢了
某个流上限剪掉了 Claude 的最终总结。代码应用了,你没看到收尾。agent 真完了,你不知道。
如何判断:git status + git diff 显示活儿确实完了——卡死是表现问题不是实际问题。
6. 长思考 vs 真挂——重启前先分清
某些思考步骤 30+ 秒不出输出。过早 restart 就浪费在跑的活儿。
如何判断:没输出等 60 秒再判 stuck。客户端显示”thinking”指示——模型还在跑。
最短修复路径
按收益从高到低。Step 1 诊断形态,对应修法就出来了。
Step 1:等 60 秒 + 诊断
1. 没输出等 60 秒(怕是长推理步骤)。
2. 跑 `git status` 和 `git diff`——活儿**真的**没完吗?
3. 看进程:`ps aux | grep -E "node|python|pnpm|vitest"` 有没有挂的?
4. 看 top / 活动监视器——有什么在烧 CPU 吗?
diff 显示没完 + 进程空闲 + 60 秒以上无输出——真卡了。
Step 2:重启前存状态
# 快速 checkpoint commit
git add -A && git commit -m "wip: stuck during step N"
# 写本来下一步该做什么
cat > STATUS.md <<EOF
任务:<一句话>
已完成:步骤 1-3(改了文件 A、B、C)
还需要:步骤 4-5(要改 D、E)
最后可见动作:<Claude 在做什么>
EOF
这是 resume 点——盲重启比写这两分钟成本高。
Step 3:必要时 kill 挂的进程
# 找挂的工具进程
ps aux | grep -E "node|python|pnpm|vitest" | grep -v grep
# kill 孤儿(替换 PID)
kill -9 <PID>
# 凶猛清理
pkill -9 -f vitest
pkill -9 -f "pnpm test"
kill 挂工具后 session 解锁——你找到了原因,记录这工具未来不要在同 session 组合用。
Step 4:用 STATUS.md 作 handoff 重启
新 session:
读 STATUS.md,接着任务做。
对照 `git log` 确认哪些已 commit。
不要重做已完成的,从 "remaining" 开始。
新 session 对 snapshot 是全 context——无衰减风险。
Step 5:同一步反复卡就拆它
某步反复 stall 说明它太大或有问题子任务,拆:
原 step 5:「更新所有 consumer 并跑集成测试」
拆成:
5a:更新 src/api/users.ts。停。
5b:更新 src/api/orgs.ts。停。
5c:跑 `pnpm test src/api/users.test.ts`。停。
5d:跑 `pnpm test src/api/orgs.test.ts`。停。
每子步小到不触发那个失败模式。
Step 6:工具挂就你自己先跑
pnpm test 在 Claude 那里一直挂——你自己在另一个终端跑一次。跑通后告诉 Claude 跳过这一步用你给的结果:
我自己跑了 `pnpm test`,输出如下。
用这份输出,不要自己跑测试命令。
[贴]
不可靠工具的绕道方案,不用放弃 agent。
预防建议
- 每个大步后让 Claude 写 STATUS——三种 stuck 形态都能存活
- 任务卡在 1 小时内 agent 时间——小 checkpoint 更耐操
- 在稳定网络跑;移动热点是流式连接的隐形杀手
- 别在同 session 组合多个长跑工具——测试和 edit 分开
- 熟悉每个工具的典型时长,分清慢和挂
- 反复挂的工具就你自己跑,把结果喂给 Claude
相关阅读
- Claude Code 卡在循环里
- Claude Code 因额度耗尽中途停下
- Claude Code 中途丢了项目上下文
- Claude Code 新手入门
- Claude Code 工作流
- Claude Code 项目配置
标签: #排查 #Claude Code #排查 #部分执行