写在开始
GLM-4.5发布一个多月了,早期把他接在Roo Code上用的时候发现他有奇怪的65536 token上限问题,然后就在尝试找原因。毕竟有这个奇怪的上限之后他没法跑满全部上下文,而且工具调用也会出问题
情况
这是在我刚买智谱AI的一万亿Token的资源包的时候发现的,那时候一开始没想太多,接在Claude Code上用着很正常,就包括用Claude Code Router来接我自己的New API,然后从里面再接智谱AI也没发现什么问题。
直到有一天我接了Roo Code上去,发现他好像不对劲,莫名其妙的无限循环,以及怎么也上不去的上下文,就很离谱
我一开始以为是Roo Code出现什么问题了,去查它的源码看看有没有这种65536的限制,虽然感觉也不像是限制吧,因为这个数字不是65535,而是65536。
用Roo Code翻了一遍,甚至用它调用的API也手工调用了一遍,发现好像没有这种问题,包括Roo Code官方的issue里说的65536也都是模型只支持65536但是他发多了,而不是我这种支持128k却只能发65536的。
后来在b站有个claude code的视频评论区里,有人说智谱官方会自动压缩上下文,所以不需要开claude code自己的上下文压缩,我才注意到有这个可能,当然一开始也没在意,直到我用Cherry Studio去调用GLM-4.5的时候发现了上下文的猫腻
我本身没有在Cherry Studio里开上下文压缩或者限制对话轮数之类的限制,所以感觉这个效果应该就是所谓的自动上下文压缩,再来。当然我还是不太相信,所以又来测了一遍
第四次我的prompt甚至是上面老消息没用了,你自己压缩一下吧
,他自己的上下文甚至都变小了。然后后面我再问他我第一句话说了什么他自己已经不记得了,只记得我说的第二个任务,后面原本的内容似乎不能全部记住
切换成DeepSeek Chat之后就能正确的突破这个奇怪的限制了,所以问题肯定出在智谱的API上。
写在最后
之前一直没注意这个问题,我以为是软件自己的限制,结果发现好像是API本身就有问题,而且这次测试又变成了65535了,感觉像是智谱自己做了个什么限制,节约自己的token量的样子。然后这么一个限制直接把RooCode之类的不用tool call的agent原地爆炸,连工具调用都调不明白了。