列出OKX Agentic Wallet专属交易竞赛,为用户注册比赛,跟踪参与情况和排行榜排名,并领取赢得的奖励。当用户想要列出可用的交易竞赛或交易杯、查看比赛规则/奖池/总奖金、注册或报名或加入比赛、查看排行榜(谁在赢)或自己的排名(我是否在奖金区、我的名次是多少)、询问我是否赢了或查询参与/领取状态、领取已完成比赛的奖励或奖品、查看他们注册时使用的钱包账户,或提交Telegram/微信/电子邮件/推特联系方式以便向顶级获奖者发放奖品时使用。
OKX Growth Competition — 交易竞赛
Agentic Wallet专属交易竞赛。完整生命周期分布在以下重点参考文件中:
- 参与(发现/注册/交易/已注册钱包/导出保护)—
references/participation.md - 详情(规则/奖池/四个奖励部分)—
references/details.md - 排名(排行榜/个人排名,含CASE 1/2/3模板)—
references/rank.md - 领取(奖励状态检查/原子领取/联系方式收集)—
references/claim.md - CLI参考(命令、参数、返回模式)—
references/cli-reference.md
本SKILL.md包含所有参考文件依赖的全局规则(事实、身份不变性、路由、输出规则、时间格式、状态码、错误处理)。请始终先阅读此文件;然后根据用户意图跳转到匹配的参考文件。
关于每个Agentic Wallet竞赛的事实
当用户询问竞赛如何运作时,请将以下内容视为事实性基础。两个与链相关的字段扮演不同且不重叠的角色——切勿混淆:
chainId— 单个ID。仅用于领取/奖励链(奖励在此链上支付;其合约地址在此链上)。除非它也出现在participateChainIds中,否则它不是交易链。participateChainIds— 由list和detail端点返回的ID数组。交易链集合。在此列表中任何链上的交易都计入同一竞赛排名。
交易链集合 = participateChainIds。领取链 = chainId。 这是两个独立的概念;下面的显示规则绝不合并它们。
- 链ID → 显示名称映射。当前支持的竞赛链:
1 → Ethereum,196 → X Layer,501 → Solana。 - 切勿在未先检查
participateChainIds的情况下告诉用户“你的链不计入”。 myRankInfo.userTotal = 0表示用户尚未达到合格门槛,或者后端指标管道尚未捕获其交易——这并不意味着用户的链不受支持。competition_rank接受单个可选参数wallet。省略时用于查询自己的排名——工具会发送你的accountId(一次调用覆盖participateChainIds中的所有链;无需选择链)。仅在查询他人排名时传递显式地址;地址的链族(EVM0x...否则 Solana)必须与活动的首要链匹配,否则工具拒绝调用(不会静默地错误查询链)。
身份解析不变性
competition_rank和competition_user_status的查询身份是互斥的:后端接受accountId(自己)或walletAddress(跨用户)——两者不能同时存在。对于“你使用了哪个身份?”的答案,根据调用形式确定。
| 调用形式 | 发送的身份 |
|---|---|
competition_user_status(任意) |
accountId — 一次调用覆盖participateChainIds中的所有链 |
competition_rank 不带wallet |
accountId |
competition_rank 带wallet=<addr> |
walletAddress — 工具验证地址的链族(EVM 0x... 否则 Solana)是否与活动的chainId匹配;不匹配则拒绝 |
competition_claim(预检查) |
accountId |
对于多活动competition_user_status(无activity_name),相同的accountId在所有活动中重复使用——后端通过accountId关联。
强制阅读顺序
在生成任何面向用户的竞赛消息之前,你必须首先在下面的正确参考文件中找到匹配的部分,并遵循其固定模板结构。 不要即兴发挥格式。不要缩短模板。不要删除部分或合并它们。模板是产品强制要求的文案(参与/技能质量措辞、免责声明),不得改写。
模板结构固定;语言跟随用户——请参见下面的## Output Language规则。当用户使用中文时,将模板字符串翻译成自然的中文。当用户使用英文时,使用英文原文。占位符(包括来自{supportedChains}的链显示名称)保持不变。
快速路由(用户意图 → 参考文件 + 部分):
| 用户意图 | 参考文件 | 部分 |
|---|---|---|
| “列出竞赛/显示可用竞赛” | references/participation.md |
步骤1 — 发现 |
| “显示详情/显示规则/显示奖池” | references/details.md |
步骤2 — 查看详情 |
| “注册/加入” | references/participation.md |
步骤3 — 加入 |
| “为我交易” | references/participation.md |
步骤4 — 交易(委托给okx-agentic-wallet) |
| “排行榜/完整榜单/谁在赢” | references/rank.md |
查看排行榜(完整榜单) |
| “我的排名/我的名次/我在奖金区吗” | references/rank.md |
查看用户自己的排名(跨所有排行榜) |
| “显示已注册钱包” | references/participation.md |
查询已注册钱包 |
| “导出钱包” | references/participation.md |
钱包导出保护 |
| “检查我的状态/我赢了吗” | references/claim.md |
检查参与状态 |
| “领取奖励/领取奖品” | references/claim.md |
步骤6 — 领取奖励 |
顶级获奖者联系方式跟进(领取后needContact: true) |
references/claim.md |
联系方式收集(仅限顶级获奖者) |
如果用户的意图未明确映射到上述之一,请在回复前询问用户意图——不要**发明自由格式。
预检
阅读
../okx-agentic-wallet/_shared/preflight.md。如果缺失,阅读_shared/preflight.md。
常见错误的跨技能路由:
not logged in→ 引导用户完成okx-agentic-wallet登录流程(邮箱→OTP),然后重试原始操作。- 后端状态码(
--status过滤器/status/joinStatus/rewardStatus)和错误代码消息(11002/11003/11008/1860402/address limit reached/Sui-chain/区域限制/not eligible):请参见references/cli-reference.md。
命令索引
所有MCP工具镜像CLI;MCP变体接受activity_name(服务器解析ID)并从活动会话自动解析accountId/钱包地址。完整标志表和返回形状:references/cli-reference.md。
| # | 命令 | 认证 | 描述 |
|---|---|---|---|
| 1 | onchainos competition list [--status 0|1|2] [--page-size N] [--page-num N] |
无 | 列出竞赛(默认status=0,仅活跃) |
| 2 | onchainos competition detail --activity-id <id> |
无 | 规则、奖池、链、时间线 |
| 3 | onchainos competition rank --activity-id <id> [--wallet <addr>] --sort-type <type> [--limit N] |
无 | 排行榜 + 用户排名。参见references/rank.md了解自己/跨用户语义和sort-type发现。 |
| 4 | onchainos competition user-status [--activity-id <id>] |
钱包登录 | 参与和奖励状态(省略--activity-id则查询所有活动) |
| 5 | onchainos competition join --activity-id <id> --evm-wallet <addr> --sol-wallet <addr> --chain-index <chain_id> |
钱包登录 | 为当前账户注册竞赛 |
| 6 | onchainos competition claim --activity-id <id> --evm-wallet <addr> --sol-wallet <addr> |
钱包登录 | 原子领取——在调用内签名并广播。参见references/claim.md。 |
| 7 | onchainos competition submit-contact --activity-id <id> --contact-type <Telegram|WeChat|Email|Twitter> --contact-value <text> |
钱包登录 | 为顶级获奖者记录联系方式;仅在needContact: true的领取后使用。参见references/claim.md。 |
--status(请求过滤器):0=活跃,1=已结束,2=全部
activityStatus(响应字段):3=活跃,4=已结束 — 与请求过滤器不同
输出规则
仅内部ID与面向用户的显示。 内部数字ID(
activityId、chainIndex、accountId)有意在工具响应中返回——它们是在工具之间链式调用所必需的(例如,在competition_join之后,你可能需要调用competition_detail并传入活动ID以填充成功模板)。将它们保留在数据层;切勿在用户可见的消息中呈现它们。
在任何情况下,以任何格式,切勿在为用户生成的消息中包含任何内部ID。 仅通过activityName(如果名称不可用则使用shortName)向用户标识活动。
禁止的用户可见模式(不要产生如下输出):
Agentic Trading Contest (#107)#106 (agenticwallettest1)- 任何暴露活动ID的列、行或内联引用(例如
competition 107、ID列、标记为Activity ID的行)——无论标签、形状或语言如何,规则相同。
正确的用户可见模式:
Agentic Trading Contest- 当需要区分两个同名活动时,附加
chainName(例如Agentic Trading Contest (Solana)),切勿使用ID。
幕后(允许且预期):
- 从
competition_user_status/competition_join响应中读取activityId,并将其传递给competition_detail以获取固定模板所需的数据。 - 任何通过数字ID进行的工具到工具链式调用——只要最终面向用户的消息省略它们即可。
当用户要求对特定活动执行操作时(例如“领取Agentic Trading Contest”),MCP工具competition_claim/competition_join接受activity_name并在服务器端解析ID,因此你也可以直接使用名称而无需自行查找。
输出语言
以用户的对话语言渲染每个固定模板。 模板结构(部分、顺序、编号项、表格列数、占位符位置、{supportedChains}占位符和[Disclaimer: ...]块)是固定的,不得更改。只有内部的自然语言文本会根据用户语言自然翻译。
占位符永不翻译。 {supportedChains}、{chainName}、{rewardUnit}、{txHash}、{accountName}等使用API值原样填充——不要本地化它们。链显示名称(例如Solana、X Layer、Base)来自规范ID到名称的映射,在所有语言中保持不变。
交付前检查清单
发送前的最终检查——涵盖参考文件中容易在长回复后遗漏的必须项。(前面部分已涵盖的规则——内部ID、participateChainIds、*Formatted、语言/模板保真度——不再重复;请通过遵循其所在部分的规则进行验证。)
- [ ] 成功注册响应后 → 末尾单独一行显示
[Disclaimer: Digital asset trading involves risk. ...]。(→participation.md→ 成功注册) - [ ] 领取运行时失败(签名/广播/网络)时 → 附加3个要点的失败建议块。预检查拒绝(rewardStatus 0/2/3/4,代码11002,代码11008)时 → 省略建议块。(→
claim.md→ 固定失败建议块) - [ ] 调用
competition_claim之前 → 已渲染领取前预览行(You are about to claim {rewardAmount} {rewardUnit} on {chainName}. Reply "confirm" to proceed.)并且用户已回复明确确认。(→claim.md→ 领取前预览)






