mcpField
A
agent-wallet

agent-wallet

github.com/bofaiその他163111 回インストール6 日前に更新
リポジトリ

agent-wallet について

agent-wallet CLI を使ってウォレットの確認、アドレス解決、署名を行うエージェント向けスキルです。鍵の操作は CLI に限定し、トランザクションの構築やブロードキャストは対象外です。

主な機能

  1. 01ウォレットの一覧表示と切り替え
  2. 02ウォレットの作成と追加
  3. 03EVM・TRON アドレスの解決
  4. 04トランザクション・メッセージ・typed data の署名
  5. 05高リスク操作の制限

活用シーン

  1. 01設定済み・アクティブなウォレットの確認
  2. 02ネットワーク向けトランザクションペイロードへの署名
  3. 03ウォレットの EVM・TRON アドレスの確認
  4. 04安全なウォレット作成やインポートの案内

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bofai/skills --skill agent-wallet

インストール後、Claude Code で/agent-walletを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands-reference.md
README.md
shell-quoting.md
scripts/
generate-password.js

詳細

Agent Wallet スキル

重要:秘密鍵やニーモニックを直接扱わないでください。 すべての暗号操作は CLI を通じて行います。キーストアファイルを読み取ったり、秘密鍵を解析したり、会話内でニーモニックを公開したりしないでください。すべての操作に CLI コマンドを使用してください。

このスキルは署名専用です。トランザクションの構築とブロードキャストは対象外です。

インストール

agent-wallet --help を実行して、CLI がすでにインストールされているか確認します。コマンドが見つからない場合は、ユーザーに安定版かベータ版かを尋ねます。

# Node.js — stable
npm install -g @bankofai/agent-wallet

# Node.js — beta
npm install -g @bankofai/agent-wallet@beta

やり取りのワークフロー

ユーザーからのリクエストごとに、次の4ステップのパターンに従います。

ステップ1 — 現在の状態を確認してから、意図を把握する

既存のウォレットとアクティブなウォレットを確認するため、必ず最初に agent-wallet list を実行します。初回セットアップだと決めつけないでください。

  • ウォレットが存在しない → 最初にウォレットの種類を説明付きで提示してから(省略しないでください)、ユーザーに選んでもらいます。次のように提示します。
    • local_secure — 秘密鍵をマスターパスワードでローカルに暗号化します。本番環境での使用を推奨します。
    • privy — API 認証情報(App ID + App Secret + Privy Wallet ID)を使って、Privy ホスト型ウォレットを利用します。秘密鍵はローカルに保存されません。
    • (raw_secret は無効です。ユーザーが手動で設定する必要があり、エージェントはセットアップできません)
  • ウォレットがすでに存在する → start を再実行せず、代わりに add を使用します(--override を指定しない限りエラーになります)。

ステップ2 — コマンドを調べる(必須、例外なし)

実行する前に、必ず agent-wallet <command> --help を実行してください。フラグを把握していると思っていても、この手順を省略しないでください。

agent-wallet start --help        # always run first
agent-wallet start local_secure --help   # then subcommand help if applicable

ステップ3 — 一度にすべて尋ねる

必要な情報をすべて1つのメッセージで確認します。説明を添えて、プライバシーに関わる次の選択肢を必ず含めます。

  • --save-runtime-secrets:パスワードを暗号化せずに ~/.agent-wallet/runtime_secrets.json に保存します。個人用マシンでは便利ですが、共有環境では避けてください。
  • --dir:カスタムの秘密情報ディレクトリです。ユーザーがデフォルト以外の設定を使用している可能性がある場合のみ尋ねます。

ステップ4 — 実行する

ユーザーの回答を使い、すべてのフラグを含む完全なコマンドを1つ組み立てます。プロンプトが表示されることを期待して、不完全なコマンドを実行しないでください。

制限されている操作

remove、reset、change-password はエージェントに制限されている操作です。エージェントはこれらのコマンドを実行してはいけません。不適切に使用すると、ウォレットへのアクセスを永久に回復不能な形で失うおそれがあります(秘密鍵は復元できません)。

ユーザーがこれらの操作を求めた場合:

  1. 操作の内容と、取り消せないことを説明します
  2. ユーザー自身の端末でコマンドを実行するよう伝えます
  3. コピーして貼り付けられる正確なコマンドを提示しますが、実行はしません
# Examples to show the user — do NOT run via agent
agent-wallet remove <id> --yes
agent-wallet reset --yes
agent-wallet change-password -p 'OldPass' --new-password 'NewPass'

危険信号 — 代わりに CLI を使用

