征服trae的第一步,trae.ai这个bt,把max mode模式隐藏,我冲了会员都不给用,这下好了,claude几下解决了。全开。

Trae 全局 Max Mode 开关调出来了(1.107.1 / 3.5.81)
现象:Max Mode 那一行带开关的总控只出现过一次,之后就只有每个模型自己的 Max 开关了。
原因:Trae 有两套互斥 UI,由这条链决定:
maxModeScope = (isOlderCommercialUser() || isSaas()) ? “global” : “model”
isOlderCommercialUser() = isCommercialUser() && !isDollarUsageBilling()
启动瞬间 entitlement 接口还没返回,entitlementInfo 是 undefined → isDollarUsageBilling() 为 false → 被短暂判成老商业版用户,全局 UI 就渲染出来了;接口一落地立刻切回 per-model。所以不是 bug,是启动竞态。
坑:只改 product.json 里的 forceEnableDollarUsage: false 没用。那个表达式有两个 fallback:
isDollarUsageBilling: this.I.iCubeApp?.forceEnableDollarUsage ? !0
: this.I.iCubeApp?.enableDollarUsage ? e.is_dollar_usage_billing : void 0
第二个分支的 enableDollarUsage 本地 product.json 里根本没这个键,是服务端动态配置下发的,启动时深合并进 productService。改缓存 Local Storage\config.db 也白搭,每次启动重新拉。
解法(两步,记得备份):
- resources\app\out\main.js 里整个三元表达式替换成 isDollarUsageBilling:!1(全文件仅 1 处匹配)
- %APPDATA%\Trae\User\globalStorage\storage.json → iCubeServerData://icube.cloudide → entitlementInfo.isDollarUsageBilling 改 false
重启,日志 renderer.log 里 isOlderCommercialUser":true 26 次、false 0 次,全局开关行常驻。
顺带:product.json 的 checksums 只有 13 条且全是 vs/**,out/main.js 不在内,不触发完整性告警。
代价:计费 UI 会走旧的 fast-request 风格(只影响客户端显示,服务端怎么算账不由它决定);每次升级覆盖 main.js,要重打一次。
第二步待续:外部加入api老是断线的问题