跳转到主要内容

概述

策略引擎在每笔交易到达 MPC 签名层之前对其进行评估。策略按代理设置,可随时通过 SDK 或 REST API 更新。第一个策略违规即立即阻止交易。

策略类型

消费限额

控制代理的消费额度:
await aw.policies.update("agent_abc123", {
  maxTransactionAmount: "500",   // Max per single transaction (USDC)
  dailyLimit: "5000",            // Rolling 24-hour total
  monthlyLimit: "50000",         // Rolling 30-day total
});
规则说明窗口
maxTransactionAmount单笔支付的最大金额按交易
dailyLimit滚动 24 小时的最大总额滚动窗口
monthlyLimit滚动 30 天的最大总额滚动窗口

地址控制

限制代理可以发送到的地址:
await aw.policies.update("agent_abc123", {
  // Whitelist mode: only send to these addresses
  allowedAddresses: [
    "0xTrustedVendor1",
    "0xTrustedVendor2",
    "0xTrustedExchange",
  ],

  // Blacklist mode: block specific addresses
  blockedAddresses: [
    "0xKnownScam",
  ],
});
如果设置了 allowedAddresses,则仅允许这些地址。如果同时设置了 allowedAddressesblockedAddresses,则 allowedAddresses 优先。

代币控制

限制代理可以交易的代币:
await aw.policies.update("agent_abc123", {
  allowedTokens: ["USDC", "USDT"],  // Only stablecoins
});

频率控制

限制交易频率以防止失控的代理:
await aw.policies.update("agent_abc123", {
  velocityLimit: {
    maxCount: 100,        // Max number of transactions
    windowSeconds: 3600,  // Per hour
  },
});

基于时间的控制

限制交易发生的时间:
await aw.policies.update("agent_abc123", {
  schedule: {
    timezone: "America/New_York",
    allowedHours: { start: 9, end: 17 },  // 9 AM - 5 PM
    allowedDays: [1, 2, 3, 4, 5],         // Monday - Friday
  },
});

人工审批

将高价值交易路由至人工审核:
await aw.policies.update("agent_abc123", {
  requireHumanApproval: true,
  humanApprovalThreshold: "1000",  // Transactions above $1000
  approvalTimeout: 3600,           // 1 hour to approve before auto-reject
  approvers: [
    "user_admin1@company.com",
    "user_admin2@company.com",
  ],
});
人工审批功能在 Growth 和 Enterprise 计划上可用。当交易需要审批时,会发送 Webhook 事件,交易进入 pending_approval 状态。

策略评估顺序

策略按以下顺序检查。第一个失败即阻止交易:
1

代理状态

代理是否处于活跃状态(未冻结)?
2

代币检查

该代币是否在 allowedTokens 列表中?
3

地址检查

收款方是否在 allowedAddresses 中且不在 blockedAddresses 中?
4

金额检查

是否超过 maxTransactionAmount
5

每日限额

是否会超过滚动每日总额?
6

每月限额

是否会超过滚动每月总额?
7

频率检查

代理是否超过了交易频率(velocityLimit)?
8

时间检查

是否在允许的时间和日期内?
9

人工审批

是否需要根据阈值进行人工审核?
10

基础设施安全网

Paratro 执行的硬限制(无法覆盖)。

策略违规事件

当策略阻止交易时,API 返回详细错误:
{
  "code": "policy_violation",
  "type": "invalid_request_error",
  "message": "Transaction would exceed daily limit"
}
您还可以通过 Webhook 事件接收违规通知:
await aw.webhooks.create({
  url: "https://your-app.com/webhooks",
  events: ["policy.violated"],
});

策略模板

使用模板进行常见配置:
// Conservative: tight limits for testing
await aw.policies.applyTemplate("agent_abc123", "conservative");

// Standard: balanced limits for production
await aw.policies.applyTemplate("agent_abc123", "standard");

// Custom: define and reuse your own templates
await aw.policies.createTemplate("my-template", {
  maxTransactionAmount: "200",
  dailyLimit: "2000",
  allowedTokens: ["USDC"],
  velocityLimit: { maxCount: 50, windowSeconds: 3600 },
});

await aw.policies.applyTemplate("agent_abc123", "my-template");

最佳实践

从最严格的策略开始,随着对代理行为的信心增强逐步放宽。
  • 使用 allowedAddresses — 白名单受信任地址,而非仅依赖金额限制。
  • 为高价值交易启用人工审批 — 设置超过该阈值需要人工审核的金额。
  • 监控策略违规 — 通过 Webhook 跟踪违规,以识别配置有误的代理。
  • 使用频率限制 — 防止代理反复尝试交易的失控循环。
  • 每周审查策略 — 随着代理行为的演变,更新策略以适应。