IR-0001:agent 自治生产系统(意图→实现闭环)
状态:signed (randypanding,2026-08-20,对话内签署)
理论依据:#126 (意图→规格方法论)、#127 (质量关卡落地规约)
本 issue 为 append-only 意图账本;后续变更只以新评论/erratum 追加,不编辑正文。
job(要完成的待办)
建设一套完全运行在 GitHub 上的 agent 自治生产系统:人类只写/签意图,
agent 流水线自动完成 spec → 红队挑战 → 波次/卡 → 测试先行实现 →
全量质量关卡 → holdout 揭封 → 风险分自动合并,全程无需人类做状态路由。
触发场景
任何产品仓(L2)需要新功能/变更时;以及本系统自身的后续演进。
当前痛点的证据
人类目前是"人肉路由器":手动查各任务状态、逐条给 agent 下指令。
上游无结构:意图→实现之间没有可机检的中间产物,测试写得好不好只能靠人审。
下游无关卡:组织现有 gate 只做卫生检查(gitleaks/zizmor/yaml),
无测试防篡改、无变异测试、无棘轮、无 AC 追溯。
代码整洁目前没有任何机器守门:复杂度、模块深浅、依赖方向、抑制标记
全靠人味,而人只有一个——agent 产的代码会在无人察觉中腐化。
期望的可观察变化(验收时能在 GitHub 上看到的事实)
在任意一个仓用 issue form 提交一条意图并打 state:ir-signed 后,
人类不做任何进一步操作,spec PR 在该仓库自动出现。人类可以考虑允许在写完后,手动启动agent,从而开始整个流程。
任意本地 coding agent 打开任一产品仓,仅读该仓 AGENTS.md,
即可找到可认领的卡、认领、开工、提交符合全部关卡的 PR。
每张卡的 PR 上自动运行该卡的验收测试(Python 仓为 pytest,
TS 仓为 vitest),且测试 commit 先于实现 commit、实现前为红。
验收测试合并后哈希锁定,后续任何 PR 改动锁定测试 → check 失败,
只有人类能解锁。
低风险 PR 由确定性脚本自动合并;高风险 PR 打 needs-human
并 assign randypanding——人类只处理被 assign 到自己的事。
holdout 测试对 planner/implementer 不可见,仅在 verdict 阶段揭封运行,
结果详情只回写到公开 holdout 仓。通过APP安装的差异,让agent看不到holdout仓。尽管仍然存在agent查看公开仓的可能性,然而这是不确定风险,转公开会直接带来确定性的支出,暂时不值得。
代码整洁成为确定性谓词而非人的品味:每个 PR 被一组可执行的整洁关卡
判定——复杂度/CRAP、模块形状(深模块:小接口大实现、导出数/扇出上限)、
依赖架构(分层、无环、无跨 feature 私连)、禁用模式清单
(any/抑制标记/空 catch/裸 sleep 等)、抑制标记总量零增长。
diff 上阻断、全仓上棘轮(只许变好,baseline.json 单调),
阈值全部集中在 quality/contract.yaml 一处。
非目标(NONGOAL)
不做多 agent 框架(LangGraph/CrewAI 等),git+文件+Actions 即编排底座。
不做 LLM 合并判定/approve 权;LLM 只有 veto 与叙述权。绝大多数的PR仍然像现在这样自动合并
第一期不自建 LLM gateway 服务器(见 spec DECISION-01:直连 API + ADR 修订 AR-3)。
不追求全仓 100% 覆盖;diff 上严、全仓用棘轮。
不做通用项目管理系统;Projects v2 看板仅作可选可视化。
约束 / 不可违反项
遵守 .github 仓 GOVERNANCE.yaml 全部现行铁律(C1 变更 PR+ADR+owner-merge;
App 永不持 workflows/administration;机器无 approve 权)。
合并决策只能由确定性脚本做出(对齐 issue bob的代码卫生实践 #127 L1)。
锁定测试、quality/、pipeline/ 、.github/** 对实现 agent 不可写(CI 关卡强制)。
每个阶段全新冷上下文;阶段间只经磁盘产物/git 通信。
每任务有 token/美元/墙钟三重预算,触顶回滚到最后绿点并升级。
凡能被工具判定的整洁规则,必须实现为 CI 关卡,禁止写进
CLAUDE.md/AGENTS.md 当劝导语(bob的代码卫生实践 #127 L2);agent 违反整洁关卡时
只能改实现,不得改规则、不得加抑制标记、不得放宽阈值
(阈值放宽只能以人类批准的 bot 提交发生)。
人类愿意接受的验收证据
一条真实意图(非演示)从签署到自动合并(或合规升级到人工)的完整链路记录:
issue 时间线 + 各阶段 workflow run 链接 + PR check 记录。
一次红队实测:恶意合规 agent 对一张卡的验收套件的攻击结果(通过=套件不充分)。
一次 holdout 实测:verdict 阶段揭封运行记录,且实现 agent 的上下文中
无 holdout 内容(审计 workflow 日志确认)。
一次整洁关卡实测:提交一个故意脏的 PR(高复杂度函数、浅模块、
跨层依赖、eslint-disable),被对应关卡逐条拦下并给出 fixHint;
修复后同一 PR 全绿。以及 baseline.json 上观察到的全仓指标单调改善。
可逆性偏好
全部基础设施(labels/forms/workflows/仓)新增式落地,可整体停用回退;
不改造现有 4 条 org rulesets 语义,只新增。
质量-速度旋钮
默认质量优先:全量关卡(含变异测试 diff 硬零存活)从第一张生产卡起启用;
基建自身的 W0 卡可临时降级(non-blocking 观察模式),W1 起全量。
Actions 分钟不设预算上限(人类已拍板);LLM token 仍须计量落盘,
供后续预算化,第一期不设熔断。
IR-0001:agent 自治生产系统(意图→实现闭环)
job(要完成的待办)
建设一套完全运行在 GitHub 上的 agent 自治生产系统:人类只写/签意图,
agent 流水线自动完成 spec → 红队挑战 → 波次/卡 → 测试先行实现 →
全量质量关卡 → holdout 揭封 → 风险分自动合并,全程无需人类做状态路由。
触发场景
任何产品仓(L2)需要新功能/变更时;以及本系统自身的后续演进。
当前痛点的证据
无测试防篡改、无变异测试、无棘轮、无 AC 追溯。
全靠人味,而人只有一个——agent 产的代码会在无人察觉中腐化。
期望的可观察变化(验收时能在 GitHub 上看到的事实)
state:ir-signed后,人类不做任何进一步操作,spec PR 在该仓库自动出现。人类可以考虑允许在写完后,手动启动agent,从而开始整个流程。
即可找到可认领的卡、认领、开工、提交符合全部关卡的 PR。
TS 仓为 vitest),且测试 commit 先于实现 commit、实现前为红。
只有人类能解锁。
needs-human并 assign randypanding——人类只处理被 assign 到自己的事。
结果详情只回写到公开 holdout 仓。通过APP安装的差异,让agent看不到holdout仓。尽管仍然存在agent查看公开仓的可能性,然而这是不确定风险,转公开会直接带来确定性的支出,暂时不值得。
判定——复杂度/CRAP、模块形状(深模块:小接口大实现、导出数/扇出上限)、
依赖架构(分层、无环、无跨 feature 私连)、禁用模式清单
(any/抑制标记/空 catch/裸 sleep 等)、抑制标记总量零增长。
diff 上阻断、全仓上棘轮(只许变好,baseline.json 单调),
阈值全部集中在 quality/contract.yaml 一处。
非目标(NONGOAL)
约束 / 不可违反项
App 永不持 workflows/administration;机器无 approve 权)。
CLAUDE.md/AGENTS.md 当劝导语(bob的代码卫生实践 #127 L2);agent 违反整洁关卡时
只能改实现,不得改规则、不得加抑制标记、不得放宽阈值
(阈值放宽只能以人类批准的 bot 提交发生)。
人类愿意接受的验收证据
issue 时间线 + 各阶段 workflow run 链接 + PR check 记录。
无 holdout 内容(审计 workflow 日志确认)。
跨层依赖、eslint-disable),被对应关卡逐条拦下并给出 fixHint;
修复后同一 PR 全绿。以及 baseline.json 上观察到的全仓指标单调改善。
可逆性偏好
不改造现有 4 条 org rulesets 语义,只新增。
质量-速度旋钮
基建自身的 W0 卡可临时降级(non-blocking 观察模式),W1 起全量。
供后续预算化,第一期不设熔断。