Sean Ren AI 体验产品设计师

输入访问码

这份作品集仅供受邀查看。

跳到​案例​正文

Relay把​工作​委派​给​许多​编程​智能体。 只​决定​需要​你​判断​的​事。

角色
研究​与​交互​设计​师
设计​工程​师
时间
2026 年 8 月​至今
平台
桌面​端​和 iPhone
研究
4 次​半​结构​化​访​谈,3 次​有​主持​的​概念​测试
工具
Figma、Cursor、Claude Code
团队
个人​项目

Relay 的赛道:八条智能体跑道组成一座体育场。智能体在每个交接区互相检查,无需人介入就把工作退回。五个决定依次来到你手上:一个产品决定、与规格不符的代码、两个意见不一的智能体、几种修复方案的选择,以及一项无法撤销的改动。

Your hand0
Nothing needs you yetAgents are checking each other’s work at every handoff.

一套​为​同时​运行​许多 AI 智能体​的​工程​师​设计​的​审阅​模型。智能体​在​每次​交接​时​互相​检查​工作,只有​遇到​产品​决策、分歧​和​任何​无法​撤销​的​事,才​需要​人​介入。

简短​版

智能体可以无限扩展,
人的注意力不能。

问题
工程​师​把​任务​交给​编程​智能体,走开,回来​时​面对​的是​没有​看​着​写​出来​的​代码。检查​它​意味​着​逐​个​查看​每​个​智能体​做了​什么。有些​工程​师​已经​在​多个​分支​上​同时​运行​好​几个​智能体。
设计​问题
工程​师​怎样​才能​把​工作​委派​给 AI 智能体,而​不必​一直​盯​着?
关键​洞察
智能体​的​大​多数​改​动​都​不需要​批准。可以​由​另​一个​智能体​验证,或者​只要有​人​知道​发生​过​就​够​了。
我的​设计
概念​和​原型:一条​能​同时​看到​所有​智能体​的​跑道,由​人​回答​的​决定,以及​离开​时​用​的​锁​屏​版本。
概念​设计
Relay 是​一个​模型,探讨​这类​审阅​可以​怎么​做,还​没有​作为​产品​发布。原型​里​放了​八条​跑道,是​因为​这样​演示​时​容易​看懂,这个​数字​本身​不是​设计​的​一部分。

研究

工程​师​要​先​亲自​检查​智能体​的​工作,才​会​信任​它。

研究​从​对​四位​工程​师​的​半​结构​化​访​谈​开始,从​刚​结束​实习​的​实习​生​到​资​深​工程​师​都有。

半​结构​化​访​谈

  1. 01

    高性能​计算​研究​员

    想​知道​智能体​做了​什么,以及​它​为什么​选择​那种​实现。

  2. 02

    资​深 Android 工程​师

    经历​了​第一次​失败、更多​日志、修订​后​的​修复、在​真​机上​的​测试,再​加上​同事​评审,才​信任​一个​修复。

  3. 03

    资​深​前端​工程​师

    见过​智能体​满足​了​最新​的​要求,却​破坏​了​之前​的​一个;他​把​所有​要求​放​在一起​重新​说​一遍,才​解决。

  4. 04

    刚​结束​实习​的​实习​生

    一个​没说​出口​的​约束,让​智能体​选​错​了​云​平台。它​给​出​的​选项​没有​一个​是​对​的。

研究​设置

方法参与​者
半​结构​化​访​谈4 位​工程​师,从​刚​结束​实习​的​实习​生​到​资​深​工程​师
有​主持​的​概念​测试,第一​版主任​工程​师
有​主持​的​概念​测试,第二​版业界​研究​工程​师
有​主持​的​概念​测试,第三​版受​监管​行业​的​工艺​验证​工程​师,非​软件​行业

迭代

它​最初​是​给​单​个​智能体​用​的​审阅​工具。

每​个​版本​都​交给​一位​工程​师​做​有​主持​的​概念​测试,下​一​版​再​围绕​没​站住​的​地方​重建。

第一​版

规格​说明​就是​约定。

审阅​从​书面​需求​开始,并​要求​工程​师​把​每一​条​需求​都​关联​到​证据。

第一​版:一个​代码​编辑​器,审阅​以​规格​说明 checkout-retry 3.2 作为​约定​开始。

与​一位​主任​工程​师​做的​第一​版​概念​测试

