关于 nansen-wallet-manager
nansen-wallet-manager 是面向使用 Nansen CLI 的 Agent 的钱包管理技能,说明本地加密钱包与 Privy 服务端钱包的创建和操作,并强调凭据、密码及签名安全规则。
主要功能
- 01创建本地加密或 Privy 钱包
- 02查看、列出及设置默认钱包
- 03发送 EVM 或 Solana 资产
- 04安全导出或删除钱包
- 05使用系统密钥链管理密码
适用场景
- 01为自动化工作流创建 Privy 钱包
- 02预览并发送链上资产
- 03管理本地钱包并安全导出密钥
- 04将钱包密码保存在安全存储中
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nansen-ai/ nansen-cli --skill nansen-wallet-manager安装后在 Claude Code 中输入/nansen-wallet-manager确认已加载。
详细介绍
身份验证
Nansen 账户 API 调用可使用选定的 nansen:api 浏览器会话,也可使用权限相同的常规 API 密钥。NANSEN_API_KEY 优先;可选的 primaryEnv 会保留已配置密钥的注入方式。运行 nansen auth status 可离线选择。仅缓存的访问权限过期时,可在已授权任务期间自动续期。如果选中匿名身份、状态无效、续期受阻或无法确定,或身份验证实际失败,则停止操作;绝不可丢弃凭据或回退到匿名 x402 付款。浏览器登录不会授予钱包签名权限、特权服务身份或持久的 MCP 集成密钥。CLI 2.0.0 中提供浏览器登录,但仅适用于macOS arm64 预览范围。
钱包
身份验证设置
Nansen 账户 API 调用可使用选定的 nansen:api 浏览器会话或常规 API 密钥。Agent 应通过环境或密钥管理器注入 NANSEN_API_KEY,并直接使用命令;无需登录即可保存该密钥。使用终端的人员可以显式运行 nansen login --human 来设置旧版密钥。如果环境中已注入密钥,此显式模式会直接保存密钥,不会提示输入,并且需要原生身份验证锁定绑定。
# Free live check of the effective API credential
nansen account
普通的 nansen login 则会请求新的浏览器授权。它不会保存环境密钥,也不会授予钱包签名或 RPC 权限。下文所述的钱包托管和提供商凭据彼此独立。
钱包提供商
CLI 支持两种钱包提供商:
| 本地(默认) | Privy(服务端) | |
|---|---|---|
| 密钥存储 | 加密后存储在磁盘上 | 通过 Privy API 存储在服务端 |
| 是否需要密码 | 是(至少 12 个字符) | 否 |
| 导出私钥 | 是(wallet export) | 否 — 密钥由 Privy 管理 |
| 最适合 | 人类用户、手动交易 | Agent、自动化工作流 |
| 标志 | --provider local(默认) | --provider privy |
| 必需的环境变量 | NANSEN_WALLET_PASSWORD | PRIVY_APP_ID + PRIVY_APP_SECRET |
创建 Privy 钱包
Privy 钱包是由 Privy API 管理的服务端钱包。无需密码 — 密钥不会接触本地计算机。
前提条件
必须设置以下环境变量:
| 变量 | 用途 |
|---|---|
PRIVY_APP_ID | Privy 应用程序 ID |
PRIVY_APP_SECRET | Privy 应用程序密钥 |
创建 Privy 钱包
nansen wallet create --provider privy
# Or with a custom name:
nansen wallet create --name agent-wallet --provider privy
面向 Agent 的关键规则(Privy)
- 无需密码 — Privy 在服务端管理密钥
- 无法导出密钥 —
wallet export仅适用于本地钱包 - 其他所有操作(
list、show、send、delete、default)在两种提供商下的运行方式相同
创建本地钱包(Agent 两步流程)
本节介绍本地钱包的创建。Privy 服务端钱包无需密码,请参阅上文的 创建 Privy 钱包章节。
创建钱包需要人类用户提供密码。Agent 绝不可自行生成或存储密码。
第 1 步(Agent → 人类用户): 请用户提供钱包密码(至少 12 个字符)。
第 2 步(Agent 执行): 使用用户提供的密码运行创建命令。
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet create
创建后,CLI 会自动保存密码:
- OS 密钥链(macOS Keychain、Linux secret-tool、Windows Credential Manager)— 安全,优先使用
- ~/.nansen/wallets/.credentials 文件 — 无法使用密钥链时的不安全备用方案(例如容器、CI)
所有后续钱包操作都会自动获取密码 — 无需环境变量或人工输入。
如果使用 .credentials 文件备用方案,CLI 每次操作时都会打印警告。若要之后迁移到安全存储,请运行 nansen wallet secure。
密码解析顺序(自动)
NANSEN_WALLET_PASSWORD环境变量(如果已设置)- OS 密钥链(创建钱包时自动保存)
~/.nansen/wallets/.credentials文件(不安全的备用方式,并附带警告)- 结构化 JSON 错误及相关说明(如果以上方式均不可用)
Agent 的关键规则
- 绝不要自行生成密码——务必询问人类用户
- 绝不要将密码存储在文件、内存、日志或对话历史中
- 绝不要使用
--human标志——该标志会启用交互式提示,Agent 无法处理 - 创建钱包后,后续操作不再需要密码——密钥链会负责处理
- 如果收到
PASSWORD_REQUIRED错误,请再次要求用户提供密码
创建
Privy(服务端,无需密码)
nansen wallet create --provider privy
# Or with a custom name:
nansen wallet create --name trading --provider privy
需要设置 PRIVY_APP_ID 和 PRIVY_APP_SECRET 环境变量。无需密码。
本地(加密存储在磁盘上,需要密码)
# Ask the user for a password first, then:
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet create
# Or with a custom name:
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet create --name trading
列出和显示
nansen wallet list
nansen wallet show <name>
nansen wallet default <name>
发送
# Send native token (SOL, ETH) — password auto-resolved from keychain
nansen wallet send --to <addr> --amount 1.5 --chain solana
# Send entire balance
nansen wallet send --to <addr> --chain evm --max
# Dry run (preview, no broadcast)
nansen wallet send --to <addr> --amount 1.0 --chain evm --dry-run
导出和删除
# Default is REDACTED — shows addresses only, never private keys
nansen wallet export <name>
# Write private keys to a file only the owner can read (0600, refuses to overwrite)
nansen wallet export <name> --file <path>
# Print private keys in plaintext to stdout (explicit acknowledgement required;
# warns on stderr when stdout is an interactive terminal)
nansen wallet export <name> --reveal
# Password auto-resolved from keychain (needed for --reveal / --file)
nansen wallet delete <name>
优先使用 --file 而非 --reveal:标准输出中的明文会留在终端回滚缓冲区、Shell 日志和 Agent 对话记录中。
忘记密码
# Remove saved password from all stores (keychain + .credentials file)
nansen wallet forget-password
迁移到安全存储
nansen wallet secure
有关详细迁移步骤(从 ~/.nansen/.env、.credentials 或仅使用环境变量的设置迁移),请参阅 nansen-wallet-migration 技能。
标志
| 标志 | 用途 |
|---|---|
--to | 接收方地址 |
--amount | 发送金额 |
--chain | evm 或 solana |
--max | 发送全部余额 |
--dry-run | 预览但不广播 |
--provider | 钱包提供方:local(默认,加密存储在磁盘上)或 privy(通过 Privy API 在服务端运行) |
--reveal | 仅用于导出:以明文形式将私钥打印到标准输出(需确认) |
--file | 仅用于导出:将私钥写入此路径(以 0600 权限创建,拒绝覆盖现有文件) |
--human | 启用交互式提示(仅供人类在终端中使用——Agent 不得使用此标志) |
--unsafe-no-password | 跳过加密(密钥将以明文存储——不推荐) |
环境变量
| 变量 | 用途 |
|---|---|
NANSEN_WALLET_PASSWORD | 钱包加密密码——仅在首次执行 wallet create 时需要。之后由 OS 密钥链处理。 |
NANSEN_API_KEY | API 密钥(也可通过 nansen login --human 保存) |
PRIVY_APP_ID | Privy 应用 ID(--provider privy 必需) |
PRIVY_APP_SECRET | Privy 应用密钥(--provider privy 必需) |
NANSEN_WALLET_PROVIDER | 创建钱包时的默认提供方——local 或 privy |
NANSEN_EVM_RPC | 自定义 EVM RPC 端点 |
NANSEN_SOLANA_RPC | 自定义 Solana RPC 端点 |