StableOps

管理 SDK

在运营者服务端通过专用 TypeScript 客户端配置和查询 Agent Payments。

@stableops/agent-payments-api-sdk 是 Agent Payments 的专用管理客户端。它应运行在受信任的运营者服务端,不能放入 Agent 运行时或浏览器代码。

安装

pnpm add @stableops/agent-payments-api-sdk

创建管理客户端

管理 API Key 同时限定组织、环境和产品权限:

import { StableOpsAgentPayments } from '@stableops/agent-payments-api-sdk'

const apiKey = process.env.STABLEOPS_API_KEY?.trim()
if (!apiKey) throw new Error('缺少 STABLEOPS_API_KEY')

const management = new StableOpsAgentPayments({
  apiKey,
  baseUrl: process.env.STABLEOPS_API_URL,
})
管理 API Key 可以修改 Agent、钱包、策略和预算,绝不能交给 Agent 运行时。运行时只应持有 ak_sandbox_...ak_live_... 格式的受限 Agent Key。

可用资源

资源主要操作
management.agents创建、查询、更新、暂停或恢复 Agent,管理 Agent Key 和不可变策略版本
management.wallets创建钱包登记质询、登记钱包、查询钱包,以及绑定或解绑 Agent 的默认钱包
management.budgets在平台上限内查询或更新组织与 Agent 的日预算
management.approvals使用管理 API Key 查询审批记录,使用管理员会话批准或拒绝
management.payments查询支付、状态迁移记录和结算回执

金额字段分为两类,不能混用:

  • 支出策略和预算中的 automaticPaymentThresholdAtomicperPaymentLimitAtomicagentDailyLimitAtomiclimitAtomic 等字段统一使用 6 位 USDC 预算单位,因此 1000000 始终表示 1 USDC。
  • 支付、审批和回执中的 maxAmountAtomic 使用该网络 USDC 的链上资产最小单位,必须结合返回的 assetDecimals 解释。BNB Smart Chain 及其测试网为 18 位,其它当前支持网络为 6 位。

例如,BNB Smart Chain 上支付 1 USDC 时,x402 报价和 maxAmountAtomic1000000000000000000,但策略单笔限额和日预算仍写 1000000。服务端会向上取整换算预算占用,避免 18 位资产的极小金额绕过预算。

策略版本创建后不可修改。需要调整规则时,应创建新版本并显式激活。完整网络位数见介绍中的支持范围

Agent Key 只显示一次

const credential = await management.agents.createKey('agent_...', {
  name: 'production-runtime',
})

if (!credential.secret) throw new Error('没有返回一次性 Agent Key')
console.log(`STABLEOPS_AGENT_KEY=${credential.secret}`) // 仅在安全的首次配置环境中输出。

API 不会再次返回明文。密钥丢失或泄露时,应撤销旧 Key 并签发新 Key。

审批使用独立的管理员会话

管理 API Key 可以读取审批队列,但批准和拒绝属于高风险操作,只接受当前已登录的 StableOps 组织管理员会话所签发的短时访问令牌。大多数接入方应直接使用控制台审批页;下面的模式只适用于已经接入 StableOps 登录态的控制台代码:

async function approveFromDashboardSession(accessToken: string) {
  const dashboard = new StableOpsAgentPayments({
    accessToken,
    environment: 'sandbox',
    baseUrl: process.env.STABLEOPS_API_URL,
  })
  const approvals = await dashboard.approvals.list()
  const approval = approvals[0]
  if (!approval) throw new Error('当前没有待处理审批')
  await dashboard.approvals.approve(approval.id, '预算内的常规数据购买')
}

同一个客户端不能同时配置 apiKeyaccessToken。管理员访问令牌不能缓存、写入环境变量或交给 Agent 运行时。

完整的钱包登记、策略配置和支付流程见快速开始

这篇文档怎么样?

最后更新

本页内容