← 回到舞台
AgentLens“监控与改进Agent”的技术飞轮软件
全部作品

图版 I · AgentLens · 2026

骨白颜料 · 绕着无穷走的冷光

面向 Agent 改动的审查工作台:自动找出改动跑出授权范围的地方,在执行之前拦下,交给人做一次决定。

Agent 需求跑偏 / 审批 / 可解释性

案例摘要

公司
公司名称因合同条款匿名
团队规模
1–10 人
我的角色
负责审查生命周期设计(AgentLens Review Kit)与复核工作台交互。
技术栈
React / Node.js / TypeScript / JSONL
问题
Agent 会提议修改客服话术、价格和退款额度,自动变更退款模板时曾越过政策,引发 2 起向用户多额承诺的事故。界面只有一个"已批准"标签,复核人员看不出一项改动到底有没有获得授权。
用户
一线复核人员:客服团队主管 1 人、运营配置工程师 1 人。
关键决定
改动内容从 JSON Diff 结构化生成,不再依赖模型摘要;一个状态拆成四份记录;价格、退款额度和权限类修改,批准与执行分成两步。
结果
判断授权状态的正确数从 21/40 升到 34/40;6 周 318 条提议中,非预期执行 0 起。
四份记录,四个问题
RECORD 01PROPOSAL
提案
Agent 想改什么,以及理由。
RECORD 02DECISION
人工决定
由人批准、拒绝或延期;高风险修改停在这一步。
RECORD 03EXECUTION
执行回执
只有获批的决定才能产生执行回执。
RECORD 04EVALUATION
评价结果
确认、回退,或证据不足并写明下一步。

一个决定

为什么先提案、人确认、再留回执

AgentLens 把 Agent 想做的、人决定的和真正执行的分开记录:改动先作为提案出现,人记下决定,只有获批的决定才能产生执行回执,之后再给出评价结果。理解度测试用了 20 张截图,问两位一线复核人员“Agent 现在能否执行这项操作”。看四份记录时答对 34/40(85%),只看一个“已批准”标签时答对 21/40(53%)。代价:每题多花 8 秒。

研发希望少点几下:一个状态、一个“批准”按钮,批准即执行。此前 Agent 自动改过退款模板,引发 2 起向用户多额承诺的事故。回头看,可选的有三条路:所有改动一个标签、一步批准即执行;所有改动都分开记录、分两步;全部分开记录,只在出错要赔钱的改动上分两步。第一条最快,也留着事故的老路;连改一句文案都要两步,容易让大家养成连点通过的习惯。

两份证据定下了这件事。退款事故说明,批准即执行会让改动直接生效,所以价格、退款限额与核心权限类修改,批准与执行必须分开。理解度测试说明,一个标签藏住了授权状态:只看标签时,复核人员只答对一半出头。四份记录也有薄弱处:答错的 6 题中,4 题落在“证据不足”。客服主管问:“那它究竟算成功没有?我是否可以据此回复用户?”我们随后在标签旁补了一句指引:未达到验证标准,补齐指标前不可对外承诺生效。

纯展示文案类的低风险修改,单人批准后由系统直接执行,并保留单步撤销。追踪 6 周、318 条提议:非预期越权执行 0 起;高风险修改从发起到执行的中位用时由 4 分钟放缓到 9 分钟,低风险修改为 3 分钟。读懂状态让每题多花 8 秒。事故基数小,“0 起”只代表这 6 周没有发生,不证明风险已经消除。

Agent 能动手的地方,把它提议的、人决定的和真正执行的写成几份一眼能读懂的独立记录,把摩擦留给出错就要赔钱的那一步。每题多花的 8 秒和高风险改动多等的几分钟,都比再出一次退款承诺便宜。

  1. 提案
  2. 决定
    • 低风险文案:批准即执行,可单步撤销
    • 拒绝或延期:不生成执行回执
  3. 执行回执
  4. 评价结果
    • 证据不足:补齐指标前,不可对外承诺生效
价格、退款限额与核心权限类修改,批准与执行分开。

系统如何分工

  1. 01提案记录
  2. 02人工决定
  3. 03执行回执
  4. 04评价结果

价格、退款额度与权限类修改,批准与执行分成两步;记录本身不会操作外部系统。

品牌卡 · 图版 I

AgentLens

复核人员一眼就能读懂的四份记录。

作品标记:影片里这件物体的笔画,缩成一枚

色彩

  • 墨 1 #151413记录底页
  • 骨白 #EDE6D8人做出的决定
  • 灰 7 #B9B2A6证据与字段
  • 灰 5 #8E887F待定或证据不足

字体

  • Geist记录与标签
  • 等宽字体编号、字段与取值

动效

  • 印240 ms四份记录依次印出:提案、决定、回执、结果
  • 光600 ms只有允许执行的状态才会亮起

问题与背景

