那个让你崩溃的 30 分钟

如果你用过复杂的长程 Agent,大概率经历过这个场景:

Agent 开始工作——读文件、搜索网页、启动子 Agent、写代码、再读文件、再写文件……30 分钟后,终于给出一份合同。

你一看:第三条不太对。

"这里有个错误,能看看另一份文档吗?"

然后你看到了那个画面——Context Compaction(上下文压缩)。你知道完了,它要把之前的一切都忘掉了。

它继续跑,给了你第二版合同。改了第三条吗?大概率不止。整份合同面目全非。

这就是今天复杂 Agent 的现状。


Verifier's Rule:任务的可验证性决定一切

这是 Jason 提出的 Verifier's Rule:如果一个任务可解决且易验证,AI 最终会解决它。

这个规则对 Agent 同样适用——只要你能把任务变得可验证,就可以让 Agent 循环跑,告诉它"这里错了,改",它迟早会对。

但不同行业、不同任务,在"可验证性光谱"上的位置天差地别。

拿法律行业举例:

  • 定义检查:超级简单验证——这个术语有没有被定义?定义是否一致?写个 linter 就能搞定。
  • 合同撰写:容易解决,但极难验证。你写了一份合同,怎么知道它写得好?只有当它上了法庭、被法官判定有效时,你才能真正验证。而那是几年后的事了。
  • 诉讼策略:几乎无法验证。你问五个律师该用什么策略,会得到五个不同的答案。没有客观真相,AI 也很难做好。

对比编程:写一个可运行的消费者 App 很容易,但验证它"成功"几乎不可能——用户体验、市场反应、竞争格局,全是无法量化的维度。

这意味着:垂直 AI 的核心任务,不是让 AI 干所有事,而是找到人类真正该介入的地方。


两个核心维度:Trust 和 Control

Human-Agent 协作有两个彼此正交的维度:

Trust(信任)—— 任务能否交给 Agent 闭环完成?

Trust 决定你需要多少 Review。如果 Trust 很低,你会逐条审查每一步 trace;如果 Trust 很高,你直接看结果。

提高 Trust 的方法:

1. 降低任务的验证难度

比如做功能开发,加上测试驱动、加上浏览器自动化,任务就变成了可验证的——测试过了就算成功。Agent 在高验证性条件下表现会好得多。

在法律场景里,合同本身难验证,但可以找验证代理——拿历史合同做参照,新合同是否与已知有效的合同结构相似?这就是一个可量化的代理指标。

2. 任务分解

把"写一份合同"拆成多个子任务:定义检查(容易验证)、格式标准化(容易验证)、风险条款判断(需要人工)——让 Agent 只做它能做好的那部分。

3. 加上护栏(Guardrails)

限制 Agent 能做的事:只能编辑这三个文件、只能读取这个目录、只能搜索这几个网站。限制即信任——你知道它不会做出格的事。

Control(控制)—— 你能把你的判断有效地灌入 Agent 的工作流吗?

复杂 Agent 的工作本质上是一棵 DAG(有向无环图):研究 → 审阅 → 起草 → 审核 → 输出。

Control 的演进阶段:

  • 无 Control:Agent 拿到任务后闷头干,最后给你结果。你只能在根节点输入,之后就是黑箱。
  • Planning(规划):Agent 先跟你对齐方案,再动手。比无 Control 好,但你依然只能做全有或全无的选择——要么接受整个计划,要么从头再来。而且规划阶段 Agent 必须把所有问题都问完,但有些信息它还没读到文件时是不知道的。
  • Skills(技能):把人类判断编码成技能,写进 DAG 的各个节点。比如"审阅保密条款时,用这套特定方法",Agent 执行到该节点时自动调用。Skills 支持** contingencies(偶发情况处理)**——预判到某些特殊情况时,知道该怎么处理。
  • Elicitation(追问):Agent 遇到不会的情况,主动来问你。不是阻塞等待,而是记录自己的决策后继续推进,并把决策日志留给你事后审查。

Chat 是最低效的协作界面

这是我认为最反直觉、也最重要的观点:Chat 是人类受限的接口,不应该成为 Agent 的限制。

当你的任务树有 10 层、100 个节点、50 个需要人工判断的节点时,Chat 根本无法承载。你面对的将是一条无限长的聊天记录,不知道该从哪里回答、该提供什么上下文。

Chat 是一维的、低带宽的——它把所有树状的工作流强行压成一条线。

那该用什么?

高带宽、持久化的协作媒介。在不同的垂直领域,这会不同:

  • 在法律行业,是文档——你可以只高亮第三条,它只改第三条;可以加评论;可以标记需要人工审核的段落;可以把特定章节分配给专门的 Agent。
  • 也可以是表格化的审阅视图——Agent 批量处理完所有合同,高亮出需要你判断的几个关键点,你快速扫完,直接 kick off 下一阶段。
  • 在代码场景,可能是结构化的 PR diff、测试报告,而不是一条聊天记录。

这些 Artifact 是持久化的——Agent 和人类都可以回头看、增量更新、局部修改,而不是每次都要从头交代上下文。


语言是人类受限的接口,Agent 不该被它束缚

一个有趣的类比:

我今天跟一个候选人描述我们公司的组织架构,受限于语言,我只能用手比划——我真希望能画一张组织图让他直接操作。但我是人类,我被语言所限。

Agent 不受这个限制。

语言是人类发明的通用接口,因为它是我们能彼此交流的唯一方式。但 Agent 不是人类——它们可以处理结构化的、视觉的、多模态的信息。把 Agent 限制在自然语言里,就像让一个能读 X 光片的医生只能用文字描述病情。

自然语言适合作为输入层(用户告诉 Agent 要什么),但不适合作为唯一的输出和协作层。


写在最后

垂直 AI 的机会,不是让 AI 替代人类完成所有工作——而是在可验证的地方放手,在需要判断的地方保持控制

做到这一点,需要两件事:

  1. 理解你的垂直领域在可验证性光谱上的位置——知道什么能自动化,什么必须留给人。
  2. 设计合适的协作界面——让人类和 Agent 在高带宽的 Artifact 里协作,而不是在低带宽的 Chat 里互相折磨。

Chat 是起点,不是终点。