代理身份问题

我们正在进入一个 AI 代理代表人类行事的时代 — 预订航班、协商合同、管理基础设施,甚至编写代码。这些代理与其他代理、API 和人类系统交互。

每一次这样的交互都提出了一个根本问题:这个代理是谁,我为什么应该信任它?

今天,大多数代理通过 API 密钥进行认证 — 在代理的运营者和它访问的服务之间共享的静态密钥。这在简单场景下有效,但随着代理变得更加自主,就会崩溃:

  • 当代理做出错误决策时,谁负责?
  • 一个代理如何验证另一个代理的声明?
  • 如何撤销代理的访问权限而不撤销其运营者的访问权限?
  • 如何审计代理做了什么,以及代表谁做的?

为什么不直接用 API 密钥?

API 密钥解决了认证问题 — 证明你有一个有效的凭证。但它们不能解决身份问题 — 证明你是谁以及你被授权做什么

API 密钥 基于 DID 的身份
凭证 静态、长期有效的密钥 可轮换的加密密钥对
身份 没有内在身份信息 丰富、可验证的身份声明
访问 二元:有效或无效 细粒度的能力和权限
权限 中心化颁发和撤销 自主权,无中心化权威
委托 没有委托模型 原生的委托和撤销

DID 是答案

去中心化标识符(DID)由 W3C 设计为通用身份层。虽然最初是为人类构想的,但其架构完美适配 AI 代理:

自主权

代理创建自己的 DID — 无需注册机构。代理控制自己的密钥,可以向任何人证明自己的身份。

可验证凭证

代理的能力可以表达为可验证凭证:"该代理被 X 公司授权进行不超过 1,000 美元的采购。" 任何人都可以验证此声明,而无需联系 X 公司。

委托链

人类 → 代理 → 子代理的委托是 DID 模型的原生功能。每个操作都可以通过权限链追溯。

实际架构

以下是基于 DID 的代理身份在实践中的样子:

人类 (DID: did:abt:alice)
  │
  ├── 颁发凭证:"代理 X 可以代表我预订航班"
  │
  ▼
代理 X (DID: did:abt:agent-x)
  │
  ├── 向航班 API 出示凭证
  ├── 航班 API 验证:凭证 → Alice 的 DID → 受信任的颁发者
  │
  ▼
航班已预订。审计追踪:代理 X → 由 Alice 授权 → 航班 #123

关键洞察:每次交互都可审计,每项能力都有范围限定,每个委托都可撤销 — 无需任何中心化权威管理密钥或权限。

我们在构建什么

在 ArcBlock,我们正在将 DID 在基础层面集成到 AIGNE 框架中:

  1. 每个 AIGNE 代理在创建时都获得一个 DID。无需主动选择加入。
  2. 代理到代理的通信使用基于 DID 的双向认证。
  3. 可验证凭证定义每个代理可以做什么 — 以及谁授权了它。
  4. 审计日志将每个操作链接到一个 DID,创建完整的问责链。

这不是理论上的 — 它将在 AIGNE 1.0 中发布。如果你正在构建与现实世界交互的 AI 代理,身份不是可选的。它是基础。


推荐阅读

准备好构建了吗?

AIGNE 框架是开源的。DID 集成是内置的。

开始使用 AIGNE