# @agent-score/pay 中文文档

规范地址：https://npmcn.com/package/%40agent-score/pay/

版本：0\.7\.7
npm 元数据更新时间：2026-11-02T10:43:23.005Z
中文译文更新时间：2026-11-07T04:12:23.314Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40agent-score/pay
原文对照：https://npmcn.com/package/%40agent-score/pay/?lang=original
项目主页：https://www.agentscore.com/
源码仓库：https://github.com/agentscore/pay

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：293 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22 \<27
- 运行依赖：15 个
- 首次发布：2026-04-25T07:45:49.421Z
- 最新版本发布：2026-11-02T10:43:22.681Z
- 近 30 天下载量：2055（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：70（近 12 个月 70 个）

## 中文简介

单壳命令代理付款的 CLI 钱包, 跨越 x402 (Base) 和 MPP (Tempo, Solana)

## 安装

```sh
npm install @agent-score/pay
```

也可以使用：`pnpm add @agent-score/pay`、`yarn add @agent-score/pay`、`bun add @agent-score/pay`

## README

# @ agent- score/ pay (帮助)

[![npm version](https://img.shields.io/npm/v/@agent-score/pay.svg)](https://www.npmjs.com/package/@agent-score/pay) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://npmcn.com/package/%40agent-score/pay/LICENSE)

**AgentScore Pay;一个CLI用于整个生态系统的代理支付.** 从一个单一的 shell 命令支付任何 x402/ MPP 商家, 本地横跨 **x402 (韩语)** (基准)和 **组合** (Tempo,索拉纳),对铁路兼容客户有结构化提示,我们不直接资助(Stripe SPC通过 [链接- cli](https://github.com/stripe/link-cli),其他x402网络).

关闭要支付协议指定终点的 shell-tool LLM 代理的 UX 缺口( Claude Code, Cursor, ChatGPT with Bash) 。 每笔付款一个外壳命令:请求体通过402回行保存,代理商从未在电线上看到私钥. 由AgentScore建造并维护. 它与生态系统中的每402名商人合作,AgentScore配对与否. Pay不联系AgentScore API,除非商家402的挑战需要AgentScore身份.

## 安装

```bash
# Run directly (no global install required)
npx @agent-score/pay --help

# Or install globally
npm i -g @agent-score/pay
agentscore-pay --help

# Or via the install script (auto-detects npm vs native binary)
curl -fsSL https://raw.githubusercontent.com/agentscore/pay/main/install.sh | sh

# Or via Homebrew
brew install agentscore/tap/agentscore-pay
```

Npm 路径需要节点 22+. 原生的单文件二进制(不需要节点)被附着在每一个GitHub发行.

## 快开始

```bash
# 1. One-shot init, encrypted keystores on every chain, derived from a single BIP-39 mnemonic
agentscore-pay init

# 2. Fund one of them (prints receive QR + polls balance)
agentscore-pay fund --chain base --amount 10

# 3. Pay, rail auto-selected from the single funded wallet
agentscore-pay pay POST https://agents.example.com/purchase \
  -H 'Content-Type: application/json' \
  -d '{"product_id":"cabernet-sauvignon-2021","quantity":1,"email":"a@b.co","shipping":{...}}' \
  --max-spend 250
```

如果为多个钱包提供资金,请指定栏杆(或设置) `preferred_chains` 在配置中 :

```bash
agentscore-pay pay POST https://merchant.example/api --chain tempo -d '...' --max-spend 5
```

## 代理人(描述)

对于 LLM 工具启动代理, 运行 `agentscore-pay agent-guide` (编) `--json` 用于解析输出). 它印出结构化的路径:金色路径(init )-发现-平衡-检查-干-跑-薪),测试网路径,资金,辅助指令(init )`limits`, (中文(简体) ), `whoami`, (中文(简体) ), `history`),陷阱,和出站码分支. 同样的笔记也浮出水面 `agentscore-pay <command> --help` 页:1 `check` 财务报告和审定财务报表 `pay`。 。 。 .

### 输出格式

每个命令都发出结构化的数据. 选择格式 :

| 旗帜 | 格式 | 页:1 |
| --- | --- | --- |
| _(管道/剂的违约)_ | 东 | 节能值,比JSON减少40% |
| `--json` 编号 : `--format json` | 贾森 | `JSON.parse()`\-安全吗 |
| `--format yaml` | 也门 | 人可读 |
| `--format md` | 标记 | 表格,粘贴到 PR / 问题/ docs |
| `--format jsonl` | JSON线 | 每行可流记录一张 |

其他有用的全球旗帜 : `--filter-output <keys>` (发泄点-路径), `--token-count` 编号 : `--token-limit n` 编号 : `--token-offset n` (管理大产出), `--full-output` (全信封装有 `meta.command` 编号 : `meta.duration`) (中文(简体) ).

当stdout是一个TTY(人)时,输出会相当地被打印出. 管道/代理消耗时,自动得到结构化的信封.

### 错误和退出代码

出错 `{ code, message, retryable, extra?, next_steps? }` 打开 **静态** (频道与成功相同,代理分支在 `code` (原始内容存档于2017-03-25). exceptive.s. `extra` 带有特定错误的结构上下文(例如:. `valid_keys`, (中文(简体) ), `chain`, (中文(简体) ), `held_chains`, (中文(简体) ), `balance_usdc`, (中文(简体) ), `verify_url`编号 :`session_id`编号 :`poll_secret` (一) 身份流动; `next_steps` 携带一个 `action` 键 + 可选 `suggestion` 用于确定性恢复的字符串。 过 `--full-output` 给包裹的信封 `{ ok: false, error: {...}, meta: { command, duration } }`。退出代码稳定 :

| 代码 | 含义 |
| --- | --- |
| 0 个 | 成功 |
| 1个 | 用户错误( 错误的参数、 缺少的钱包、 错误的密码句、 账户配额) |
| 2个 | 网络错误( 机械无法到达, RPC 失败) |
| 3个 | 资金不足 |
| 页:1 | 拒付(超额) `--max-spend`, 本地限制击出) |
| 页:1 | 多铁路模糊性(要求) `--chain` 或者说 `preferred_chains` 配置( c) |

```bash
# Scripted, non-interactive
export AGENTSCORE_PAY_PASSPHRASE=<passphrase>

# Probe without paying
agentscore-pay check https://merchant.example/api --json

# Dry-run a payment (print the plan, don't sign)
agentscore-pay pay POST https://merchant.example/api \
  -d '{"x":1}' --max-spend 5 --dry-run --json

# Real pay
agentscore-pay pay POST https://merchant.example/api \
  -d '{"x":1}' --max-spend 5 --json
```

### MCP 服务器( 一个二进制, 每个工具)

每个命令(钱包,支付,身份)作为MCP工具被曝光:

```bash
agentscore-pay --mcp                  # start as a stdio JSON-RPC MCP server
agentscore-pay mcp add                # register with Claude Code / Cursor / Amp
agentscore-pay --llms                 # markdown manifest of every command
agentscore-pay --llms --format json   # JSON Schema manifest
agentscore-pay <cmd> --schema         # JSON Schema for one command's args/options/output
```

`agentscore-pay skills add` 财务报告和审定财务报表 `agentscore-pay completions` 注册技能文件和 shell 补全.

### 关于重试的缺席

每个 `agentscore-pay pay` 引用生成一个稳定 `X-Idempotency-Key` sHA-256散列 `(url + method + body + signer)`,所以在一次引用中重复重复重用相同的键。 如果一笔付款解决了 但网络反应在中途失效 尊重Frede-pattern dedup的商人不会加倍收费 自己传 `-H 'X-Idempotency-Key: <value>'` 以覆盖( 用于跨进程等强性: 同一逻辑购买跨多个) `agentscore-pay pay` (援引).

### 测试模式地址

7个EVM地址(`0x0000…0001` 结束 `0x0000…0007`作为确定性的测试固定装置(KYC经核实,制裁明确,年龄门经过), dev/test商家不会燃烧真正的KYC信用. `agentscore-pay` 自动识别它们。 要在您的 dev/测试固定装置中使用识别器,导入 `isAgentScoreTestAddress(addr)` 财务报告和审定财务报表 `AGENTSCORE_TEST_ADDRESSES` 从 `@agent-score/sdk` (峡谷之家; `agentscore-pay` 重新使用同样的列表).

### 十进制处理

符合光谱要求的402份答复 `decimals` 在铁路要求。 当商人省略时,报酬实行严格的政策来避免默不作声地乱收费:

-   **资产为Canonic USDC** (与薪酬中标注的每链圆形USDC登记册相匹配):默默使用6个小数.
-   **资产是其他一切**: 终止 `merchant_spec_violation`. 猜测小数点后,可能会以非-小数点精确度对代币计价错误,所以工资拒绝支付而不是继续部分信息.

### 从代理人处使用:完整的食谱

一个典型的自主剂流:探究端点,决定是否支付,支付,分出结构化的结果.

**巴什( Claude Code / Cursor / sell-tool) : (简体中文)**

```bash
#!/usr/bin/env bash
set -eu
URL="https://agents.example.com/purchase"
BODY='{"product_id":"cab-2021","quantity":1,"email":"agent@example.com","shipping":{...}}'
MAX_SPEND=250

# 1. Probe, what does this endpoint cost and which rails does it accept?
PROBE=$(agentscore-pay check "$URL" -X POST -d "$BODY" --json)
PRICE=$(printf '%s' "$PROBE" | jq -r '.rails[0].price_usd // empty')
echo "Endpoint asks for \$${PRICE} USDC"

# 2. Pay, capture stdout (success body) and exit code separately.
RESPONSE=$(agentscore-pay pay POST "$URL" \
  -H 'Content-Type: application/json' \
  -d "$BODY" \
  --max-spend "$MAX_SPEND" \
  --timeout 120 \
  --retries 2 \
  --json) || EXIT=$?
EXIT=${EXIT:-0}

# 3. Branch on the standard exit codes.
case "$EXIT" in
  0) echo "Paid. tx=$(printf '%s' "$RESPONSE" | jq -r '.tx_hash // .body.tx_hash // "?"')" ;;
  2) echo "Network/RPC error, retry later." >&2; exit 2 ;;
  3) echo "Insufficient funds, top up:"; agentscore-pay fund-estimate "$URL" -X POST -d "$BODY"; exit 3 ;;
  4) echo "Rejected (price exceeded --max-spend or local limit)." >&2; exit 4 ;;
  5) echo "Multi-rail ambiguity, set --chain or config preferred_chains." >&2; exit 5 ;;
  *) echo "User error: $RESPONSE" >&2; exit 1 ;;
esac
```

**Python : (中文(简体) )**

```python
import json, subprocess, sys

def pay(url: str, body: dict, max_spend_usd: float) -> dict:
    proc = subprocess.run(
        ["agentscore-pay", "pay", "POST", url,
         "-H", "Content-Type: application/json",
         "-d", json.dumps(body),
         "--max-spend", str(max_spend_usd),
         "--timeout", "120", "--retries", "2", "--json"],
        capture_output=True, text=True,
    )
    if proc.returncode == 0:
        return json.loads(proc.stdout)
    err = json.loads(proc.stdout)
    raise RuntimeError(f"pay failed (exit {proc.returncode}): {err['code']}, {err['message']}")

result = pay("https://agents.example.com/purchase",
             {"product_id": "cab-2021", "quantity": 1, "email": "a@b.co", "shipping": {}}, 250)
print(result["tx_hash"], result["body"])
```

**类型脚本/ 节点 :**

```ts
import { execFile } from 'node:child_process';
import { promisify } from 'node:util';
const exec = promisify(execFile);

async function pay(url: string, body: unknown, maxSpendUsd: number) {
  try {
    const { stdout } = await exec('agentscore-pay', [
      'pay', 'POST', url,
      '-H', 'Content-Type: application/json',
      '-d', JSON.stringify(body),
      '--max-spend', String(maxSpendUsd),
      '--timeout', '120', '--retries', '2', '--json',
    ]);
    return JSON.parse(stdout);
  } catch (err: any) {
    // execFile rejects on non-zero exit; the error envelope JSON is in err.stdout.
    const envelope = err.stdout ? JSON.parse(err.stdout) : { code: 'unknown', message: err.message };
    throw new Error(`agentscore-pay exit ${err.code}: ${envelope.code}, ${envelope.message}`);
  }
}
```

CLI从不为人类的发热发作 `--json` 被通过: Stdout 上的每个字节都是可解析的 JSON,成功和出错都一样. 施特勒只用于人类的铬(banner, 腐烂警告, `-v` 铁路选取日志,软过期警告.

## 铁路

| 链条 | 议定书 | 图书馆 | 网络 |
| --- | --- | --- | --- |
| `base` | x402(EIP-3009) (英语) | `@x402/fetch` + 键 `@x402/evm` | `eip155:8453` |
| `solana` | 组合 `solana/charge` | `mppx/client` + 键 `@solana/mpp/client` | `solana:5eykt...` |
| `tempo` | 组合 `tempo/charge` | `mppx/client` | 链式4217 |

索拉纳支付途径 `solana/charge` (索拉纳基金会) `@solana/mpp` 而不是x402软件包。 Tempo总是通过 MPP `mppx/client`. Base是唯一的x402铁路直接支付基金.

## 铁路选择

CLI号舰只 **没有默认铁路优惠**。算法:

1.  `--chain X` ——使用X(如不在场或不足则有误).
2.  磁盘上有一个钱包是给目标资助的 – 使用它.
3.  多个供资钱包 – 检查 `~/.agentscore/config.json` `preferred_chains` 做为破领带.
4.  仍为多 + 错误 `code: "multi_rail_candidates"` 并列出选项.
5.  无候选人 —— 错误 `code: "no_funded_rail"` 并指向 `fund`。 。 。 .

配置示例( E)`~/.agentscore/config.json`:

```json
{
  "preferred_chains": ["tempo", "base"]
}
```

或者通过CLI:

```bash
agentscore-pay config set preferred_chains tempo,base
agentscore-pay config get
agentscore-pay config unset preferred_chains
```

Verbose 模式 (`-v`记录铁路选择+余额为stderr.

## 图标

下面的每一行都有一个子命令: `agentscore-pay`,引用为 `agentscore-pay <command>` (例如:. `agentscore-pay init`, (中文(简体) ), `agentscore-pay pay POST <url>`) (中文(简体) ).

| 命令 | 目的 |
| --- | --- |
| `init [--no-mnemonic] [--fund-tempo-testnet] [--preferred-chains <list>]` | 一发首跑:创建全部3个钱包(默认为mnemonic)+可选测试网基金+首选链配置 |
| `wallet create [--chain c] [--name name] [--mnemonic]` | 生成键盘( s) 。 奥米 `--chain` 以创建全部三个。 过 `--mnemonic` 以获得BIP-39种子. `--name` 用于命名的次要钱包. |
| `wallet import [<key>] --chain c [--name name]` 编号 : `wallet import --mnemonic "<phrase>"` | 导入原始私钥(hex/base64)或12/24字短语 |
| `wallet list [--chain c]` | 每个链条列出已命名的键盘 |
| `wallet address --chain c [--name name]` | 打印地址 |
| `wallet export --chain c [--name name] --danger [--skip-confirm]` | 解密 + 打印私钥 |
| `wallet remove --chain c [--name name] --danger [--skip-confirm]` | 不可恢复地删除密钥 |
| `wallet show-mnemonic --danger [--skip-confirm]` | 解密 + 打印存储的 BIP- 39 元音 |
| `balance [--chain c] [--network n]` | USDC + 各链条的本土-气体平衡(主网默认); `--network testnet` (原始内容存档于2018-03-26) (英语). Base Sepolia / Solana Devnet / Tempo testnet. 原生气体(ETH on Base, TEMPO on Tempo, SOL on Solana) 需要用于生于链上操作,例如: `send` 财务报告和审定财务报表 `revoke`。 。 。 . |
| `qr --chain c [--amount N] [--network n]` | ASCII QR或EIP-681 / (中文(简体) ) `solana:` URI 资源 |
| `fund --chain c [--amount N] [--network n] [--via stripe-onramp] [--destination-amount N] [--quote-only] [--source-currency usd|eur]` | 默认:收到QR+平衡民调(任何链条,从任何钱包/交换/onramp发送USDC). `--via stripe-onramp`: sints a Strape Crypto Onramp session for card USDC (仅以Solana主网为基础). `--quote-only` 返回价格预览,而不设定薄荷. `--destination-amount` 修改所收到的USDC而不是支付的美元. |
| `send --chain c --to <addr> --amount N [--asset usdc|native] [--network n]` | 原始转移到任意地址。 默认 `--asset usdc` (ERC20/SPL); (中文(简体) ); `--asset native` 发送气体(ETH / TEMPO / SOL). 在签名钱包中需要本地气体来进行链上写入 。 没有商人,没有402握手。 EVM转账确认收据(返回 tx 返回) `transfer_reverted`从来没有一个散文 对于tx 移动什么。 在Tempo,费用由马来币支付, 所以一个全余额的USDC发送返回;留一点 `--amount` 头室. |
| `faucet --chain c` | 打印链条的测试网水龙头 URL + 将您的地址复制到剪贴板 |
| `fund-estimate <url> [-X method] [-d body] [-H header]...` | 测试一个402GT的 URL 并报告您有多少呼叫 包含 + 顶级建议 |
| `check <url> [-X method] [-d body] [-H header]...` | 探测402 响应; 显示接受的铁路而不支付 |
| `pay <method> <url> [-d body] [-H header]... [--chain c] [--network n] [--max-spend N] [--timeout N] [--retries N] [--dry-run] [-v]` | HTTP请求+自动402处理. `--timeout` 如果违约期为60多岁,而且只适用于商家请求,调解者和解可以超过. `--retries` 只重复飞行前连接出错(每架scheme非ces能防止双向飞行). |
| `whoami [--network n]` | 钱包 + 平衡摘要 + 活动配置 |
| `history [--limit N]` | 过去从 `~/.agentscore/history.jsonl` |
| `limits show | set | clear` | 持续的按电话/每日/每商家美元开支限额 |
| `config get [key] | set <k> <v> | unset <k> | path` | 读取/写作 `~/.agentscore/config.json` (例如:. `config set preferred_chains tempo,base`(中文(简体) ) |
| `discover [--search q] [--chain c] [--max-price N] [--limit N] [--protocol x402|mpp|both]` | 列出从x402 Bazaar(Coinbase)和MPP服务目录(Tempo)获得的付费服务. 两者默认同时询问. |
| `revoke --chain c --token <addr> --spender <addr> [--network n]` | 发送 `approve(spender, 0)` 关于EVM(基数/tempo)。 需要本土气体. |

### 身份命令

`passport login`编号 :`status`编号 :`logout` 使用 AgentScore 的购买方身份流并需要 **无 API 密钥**。下面的其他身份命令(`assess`, (中文(简体) ), `sessions`, (中文(简体) ), `credentials`, (中文(简体) ), `associate-wallet`包装代理Score SDK,设定 `AGENTSCORE_API_KEY`。 。 。 .

AgentScore Passports是免费的买家,永远。 Agent Score Monetys 卖家/商家,买家和代理-买家从不支付我们.

| 命令 | 目的 |
| --- | --- |
| `passport login` | 在浏览器中验证您的身份; 保存 `operator_token` 改为 `~/.agentscore/passport.json`。登录后,每个 `agentscore-pay <url>` 呼叫自动附件 `X-Operator-Token` (压力与 `--skip-passport`) (中文(简体) ). 不需要 API 密钥 . |
| `passport status` | 显示存储的护照, 令牌前缀, 访问 + 刷新过期 , `silent_refresh_available`, (中文(简体) ), `expired` 旗帜 |
| `passport logout` | 删除本地文件( 如果 `AGENTSCORE_API_KEY` 设置, 也停止刷新符号的更新; 否则只本地更新) |
| `assess [--address a | --operator-token o] [--require-kyc] [--min-age N] [--require-sanctions-clear] [--blocked-jurisdictions cc...] [--allowed-jurisdictions cc...] [--refresh]` | 与政策进行飞行评估(需要 API 密钥) |
| `sessions create [--address a] [--operator-token o] [--context s] [--product-name s]` | 创建校验会话, 返回 `verify_url` + 键 `poll_secret` (低级; `passport login` 是大多数特工想要的包装器) |
| `sessions get <id> [--poll-secret s]` | 输入会话, 返回 `operator_token` 一旦状态是 `verified` |
| `credentials create [--label s] [--ttl-days N]` | Mint 运算符证书(`opc_...`(中文(简体) ) |
| `credentials list` | 列出可使用的证书:未经重新确认,加上任何已过期的,一个刷新符号仍可续签 |
| `credentials revoke <id>` | 以 ID 撤销证书及其整个刷新链条 |
| `associate-wallet --operator-token o --wallet-address a --network evm|solana [--idempotency-key k]` | 报告在证书下付款的签名钱包( 跨商号归属) |

#### 身份错误代码

`assess`, (中文(简体) ), `sessions`, (中文(简体) ), `credentials`,以及 `associate-wallet` 以结构化 CliErrors 格式显示 SDK 的打出错误。 JSON的信封里的东西 `code` 区分恢复路径 :

| `code` | 来源 | 恢复 |
| --- | --- | --- |
| `config_error` | API 键缺失/无效, OR `TokenExpiredError` (外载) `verify_url`编号 :`session_id`编号 :`poll_secret`页:1 `InvalidCredentialError` | 运行 `passport login` 来点新鲜的 `operator_token` (不需要 API 密钥); 对于 API 密钥 , 修正 `AGENTSCORE_API_KEY` |
| `insufficient_balance` | `PaymentRequiredError`,该账户未启用的端点 | 表面 `next_steps.suggestion` 到用户; 代理重试无益 |
| `quota_exceeded` | `QuotaExceededError`,账户级别上限 | 不重试; 表面给用户 [https://www.agentscore.com/ 定价](https://www.agentscore.com/pricing)启用 `assess` 答复 `quota` 字段,以主动监测方法到顶 |
| `network_error` | `RateLimitedError` (每秒上限), `TimeoutError`,或任何其他短暂的失败 | 以备份重试 `next_steps.suggestion` |

这个 `pay <url>` 命令在代理时额外扔出两个非 TTY 代码(`--json` / MCP / 脚本) 点击了 Passport 需要的状态, 而不是在内线浏览器- 直接流上屏蔽一个小时, 支付一个结构化的信封, 这样代理可以向 `passport login`数字 :

| `code` | 掷出时 | 额外 | 恢复 |
| --- | --- | --- | --- |
| `passport_login_required` | 存储的 Passport 访问令牌过期且静态刷新未成功( 已撤销、 网络失效、 限速、 或没有刷新 token, 因为 Passport 是通过冷启动的靴子装入) | `previous_token_prefix` | 运行 `agentscore-pay passport login` 交互(一次性浏览器点击), 薄荷, 新鲜的 24h 访问 + 90d 刷新对; 后续的呼叫静态旋转 ~ 90 天 |
| `passport_required_by_merchant` | Merchant返回了403个带靴子的田地(`verify_url` + 键 `session_id` + 键 `poll_secret`)且该代理商没有可用的存储护照 | `verify_url`, (中文(简体) ), `session_id`, (中文(简体) ), `poll_secret`, (中文(简体) ), `poll_url`, (中文(简体) ), `order_id` | 建议: `agentscore-pay passport login` 首先,(减少可携带的刷新护照,满足任何代理商的计分要求)。 替代品:表面 `extra.verify_url` 给用户; 完成后, 发布与该商家会话绑定的一发 24h 令牌( 无刷新 token) |

两种代码只向非TTY跑道开火. 在人类终端薪酬中,继续驱动内线浏览器-定向流量本身.

#### 配额的可观察性

`assess` (以及当账户有每期配额时,其他身份命令) 发布响应 `X-Quota-Limit` 编号 : `X-Quota-Used` 编号 : `X-Quota-Reset` 作为标题 `quota: { limit, used, reset }` 屏蔽成功信封。 监控人员对接方式应警告80%,警戒95%.

```bash
agentscore-pay assess --address 0xabc... --json | jq '.quota'
# → { "limit": 1000, "used": 780, "reset": "2026-06-01" }
```

`quota` 账户中不存在没有定期配额的情况.

## 基于磁体的钱包

```bash
# Generate a BIP-39 seed and derive all three chains at once
agentscore-pay wallet create --mnemonic

# Later, on another machine: import the phrase
agentscore-pay wallet import --mnemonic "legal winner thank year wave sausage worth useful legal winner thank yellow"

# Retrieve the stored phrase (prompted for passphrase + type-to-confirm)
agentscore-pay wallet show-mnemonic --danger
```

衍生路径: EVM 用途 `m/44'/60'/0'/0/0` (标准),索拉纳使用 `m/44'/501'/0'/0'` (SLIP-10 Ed25519) (中文(简体) ). 同一短语在每台机器上重生出相同的密钥.

#### 为什么有两个衍生算法?

EVM和索拉纳的使用 **不同的曲线**: EVM使用secp256k1(BIP-32硬化+非硬化路径),索拉纳使用Ed25519(只支持硬化衍生). 这些标准也相应不同:

-   **EVM (BIP-44, secp256k1) (中文(简体) )**, (中文(简体) ), `m/44'/60'/0'/0/0`。跟踪 `/0/0` 没有硬化。 MetaMask, Rabby, 和 Coinbase 钱包 都使用此路径; 在其中任意一个词组中导入一个词组产生您在其中看到的相同的地址 `wallet address --chain base`。 。 。 .
-   **索拉纳(SLIP-10, Ed25519)**, (中文(简体) ), `m/44'/501'/0'/0'`。所有四个级别都加硬度(注意后缀) `'`). Phantom和Solflare使用此路径进行“ 账号 0 ” ; 导入相同的短语会生成您看到的地址 `wallet address --chain solana`。 。 。 .

如果您将短语导入到 Phantom 并看到不同的地址, 请检查 Phantom 是否设定为“ 标准导出路径 ” (而不是遗留地址) `m/44'/501'/0'`) (中文(简体) ).

## 多个钱包配置

双层多钱包支持:

### 每条链命名的钱包( 在位)

每个链可以持有多个键盘. 默认名称是 `default`; 通过 `--name <name>` 对其他人:

```bash
agentscore-pay wallet create --chain base --name trading
agentscore-pay wallet list                          # enumerate per chain
agentscore-pay balance --chain base --name trading
agentscore-pay pay POST <url> --chain base --name trading -d '...' --max-spend 5
```

名称仅限于 `[a-z0-9-]` (最大32个字符). 货币衍生钱包总是存放在 `default`,对于额外的命名钱包,使用随机键(`wallet create`)或导入(`wallet import`) (中文(简体) ).

#### 端到端: 单独的交易 + 默认钱包

```bash
# Default wallet for general spending
agentscore-pay init                                 # creates base/solana/tempo "default"
agentscore-pay fund --chain base --amount 10        # tops up default

# Separate "trading" wallet for a high-budget bot
agentscore-pay wallet create --chain base --name trading
agentscore-pay wallet address --chain base --name trading
# → 0xTRADINGADDRESS, fund this address externally (CEX withdrawal, transfer, etc.)
agentscore-pay balance --chain base --name trading

# Inspect everything
agentscore-pay wallet list
# base     default
# base     trading

# Pay from each
agentscore-pay pay POST https://merchant.example/api -d '{}' --chain base                    # uses default
agentscore-pay pay POST https://merchant.example/api -d '{}' --chain base --name trading   # uses trading

# Remove a wallet (irrecoverable, back up the mnemonic or export the key first)
agentscore-pay wallet export --chain base --name trading --danger --skip-confirm > trading.key
agentscore-pay wallet remove --chain base --name trading --danger --skip-confirm
```

人马座限制今天不支持(限制是全球性的). 单独使用 `AGENTSCORE_PAY_HOME` 如果您需要每页的每日封顶, 则需要配置 .

### 单独状态目录

设定 `AGENTSCORE_PAY_HOME` 要完全隔离( 不同) `history.jsonl`, (中文(简体) ), `limits.json`, (中文(简体) ), `config.json`:

```bash
# One profile for production merchants
AGENTSCORE_PAY_HOME=~/.agentscore-prod agentscore-pay wallet create

# Another profile for testnet development
AGENTSCORE_PAY_HOME=~/.agentscore-test agentscore-pay wallet create
AGENTSCORE_PAY_HOME=~/.agentscore-test agentscore-pay pay --network testnet ...
```

## 解锁密钥

满足密码句的两种方式,按顺序排列:

| 机制 | 最好还是 | 持久性 |
| --- | --- | --- |
| `AGENTSCORE_PAY_PASSPHRASE=<pass>` 环境 var | 集装箱、CI、无服务器、守护进程、任何非互动代理 | 进程/ shell 会话的寿命 |
| 按呼的交互式提示 | 第一次设置、一次性命令 | 无,从未写 |

**Env var 获胜** 设定时:它不产生上盘文物,并且是每个代理上下文(CI秘密,容器内涵,K8s秘密,Lambda config,MCP主机 config)的正确原始. 磁盘上没有密码句缓存 : 它会在解锁的键盘旁以清晰的文字保存密码句 .

**对于代理作者**(原始内容存档于2017-09-21). : preference env var. 在代理启动时从你的秘密商店读取;不要把它烤入代理的即时或记忆. 报酬 `agent-guide` 命令 (`agentscore-pay agent-guide`)解释其自身结构化产出中的优先.

## 供资

钱包只持有USDC,不需要ETH或SOL. x402 (EIP-3009) 和 MPP Tempo对签名者来说都是无气的;主持人付费.

### 主要网

-   **所有链条**, (中文(简体) ), `agentscore-pay fund --chain <chain> --amount 10` 打印一个 ASCII QR 和您的钱包地址,然后进行民调平衡直到存款地。 从任何来源发送USDC:另一个钱包(MetaMask, Rabby, Coinbase Wallet, Phantom),一个CEX退出,或者任何支持目的地链的第三方fiat onramp(Coinbase Pay, MoonPay, Transak, Onramper, Frede Crypto Onramp等). 默认金额是 `$10` (~50-200个典型代理呼叫).
-   **时间细节**,大多数fiat-onranp的合作伙伴还没有覆盖Tempo(链4217). 通过从另一个Tempo钱包转出USDCe或从基地转出桥梁(LayerZero / Squid / Relay)供资.
-   **没收到**, (中文(简体) ), `agentscore-pay wallet address --chain base` 仅打印地址,如果您已经知道您的资金来源.

### 测试网

| 链条 | UX 密码 | 供资时间 |
| --- | --- | --- |
| 塞波利亚基地 | `faucet --chain base`,打印圆形 URL + 复制您的地址到剪贴板。 贴入形相等. | ~30s + 手工粘贴 |
| 索拉纳·德夫内 | `faucet --chain solana`,同样的圆流. | ~30s + 手工粘贴 |
| **临时测试网** | **`fund --chain tempo --network testnet` 是唯一的方案引流**,称为Moderato的 `tempo_fundAddress` JSON-RPC,薄荷4号测试马氏菌(路径美德,AlphaUSD,BetaUSD,ThetaUSD)直接. 没有浏览器,没有卡布查. | ~5s, 已完全脚本 |

使用 `fund --chain tempo --network testnet` 在CI/代理设置脚本中,它是唯一一个没有人类交互作用的操作. Base Sepolia和Solana Devnet 仍然需要把你的地址贴入Circle的网络表格.

### 脚本/部署的特工

-   预付你笔记本电脑上的钱包 `wallet export --chain base --danger --skip-confirm` 拿到钥匙.
-   在服务器上, `AGENTSCORE_PAY_PASSPHRASE=<pass> agentscore-pay wallet import --chain base 0x<hex>` 或发送加密 `~/.agentscore/wallets/base.json` 直接说.
-   `AGENTSCORE_PAY_HOME=/opt/agentscore` 在服务器内将状态与机器上的任何其他用户隔离.
-   `agentscore-pay limits set --daily 50 --per-call 1` 限制自主代理的支出.

### 为特定商人编制预算

```bash
# Before making a purchase, check what you can afford
agentscore-pay fund-estimate https://agents.example.com/purchase \
  -X POST -d '{"product_id":"cab-2021","quantity":1,...}'
# → shows price, your balance, calls affordable, and suggested top-up
```

## 警卫

-   Keystore是AES-256-GCM加密的,带有一个由srypt衍生的密钥,每个链条一个文件.
-   所写文件 `0600` 属性, 父目录 `0700`。 。 。 .
-   每个签名操作都提示密码句; 覆盖到 `AGENTSCORE_PAY_PASSPHRASE` env var 用于非互动剂.
-   `wallet export` 被守护着 `--danger` +"类型 EXPORT" 提示.
-   当地支出限额`limits set --daily N --per-call N --per-merchant N`在签署时通过x402和MPP钩执行.
-   `~/.agentscore/history.jsonl` 记录成功的支付(url、主机、链条、协议、状态、时间戳)。 没有秘密记录.
-   没有遥测。 没有自动更新。 磁盘上没有纯文本密钥 .

### 密码句强度

对于 **交互式人类**:任何8+Char的密码句你都会记得是好的,scrypt-256-GCM组合在典型的人类-口语 en平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平平.

对于 **自动代理**: 密码句通常生活在 `AGENTSCORE_PAY_PASSPHRASE` (env var),它是任何拥有 shell 访问权限的用户都可以读取的,所以密码句其实不是一个单独的信任边界,它主要是保护键盘不受 _仅盗取上盘文件_。一个长而随机的密码句使文件在被过滤后无用:

```sh
# generate a 32-byte (256-bit) random passphrase
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# 4d2a...

# stash it where your agent can read it (env / secret manager / .env / etc.)
export AGENTSCORE_PAY_PASSPHRASE=4d2a...
```

如果钱包键盘 _财务报告和审定财务报表_ 密码句商店都失密了 钱包失密了 没有额外的保护 保护目录.

### 正在验证发行二进制( sigstore / 联合签名)

每一个附件的原生二进制 [GitHub 发布](https://github.com/agentscore/pay/releases) 与 [斯格斯托尔/签名](https://docs.sigstore.dev/cosign/overview/) 无密钥 OIDC. 要验证一个已下载的二进制( 需要共同签名 v2.4+ 或共同签名 v3) :

```sh
cosign verify-blob \
  --bundle agentscore-pay-darwin-arm64.bundle \
  --certificate-identity-regexp 'https://github.com/agentscore/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  agentscore-pay-darwin-arm64
```

成功的核查`Verified OK`)确认二进制是按下列工作流程构建的: `agentscore` GitHub org 对已公布来源, 不篡改后构建 。 这个 `.bundle` 文件被上传到发布中每个二进制的旁边.

Npm 软件包本身以 [npm 来源](https://docs.npmjs.com/generating-provenance-statements) (还有斜坡背后), `npm install @agent-score/pay` 自动继承同一信任链.

## 环境

| 变量 | 目的 |
| --- | --- |
| `AGENTSCORE_PAY_PASSPHRASE` | 跳过交互式密码句提示 |
| `AGENTSCORE_PAY_HOME` | 覆盖状态目录( 默认) `~/.agentscore`,允许您运行多个钱包配置 |
| `BASE_RPC_URL` | 覆盖 Base 主网 RPC 端点 |
| `BASE_SEPOLIA_RPC_URL` | 覆盖基点 Sepolia RPC 端点 |
| `SOLANA_RPC_URL` | 覆盖索拉纳主网 RPC 端点 |
| `SOLANA_DEVNET_RPC_URL` | 覆盖索拉纳 Devnet RPC 端点 |
| `TEMPO_RPC_URL` | 覆盖 Tempo 主网 RPC 端点 |
| `TEMPO_TESTNET_RPC_URL` | 覆盖 Tempo 测试网 RPC 端点 |
| `AGENTSCORE_API_KEY` | 身份命令的 API 密钥 (`assess`, (中文(简体) ), `sessions`, (中文(简体) ), `credentials`, (中文(简体) ), `associate-wallet`(中文(简体) ) |

## 与其他代理计分包的关系

`@agent-score/pay` 是通用代理支付CLI;它与任何x402/MPP商家合作,无论他们是否使用AgentScore作为身份. 以下包是 AgentScore 的可选身份 + 集成层,供选择使用:

-   [`@agent-score/sdk`](https://www.npmjs.com/package/@agent-score/sdk), AgentScore API 的脚本客户端
-   [`@agent-score/commerce`](https://www.npmjs.com/package/@agent-score/commerce),商边 SDK: 建立信任的中间软件(`/identity/{hono,express,fastify,nextjs,web}`\+ 402 / 支付/ 发现/ 条纹- 多链帮助器
-   **`@agent-score/pay`** (本套件),代理-侧 CLI:钱包+跨越x402/MPP铁道的支付+身份命令(资产,会话,证书,协理-wallet). 作为 MCP 服务器的双倍 `--mcp`。 。 。 .

当商人使用 `@agent-score/commerce`,钱包对操作器连接时,商家会通过 `captureWallet`,工资不重复 `POST /v1/credentials/wallets` 电话 对于非AgentScore商家来说,这是不开放的;除非商家的402个挑战需要AgentScore身份,否则工资不会与AgentScore API联系.

## 许可证

麻省理工学院

## 常见问题

### @agent-score/pay 是什么？

单壳命令代理付款的 CLI 钱包, 跨越 x402 \(Base\) 和 MPP \(Tempo, Solana\)

### 如何安装 @agent-score/pay？

在项目目录运行 npm install @agent-score/pay，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 agentscore-pay，可以用 npx agentscore-pay 直接运行。

### @agent-score/pay 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @agent-score/pay 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @agent-score/pay 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22 \<27。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @agent-score/pay 可以商用吗？

@agent-score/pay 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @agent-score/pay 的下载量有多少？

根据 npm 官方下载统计，@agent-score/pay 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,055 次，日均约 69 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @agent-score/pay 还在维护吗？

最新版本 0\.7\.7 发布于 2026/11/02（5 天前）；至今共发布 70 个版本，其中过去 12 个月发布了 70 个；首次发布于 2026/04/25。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

