目标仓库Issue、Listener、独立任务分支、状态文件与 Pull Request 都留在调用仓库。
01 / ARCHITECTURE
目标仓库Issue、Listener、独立任务分支、状态文件与 Pull Request 都留在调用仓库。
中央引擎reusable workflow、可信 prompt、角色 skills 与包装脚本通过稳定版本复用。
特权包装层快照、提交、推送、PR 与 repository_dispatch 接力由受信任脚本负责。
Agent 执行层角色只在自身权限内读取、实现、测试或审查,不持有 GitHub 凭据。
Issue event
→ target Listener
→ reusable-agent-cycle.yml @ v1
→ agent/issue-<number>
→ Pull Request in target repository新建、重开、编辑 Issue 均可触发;author_association 通过 AGENT_TRUSTED_ASSOCIATIONS 显式收窄。
每个 Issue 固定到 agent/issue-<number> 分支和对应并发锁,同一任务不会并行互相覆盖。
02 / ROLE CONTRACTS
read-only读取问题证据,定位根因或变更理由,形成实施与验证计划。
write以测试驱动方式完成一个有界增量,并记录改动、验证与计划偏差。
read-only独立运行回归与验收检查,只记录证据,不修改目标代码。
read-only依据验证证据给出最终 findings,并决定本轮状态。
Analyst、Verifier、Reviewer 执行前后都会计算工作树指纹;出现可提交变更时,本轮直接停止。
03 / STATE PROTOCOL
issue.mdWrapper保存最新 Issue 快照。
state.jsonWrapper记录轮数、Provider 与生命周期。
handoff.mdWrapper保存由最终审查派生的下一轮紧凑上下文。
result.jsonReviewer / Wrapper保存已校验的本轮最终状态。
analysis.jsonAnalyst记录证据、根因、实施与验证计划。
implementation.jsonImplementer记录实际改动、测试结果和计划偏差。
verification.jsonVerifier记录独立测试与验收证据。
review.jsonReviewer记录审查结论与具体 findings。
complete交付 Pull Request停止接力,等待维护者审查与合并。
continue进入下一轮包装层生成 handoff.md,携带紧凑上下文继续。
blocked等待维护者停止执行,保留证据并交由维护者处理。
默认硬上限:Round N / 5。到达上限后停止,不再发起下一次 repository_dispatch。
04 / SECURITY MODEL
Claude Code 不接收 GitHub Token、PAT 或 Actions 运行时凭据。
包装脚本比较只读角色执行前后的工作树指纹,发现可提交改动即停止本轮。
Implementer 可改目标代码,但不能篡改 wrapper 管理的生命周期状态和前序产物。
持有 Token 的 finalize 只解析工作流 YAML,不执行目标仓库可控代码。
Privileged finalize
GitHub Token → commit / push / PR / dispatch
validate-target.sh → static YAML parsing only
──────────────── security boundary ────────────────
Agent execution
source code → implement / test / review
GitHub credentials → unavailable05 / INSTALLATION
./agent-cycle setup
cd /path/to/private-target
agent-cycle deploy
# choose MiMo and narrow trusted associations
agent-cycle deploy --provider mimo \
--trusted-associations OWNER,MEMBER生产 Listener 固定到稳定 v1 或 commit SHA。私有目标仓库调用私有 reusable workflow 时,还需 ENGINE_TOKEN 和中央引擎的 Actions 访问授权;public 目标仓库不能直接调用 private reusable workflow。
06 / BENCHMARK
validate-configcreate-issuesruncollectreportagent-cycle benchmark validate-config
agent-cycle benchmark create-issues --target-repo OWNER/REPO
agent-cycle benchmark run --target-repo OWNER/REPO
agent-cycle benchmark collect --target-repo OWNER/REPO --out results.jsonl
agent-cycle benchmark report --input results.jsonl --out report.md当前配置覆盖 DeepSeek 与 MiMo。报告只呈现相同输入和评分规则下的观测结果,不把一次运行解释为 Provider 的绝对排名。
07 / ENGINEERING CHALLENGES
可复用工作流来自中央引擎,但 Issue、分支、权限和 PR 必须始终作用于发起调用的目标仓库。
让 reusable workflow 在调用仓库的 github 上下文中运行,并显式区分 ENGINE_ROOT 与 TARGET_ROOT。
代码执行环境需要读写目标仓库,却不应该接触可创建分支、PR 或接力运行的高权限凭据。
Claude Code 运行时移除 GitHub 凭据,把提交、推送、PR 与 dispatch 收口到快照化包装脚本。
提示词中的只读承诺无法单独证明 Analyst、Verifier、Reviewer 没有在工作树留下副作用。
在每个只读阶段前后计算工作树指纹,发现可提交变更就停止本轮并拒绝发布 Agent 修改。
完整会话历史会持续膨胀,也会把噪声和未经验证的推断带入下一角色或下一轮。
会话彼此独立,只传递经过模式校验的 JSON 产物,并由 Wrapper 从审查结果派生 handoff.md。
Reviewer 可能连续要求继续,若没有统一状态协议与硬上限,自动接力可能长期占用 Actions。
把状态限制为 continue、complete、blocked,并由 Wrapper 执行默认五轮上限和最终停止逻辑。
不同 Provider 若面对不同代码版本、Issue 或评分规则,最终报告无法支持可靠比较。
Cases 固定上游仓库与 commit,run 记录 base SHA,collect 汇总产物,再用同一 rubric 计算报告。
08 / RELIABILITY