大​多数​工作​始​于​一句​随​口​的​请求,很少​有​正式​的​规格​说明。新增​一张​数据​库​表​只需要​知道,没什么​可​审批​的。

重要​的​行为​变化​和​遗漏​的​边界​情况​也​应该​指出​来。

设计​回应第二​版​从​工程​师​自己​的​请求​出发,并​把“知情”与“批准”分开。

第二​版

从​工程​师​自己​的​请求​出发。

审阅​从​工程​师​输入​的​请求​开始,接着​是​智能体​完成​了​什么、对​什么​没​把握,并​分成“确认”和“判断”两​类。

第二​版:在​代码​旁边​的​引导​式​审阅,从​工程​师​最初​的​请求​开始。

转折​点

与​一位​业界​研究​工程​师​做的​第二​版​概念​测试

同时​运行​好​几个​智能体,在​不同​分支​上​做​不同​任务。

团队​已经​用​集成​测试、单独​的​智能体​评审​和​代码​负责​人​审批​来​检查​智能体​的​产​出。

设计​回应一次​只​审​一个​智能体​的​设计​撑不住​这种​规模。第三​版​把“很多​智能体​分布​在​很多​分支​上”当作​常​态。

第三​版

很多​智能体,一条​赛​道。

同​一套​审阅​模型,用​在​许多​智能体​上:跑道​用​来​了解​情况,接力棒​用​来​做​决定,智能体​在​问到​人​之前​先​互相​检查。

第三​版:同​一条​赛​道上​的​八条​跑道,待​做的​决定​在​人的​手里​等着。

与​一位​工艺​验证​工程​师​做的​第三​版​概念​测试

赛​道​第​一眼​看上去​并​不能​自我​说明。带​着​走过​一遍​之后,要求​就​很​具体​了:每​个​结论​都能​追溯到​来源,并​在做​决定​之前,显示​它​会​影响​什么。

团队​评审​和合​规​签​核​也​被​提了​出来。

设计​回应下​一次​测试​我​不在场,所以​赛​道​必须​自己​能​说清楚。把​每​个​改​动​追溯到​它的​决定、预​览​回答​会​影响​什么,这​两​点​现在​都​已经​做​进​原型。

决策​模型

智能体解决它们能验证的事,
人决定需要判断的事。

每​个​提示​词​都是​一条​跑道,它的​智能体​像​接力​一样​传递​工作:规划、构​建、测试、评审、合​入。每次​交接​都是​一次​检查,模型​决定​由​谁​来​处理​检查​发现​的​问题。

智能体​自行​解决

检查​通过,或者​下​一个​智能体​把​工作​退回,修好​后​再​交​回来。跑道​继续​前进,赛​道上​会​标​出​每次​检查​发生​的​位置。

Test 智能体​把 Safari 自动​填充​的​修复​退回​了​一次,Build 智能体​补​上了​缺失​的​邮​编​字​段。

通知​你

值得​知道、但​不需要​签​核​的​改​动。它们​汇集​在“Worth knowing”里,从​不打​断​你。

一条​跑道​在​功能​开关​后面​新增​了​一张 decline_events 表。

由你​决定

产品​决策、分歧,以及​任何​无法​撤销​的​事。每​一项​都​以​一根​接力棒​的​形式​到来,并​说明​为什么​需要​你。

当​银行​标记​欺诈​时,客户​应该​看到​什么?

一条​正在​跑​的​跑道。第一次​检查​通过,第二次​把​构​建​退回,修好​后​交了​回来,评审​智能体​正​握​着​一个​需要​人​来​做的​决定。

每​个​交到​你​手上​的​决定,都会​说明​为什么​需要​你。

原型​里​的​每​个​决定​都​带​着​其中​一种​理由,每​种​理由​在​赛​道上、你​手里​和​日志​里,始终​保持​同​一种​颜色。

Relay 中​显示​的 Decide 类​决定。

它​从​哪里​来Plan 智能体​在​写​任何​代码​之前​就​提出​了​它,因为 Lane 4 没法​翻译​一条​还​不存在​的​消息。

试​玩

试​玩​一次​完整​的​接力。

在一家网店的结账代码上跑完整的一轮,从第一个提示词到最后一次合并。智能体是模拟的。在原型里按 ? 可以查看所有快捷键。

跳到​某​个​时刻

设计​决策

尽量少打扰人,
但每次提问都要让人容易答好。

