mcpField
N
nansen-wallet-manager

nansen-wallet-manager

github.com/nansen-ai其他144367 次安装今天更新
代码仓库

关于 nansen-wallet-manager

nansen-wallet-manager 是面向使用 Nansen CLI 的 Agent 的钱包管理技能,说明本地加密钱包与 Privy 服务端钱包的创建和操作,并强调凭据、密码及签名安全规则。

主要功能

  1. 01创建本地加密或 Privy 钱包
  2. 02查看、列出及设置默认钱包
  3. 03发送 EVM 或 Solana 资产
  4. 04安全导出或删除钱包
  5. 05使用系统密钥链管理密码

适用场景

  1. 01为自动化工作流创建 Privy 钱包
  2. 02预览并发送链上资产
  3. 03管理本地钱包并安全导出密钥
  4. 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_PASSWORDPRIVY_APP_ID + PRIVY_APP_SECRET

创建 Privy 钱包

Privy 钱包是由 Privy API 管理的服务端钱包。无需密码 — 密钥不会接触本地计算机。

前提条件

必须设置以下环境变量:

变量用途
PRIVY_APP_IDPrivy 应用程序 ID
PRIVY_APP_SECRETPrivy 应用程序密钥
创建 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。

密码解析顺序(自动)
  1. NANSEN_WALLET_PASSWORD 环境变量(如果已设置)
  2. OS 密钥链(创建钱包时自动保存)
  3. ~/.nansen/wallets/.credentials 文件(不安全的备用方式,并附带警告)
  4. 结构化 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发送金额
--chainevm 或 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_KEYAPI 密钥(也可通过 nansen login --human 保存)
PRIVY_APP_IDPrivy 应用 ID(--provider privy 必需)
PRIVY_APP_SECRETPrivy 应用密钥(--provider privy 必需)
NANSEN_WALLET_PROVIDER创建钱包时的默认提供方——local 或 privy
NANSEN_EVM_RPC自定义 EVM RPC 端点
NANSEN_SOLANA_RPC自定义 Solana RPC 端点

评论

支持 Markdown