发布于 2026-09-27

我给 Qwen 3.8 Max 一把 MoneyKey 和 0.09 美元预算,它在 Monad 主网上自己买了 Nansen 的数据

Monad Metropolis 黑客松稿件(Qwen 3.8 Max 与 Nansen 赏金)。文中每一笔交易都在 Monad 主网上,可以在 monadvision.com 查到。

问题

「Monad 上最近 24 小时什么最热?聪明钱在买吗?」

这个问题问起来容易,答好却要花钱。数据是现成的:Nansen 有代币排行、资金流向、聪明钱标签,也都支持 Monad,但它是按次收费的。所以真正的问题是:AI Agent 能不能自己判断哪些数据值得买,自己付钱,并且不超出人给它设的预算?

MoneySwitch 就是干这个的。它给 Agent 发一把 mk_live_… 开头的 MoneyKey,也就是「花钱用的 API Key」。它不是私钥,也不是钱,而是一张可以随时吊销的花钱许可:有总额度、单次上限和允许访问的网站白名单。Agent 调用 POST /v1/fetch,MoneySwitch 先检查策略,再签名,然后从本地一个只放小钱的钱包里,用 USDC 付掉卖方的 x402 账单。Agent 自始至终碰不到私钥。

这次运行用的 MoneyKey 只能访问 api.nansen.ai,单次最多 0.05 美元,总共 0.09 美元。

为什么是 Nansen

Nansen 通过 x402 v2 出售它的 API。更关键的是,它的 402 账单接受 Monad 主网上的 USDC(eip155:143),通过 Molandak 结算,这也是 Monad 官方文档里用的那一家。不用注册 Nansen 账号,也不用 API key:不带凭证发请求,会先收到 402 Payment Required;客户端签一个 EIP-3009 的 USDC 授权后重发,就能拿到数据。基础接口每次 0.01 美元,聪明钱接口每次 0.05 美元。

Agent 的目录里有 5 个接口,链参数都是 monad:

接口价格用途
POST /api/v1/token-screener$0.01代币排行:成交量、涨跌幅、买卖量、净流入、流动性;可按 only_smart_money、include_stablecoins 等筛选
POST /api/v1/tgm/flow-intelligence$0.01单个代币按人群划分的净流入:聪明交易者、巨鲸、盈利榜、公众人物、交易所、新钱包
POST /api/v1/tgm/dex-trades$0.01某个代币在一段时间内的 DEX 逐笔成交
POST /api/v1/smart-money/netflow$0.05全链聪明钱净流入,可按 net_flow_24h_usd 排序
POST /api/v1/smart-money/holdings$0.05聪明钱当前持仓