这个工作台审查 Agent 为客服与运营业务提出的修改:话术调整、价格变更、退款额度变更。Agent 出的问题常常在于做多了。在此之前,Agent 自动变更退款模板时越过了政策,引发过 2 起向用户多额承诺的事故。

跑偏要能被发现,界面至少得回答三个问题:Agent 实际改了什么?有没有人同意?改完有没有达到预期?原来的界面只显示一个“已批准”标签,把这三个问题混在了一起。

用户验证:复核人员能否看出 Agent 越界

我请两位每天复核这类提议的同事参加测试:客服团队主管和运营配置工程师。每人看 20 张处于不同生命周期阶段的界面截图,每张图回答同一个问题:“依据当前显示,Agent 是否获得执行该项操作的授权?“每人每轮作答 20 题,两人合计 40 题。改版前后各测一轮,间隔 3 周,题目顺序打乱。

版本 答对数 每题用时(中位数)
v1:只有一个“已批准”标签 21/40(53%) 18 秒
v2:拆成提案、决定、执行回执、评价结果四份记录 34/40(85%) 26 秒

准确率上升,每题多花 8 秒。我接受这个代价:看不出 Agent 越界的复核人员,可能放行一次退款修改。

v2 答错的 6 题里,有 4 题集中在同一个状态:“评价结果:证据不足(inconclusive)”。客服主管问:“系统标注证据不足,那它究竟算成功没有?我是否可以据此回复用户?“对一线人员来说,“证据不足”给不出任何行动指令。我们在标签右侧补了一行说明:“未达到验证标准;在补齐 X 项指标前,不可对外承诺生效。”

评测:自动找出 Agent 改了什么

要发现跑偏,先得知道 Agent 实际改了哪些东西。早期由大语言模型为每条提议撰写变更摘要。在 50 条提议上,6 条摘要漏掉了被修改的关键配置项,1 条编造了一个没有改动的字段:模型写的摘要本身也会跑偏。

我们把字段清单和数值差异改为直接从 JSON Diff 结构化生成,字段天然完整;模型只负责说明改动的背景与原因。重构后字段完整度达到 50/50;模型写的理由中,有 3/50 经复核标记为“与差异内容不符”,系统会自动高亮这类摘要。

生命周期规则由内部工作台的 62 条确定性测试覆盖,全部通过,例如“决定为拒绝或延期时,禁止生成执行回执”。公开的 AgentLens Review Kit 抽取了其中 14 条。这些测试证明规则按设计流转,却证明不了人能看懂界面,所以才需要上面的理解度测试。

团队决策:跑偏代价高的改动,批准与执行分开

工程团队认为每条提议都要先点“批准”再点“执行”,效率太低;退款事故给出了相反的理由。最后定为两档:

  • 纯展示文案类的低风险修改:单人批准后由系统直接执行,配单步撤销;
  • 价格、退款额度和核心权限类修改:批准授权与触发执行必须分开,不可合并。

追踪 6 周、共 318 条提议,非预期越权执行 0 起。高风险修改从发起到执行的中位用时由 4 分钟放缓到 9 分钟;低风险修改的中位用时为 3 分钟。

延伸设计:编码 Agent 的需求跑偏

同样的问题在编码 Agent 身上更常见:目标写着加一张优惠券,Agent 顺手改了积分,还把完成条件改成了对自己有利的版本。页面顶部的演示把这套思路延伸到 Codex 的工作流,分两步:

  • 自动诊断:任务开始时记下目的锚点(目的、允许写入的范围、完成条件和校验和)。之后 Agent 上报的每个事件都拿来比对,4 条确定性规则分别检查写入越界、目标或条件被实质改动(只改措辞不提示)、引用的证据早于后来的改动,以及锚点被改写。
  • 自动纠正:一旦发现跑偏,任务停在最后验证过的版本;范围内的进度保留,越界改动进隔离区,目标变化做成修订候选,下一轮给 Agent 重新注入锚点。人只需要在“继续原任务、更新任务、拆成新任务”里选一次。误报可以标为“不算跑偏”,同一模式保持安静,直到出现新的证据。

这一节目前处于设计阶段:规则写在需求文档里,演示按文档做成交互原型,使用固定示例,尚未上线,也没有用户数据。

局限

理解度测试只有两位参与者。事故基数很小,6 周内 0 起只说明这段时间没有发生事故,不能证明风险已经消除。编码 Agent 的跑偏检查还没有经过任何用户测试。

复盘

如果重来,我会在上线四份记录的界面之前,先拿“证据不足”的措辞找复核人员测一轮,因为剩下的错误大多集中在这一个状态。我还会记录复核人员批准前打开差异详情的频率,而不只记录他们有没有批准:发现跑偏,要看的就在差异详情里。

查看审查流程

60 秒宣传片

运行规则,可以亲自核对

