很多人用 TraeCode 写代码时,每次对话的第一句话都是在解释背景——“这个项目用的是 Vue3 + TypeScript”、“API 返回格式是 { code, data, message }”、“代码风格跟 ESLint 的 airbnb 规则走”。说一遍不够,换个对话窗口又得重来。其实 TraeCode 有一套完整的上下文机制,分三层,从按需引用到长期记忆,配好之后 AI 基本不需要你重复解释。
第一层:用 # 引用,给 AI 精准的即时上下文
侧边对话输入框里打一个 #,会弹出上下文类型列表。这不是简单的文件选择器,它按粒度分了多种类型:
#Code— 引用某个函数或类,适合让 AI 只看局部逻辑#File— 引用完整文件,适合让 AI 理解整个模块#Folder— 引用整个目录,适合涉及多文件的改动#Workspace— 让 AI 在整个工作区自动搜索相关内容,接手新项目时特别有用#Problems— 把"问题"页签里的诊断信息喂给 AI,让它直接帮你修#Web— 联网搜索或读取网页内容,查文档时不用切到浏览器#Doc— 引用你自己上传的文档集(支持 URL 抓取和本地 .md / .txt 文件)
一个实际场景:改一个函数的行为,先 #Code 选中那个函数,再 #File 选中调用它的上层模块,AI 就能同时看到改动点和影响面,不用自己复制粘贴。
注意 #Folder 和 #Workspace 依赖代码索引。如果索引还没构建完,召回会不完整,输入框的 References 位置会有提示。新项目刚打开时给它一点时间构建索引。
第二层:用规则(Rules),把项目约定变成 AI 的默认行为
引用是每次对话手动加的,适合临时需要。但有些约定是每次都要遵守的——代码风格、技术栈、命名规范、甚至"所有注释用中文写"——这些应该配成规则,一次设置长期生效。
TraeCode 的规则分两类:
- 全局规则:在所有项目生效,存放在
%userprofile%/.trae-cn/user_rules(Windows)或~/.trae-cn/user_rules(macOS/Linux)。适合放个人偏好,比如"优先用函数式写法"“回复用中文”。 - 项目规则:只在当前项目生效,存放在项目根目录的
.trae/rules/下。适合放项目级约束,比如"这个项目用 Vue3 + Composition API"“API 响应统一包在{ code: number, data: T, message: string }里”。
创建方式:进设置中心 → 规则 → 新建。也可以直接编辑对应目录下的文件。
一个小技巧:项目规则可以跟 #Rule 配合——在对话里用 #Rule 引用项目规则,确保 AI 这次对话严格按规则来。适合在规则刚更新后、或者 AI 偶尔"忘记"规则时手动触发。
第三层:用记忆(Memories),让 AI 积累对你的了解
规则是你主动写的约束,记忆是 AI 自己积累的认知。TraeCode 的记忆功能默认关闭,需要手动开启:设置 → 规则与记忆 → 记忆 → 打开开关。
记忆也分两类:
- 全局记忆:存放在
%userprofile%/.trae-cn/memory/user_profile.md,跨项目生效。AI 会记住你的技术栈偏好、沟通风格等。 - 项目记忆:存放在
~/.trae-cn/memory/projects/{project_path}/project_memory.md,只在当前项目生效。AI 会记住项目的架构约定、踩过的坑。
记忆可以自动生成(AI 识别到有价值的偏好会主动记录),也可以手动指定——直接说"记住这个项目用 pnpm 不用 npm",AI 就会写进记忆文件。记忆文件是 Markdown,你也可以直接编辑。
三层怎么配合
一个简单的分工:
| 层级 | 什么时候用 | 谁来维护 |
|---|---|---|
| # 引用 | 每次对话按需加 | 手动 |
| 规则 | 每次都要遵守的约定 | 手动配置 |
| 记忆 | AI 自己积累的认知 | AI 自动 + 手动补充 |
我的习惯是:项目初始化时先把技术栈和代码风格写进项目规则,全局规则放一条"回复用中文"就够了。用一段时间后记忆里会自然积累项目特定的信息,比如"这个项目的 xxx 模块有循环引用问题"。日常对话用 #Code 和 #File 给即时上下文,查文档用 #Web 或 #Doc。
配好之后最明显的变化是:新开一个对话窗口,不用再从头解释项目背景,AI 开口就"知道"你的约定。省下来的时间虽然每次只有几十秒,但一天累积下来相当可观。