AI Agent 工程师课程
程序员进阶版

A9 · Agent 责任边界与合规

把伦理与合规要求落成可实现、可测试、可审计的工程能力,而不是一份贴在墙上的原则

本模块产出:Decision Record、可解释性 API、数据权利端点、偏见测试集、责任矩阵 · 新增模块,无前置依赖

这个模块讲工程,不讲道德说教

微软 AI-For-Beginners 用一整课讲 Responsible AI,我们的课程原本只有第 9 周 Security 的技术侧,缺的正是这一块。但本模块的做法不是列举原则,而是把每一条责任要求翻译成可实现、可测试、可审计的代码与流程。凡是不能落成验收标准的条目,不进这个模块。

同时说清楚:本模块是工程教学,不是法律意见。真实业务上线前请咨询你所在司法辖区的法务。

学前自测

1. 你的 Agent 自动改了一个商品价格,导致公司亏了五万。谁负责?

这题没有唯一答案,但你必须能说清责任链:写工具的人、配置权限的人、批准这次操作的人、决定不设审批的人。如果你的系统答不出「这次操作是谁批的、依据什么策略」,那么责任无法归属,法务和管理层就不会让这个 Agent 上线。责任可归属是 Agent 进入真实业务的前置条件,不是加分项。

2. 用户问「为什么 AI 拒绝了我的退款申请」,你能回答吗?

要能,而且答案不能是「模型判断的」。可解释性在 Agent 场景比在传统 ML 场景更可行,因为你有完整的执行轨迹:召回了哪些证据、命中了哪条策略、调了哪些工具、哪一步做的判断。把这条轨迹翻译成人话,就是可解释性。做不到的话,一旦有用户投诉或监管问询,你只能沉默。

3. Agent 的偏见和模型的偏见,是同一个问题吗?

不完全是。模型偏见来自训练数据,你改不了。但 Agent 系统会放大或引入新的偏见:检索排序偏向某类文档、工具权限按用户等级不同、Prompt 里的措辞诱导。这部分是你造成的,也是你能测能修的。把责任推给底层模型是不成立的。

4. 什么场景下法律要求必须有人工介入,不能全自动?

各辖区规定不同,但共同模式是:对个人产生重大法律或经济影响的自动化决策,通常要求可解释、可申诉、可要求人工复核。典型场景包括招聘筛选、信贷审批、保险定价、内容封禁。这直接决定你的 Approval Policy 怎么配,不是可选的产品设计。

学习目标

把伦理与合规要求落成工程能力:责任可归属、决策可解释、数据权利可行使、偏见可测量、事故可追溯。

这个模块的商业价值很直接:它是很多企业不敢上 Agent 的真正卡点。 程序员基础版第 3 周和第 9 周解决了「Agent 不会技术性地闯祸」,这个模块解决「闯祸了能说清楚、能负责、能改」。能把这两层都讲明白的候选人,在面 To B 团队时优势极大。

课程内容

责任链与可归属性

  1. RACI 责任矩阵:开发者、运营者、审批人、最终用户各自的边界
  2. Decision Record:一次高风险决策必须记录的字段
  3. 审批的法律意义:谁批的、依据什么、能不能推翻
  4. break-glass 紧急通道与事后复核
  5. 自主性分级:建议、草稿、执行加事后通知、全自动

可解释性

  1. Agent 的可解释性优势:执行轨迹本身就是解释
  2. 从 Trace 生成人类可读的决策说明
  3. 证据链:结论到检索片段到原始文档
  4. 面向用户、面向运营、面向监管的三种解释粒度
  5. 不可解释的部分怎么诚实标注

数据权利

  1. 知情、访问、更正、删除、可携带五项权利
  2. 派生数据的删除范围:摘要、向量、缓存、评测集
  3. 训练数据与用户数据的边界,日志能不能拿去训练
  4. 跨境传输与数据驻留对 Provider 选型的影响
  5. 留存期限与自动清理

偏见与公平

  1. Agent 系统引入偏见的三个位置:检索排序、工具权限、Prompt 措辞
  2. 分组对照测试集的构造方法
  3. 公平性指标的选择与冲突
  4. 反馈回路:Agent 的输出成为下一轮的输入

