Agent Spec 是数字员工的劳动合同

Agent Spec Is the Labor Contract of a Digital Employee

前几天有人问我:Agent Builder 的终局是什么?

我没直接回答,先让他做了个实验:在 Builder 里输入一句话——「帮我创建一个采购数字员工」。

Builder 吐出来一份 YAML:

employee:
  role: 采购专员
mission:
  - 处理采购申请
context:
  - ERP
  - DingTalk
  - Supplier DB
permissions:
  - read_inventory
  - create_purchase_draft
boundaries:
  - cannot_approve_purchase
evals:
  - ...
# generated by hugo AI

我问他:你觉得这份 YAML 是什么?

他说:Agent 的配置文件。

我说:逐字段再看一遍。

他看了几秒,声音不太确定了:「这……是一份 JD?」

对。这就是这篇文章的核心判断:Agent Spec 不是软件描述,它是劳动关系的一份抽象。

Agent Spec Is the Labor Contract of a Digital Employee

Agent 不是源代码

先说清楚这个判断在讨论什么。Agent Builder 的完整技术栈有三层,每一层都是一个编译器加一份产物:

Human Intent
┌──────────────┐
│ Spec Compiler│   输入:「帮我创建一个采购数字员工」
└──────┬───────┘   输出:Identity / Role / JD / Context /
       ↓                  Tools / Permissions / Policies /
   Agent Spec             Boundaries / Evals
┌──────────────┐
│Agent Compiler│   输入:Agent Spec
└──────┬───────┘   输出:Agent Program / Agent Graph /
       ↓                  Skills / Tool Calls / Routing /
  Agent Program           Model Selection / Execution Policies
┌──────────────┐
│ Agent Runtime│   承载:Model / Context / State /
└──────┬───────┘          Tools / Sandbox / Execution
Digital Employee
# generated by hugo AI

如果只能选一个概念来命名 Agent Builder 的终局,我的选择是 Spec Compiler,不是 Agent Compiler

原因在层级关系里:Agent 本身不是被编译的「源代码」。Research Agent → Analysis Agent → Browser Agent → Approval Agent 这样的编排,是 Agent Program,是 编译产物。Builder 真正要解决的问题在上游——把一句话的意图,编译成那份完整的 Spec。

用一句话概括:Agent as Code 是实现形式,Agent Spec 才是抽象本体。

但「本体是什么」这个问题,还可以再往下推一层:Spec 这份本体,它的性质到底是什么?

逐字段读一遍:这不是配置,是入职材料

回到那份采购专员的 YAML。把它当成软件配置读,和把它当成员工材料读,是两种完全不同的体验:

Spec 字段当「软件配置」读当「员工材料」读
employee / role实体与类型工号与岗位
mission任务列表岗位职责(JD)
context数据源连接工作范围:能接触哪些系统和信息
permissionsAPI 授权工作授权
boundaries约束条件权限红线
evals测试用例绩效考核标准

注意一个事实:这份 YAML 里 没有一个字段在说「怎么实现」。全部字段都在回答另外四个问题——这个人是谁、能干什么、不能干什么、怎么考核。

而这四个问题,恰好是组织定义一个员工的全部内容,不是 系统定义一个程序的内容。系统定义程序靠接口、依赖、调用序列;组织定义员工靠岗位、授权、红线、考核。这份 Spec 用的全是后一套词表。

这不是巧合。它说明 Spec 的设计者——不管是有意识还是无意识——在写的东西根本不是软件规格书,而是 入职材料

劳动合同的三份合同

劳动合同拆开来看,从来不是一份文件,是三份合同叠在一起。Agent Spec 的字段结构,恰好和这三份合同一一对应:

第一份:社会契约。 mission 和 role 是岗位说明书——组织对这个角色的期待是什么。采购专员的 mission 是「处理采购申请」,这就是岗位存在的理由。

第二份:法律契约。 permissions 和 boundaries 是授权书——能签字的范围在哪,越权的红线在哪。cannot_approve_purchase 翻译成人话就是「不得越权审批」——这句话在每家公司的采购管理制度里都能找到原文,一字不差。

第三份:绩效契约。 evals 是考核标准——干得好不好的客观尺度。Evals 是新的 PRD 讲的是它在需求侧的含义,这里的含义是:evals 就是这个员工的绩效考核表。

