花费五美元在真实SDK上于Claude Code中测试GLM 5.2。
一项花费五美元的OpenRouter实验:将Claude Code与GLM 5.2进行路由连接,审计并修改React Native SDK,各项任务的成本以及节省空间的极限。
随着 Claude Code 的费用不断上升,寻找更便宜的模型便成了一个合理的选择。通常被推荐的候选者是 GLM 5.2,这是一款来自中国实验室的开放权重模型,各类基准测试文章都对其赞不绝口。有位开发者没有继续阅读那些文章,而是花了5美元购买 OpenRouter,将该模型应用于一个真实的代码库——一个为 React Native 构建的生成式 UI SDK,并逐一检查它输出的每一行代码。这次检测花费59美分,而代码构建则耗资4美元。其中的细节非常值得仔细研究,包括关于哪些代码应该发送给托管模型的一个差点酿成大错的错误。
为何要对其进行测试
进行这项实验有两个动机。首先是成本考虑。如果有一种模型价格仅为常规水平的十分之一,却能完成一半的工作量,那无疑能节省不少开支,尤其是对于那些需要同时运行多个模型的人而言。第二个动机则是对中国实验室的好奇——这些实验室发货速度快,发布的基准测试成绩令人惊叹,但其模型却从未在开发者的自有代码上经过测试。
测试的规则很简单:使用开发者最熟悉的代码库,并验证输出结果中的每一项声明。
准备工作比预期更简单
GLM 5.2 来自 Z.ai,于六月中旬推出,拥有百万token的上下文窗口,被广泛认为是一种以更低价格具备前沿模型级编码能力的工具。公开数据也印证了这一评价:根据3,243场直接对比测试,OpenRouter的Design Arena将其代码能力排名前1%。不过这仍是他人的评估标准,而评估标准本身也是别人的代码。
Claude Code并不关心其背后的技术实现。它采用Anthropic的API格式,并通过读取两个环境变量来决定请求的处理路径。只要将这些变量指向其他端点,整个工具依然可以正常运行,代理、文件编辑和测试功能不变,只是背后的处理引擎不同而已。
OpenRouter充当了终端节点。一个账户和一条API密钥就可以连接到包括Z.ai在内的数十家服务提供商,因此无需仅为进行一次实验就与国外的实验室建立单独的计费关系。只需充值几美元,就能通过同一条密钥使用任何模型。整个流程分为三步。
创建密钥。在OpenRouter上生成一条API密钥,并充值几美元的额度。GLM 5.2没有免费套餐,不过现有额度已经非常充足:整个实验仅需5美元即可完成,还有剩余。密钥上的额度限制功能起到了保障作用,此处设定的上限为5美元。实验结束后,控制面板显示已使用4.59美元的额度,足以覆盖下文所述的所有内容。
将 Claude Code 的指向设置为此地址即可。只需调整几项设置即可:基础 URL 设为 OpenRouter API,认证令牌使用 OpenRouter 密钥,而 Opus 和 Sonnet 模型的默认名称均设为 GLM 5.2 的标识符。
ANTHROPIC_BASE_URL = https://openrouter.ai/api
ANTHROPIC_AUTH_TOKEN = your_openrouter_key
ANTHROPIC_DEFAULT_OPUS_MODEL = z-ai/glm-5.2
ANTHROPIC_DEFAULT_SONNET_MODEL = z-ai/glm-5.2
ANTHROPIC_DEFAULT_HAIKU_MODEL = z-ai/glm-4.5-air
设置完成后,启动 Claude Code 就相当于在与 GLM 交流。若要回到 Claude,只需删除那些相关代码行即可,这就是全部的切换流程。
固定服务提供商。大多数人会跳过这一步,但实际上这很重要。在 OpenRouter 上,同一个模型名称可能由众多公司提供,价格差异极大,从每百万个标记不到一美元到超过三美元不等。这种差异并非偶然——有些服务商提供的是量化版本的模型,这类模型体积更小、运行速度更快,但性能明显更差,正因如此“服务提供商”选项卡甚至还设置了量化过滤功能。如果保持自动路由模式,请求可能会被发送到这类服务商那里,测试者就会误以为使用的是真实模型,实际上却在评估经过压缩的仿制品。
为确保公平比较,路由被设置为直接连接到原生主机Z.ai,并关闭了备用选项。这样每个请求都会直接到达真正的全精度模型,不会经过其他任何环节。如果公平性是目标,那么这个开关就会决定最终结果。
近乎错误的做法:并非所有代码都可共享
SDK是开源的,但同一个代码库中还包含一些不可共享的资料:动态接入工具包、计费系统、租户逻辑以及用于盈利的相关代码。将整个单体仓库发送到另一个国家的托管模型中,这种随意的泄露往往要事后才会被发现。
在任何程序开始运行之前,首先会创建一个干净的副本。其中仅包含可展示的部分,也就是SDK包以及带有代理后端的示例应用,而商业代码则仍保存在开发者的本地磁盘上。接下来是虽枯燥却至关重要的检查——会在这份副本中搜索可能泄露游戏信息的关键词,如“onboarding”、“billing”、“tenant”和“stripe”,结果是在有任何代码离开机器之前都没有找到任何匹配项。
这种习惯才是真正的教训。便宜的模型并不能改变规则:公开代码可以放到托管的API中,而私有代码则必须留在本地或根本不外传。正是同样的思路,让开发者曾选择一款价格更高但符合欧盟安全标准的模型用于客户端后端;即便只是出于趣味而进行实验,这一原则也同样适用。
任务一:阅读SDK并指出其存在的问题
第一项任务纯粹是阅读测试。GLM需要像要基于该架构开发新一代工具一样对其架构进行审计:找出关键连接点,为文件命名,指出哪些部分会最先出问题。有一条规则最为重要——每一项结论都必须引用具体的文件和行号,面对不确定性时必须如实承认,而不能用编造的内容来掩盖。
该模型读取了41个文件,并给出了审计报告,指出了开发者早已知晓的三个实际问题:
- 在应用程序启动时,组件类型就会被固定到程序包中,因此代理无法在运行时定义新组件,而这正是下一个功能所必需的。
- 由于负责处理的适配器从未被编写过流式处理方法,因此在主代理路径上,流式处理功能根本无法正常工作。
所有信息都经过了严格验证。每条引用都通过grep与代码进行了比对,结果均符合预期。文件路径和行号也都正确,模型没有编造任何函数。它甚至还发现了一个没人注意到的问题:一段后台注释声称使用了最新的Claude模型,而紧接其上的代码实际上调用的是成本更低的OpenAI模型。那段过时的注释竟变成了一处小谎言。对于这个开发者原本打算忽视的模型来说,这确实是个出色的发现。
这次审计花费了59美分,耗时六分钟。
第二项任务:修改代码
在阅读阶段,每个模型都显得很聪明,因此接下来的步骤就是让它们接触代码。通过自身的审计,它找到了最棘手的解决方案:彻底杜绝组件漂移问题。SDK将成为唯一的真实数据来源,会从中生成清单,服务器将读取该清单而非手工输入的列表,这样两者就再也不会出现分歧。一旦出现分歧,测试就必须失败。
该模型完成了所有部分的工作。SDK 生成了清单文件,服务器随之切换以使用该文件,原本独立的两个组件最终变成了正式的内置组件,从而可以被访问了,同时还添加了用于检测偏差的防护测试。开发者自行运行测试套件后,发现有92项测试通过,其中包括原本的87项未变项以及5项新通过的测试。随后他们故意尝试破坏系统:手动从清单文件中删除一个组件,然后重新运行防护测试。系统在预期位置出现了明显的错误提示,安全机制确实发挥了作用。
在开发过程中,该模型还遇到了一个令人头疼的工具链问题,即 React Native 的语法问题导致测试运行器无法加载某些文件。它既没有隐藏这个问题,也没有放弃。它找到了一个简单的解决方案,并将此问题作为注意事项记录在报告中,这种诚实态度比看似完美的测试结果更为重要。
隐患所在
构建成本为4美元,而读取成本仅为59美分,正是这一差距被那些宣传视频忽略了。在读取方面,GLM明显更具优势:成本仅为常规方案的十分之一,速度则快三倍。在构建方面虽然也成功了,但4美元中的大部分都花在了反复运行测试程序上——也就是不断运行、读取错误信息、修改后再运行,如此循环大约三百次。其中只有大约三十次是真正的代码修改,其余的都是耗费体力的重复工作。
因此,其结论并非“GLM能取代现有方案”这么简单。在需要阅读、审查、审计和解释代码库的场景中,即那些模型只需思考一次就能给出答案的工作中,GLM 5.2确实物超所值,值得特意选用。而对于那些需要长时间无人值守、调试成本不断累积的构建任务,虽然GLM也能完成工作,但节省的成本会逐渐减少,此时便又需要考虑使用更先进的模型了。
某个下午,5美元加上熟悉的代码就得到了确定的答案,而大量杂乱无章的意见却永远无法做到这一点,这让它成为了当月最便宜的研究成果。
将其用于日常任务
根据代码的不同,有两种使用方式。
对于公开内容,OpenRouter的配置会保存在Claude Code设置中的注释块里。如果需要对开源仓库、架构设计或“这里有什么问题”这类内容进行低成本咨询,只需去掉注释符号,将服务提供商改为Z.ai,就能以极低的成本让GLM承担繁重的阅读工作。而在实际构建时,Claude仍为默认选择。
对于私有内容,则必须是模型进入代码中,反之不可。这意味着要么使用本地权重,要么什么都没有。
相关阅读
- 利用Qdrant的多向量技术与句子隔离功能将RAG令牌成本降低67% —— 一种法律检索RAG流程,它在Qdrant内部使用ColBERT重新排序、隔离匹配的句子,通过牺牲部分延迟来实现67.1%的令牌成本削减。