Part XV 前三篇分别钉住三块积木:101 系统约束、102 流水线兜底、103 可读上下文。缺了第四块,组织仍会在日常里打架:谁可以让 Agent 改什么、何时必须人点头、出事算谁的。
本文收束 Part XV:把人机分工、评审门槛与生产变更门禁编成 可审计流程。Agent 身份、委托链与工具级授权细节见 agent-identity,尤其 Human-in-the-Loop;LLM 作为在线依赖见 95。本文不写提示词技巧,不写法律意见——只写架构师能落地的责任面与状态机。
系列导航: ← 架构即 AI 上下文 · 系统架构设计索引 · Part XIV 不变量
相关专题: 康威定律 · ADR · SLO · agent-identity 落地架构
一、问题:吞吐上升之后,流程必须显式
1.1 隐式流程的破产
人写代码时代,许多团队靠隐式规范运转:资深审关键路径、新人改边角、生产变更走口头协调。AI 把「边角」与「关键」的边界模糊化——一次会话可以同时改 API、策略与迁移脚本。隐式流程的破产信号包括:
- 合并记录里无法回答「这段 diff 是否经人审」;
- Agent 使用的身份与个人身份混用,审计归因断裂;
- 回滚时找不到「谁批准放宽策略」。
Conway 定律指出组织沟通结构映射到系统结构[1];AI 协作者加入后,若组织 没有 对应的沟通与批准结构,映射结果是任意的——通常表现为权限过大的默认路径。
1.2 本文核心问题
- 人机角色与责任面如何划分,才能既保吞吐又保审计?
- PR/生产变更的状态机应包含哪些硬门禁?
- 如何与 101–103、agent-identity HITL 组合,而不是另起一套口号?
- 责任归属争论停在哪条可辩护边界?
二、角色与责任面
2.1 角色
| 角色 | 做什么 | 不做什么 |
|---|---|---|
| 提议者(Agent 或人) | 生成 diff、测试、说明;引用上下文路径 | 自批高风险合并;持有长期生产写权限 |
| 约束系统(101) | 类型/契约/策略/沙箱默认生效 | 替人做产品权衡 |
| 流水线(102) | 跑门禁、标失败语义、触发 canary | 解释业务意图 |
| 上下文索引(103) | 提供带版本的权威检索 | 自动把幻觉写回权威源(除非另有晋升流程) |
| 审查者(人) | 意图、权衡、高风险批准、责任承担 | 重复做机器已做的格式检查 |
| 值班/SRE | 发布窗口、错误预算、回滚决策 | 代替功能 owner 做产品取舍 |
2.2 责任面(架构表达)
用三句话固定责任,避免事后扯皮:
- 机器可判定项 未绿,不得进入人审队列(节省人眼);
- 人审签字 覆盖「意图与风险接受」,不覆盖「保证无缺陷」;
- 生产事故 归因到 批准路径与身份,而不是「模型名字」——模型是工具;批准合并与放行发布的主体进入审计日志。
这与 agent-identity
的归因字段要求一致:哪个用户委托的哪个 Agent
做了什么[2]。开发期流程应复用同一归因思想:PR 元数据记录
generator=agent|human、approver=、policy_diff=。
三、PR 与生产变更状态机
3.1 开发期(PR)
stateDiagram-v2
[*] --> Draft: Agent_or_human_opens_PR
Draft --> CI_Running: push
CI_Running --> CI_Failed: hard_gate_red
CI_Failed --> Draft: fix
CI_Running --> Awaiting_Risk_Class: hard_gates_green
Awaiting_Risk_Class --> Auto_Merge_Candidate: low_risk_policy
Awaiting_Risk_Class --> Human_Review: high_risk_or_policy_widen
Human_Review --> Changes_Requested: reject_or_ask
Changes_Requested --> Draft: update
Human_Review --> Approved: approve
Auto_Merge_Candidate --> Approved: optional_light_review
Approved --> Merged: merge
Merged --> [*]
风险分级(与 101/102 同一尺子——副作用不可逆性):
| 级别 | 例子 | 门禁 |
|---|---|---|
| 低 | 文案、注释、测试补强(不删断言) | CI 绿即可或轻量审 |
| 中 | 功能代码、非破坏 API 加字段 | CI + 一人审 |
| 高 | 权限/策略放宽、迁移、多租户边界、密钥、支付 | CI + 指定 owner 审 + 可要求双人 |
「为过测而删测试/放宽 schema」一律升为高风险。
3.2 生产期(发布)
stateDiagram-v2
[*] --> Artifact_Ready: merge_builds_artifact
Artifact_Ready --> Canary: progressive_rollout
Canary --> Rolled_Back: SLI_breach
Canary --> Full_Rollout: SLI_ok
Rolled_Back --> [*]
Full_Rollout --> [*]
Artifact_Ready --> Blocked: error_budget_exhausted
Blocked --> [*]
错误预算耗尽时冻结常规发布,见 28。AI 高频合并更需要这条冻结,否则 canary 永远在烧预算。
3.3 与 HITL 的衔接
运行中 Agent(客服改库、运维执行)的高风险步骤,用 agent-identity/05 的同步确认或异步审批。开发期 HITL 的对应物就是上表「高风险人审」与生产「发布窗口批准」。不要把两种 HITL 混成一个按钮:一个挡 工具副作用,一个挡 代码进入主干/生产。
四、与 101–103 的组合装配
| 积木 | 在流程中的插入点 |
|---|---|
| 101 约束 | CI 硬闸门;运行时默认身份最小权限;高风险工具沙箱 |
| 102 流水线 | 状态机中的 CI_Running、Canary、Rollback |
| 103 上下文 | Agent 开 PR 前的检索;人审时核对引用路径是否存在 |
| 本篇流程 | 风险分级、批准、归因、与 Conway 对齐的 owner |
装配反模式:
- 只有 chatbot,没有门禁 → 101/102 空转;
- 只有门禁,没有上下文 → 高通量错误补丁;
- 只有文档,没有责任面 → 出事无批准主体。
落地参考架构可与 agent-identity/10 对齐:IdP + 策略引擎 + Agent 网关;开发期再加 必填 CI + CODEOWNERS + 发布控制器。
五、争论:责任归属
5.1 双方常见主张
| 立场 | 主张 | 问题 |
|---|---|---|
| 厂商/模型责任 | 生成错误应由模型提供方负责 | 模型按提示与工具权限行事;权限是部署方配置 |
| 操作者全责 | 谁点合并谁负责 | 忽略平台未提供硬闸门时的系统过失 |
| 平台与操作者共责 | 闸门缺失属平台;越权批准属操作者 | 需在审计中可分拆 |
5.2 架构可辩护边界
在工程上可辩护、且与审计字段对齐的划分是:
- 平台责任:未提供或绕过可提供的硬约束(无契约校验、默认 admin、无可归因日志)导致的事故面;
- 批准者责任:在绿灯之后仍接受的高风险意图(放宽策略、破坏性迁移);
- 模型提供方:按其服务条款与缺陷披露流程处理模型层问题;不替代部署方的权限与门禁设计。
本站不提供法律责任结论;上表是 系统设计时的归因面,便于事后复盘写清「控制措施在哪一层缺失」。开放监管框架随司法辖区变化,工程上以 可证明的控制措施 为稳妥策略。
六、开放问题
多 Agent 协作变更的合并语义
两个 Agent 并行改同一契约时,三方合并与意图冲突缺少标准协议(对比多人协作已有 Git 语义,但意图层无)。自动晋升文档写回
Agent 是否可以在合并后自动开「文档同步 PR」仍争议;与 103 开放问题相同,需人审晋升以免污染 SSOT。跨组织 Agent
供应商 Agent 提交 PR 时,委托链与责任面如何映射到内部 CODEOWNERS——身份模型见 agent-identity,流程模板仍不统一。
七、Part XV 收束
| 篇 | 一句话 |
|---|---|
| 95 | LLM 作为运行时依赖的超时、成本、编排 |
| 101 | 用类型/契约/策略/沙箱限制生成代码爆炸半径 |
| 102 | 用分层门禁与 canary/回滚兜住人审吞吐不足 |
| 103 | 用版本化 ADR/C4/spec/拓扑作权威上下文 |
| 104(本文) | 用人机状态机与责任面把前三者编成可审计流程 |
与 100 不变量 的关系:Part XV 不推翻不变量,而是在「变更作者包含 AI」的前提下,把爆炸半径、反馈控制与可观测前提 操作化。
落地检查清单
- PR 是否记录生成者/批准者/策略是否放宽?
- 高风险路径是否强制指定 owner,而非任意一人?
- CI 未绿是否无法进入人审?
- 生产是否有 canary + 错误预算冻结?
- 运行中 HITL 与开发期人审是否分开建模?
- 事故复盘是否能指出缺失的是约束、门禁、上下文还是批准?
参考资料
经典与工程文献
- Conway, M. E., “How Do Committees Invent?” Datamation, 1968.(A 级)[1]
- Beyer, B. et al., Site Reliability Engineering — 变更管理。(B 级)
- Humble, J., Farley, D., Continuous Delivery.(B 级)
站内交叉
- 101 · 102 · 103
- agent-identity 索引 · HITL · 落地架构[2]
- 84 康威定律
- 95 AI 原生架构
- 100 不变量
规范(边界)
- RFC 8693 OAuth 2.0 Token Exchange(委托表达;细节见 agent-identity)。(A 级)
- MCP Specification(草案状态须标注版本;细节见 agent-identity)。(A/B 级,draft)
核心文献(本主题)
| 文献 | 引用点 |
|---|---|
| Conway 1968 | 组织结构映射系统结构 |
| SRE / CD | 变更门禁与渐进发布 |
| agent-identity 系列 | 委托、HITL、归因 |
实验与数据
- 本篇状态机为规范示意;不报告未统计的人审耗时或缺陷率。
系列导航: ← 架构即 AI 上下文 · 系统架构设计索引 · 架构的不变量
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Agent 身份与安全】人机协同授权:Human-in-the-Loop
高风险 Agent 操作的 step-up 认证、同步确认 vs 异步审批队列、超时与 Agent 状态机,以及与自适应认证和 PAM JIT 的衔接。
【系统架构设计】架构的不变量:穿越技术周期的设计原则
单体、微服务、边缘、AI 原生换的是部署形态与运行时组件,失败、尾延迟、一致性权衡、爆炸半径、反馈控制、组织同构与可观测性前提在二十年间并未消失。本文把 Part XIV 前沿篇收束为可核对的不变量清单,逐条链回本系列已写篇章与经典文献,并给出开放问题与自检用法。
【系统架构设计】AI 时代的工程基础设施:让 pipeline 替你兜底
人审吞吐跟不上 AI 变更速率时,质量只能前移到流水线。本文建立变更威胁模型,拆解 lint、类型、契约、策略、eval 与 canary 的门禁分层与失败语义,对照 Continuous Delivery 与 SRE 变更管理,并讨论 eval 能否替代代码评审的争论与开放问题。
【系统架构设计】AI 原生架构:LLM 时代的系统设计
当 LLM 从离线批处理变成在线运行时组件,超时预算、按 token 计费、非确定性输出与多轮 Agent 编排必须进入架构的一等公民。本文从依赖语义差异出发,衔接弹性与过载保护,讨论网关成本治理、结构化输出与人审闸门、checkpoint 恢复与隐私友好的可观测,并划定与 RAG、向量引擎及训练基础设施的分工边界。