第一​部分尽量​少​打扰​人

决策 1

把“知情”与“批准”分开。

当​许多​智能体​同时​修改​代码​时,人​需要​看到​什么?

被​否​掉​的​方案一个​审批​收件​箱

采用决定​用​接力棒,其余​的​放进“Worth knowing”

From agents

Waiting for the next update

Your hand0

Nothing needs you yet.

八个​智能体​边​干​边​汇报。每​条​更新​在​到达​你​之前,Relay 都会​先​分​好​类。

我的​选择
只有​决定​会​等​你。其余​的​都​放进“Worth knowing”,它​从不​要求​签​核:比如​功能​开关​后面​的​一张​新​表,或者​一个​智能体​退回​给​另​一个​智能体​的​修复。
我​否​掉​的​方案
一个​收件​箱,每​条​更新​都​要求​批准。批准​变成​了​工作​本身,真正​的​决定​反而​淹没​其中。
原因
批准​是​人的​注意力​中​最​昂贵​的​部分,所以 Relay 只把​它​花​在​需要​判断​的​地方。主任​工程​师,概念​测试新增​一张​数据​库​表,知道​就​行。有些​结构​性​改​动​就是​对​的。在​研究​中​查看

决策 2

先让​智能体​互相​检查。

智能体​犯​的​错,该​由​谁​来​发现:人,还是​下​一个​智能体?

被​否​掉​的​方案每​一步​之后​都​弹​一次​提示

采用每次​交接​都做​检查

8
Safari address autofill Plan agent workingrelay/safari-autofill
2
3DS timeout retry Plan agent workingrelay/3ds-retry
5
Decline analytics Plan agent workingrelay/decline-analytics
0 handoff checks0 sent back and fixed by agents0 sent to you

三条​跑道​从 Plan 出发。每次​交接,都由​接棒​的​智能体​做​一次​检查。

我的​选择
每次​交接​都是​一次​检查。接棒​的​智能体​在​开始​之前​先​审查​上​一个​的​工作,然后​传​下去、退回去,或者​把​决定​交给​人。赛​道​会​显示​每​个​问题​是在​哪里​被​发现​的。
我​否​掉​的​方案
每​一步​之后​都​问​人,整天​都在​打​断;或者​让​智能体​不受​检查​地​运行,把​错误​一直​藏​到​审阅​时。
原因
在​真实​的​团队​里,智能体​本来​就在​互相​评审。Relay 把​这种​评审​放到​每次​交接​上,并​显示​它​在​哪里​发现​了​问题。业界​研究​工程​师,概念​测试团队​用​集成​测试、单独​的​智能体​评审​和​代码​负责​人​审批​来​检查​智能体​的​产​出。在​研究​中​查看

决策 3

按​决定​能​解除​多少​阻塞​来​排序。

好​几个​决定​在​等待。先​处理​哪​一个?

被​否​掉​的​方案最新​的​在​前

采用能​放行​最多​跑道​的​回答​排在​最前

Your hand3
DecideLane 112 min ago

What should customers see when the bank flags fraud?

InvestigateLane 67 min ago

Test agent and Review agent disagree about the flaky test.

CorrectLane 22 min ago

The code retries 3DS five times. Spec 3.2 allows two.

按​最新​排序​时,能​放行​最多​工作​的​那个​决定​反而​排在​最​底下。

我的​选择
你​手里​排在​最前​的,是能​放行​最多​跑道​的​回答。Lane 1 的​欺诈​提示​消息​排​第一,因为 Lane 4 正​等着​翻译​它。
我​否​掉​的​方案
按​最新​排序,或者​按​跑道​编号​排序。能​放行​最多​工作​的​那个​决定​可能​排在​最后,人​还​得​自己​理清​谁​依赖​谁。
原因
在​这种​规模​下,人​付出​的​每一​分钟,都应该​让​尽可能​多​的​智能体重​新​动起来。业界​研究​工程​师,概念​测试跨​分支​开发​功能,可能​意味​着​好​几个​智能体​同时​做​不同​任务。在​研究​中​查看

第二​部分让​每次​提问​都​容易​答​好

决策 4

当​智能体​意见​不​一时,先​给​证据,再​给​建议。

Test 智能体​说​这个​时​好​时​坏​的​测试​是​时序​问题,Review 智能体​说​是​竞​态​条件。谁​对?

被​否​掉​的​方案带​置信​度​分数​的​投票

