今天,全网都被一个开源项目的硬核实力狠狠刷屏了。
在针对真实世界CLI(命令行)任务的11项基准测试中,一个纯Python写的开源项目 Hermes Agent,以 6:5 的战绩,直接把OpenAI的王牌Agent——Codex 按在地上摩擦。
这不仅仅是一次简单的“开源社区”的胜利,更是一次对“大厂迷信”和“语言偏见”的彻底颠覆。
很多人第一反应是:不是吧?OpenAI的Codex,背后有整个微软和OpenAI的算力支持,会被一个纯Python项目战胜?
但事实和数据就在眼前。Hermes不是靠换模型、也不是靠堆算力,而是靠三个极其“狠辣”的纯工程优化,完成了惊天逆袭。
01. 再不赢,就要被“优化”了
比赛的转折点,在于一把“手术刀”。
在这场备受瞩目的对决之前,Hermes的战绩是惨淡的5胜6负,处于下风。尤其是在单轮任务上,几乎被Codex碾压。
问题出在哪?
团队通过层层profiling(性能分析),揪出了一个最核心的“病根”——启动速度。
那时候,Hermes的启动时间高达701毫秒。而在Agent的世界里,启动慢了,就意味着在整个任务流中处处被动。就像百米赛跑,你起跑慢了半拍,后面追起来就难了。
于是,Hermes团队决定“对自己动刀子”。他们没动任何AI算法,没换任何模型,就盯准了启动时间,连砍三刀。
02. 三刀下去,砍掉63%的「启动包袱」
这三刀,可谓是刀刀见血,充满了工程暴力美学。
• 第一刀:Bitwarden磁盘缓存(砍掉380ms)
原来的Hermes每次启动都得调用Bitwarden Secrets Manager的API去拉取凭据,这一下就是380毫秒的“硬开销”。更离谱的是,之前的缓存是“纯进程内”的,你连续执行两次命令,第二次还得傻呵呵地重新拉取。
解决方案简单粗暴:加一个L2磁盘缓存。把凭据缓存到/cache/bws_cache.json,权限锁死0600,默认300秒有效。一刀下去,380毫秒的延迟直接抹平。
• 第二刀:模型目录延迟加载(省下55ms)
Hermes CLI里有一个包含所有AI供应商模型信息的巨型字典——_PROVIDER_MODELS。原来它在模块加载时就“急切地”全部导入,白白吃掉了55毫秒。但实际上,只有model_flow相关的处理函数才需要它。
团队利用PEP 562的模块级getattr实现了懒加载。不访问就不加载,又省了55毫秒。
• 第三刀:配置文件去重(省下17ms)
在main.py顶部,居然把config.yaml读了两次。一次是yaml.safe_load用于密钥脱敏,一次是完整的load_config(含深度合并)只为检查一个布尔值。
合并成一次原始加载,干净利落,省下17ms。
这三刀加起来,启动时间从701ms暴降至258ms,降幅高达63%。
这才是我心目中的“工程暴力美学”:不靠玄学,不靠信仰,只靠精准的profiling和残忍的“砍冗余”。
03. 6:5,逆袭是如何发生的?
在启动时间被拉到和Codex同一水平线后,战局瞬间逆转。
• 单轮任务(8项): Hermes的中位框架开销,降到了与Codex持平甚至略低的水平。原来被Codex碾压的启动劣势,被完全抹平。
• 多轮任务(3项): Hermes在5轮对话的总开销上,原本就略有优势。现在优势被进一步拉大,Codex彻底追不上了。
最终总战绩:Hermes 6 : 5 Codex。一场酣畅淋漓地逆袭。
有人可能会问:“既然启动这么重要,为什么不把Hermes也迁移到Rust,那不是更快吗?”Hermes的联创兼首席科学家Teknium给出了一个极其清醒的回答:
这句话,点出了Python在这个时代的核心竞争力。
04.对普通开发者意味着什么?
这场对决给所有开发者和Tech Lead们上了生动的一课。在Agent这个赛道上,框架层面的架构决策,比语言层面的原始速度更重要。当你还在纠结“Python会不会太慢”、“Rust才是未来”的时候,人家已经用纯Profinling和工程优化,把“性能债”还清,并赢得了比赛。正如开发者netrunner一针见血的评论:
所以,别再被“语言偏见”束缚了。
• 做面向最终用户的Web应用,你依旧可以信任Rust的高性能。
• 但在AI Agent、工具链这种需要快速迭代、灵活适配的领域,Python的“快”不在于运行速度,而在于开发的“快”。这仅仅是一个开始。Yan Xbt 在社交媒体上说得好:
我们正在见证一个从“大力出奇迹”回归到“精致工程化”的新时代。而这个时代的第一枪,由Python打响。