okx-wallet-portfolio by okx/onchainos-skills
npx skills add https://github.com/okx/onchainos-skills --skill okx-wallet-portfolio支持查询链列表、钱包总价值、所有代币余额以及特定代币余额的 4 条命令。
每次运行任何 onchainos 命令之前,请务必按顺序执行以下步骤。不要向用户回显常规命令输出;仅在安装、更新或处理故障时提供简短的状态更新。
解析最新稳定版本:从 GitHub API 获取最新的稳定发布标签:
curl -sSL "https://api.github.com/repos/okx/onchainos-skills/releases/latest"
从响应中提取 tag_name 字段(例如 v1.0.5)到 LATEST_TAG 变量中。如果 API 调用失败,但 onchainos 已安装在本地,则跳过步骤 2-3,继续运行命令(用户可能离线或受到速率限制;使用过时的二进制文件总比阻塞操作好)。如果 onchainos 未安装,则停止并告知用户检查网络连接或从 https://github.com/okx/onchainos-skills 手动安装。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
onchainos,或者缓存文件 ~/.onchainos/last_check(Windows 上为 $env:USERPROFILE\.onchainos\last_check)的修改时间超过 12 小时: * 从最新的发布标签下载安装程序及其校验和文件:
* **macOS/Linux**:`curl -sSL "https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.sh" -o /tmp/onchainos-install.sh` `curl -sSL "https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt" -o /tmp/installer-checksums.txt`
* **Windows**:`Invoke-WebRequest -Uri "https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.ps1" -OutFile "$env:TEMP\onchainos-install.ps1"` `Invoke-WebRequest -Uri "https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt" -OutFile "$env:TEMP\installer-checksums.txt"`
* 根据 `installer-checksums.txt` 验证安装程序的 SHA256 哈希值。如果不匹配,**停止**并发出警告——安装程序可能已被篡改。
* 执行:`sh /tmp/onchainos-install.sh`(或在 Windows 上执行 `& "$env:TEMP\onchainos-install.ps1"`)。安装程序内部会处理版本比较,仅在需要时才下载二进制文件。
* 如果出现其他故障,请引导用户访问 <https://github.com/okx/onchainos-skills>。
3. 验证二进制文件完整性(每个会话一次):运行 onchainos --version 获取已安装版本(例如 1.0.5 或 2.0.0-beta.0)。将已安装的标签构造为 v<version>。为已安装版本的标签(不一定是 LATEST_TAG)下载 checksums.txt:curl -sSL "https://github.com/okx/onchainos-skills/releases/download/v<version>/checksums.txt" -o /tmp/onchainos-checksums.txt 查找对应的平台目标,并将已安装二进制文件的 SHA256 与校验和进行比较。如果不匹配,重新安装(步骤 2)并重新验证。如果仍然不匹配,停止并发出警告。
* 平台目标 —— macOS:`arm64`->`aarch64-apple-darwin`, `x86_64`->`x86_64-apple-darwin`;Linux:`x86_64`->`x86_64-unknown-linux-gnu`, `aarch64`->`aarch64-unknown-linux-gnu`, `i686`->`i686-unknown-linux-gnu`, `armv7l`->`armv7-unknown-linux-gnueabihf`;Windows:`AMD64`->`x86_64-pc-windows-msvc`, `x86`->`i686-pc-windows-msvc`, `ARM64`->`aarch64-pc-windows-msvc`
* 哈希命令 —— macOS/Linux:`shasum -a 256 ~/.local/bin/onchainos`;Windows:`(Get-FileHash "$env:USERPROFILE\.local\bin\onchainos.exe" -Algorithm SHA256).Hash.ToLower()`
4. 检查技能版本漂移(每个会话一次):如果 onchainos --version 的版本比此技能的 metadata.version 新,则显示一次性通知,告知该技能可能已过时,并建议用户通过其平台的方法重新安装技能。不要阻塞操作。
命令失败时不要自动重新安装。 报告错误并建议用户运行 onchainos --version 或从 https://github.com/okx/onchainos-skills 手动重新安装。
速率限制错误。 如果命令触发速率限制,共享的 API 密钥可能被限制。建议用户在 OKX 开发者门户 创建个人密钥。如果用户创建了 .env 文件,提醒他们将其添加到 .gitignore 中。
okx-dex-marketokx-dex-marketokx-dex-tokenokx-dex-signalokx-dex-trenchesokx-dex-swapokx-onchain-gateway# 获取支持余额查询的链列表
onchainos portfolio chains
# 获取在 XLayer 和 Solana 上的总资产价值
onchainos portfolio total-value --address 0xYourWallet --chains "xlayer,solana"
# 获取所有代币余额
onchainos portfolio all-balances --address 0xYourWallet --chains "xlayer,solana,ethereum"
# 检查特定代币(XLayer 上的原生 OKB + USDC)
onchainos portfolio token-balances --address 0xYourWallet --tokens "196:,196:0x74b7f16337b8972027f6196a17a631ac6de26d22"
CLI 接受人类可读的链名称并自动解析它们。
| 链 | 名称 | chainIndex |
|---|---|---|
| XLayer | xlayer | 196 |
| Solana | solana | 501 |
| Ethereum | ethereum | 1 |
| Base | base | 8453 |
| BSC | bsc | 56 |
| Arbitrum | arbitrum | 42161 |
地址格式说明:EVM 地址(0x...)在 Ethereum/BSC/Polygon/Arbitrum/Base 等链上通用。Solana 地址(Base58)和 Bitcoin 地址(UTXO)格式不同。不要跨链类型混合使用格式。
---|---|---
1 | onchainos portfolio chains | 获取支持余额查询的链列表
2 | onchainos portfolio total-value --address <address> --chains <chains> | 获取钱包总资产价值(两个参数均为必需)
3 | onchainos portfolio all-balances --address <address> --chains <chains> | 获取钱包所有代币余额(两个参数均为必需)
4 | onchainos portfolio token-balances --address ... --tokens ... | 获取特定代币余额
此技能通常在交换前(用于验证余额是否充足)或作为资产组合的入口点使用。
用户:"用 1 SOL 交换 BONK"
1. okx-dex-token onchainos token search --query BONK --chains solana → 获取 tokenContractAddress
↓ tokenContractAddress
2. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains solana
→ 验证 SOL 余额 >= 1
↓ balance 字段(UI 单位)→ 转换为交换所需的最小单位
3. okx-dex-swap onchainos swap quote --from 11111111111111111111111111111111 --to <BONK_address> --amount 1000000000 --chain solana
4. okx-dex-swap onchainos swap swap --from ... --to <BONK_address> --amount 1000000000 --chain solana --wallet <addr>
↓ 获取交换调用数据,然后通过以下两条路径之一执行:
路径 A(用户提供的钱包):用户外部签名 → onchainos gateway broadcast --signed-tx <tx> --address <addr> --chain solana
路径 B(智能钱包): onchainos wallet contract-call --to <tx.to> --chain solana --unsigned-tx <tx.data>
数据传递:
tokenContractAddress → 输入到交换的 --from / --to 参数balance 是 UI 单位;交换需要 最小单位 → 乘以 10^decimal用户:"显示我的资产组合"
1. okx-wallet-portfolio onchainos portfolio total-value --address <addr> --chains "xlayer,solana,ethereum"
→ 总美元价值
2. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains "xlayer,solana,ethereum"
→ 按代币细分
↓ 按美元价值排序的顶级持仓
2b. (okx-dex-market) onchainos market portfolio-overview --address <addr> --chain ethereum -> 盈亏摘要和胜率
3. okx-dex-token onchainos token price-info --address <address> --chain <chain> → 补充 24 小时变化、市值信息
4. okx-dex-market onchainos market kline --address <address> --chain <chain> → 感兴趣代币的价格图表
1. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains "xlayer,solana,ethereum"
→ 列出所有持仓
↓ 每个代币的 tokenContractAddress + chainIndex
2. okx-dex-token onchainos token price-info --address <address> --chain <chain> → 获取每个代币的 priceChange24H
3. 按负变化筛选 → 用户确认要出售哪些代币
4. okx-dex-swap onchainos swap quote --from <token_addr> --to <native_addr> --amount ... --chain <chain> → 获取报价
5. okx-dex-swap onchainos swap swap --from <token_addr> --to <native_addr> --amount ... --chain <chain> --wallet <addr>
→ 获取交换调用数据,然后通过以下两条路径之一执行:
路径 A(用户提供的钱包):用户外部签名 → onchainos gateway broadcast --signed-tx <tx> --address <addr> --chain <chain>
路径 B(智能钱包): onchainos wallet contract-call --to <tx.to> --chain <chain> --value <value_in_UI_units> --input-data <tx.data>
关键转换:balance(UI 单位) × 10^decimal = 交换所需的 amount(最小单位)。
onchainos portfolio total-valueonchainos portfolio all-balancesonchainos portfolio token-balancesonchainos portfolio chainsokx-dex-market (onchainos market portfolio-overview/portfolio-dex-history/portfolio-recent-pnl/portfolio-token-pnl)--chains xlayer,低 gas 费,确认快)作为默认值,然后询问用户偏好哪些链。常见集合:"xlayer,solana,ethereum,base,bsc"--exclude-risk 0(仅在 ETH/BSC/SOL/BASE 链上有效)0x1234...abcd —— 使用响应中的 tokenContractAddress)。始终包含合约地址,以便用户验证代币身份。x、w、st、r、m 的代币)可能从余额 API 获取到错误的符号或价格元数据。显示余额后,添加一条注释:⚠️ 代币元数据(符号和价格)来源于 OKX 余额 API,对于封装或桥接代币可能不准确。请务必验证合约地址,并对高价值持仓交叉核对价格。
显示结果后,建议 2-3 个相关的后续操作:
| 刚完成的操作 | 建议 |
|---|---|
portfolio total-value | 1. 查看代币级别细分 → onchainos portfolio all-balances(本技能) 2. 检查顶级持仓的价格趋势 → okx-dex-market |
portfolio all-balances | 1. 查看代币的详细分析 → okx-dex-token 2. 交换代币 → okx-dex-swap 3. 查看盈亏分析 → okx-dex-market (onchainos market portfolio-overview) |
portfolio token-balances | 1. 查看所有代币的完整资产组合 → onchainos portfolio all-balances(本技能) 2. 交换此代币 → okx-dex-swap |
以对话方式呈现,例如:"您想查看您顶级持仓的价格图表,还是交换这些代币中的任何一个?" —— 永远不要向用户暴露技能名称或端点路径。
有关所有 4 条命令的详细参数表、返回字段模式和用法示例,请查阅:
references/cli-reference.md —— 包含参数、返回字段和示例的完整 CLI 命令参考要搜索特定命令的详细信息:grep -n "onchainos portfolio <command>" references/cli-reference.md
$0.00,而不是错误onchainos portfolio chains 进行确认--exclude-risk 无效:仅在 ETH(1)/BSC(56)/SOL(501)/BASE(8453) 链上支持--asset-type 2 单独查询 DeFi 持仓0x…)和 Solana/UTXO 地址格式不兼容。将 EVM 地址与 Solana 链(或反之)一起传递会导致整个请求失败并返回 API 错误 —— 不会返回部分结果。始终进行单独的请求:一个调用使用 EVM 地址查询 EVM 链,另一个调用使用 Solana 地址查询 Solana 链。⚠️ 您所在的地区无法使用此服务。请切换到支持的地区后重试。1.5 ETH),永远不要用基础单位(1500000000000000000)$1.2M)0x1234...abcd)。对于 tokenContractAddress 为空的原生代币,显示 (native)。x、w、st、r 或 m 开头(常见的封装/桥接前缀),或者代币名称包含 "BTC" / "ETH" 但报告的价格远低于 BTC/ETH 市场价格,则在美元价值旁边添加一个内联标记 ⚠️ price unverified,并建议对该代币运行 onchainos token price-info。--chains 最多支持 50 个链 ID(逗号分隔,名称或数字)--asset-type:0=全部 1=仅代币 2=仅 DeFi(仅适用于 total-value)--exclude-risk 仅在 ETH(1)/BSC(56)/SOL(501)/BASE(8453) 链上有效token-balances 最多支持 20 个代币条目ethereum → 1,solana → 501)每周安装量
3.1K
仓库
GitHub 星标数
173
首次出现
2026年2月28日
安全审计
安装于
codex3.0K
opencode3.0K
cursor3.0K
github-copilot3.0K
gemini-cli3.0K
amp3.0K
4 commands for supported chains, wallet total value, all token balances, and specific token balances.
Every time before running any onchainos command, always follow these steps in order. Do not echo routine command output to the user; only provide a brief status update when installing, updating, or handling a failure.
Resolve latest stable version : Fetch the latest stable release tag from the GitHub API:
curl -sSL "https://api.github.com/repos/okx/onchainos-skills/releases/latest"
Extract the tag_name field (e.g., v1.0.5) into LATEST_TAG. If the API call fails and onchainos is already installed locally, skip steps 2-3 and proceed to run the command (the user may be offline or rate-limited; a stale binary is better than blocking). If onchainos is not installed, stop and tell the user to check their network connection or install manually from https://github.com/okx/onchainos-skills.
Install or update : If onchainos is not found, or if the cache at ~/.onchainos/last_check ($env:USERPROFILE\.onchainos\last_check on Windows) is older than 12 hours:
curl -sSL "https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.sh" -o /tmp/onchainos-install.sh curl -sSL "https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt" -o /tmp/installer-checksums.txtInvoke-WebRequest -Uri "https://raw.githubusercontent.com/okx/onchainos-skills/${LATEST_TAG}/install.ps1" -OutFile "$env:TEMP\onchainos-install.ps1" okx-dex-marketokx-dex-marketokx-dex-tokenokx-dex-signalokx-dex-trenchesokx-dex-swapokx-onchain-gateway# Get supported chains for balance queries
onchainos portfolio chains
# Get total asset value on XLayer and Solana
onchainos portfolio total-value --address 0xYourWallet --chains "xlayer,solana"
# Get all token balances
onchainos portfolio all-balances --address 0xYourWallet --chains "xlayer,solana,ethereum"
# Check specific tokens (native OKB + USDC on XLayer)
onchainos portfolio token-balances --address 0xYourWallet --tokens "196:,196:0x74b7f16337b8972027f6196a17a631ac6de26d22"
The CLI accepts human-readable chain names and resolves them automatically.
| Chain | Name | chainIndex |
|---|---|---|
| XLayer | xlayer | 196 |
| Solana | solana | 501 |
| Ethereum | ethereum | 1 |
| Base | base |
Address format note : EVM addresses (0x...) work across Ethereum/BSC/Polygon/Arbitrum/Base etc. Solana addresses (Base58) and Bitcoin addresses (UTXO) have different formats. Do NOT mix formats across chain types.
---|---|---
1 | onchainos portfolio chains | Get supported chains for balance queries
2 | onchainos portfolio total-value --address <address> --chains <chains> | Get total asset value for a wallet (both params required)
3 | onchainos portfolio all-balances --address <address> --chains <chains> | Get all token balances for a wallet (both params required)
4 | onchainos portfolio token-balances --address ... --tokens ... | Get specific token balances
This skill is often used before swap (to verify sufficient balance) or as portfolio entry point.
User: "Swap 1 SOL for BONK"
1. okx-dex-token onchainos token search --query BONK --chains solana → get tokenContractAddress
↓ tokenContractAddress
2. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains solana
→ verify SOL balance >= 1
↓ balance field (UI units) → convert to minimal units for swap
3. okx-dex-swap onchainos swap quote --from 11111111111111111111111111111111 --to <BONK_address> --amount 1000000000 --chain solana
4. okx-dex-swap onchainos swap swap --from ... --to <BONK_address> --amount 1000000000 --chain solana --wallet <addr>
↓ get swap calldata, then execute via one of two paths:
Path A (user-provided wallet): user signs externally → onchainos gateway broadcast --signed-tx <tx> --address <addr> --chain solana
Path B (Agentic Wallet): onchainos wallet contract-call --to <tx.to> --chain solana --unsigned-tx <tx.data>
Data handoff :
tokenContractAddress from token search → feeds into swap --from / --tobalance from portfolio is UI units ; swap needs minimal units → multiply by 10^decimalUser: "Show my portfolio"
1. okx-wallet-portfolio onchainos portfolio total-value --address <addr> --chains "xlayer,solana,ethereum"
→ total USD value
2. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains "xlayer,solana,ethereum"
→ per-token breakdown
↓ top holdings by USD value
2b. (okx-dex-market) onchainos market portfolio-overview --address <addr> --chain ethereum -> PnL summary and win rate
3. okx-dex-token onchainos token price-info --address <address> --chain <chain> → enrich with 24h change, market cap
4. okx-dex-market onchainos market kline --address <address> --chain <chain> → price charts for tokens of interest
1. okx-wallet-portfolio onchainos portfolio all-balances --address <addr> --chains "xlayer,solana,ethereum"
→ list all holdings
↓ tokenContractAddress + chainIndex for each
2. okx-dex-token onchainos token price-info --address <address> --chain <chain> → get priceChange24H per token
3. Filter by negative change → user confirms which to sell
4. okx-dex-swap onchainos swap quote --from <token_addr> --to <native_addr> --amount ... --chain <chain> → get quote
5. okx-dex-swap onchainos swap swap --from <token_addr> --to <native_addr> --amount ... --chain <chain> --wallet <addr>
→ get swap calldata, then execute via one of two paths:
Path A (user-provided wallet): user signs externally → onchainos gateway broadcast --signed-tx <tx> --address <addr> --chain <chain>
Path B (Agentic Wallet): onchainos wallet contract-call --to <tx.to> --chain <chain> --value <value_in_UI_units> --input-data <tx.data>
Key conversion : balance (UI units) × 10^decimal = amount (minimal units) for swap.
onchainos portfolio total-valueonchainos portfolio all-balancesonchainos portfolio token-balancesonchainos portfolio chains firstokx-dex-market (onchainos market portfolio-overview/portfolio-dex-history/portfolio-recent-pnl/portfolio-token-pnl)--chains xlayer, low gas, fast confirmation) as the default, then ask which chain the user prefers. Common set: "xlayer,solana,ethereum,base,bsc"--exclude-risk 0 (only works on ETH/BSC/SOL/BASE)0x1234...abcd — use tokenContractAddress from the response). Always include the contract address so the user can verify the token identity.x, w, st, r, m) may have incorrect symbol or price metadata from the balance API. After displaying balances, add a note:⚠️ Token metadata (symbol and price) is sourced from the OKX balance API and may be inaccurate for wrapped or bridged tokens. Always verify the contract address and cross-check prices for high-value holdings.
After displaying results, suggest 2-3 relevant follow-up actions:
| Just completed | Suggest |
|---|---|
portfolio total-value | 1. View token-level breakdown → onchainos portfolio all-balances (this skill) 2. Check price trend for top holdings → okx-dex-market |
portfolio all-balances | 1. View detailed analytics for a token → okx-dex-token 2. Swap a token → okx-dex-swap 3. View PnL analysis → okx-dex-market (onchainos market portfolio-overview) |
Present conversationally, e.g.: "Would you like to see the price chart for your top holding, or swap any of these tokens?" — never expose skill names or endpoint paths to the user.
For detailed parameter tables, return field schemas, and usage examples for all 4 commands, consult:
references/cli-reference.md — Full CLI command reference with params, return fields, and examplesTo search for specific command details: grep -n "onchainos portfolio <command>" references/cli-reference.md
$0.00, not an erroronchainos portfolio chains first to confirm--exclude-risk not working: only supported on ETH/BSC/SOL/BASE--asset-type 2 to query DeFi holdings separately0x…) and Solana/UTXO addresses have incompatible formats. Passing an EVM address with a Solana chain (or vice versa) causes the entire request to fail with an API error — no partial results are returned. Always make separate requests : one call for EVM chains using the EVM address, a separate call for Solana using the Solana address1.5 ETH), never base units (1500000000000000000)$1.2M)0x1234...abcd). For native tokens with empty tokenContractAddress, display (native).x, w, st, r, or (common wrapped/bridged prefixes) or if the token name contains "BTC" / "ETH" but the reported price is far below BTC/ETH market price, add an inline flag next to the USD value and suggest running for that token.--chains supports up to 50 chain IDs (comma-separated, names or numeric)--asset-type: 0=all 1=tokens only 2=DeFi only (only for total-value)--exclude-risk only works on ETH(1)/BSC(56)/SOL(501)/BASE(8453)Weekly Installs
3.1K
Repository
GitHub Stars
173
First Seen
Feb 28, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
codex3.0K
opencode3.0K
cursor3.0K
github-copilot3.0K
gemini-cli3.0K
amp3.0K
97,600 周安装
Invoke-WebRequest -Uri "https://github.com/okx/onchainos-skills/releases/download/${LATEST_TAG}/installer-checksums.txt" -OutFile "$env:TEMP\installer-checksums.txt"installer-checksums.txt. On mismatch, stop and warn — the installer may have been tampered with.sh /tmp/onchainos-install.sh (or & "$env:TEMP\onchainos-install.ps1" on Windows). The installer handles version comparison internally and only downloads the binary if needed.Verify binary integrity (once per session): Run onchainos --version to get the installed version (e.g., 1.0.5 or 2.0.0-beta.0). Construct the installed tag as v<version>. Download checksums.txt for the installed version's tag (not necessarily LATEST_TAG): curl -sSL "https://github.com/okx/onchainos-skills/releases/download/v<version>/checksums.txt" -o /tmp/onchainos-checksums.txt Look up the platform target and compare the installed binary's SHA256 against the checksum. On mismatch, reinstall (step 2) and re-verify. If still mismatched, stop and warn.
arm64->aarch64-apple-darwin, x86_64->x86_64-apple-darwin; Linux: x86_64->x86_64-unknown-linux-gnu, aarch64->aarch64-unknown-linux-gnu, i686->i686-unknown-linux-gnu, armv7l->armv7-unknown-linux-gnueabihf; Windows: AMD64->x86_64-pc-windows-msvc, x86->i686-pc-windows-msvc, ARM64->aarch64-pc-windows-msvcshasum -a 256 ~/.local/bin/onchainos; Windows: (Get-FileHash "$env:USERPROFILE\.local\bin\onchainos.exe" -Algorithm SHA256).Hash.ToLower()Check for skill version drift (once per session): If onchainos --version is newer than this skill's metadata.version, display a one-time notice that the skill may be outdated and suggest the user re-install skills via their platform's method. Do not block.
Do NOT auto-reinstall on command failures. Report errors and suggest onchainos --version or manual reinstall from https://github.com/okx/onchainos-skills.
Rate limit errors. If a command hits rate limits, the shared API key may be throttled. Suggest creating a personal key at the OKX Developer Portal. If the user creates a .env file, remind them to add .env to .gitignore.
8453 |
| BSC | bsc | 56 |
| Arbitrum | arbitrum | 42161 |
portfolio token-balances | 1. View full portfolio across all tokens → onchainos portfolio all-balances (this skill) 2. Swap this token → okx-dex-swap |
⚠️ Service is not available in your region. Please switch to a supported region and try again.m⚠️ price unverifiedonchainos token price-infotoken-balances supports max 20 token entriesethereum → 1, solana → 501)