名称: ctx-loop 描述: “生成自主循环脚本。用于为项目设置无人值守迭代时使用。” 允许工具: Bash(ctx:*)
生成一个可直接使用的自主循环shell脚本。
生成前检查
- 检查现有循环脚本: 在项目根目录中查找
loop.sh;覆盖前请确认 - 验证PROMPT.md是否存在: 生成的脚本默认读取
PROMPT.md;如果缺失,询问用户使用哪个提示文件 - 验证
.context/是否存在: 循环模式依赖于持久化上下文;如果需要,请先运行ctx init
使用场景
- 为项目设置自主迭代时
- 当用户希望运行无人值守的AI开发时
- 切换AI工具(例如从Claude切换到Aider)并需要新的循环脚本时
- 自定义循环参数(最大迭代次数、完成信号、提示文件)时
不适用场景
- 交互式结对编程会话(直接使用AI工具即可)
- 用户已有可用的循环脚本且未要求更改时
- 项目缺少
.context/和PROMPT.md时(请先使用ctx init --ralph设置)
使用示例
/ctx-loop
/ctx-loop --tool aider
/ctx-loop --prompt TASKS.md --max-iterations 10
/ctx-loop --completion SYSTEM_BLOCKED --output my-loop.sh
参数标志
| 标志 | 简写 | 默认值 | 用途 |
|---|---|---|---|
--prompt |
-p |
PROMPT.md |
循环读取的提示文件 |
--tool |
-t |
claude |
AI工具: claude, aider, generic |
--max-iterations |
-n |
0 (无限制) |
N次迭代后停止 |
--completion |
-c |
SYSTEM_CONVERGED |
结束循环的信号 |
--output |
-o |
loop.sh |
输出脚本文件名 |
支持的工具
| 工具 | 生成的命令 |
|---|---|
claude |
claude --print "$(cat <prompt>)" |
aider |
aider --message-file <prompt> |
generic |
自定义AI CLI的模板存根 |
完成信号
循环监视AI输出中的这些信号:
| 信号 | 含义 |
|---|---|
SYSTEM_CONVERGED |
所有任务完成;循环退出 |
SYSTEM_BLOCKED |
需要人工输入;循环退出 |
BOOTSTRAP_COMPLETE |
初始脚手架完成;循环退出 |
执行
ctx loop $ARGUMENTS
该命令写入一个shell脚本(默认loop.sh)并使其可执行。报告生成的路径以及如何运行:
chmod +x loop.sh # ctx loop已自动完成
./loop.sh
安全注意事项
- 生成的脚本包含
set -e和每次迭代间1秒的睡眠,以防止失控循环 - 强烈建议首次运行时使用
--max-iterations;如果用户省略,建议合理的默认值(例如10) - 脚本使用
|| true捕获AI工具错误,因此一次失败的迭代不会终止整个循环 - 自主代理受益于PROMPT.md中的显式推理提示——在迭代提示中添加“每次更改前逐步思考”可显著提高准确性,并减少无人值守运行中的级联错误
质量检查清单
报告成功前,请验证:
- [ ] 生成的脚本存在于输出路径
- [ ] 脚本可执行
- [ ] 脚本中引用的提示文件实际存在
- [ ] 如果使用
--max-iterations 0,用户知道它将运行直到出现完成信号(警告他们)