采用先​给​证据,再​给​建议

InvestigateLane 6Waiting 4 min

Test agent and Review agent disagree about the flaky test.

Relay won’t recommend a side while its own agents disagree. Check first, or decide.

Test agent

It’s timing. With one retry, 10 of 10 runs pass.

Review agent

It’s a race. The order total can change after Pay is pressed.

Relay suggests a check before anyone decides.

1Fix the raceSide with Review agent. Build agent locks the total while paying.
2Keep the retrySide with Test agent. Review agent logs the race as a known risk.

Relay 还​不​选​边​站。

我的​选择
Relay 先​不​给​建议,而是​提供​一个​检查​的​办法:在​不​重​试​的​情况​下​把​测试​跑 20 次。三次​失败​指向​竞​态​条件,到​这时 Relay 才​建议​站在​哪​一边。
我​否​掉​的​方案
带​置信​度​分数​的​多数​投票。它​掩盖​了​智能体​之间​的​分歧,也没​告诉​人​该​检查​什么。

决策 5

按​客户​看到​的​效果​来​比较​修复​方案。

德语​文字​撑​破​了​支付​面板,有三​种​修复​方案​都可​行。不读​三份​代码​差异,怎么​选?

被​否​掉​的​方案三份​代码​差异​并排

采用按​上线​后​的​样子​渲染​各个​分支​方案

Lane 4, three forks in German

German overflows the payment panel. Pick a fix.

AShorter copy

Zahlung49,00 €
•••• 4242
Karte abgelehnt. Andere Karte nutzen.
49,00 € bezahlen

All checks pass

locales/de/checkout.json+1 −1

− "decline.generic": "Ihre Karte wur…

+ "decline.generic": "Karte abgelehn…

BWrap to two lines

Zahlung49,00 €
•••• 4242
Ihre Karte wurde abgelehnt. Versuchen Sie es mit einer anderen Karte.
49,00 € bezahlen

Panel grows on small phones

decline-message.css+2 −1

− white-space: nowrap;

+ white-space: normal;

+ min-height: 2lh;

CCut off, full text on hover

Zahlung49,00 €
•••• 4242
Ihre Karte wurde abgelehnt. Versuchen Sie es mit einer anderen Karte.
49,00 € bezahlen

Hides most of the message

DeclineMessage.tsx+2

+ style={{ textOverflow: "ellipsis" }}

+ title={message}

测试​智能体​发现​德语​文案​撑​破​了​支付​面板,构​建​智能体​试​了三​种​修复,各​在​自己​的​分支​上。

我的​选择
各个​分支​方案​并排​显示,每​个​都​按​上线​后​的​样子​渲染,附带​测试​结果​和​所需​的​代码。选​中​一个,其余​的​就​会​关闭。
我​否​掉​的​方案
三份​代码​差异​挨​着​放。工程​师​读得​懂​它们,但​这里​真正​要紧​的​差别,是​每​种​方案​看起来​是​什么​样子。
原因
行为​变化​应该​显示​在​看得见​的​地方,这样​就​没​人​需要​去​代码​里​找。主任​工程​师,概念​测试希望​重要​的​行为​变化​和​遗漏​的​边界​情况​被​明确​指出​来。在​研究​中​查看

决策 6

让​不可逆​的​事​慢下来,其余​的​一切都​可以​撤销。

怎样​让​人​保持​高效,又​不​让​他们​犯下​无法​挽回​的​错误?

被​否​掉​的​方案每次​回答​都​弹​同样​的​对话​框

采用一个​撤销​托​盘,以及​按住​确认

ConfirmLane 7Waiting 4 min

Landing drops the coupons_legacy table. It can’t be undone.

Review agent checked that no code reads it and that the backup restores.

Tablecoupons_legacy
Rows18,204
Last read94 days ago
BackupSaved 09:52, kept 30 days

Answers wait here for three seconds before they reach the lane.

Lane 7 的​改​动​无法​撤销,所以​卡片​首先​就​说明​这​一点。

