Easy-Vibe高级开发篇阅读笔记(四)——CC教程之如何让 Claude Code 长时间工作
摘要 本文介绍了如何让Claude Code长时间高效工作,解决AI编程助手过早停止的问题。核心方法包括:理解AI"完成判断"的不可靠性,使用循环机制持续迭代任务。具体方案包括: 原始Bash循环:简单但缺乏完成判断,需手动终止。 Ralph Wiggum插件:官方推荐,通过Stop Hook检查完成标记(如<promise>COMPLETE</promise
一、本章核心学习目标
- 理解 AI 编程助手过早停止的核心原因,掌握长任务的迭代解决原理
- 学会使用 Ralph Wiggum 官方插件,实现自动化的长任务迭代
- 掌握长任务的 Prompt 编写技巧,定义明确可验证的完成标准
- 了解不同长任务方案的适用场景,学会根据任务选择合适的工具
- 掌握安全防护机制,防止无限循环和 API 成本失控
二、引言:为什么我们需要长任务?
传统的 AI 编程助手是 “对话式” 的 —— 你说一句,它回一句,然后停下了。但对于真正的开发任务来说,这种模式远远不够:
- 重构整个项目,写完几个文件就说 “我完成了”
- 持续修复 bug 直到测试全部通过,但它跑一次就停下来
- 想让 AI “过夜干活”,但第二天发现它早就停了
2025 年夏天,澳大利亚开发者 Geoffrey Huntley 写了一个 5 行的 bash 脚本,不断重启 Claude Code 并喂给它同样的任务,命名为 “Ralph Wiggum”。这个项目在 GitHub 两周内获得 7,000+ 星标,人们用它:
- 一晚上生成 6 个完整项目,$297 的 API 成本完成 $50,000 的合同
- 3 个月内构建了一门完整的编程语言
三、核心原理:为什么 AI 会 “过早停止”?
3.1 AI 的 “完成判断” 不可靠
LLM 有一个根本缺陷:它无法准确判断自己的工作是否真正完成。
- 人类的完成标准是客观的:所有测试通过、功能完整可用、代码质量达标
- AI 只能基于 “感觉” 来判断:觉得 “看起来差不多了”、“输出够多了” 就停下
3.2 解决方案的核心思想
解决方案的核心是:让 AI 在一个 “循环” 中工作。
每次它想退出时,外部系统会检查三个问题 —— 真的完成了吗?符合客观标准了吗?还有没有遗漏?如果没有,就重新注入任务,继续下一轮。
四、方法一:While True Bash Loop(最原始的方法)
这是最简单、最直接的实现方式,本质上就是写一个无限循环,每次循环都重新启动 Claude Code 并喂给它同样的任务描述。
4.1 最简实现
最简单的实现只需要 5 行代码:
#!/bin/bash
while true; do
cat PROMPT.md | claude
done
4.2 工作原理
-
读取 PROMPT.md 文件中的任务描述
-
启动 Claude Code 并将任务描述传递给它
-
Claude 开始工作并输出结果
-
Claude 完成后退出
-
循环自动重新启动,直到手动按 Ctrl+C 中断
4.3 优缺点
| 维度 | 说明 |
|---|---|
| 优点 | 极其简单,无需配置,立即可用,适合快速实验 |
| 缺点 | 无法判断任务是否真的完成,可能无限空转,没有安全保护 |
4.4 安全改进版
为了避免无限循环,可以添加迭代次数限制:
#!/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 # 稍作等待,避免 API 限流
done
五、方法二:Ralph Wiggum Plugin(官方推荐)
Ralph Wiggum 是 Anthropic 官方推出的插件,专门解决长时间任务问题,象征着 “尽管失败,仍坚持尝试” 的精神。
5.1 核心机制:Stop Hook
Ralph 的核心机制是 Stop Hook:
-
当 Claude 想要退出时,Stop Hook 会拦截这个退出信号
-
系统检查:输出了特定的完成标记吗?
-
如果没有找到完成标记,就重新注入原始 prompt,开始下一轮迭代
-
如果找到了完成标记,才允许 Claude 退出
5.2 安装方法
方式一:通过官方插件市场安装(推荐)
# 在 Claude Code 中运行
claude
# 添加官方插件市场
/plugin marketplace add anthropics/claude-code
# 安装 Ralph Wiggum
/plugin install ralph-wiggum@claude-code-plugins
# 验证安装
/plugin
方式二:直接从 GitHub 安装
# 进入插件目录
cd ~/.claude/plugins/
# 克隆插件仓库
git clone https://github.com/anthropics/ralph-wiggum-plugin.git
5.3 基本使用
基本使用方式是通过 /ralph-wiggum:ralph-loop 命令:
/ralph-wiggum:ralph-loop "构建一个待办事项 API,包含 CRUD 操作、输入验证、测试。
全部完成后输出 <promise>COMPLETE</promise>"
--max-iterations 50
--completion-promise "COMPLETE"
关键参数说明:
--max-iterations:最大迭代次数,安全机制,推荐 20-100 之间--completion-promise:完成标记文本,明确唯一的标识,比如COMPLETE
5.4 Prompt 编写最佳实践
不好的 Prompt 没有明确的完成标准,AI 可能写个基础框架就说完成了。好的 Prompt 应该:
-
分阶段描述任务,明确每一步要做什么
-
列出详细的验收标准,比如测试通过、类型检查通过
-
指定唯一的完成标记,让 Ralph 能判断任务结束
5.5 常用 Prompt 模板
模板 1:测试迁移(Jest → Vitest)
/ralph-wiggum:ralph-loop "
将项目中所有测试从 Jest 迁移到 Vitest:
- 保持所有测试逻辑不变
- 更新配置文件(vite.config.js、vitest.config.js)
- 替换 Jest 特有的 API(如 jest.mock → vi.mock)
- 确保所有测试通过
- 移除 Jest 相关依赖
验收标准:
- npm test 全部通过
- package.json 中无 jest 依赖
- 项目能正常构建
完成后输出:<promise>VITEST_MIGRATION_COMPLETE</promise>
" --max-iterations 40 --completion-promise "VITEST_MIGRATION_COMPLETE"
模板 2:UI/UX 优化(移动端优先)
/ralph-wiggum:ralph-loop "
把这个项目的 UI/UX 做得更像一款精致的、移动端优先的语言学习 App:
- 统一间距与留白(使用 4px 基础单位)
- 建立清晰的字体层级(标题/正文/辅助信息)
- 统一卡片、列表等组件样式
- 添加底部导航(Home/Learn/Quiz/Progress/Settings)
- 确保在移动设备上显示良好
验收标准:
- npm run build 成功
- 无 TypeScript 错误
- 主要页面在移动端预览正常
完成后输出:<promise>UI_UX_COMPLETE</promise>
" --max-iterations 25 --completion-promise "UI_UX_COMPLETE"
模板 3:批量添加 TypeScript 类型
/ralph-wiggum:ralph-loop "
给项目中所有函数添加 TypeScript 类型注解:
- 优先处理 src/ 目录
- 为函数参数和返回值添加类型
- 避免使用 any,使用具体类型或 unknown
- 添加必要的类型定义
验收标准:
- npm run typecheck 通过
- 无 @ts-ignore 或 @ts-any 注释
- 代码能正常运行
完成后输出:<promise>TYPES_ADDED</promise>
" --max-iterations 30 --completion-promise "TYPES_ADDED"
5.6 实战案例
- YC 黑客松案例:晚上 11 点设置任务,第二天醒来得到 6 个可演示项目,API 成本仅 $297
- Boris Cherny 案例:Claude Code 负责人用 Ralph 30 天提交 259 个 PR,新增 4 万行代码,全程无人工编码
- CURSED 编程语言:用 Ralph 在 3 个月内自主构建了一门完整的编程语言,包含 LLVM 编译器
- 遗留项目重构:周末运行 Ralph,周一回来项目完成 47 次提交,测试覆盖率达到 75%,成本约 $12
5.7 Ralph 的哲学
- 迭代大于完美:不要指望一次就完美,每次循环都比上一次更好
- 失败是数据:每次测试失败都是改进的机会,不要害怕失败
- 持续尝试:Keep trying until it works,这就是 Ralph 的精神
5.8 适用场景判断
✅ 适合使用 Ralph 的场景
| 场景 | 原因 |
|---|---|
| 测试迁移 | 有明确目标,测试通过即可验证 |
| 大规模重构 | 可以定义具体的重构规则 |
| 框架迁移 | 迁移完成后代码能正常运行 |
| 批量添加类型 | typecheck 通过即完成 |
| 测试覆盖率提升 | 覆盖率百分比是客观指标 |
| 文档生成 | API 文档可以自动验证 |
| Bug 修复(有复现步骤) | 测试通过即修复成功 |
❌ 不适合使用 Ralph 的场景
| 场景 | 原因 |
|---|---|
| 架构设计决策 | 微服务 vs 单体需要权衡 |
| 安全相关代码 | 安全漏洞可能很隐蔽 |
| 需求模糊的任务 | 没有明确完成标准 |
| 探索性工作 | 需要不断调整方向 |
| 创意性设计 | 需要人类审美判断 |
| 简单一次性任务 | 使用 Ralph 是浪费 |
判断标准:
-
我能定义明确的完成标准吗?
-
有客观的验证方法吗?(测试、构建、类型检查)
-
这个任务需要我持续反馈吗?
如果三个答案都是 “否”,那就放手让 Ralph 去做吧!
六、方法三:增强版 Ralph(社区优化)
这是社区对官方 Ralph 的增强实现,在 GitHub 上的 frankbria/ralph-claude-code 项目,增加了更多安全机制。
6.1 额外特性
- 双重退出条件:需要同时满足完成标记和显式 EXIT_SIGNAL 才会停止
- 速率限制功能:默认 100 次 / 小时,防止 API 账单爆炸
- 智能熔断器:连续 5 次检测到完成标记就强制退出
- 实时仪表盘:显示迭代次数、进度、预估成本
6.2 安装与使用
git clone https://github.com/frankbria/ralph-claude-code.git
cd ralph-claude-code
./install.sh
# 初始化项目
ralph-setup my-project
# 启动循环
ralph loop
6.3 配置文件
{
"maxIterations": 50,
"rateLimitPerHour": 100,
"completionPromise": "TASK_COMPLETE",
"exitSignal": "EXIT_NOW",
"costAlertThresholds": [10, 50, 100]
}
七、方法四:Agent Teams(多代理并行)
当任务足够大时,单个 Claude 不够用,需要 “团队协作”。
Agent Teams 允许多个 Claude 实例并行工作,通过共享任务列表协调依赖关系。这适合超大型项目,比如 Nicholas Carlini 的实验中,16 个并行 Agent 在 2 周内编写了 100,000+ 行代码,构建出一个能编译 Linux 内核的 C 编译器。
八、方法五:后台任务(Ctrl+B)
这是一个简单但实用的非阻塞执行方法,适合短时间的长任务。
8.1 基本操作
当 Claude 开始运行一个任务时,你可以按 Ctrl+B 把它推送到后台。比如:
-
你说:“运行完整测试套件”
-
Claude 开始运行
-
你按
Ctrl+B,Claude 会返回:“任务已推送到后台(ID: task_abc123)” -
然后你可以继续让 Claude 帮你分析日志,同时测试在后台运行
8.2 查看后台任务
- 使用
/tasks命令可以列出所有后台任务 - 按
Ctrl+T可以快速查看任务状态的摘要 - 可以把后台任务恢复到前台,查看实时输出
8.3 适用场景
- 长时间运行的测试
- 大型项目构建
- 批量文件处理
- 任何你不想等待的事情
九、安全机制:防止无限循环
任何自动循环系统都必须有安全保护,否则可能出现失控的情况。
9.1 硬性限制
最基本的保护是设置最大迭代次数,无论任务是否完成,达到这个次数后都会停止,防止无限循环消耗 API 额度。你还可以设置时间限制,比如最长运行 4 小时后自动停止。
9.2 智能检测
可以添加智能检测来发现死循环,比如检查最近几次提交有没有实质变化:
if [ $(git diff HEAD~5 | wc -l) -eq 0 ]; then
echo "最近 5 次提交没有实质变化,可能陷入循环"
exit 1
fi
9.3 成本预警
配置成本预警阈值,当花费达到一定金额时暂停并通知你:
{
"costAlertThresholds": [10, 50, 100],
"alertAction": "pause_and_notify"
}
十、本章总结
长任务技术让 Claude Code 从对话式助手,变成了可以 24 小时工作的数字员工:
-
核心原理:用外部循环解决 AI 完成判断不可靠的问题,让 AI 持续迭代直到任务真正完成
-
主流方案:从简单的 bash 循环,到官方的 Ralph 插件,再到社区增强版,满足不同需求
-
关键技巧:定义明确的完成标准、写好分阶段的 Prompt、设置安全防护机制
-
无限可能:你可以让 AI 过夜干活,周末自动重构,甚至用几个月时间构建复杂项目
掌握了长任务,你就能把 Claude Code 的能力发挥到极致,真正实现用自然语言完成从开发到重构、从测试到部署的全流程自动化。
更多推荐



所有评论(0)