考えたこと正しい対応
「wallets_config.json を読んでみよう」agent-wallet list
「鍵からアドレスを導出できる」agent-wallet resolve-address <id>
「パスワードが必要なので、ユーザー自身にコマンドを実行してもらおう」会話内でユーザーにパスワードを尋ね、Bash コマンドで --password '<pw>' を使用します。エージェントによる Bash の実行内容はシェル履歴に記録されません
「先にトランザクションを構築しよう」対象外です。ユーザーにペイロードを要求します
「ユーザーが鍵/ニーモニックのインポートを希望している」ユーザー自身が端末で add --private-key / add --mnemonic を実行するよう伝えます。鍵の情報をこの会話でやり取りしないでください
「フラグは把握しているので、--help は省略しよう」必ず最初に --help を実行してください。 サブコマンドや必須フラグが不足すると、非対話型のエラーが発生します。--help の実行には1秒かかるだけで、実行の失敗を防げます。

パスワードの解決(最初に一致したものを使用)

  1. ランタイムシークレット(~/.agent-wallet/runtime_secrets.json)← 初回セットアップ後はこれを優先
  2. AGENT_WALLET_PASSWORD 環境変数
  3. --password '<pw>' フラグ ← ランタイムシークレットがまだ設定されていない場合、エージェントコンテキストではこれを使用します
  4. 対話型プロンプト(非対話型コンテキストでは使用できません)

--password によってパスワードがユーザーのシェル履歴に記録されるのは、ユーザーが端末で手動入力した場合のみです。エージェントが Bash ツール経由でコマンドを実行する場合、対話型シェルの履歴はありません。会話でユーザーにパスワードを尋ね、--password で渡すのは安全かつ適切です。

エージェントコンテキストのルール

エージェントコンテキストでは stdin は TTY ではありません。すべての対話型プロンプトが無効になります。必要なフラグはすべて必ず明示的に指定してください。指定しないと、コマンドがハングまたは失敗します。

状況必須フラグ
start、add(local_secure)--wallet-id <id> + --generate
start、add(privy)--wallet-id <id> + --app-id + --app-secret + --privy-wallet-id
use、inspect、resolve-address位置引数 <wallet-id>
sign *--network <net>
ランタイムシークレットが未設定--password <pw>

シェルによる展開を防ぐため、ユーザーが指定した文字列は必ず引用符で囲んでください。 '...' の単一引用符は bash、zsh、PowerShell 7、fish で使用できます。PowerShell 5 と cmd.exe では JSON ペイロードに別の処理が必要です。shell-quoting.md を参照してください。

agent-wallet sign tx '{"to":"0x...","chainId":1}' --network eip155:1

コマンド

すべてのオプションについては、agent-wallet <command> --help を実行してください。すべてのフラグについては、commands-reference.md を参照してください。

コマンド用途
start local_secure --wallet-id <id> --generate初回セットアップ:初期化して暗号化ウォレットを作成
listすべてのウォレットとアクティブマーカーを一覧表示
resolve-address [id]ウォレットの EVM アドレスと TRON アドレスを表示
inspect <id> [--show-address]ウォレットのメタデータ(およびアドレス)を表示
use <id>アクティブなウォレットを切り替え
add local_secure --wallet-id <id> --generate新しい暗号化ウォレットを追加
sign tx '<json>' --network <net>トランザクションに署名
sign msg '<text>' --network <net>メッセージに署名(EIP-191)
sign typed-data '<json>' --network <net>EIP-712 形式の型付きデータに署名(EVM のみ)
remove <id> --yes❌ エージェントによる実行は禁止 — ユーザーに手動実行を案内
change-password❌ エージェントによる実行は禁止 — ユーザーに手動実行を案内
reset --yes❌ エージェントによる実行は禁止 — ユーザーに手動実行を案内

ネットワーク識別子

形式:EVM では eip155:<chainId>、TRON では正規の CAIP-2 ID(tron:0x2b6653dc(Mainnet)、tron:0xcd8690dc(Nile)、または tron:0x94a9059e(Shasta))。

よく使われる識別子:eip155:1(Ethereum)、eip155:137(Polygon)、eip155:56(BSC)、eip155:42161(Arbitrum)、eip155:8453(Base)。

1 つのウォレットから同じキーを使って EVM アドレスと TRON アドレスが別々に導出されます。両方を確認するには resolve-address を使用してください。

エラー処理

エラー解決方法
No wallets configuredagent-wallet start --save-runtime-secrets
Password required--save-runtime-secrets を指定してセットアップを再実行
DecryptionError / wrong passwordAGENT_WALLET_PASSWORD またはランタイムシークレットを確認
Already initializedディレクトリはすでにセットアップ済みです。init を省略し、add に進んでください
Wallet not found: <id>有効な ID を確認するには agent-wallet list を実行
Network not supportedeip155:<chainId> または tron:0x2b6653dc/tron:0xcd8690dc などの正規の TRON CAIP-2 ID を使用
Private key must be 32 bytes無効なキー形式です。ユーザー側の問題のため、手動でインポートを実行してください

コメント