跟随一条决定的去向。

示例回放 · Review Kit 规则
允许试运行,执行完成,评价确认
  1. 记录提案

    提案等待审查。此时没有批准,也没有执行。

    查看记录
    {
      "kind": "review_proposal",
      "id": "proposal-approved",
      "at": "2026-09-18T09:00:00.000Z",
      "candidate_ref": "workflow:creative-review",
      "version": 1,
      "reason": "Try an explicit confirmation step before applying a suggested edit.",
      "status": "review_pending",
      "content_hash": "sha256:8a5600e85cbbf20e8eb9eff296d22b1b67745864b5a81317e28d8b31f01e4a08"
    }
  2. 独立的人工决定

    审查者允许有限试运行,这不等于结果成功。

    查看记录
    {
      "kind": "review_decision",
      "id": "decision-approved",
      "at": "2026-09-18T09:01:00.000Z",
      "proposal_ref": "proposal-approved",
      "proposal_hash": "sha256:8a5600e85cbbf20e8eb9eff296d22b1b67745864b5a81317e28d8b31f01e4a08",
      "candidate_ref": "workflow:creative-review",
      "candidate_version": 1,
      "decided_by": "local_user",
      "status": "authorized_for_trial",
      "content_hash": "sha256:407589f684e2d6b36ab8902fd4f1ba374ee9ba302632138877515d2a4773c876"
    }
  3. 执行拥有独立结果

    执行记录说明操作已完成,不代表产品质量得到确认。

    查看记录
    {
      "kind": "execution_receipt",
      "id": "execution-approved",
      "at": "2026-09-18T09:02:00.000Z",
      "decision_ref": "decision-approved",
      "decision_hash": "sha256:407589f684e2d6b36ab8902fd4f1ba374ee9ba302632138877515d2a4773c876",
      "candidate_ref": "workflow:creative-review",
      "status": "executed",
      "change_ref": "change:synthetic-example",
      "content_hash": "sha256:82112bcb808f320146ebfbba53365228857e1dcaf6b122a9094198df63ca3398"
    }
  4. 评价证据

    示例中提供的信号满足确认规则。

    查看记录
    {
      "kind": "evaluation_result",
      "id": "evaluation-approved",
      "at": "2026-09-18T09:03:00.000Z",
      "execution_ref": "execution-approved",
      "execution_hash": "sha256:82112bcb808f320146ebfbba53365228857e1dcaf6b122a9094198df63ca3398",
      "candidate_ref": "workflow:creative-review",
      "status": "confirmed",
      "evidence_complete": true,
      "checks_passed": true,
      "regression_found": false,
      "content_hash": "sha256:3dca0e1c4d5a60b59cfd8957db0b9f7116de484cce6cc2dcc225ef7c87b99a2a"
    }
拒绝提案,阻止执行
  1. 记录提案

    提案等待审查。此时没有批准,也没有执行。

    查看记录
    {
      "kind": "review_proposal",
      "id": "proposal-rejected",
      "at": "2026-09-18T09:00:00.000Z",
      "candidate_ref": "workflow:creative-review",
      "version": 1,
      "reason": "Try an explicit confirmation step before applying a suggested edit.",
      "status": "review_pending",
      "content_hash": "sha256:54ff9008680878490a48a635b6e41faa28bd575e8310dae32475a79f8d7156a6"
    }
  2. 独立的人工决定

    审查者拒绝本次试运行。

    查看记录
    {
      "kind": "review_decision",
      "id": "decision-rejected",
      "at": "2026-09-18T09:01:00.000Z",
      "proposal_ref": "proposal-rejected",
      "proposal_hash": "sha256:54ff9008680878490a48a635b6e41faa28bd575e8310dae32475a79f8d7156a6",
      "candidate_ref": "workflow:creative-review",
      "candidate_version": 1,
      "decided_by": "local_user",
      "status": "rejected",
      "content_hash": "sha256:233b373c1becf6683b02a2844cb66ec85996433758a6e3e8565b0715bd1498be"
    }
  3. 执行被阻止

    模块拒绝根据已拒绝的决定创建执行记录。

    查看记录
    {
      "kind": "blocked_attempt",
      "code": "TRIAL_NOT_AUTHORIZED"
    }
