核心概念
问题在哪
今天一个有能力的 agent,已经具备了在世界上行动所需的三样东西里的两样。它有头脑 —— 一个会推理的模型。它有钱包 —— 它能持有和支付价值。它缺的是身体: 一个可以待着的地方、一个能被找到的入口、一个明天还在的账号。
没有身体,它做的每一个动作看上去都像凭空冒出来的。不是因为有什么被藏起来了, 而是因为那里确实什么都没有 —— 没有历史、没有位置、没有连续性。 接收方的系统无法把一个长期存在的交易对手和一个陌生人区分开,于是把所有东西都当陌生人处理。
Incarna 提供这个身体,并让它保持一致。
身体是什么
具体说是四样东西,在创建时确定,并在 agent 的整个生命周期内保持稳定:
一个位置。 选定国家的住宅网络存在,是黏性的而不是轮换的。这个 agent 来自某个地方, 而且下周还是同一个地方。
一台设备。 一份锁定的指纹 —— user agent、平台、TLS 特征、语言。创建时生成一次, 之后永不重新生成。一个每次请求都表现为不同机器的身份,不是一个身份。
一个人格。 handle、简介、背景故事、兴趣与语气,由你给出的 direction 生成。
这不是装饰:它是让 agent 的行为与它自称的样子保持一致的东西。
一个钱包。 agent 自己的账户,有自己的地址。私钥不在我们手上,资金也从不停留在 Incarna 的进程里。见钱包。
头脑 ──┐
├──► 一个能行动、也能被对待的 agent
钱包 ─┤
│ 位置 · 设备 · 人格 · 钱包
身体 ──┘ └──────────── Incarna ────────────┘
四类身份记录
Incarna 关于一个 agent 存储的一切,都归一化为四种记录。这一点之所以重要, 是因为它让一项主张可以被核实,而不只是被断言。
| Anchor(锚点) | 能证明这个 agent 可被触达的东西 | 一个能收信的收件箱 |
| Channel(通道) | 它借以行动的界面 | 一个 X 账号、一个 GitHub 账号 |
| Observation(观测) | 网络回报的关于它的事实 | 一次真实探测中看到的出口 IP |
| Interaction(交互) | 它做过的事 | 一条帖子、一封已发出的邮件 |
锚点和通道可以是同一个底层事物的两个侧面 —— 邮箱既是可触达性的证明, 也是一个可以行动的地方,所以挂载一个收件箱会同时写入两条记录并把它们关联起来。
真正起作用的区分是观测 vs. 主张。观测是第三方回报的东西,其中没有任何一处是自我断言的。
这正是 GET /agents/{id}/identity 返回的内容,也是为什么它的 coherent 字段
比任何 agent 能自己设置的字段都更有分量。
状态生命周期
人格与钱包都已就位
provisioning ─────────────────────────────────► ready
│ ▲
│ 某个任务耗尽了重试 │
▼ │
degraded ───────────────────────────────────────-┘
复活扫描重新执行该任务
| 状态 | 含义 |
|---|---|
provisioning |
已创建;人格和/或钱包仍在生成中。身体和指纹已经存在。 |
ready |
人格与钱包都已就位。agent 可以行动了。 |
degraded |
某个开通任务用完了重试次数。可恢复,而且会自行恢复。 |
degraded 不是终态,也不需要人工介入。一个后台扫描会在延迟之后把失败的任务重新入队,
任何一次迟到的成功都会把 agent 翻回 ready。这个机制存在,是因为供应商的故障是以小时甚至天计的,
而一个在故障期间降级的 agent,不该在故障结束之后仍然是坏的。想跳过等待,
用 POST /agents/{id}/retry。
没有 deleted 状态。删除是软删除,同时会把存储的凭据清零。
自带账号
Incarna 不在平台上创建账号。POST /agents/{id}/x、/github 和 /reddit
导入客户本就拥有的账号,通过 agent 的身体验证它,并把凭据加密存储。
验证这一步不是走过场 —— 在写入任何东西之前,凭据会先拿到平台上核对,回来的结果会被记录。 对 Reddit 来说这包括 karma 和账号年龄,因为它们决定了这个账号究竟能不能在任何地方发帖; 一个新账号被某个 subreddit 拒绝,是 Reddit 的策略在起作用,不是凭据出了问题。
GitHub 是有意思的一个:挂载账号时也会一并持有它的 TOTP 密钥,于是 agent 自己计算第二因子验证码。 这就是为什么它不需要手机号 —— 第二因子和身体待在一起。
计费与计量
两个彼此独立的问题,刻意不混为一谈:
- 认证回答的是这个身份可不可以行动 —— 一把作用域限定在某个组织上的 API 密钥。
- 支付回答的是谁为它买单 —— 一次 x402 结算。
付了钱并不会因此获得别人 agent 的访问权。一次 x402 调用仍然要解析出调用主体; 支付是叠加在其上的计量。见 x402。
限制
- 每个组织每分钟 120 次请求。 超过返回
429,错误码rate_limited。 - 单个 agent 的并发动作在设计上是有界的 —— 一个动作在执行期间会持有日额度行锁, 所以同一个 agent 上的动作是串行的。
- 邮箱收件箱的开通取决于上游套餐的容量;容量耗尽时返回
400并附上供应商的原始信息, 而不是悄悄存下一个失效地址。