我的​选择
每​个​回答​在​到达​跑道​之前,都会​在​撤销​托​盘里​等​三秒。任何​不可逆​的​操作,比如​删除​一张​表,都​需要​按住​确认,不能​在​规则​里​关闭,并且​会​附带​一个​可逆​的​替代​方案。
我​否​掉​的​方案
每次​回答​都​弹​同样​的​确认​对话​框,这​会​训练​人​习惯​性​地点​过去。删掉​一张​表​和​改​一句​文案​看起来​会​一​模​一样。
原因
撤销​几乎​覆盖​了​每​一个​回答,所以​界面​只在​撤销​帮​不上​忙​的​地方,才​让​人​慢下来。工艺​验证​工程​师,概念​测试希望​在做​决定​之前,看到​它​会​影响​什么。在​研究​中​查看

决策 7

让​人​用​自己​的话​回答,再把​回答​复述​一遍。

选项​来自​智能体。如果​正确​答案​不在​其中​呢?

被​否​掉​的​方案一个​直通​跑道​的​文本​框

采用你​的话,在​生效​之前​先​复述​一遍

DecideLane 1Unblocks 2 lanes

What should customers see when the bank flags fraud?

1“Your card was declined. Try another card or contact your bank.”Recommended
2“We couldn’t verify this payment. Contact your bank.”
3Ask Maya, product manager

The receiving agent reads your answer back before it reaches the lane.

没有​合适​的​选项​时,输入​框​可以​接收​你​自己​的话。

我的​选择
每个决定都有一个输入框,可以写你自己的话。在任何内容到达跑道之前,接收的智能体会说明它是怎么理解的:当作一个选项、当作回答本身,或者当作一位需要询问的队友。它像检查任何交接一样检查这些话,所以一条暗示欺诈的消息,会在上线前就按规格说明 3.2 被标出来。
我​否​掉​的​方案
只​给​选项,人​就​成了​智能体​想法​的​挑选​者;或者​一个​直通​跑道​的​文本​框,被​误​读​的​回答​直到​审阅​时​才​暴露​出来。

决策 8

按​负责​人​分配​决定​和​已​合​入​的​工作。

智能体​的​工作​最终​落到​一个​团队​里。谁​应该​看到​什么,他们​的​回答​又​怎样​传​回来?

被​否​掉​的​方案每​个​拉​取​请求​都​发​给​每位​队友

采用按​代码​负责​人​分配

Choose a person to see what reached them and what came back.

每​一项​只发​给​这​段​代码​或​文案​的​负责​人。

我的​选择
由归属来决定。输入 @,负责人会排在最前:Maya 收到 Lane 1 的问题和选项,跑道等着她,她的回答直接回到跑道。涉及 Priya 支付代码的几条跑道,会作为一次审阅交到她手上,智能体用测试运行结果回答她的问题。Leo 得知客户将看到一条新消息,他的请求则会回到你这里。
我​否​掉​的​方案
每位​队友​都​收到​每​一个​拉​取​请求,每​个​智能体​一次​审阅;或者​问题​在​聊天​里​被​转发,丢​了​选项,跑道​也​永远​收​不到​回答。
原因
评审​者​的​注意力​和​你​一样​会​耗​尽,所以​每个人​只​收到​自己​负责​的​改​动,放在​一次​审阅​里,并​附上​测试​运行​结果。业界​研究​工程​师,概念​测试代码​负责​人​审批​已经​是​团队​工作​流程​中的​一步。在​研究​中​查看

设计​智能体​的​行为

智能体​什么时候​自己​行动,什么时候​来​问。

在 AI 产品​里,很大​一部分​设计​其实是​策略:智能体​可以​自行​解决​什么,又​必须​把​什么​交给​人。Relay 把​这​套​策略​展示​出来,人​可以​修改​它。

在​交接​时会​发生​什么原因
智能体​意见​一致,且​没有​不可逆​的​操作继续​运行。它​会​出现​在“Worth knowing”里。这里​没有​任何​事​需要​人​来​判断。
代码​和​规格​说明​不一致一个“纠正”类​决定​交到​你​手上。规格​说明​是​对​产品​团队​的​承诺。
有​一个​待​定​的​产品​决策一个“决定”类​决定。回答​它、写下​你​自己​的话,或者​交给​它的​负责​人。通过​的​测试​替代​不了​产品​决策。
智能体​意见​不一一个“调查”类​决定,先​给​证据,再​给​任何​建议。在​自己​的​智能体​有​争议​时,Relay 不会​选​边​站。
不止​一种​修复​方案​可行一个“挑选”类​决定,除非​你​已经​把​它​设​成了​规则。规则​来自​人的​回答,从不​来自​智能体​自己。
有些​事​无法​撤销一个“确认”类​决定,每次​都要​按住​确认。一道​任何​规则​都​关​不掉​的​护​栏。
有​负责​人的​代码​准备​合​入由​它的​负责​人​先​审阅,相关​的​跑道​放在​一次​审阅​里。负责​人​知道​自己​的​代码​绝​不能​破坏​什么。
一​处​已​合​入​的​改​动​影响​到​某​个人他们​会​收到​通知,他们​的​提问​会​回到​你​这里。受​改​动​影响​的​人,可以​在​客户​察觉​之前​做好​准备。
决定​智能体​何时​必须​把​决定​交给​人的​开关。