执行失败,如实保留
  1. 记录提案

    提案等待审查。此时没有批准,也没有执行。

    查看记录
    {
      "kind": "review_proposal",
      "id": "proposal-failed",
      "at": "2026-09-18T09:00:00.000Z",
      "candidate_ref": "workflow:creative-review",
      "version": 1,
      "reason": "Try an explicit confirmation step before applying a suggested edit.",
      "status": "review_pending",
      "content_hash": "sha256:adfe434a3da6c2f4488c5d95bba4e257428dae647d493ba75cb0a392f8589652"
    }
  2. 独立的人工决定

    审查者允许有限试运行,这不等于结果成功。

    查看记录
    {
      "kind": "review_decision",
      "id": "decision-failed",
      "at": "2026-09-18T09:01:00.000Z",
      "proposal_ref": "proposal-failed",
      "proposal_hash": "sha256:adfe434a3da6c2f4488c5d95bba4e257428dae647d493ba75cb0a392f8589652",
      "candidate_ref": "workflow:creative-review",
      "candidate_version": 1,
      "decided_by": "local_user",
      "status": "authorized_for_trial",
      "content_hash": "sha256:0c13d6cc93cb0c35efa0d5119863c1ebda2f60343018788473c5a33f7a581967"
    }
  3. 执行拥有独立结果

    如实保留执行失败,不改写之前的决定。

    查看记录
    {
      "kind": "execution_receipt",
      "id": "execution-failed",
      "at": "2026-09-18T09:02:00.000Z",
      "decision_ref": "decision-failed",
      "decision_hash": "sha256:0c13d6cc93cb0c35efa0d5119863c1ebda2f60343018788473c5a33f7a581967",
      "candidate_ref": "workflow:creative-review",
      "status": "execution_failed",
      "change_ref": "change:synthetic-example",
      "content_hash": "sha256:938dd4a03c4c16e257a65842ff16fb416fe7bb0acd00ee9be6f1e3ca8399d4d4"
    }
  4. 评价证据

    现有证据不足以确认,评价保留为不确定。

    查看记录
    {
      "kind": "evaluation_result",
      "id": "evaluation-failed",
      "at": "2026-09-18T09:03:00.000Z",
      "execution_ref": "execution-failed",
      "execution_hash": "sha256:938dd4a03c4c16e257a65842ff16fb416fe7bb0acd00ee9be6f1e3ca8399d4d4",
      "candidate_ref": "workflow:creative-review",
      "status": "inconclusive",
      "evidence_complete": false,
      "checks_passed": false,
      "regression_found": false,
      "content_hash": "sha256:aea45a6dc7e34ad691ee50c80ca498b0640115cf698cd92acaa0dacd1f246304"
    }
执行完成,证据仍然不足
  1. 记录提案

    提案等待审查。此时没有批准,也没有执行。

    查看记录
    {
      "kind": "review_proposal",
      "id": "proposal-uncertain",
      "at": "2026-09-18T09:00:00.000Z",
      "candidate_ref": "workflow:creative-review",
      "version": 1,
      "reason": "Try an explicit confirmation step before applying a suggested edit.",
      "status": "review_pending",
      "content_hash": "sha256:75498a88e2cbf7aaf63c75a94a7c851008af57bfd275df673b7716fb09f5d5f1"
    }
  2. 独立的人工决定

    审查者允许有限试运行,这不等于结果成功。

    查看记录
    {
      "kind": "review_decision",
      "id": "decision-uncertain",
      "at": "2026-09-18T09:01:00.000Z",
      "proposal_ref": "proposal-uncertain",
      "proposal_hash": "sha256:75498a88e2cbf7aaf63c75a94a7c851008af57bfd275df673b7716fb09f5d5f1",
      "candidate_ref": "workflow:creative-review",
      "candidate_version": 1,
      "decided_by": "local_user",
      "status": "authorized_for_trial",
      "content_hash": "sha256:a8f062759c7be8a3528c0bffc04c193c094822440a1fd3ed7067eb5c70400476"
    }
  3. 执行拥有独立结果

    执行记录说明操作已完成,不代表产品质量得到确认。

    查看记录
    {
      "kind": "execution_receipt",
      "id": "execution-uncertain",
      "at": "2026-09-18T09:02:00.000Z",
      "decision_ref": "decision-uncertain",
      "decision_hash": "sha256:a8f062759c7be8a3528c0bffc04c193c094822440a1fd3ed7067eb5c70400476",
      "candidate_ref": "workflow:creative-review",
      "status": "executed",
      "change_ref": "change:synthetic-example",
      "content_hash": "sha256:6ef722d4e4726a926bf28b875dbaf78e79109ea0ca187813ec280a0a5c09bb78"
    }
  4. 评价证据

    现有证据不足以确认,评价保留为不确定。

    查看记录
    {
      "kind": "evaluation_result",
      "id": "evaluation-uncertain",
      "at": "2026-09-18T09:03:00.000Z",
      "execution_ref": "execution-uncertain",
      "execution_hash": "sha256:6ef722d4e4726a926bf28b875dbaf78e79109ea0ca187813ec280a0a5c09bb78",
      "candidate_ref": "workflow:creative-review",
      "status": "inconclusive",
      "evidence_complete": false,
      "checks_passed": false,
      "regression_found": false,
      "content_hash": "sha256:9b2f342354b9ff6922be283e176161e371e81726506eb5611ee443beecfee2e2"
    }