loop — 工程化编排

/loop 进入目标驱动的自循环:LLM 先探索项目现状,经用户确认后规划任务清单,逐步执行并验证,失败时自动纠正。


工作原理

/loop <目标>
  → 探索项目上下文(只读工具)
  → 用户确认探索结果 → 规划带验证命令的任务清单
  → 用户确认计划 → 逐任务执行 → 验证 → ✓ 通过 / ✗ 自纠重试
  → 汇总报告

与 harness 的关键区别:每个主要阶段都需用户确认后才进入下一步。


架构

AgentLoop (编排器: 探索→规划→执行→验证→汇总)
  └── ChatService._call_llm_with_tools()
        └── HarnessEngine (工具循环内核,复用 harness 引擎)
              ├── StreamEngine (流式传输 + watchdog)
              └── ToolExecutor (工具执行)

/loop 运行在 harness 之上——每个任务执行内部调用 harness 工具循环。AgentLoop 在其外围添加结构化阶段和用户确认门控。


阶段流水线

阶段 1:探索

LLM 使用只读工具(kg_find_symbolread_fileglob_filesgrep_content)了解项目现状——文件路径、已有接口、技术栈。

探索摘要展示给用户,提供三个选项:

操作 效果
回车 接受探索结果,进入规划
输入文字 提供修正/补充,重新探索
q 取消循环

阶段 2:规划

LLM 将目标拆解为 JSON 任务清单。每个任务包含:

字段 说明
desc 任务描述(具体到可直接执行)
constraints 技术/设计/命名约束
acceptance 可验证的验收标准
verify 机器可判定的验证命令(可选)

任务清单展示给用户,提供三个选项:

操作 效果
回车 确认计划,开始执行
输入文字 提供修正,重新规划
q 取消循环

阶段 3:执行

任务顺序执行。每个任务:

  1. 进入 harness 工具循环(LLM 读取文件、编辑代码、运行命令)
  2. 首轮强制只读工具(先探索再动手)
  3. harness 循环结束后运行 verify 命令
  4. 失败时:将失败原因回灌进任务(自纠),最多重试 3 次

阶段 4:汇总

报告每个任务的完成状态:

目标完成情况:4/5 任务验证通过
目标:为 users 表添加 phone_number 字段

[OK] 任务1: 创建迁移 SQL — 验证通过
[OK] 任务2: 更新 SQLAlchemy 模型 — 验证通过
[OK] 任务3: 更新 API 端点 — 验证通过(尝试 2 次)
[OK] 任务4: 添加验证 — 验证通过
[!!] 任务5: 运行测试 — 验证失败: test_phone_format FAILED
标记 含义
[OK] 验证通过
[!!] 3 次自纠重试后仍失败

双闸控制

闸门 限制 用途
任务轮次 MAX_ROUNDS = 20 总任务数硬上限
单步重试 MAX_RETRIES = 3 每个任务的自纠重试次数
异议重做 MAX_REDO = 3 探索/规划阶段的最大重做次数

3 次失败不会中断循环——步骤标记为 [!!],循环继续执行后续任务。


验证策略

默认模式

--run 模式

/loop --run <目标> 允许执行启动类命令:

自动降级映射

启动命令 降级为
spring-boot:run mvn compile -q
npm start npm run build --if-present
python app.py python -m py_compile app.py
flask run python -m py_compile app.py
django runserver python manage.py check

何时使用 /loop

适合 不太适合
可分解的任务 探索性研究
多文件重构 单次快速编辑
迁移脚本 需要创造性决策的任务
CI/CD 流水线变更 模糊的需求

示例:数据库迁移

/loop 为 users 表添加 phone_number 字段:
1. 创建迁移 SQL 文件
2. 在 SQLAlchemy 模型中添加字段
3. 更新所有返回用户数据的 API 端点
4. 添加手机号格式验证
5. 运行测试并验证

/loop 会:

  1. 探索项目,找到现有模型、端点和测试模式
  2. 展示探索摘要供你确认
  3. 生成带具体文件路径和验证命令的任务清单
  4. 展示计划供你确认
  5. 按顺序执行每个任务(含自纠重试)
  6. 报告通过/失败状态的结果

示例:依赖升级

/loop 将 httpx 从 0.24 升级到 0.27:
1. 更新 requirements.txt
2. 运行 pip install
3. 修复所有导入错误
4. 运行测试套件
5. 如需要更新 CI 配置

使用技巧

明确验证标准

/loop 在每个步骤都有清晰的成功标准时表现最佳:

# 好 — 清晰的验证
/loop 重构 auth 模块:
1. 将 login/register 移到 auth/service.py
2. 更新所有引用这些函数的文件(验证:grep 返回 0 个旧导入)
3. 运行测试(验证:所有测试通过)

# 模糊 — 难以验证
/loop 重构 auth 模块

确认时提供修正

在每个确认门控处,你可以输入修正而不是直接回车:

这会将你的反馈注入后重新执行该阶段。

每步内部使用 harness

你同时获得两者的优势: