想让 Trae 在代码补全时自动识别并推荐你项目里自己写的工具函数——例如 formatDate、debounce、apiRequest——而不仅仅是依赖内置库或通用写法,其实比想象中更简单。核心在于让 AI 模型真正“读取”过这些函数的签名、参数类型和调用方式。具体实现只需三个步骤。

第一步:确保工具函数被 Trae 索引收录
Trae 并不会主动扫描项目中的所有文件,它只会索引你明确指定的路径。如果你的工具函数分散在 src/utils/、lib/helpers.ts 或 shared/functions.js 等目录,却没有添加到索引规则中,AI 就永远无法看到它们。
具体操作:首先,打开项目根目录下的 .trae/config.json 文件;其次,找到 "trackedFilePatterns" 字段,在原数组后追加你实际存放工具函数的路径模式,例如:"src/utils/**/*.{ts,js}", "lib/helpers.ts", "shared/**/*.js";最后,保存文件并执行 trae index build --force 强制重建索引——这一步不可省略,否则新增路径不会被识别。
【必须确认 .trae/index 目录拥有写入权限,否则索引过程会静默失败】
第二步:为工具函数补充标准类型定义与注释
Trae 依赖类型声明和 JSDoc 注释来推断函数的用途。如果只写 function formatDate(date) { ... } 这样的裸函数,AI 只能猜测参数是字符串还是 Date 对象,补全时很容易给出错误的类型。
方法一:TypeScript 用户可直接编写完整类型
在 src/utils/date.ts 中改写为:
/**
* 将日期对象格式化为 YYYY-MM-DD HH:mm:ss 字符串
* @param date - 有效日期实例,不接受字符串或null
* @param separator - 可选分隔符,默认为短横线
* @returns 格式化后的字符串
*/
export function formatDate(date: Date, separator: string = '-'): string {
return `${date.getFullYear()}${separator}${String(date.getMonth() + 1).padStart(2, '0')}...`;
}
方法二:JavaScript 用户补全 JSDoc + @type 注解
在 lib/helpers.js 中添加:
/**
* 防抖函数,延迟执行回调
* @type {function(this: any, fn: function(), delay: number): function()}
* @param {function()} fn - 要防抖的函数
* @param {number} delay - 延迟毫秒数
* @returns {function()} 包装后的防抖函数
*/
export function debounce(fn, delay) { ... }
第三步:在调用位置显式锚定上下文
即使工具函数已被索引,当你在代码中键入 const res = apiR... 时,Trae 仍可能优先推荐 apiResponse 或 apiRequest(来自 node_modules),因为它不确定你本地是否定义了同名函数。
操作步骤:第一步,在当前文件顶部添加锚点注释:
// @see src/utils/api.ts#apiRequest —— 本项目统一HTTP请求封装
第二步,在需要补全的位置输入前缀,例如 apiR,然后稍作停顿(约半秒);
第三步,当补全弹窗出现时,若第一个选项不是你期望的 apiRequest,立即按下 Ctrl+K 唤出指令面板,输入:“从 src/utils/api.ts 中补全以 apiR 开头的导出函数”;
第四步,按回车执行——AI 将忽略全局匹配结果,严格限定在指定文件内检索并补全。
