让 8B 模型准确率飙到 99%、老软件全变 Agent:大厂还在卷参数,极客们开始“暴力魔改”了
最近看大厂发模型,动辄千亿参数起步,闭源 API 价格也是水涨船高。很多团队做 AI 应用时,容易陷入一种错觉:总觉得现在的模型不够聪明,导致系统不稳定,只能寄希望于下一个版本的巨无霸模型。
但如果你真的在业务线上推过 Agent 落地,一定会有一个痛点:每月高昂的 API 费用实在让人肉疼,而且哪怕是最顶级的模型,在复杂的多步执行中照样会偏离指令甚至崩溃。
这时候,开源社区的工程师们给出了另一种解法:很多 Agent 稳定性问题,先看输出约束、状态机和重试机制,而不是先换更大的模型。
Agent 落地的瓶颈正在从模型能力转向工程约束。本周有两个冲上热榜的项目,分别证明了这种思路下稳定性和可调用性的提升:Forge 和 CLI-Anything。
给 8B 小模型焊上铁轨:Forge 的 Guardrails 机制
第一个项目是 Hacker News 上热议的 Forge。
做过 Agent 的人都知道,把一个只有 8B 参数的本地小模型直接放去跑长流程的自动化任务,成功率通常很难看。Forge 团队在测试原生的 8B 模型时,准确率只有不及格的 53%。原因很简单:小模型的注意力窗口有限,极其容易在中间的某一步输出格式错误,或者产生幻觉偏离目标,导致整个工作流中断。
但 Forge 团队没有去微调模型,也没有换用更大的参数规模,而是引入了一套强硬的“护栏(Guardrails)”机制。结果硬生生把 8B 模型的准确率拉到了 99%。
这套护栏是怎么运转的?你可以把它理解为给发散思维的大模型套上了一个强类型的校验层。在每一步输出后,Guardrails 会介入,验证输出格式是否为合法的 JSON、关键字段是否缺失、执行路径是否超出了预定义状态机。一旦发现模型跑偏,护栏会拦截错误,自动构造一个带有明确错误提示的 Prompt 扔回给模型,强迫它在当前步骤自我修正,直到输出完全合规,才允许进入下一步。
许多 Agent 任务失败,问题不在理解,而在输出没有被状态机和 schema 收紧。护栏把模型输出限制在状态机、schema 和错误回灌闭环里,它不再依赖模型原生的全局规划能力,而是用代码逻辑强行控制它的行驶路线。
在企业级落地中,这种思路太重要了。用极低成本的 8B 模型配合强力 Guardrails,跑出 99% 的确定性,远比每个月烧钱去祈祷大模型不犯错要靠谱得多。
把老古董变身 Agent 节点:CLI-Anything 的暴力美学
模型的大脑稳定了,接下来就是让 Agent 动起手脚。
现在做大模型集成,大家都喜欢调 API。但现实业务中,绝大多数的存量软件、企业内部的老旧系统根本没有提供完善的 RESTful API,有的甚至连个像样的 Web 界面都没有。如果等官方排期提供接口,项目周期往往等不起官方接口排期。
GitHub 上近期狂揽 38,000+ Stars 的 CLI-Anything,给出了一个极度硬核的解决方案。它的思路非常纯粹:既然许多软件可以通过某种方式被命令行(CLI)控制,那为什么不把大量有源码或可分析的系统包装成标准的命令行接口,让 Agent 直接通过终端去调用?
CLI-Anything 通过一个被称为 CLI-Hub 的架构,做了一层暴力适配。对有源码或可分析项目,CLI-Anything 可以生成面向 Agent 的 CLI harness;不过目前,针对闭源、只有 GUI 的老系统,这更多还是一个未来的探索方向和限制条件,尚未完全实现成熟的自动化转化。
这让我想起了微服务化浪潮初期的场景。当年很多老旧单体系统无法直接改造,工程师们就用 Sidecar 模式,在老系统外面套一层 Envoy 代理,强行让它们接入服务网格。CLI-Anything 本质上就是在做大模型时代的 Sidecar:它不管你内部多陈旧,只要你在外层暴露出一套干净的、大模型能懂的命令行指令,你就能瞬间融入 AI 时代。
Agent 落地重新回到工程约束
无论是用 Guardrails 把小模型的准确率从 53% 拔高到 99%,还是用 CLI-Anything 将符合条件的旧系统接入 Agent 网络,两类项目解决的是同一个问题,模型负责生成,工程负责收口。
把发散和不确定性留给模型,把复杂和确定性收口给工程代码。
当我们把视线从“比拼参数规模”移开,重新审视架构的威力时,你会发现,现在真正制约 AI 规模化落地的,根本不是大模型还不够聪明,而是我们的工程脚手架搭得不够结实。
与其眼巴巴等下一个大版本模型显灵,不如学学这些极客,用扎实的架构把现有的工具链武装到牙齿。别再嫌弃你的开源小模型变笨或者老系统没接口了,优秀的架构师都在用外挂脚手架把它们改造成超级 Agent。
<figure><img src=“images/01-adapter-arch.png” alt=“01-adapter-arch”></figure>