让AI一直干活别停
原文来自 Datawhale 的 Easy-Vibe 教程:如何让 Claude Code 长长时间工作 之前一直在用 Claude Code 写代码,但有一个很烦的问题——它干着干着就停了。你让它重构一个模块,它改了两个文件就跟你说"搞定了",其实还有一堆没改。或者你让它跑测试,跑到一半报错了,它就卡在那里不动了,也不说重试一下。 总之,最近看到了 Datawhale 的 vibe coding 教程里有一节专门讲这个,讲得挺系统的,我这里也记录一下大概,顺便加点自己的理解。 核心问题:AI 不知道自己没干完 这个其实是所有 AI 编程工具的通病。人判断"干完了没"靠的是客观标准——测试跑通了没、功能能用不、代码质量行不行。但 AI 靠的是"感觉"——它觉得自己输出的差不多了,就停下来了。 所以解决方案的核心思路就是:别让 AI 自己判断什么时候停,让外部系统来检查。 具体来说就是三个问题: 真的完成了吗? 满足客观验收标准吗? 有没有漏掉什么? 如果答案都是"没有",就把任务重新丢给它,继续干。 方法一:While True 循环(最朴素) 五行代码搞定: 1 2 3 4 #!/bin/bash while true; do cat PROMPT.md | claude done 逻辑很简单——从 PROMPT.md 读任务,丢给 Claude,Claude 干完了退出,循环又把它拉起来继续干。Ctrl+C 手动停。 可以,简单粗暴。但问题也很明显——它不知道啥时候该停,你忘了关它就一直循环,API 账单蹭蹭涨。 加个安全版本的话,限制最大迭代次数就行: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/bin/bash MAX_ITERATIONS=50 iteration=0 while true; do iteration=$((iteration + 1)) echo "=== 迭代 $iteration/$MAX_ITERATIONS ===" cat PROMPT.md | claude if [ $iteration -ge $MAX_ITERATIONS ]; then echo "达到最大迭代次数,停止" break fi sleep 5 done 方法二:Ralph Wiggum 插件(推荐) 这个是正经方案。Ralph Wiggum 是 Anthropic 官方的插件,核心机制叫 Stop Hook——Claude 想退出的时候,Hook 会拦截,检查输出里有没有你设定的完成标记。没有就重新注入任务让它继续干,有了才放它走。 ...