披露与边界

  1. AI 生成内容的标识义务
  2. 专业建议边界:医疗、法律、金融、心理
  3. 拒答设计:什么时候必须拒绝,怎么拒绝得体
  4. 高风险场景清单与人工介入要求

责任链长什么样

一次高风险操作改价 / 拒退款 / 发送Decision Record写操作的同时落库decision + autonomyLevelevidence[] 依据哪些检索片段policyHits[] 命中哪几条策略approvedBy / overriddenByreversible 这一步撤不撤得回同一条链,三种解释面向用户人话,不含内部实现面向运营可聚合,能出推翻率面向审计完整证据链版本快照:每次 Run 必须钉住三个版本号Prompt VersionPolicy VersionAgent Version
底部那条版本快照是整条链最容易漏的一环。没绑版本,三个月后你能查到「谁批的」,但答不出「当时生效的是哪一版策略」,审计那一关就过不去

实施任务

给 Agent OS 补齐五项能力:

1. Decision Record

对每一次高风险操作,除程序员基础版第 3 周的审计日志外,额外记录决策依据:

interface DecisionRecord {
  runId: string
  decision: string              // 做了什么
  autonomyLevel: 'suggest' | 'draft' | 'execute-notify' | 'autonomous'
  evidence: EvidenceRef[]       // 依据哪些检索片段 / 数据
  policyHits: PolicyDecision[]  // 命中哪些策略
  approvedBy: Actor | null      // 人批的还是策略自动批的
  overriddenBy: Actor | null    // 有没有人推翻过
  reversible: boolean
  timestamp: string
}

2. 可解释性 API

GET /runs/:id/explanation?audience=user|operator|auditor,从 Trace 生成三种粒度的人话说明。面向用户的版本不暴露内部工具名和 Prompt,面向审计的版本包含完整证据链。

3. 数据权利端点

导出、更正、删除三个端点,删除必须级联到派生数据。补齐 A2 的 Session、程序员基础版第 5 周的 Chunk、第 8 周的长期记忆,以及摘要、向量、缓存、已进入评测集的样本。

4. 偏见测试集

构造分组对照用例:同一业务请求,只改变一个受保护属性(地域、性别相关称谓、账号等级),其余完全相同,检验输出是否有系统性差异。至少覆盖你的业务里真实存在的三类分组。

5. 责任矩阵与高风险清单

文档产物:RACI 矩阵、自主性分级表(每类操作允许到哪一级)、高风险场景清单与对应的人工介入要求。

动手挑战

给你的 Agent 办一场模拟听证会。

选一次真实跑过的高风险操作(比如自动调价或自动拒绝退款),然后由你扮演三个角色轮流质询,每个角色的问题你都必须用系统里已有的数据回答,不能靠记忆或推测:

第一轮,扮演用户:「凭什么这么决定?我不同意,怎么申诉?」 你的系统要能输出一段不含技术黑话的说明,以及一条可用的申诉路径。

第二轮,扮演运营主管:「这个月有多少次这类操作?谁批的?有没有人推翻过?推翻率多少?」 考的是 Decision Record 的可聚合性。只能一条条翻日志的系统,等于没有治理能力。

第三轮,扮演外部审计:「证明这次决策用的是当时生效的策略版本,且用户数据没有超出授权范围被使用。」 考的是策略版本绑定与数据血缘。这一轮最难,也最能暴露系统的真实成熟度。

三轮里答不上来的问题,就是你要补的功能。把这三轮的问答整理成文档,是这个模块最有分量的作品集材料,因为几乎没有求职者能拿出这种东西。

验收标准

  • 每次高风险操作有 Decision Record,可按时间、类型、审批人聚合查询
  • 可解释性 API 对三类受众输出不同粒度,用户版不泄漏内部实现
  • 数据删除级联到全部派生数据,有自动化测试证明删除后检索不到
  • 偏见测试集覆盖至少三类分组,进入 CI 并有基线,出现系统性差异时告警
  • 自主性分级明确,每类操作的允许级别写进策略而非散落在代码里
  • AI 生成内容有标识,专业建议边界有拒答测试用例
  • 完成一次模拟听证会,三轮问题的回答全部有系统数据支撑
  • 决策可追溯到当时生效的 Prompt 版本、策略版本与 Agent 版本

学后自测

1. 用户要求删除数据后,你怎么证明真的删干净了?