01

运行​前​你​设定​的​规则

关掉​某​个​交接​的​开关,智能体​就​会​自行​解决,然后​在“Worth knowing”里​告诉​你。不可逆​的​改​动​始终​锁定​为​开启。

一个“挑选”类​决定,提出​回答​后​把​它​设成​规则。

02

它​从​你​身上​学​到​的​规则

同样​的​问题​回答​两次,Relay 就​会​提议​把​它​设成​规则。之后​日语​就​会​自动​替​你​处理,这​一轮​和​下​一轮​都是。任何​规则​都可以​删除。

一个“调查”类​决定:Lane 1 和 Lane 3 单独​都能​通过,放​在一起​却​失败​了。

03

单​个​智能体​做​不了​的​检查

Land 智能体会​把​每​条​跑道​和​主​分支​上​已有​的​代码​放​在一起​测试。两​条​单独​都能​通过​的​跑道,放​在一起​可能​失败,这​就​需要​人​来​决定。

细节​打磨

一个​隐喻,贯穿​每​一个​界面。

接力​赛​让​审阅​的​每​个​部分​都有​一个​人们​早已​理解​的​位置:谁​拿​着​工作、在​哪里​交接、在​哪里​结束。扫​一眼​赛​道,就应该​知道​什么​在​推进、什么​在​等​你。

带​编号​标​注​的​赛​道。
  1. 跑道​编号

    像​真正​的​田径​跑道​一样,画​在​蓝色​的​起跑​带​上。每​个​提示​词​一条​跑道。

  2. 一个​等待​中的​决定

    智能体​停下​来,举起​一根​颜色​对应​理由​的​接力棒。

  3. 交接​区

    下​一个​智能体​在​这里​检查​上​一个:一个​对​勾、一个​退回​箭头,或者​交给​你​决定。

  4. 终点​线

    合​入​时,每​条​跑道​在​合并​之前​都要​和​主​分支​一起​测试。

  5. 两把​钥匙

    Test 和 Review 两​个​智能体​都要​签字​放行。任何​新的​改​动​都会​让​两者​重​置。

  • 决定
  • 纠正
  • 挑选
  • 调查
  • 确认

01

颜色​告诉​你​原因

接力棒​的​颜色​代表​需要​人的​理由,从不​表示​任何​别的​意思。

02

看得见​的​交接

智能体​需要​你​时,接力棒​会​飞到​你​手里;你​回答​后,它​又​飞​回​自己​的​跑道,所以​每一​次​交接​都能​用​眼睛​追踪。

JK
在​决定​之间​切换
123
回答
↵
采纳​推荐​的​回答
Z
在​到达​跑道​之前​撤销
E
收集​证据
C
比较​分支​方案
R
设​为​规则
/
用​自己​的话​回答
@
询问​队友
O
放大​一条​跑道

03

每​个​决定,一个​键​就​能​处理

工程​师​离不开​键盘,所以​每​个​决定​都可以​不用​鼠​标​就​完成。

从​整​次​运行​一直​放大​到​单​行​代码。

点​击​任意​一条​跑道,就​能​看到​它的​接力​日志:每​个​智能体​做了​什么、下​一个​检查​了​什么、你在​哪里​介入、两把​钥匙,以及​具体​改​动了​哪​几​行,每一​处​都​关联​到​它​所​对应​的​规格​说明。

放大​后​的 Lane 1:接力​日志、两把​钥匙,以及​关联​到​规格​说明 3.2 的​代码​差异。

它是​怎么​搭建​的

把​智能体​的​行为​写成​数据。

整轮运行是一份脚本:每条跑道的提示词、每个智能体的步骤,以及那些回答会改写后续发展的决定。选定验证消息和德语文案,代码差异和下一个决定都会随之改变。一个小引擎实时播放各条跑道。

