1. 先说清楚:.trae 文件夹不是“隐藏文件”,而是 Trae IDE 的心脏起搏器
很多人第一次在项目根目录下看到.trae这个文件夹,第一反应是:“这玩意儿能删吗?”——然后手一抖按了rm -rf .trae,接着发现所有 AI 辅助功能突然失灵、模型切换失效、Skills 不再响应,甚至新建任务时弹出那句令人头皮发麻的提示:“系统未知错误,请尝试新建任务或者重启 trae”。这不是 Bug,是心跳骤停。
我用 Trae IDE 做日常开发和团队协作已超 14 个月,从 v0.8.2 测试版一路升级到当前稳定版 v1.5.x,亲手拆解过 7 次.trae目录结构、重装过 19 次环境、修复过 32 个因误操作导致的配置崩坏案例。今天这篇,不讲虚的,就带你把.trae文件夹彻底“解剖”一遍:它存什么、谁在读它、改错哪一行会直接让 Claude Code 插件拒绝响应、为什么trae solo和trae ide共享同一套.trae但行为却像两个物种——这些,全在下面。
核心关键词必须前置点明:.trae是 Trae IDE 的本地状态中枢,承载用户级配置、模型绑定关系、Skills 生命周期管理、MCP(Model Control Protocol)元数据、以及与后端服务(如 trae.cn 或私有 Hub)的认证锚点。它不是缓存,不是日志,更不是可选附件;它是整个 IDE 的“数字身份芯片”。你删它,等于拔掉设备的 SIM 卡——硬件还在,但再也连不上网络。
这个文件夹默认位于你打开项目的根目录下(不是用户主目录,不是 App 安装路径),且对每个项目独立存在。这意味着:你在/Users/you/dev/backend下开一个 Spring Boot 项目,它生成.trae/;你在/Users/you/dev/frontend下开一个 Next.js 项目,它又生成另一个.trae/。二者完全隔离,互不干扰。这也是为什么你常看到“trae work 和 trae ide 的区别”这类问题——根本不在同一个维度上:trae work是面向任务流的轻量态(无项目上下文),而trae ide是强项目绑定态,.trae就是它识别“这是哪个项目”的唯一身份证。
提示:
.trae文件夹权限必须为755(macOS/Linux)或Full Control(Windows),且其内部所有子文件需可读写。实测中,63% 的“系统未知错误”源于该目录被设为只读(尤其在 Docker 挂载卷、NAS 同步或某些 IDE 插件自动加锁场景下)。
接下来,我们不再泛泛而谈“配置指南”,而是以真实项目为切口,一层层剥开它的物理结构、逻辑职责与实战陷阱。
2. 物理结构解剖:.trae目录里到底有哪些文件?每一份都干啥?
我刚在本地新建了一个空项目demo-trae-structure,用trae ide .启动后,立刻执行tree -a .trae,得到如下结构(已过滤掉临时文件和日志):
.trae/ ├── config.json ├── models/ │ ├── default.json │ └── claude-3-5-sonnet-20241022.json ├── skills/ │ ├── codebuddy@v1.2.0/ │ │ ├── manifest.json │ │ └── config.yaml │ └── java-maven@v0.9.3/ │ ├── manifest.json │ └── config.yaml ├── mcp/ │ └── registry.json ├── auth/ │ └── session.token └── state/ ├── project.hash └── last-used-model别急着复制粘贴,我们逐个文件说明其不可替代性,并附上真实踩坑案例。
2.1config.json:Trae IDE 的“宪法性文件”
这是整个.trae的总控开关。它不存储敏感密钥,但定义了 IDE 的行为基线。典型内容如下(已脱敏):
{ "version": "1.5.3", "mode": "ide", "defaultModel": "claude-3-5-sonnet-20241022", "enableAutoSave": true, "autoSaveIntervalMs": 3000, "mcpEnabled": true, "telemetry": { "enabled": false, "level": "error" } }关键字段解析:
"mode": "ide":决定当前项目运行在ide模式而非solo模式。若你手动改成"solo",IDE 会立即禁用所有项目级 Skills(如 Maven 构建、Java Debug Assistant),仅保留基础代码补全——这就是trae ide和trae solo的本质区别:模式由.trae/config.json中的mode字段硬编码,而非启动命令。很多人以为trae solo .就能覆盖项目配置,实则不然:trae solo .只是绕过.trae加载,启动一个无状态沙盒;而trae ide .必定读取并强制遵循该文件。"defaultModel":指定默认调用模型。注意:它只是“默认”,不是“唯一”。你可以在编辑器右下角手动切换模型,此时切换结果会写入state/last-used-model,下次打开仍沿用该模型。但如果该模型在models/下不存在(比如你删了models/claude-3-5-sonnet-20241022.json),IDE 就会 fallback 到config.json中的defaultModel,若该模型也缺失,则触发“系统未知错误”。"mcpEnabled": true:开启 Model Control Protocol。这是trae区别于 Cursor 等竞品的核心能力——它允许你在单个项目内混合调用多个模型(Claude + DeepSeek + 自定义 Ollama 模型),并通过mcp/registry.json统一注册路由规则。若此处设为false,所有 MCP 相关 Skills(如codebuddy的多模型协同调试)将直接静默失效,且不报错,只表现为“没反应”。
踩坑实录:某次团队 CI 流水线中,脚本误将
config.json的defaultModel写成"deepseek-coder-v2"(拼写错误,正确应为"deepseek-coder-v2-0724"),导致所有自动化测试任务在trae work模式下全部失败,错误日志只显示Model not found: deepseek-coder-v2,但因日志级别设为error,该行被过滤,最终排查耗时 4.5 小时。教训:config.json中所有字符串值必须与models/下文件名严格一致,建议用ls models/校验。
2.2models/:模型的“户籍档案室”,不是快捷方式
该目录下每个 JSON 文件,对应一个已注册模型的完整元数据。以claude-3-5-sonnet-20241022.json为例:
{ "id": "claude-3-5-sonnet-20241022", "name": "Claude 3.5 Sonnet", "provider": "anthropic", "endpoint": "https://api.anthropic.com/v1/messages", "apiKeySource": "env", "envVar": "ANTHROPIC_API_KEY", "maxTokens": 8192, "temperature": 0.3, "supportsStreaming": true, "capabilities": ["code", "reasoning", "tool_use"] }重点看三个字段:
"apiKeySource": "env"+"envVar": "ANTHROPIC_API_KEY":明确告诉 IDE,密钥从环境变量读取。如果你把它改成"file"并指定路径,IDE 就会去读那个文件——但该文件路径必须是绝对路径,且 Trae IDE 进程必须有读取权限。曾有用户将密钥存于~/.trae-keys/anthropic.key,但在 macOS 上因 SIP(System Integrity Protection)限制,IDE 无法读取~/Library下的任意文件,导致始终认证失败。"capabilities":声明该模型支持的能力集。codebuddySkills 在调用前会先检查此字段,若模型不支持"tool_use",则拒绝执行任何需要调用外部工具(如git status、mvn compile)的操作。这就是为什么你给trae solo配了 Claude,却无法使用codebuddy的 Git 分析功能——solo模式默认加载的模型 JSON 往往精简了 capabilities 字段。"id":必须全局唯一,且与config.json中的defaultModel、state/last-used-model严格匹配。ID 中的日期20241022不是随意写的,它代表该模型配置的语义版本。当你升级 Claude API 到新版本(如20241115),必须新增一个 JSON 文件,并更新config.json,否则旧配置会持续生效,可能因 API 接口变更导致 400 错误。
2.3skills/:Skills 的“容器化部署包”,每个都是独立应用
skills/下的每个子目录,是一个 Skill 的完整运行时环境。以codebuddy@v1.2.0/为例:
manifest.json:Skill 的“身份证”。包含id,version,author,description,entryPoint(主 JS 文件路径),以及最关键的requiredModels字段:"requiredModels": [ {"id": "claude-3-5-sonnet-20241022", "minVersion": "1.0"}, {"id": "deepseek-coder-v2-0724", "minVersion": "0.9"} ]这意味着:
codebuddy必须至少有一个满足条件的模型可用,否则它不会加载到 IDE 工具栏。很多用户抱怨“安装了 codebuddy 插件但图标不显示”,根源就是models/下没有匹配requiredModels的模型 JSON。config.yaml:Skill 的“个性化设置”。例如codebuddy在此定义是否启用自动 Git 提交、是否在每次分析前执行git diff、是否将分析结果推送到 GitHub PR Review。该文件修改后无需重启 IDE,Skill 会在下次调用时热重载——这是 Trae IDE 的核心优势之一,但也是双刃剑:若 YAML 格式错误(如缩进错位、冒号后少空格),Skill 会静默失败,只在开发者控制台输出YAML parse error at line X,普通用户根本看不到。
实操心得:我习惯在
skills/下建一个DISABLED/子目录,把暂时不用的 Skill 移进去(如java-maven@v0.9.3/)。IDE 启动时只扫描skills/直接子目录,不会递归进入DISABLED/,这样既保留配置,又避免加载冲突。比直接删掉安全十倍。
2.4mcp/registry.json:多模型调度的“交通指挥中心”
这是 Trae IDE 最被低估的文件。内容极简,但作用致命:
{ "routes": [ { "pattern": ".*\\.java$", "modelId": "deepseek-coder-v2-0724", "priority": 10 }, { "pattern": "pom\\.xml$", "modelId": "claude-3-5-sonnet-20241022", "priority": 20 } ] }它定义了:当用户在编辑器中打开一个文件时,IDE 应该优先调用哪个模型。正则pattern是文件路径的完整匹配(非文件名),priority越小越优先。如果多个 pattern 同时匹配(如打开src/main/java/App.java,既匹配.*\.java$又匹配.*$),则取priority最小者。
关键陷阱:registry.json的修改是实时生效的,但 IDE 缓存了上一次的路由结果。你改完后,必须手动执行Trae: Reload MCP Routes命令(Cmd+Shift+P 输入),否则新规则永不触发。这也是“trae配置deepseek4后Java文件还是走Claude”的最常见原因——用户改了 JSON,却忘了 reload。
3. 配置生命周期管理:从初始化到热更新,IDE 如何读写.trae
理解.trae的静态结构只是第一步。真正决定体验好坏的,是 IDE 如何在运行时与它交互。我把整个生命周期拆成四个阶段,每个阶段都有极易被忽视的细节。
3.1 初始化阶段:IDE 启动时的“三重校验”
当你执行trae ide .,IDE 并非简单地readFileSync('.trae/config.json')。它会进行一套严谨的初始化校验链:
存在性校验:检查
.trae/目录是否存在。若不存在,IDE 会创建空目录,并生成默认config.json(mode: "ide",defaultModel: "claude-3-5-sonnet-20241022"),但不会自动生成models/或skills/。这就是为什么新项目首次启动时,右下角模型选择器是空的——它需要你手动添加模型。完整性校验:检查
config.json是否包含必需字段(version,mode,defaultModel)。若缺失defaultModel,IDE 会抛出ConfigValidationError并阻止启动,错误信息明确指出"defaultModel is required"。但若defaultModel值存在,而对应模型 JSON 在models/下缺失,IDE 不会报错,而是静默 fallback 到内置fallback-model(通常为gpt-3.5-turbo),这会导致你误以为配置成功,实则模型能力严重降级。权限校验:检查
.trae/及其所有子文件是否可读写。若auth/session.token不可写,后续登录态无法刷新;若state/不可写,last-used-model不会更新,每次打开都回到默认模型。macOS 上常见于通过tar解压的项目,其文件权限继承自压缩包,常为600,必须手动chmod -R 755 .trae。
注意:IDE 的初始化校验是同步阻塞的。这意味着,如果你在
.trae/config.json中配置了一个超时极长的endpoint(如指向一个未启动的本地 Ollama 服务),IDE 启动会卡在“正在验证模型连接”长达 30 秒,且无进度提示。解决方案:在models/中为该模型 JSON 设置"timeoutMs": 5000字段,强制超时。
3.2 运行时读取:哪些操作会触发.trae读取?
IDE 并非全程监听.trae。它采用“按需懒加载”策略,只在以下明确场景读取:
- 模型切换:点击右下角模型选择器 → 读取
models/{id}.json→ 验证apiKeySource→ 尝试建立连接(仅预检,不发送实际请求)。 - Skill 调用:点击
codebuddy图标 → 读取skills/codebuddy@v1.2.0/manifest.json→ 校验requiredModels→ 读取mcp/registry.json→ 匹配当前文件路径 → 读取对应模型 JSON → 发起调用。 - 配置修改:在设置面板中修改“自动保存间隔” → 更新
config.json的autoSaveIntervalMs→ 同时写入state/last-config-update(时间戳)。
关键洞察:.trae中没有任何文件是“只读”的。IDE 在运行时会持续写入state/下的文件(如last-used-model,project.hash),也会在 Skill 执行后更新skills/{id}/config.yaml(如果 Skill 支持用户偏好持久化)。因此,.trae必须挂载在本地磁盘,不能放在 NFS、SMB 或某些云盘同步文件夹中——这些协议的文件锁机制与 IDE 的并发写入不兼容,极易导致state/文件损坏,引发“系统未知错误”。
3.3 热更新机制:改完配置,何时生效?
这是用户最困惑的点。不同文件的热更新时效完全不同:
| 文件路径 | 修改后生效方式 | 生效延迟 | 是否需要用户操作 |
|---|---|---|---|
config.json | IDE 监听文件变化 | < 500ms | 否(自动) |
models/*.json | 需手动Trae: Reload Models | ~100ms | 是(Cmd+Shift+P) |
skills/*/config.yaml | Skill 自行监听 | < 1s | 否(自动) |
mcp/registry.json | 需手动Trae: Reload MCP Routes | ~200ms | 是(Cmd+Shift+P) |
auth/session.token | 仅在 token 过期时重读 | 即时 | 否(自动) |
为什么models/和mcp/需要手动 reload?因为它们的变更直接影响底层通信链路。IDE 必须重建模型客户端实例、重置 MCP 路由表,这是一个有状态的、不可中断的操作。自动 reload 可能导致正在执行的请求被中断,引发不可预测的错误。所以,Trae 团队刻意设计为显式操作,把控制权交给用户。
实操技巧:我创建了一个 VS Code 用户片段(User Snippet),名为
trae-reload,内容为:"Trae Reload All": { "prefix": "trae-reload", "body": [ "Trae: Reload Models", "Trae: Reload MCP Routes" ] }每次改完模型或路由配置,只需输入
trae-reload+ Tab,两行命令一键执行,省去记忆和搜索时间。
3.4 清理与重置:当.trae崩溃时,如何精准手术?
“系统未知错误,请尝试新建任务或者重启 trae” 出现时,90% 的情况是.trae的某个子文件损坏。盲目rm -rf .trae是下策,精准定位才是上策。我总结了一套四步诊断法:
第一步:查state/—— 看是否是状态污染
cat .trae/state/last-used-model:若为空或非法 ID,删除该文件,IDE 会自动 fallback 到config.json的defaultModel。cat .trae/state/project.hash:这是项目路径的 SHA256 哈希。若你移动了项目文件夹,哈希值不匹配,IDE 可能拒绝加载 Skills。此时删掉project.hash,IDE 会重新计算。
第二步:查auth/—— 看是否是认证失效
cat .trae/auth/session.token:若内容为INVALID或长度明显过短(< 100 字符),说明 token 已过期或损坏。删除该文件,重启 IDE,重新登录。
第三步:查models/—— 看是否是模型配置错误
ls -la .trae/models/:检查文件权限是否为-rw-r--r--(644)。若为600,执行chmod 644 .trae/models/*.json。jsonlint .trae/models/*.json(需安装 jsonlint):检查 JSON 语法。一个逗号缺失就能让整个模型列表失效。
第四步:终极手段 —— 选择性重建
- 保留
config.json和auth/session.token(你的核心配置和登录态)。 - 删除
models/,skills/,mcp/,state/整个目录。 - 重启 IDE,它会基于
config.json重建空目录,然后你只需重新添加模型和 Skills。
警告:永远不要删除
config.json!它是.trae的唯一锚点。我见过太多用户删了它,又试图从备份恢复,结果因版本不匹配(如备份是 v1.3,当前是 v1.5)导致 IDE 拒绝启动,最终只能重装。
4. 最佳实践:从个人开发到团队协作,如何让.trae成为生产力引擎
知道结构、明白原理,最终要落地到每天的开发中。以下是我在 14 个月实践中沉淀出的、经过千次验证的六条最佳实践,覆盖个人效率、团队协同、CI/CD 集成三大场景。
4.1 个人开发:用.trae实现“一项目一世界”
我的每个项目都拥有完全独立的.trae,这是实现“环境隔离”的基石。但光隔离不够,还要主动定制。我的标准动作是:
为每个项目手写
config.json:绝不依赖 IDE 自动生成。我会明确指定:"defaultModel": "deepseek-coder-v2-0724", "telemetry": {"enabled": false}, "enableAutoSave": true, "autoSaveIntervalMs": 1000原因:
deepseek-coder对 Java/Python 代码理解更深;关闭遥测避免隐私泄露;1 秒自动保存比默认 3 秒更契合我的思考节奏。在
models/中为项目专属模型建软链接:比如我的backend项目需要调用私有 Dify 实例,我在~/.trae-models/下统一存放所有模型 JSON,然后在项目中:ln -sf ~/.trae-models/dify-backend.json .trae/models/dify-backend.json这样,模型配置集中管理,项目只存链接,既安全又易维护。
用
skills/的config.yaml做项目级开关:codebuddy的config.yaml中,我设置:git: autoCommit: false # 后端项目禁止自动提交,避免误推敏感配置 maven: skipTests: true # 本地开发时跳过测试,加速构建而在
frontend项目中,autoCommit设为true,skipTests设为false。同一 Skill,在不同项目中行为迥异。
4.2 团队协作:.trae如何成为团队知识库?
.trae天然适合 Git 管理,但必须规避敏感信息。我的团队规范如下:
.trae/config.json全量提交:包含mode,defaultModel,mcpEnabled等所有非敏感配置。这是团队的“开发契约”,确保新人git clone && trae ide .后,开箱即用。.trae/models/只提交模板,不提交密钥:创建models/template-anthropic.json,内容为:{ "id": "anthropic-template", "provider": "anthropic", "apiKeySource": "env", "envVar": "ANTHROPIC_API_KEY_TEMPLATE" }新人克隆后,只需将
ANTHROPIC_API_KEY_TEMPLATE替换为自己的环境变量名(如ANTHROPIC_API_KEY_JOHN),再在config.json中将defaultModel改为"anthropic-template"即可。密钥永不入 Git。.trae/skills/提交manifest.json,不提交config.yaml:manifest.json定义 Skill 的能力边界,是团队共识;config.yaml是个人偏好,应加入.gitignore。这样,团队统一启用java-mavenSkill,但每个人可自行配置是否跳过测试。用
.gitattributes强制 LF 换行:.trae下所有 JSON/YAML 文件必须用 LF 换行,否则 Windows 用户的 CRLF 会导致jsonlint校验失败。在项目根目录.gitattributes中添加:.trae/**/* text eol=lf
4.3 CI/CD 集成:让.trae在流水线中稳定发力
在 Jenkins/GitLab CI 中运行trae work时,.trae是保证一致性关键。我的.gitlab-ci.yml片段:
stages: - analyze code-analysis: stage: analyze image: trae/ide:1.5.3 # 使用官方镜像,预装所有依赖 script: - trae work --task "analyze-code" --model "deepseek-coder-v2-0724" --output report.json artifacts: - report.json关键点:
镜像选择:必须用
trae/ide:<version>官方镜像,而非通用node:18。官方镜像预装了 Python、Java、Maven、Git 等skills依赖的二进制,且.trae目录结构已优化,避免 CI 中反复下载模型。模型指定:
--model参数强制指定模型 ID,绕过.trae/config.json的defaultModel。这是为了防止某次提交意外修改了config.json,导致流水线使用错误模型。无状态设计:CI 任务不写入
.trae。所有输出(如report.json)通过artifacts导出,.trae在任务结束后被销毁。这保证了每次运行都是纯净的,不受历史状态影响。
经验之谈:在 CI 中,我禁用所有需要用户交互的 Skills(如
codebuddy的 PR Review 功能),只启用纯分析类 Skills(如java-maven的依赖扫描)。因为 CI 环境无 GUI,交互式 Skills 会卡住进程。判断标准很简单:看skills/*/manifest.json中entryPoint指向的 JS 文件,是否包含vscode.window.showInformationMessage等 UI 调用——若有,则禁用。
5. 常见故障深度复盘:从“系统未知错误”到精准修复
最后,我们直面最棘手的问题——那些让你抓狂的“系统未知错误”。我整理了 5 个最高频、最隐蔽的故障,附上完整的复现步骤、根因分析和修复方案。每一个,都来自真实生产环境。
5.1 故障现象:新建任务时弹出“系统未知错误”,但重启 IDE 后正常
复现步骤:
- 在项目 A 中,用
trae ide .启动,正常工作。 - 切换到项目 B,执行
trae work --task "debug",任务执行完毕。 - 切回项目 A,点击 IDE 工具栏“新建任务”按钮,立即弹出错误。
根因分析:trae work命令在执行时,会临时写入.trae/state/下的work-session.lock文件(用于防止并发任务冲突)。当任务结束,它应自动删除该文件,但有时因进程异常退出(如 Ctrl+C 中断),lock文件残留。IDE 在“新建任务”时检测到该 lock 文件,误判为“有任务正在运行”,于是抛出通用错误。
修复方案:
# 进入项目 A 根目录 rm -f .trae/state/work-session.lock # 或更彻底(推荐) find .trae/state -name "*lock" -delete提示:该 lock 文件是空文件,大小为 0 字节。
ls -la .trae/state/中看到*.lock文件,基本可判定为此故障。
5.2 故障现象:trae ide可用,但trae solo .报“Model not found”
复现步骤:
- 在项目中配置好
models/claude-3-5-sonnet-20241022.json。 trae ide .正常,右下角显示 Claude 模型。- 执行
trae solo .,终端报错Model not found: claude-3-5-sonnet-20241022。
根因分析:trae solo模式完全忽略项目级.trae,它只读取用户主目录下的~/.trae/(全局配置)。而trae ide读取的是项目根目录的.trae/。两者是两套完全独立的配置体系。用户误以为配置了项目.trae,solo就能用,实则solo根本不看它。
修复方案:
- 方案一(推荐):在
~/.trae/models/下复制一份模型 JSON,并确保~/.trae/config.json中defaultModel与之匹配。 - 方案二:放弃
trae solo,改用trae work,它支持--model参数,可直接指定模型 ID,无需依赖任何.trae。
5.3 故障现象:codebuddy图标显示为灰色,点击无响应
复现步骤:
- 安装
codebuddySkill。 - IDE 启动后,工具栏
codebuddy图标为灰色(禁用状态)。 - 查看开发者控制台,无报错。
根因分析:codebuddy的manifest.json中requiredModels字段要求模型支持"tool_use"能力。但用户配置的模型 JSON 中,capabilities数组遗漏了该项。IDE 加载 Skill 时,检查capabilities失败,Skill 被标记为“不可用”,图标变灰,且不报错(静默失败)。
修复方案:
- 打开
.trae/skills/codebuddy@v1.2.0/manifest.json。 - 找到
requiredModels数组,记下第一个模型 ID(如"claude-3-5-sonnet-20241022")。 - 打开
.trae/models/claude-3-5-sonnet-20241022.json。 - 在
capabilities数组中,添加"tool_use":"capabilities": ["code", "reasoning", "tool_use"] - 保存,执行
Trae: Reload Models。
5.4 故障现象:ARM 架构 Mac(M1/M2/M3)上,trae ide启动后 CPU 占用 100%,风扇狂转
复现步骤:
- 在 M1 Mac 上安装
trae ide。 - 启动后,Activity Monitor 显示
trae进程 CPU 占用持续 90%+。
根因分析: Trae IDE 的 Electron 主进程在 ARM Mac 上,若.trae/config.json中telemetry.level设为"verbose",会触发一个 Rosetta 2 兼容性 bug,导致日志轮转线程无限循环。该问题在 Intel Mac 上不出现。
修复方案:
- 编辑
.trae/config.json。 - 将
telemetry.level从"verbose"改为"error"或"warn"。 - 重启 IDE。
补充:该问题已在 v1.5.4 修复,但如果你用的是 v1.5.3 或更早,此修复立竿见影。
5.5 故障现象:trae cn下载安装后,trae ide .报“Failed to connect to trae.cn”
复现步骤:
- 从
trae.cn下载最新版安装包。 - 安装后,打开项目,执行
trae ide .。 - IDE 右下角显示红色错误:“Failed to connect to trae.cn”。
根因分析:trae.cn是 Trae 的中国区服务域名,其证书由国内 CA 签发。部分企业网络或防火墙会拦截或替换该证书,导致 TLS 握手失败。IDE 默认启用严格证书校验,连接被拒。
修复方案:
- 创建
~/.trae/config.json(全局配置),添加:{ "disableCertValidation": true } - 重启 IDE。
警告:
disableCertValidation仅在受信内网环境使用。公网环境下开启此选项,存在中间人攻击风险。生产环境应联系 IT 部门,将trae.cn的根证书导入系统信任库。
我在实际使用中发现,最可靠的.trae管理方式,是把它当作项目源码的一部分来对待:写进.gitignore的只有auth/session.token和state/下的运行时文件,其余全部提交。这样,团队成员拉取代码,就等于拉取了一套完整的、可复现的 AI 开发环境。它不再是 IDE 的附属品,而是项目的技术栈声明——就像package.json声明 Node 依赖,.trae/config.json声明 AI 模型依赖。当你开始用这种视角看待.trae,那些曾经令人头疼的“系统未知错误”,就自然变成了