靠自动化测试而不是靠承诺:删除后用原始内容做一次检索,断言召回为空;查向量库、缓存、摘要表、评测集各一遍。手工检查一次不算数,因为下次加了新的派生数据存储就会漏。这条测试要和删除功能同时提交。

2. 你的偏见测试集发现了系统性差异,下一步查什么?

按 Agent 引入偏见的三个位置依次排查:检索排序(是不是某类文档权重更高)、工具权限(是不是不同分组走了不同路径)、Prompt 措辞(是不是措辞诱导)。三处都没问题才轮到怀疑模型本身,那时的应对是换模型或加后处理约束。直接归因给模型是最偷懒也最常见的错误。

3. 你的自主性分级表里,哪些操作被允许到 autonomous?为什么是这些?

判据是可逆性加影响面加错误代价。通常只有完全可逆、影响单一对象、错了成本极低的操作可以全自动,比如给内部草稿打标签。凡是对外、涉及金额、影响他人的,至少要 execute-notify。答不出判据只答一个清单,说明分级是拍脑袋定的。

4. 模拟听证会第三轮,你答上来了吗?没答上来缺的是什么?

最常见的缺口是策略版本没有和 Run 绑定:你知道现在的策略是什么,但不知道三个月前那次操作生效的是哪一版。补法是每次 Run 快照策略版本号,和程序员基础版第 5 周的 Prompt Version 一样对待。

本模块作业

  1. packages/decision-record/:Decision Record 记录与聚合查询
  2. 可解释性 API:三种受众粒度
  3. 数据权利端点:导出、更正、删除,含级联删除的自动化测试
  4. 偏见测试集:三类分组对照,进 CI 有基线
  5. docs/responsibility-matrix.md:RACI 矩阵、自主性分级表、高风险场景清单
  6. docs/mock-hearing.md:模拟听证会三轮问答记录,标注答不上来的缺口与补齐计划

面试考点

这个模块对应面试里的风险意识与 To B 成熟度,在金融、医疗、招聘、政企方向几乎必考,在其他方向是强差异化项。

  • 「你怎么保证 Agent 不闯祸?」:这是最高频的开放题,也是这个模块的招牌。分两层答:技术层是程序员基础版第 3 周和第 9 周的权限、沙箱、审批、攻击测试;治理层是这个模块的责任链、可解释性、自主性分级、偏见测试。只答技术层的候选人非常多,两层都答的极少。
  • 「Agent 做错了决定,你怎么定位是谁的问题?」:拿 Decision Record 答,讲你能查到依据、策略命中、审批人、以及当时的策略版本。顺带讲模拟听证会第三轮,说明你验证过这个能力。
  • 「用户要求解释 AI 的决定,你怎么做?」:答 Agent 相比传统 ML 的可解释性优势在于有完整执行轨迹,然后讲三种受众粒度。这个观点本身就有见地,因为很多人下意识认为 AI 不可解释。
  • 「AI 有偏见怎么办?」:不要答「模型的问题我们改不了」。答 Agent 系统引入偏见的三个位置,讲你的分组对照测试集。能区分模型偏见和系统偏见,是这题的分水岭。
  • 「用户要删数据,你们怎么处理?」:答级联删除范围,特别提摘要、向量、缓存、评测集这四类容易漏的派生数据,以及你的自动化验证测试。
  • 「什么操作可以让 Agent 全自动?」:答可逆性、影响面、错误代价三个判据,给出你的自主性分级表。这题考业务判断,一刀切的答案会失分。
  • 反问加分:可以反问对方团队现在的 Agent 有没有决策记录、出了事怎么追溯。这个反问会让面试官意识到你的层次不在写代码上。

复习与延伸

框架与规范(教学参考,不构成法律意见)

本仓库对应源码

  • packages/contracts/src/policy.tsPolicyDecision,Decision Record 的策略字段来源
  • packages/tool-runtime/src/policy-gate.ts:自主性分级的落地点
  • packages/eval-kit/src/evaluate.ts:偏见测试集用同一套 EvalCase 契约

相关模块

  • 程序员基础版第 3 周第 9 周:技术层的权限与安全基线
  • A2:Session 删除的级联范围
  • A7:跨系统调用时责任边界怎么划

下一步附录 B · 各周进阶档验收清单

On this page