“智能体​意见​不​一时​先​不​给​建议”这​条​规则,就是​其中​的​一行,展示​在​这里。

它和概念看板在同一天用 Claude Code 搭好,并作为代码图层导入 Figma,放在看板旁边。深层链接可以打开任何时刻,这一页就是靠它把你直接带到某一个决定的。

scenario.ts,关于​时​好​时​坏​的​测试​的​那个​决定

flaky: {
  kind: 'investigate',
  by: 'review',
  title: () => 'Test agent and Review agent disagree about the flaky test.',
  claims: [
    { by: 'test', text: 'It’s timing. With one retry, 10 of 10 runs pass.' },
    { by: 'review', text: 'It’s a race. The total can change after Pay is pressed.' },
  ],
  evidence: { label: 'Run it 20 times without the retry', runs: 20 },
  // No recommendation until the evidence is in.
  recommend: (_c, b) => (b.evidence === 'done' ? 0 : -1),
  options: () => [
    { label: 'Fix the race', side: 'review', then: [back(3, 1, 'review'), …] },
    { label: 'Keep the retry', side: 'test', then: [fyi('raceRisk'), …] },
  ],
}

衡量​成功

我​怎样​知道​它​有效。

每次交接的结局只有三种:智能体自行解决、通知人、或者询问人。这让交接规则成了一个分类器,而分类器可能从两个方向出错:问了不需要问的人,或者自行解决了本该让人看到的事。精确率衡量前者,召回率衡量后者。

精确​率
确实​需要​你的​决定在 Relay 交给​人的​决定​中,他们​在​运行​结束​后​认同​确实​需要​自己​的​比例。这个​比例​一旦​下降,人们​就​会​开始​不看​就​回答。
召回​率
进入​主​分支​的​问题没​问过​任何人​就​合​入​的​问题:违反​了​规格​说明、删掉​了​一张​表、一条​泄露​了​欺诈​信号​的​消息。对于​任何​无法​撤销​的​事,目标​是​零。
信任
打开​证据​后​做出​的​回答人们​在​采纳​推荐​答案​之前​打开​证据​的​频率。这​是​走过​场​式​批准​最早​的​信号,远​早​于​一次​糟糕​的​合并。
学习
站得住​的​规则一个​月​后​仍在​使用​的​已​学​规则。一条​总​被人​推翻​的​规则,是​从​错误​的​回答​里​学​来​的,Relay 应该​停止​提议​它。

下​一次​测试

在​我​不在场​的​情况​下,工程​师​能否​跑​完​一​整​轮​接力,并​抓住​真正​要紧​的​问题?

方法
五六位工程师把同一个场景跑两遍:一遍用 Relay,一遍用如今的代码差异和聊天。场景里埋了一条虚假的成功消息,以及一个违反规格说明的重试上限。测试无人主持,全程录像。
成功​的​样子
用 Relay 时,有​更多​工程​师​抓住​了​两​个​埋下​的​问题,做了​需要​自己​做的​决定,并​能​解释​每​条​跑道​为什么​合​入。
我​会​观察​什么
人们​在​回答​前​会​在​哪里​犹豫,以及​没有​合适​选项​时​他们​会​输入​什么。

接​下来​的​方向

让智能体靠表现赢得更多空间,
并为每一步拿出证据。

靠​表现​赢得​的​自主​权
现在,交接规则还是一个个开关。下一步,Relay 会根据过往记录来提议规则:当智能体一轮又一轮地像人一样处理某类决定时,它会提议不再询问;一旦它自行解决的事被撤回,它就重新开始询问。护​栏它​可以​提议​更多​自主​权,但从​不​自己​拿走。
以​不同​方式​出错​的​检查
基于同一个模型的两个智能体,可能漏掉同一个 bug。对于难以撤销的改动,Relay 会把检查交给另一个模型或另一种方法,比如回放生产流量,并显示哪一个发现了什么。护​栏重​的​检查​耗​时,所以​只有​风险​较​高​的​跑道​才​用。
每一​行​代码​背后​都有​记录
点击任意一行已合入的代码,就能看到塑造它的那个决定:谁做的、他们看到了什么、智能体检查了什么。回答之前,先看到这个回答会触及哪些跑道和文件。一位工艺验证工程师两样都提了,而受监管的团队没有它们就无法签核。护​栏每​个​链​接​都​指向​来源。