这些请求的参数格式有自动测试守着,拿来和 Nansen 公开的 OpenAPI 定义(https://api.nansen.ai/openapi.json)逐项比对。为什么要这样做,后面会讲。

为什么是 Qwen 3.8 Max

这个 Agent 就是一个普通的工具调用循环。Qwen 3.8 Max(qwen3.8-max,走阿里云的 OpenAI 兼容接口)拿到两个工具:money_status(查还剩多少预算)和 nansen_query(从目录里买一次数据),再加一段系统提示:你是一名链上分析师,USDC 预算是硬上限;先说出计划;优先买能回答问题的最便宜的数据;不买重复的数据;下一次买不起就停;每一分钱都要交代清楚。

没有任何写死的「研究流程」。下面每一个决定,买什么、按什么顺序、什么时候升级到 0.05 的接口、什么时候停,都是 Qwen 自己做的。

它实际做了什么

1. 先查预算,买最便宜的($0.01)。 代币排行,Monad,24 小时,按成交量排序。结果:USDC 1060 万美元,MUSD 430 万,WMON 170 万,WETH 160 万,EURW 150 万。

Qwen 的判断是:「几乎全是稳定币和包装资产,谈不上『热』。」 它没有拿这个结果交差,而是又花了一分钱。

2. 换个问法重新问($0.01)。 还是代币排行,但排除稳定币,改按 24 小时涨幅排序。真正在涨的币这才出现:ANAGO +18.8%、EMO +13.7%、SHRAMP +13.1%、FLING +7.0%、BOB +4.5%,全是小市值币。

3. 付高价之前,先便宜地查涨幅第一的币($0.01)。 查 ANAGO 的资金流向:聪明交易者、巨鲸、盈利榜、公众人物、新钱包,所有有标签的人群净流入都是 0,只有交易所那一栏有变动(−1320 美元)。

4. 再便宜地查全链($0.01)。 代币排行加上 only_smart_money: true:0 条结果。

5. 到这一步才花钱买高价信号($0.05)。 Qwen 注意到「0 条结果」有两种可能:聪明钱真的没来,或者只是筛选条件把结果滤掉了。所以它买了专门回答这个问题的接口:全链聪明钱净流入,按 24 小时净流入排序,并且特意把稳定币和原生代币也包含进来,「这样结果就不会因为筛选条件而变空」。结果:全链 0 条。

结论: Monad 小币这 24 小时的上涨来自散户和机器人,ANAGO、EMO、SHRAMP、FLING、BOB 背后都没有聪明钱参与。ANAGO 的 +18.8% 只靠大约 2100 美元的成交量推起来,而它的流动性只有 1.47 万美元。Qwen 还主动说明了自己的不确定(「无法区分『聪明钱真的没来』和『Nansen 在 Monad 上的聪明钱覆盖还不完整』」),并且没有采用明显有问题的字段,比如部署日期显示为 1970-01-01 的代币年龄数据。

最后它给出一张账单:

调用价格交易(Monad 主网)
代币排行,按成交量$0.010xb227e30f…d540
代币排行,按涨幅$0.010xc739c432…163f
资金流向,ANAGO$0.010x99bf9da6…2cb8
代币排行,只看聪明钱$0.010x5fab3819…f33b
聪明钱净流入(高价)$0.050xb7df9976…e0b6
合计$0.09预算正好用完,一分没超

5 笔我们都独立核实过:每一笔的交易回执状态都是成功,里面都有一条从 Agent 钱包转到 Nansen 收款地址的 USDC Transfer;钱包链上余额正好少了 0.09 美元。钱包里 一个 MON 都没有,gas 由结算方代付。

Qwen 带来了什么

  • 看着价目表做规划。 它把 0.01 和 0.05 当成真实的取舍:先用三次便宜的查询缩小问题,最后才用一次贵的查询确认。一个天真的 Agent 会一上来就调最贵的接口。
  • 会换问法,而不只是重试。 第一次排行结果严格说也算一个答案,但 Qwen 意识到那是错的答案,于是改了排序和筛选条件。
  • 诚实面对不确定性。 「0 条结果」被它当成一个需要验证的说法,而不是直接当结论;最后的回答也写明了数据回答不了什么。
  • 会记账。 它把真正花掉的钱(有交易哈希)和只是冻结的钱(见下一节)分开,两样都报告。

那次让它变得更好的失败

第一次真实运行出了一个很有教育意义的错。我们手写的两个接口参数格式和 Nansen 的实际 API 对不上:smart-money/netflow 根本没有 timeframe 字段;flow-intelligence 要的是单数 chain,时间范围要写 1d 而不是 24h。对这两个已付款的请求,Nansen 返回了 HTTP 422,而且没有结算。

接下来发生了三件事,现在我们都依赖它们:

  1. 钱一分没动。 钱包余额只少了那一笔成功的 0.01 美元。
  2. MoneySwitch 选择冻结额度,而不是去猜。 签过名的 EIP-3009 授权在过期前一直有效,卖方理论上还能晚点结算。所以那 0.06 美元被冻结,而不是马上退回。授权过期后,MoneySwitch 的对账程序去问 USDC 合约(authorizationState)这些授权有没有被用过,确认没有之后,把它们标成 NOT_SETTLED_EXPIRED,额度随即恢复。
  3. Agent 学会了说「冻结,没花」。 第一次运行里,Qwen 把那 0.06 美元报成「被扣了,却没有交易哈希可以申诉」,这个抱怨很合理。现在工具会明确告诉它哪笔钱只是冻结、等待过期;接口目录也改成按 Nansen 的 OpenAPI 定义来写,并配了测试,两边一旦对不上,测试就会失败。

这件事为什么重要

给 Agent 用的付费 API 正在到来,x402 已经把「付钱」这一步变简单了。难的是「授权」这一步:这个 Agent 能花多少、能花在哪、怎么叫停。MoneyKey 用开发者早就熟悉的方式回答这个问题:它就像一个 API Key,有预算、有白名单、有一键吊销,而且策略在任何签名之前就执行。

Qwen 3.8 Max 展示了另一半:给它预算和价目表,一个能干的模型花起钱来像分析师,而不是像一个死循环。

试一试: npx moneyswitch demo(离线演示)· 代码:https://github.com/dongsheng123132/moneyswitch · Agent:apps/qwen-agent · 操作手册:docs/nansen-mainnet.md