Files
Jyotisha/docs/agents/agent-loop-playbook.md
T

6.5 KiB
Raw Blame History

双 agent 自动循环:流程与接入手册

2026-10-13 定稿。适用于 Jyotisha,以及按第 5 节接入的其他项目(首个是 copse)。实现细节在 tools/agent-loop/README.md,决策过程在 docs/tasks/TASK-agent-loop-pilot-20261013.md。

1. 一句话

产品负责人只做两件事:说清要什么、在真机上点一遍。 中间的诊断、写任务书、改代码、测试、验收、上测试环境,由两个 agent 通过 Gitea issue 自己交接完成。

参照的是 yetone/magpie:他在 Claude Code 会话里并行跑几个 /loop,加一段大白话提示词,没有别的魔法。我们在此基础上多了一道交叉审查:Grok 写代码,Claude 验收,写和审不是同一个 agent。

2. 三个角色

角色 在哪 做什么 不做什么
产品负责人 任何地方 提需求或 bug(或和 Claude 聊完由它提)、拍板、真机验收、发生产 传话、催进度、读代码
Claude Linux 机器上的常开会话,/loop 30m 和产品负责人聊需求并提 issue;诊断写任务书;独立复验 Grok 的提交;合入测试环境;核对部署;每晚复盘 写业务代码;推生产分支;改 CI 流程
Grok Build 产品负责人 Windows 上的常开会话,/loop 15m 按任务书实现、自测、推 codex/* 分支、回报 推测试或生产分支;删分支;自己做产品决定

账号:两个 agent 各用一个 Gitea 账号发言——Claude、Grok,看评论就知道是谁说的(2026-10-13 产品负责人决定)。两个工具只信任 jesse、Claude、Grok 三个账号写的内容,其他人写的不交给模型。两个账号都要加为各项目仓库的协作者(写权限);令牌各存在自己那台机器的 ~/.config/jyotisha-agent/gitea-token。

3. 一单怎么走

你提 issue(或 Claude 聊完代提,提交前给你过目)
  标签:agent/待规划
     │  Claude:查 Bug 历史 → 读代码找根因 → 写任务书
     ▼
  agent/待执行 ──────────────┐ 需要你决定 → agent/需拍板 → 你回复后改回原标签
     │  Grok:照任务书改、自测、推 codex 分支、回报提交号
     ▼
  agent/待验收
     │  Claude:只验回报的那个提交号;逐行看改动;跑测试
     ├─ 不通过 → 写修复单 → 回到 agent/待执行(第 2 次打回就停下 @你)
     ▼ 通过
  合入测试环境 → agent/部署中
     │  Claude:核对测试环境已部署这次改动
     ▼
  agent/待真机 → @你 去点一遍 → 没问题就关 issue;有问题写下来改回 agent/待规划

处理中会挂锁标签(规划中 / 执行中 / 验收中),避免两边抢同一单。试点期还要求同时带 agent/试点。

4. 安全护栏(为什么敢让它自己跑)

风险 护栏
陌生人在 issue 里写指令诱导 agent 只认标签触发(只有有写权限的人能打);只读产品负责人账号写的正文和评论
agent 推到不该推的分支 推送前钩子:Grok 只能推 codex/*,Claude 不能推生产分支,谁都不能删分支
agent 越权执行命令 两边都用白名单 + dontAsk,白名单外自动拒绝;不放行任意 shell
验收验的不是实际要合的代码 验收锁提交号:只验 Grok 回报的那个;验完后分支又有新提交就重验
两个 agent 来回扯皮 同一单打回 2 次、连续出错 3 次,就停下 @产品负责人
泄露隐私 评论与任务书不写用户资料;Jyotisha 仓库对外公开,尤其注意
越跑越乱 每晚复盘写 LESSONS.md,同一教训出现 3 天提议升级为硬规则,由产品负责人拍板
生产事故 生产发布不进循环,永远由产品负责人手动触发

5. 接入一个新项目的清单

# 要定的事 Jyotisha 的答案 copse 的答案
1 Gitea 仓库、是否公开 root/Jyotisha,公开 root/copse,私有
2 改动怎么进测试环境 快进推 staging,门禁通过后自动部署 开 PR 合进 main,合并后 copse-test 自动发布到 test 环境(k3s)
3 生产怎么发 产品负责人提升 main 产品负责人手动跑 yudao-k3s-prod
4 怎么确认测试环境部署了 /api/health 的 deployment.gitCommit 合并提交的 copse-test.yml 运行为 success(gitea.sh runs <sha>)
5 项目规则文件 AGENTS.md、CLAUDE.md、docs/BUG_HISTORY.md AGENTS.md(含 Flyway 迁移约定、新模型接入准则)、tests/AGENTS.md
6 验收要跑的测试 tsc、lint、npm test、Python 快速门;Windows 跑 test:db Python 契约测试 pytest tests/、script/db/check_migrations.py、Maven 编译与模块测试、前端 draw2video-* 构建
7 Claude 这台机器跑得了吗 能 Python 契约测试、迁移检查、前端能跑;Java 不跑,以 Grok 为准(产品负责人决定),覆盖不全即打回
8 Grok 的 Windows 跑得了吗 能(T1 已测,13 条已知失败) 待测:JDK 21、Maven、pnpm、Docker、copse 检出位置
9 什么不进循环 动表、发布、改 workflow 发布、改 workflow、计费单价、密钥;迁移允许,但只能新增、必须过 check_migrations.py
10 任务书放哪 docs/tasks/,推 staging 作为 codex/* 分支的第一个提交,随 PR 合进 main
11 谁合并 Claude 快进推 staging Claude 用 merge-pr 锁定验收过的提交号合并 PR(产品负责人决定)
12 规则与提示词 tools/agent-loop/prompts/ tools/agent-loop/projects/copse/(RULES.md、两份 loop 提示词、白名单)

接入步骤:定好上表 → 建同一套 agent/* 标签 → 两边各开一个该项目专用的 /loop 会话(一个项目一个会话,不混在一起)→ 先跑一单试点。

6. 日常怎么用

  • 小 bug:自己在 Gitea 开 issue,写清「在哪 / 做了什么 / 看到什么 / 期望什么」,打 agent/待规划(试点期加 agent/试点)。
  • 新需求、大一点的改动:先和 Claude 聊,Claude 拆成几个小 issue 并写明先后顺序,给你过目后提交。
  • 维护:两边的 /loop 7 天过期,每周重开会话、重新粘贴一次;机器重启或会话关闭后也要重开。
  • 每晚:花几分钟看 docs/agents/LESSONS.md 里「待拍板升级」的条目,再处理真机验收时发现的体验问题。