为什么需要 PACT
AI Agent 代表所有者持有钱包并发起链上交易时,必须解决三个核心问题:操作边界在哪、每一步是否可验证、出了事能不能立刻停。
权限边界
Agent 能做什么?不能做什么?所有者需要一个机器可读的声明,而不是口头承诺。
前置风险控制
风险不是事后告警,而是交易提交前就按策略评估——地址、金额、频率每一项都必须过闸。
信任可追溯
每个 pact 都有状态机记录,所有者随时可查看、暂停、撤销;Agent 的每次操作都可审计。
Agent 提交的四字段声明
PactSpec 是 Agent 向所有者请求授权时提交的结构化声明,四个字段分别回答"做什么 / 怎么做 / 受什么约束 / 何时结束"。
意图
自然语言描述的任务目标。审批时直接展示给所有者——"我要干什么"的人类可读版本。
执行计划
Markdown 格式的详细方案:分几步、动用哪些协议、资金如何流动。透明度换信任。
策略约束集
支出限额、地址白名单、审查阈值的机器可读规则。Policy Engine 每次执行前据此裁决。
终止条件
交易笔数上限、累计支出上限、过期时间——任一触发,pact 自动终止,API 密钥立即失效。
在所有者与 Agent 首次配对之前,PactSpec 自动处理无需审批;配对完成后,每一个新 pact 都必须经所有者显式批准才能激活。
Pact 的五种状态
每个 pact 从提交到终结的完整生命周期由一个状态机管理。只有在 ACTIVE 状态下,Agent 的域限 API 密钥才会生效。
待审批
已提交 PactSpec,等待所有者裁决
活跃
获批后域限 API Key 生效,可执行操作
终止态
completed / expired / revoked / withdrawn
pact 一旦进入任何终止态,与之绑定的 API 密钥瞬间作废——已在途的请求也会被拒绝。这是 PACT 与传统 API Key 最大的差异。
策略三件套:引擎 × 限额 × 白名单
Policy Engine 是决策中枢,Spend Limits 管"花多少",Address Allowlists 管"花去哪"。三者协同在每次 Agent 操作前完成评估。
Policy Engine
DECISION COREPolicy Engine 是 PACT 的决策中枢。它在 Agent 每一次发起操作前,都会跑一遍评估管道——检查操作类型、匹配策略规则、核对滚动计数器。规则按全局 → 钱包 → 委托三级作用域从广到细依次评估。
Spend Limits
FINANCIAL GUARDRAIL即便操作类型合法、地址正确,资金规模也必须落在双方约定的财务边界内。Spend Limits 以三种互补维度锁住金额。
Address Allowlists
DESTINATION LOCK把资金可能流向的终点收敛到一个有限集合。既可以列地址,也可以锁合约——甚至锁到某个函数选择器,把"只能调 Uniswap 的 swapExactETHForTokens"这种粒度硬编码进策略。
Policy Engine 的三阶段评估
每一次 Agent 发起的操作都会依次走过这三道闸。任一阶段不通过,操作就会被拒绝或挂起。
权限检查
操作类型是否落在当前 pact 定义的委托范围之内?不在范围内直接拒绝。
策略规则评估
按链、代币、目标地址、合约地址、金额等维度匹配策略规则——白名单是否命中、限额是否超出。
计数器检查
核对滚动时间窗口(1h / 24h / 7d / 30d)的累计使用量,是否仍有配额可用。
通过
三阶段全部满足,操作直接执行
待审批
触发审查阈值,生成 pending_operation_id,所有者收到通知
拒绝
操作被阻止,返回错误代码与原因
三种限额类型一张表
三种限额可单独启用,也可同时生效。一个操作必须通过所有适用的限制才会放行。
| 类型 | 参数 | 作用 | 触发行为 |
|---|---|---|---|
| 单笔硬上限 | amount_gt / amount_usd_gt |
单次操作的硬封顶,超过即拒绝。USD 模式按市场价换算,价格源不可用时跳过评估。 | DENY |
| 滚动窗口计数器 | 1h / 24h / 7d / 30d 滑动窗口 | 累计 USD 价值、代币数量或交易笔数。多窗口可叠加启用,采用向后滑动而非日历周期。 | DENY |
| 审查阈值 | soft threshold | 软触发——低于阈值自动执行,超过则进入待审批状态,由所有者裁决。 | PENDING |
给 DCA Agent 开放 ETH 定投权限
Agent 声明的策略约束:
- 仅能向 Uniswap V3 Router 合约发送交易(Address Allowlist)
- 单笔不得超过 0.5 ETH(amount_gt)
- 24 小时内累计不得超过 2 ETH(24h rolling counter)
- 7 天内累计交易笔数不得超过 10 笔(7d transaction count)
- pact 在 30 天后自动过期(completion_conditions)
把资金的去向收敛成有限集
白名单作为 ALLOW 策略的匹配条件实现——设置 destination_address_in 或 target_in,只有匹配的目标才会被放行,其他一律阻断。
DCA / 交易 Agent
只允许与 DEX 路由器合约交互,并限定到 swap 系列函数选择器,禁止 Agent 调用其他方法。
薪酬 / 分润 Agent
把所有收款人地址列入白名单——Agent 只能往这些钱包打款,无法转去任何其他地方。
多步 DeFi 策略 Agent
跨链跨协议配置多个合约地址——Aave、Curve、GMX 等,Agent 只能在这个协议集合里腾挪。
同一地址在不同链上需要分别列入白名单(链隔离);EVM 生态用合约地址 + 函数选择器,Solana 生态用 Program ID;地址条件留空则允许所有目标(但仍受其他策略约束)。
从 PactSpec 提交到密钥失效
把前面讲过的所有概念串起来看——一个 pact 从诞生到终结要走过的完整路径。
Agent 构造 PactSpec
声明 intent、execution_plan、policies、completion_conditions 四字段,提交至 Cobo Agentic Wallet。
进入 pending_approval 状态
所有者在 Cobo App 中看到 Agent 的自然语言意图与执行计划——此时 API 密钥尚未生效。
所有者裁决
批准 → pact 进入 active,Agent 获得域限 API Key;拒绝 → pact 终结于 rejected。
Agent 发起每次操作
Policy Engine 前置评估:权限检查 → 策略规则 → 滚动计数器,三闸通过才广播交易。
达成 completion_conditions 或被撤销
自动完成 / 过期 / 被所有者撤销 / Agent 主动取回——任一发生,pact 进入终止态。
域限 API Key 立即失效
无宽限期。此后 Agent 即使持有密钥也无法通过任何策略闸口。
PACT 的本质
机器可读的委托合约
PACT 把"我授权 Agent 干什么"从模糊的承诺变成结构化的 PactSpec,让所有者 / Agent / 策略引擎三方对同一份权限边界有相同的理解。
前置 + 多层 + 可撤销
风险不是事后告警,而是交易广播前就在策略引擎里被拦下。三层策略叠加给你纵深防御,API Key 随状态机秒级失效给你应急按钮。