把三份合同合起来看:劳动合同的本质就是这三样——你是谁、你被授权做什么、你怎么被问责。所以那个结论可以改写得更准确:

Spec Compiler 编译的不是代码,是劳动关系。

再看技术栈的最后一行,你会发现它早就泄露了答案——流水线的终点写的不是「一个跑起来的 Agent」,是 Digital Employee。编译目标本来就是员工,不是程序。

编译过程就是入职流程

这个视角还能解释一件产品设计上的事:为什么 Spec Compiler 必然是对话式的。

传统编译器的输入是形式化的源代码,编译是确定性变换——同一份 C 代码永远编出同一份二进制。Spec Compiler 不一样,它的输入是半结构化的意图,所以它的核心工作不是变换,是 消歧

  • 「这个采购专员,能自主审批吗?」
  • 「预算上限多少?」
  • 「供应商白名单归谁维护?」

这些问题不回答,Spec 就编译不完整。而这一问一答的过程,有个现成的名字叫:HR 办理入职

这直接推出 Agent Builder 的产品形态判断:这个赛道的赢家不会是又一个 IDE——没有人用 IDE 办入职。赢家的形态是 入职流程:提 JD、批权限、定考核、上岗、评估。今天大量 Builder 产品还在优化「怎么搭 graph、怎么配 tool」,那是在优化编译器的下半段,而真正的产品战场在上半段——怎么把一句话意图,谈成一份权责清晰的合同。

两个最尖锐的反方

「这是不是把配置文件过度诠释了?合同有甲方、有合意、有违约责任,一份 YAML 哪来这些?」

这个挑战问到了点子上,但答案恰恰在 Spec 里。违约机制是存在的:boundaries 会被编译进运行时成为 强制护栏——cannot_approve_purchase 不是写在 prompt 里的建议,AI 可以选择性遵守;它是编译出来的约束,越权动作根本执行不了。evals 会编译成验收门禁——持续不达标的 Agent 会被下线,这就是「不胜任」。

配置是建议,可以被违反;Spec 里的 boundaries 是强制,没有商量的余地。这也是「编译」这个词的分量所在:把意图变成可强制的结构。 合同之所以是合同,就因为它有强制力——Spec 有,所以它是合同,不是配置。

「模型会越来越强,将来直接消费原始意图,中间不需要 Spec 这一层。」

这是更强的反方,但它错在一个前提上:Spec 层不是为模型存在的,是为 组织 存在的。就算未来的模型能完美消费一句话意图,组织仍然需要一份白纸黑字的治理工件——这个 Agent 是谁、能干什么、出事谁负责。我在Anthropic 领先行业 6 个月——但只有前两层算数里论证过:上下文可以重建,责任不能。 模型进步消灭不了 Spec 层,只会让 Spec Compiler 的下半段越编越顺。

合同模板归谁:入职权就是问责入口

最后一个推论,也是最锋利的。

如果 Spec 是劳动合同,那么合同的甲方是组织。起草劳动合同的工具,天然应该长在拥有那套词表的地方——工号、岗位、审批链、考核制度,这些词组织平台用了二十年,模型厂商一个都没有。

按「Agent 是软件」的视角,Spec Compiler 应该归模型厂商,因为它们在做 Agent Compiler,顺手往上吃。但按「Agent 是员工」的视角,答案反过来了:谁定义了数字员工的劳动合同范本,谁就掌握了入职权——而入职权就是问责的入口。 没有入职记录的数字员工,出了问题无法追责;反过来,谁手里握着入职档案,谁就是组织问责体系的一部分。

这也回答了拟人化的数字员工里那条分界线:功能(Bot)和角色(数字员工)的区别不在能力上限,在行为模式——现在可以补上完整的答案:让一个 Bot 变成角色的,就是那份劳动合同。 签了合同,它才从「一个功能」变成「一个要对结果负责的岗位」。

结尾

回到开头那个问题。Agent Builder 的终局,不是做一个更好的 Agent 生成器——那是 Agent Compiler 的事,而且是模型厂商的主场。终局是做一个 数字员工的入职系统:把一句话意图,谈成一份权责清晰、可强制执行、可考核问责的劳动合同。

一个问题留给你:你组织里的数字员工,现在是签了合同入职的,还是只是「跑起来了」?

欢迎留言聊聊。


See also