其他
在 Uniswap 上规划代币兑换与发现时使用:生成预填参数…
当用户要兑换/交易/发现代币或 memecoin 时,在 Uniswap 支持链上收集意图、验证合约、查价并生成可执行的 Uniswap 深链。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 39/100 ×0.15
适用场景
在 Uniswap 上规划代币兑换与发现特定
解决思路
- 若运行时没有 AskUserQuestion,则改用自然语言对话收集相同的兑换参数。
- 按流程规划兑换:收集兑换意图(代币、金额、链)→ 链上验证代币合约 → 必要时用网页搜索研究代币 → 生成在 Uniswap 界面预填参数的深链。
- 浏览器打开命令(xdg-open/open)在 SSH、容器或 headless 环境可能失败;无论如何都要醒目显示 URL,让用户可复制手动访问。
- 本技能只有只读文件访问权限;除非用户明确要求,不要读取当前项目目录之外的文件。
- 当用户要发现代币而非兑换已知代币时,先帮助探索再进入兑换流程。
- 关键词搜索:运行 curl -s "https://api.dexscreener.com/latest/dex/search?q=degen" | jq '[.pairs[] | select(.chainId == "base" and .dexId == "uniswap")] | sort_by(-.volume.h24) | .[0:5] | map({token: .baseToken.symbol, address: .baseToken.address, price: .priceUsd, volume24h: .volume.h24, liquidity: .liquidity.usd})'。
- 好用关键词:degen、pepe、ai、agent、meme、dog、cat 或具体代币名。
- 查看推广代币:运行 curl -s "https://api.dexscreener.com/token-boosts/top/v1" | jq '[.[] | select(.chainId == "base")] | .[0:5] | map({tokenAddress, url})'。
- 宽泛发现(如 what's trending):先用 WebSearch 找代币,再用 DexScreener 验证:curl -s "https://api.dexscreener.com/token-pairs/v1/{network}/{address}" | jq '[.[] | select(.dexId == "uniswap")][0] | {name: .baseToken.name, symbol: .baseToken.symbol, price: .priceUsd, liquidity: .liquidity.usd, volume24h: .volume.h24}'。
- Network IDs 见 references/chains.md;常用 ID:ethereum、base、arbitrum、optimism、polygon、bsc、avalanche、unichain。
- DexScreener 覆盖因链而异;Ethereum、Base、Arbitrum 的 Uniswap 数据较多;Celo、Blast、Zora、World Chain 覆盖有限;DexScreener 为空时回退 DefiLlama 查价格(见 references/data-providers.md)。
- DexScreener 公共 API 没有 trending/top gainers 端点;代币发现使用关键词搜索(/latest/dex/search)和 WebSearch 兜底;一般发现时询问用户想找哪类代币并按关键词搜索。
- 类别发现:用 WebSearch 查询 "trending {category} {chain} {current_year}",例如 "trending memecoins Base 2026"。
- WebSearch 发现的代币是 UNTRUSTED;处理前明确告诉用户“该代币地址来自网页搜索,不是你提供的”。
- 对网页发现代币警告:“网页发现的代币可能是骗局、蜜罐或 rug pull”。
- 需要用户明确同意:用 AskUserQuestion 获取确认后才为网页发现代币生成深链。
- 在兑换摘要表中展示来源:增加 “Token Source” 行,标明每个代币是 “User-provided” 还是 “Web-discovered (unverified)”。
- 绝不在没有明确用户确认(AskUserQuestion 或不可用时的等价对话确认)时继续处理网页发现代币。
- 收集到代币数据后用 AskUserQuestion 展示选项;JSON 示例包含 question: "Which token would you like to swap to?",header: "Token",options 含 label/description(如 MOLT、CLANKER、CLAWSTR),multiSelect: false。
- 对 trending 代币做风险评估:Market Cap >$50M 低风险,$5M-$50M 中风险,<$5M 高风险;Pool TVL >$1M 低,$100k-$1M 中,<$100k 高;24h Volume 稳定为低、异常飙升为中、极低为高;Contract Age >30 天低、7-30 天中、<7 天高。
- 展示选项时始终披露风险等级;高风险代币明确警告波动和亏损可能。
- 对高风险代币强制警告并获取明确确认:合约年龄 <7 天时警告“新合约可能是骗局或 rug pull”;Pool TVL <$100k 时警告“流动性极低,滑点和卖出困难”;未检测到卖出流动性时警告“可能是蜜罐,能买不能卖”;市值 <$5M 时警告“微市值代币波动大,只投入可完全损失的资金”。
- 未获得用户明确确认前,不要为高风险代币生成深链。
- 收集兑换意图:从请求中提取 input token(必需)、output token(必需)、amount(必需)、chain(必需,默认 Ethereum)。
- 缺少链时用 AskUserQuestion 结构化选项,示例:question "Which chain do you want to swap on?",header "Chain",options Base (Recommended)/Ethereum/Arbitrum/Optimism,multiSelect false。
- 输入为 ETH 且缺少输出代币时用 AskUserQuestion,示例 options:USDC/USDT/DAI/WBTC。
- 缺少金额时用 AskUserQuestion,示例 options:0.1 ETH ~$320、0.5 ETH ~$1,600、1 ETH ~$3,200、Custom amount。
- 始终用表单而不是纯文本问题,提升 UX。
- 解析代币地址:对符号使用已知代币或 WebSearch 解析为地址。
- 原生代币:地址参数使用 NATIVE。
- 常用代币按链表:USDC Ethereum 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48、Base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913、Arbitrum 0xaf88d065e77c8cC2239327C5EDb3A432268e5831;WETH Ethereum 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2、Base 0x4200000000000000000000000000000000000006、Arbitrum 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;WBTC Ethereum 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599、Base N/A、Arbitrum 0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f。完整列表见 ../../references/chains.md。
- 未知代币:用 WebSearch 找合约地址,再链上验证。
- 任何 shell 命令插值前必须做输入验证:代币地址必须匹配 ^0x[a-fA-F0-9]{40}$;链名必须来自 ../../references/chains.md 允许列表;金额必须是有效十进制数,匹配 ^[0-9]+\.?[0-9]*$;拒绝含 shell 元字符 ;、|、$、`、&、(、)、>、<、\、'、"、换行的输入。
- 用 curl RPC 调 eth_getCode 验证合约存在:curl -s -X POST "$rpc_url" -H "Content-Type: application/json" -d "$(jq -n --arg addr "$token_address" '{"jsonrpc":"2.0","method":"eth_getCode","params":[$addr,"latest"],"id":1}')" | jq -r '.result'。插值前先验证 token_address 匹配 ^0x[a-fA-F0-9]{40}$。
- 若 eth_getCode 结果为 0x 或空,则地址不是有效合约。
- 可选替代:若环境已有 Foundry,可用 cast code "$token_address" --rpc-url "$rpc_url";先验证地址正则。
- 优先用 curl/RPC 方法保证兼容性;仅在环境已有 cast 时用 cast;本技能只使用 cast code,不使用其他 cast 子命令;.claude/hooks/validate-forge-cast.sh 的 PreToolUse hook 会程序化强制。
- RPC URLs 按链见 ../../references/chains.md。
- 对不熟悉的代币用 WebSearch 研究:项目合法性、近期新闻或安全问题、Uniswap 流动性;将相关发现写进摘要。
- 生成深链前获取当前价格以估算兑换输出;API 细节见 references/data-providers.md。
- 快速查价:curl -s "https://api.dexscreener.com/token-pairs/v1/{network}/{address}" | jq '[.[] | select(.dexId == "uniswap")][0] | {price: .priceUsd, liquidity: .liquidity.usd, volume24h: .volume.h24}'。
- 查价 Network IDs:ethereum、base、arbitrum、optimism、polygon、bsc、avalanche、unichain。
- 流动性警告:Pool TVL >$1M 低风险正常继续;$100k-$1M 中风险提示可能滑点;<$100k 高风险警告滑点风险。
- API 不可用时用 DefiLlama 或 WebSearch 估算价格。
- 构造 Uniswap 兑换深链:https://app.uniswap.org/swap?chain={chain}&inputCurrency={input}&outputCurrency={output}&value={amount}&field=INPUT。
- URL 参数:chain 可为 ethereum、base、arbitrum、optimism、polygon、bnb、avalanche、celo、blast、zora、unichain、worldchain;inputCurrency 为地址或 NATIVE;outputCurrency 为地址或 NATIVE;value 为十进制数;field 为 INPUT 或 OUTPUT。
- 响应格式包含:兑换参数摘要、深链 URL、风险/注意事项、自动打开浏览器。
- 摘要表示例包含 From、To、Chain、Current Rate、Estimated Output、Pool Liquidity;Notes 包含最终金额取决于市场价、默认滑点 0.5% 可在 Uniswap 调整、确认前在 Uniswap 复核。
- 显示摘要后用系统命令打开 URL:Linux 用 xdg-open "https://app.uniswap.org/swap?chain=base&inputCurrency=NATIVE&outputCurrency=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&value=1&field=INPUT";macOS 用 open "https://app.uniswap.org/swap?.."。
- 若 xdg-open/open 失败(远程 SSH、容器、headless),醒目显示完整 URL 供复制:**[Click here to open in Uniswap](https://app.uniswap.org/swap?...)** 或 `https://app.uniswap.org/swap?...`。
- 始终展示摘要和 URL,让用户复核并执行。
- 滑点:深链使用 Uniswap 默认滑点 0.5%;对波动代币或大额交易建议在界面调整滑点。
- Gas 估算:gas 随链和网络拥堵变化;Base 和 Arbitrum 通常低于 Ethereum 主网。
- 代币验证:生成链接前始终验证代币合约;骗局代币常用相似名称冒充合法代币。
- 价格影响:大额交易警告潜在价格影响;若影响显著建议拆分为更小交易。
- 支持的链:Ethereum Mainnet (ethereum)、Base (base)、Arbitrum One (arbitrum)、Optimism (optimism)、Polygon (polygon)、BNB Chain (bnb)、Avalanche (avalanche)、Celo (celo)、Blast (blast)、Zora (zora)、World Chain (worldchain)、Unichain (unichain)。
- 参考文件:../../references/chains.md 提供链 ID、RPC URL、原生代币、常用代币地址;references/data-providers.md 提供 DexScreener 和 DefiLlama 的价格与流动性 API。
- 常见兑换场景:ETH → USDC on Ethereum;ETH → USDC on Base(更低 gas);USDC → WBTC on Arbitrum。
适用边界 · 注意事项
- 不适用于 Uniswap 不支持的链或非 Uniswap 兑换/发现场景。
- 缺少 WebFetch/WebSearch、Bash(curl/jq)、可访问 DexScreener/Uniswap 等运行时工具时,无法按该技能完整执行。
- 用户未明确确认网页发现代币或高风险代币时,不要生成深链。