别再每次对话都从零解释项目:用 TraeCode 的三层上下文机制让 AI 懂你的代码

很多人用 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 开口就"知道"你的约定。省下来的时间虽然每次只有几十秒,但一天累积下来相当可观。