ワンクリックで
autonomous-loops
自主 Claude Code 循环的模式和架构 —— 从简单的顺序管道到 RFC 驱动的多代理 DAG 系统。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
自主 Claude Code 循环的模式和架构 —— 从简单的顺序管道到 RFC 驱动的多代理 DAG 系统。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
设置并使用 1Password CLI (op)。在安装 CLI、启用桌面应用集成、登录(单个或多个帐户)或通过 op 读取/注入/运行密钥时使用。
停止等待提示词,让工作继续进行。
Agent 体验守护系统。解决AI助手常见体验问题 :长时间无响应、任务卡死、中英文混用、状态不透明。包含看门狗监控、智能状态汇报、即时状态查询、语言一致性过滤、消息队列追踪。适用于所有渠道 ( QQ微信//Telegram飞书//Discord等 )。当用户抱怨等太久没回复、 “回复中英文混着”、 “不知道在干什么”时使用此技能。
针对 AI 代理 (Agent) 失败的结构化自调试工作流,包括捕捉、诊断、受控恢复和内省报告。
AI 代理的记忆管理工具 - 列表显示、搜索查找、摘要生成及记忆文件维护。包含 AI 驱动的摘要功能。
Optimize multi-agent systems with coordinated profiling, workload distribution, and cost-aware orchestration. Use when improving agent performance, throughput, or reliability.
| name | autonomous-loops |
| description | 自主 Claude Code 循环的模式和架构 —— 从简单的顺序管道到 RFC 驱动的多代理 DAG 系统。 |
| origin | ECC |
兼容性说明 (v1.8.0):
autonomous-loops将保留一个版本。 规范技能名称现已改为continuous-agent-loop。新的循环指南 应在何处编写,而此技能仍可用,以避免破坏现有工作流。
用于在循环中自主运行 Claude Code 的模式、架构和参考实现。涵盖了从简单的 claude -p 管道到完整的 RFC 驱动的多代理 DAG 编排的所有内容。
从最简单到最复杂:
| 模式 | 复杂度 | 最适合 |
|---|---|---|
| 顺序管道 | 低 | 日常开发步骤、脚本化工作流 |
| NanoClaw REPL | 低 | 交互式持久会话 |
| 无限代理循环 | 中 | 并行内容生成、规范驱动型工作 |
| 持续 Claude PR 循环 | 中 | 带有 CI 门禁的多日迭代项目 |
| 去碎片化模式 (De-Sloppify) | 插件 | 任何实现者步骤后的质量清理 |
| Ralphinho / RFC 驱动的 DAG | 高 | 大型功能、带合并队列的多单元并行工作 |
claude -p)最简单的循环。 将日常开发分解为一系列非交互式的 claude -p 调用。每次调用都是一个重点明确、提示词清晰的步骤。
如果你无法搞定像这样的循环,那意味着你甚至无法驱动 LLM 在交互模式下修复你的代码。
claude -p 标志以非交互方式运行 Claude Code 并带有提示词,完成后退出。通过链接调用来构建管道:
#!/bin/bash
# daily-dev.sh — 功能分支的顺序管道
set -e
# 第 1 步:实现功能
claude -p "读取 docs/auth-spec.md 中的规范。在 src/auth/ 中实现 OAuth2 登录。先写测试 (TDD)。不要创建任何新的文档文件。"
# 第 2 步:去碎片化 (De-sloppify)(清理环节)
claude -p "审查上一次提交更改的所有文件。删除任何不必要的类型测试、过度防御性的检查或对语言特性的测试(例如,测试 TypeScript 泛型是否工作)。保留真实的业务逻辑测试。清理后运行测试套件。"
# 第 3 步:验证
claude -p "运行完整构建、代码检查、类型检查和测试套件。修复任何失败。不要添加新功能。"
# 第 4 步:提交
claude -p "为所有暂存的更改创建约定式提交。使用 'feat: add OAuth2 login flow' 作为消息。"
claude -p 调用都有一个新的上下文窗口,这意味着步骤之间没有上下文污染。set -e 会在失败时停止管道。带有模型路由:
# 使用 Opus 进行研究(深度推理)
claude -p --model opus "分析代码库架构并编写添加缓存的计划..."
# 使用 Sonnet 进行实现(快速且能力强)
claude -p "根据 docs/caching-plan.md 中的计划实现缓存层..."
# 使用 Opus 进行审查(彻底)
claude -p --model opus "审查所有更改的安全问题、竞态条件和边界情况..."
带有环境上下文:
# 通过文件传递上下文,而不是提示词长度
echo "重点领域:认证模块、API 速率限制" > .claude-context.md
claude -p "读取 .claude-context.md 获取优先级。按顺序处理它们。"
rm .claude-context.md
带有 --allowedTools 限制:
# 只读分析环节
claude -p --allowedTools "Read,Grep,Glob" "审计此代码库的安全漏洞..."
# 只写实现环节
claude -p --allowedTools "Read,Write,Edit,Bash" "实现 security-audit.md 中的修复..."
ECC 内置的持久循环。 一个具有会话感知能力的 REPL,它同步调用 claude -p 并带有完整的对话历史记录。
# 启动默认会话
node scripts/claw.js
# 带有技能上下文的命名会话
CLAW_SESSION=my-project CLAW_SKILLS=tdd-workflow,security-review node scripts/claw.js
~/.claude/claw/{session}.md 加载对话历史记录claude -p,并将完整历史记录作为上下文| 使用场景 | NanoClaw | 顺序管道 |
|---|---|---|
| 交互式探索 | 是 | 否 |
| 脚本化自动化 | 否 | 是 |
| 会话持久化 | 内置 | 手动 |
| 上下文累积 | 每一轮都会增长 | 每一步都是全新的 |
| CI/CD 集成 | 差 | 极佳 |
有关完整详细信息,请参阅 /claw 命令文档。
一个双提示词系统,用于编排并行子代理进行规范驱动的生成。由 disler 开发(致谢:@disler)。
提示词 1 (编排者) 提示词 2 (子代理)
┌─────────────────────┐ ┌──────────────────────┐
│ 解析规范文件 │ │ 接收完整上下文 │
│ 扫描输出目录 │ 部署 │ 读取分配的编号 │
│ 计划迭代 │────────────│ 严格遵循规范 │
│ 分配创意方向 │ N 个代理 │ 生成唯一输出 │
│ 管理波次 │ │ 保存到输出目录 │
└─────────────────────┘ └──────────────────────┘
创建 .claude/commands/infinite.md:
从 $ARGUMENTS 解析以下参数:
1. spec_file — 规范 markdown 的路径
2. output_dir — 迭代保存的位置
3. count — 整数 1-N 或 "infinite"
第 1 阶段:读取并深入理解规范。
第 2 阶段:列出 output_dir,查找最高的迭代编号。从 N+1 开始。
第 3 阶段:计划创意方向 — 每个代理获得不同的主题/方法。
第 4 阶段:并行部署子代理 (Task 工具)。每个代理接收:
- 完整规范文本
- 当前目录快照
- 他们分配的迭代编号
- 他们唯一的创意方向
第 5 阶段 (无限模式):以 3-5 个为一波循环,直到上下文变低。
调用:
/project:infinite specs/component-spec.md src/ 5
/project:infinite specs/component-spec.md src/ infinite
| 计数 | 策略 |
|---|---|
| 1-5 | 所有代理同时运行 |
| 6-20 | 每 5 个一组 |
| infinite | 3-5 个为一波,逐步精细化 |
不要指望代理会自动区分。编排者为每个代理分配特定的创意方向和迭代编号。这可以防止并行代理之间出现重复的概念。
一个生产级 shell 脚本,它循环运行 Claude Code,创建 PR、等待 CI 并自动合并。由 AnandChowdhary 创建(致谢:@AnandChowdhary)。
┌─────────────────────────────────────────────────────┐
│ 持续 CLAUDE 迭代 │
│ │
│ 1. 创建分支 (continuous-claude/iteration-N) │
│ 2. 运行带有增强提示词的 claude -p │
│ 3. (可选) 审查者环节 — 独立的 claude -p │
│ 4. 提交更改 (Claude 生成消息) │
│ 5. 推送 + 创建 PR (gh pr create) │
│ 6. 等待 CI 检查 (轮询 gh pr checks) │
│ 7. CI 失败? → 自动修复环节 (claude -p) │
│ 8. 合并 PR (squash/merge/rebase) │
│ 9. 返回 main → 重复 │
│ │
│ 限制:--max-runs N | --max-cost $X │
│ --max-duration 2h | 完成信号 │
└─────────────────────────────────────────────────────┘
警告: 在审查代码后从其仓库安装 continuous-claude。不要直接将外部脚本通过管道传输到 bash。
# 基础:10 次迭代
continuous-claude --prompt "为所有未测试的函数添加单元测试" --max-runs 10
# 成本限制
continuous-claude --prompt "修复所有 linter 错误" --max-cost 5.00
# 时间限制
continuous-claude --prompt "提高测试覆盖率" --max-duration 8h
# 带有代码审查环节
continuous-claude \
--prompt "添加身份认证功能" \
--max-runs 10 \
--review-prompt "运行 npm test && npm run lint,修复任何失败"
# 通过 worktree 并行运行
continuous-claude --prompt "添加测试" --max-runs 5 --worktree tests-worker &
continuous-claude --prompt "重构代码" --max-runs 5 --worktree refactor-worker &
wait
关键创新:一个跨迭代持久存在的 SHARED_TASK_NOTES.md 文件:
## 进度
- [x] 为认证模块添加了测试(第 1 次迭代)
- [x] 修复了令牌刷新中的边缘情况(第 2 次迭代)
- [ ] 仍然需要:速率限制测试、错误边界测试
## 下一步
- 下一步专注于速率限制模块
- tests/helpers.ts 中的模拟设置可以重复使用
Claude 在迭代开始时读取此文件,并在迭代结束时更新它。这弥补了独立 claude -p 调用之间的上下文差距。
当 PR 检查失败时,Continuous Claude 会自动:
gh run list 获取失败的运行 IDclaude -pgh run view 检查日志,修复代码,提交并推送--ci-retry-max 次)Claude 可以通过输出一个魔术短语来发出“我完成了”的信号:
continuous-claude \
--prompt "修复问题跟踪器中的所有 bug" \
--completion-signal "CONTINUOUS_CLAUDE_PROJECT_COMPLETE" \
--completion-threshold 3 # 在连续 3 次信号后停止
连续三次迭代发出完成信号将停止循环,防止在完成的工作上浪费运行次数。
| 标志 | 用途 |
|---|---|
--max-runs N | 在 N 次成功迭代后停止 |
--max-cost $X | 在花费 $X 后停止 |
--max-duration 2h | 在时间耗尽后停止 |
--merge-strategy squash | squash, merge, 或 rebase |
--worktree <name> | 通过 git worktree 并行执行 |
--disable-commits | 空运行模式(不进行 git 操作) |
--review-prompt "..." | 每次迭代添加审查者环节 |
--ci-retry-max N | 自动修复 CI 失败(默认:1) |
适用于任何循环的插件模式。 在每个实现者步骤之后添加一个专门的清理/重构步骤。
当你要求 LLM 通过 TDD 实现功能时,它对“编写测试”的理解过于字面:
typeof x === 'string')在实现者提示词中添加“不要测试类型系统”或“不要添加不必要的检查”会产生下游效应:
与其限制实现者,不如让它彻底。然后添加一个专注的清理代理:
# 第 1 步:实现(让它彻底)
claude -p "通过完整的 TDD 实现功能。在测试方面要彻底。"
# 第 2 步:去碎片化 (De-sloppify)(独立上下文,专注清理)
claude -p "审查工作树中的所有更改。删除:
- 验证语言/框架行为而非业务逻辑的测试
- 类型系统已经强制执行的冗余类型检查
- 对不可能状态的过度防御性错误处理
- Console.log 语句
- 被注释掉的代码
保留所有业务逻辑测试。清理后运行测试套件以确保没有任何损坏。"
for feature in "${features[@]}"; do
# 实现
claude -p "通过 TDD 实现 $feature。"
# 去碎片化
claude -p "清理环节:审查更改,删除测试/代码碎片,运行测试。"
# 验证
claude -p "运行构建 + lint + 测试。修复任何失败。"
# 提交
claude -p "提交,消息为:feat: add $feature"
done
与其添加具有下游质量影响的否定指令,不如添加一个单独的去碎片化环节。两个专一的代理胜过一个受限的代理。
最复杂的模式。 一个由 RFC 驱动的多代理管道,它将规范分解为依赖 DAG,通过分级质量管道运行每个单元,并通过代理驱动的合并队列将其落地。由 enitrat 创建(致谢:@enitrat)。
RFC/PRD 文档
│
▼
分解 (AI)
将 RFC 分解为具有依赖 DAG 的工作单元
│
▼
┌──────────────────────────────────────────────────────┐
│ RALPH 循环 (最多 3 个环节) │
│ │
│ 对于每个 DAG 层(按依赖关系顺序): │
│ │
│ ┌── 质量管道 (每个单元并行) ─────────────────────┐ │
│ │ 每个单元在自己的 worktree 中: │ │
│ │ 研究 → 计划 → 实现 → 测试 → 审查 │ │
│ │ (深度因复杂度层级而异) │ │
│ └────────────────────────────────────────────────┘ │
│ │
│ ┌── 合并队列 ────────────────────────────────────┐ │
│ │ 变基到 main → 运行测试 → 落地或剔除 │ │
│ │ 被剔除的单元带着冲突上下文重新进入 │ │
│ └────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────┘
AI 读取 RFC 并生成工作单元:
interface WorkUnit {
id: string; // kebab-case 标识符
name: string; // 人类可读的名称
rfcSections: string[]; // 涉及哪些 RFC 章节
description: string; // 详细描述
deps: string[]; // 依赖项(其他单元 ID)
acceptance: string[]; // 具体的验收标准
tier: "trivial" | "small" | "medium" | "large";
}
分解规则:
依赖 DAG 决定执行顺序:
第 0 层: [unit-a, unit-b] ← 无依赖,并行运行
第 1 层: [unit-c] ← 依赖于 unit-a
第 2 层: [unit-d, unit-e] ← 依赖于 unit-c
不同的层级获得不同的管道深度:
| 层级 | 管道阶段 |
|---|---|
| trivial (琐碎) | 实现 → 测试 |
| small (小) | 实现 → 测试 → 代码审查 |
| medium (中) | 研究 → 计划 → 实现 → 测试 → PRD 审查 + 代码审查 → 审查修复 |
| large (大) | 研究 → 计划 → 实现 → 测试 → PRD 审查 + 代码审查 → 审查修复 → 最终审查 |
这可以防止在简单的更改上进行昂贵的操作,同时确保架构更改得到彻底的审查。
每个阶段都在自己的代理进程中运行,并具有自己的上下文窗口:
| 阶段 | 模型 | 用途 |
|---|---|---|
| 研究 | Sonnet | 读取代码库 + RFC,生成上下文文档 |
| 计划 | Opus | 设计实现步骤 |
| 实现 | Codex | 按照计划编写代码 |
| 测试 | Sonnet | 运行构建 + 测试套件 |
| PRD 审查 | Sonnet | 规范合规性检查 |
| 代码审查 | Opus | 质量 + 安全检查 |
| 审查修复 | Codex | 处理审查发现的问题 |
| 最终审查 | Opus | 质量门禁(仅限 large 层级) |
关键设计: 审查者永远不会审查它自己编写的代码。这消除了作者偏见 —— 这是自我审查中最常见的遗漏源。
在质量管道完成后,单元进入合并队列:
单元分支
│
├─ 变基到 main
│ └─ 冲突? → 剔除 (EVICT)(捕获冲突上下文)
│
├─ 运行构建 + 测试
│ └─ 失败? → 剔除 (EVICT)(捕获测试输出)
│
└─ 通过 → 快速合并到 main,推送,删除分支
当被剔除时,会捕获完整的上下文(冲突文件、差异、测试输出),并在下一次 Ralph 环节中反馈给实现者:
## 合并冲突 — 在下一次落地前解决
你之前的实现与另一个先落地的单元发生了冲突。
请重组你的更改,以避开下面冲突的文件/行。
{带有差异的完整剔除上下文}
research.contextFilePath ──────────────────→ 计划 (plan)
plan.implementationSteps ──────────────────→ 实现 (implement)
implement.{filesCreated, whatWasDone} ─────→ 测试 (test), 审查 (reviews)
test.failingSummary ───────────────────────→ 审查 (reviews), 实现 (implement) (下一轮)
reviews.{feedback, issues} ────────────────→ 审查修复 (review-fix) → 实现 (implement) (下一轮)
final-review.reasoning ────────────────────→ 实现 (implement) (下一轮)
evictionContext ───────────────────────────→ 实现 (implement) (合并冲突后)
每个单元都在隔离的 worktree 中运行(使用 jj/Jujutsu,而不是 git):
/tmp/workflow-wt-{unit-id}/
同一单元的管道阶段共享一个 worktree,在研究 → 计划 → 实现 → 测试 → 审查的过程中保留状态(上下文文件、计划文件、代码更改)。
| 信号 | 使用 Ralphinho | 使用更简单的模式 |
|---|---|---|
| 多个相互依赖的工作单元 | 是 | 否 |
| 需要并行实现 | 是 | 否 |
| 合并冲突可能性大 | 是 | 否 (顺序执行即可) |
| 单文件更改 | 否 | 是 (顺序管道) |
| 多日项目 | 是 | 也许 (continuous-claude) |
| 规范/RFC 已编写 | 是 | 也许 |
| 在一件事上快速迭代 | 否 | 是 (NanoClaw 或管道) |
任务是单一、专注的更改吗?
├─ 是 → 顺序管道或 NanoClaw
└─ 否 → 是否有书面规范/RFC?
├─ 是 → 是否需要并行实现?
│ ├─ 是 → Ralphinho (DAG 编排)
│ └─ 否 → Continuous Claude (迭代 PR 循环)
└─ 否 → 是否需要同一事物的许多变体?
├─ 是 → 无限代理循环 (规范驱动型生成)
└─ 否 → 带有去碎片化的顺序管道
这些模式可以很好地组合:
顺序管道 + 去碎片化 — 最常见的组合。每个实现步骤都有一个清理环节。
Continuous Claude + 去碎片化 — 在每次迭代中添加带有去碎片化指令的 --review-prompt。
任何循环 + 验证 — 使用 ECC 的 /verify 命令或 verification-loop 技能作为提交前的门禁。
简单循环中的 Ralphinho 分级方法 — 即使在顺序管道中,你也可以将简单的任务路由到 Haiku,将复杂的任务路由到 Opus:
# 简单的格式修复
claude -p --model haiku "修复 src/utils.ts 中的导入排序"
# 复杂的架构更改
claude -p --model opus "将认证模块重构为使用策略模式"
没有退出条件的死循环 — 始终设定 max-runs、max-cost、max-duration 或完成信号。
迭代之间没有上下文桥梁 — 每次 claude -p 调用都是全新的。使用 SHARED_TASK_NOTES.md 或文件系统状态来桥接上下文。
重试同样的失败 — 如果一次迭代失败,不要只是重试。捕获错误上下文并将其反馈给下一次尝试。
使用否定指令而非清理环节 — 不要说“不要做 X”。添加一个专门删除 X 的环节。
所有代理共用一个上下文窗口 — 对于复杂的工作流,将关注点分离到不同的代理进程中。审查者永远不应该是作者。
在并行工作中忽略文件重叠 — 如果两个并行代理可能会编辑同一个文件,你需要一个合并策略(顺序落地、变基或冲突解决)。
| 项目 | 作者 | 链接 |
|---|---|---|
| Ralphinho | enitrat | 致谢: @enitrat |
| Infinite Agentic Loop | disler | 致谢: @disler |
| Continuous Claude | AnandChowdhary | 致谢: @AnandChowdhary |
| NanoClaw | ECC | 本仓库中的 /claw 命令 |
| 验证循环 (Verification Loop) | ECC | 本仓库中的 skills/verification-loop/ |