执行域(AVIP-EXE)
AVIP 执行的规范说明 —— Action Gateway、防篡改记录、检查点与里程碑推进。
执行域 —— AVIP-EXE
执行域管的是从一份签名 意图 到它 结算 之间发生的事。它把每个动作按意图门控,把每个动作记入防篡改链,周期性给这条链打检查点,并在 Agent 对 Agent 的工作中推进里程碑。
| 组件 | 编码 | 用途 |
|---|---|---|
| Action Gateway | AVIP-EXE-GW | 绑定意图的逐次调用策略强制 |
| 执行记录 | AVIP-EXE-TR | 仅追加、哈希链式的动作记录 |
| 检查点 | AVIP-EXE-CP | 可做部分验证的签名路标 |
| 里程碑 | AVIP-EXE-MS | 分步交付与验证(A2A) |
AVIP-EXE-GW —— Action Gateway
Purpose
一个绑定到签名意图的链下策略引擎,在每次工具调用到达对手方之前授权或拒绝它。
Normative Requirements
对每次工具调用,Gateway MUST 校验以下全部,任一失败则 MUST 拒绝该调用:
- 工具在意图的
allowedTools内。 - 调用参数与意图的
scope和maxAmount一致。 - 必需的前置工具已成功(如
bitrefill.createInvoice之前要先wallet.deposit)。 - 意图的 deadline 未过。
- 对超过
requiresConfirmAbove的金额,存在用户确认记录。
被拒的调用 MUST 仍被记录(见 Error Conditions)。Gateway MUST 对每次调用写恰好一条 ActionTrace 记录,无论放行还是拒绝。
Data Structures
ActionTrace 记录
| 字段 | 说明 |
|---|---|
intentId | 回指签名意图 |
sequence | 跨订单的单调计数 |
tool | 全限定工具名 |
args | 规范化参数 |
policyDecision | allow / deny / pending_user_confirm |
ruleResults | 逐规则通过/失败明细 |
previousHash | 上一条 ActionTrace 的哈希 |
recordHash | 本条记录的哈希 |
Error Conditions
| 条件 | 决策 | 记为 |
|---|---|---|
| 工具不在白名单 | deny | policyDecision = deny 的 ActionTrace |
| 参数超出范围/预算 | deny | policyDecision = deny 的 ActionTrace |
| 前置未满足 | deny | policyDecision = deny 的 ActionTrace |
| deadline 已过 | deny | policyDecision = deny 的 ActionTrace |
金额 > requiresConfirmAbove 且无确认 | pending_user_confirm | policyDecision = pending_user_confirm 的 ActionTrace |
deny 记录是审计关键:它证明系统拒绝了越界尝试,而不是悄悄丢弃。这些记录组成一条哈希链,其 Merkle root 成为链上 auditRoot(见 审计)。
AVIP-EXE-TR —— 执行记录
Purpose
任务执行期间一切事件的仅追加、哈希链式日志。篡改任一事件都会使其后所有哈希失效。
Normative Requirements
- 每个事件 MUST 含一个按下方公式计算的
hash,以及指向上一事件哈希的prev。 - 记录的首个事件 MUST 用
0x00作为prev(genesis 锚)。 - 事件
dataMUST 在进入事件 preimage 前被独立哈希(对其确定性序列化做 SHA-256)。 - 在终止事件(
TASK_RESULT或TASK_FAILED)之后,实现 MUST 拒绝再追加事件。
事件哈希公式
event_hash = SHA-256(
seq + "|" + timestamp + "|" + event_type + "|"
+ SHA-256(sorted_stringify(data)) + "|" + prev_hash
)seq—— 从 0 开始的序号timestamp—— ISO 8601event_type—— 下列已识别类型之一data—— 载荷,递归排序键后序列化prev_hash—— 上一事件哈希,genesis 用0x00
Data Structures
TraceEvent
| 字段 | 类型 | 说明 |
|---|---|---|
seq | integer | 从 0 起的单调序号 |
ts | string | ISO 8601 时间戳 |
type | TraceEventType | 已识别类型之一 |
task_id | string | 本记录所属任务 |
data | object | 事件专属载荷 |
prev | string | 上一事件哈希(genesis 为 0x00) |
hash | string | 本事件的 SHA-256(按公式) |
sig | string(可选) | Ed25519 签名;仅 CHECKPOINT 有 |
事件类型
| 类型 | 触发时机 |
|---|---|
TASK_ACCEPTED | Agent 接受任务派发 |
TOOL_CALL | Agent 调用外部工具 |
TOOL_RESULT | 工具返回结果 |
POLICY_CHECK | 策略引擎评估某动作 |
POLICY_VIOLATION | 某动作违反策略约束 |
CHECKPOINT | 周期性完整性检查点(AVIP-EXE-CP) |
TASK_RESULT | 任务成功完成(终止) |
TASK_FAILED | 任务失败(终止) |
ROLLBACK | 某动作被回滚 |
THINKING_CHAIN | 一步推理(可被脱敏) |
State
| 状态 | 进入方式 | 效果 |
|---|---|---|
| Active | 记录被创建 | 可追加事件 |
| Finalized | 追加 TASK_RESULT | 不再追加 |
| Failed | 追加 TASK_FAILED | 不再追加 |
持久化
记录以 JSONL 持久化 —— 每行一个事件 —— 路径 {storage_dir}/{task_id}.trace.jsonl。该格式支持仅追加写、流式读和崩溃恢复。加载后的记录保留原始时间戳与哈希,MUST NOT 重新计算它们。
AVIP-EXE-CP —— 检查点
Purpose
记录中的签名路标,捕获一个 Merkle root 和累计统计,使长记录无需逐事件处理即可被验证。
Normative Requirements
- 检查点 MUST 在每 N 个非检查点事件后自动创建(默认 N = 50);每次检查点后计数清零。
- 检查点事件 MUST 由 Agent 的 Ed25519 身份对该检查点自身的事件哈希签名。
- 检查点事件 MUST NOT 计入下一次检查点触发。
Data Structures
检查点数据
| 字段 | 类型 | 说明 |
|---|---|---|
merkle_root | string | 至此所有事件哈希的 Merkle root |
event_count | integer | 含本检查点在内的事件总数 |
tool_calls | integer | 至此的 TOOL_CALL 数 |
last_hash | string | 最近一个非检查点事件的哈希 |
checkpoint.sig = agent_identity.sign(checkpoint.hash)验证
验证方:(1)重算该检查点的事件哈希,(2)用 DID 中的公钥验证签名,(3)确认 Merkle root 与从事件重算的树一致。
AVIP-EXE-MS —— 里程碑
Purpose
A2A profile 中分步交付与验证的单元。一笔付费 A2A 订单被分成若干里程碑;每个被提交、被验证,最后一个驱动结算。
Normative Requirements
- 里程碑数 MUST 取自意图的
milestoneCount(默认 5)。 - 每个里程碑在触发强制仲裁前 MAY 提交至多 3 次。
- 所有里程碑 MUST 通过验证后才放款。
Data Structures
里程碑记录
| 字段 | 类型 | 说明 |
|---|---|---|
intentId | string | 治理意图 |
milestoneIndex | integer | 步序号(0..count-1) |
status | string | pending / submitted / verified / rejected / arbitrated |
resultHash | string | 交付物的 Keccak-256 哈希 |
resultSummary | string | 人类可读描述 |
withinScope | boolean | 本步是否在意图 scope 内 |
amountUsed | number | 本步消耗的预算 |
submittedAt | timestamp | 执行方提交时间 |
verifiedAt | timestamp | requester 批准时间 |
State Machine
范围合规(withinScope)目前是软检查 —— 把里程碑能力与意图 scope 做结构匹配。它是结构化信号,不是协议层密码学强制的保证,并在 Completion Proof 中透明标注(scopeCheckType = soft)。
On-Chain Mapping
每个被验证的里程碑经 AnchorRegistry 锚定:
| 事件 | Anchor key | 哈希 |
|---|---|---|
| 里程碑验证 | orderId:milestoneIndex | (富化)结果数据的哈希 |
| 末个里程碑验证 | orderId:final | 全部里程碑结果的哈希 |