OpenRouter 做了件很笨但很有用的事:把同一个 GitHub 任务,分别交给 MCP、CLI 和 skill 三种方式去做,然后一行行数 token。在 Claude Sonnet 5.5 上结果并不体面——走 CLI 的那条路 token 消耗最低,而 MCP 的账单从第一句提示词开始就厚了一层。原因也不玄妙:工具定义是常驻成本,任务还没开始,上下文里已经先塞进去一叠名字、描述和参数 schema。
三种方式的分野,本质是"能力什么时候被读到"。MCP 把工具全量摊开在桌上,模型每次都得先看一遍菜单;skill 轻一些,按需挂载,用完即走;CLI 最狠,能力藏在 help 文档和子命令里,模型真要用的时候才去翻。同一个能力,三种交付形态,token 成本能差出一个数量级——而模型输出的质量,未必跟着一起涨。
可迁移的结论只有两条。第一,把工具集收窄,别让智能体背着几十个这辈子用不上的接口跑,无关定义每轮都在收费。第二,用 Tool Search 一类机制做按需检索,让模型先查再取,而不是开局就把全部 schema 灌进去。省下的不只是钱,更是注意力——长上下文里,真正有用的信息会被稀释得比想象中快。换模型不一定救得回来,先看看你的工具是不是塞太多了。

