Trae 很蠢。 这玩意把你当傻子。
人才开发,把辅助侧栏锁死了,只允许它的 AI 助手蹲在右边。isDraggable:()=>!1,isDroppable:()=>!1,代码里写死了,你就是不许动 [#2459]。
只能从它预设的厂商列表里选,baseURL 不开放。有人问了一年了,还是不给 [#978] [#2392]。连 OpenAI 兼容格式都不支持 [#1695]。 好不容易接上自己的 DeepSeek,还偶尔 500 报错 [#1095] [#1100]。或者干脆给你限流,后台用量才 7% 就提示你升级 Pro [#2388]。自定义模型持续 4054 报错的 issue 有 36 条评论还在开着 [#2060]。
Trae CN 还加了更 sb 的限制:AI 用一会就不让用了,提示你限流或者升级,逼你掏钱。
trae-custom 是一个 Trae IDE 补丁与增强工具,包含三块能力:
- 解锁补丁:把 Trae 硬编码锁死的 UI 限制(侧栏、视图移动、AI 面板)解开,CLI 和 VSCode 扩展双模式,一键应用、一键回滚,自动备份、hash 校验、版本更新检测。
- 外观快设:在扩展面板里直接给注释、字符串、关键字、函数等 token 设颜色与斜体,调字体族/字号/行高/字间距,全部写入用户
settings.json,不动 Trae 文件。 - 自定义 CSS 注入:把任意 CSS 注入到 Trae 的
workbench.desktop.main.css,用/* trae-custom:user-css */块包裹,可一键移除。内置 OLED 纯黑、紧凑标签页、磨砂玻璃感等预设。
| 模块 | 类型 | 解锁/做了什么 |
|---|---|---|
sidebar |
补丁 | 把被锁死的辅助侧栏解锁,允许把任何扩展(Kilo、Copilot 等)拖进去 |
view-move |
补丁 | 允许视图自由移动到其他侧栏,移除 remote 环境下的限制 |
ai-flex |
补丁 | AI 面板可自由移动、显示标题栏、允许拖入其他视图、注册打开命令 |
| Appearance | 设置 | 注释/字符串/关键字等 7 类 token 的颜色与斜体;4 项字体设置;4 套预设主题 |
| Custom CSS | 注入 | 自由编辑并注入任意 CSS 到 Trae UI;6 套预设可叠加 |
具体每个模块改了什么:
Trae 在代码里硬编码了这些限制:
AUXILIARYBAR_HIDDEN:new yd("auxiliaryBar.hidden",1,1,!0)→ 辅助侧栏默认强制隐藏if(Mi&&!this.j.remoteAuthority)return!0→ 本地环境强制隐藏辅助侧栏isDraggable:()=>!1→ 不允许从辅助侧栏拖出面板isDroppable:()=>!1→ 不允许拖入面板到辅助侧栏get disableDroppable(){return!0}→ AI 面板禁止拖入其他视图(2处)isAiViewContainer:t.type==="ai"→ AI 容器标识限制- 自动隐藏逻辑:只剩 AI 视图时强制隐藏辅助侧栏
- 把非 AI 容器踢回主侧栏,扩展没法留在辅助侧栏
for(const a of[0,2,1])a!==2&&...→ 右键"移动到"子菜单写死排除辅助侧栏,AI 面板移出后无法移回- CSS
.noauxiliarybar .part.auxiliarybar{display:none!important}强制隐藏
全部改掉了。[#2459] 里有人设了 hidden 还被强制打开,就是这个原因。
canMoveView:l?.id!==W7&&l?.id!==SB→ 限制了 TreeView 的移动,直接改成canMoveView:!0
canToggleVisibility:!1→ AI 面板不可切换可见性,改成!0hideHeader:!0→ AI 面板没标题栏,改成!1让标题栏显示出来disableDroppable:!0→ AI 容器禁止拖入其他视图,改成!1doNotRegisterOpenCommand:!0→ 不注册 AI 面板打开命令,删掉这个限制
# 应用所有模块
trae-patcher apply
# 只解锁辅助侧栏
trae-patcher apply sidebar
# 指定 Trae 安装路径
trae-patcher apply --path="D:\Trae CN"
# 回滚所有补丁
trae-patcher revert
# 只回滚某个模块
trae-patcher revert sidebar
# 查看当前补丁状态
trae-patcher status
# 检测 Trae 安装路径
trae-patcher detect
# 注入自定义 CSS(从文件读取)
trae-patcher css apply --file=my.css
# 移除已注入的自定义 CSS
trae-patcher css remove
# 查看 CSS 注入状态
trae-patcher css status在 Trae 里安装 trae-patcher 扩展,左侧活动栏会出现 Patcher 图标,点击进入可视化控制面板,三个 Tab:
Patches:解锁补丁的开关面板
- 自动检测 Trae 安装路径,也支持手动指定
- 每个模块一个开关,一键应用/回滚
- 实时显示补丁状态(已应用/部分生效/未应用)
- 应用/回滚后需重启 Trae 生效
Appearance:编辑器外观快设(写入用户 settings.json)
- 7 类 token(注释、字符串、关键字、函数、变量、数字、类型)的颜色与斜体
- 字体族、字号、行高、字间距
- 4 套预设:莫兰迪、高对比、复古绿、深海
- 「重置全部外观设置」按钮,仅清除 trae-custom 写入的字段,不影响你自己的其他配置
- 不需要重启 Trae,立即生效
Custom CSS:自由注入任意 CSS
- 大编辑框写自定义 CSS,自动保存草稿
- 一键注入/移除,注入位置用
/* trae-custom:user-css */标记块,干净可还原 - 6 套预设:OLED 纯黑、紧凑标签页、活动栏极简、磨砂玻璃感、全局圆角、极细滚动条
- 注入后需重启 Trae 生效
cd extension
npm run package会在 extension/ 目录下生成 .vsix 文件,在 Trae 中手动安装即可。
- 自动备份:每次应用补丁前自动备份 JS、CSS、product.json(带时间戳的
.bak文件) - hash 校验:记录补丁后的 JS 文件 hash,如果 Trae 更新导致 hash 变化会提示重新应用
- checksum 更新:自动更新
product.json中的校验和,防止 Trae 检测到文件被修改 - 一键回滚:所有补丁都可以完整回滚,回滚后自动恢复原始 checksum
- 状态检测:
status命令可以逐项检查每个模块的补丁是否实际生效
- 补丁基于 Trae 特定版本的代码结构,Trae 更新后可能需要重新应用
- 应用或回滚后必须重启 Trae 才能看到效果
- 本项目仅修改 Trae 的前端 UI 逻辑,不涉及 AI 模型 API 的接入问题(那是 Trae 自己的服务端限制 [#2060] [#2388])
trae-custom/
├── src/ # CLI 核心
│ ├── index.js # CLI 入口(apply/revert/status/detect/css)
│ ├── modules.js # 解锁补丁模块定义
│ ├── userstyles.js # 自定义 CSS 注入与 product.json checksum 协调
│ ├── presets.js # 内置外观与 CSS 预设
│ └── utils.js # 工具函数(路径检测、备份、hash、补丁应用)
├── extension/ # VSCode 扩展(GUI)
│ ├── extension.js # 扩展入口 + Webview Provider(含 settings.json 接管)
│ ├── webview/ # Webview UI(三 Tab:Patches / Appearance / Custom CSS)
│ │ ├── main.js # 前端逻辑,无框架,纯 DOM
│ │ ├── style.css # 深色赛博朋克主题
│ ├── scripts/
│ │ └── sync-src.js # 打包时复制 src/ 到 extension/src/
│ ├── media/
│ │ └── icon.svg # 活动栏图标
│ └── package.json # 扩展配置
└── package.json # CLI 包配置
MIT