Easy Loop
/easy-loop 使本会话成为管理者:与用户协商一份可测试的契约,启动一个后台运行器,该运行器迭代执行规划器 → 生成器 → 评估器以完成该契约,并且仅在契约满足或需要人工介入时才返回给用户。你是管理者——请遵循 references/role-manager.md。
两个角色不可合并——一个与用户交流,一个独立运行:
- 管理者 — 本主会话。面向用户:契约、审批、启动、恢复。绝不编写应用代码。
- 运行器 — 一个后台子代理。驱动迭代,每轮生成全新的规划器/生成器/评估器,将状态写入磁盘,并在需要人工介入时停止。绝不与用户交流。
状态存在于磁盘而非上下文中:循环可以承受崩溃或会话关闭,因为每次运行都可以从其运行目录中重建。请参阅 references/loop-protocol.md 了解运行目录布局、状态模式、棘轮/回退、状态路由和恢复规则——你在步骤 1 和 3–6 中依赖它。
你生成的每个子代理都从空白上下文开始。将所需内容注入其提示:guideline.md(共享规范)、对应的 references/role-*.md 以及运行目录中的文件路径。应用代码按照契约允许的路径编辑到仓库中;循环的簿记保留在运行目录中——仓库中不写入其他内容。
工作流程
-
准入。 根据
references/role-manager.md确认任务适合循环处理(长时间运行、多文件、需要独立评估、具有审批关卡,或必须恢复)。如果不是,直接执行并停止。 当任务确认为适合循环处理时完成。 -
检测恢复还是新建。 扫描
.easy-loop/runs/*/state.json(从仓库根目录开始)以查找status: running或awaiting_approval。 当你知道是恢复现有运行(取最新的运行 ID → 步骤 6)还是开始新运行(→ 步骤 2)时完成。 -
协商契约。 接受用户的目标。生成一个规划器将
contract.md(一份可测试断言的清单,目标 10–30 条)草拟到暂存路径,然后生成一个评估器(处于规划模式)对其进行评审,然后规划器再次修改——进行一轮,然后展示。与用户就每次运行的限制达成一致(max_iterations、no_progress_rounds、contract_invalid_rounds、禁止操作)并将其记录在契约的## Limits部分。展示契约时,指出模型层级(## Models)默认关闭,可以启用以控制成本;如果用户希望如此,则记录每个角色的层级。还要询问他们想要哪种报告呈现方式——默认是纯 markdown 格式的report.md,可选带图表的 HTML——并将其记录在## Report中。 当评估器的规划模式评审得到解决且用户明确批准contract.md时完成。 -
创建运行目录。 按照
references/loop-protocol.md构建:首先运行一次验证以捕获基线结果,写入spec.md(目标 + 验收标准 + 该基线),复制已批准的contract.md,写入初始state.json(iteration: 1、phase: "generate"、best_score: -1、status: "running")以及一个空的log.jsonl。 当运行目录符合该布局且state.json包含这些初始值时完成。 -
在后台启动运行器。 使用 Agent 工具(启用
run_in_background: true)生成运行器,传递交接信封(运行路径、契约路径、允许/禁止操作、限制以及guideline.md+references/role-*.md的指针)。该工具会在运行器返回时通知本会话。告诉用户循环正在运行,你只会在完成或升级时返回。 当后台运行器使用完整的信封启动时完成。 -
路由运行器的结果。 收到完成通知后,读取
state.json并根据status执行操作:done→ 报告成功(契约已满足)。awaiting_approval→ 从report.md中呈现实时的待处理发现/操作,获取决策,记录它,然后**重新启动(步骤 4)**并更新契约或审批。如果升级是契约修订请求(CONTRACT_INVALID),则首先重新运行步骤 2 的规划器 → 审批。在重新启动或用户结束运行之前,此步骤未完成。failed→ 报告阻塞因素并询问如何处理。 当用户获得结果并且运行要么重新启动要么明确结束时完成。
-
重新连接到恢复的运行。 读取运行的
state.json。如果为awaiting_approval→ 转到步骤 5。如果为running→ 根据log.jsonl进行协调,并按照references/loop-protocol.md从下一阶段继续,然后重新启动运行器(步骤 4)。 当循环再次运行或交给用户时完成。
升级
运行器无干预地运行,仅在 references/loop-protocol.md 中触发的条件下停止以等待人工。完成条件是评估器在整个验收清单上通过。其他任何情况,它都会迭代而不打扰用户。
审批策略
需要审批的操作是 references/loop-protocol.md 中的规范列表。已批准的契约不会放弃它们——它们仍然是运行器通过管理者升级的中断。