本周早些时候,我尝试用 Claude Code 构建一个有趣的项目,结果消耗的 token 数量让我意识到两件事——我不能再在 AI 上这么烧钱了,而且 Claude 贵得简直离谱。市面上最好的前沿模型,无论你用的是 Opus 4.8 还是 Fable 5,都非常出色,能把事情搞定,但它们天生就不是为了让你长久用下去的。它们就是 token 黑洞,如果你只是想随便玩玩、构建东西、搞破坏,这些并不是你应该使用的模型。我发现这事儿发现得挺晚的,但当我意识到时,我用一堆各管一摊的本地小型 LLM 替换了 Claude。这让我可以自由地构建任何我想要的东西,而不用老是提心吊胆怕 token 不够用。

Claude 同时承担了太多工作

Claude 同时承担了太多工作

而这影响了整体性能

而这影响了整体性能

当我开始琢磨那些 token 到底都花哪儿去了的时候,我意识到大部分活儿根本用不着像 Claude 这么强的模型。Claude Code 用同一个前沿模型来理解我想构建什么、检查文件、搜索代码库、生成样板代码、修复基本错误、运行测试、读取输出,并决定下一步做什么。其中一些工作确实需要适当的推理能力,但很多都简单得不行。

你不需要 Fable 5 来帮你找是哪个文件把按钮搞坏了。你也不需要它来读取错误日志、更新依赖、生成基本测试,或检查测试是否通过。一个规模小得多的模型就能处理大部分这些任务,尤其是当你给它清晰的指令、并且只让它接触它需要的工具时。然而,当你正常使用 Claude Code 时,每件小事儿都甩给同一个昂贵的模型。

随着对话越来越长,问题也会越来越严重。Claude 读取的每个文件、运行的每条命令以及遇到的每个错误,都会往对话里塞进更多信息。然后,模型必须在一个越来越臃肿的上下文里继续干活,哪怕其中大部分信息早就不相关了。如果项目走了几次弯路,你还得花钱让 Claude 一边试着修错、一边把它之前犯的错再读一遍。

这套架构远比听起来简单

这套架构远比听起来简单

搭起来也容易得多

搭起来也容易得多

整套东西我都是围绕 n8n 和 Ollama 搭的,因为我想看到每一步,而不是把所有东西都藏到另一个 agent 框架背后。我用 n8n 来跑工作流,用 Ollama 通过本地 API 把模型暴露出来。

流水线中的第一个模型是 Qwen 3.5 2B,它大约占用 2.7GB 内存,只负责做路由分发。我给它设置了较大的上下文窗口,把 temperature 设为 0,并强制它返回 JSON,里面包含任务类型、所需输入、工具、专家和成功标准。它自己不负责解决任务。例如,如果我要求系统修复一个应用程序,路由器会把“代码”作为路由类型返回,列出相关文件,并把“通过现有测试”定为成功标准。

我让 Qwen 2.5 Coder 7B 处理编码任务。这是一个 4.7GB 的 Q4 量化模型,专门针对代码生成、代码推理和代码修复训练的。我给它设置了更大的上下文窗口,温度为 0.1,并且只给它开放了项目目录、文件编辑工具和沙盒终端的访问权限。它可以检查和修改代码,但不能浏览网页、访问无关文件夹,也不能自行决定要调用另一个 agent。

其他所有任务都交给了单独的 Qwen 3.5 9B 实例来处理。这些实例用的是同一个 6.6GB 的模型,但各自的提示词和工具不同。研究工作器拿到了搜索和网页抓取工具,数据工作器可以生成由 n8n 单独执行的 Python 或 SQL,自动化那个则可以调用一小批经过批准的操作。我把它们的温度参数统一设为 0.2,上下文与 Qwen 2.5 相同。这样一来,研究工作器就碰不到文件了,也避免了自动化那边在没有对应 n8n 节点的情况下瞎编 shell 命令。

最后一道检查交给 Qwen 3.5 4B 来做。它会拿到最初的成功标准、工作器的输出,以及工具实际返回的结果。代码必须通过其测试,研究得出的说法得有对应的来源,数据那块则拿 Python 或 SQL 跑出来的结果来核对。检查没过的话,就把具体报错原样通过路由器发回去,整个工作流最多只重试两次。

较小的模型表现更差,但系统运行得更好

较小的模型表现更差,但系统运行得更好

我不再为不需要前沿智能的任务使用前沿智能

我不再为不需要前沿智能的任务使用前沿智能

我搭建的这套系统里,没有一个本地模型能单独跟 Claude 比。不过,这些失败都局限在工作流程的某一个环节里,所以纠起来容易多了。如果编码模型改错了代码,n8n 会运行测试,并把错误输出传给验证模型。验证模型用 JSON 返回失败的测试、受影响的文件和拒绝原因,之后只有编码模型重新跑一遍。路由器不用重新做计划,其他模型也不用再把项目读一遍。我还把每个任务限制为两次重试,这样一个模型犯迷糊,也不至于让整个系统陷入代价高昂的死循环。

同样的方法在编码之外也有效。研究模型每给出一个结论,都必须附上来源,而数据模型生成 Python 或 SQL,实际计算交给这些工具来做。自动化模型只能用我批准过的 n8n 操作。这些模型比 Claude Code 的自由度更低,但它们能搞砸的路子也更少。最重要的是,我可以打开 n8n 执行日志,准确看到哪个模型接的任务、返回了什么、哪个工具跑的、工作流程在哪儿出的错。

有时候我还是离不开Claude

有时候我还是离不开Claude

当我给的需求不太明确、又指望它自己把整个项目规划好的时候,Claude还是明显更强。不过我现在已经不这么用它了。对于小功能和一些可能做不下去的随手项目,我一般就直接用本地团队了。