关于 okx-defi-portfolio
此 CLI 技能用于查看多个链和协议上的 DeFi 仓位与持仓,提供组合概览和协议级详情;存入、赎回及领取操作则转交给其他技能。
主要功能
- 01汇总多链 DeFi 仓位
- 02显示协议级仓位详情
- 03查询支持的链和平台
- 04指导地址与链的选择
适用场景
- 01查看钱包的 DeFi 持仓
- 02检查特定协议中的资产
- 03查找仓位详情所需的平台 ID
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ okx/ onchainos-skills --skill okx-defi-portfolio安装后在 Claude Code 中输入/okx-defi-portfolio确认已加载。
详细介绍
OKX DeFi 投资组合
用于查看跨协议和链的 DeFi 持仓与资产的 2 条命令。
技能路由
- 对于 DeFi 存入/赎回/领取 → 使用
okx-defi-invest - 对于代币价格/图表 → 使用
okx-dex-market - 对于钱包代币余额 → 使用
okx-agentic-wallet - 对于 DEX 现货兑换 → 使用
okx-agentic-wallet
快速入门
# Get DeFi holdings overview across chains
onchainos defi positions \
--address 0xYourWallet \
--chains ethereum,bsc,solana
# Get detailed holdings for a specific protocol (analysisPlatformId from positions output)
onchainos defi position-detail \
--address 0xYourWallet \
--chain ethereum \
--platform-id 67890
命令索引
| # | 命令 | 描述 |
|---|---|---|
| 1 | onchainos defi support-chains | 获取 DeFi 支持的链 |
| 2 | onchainos defi support-platforms | 获取 DeFi 支持的平台 |
| 3 | onchainos defi positions --address <addr> --chains <chains> | 获取用户 DeFi 资产概览 |
| 4 | onchainos defi position-detail --address <addr> --chain <chain> --platform-id <id> | 获取某个协议的详细资产信息 |
链支持
| 链 | 名称/别名 | chainIndex |
|---|---|---|
| Ethereum | ethereum、eth | 1 |
| BSC | bsc、bnb | 56 |
| Polygon | polygon、matic | 137 |
| Arbitrum | arbitrum、arb | 42161 |
| Base | base | 8453 |
| X Layer | xlayer、okb | 196 |
| Avalanche | avalanche、avax | 43114 |
| Optimism | optimism、op | 10 |
| Fantom | fantom、ftm | 250 |
| Sui | sui | 784 |
| Tron | tron、trx | 195 |
| TON | ton | 607 |
| Linea | linea | 59144 |
| Scroll | scroll | 534352 |
| zkSync | zksync | 324 |
| Solana | solana、sol | 501 |
操作流程
步骤 0:解析地址
用户未提供钱包地址时,运行任何 DeFi 命令之前,先从 Agentic Wallet 自动解析地址:
1. onchainos wallet status → check if logged in, get active account
2. onchainos wallet addresses → get addresses grouped by chain category:
- XLayer addresses
- EVM addresses (Ethereum, BSC, Polygon, etc.)
- Solana addresses
3. Match address to target chain:
- EVM chains → use EVM address
- Solana → use Solana address
- XLayer → use XLayer address
规则:
- 如果用户提供了明确的地址,直接使用该地址,跳过此步骤
- 如果钱包未登录,请先让用户登录(→
okx-agentic-wallet),或手动提供地址 - 如果用户说“检查所有账户”或“所有钱包”,使用
wallet balance --all获取所有账户 ID,然后对每个账户运行wallet switch <id>+wallet addresses,并查询每个账户的持仓 - 如果账户有多个同类型地址,在继续操作前务必向用户确认解析出的地址
步骤 1:识别意图
| 用户说 | 操作 |
|---|---|
| 查看持仓/投资组合/资产 | onchainos defi positions |
| 查看某个协议的详情 | onchainos defi position-detail |
| 查看后赎回/领取 | 建议 → 使用 okx-defi-invest |
步骤 2:收集参数
- 缺少钱包地址 → 通过步骤 0 解析(钱包状态 → 钱包地址);如果未登录,则询问用户
- 缺少链 → 询问用户要查询哪些链,或推荐常见链(ethereum、bsc、solana)
- 缺少 platform-id → 先运行
defi positions获取analysisPlatformId
步骤 3:显示结果
显示持仓结果
显示 defi positions 输出时,必须严格使用以下列及顺序,不得替换或省略:
| # | 平台 | analysisPlatformId | 链 | 持仓 | 价值(USD) |
|---|---|---|---|---|---|
| 1 | Aave V3 | 12345 | ETH、BSC | 2 | $120.00 |
规则:
- 每一行都必须包含
analysisPlatformId——用户必须复制此值来运行position-detail - 绝不能省略、隐藏或用其他字段替换
analysisPlatformId - 绝不能合并平台——无论价值大小,都要为每个平台单独显示一行
- 原始 JSON 路径:
walletIdPlatformList[*].platformList[*]——每个元素对应一个平台行platformName→ 平台analysisPlatformId→ analysisPlatformIdnetworkBalanceList[*].network→ 链(以逗号连接)investmentCount→ 持仓currencyAmount→ 价值(USD)
显示持仓详情结果
输出结构:{ "ok": true, "data": [ { "walletIdPlatformDetailList": [...] }, ... ] }——data 是一个数组。不要直接对 data 调用 .get();应将其作为列表遍历。
显示 defi position-detail 输出时,将所有代币显示在一个扁平表格中,列名必须如下:
| 类型 | 资产 | 数量 | 价值(USD) | investmentId | aggregateProductId | 代币合约 | 奖励 |
|---|---|---|---|---|---|---|---|
| Supply | USDT | 1.002285 | $1.0025 | 127 | 71931 | 0x970223...7 | 0.000080 AVAX |
| Pending | sAVAX | 0.00000091 | $0.000012 | – | – | – | 平台奖励 |
规则:
- 每个代币占一行;从其父级投资条目中合并填入
investmentId和aggregateProductId - 每一行都必须包含
investmentId——用户需要用它进行redeem/claim(通过okx-defi-invest) aggregateProductId——若存在则显示,否则显示–- Token Contract:显示完整合约地址,不得截断;若为原生代币或为空,则显示
– - Rewards:若存在待领取奖励,则显示数量和代币符号;若没有则显示
–;平台奖励显示Platform reward - Type:将 investType 映射为 Supply/Borrow/Stake/Farm/Pool 等;待领取奖励行使用
Pending - 健康率:在表格下方单独显示;若
healthRate < 1.5,则显示警告
V3 池持仓 — 额外字段
对于 V3 池持仓(存在 positionList),为每个持仓显示一个额外部分:
| tokenId | 状态 | 范围 | tickLower | tickUpper |
|---|---|---|---|---|
| 93828 | ACTIVE | 0.892 – 0.992 USDC/DAI | -33500 | -30450 |
tokenId:来自positionList[].tokenIdpositionStatus:ACTIVE或INACTIVErange:来自positionList[].rangetickLower/tickUpper:来自positionList[].rangeInfo.tickLower/rangeInfo.tickUpper- 这些字段对 V3 操作至关重要(添加流动性、提取、收取 V3 费用)
investType 参考
| investType | 描述 |
|---|---|
| 1 | 储蓄(储蓄/收益) |
| 2 | 池(流动性池) |
| 3 | Farm(收益耕作) |
| 4 | 金库 |
| 5 | Stake |
| 6 | 借款 |
| 7 | 质押 |
| 8 | 锁定 |
| 9 | 存款 |
| 10 | 归属 |
执行后建议
| 刚完成的操作 | 建议 |
|---|---|
defi positions | 1. 查看详情 → defi position-detail 2. 赎回 → okx-defi-invest 3. 领取奖励 → okx-defi-invest |
defi position-detail | 1. 赎回持仓 → 使用 okx-defi-invest,并提供表格中的 investmentId 2. 领取奖励 → 使用 okx-defi-invest 3. 追加投资 → 使用 okx-defi-invest |
defi position-detail (V3 池) | 1. 查看深度图表 → defi depth-price-chart --investment-id <id>(通过 okx-defi-invest) 2. 查看价格历史 → defi depth-price-chart --investment-id <id> --chart-type PRICE |
全局说明
- 关键 — 地址与链的兼容性:
--address和--chains参数必须兼容。EVM 地址(0x…)只能查询 EVM 链;Solana 地址(base58)只能查询solana。请勿在单次调用中混用,否则 API 会返回错误 84019(地址格式错误)。0x…地址 → 仅传入 EVM 链:ethereum,bsc,polygon,arbitrum,base,xlayer,avalanche,optimism,fantom,linea,scroll,zksync- base58 地址 → 仅传入
solana - Sui 地址 → 仅传入
sui - Tron 地址(
T…)→ 仅传入tron - TON 地址 → 仅传入
ton - 如果用户想查看 EVM 和 Solana 上的仓位,请使用相应的地址分别调用两次
defi positions使用--chains(复数,以逗号分隔,例如--chains ethereum,bsc)——请勿使用--chaindefi position-detail使用--chain(单数)——请勿使用--chains- 这两条命令的钱包地址参数均为
--address position-detail需要将positions输出中的analysisPlatformId作为--platform-id- CLI 会自动解析链名称(
ethereum→1,bsc→56,solana→501)
评论
支持 Markdown