Trae Builder Mode:让 AI 自主完成开发任务
深入理解 Trae 的 Builder 模式,掌握自主 Agent 编程的工作流
Builder Mode 是什么:从对话到自主执行
前面我们聊了 Trae 的安装配置和 Chat Mode。Chat Mode 本质还是”你问我答”——你提需求,AI 给代码片段,你自己复制粘贴。
Builder Mode 完全不同。它是一个自主 Agent,你给它一个任务,它自己分析、规划、创建文件、写代码、跑命令。你要做的就是在关键节点点个”确认”。
打个比方:
- Chat Mode 像请了一个顾问,他告诉你方案,活还是你干
- Builder Mode 像请了一个全栈工程师,你说”帮我搭个 API”,他直接开干
快捷键:
macOS: Cmd + B
Windows: Ctrl + B
进入后你会看到一个输入框,和 Chat 长得差不多,但你在这里输入的不是”问题”,而是”任务”。
Builder vs Chat Mode:本质区别
| 维度 | Chat Mode | Builder Mode |
|---|---|---|
| 交互方式 | 问答对话 | 下达任务指令 |
| AI 角色 | 顾问/助手 | 自主执行的 Agent |
| 文件操作 | 只给代码片段,你手动粘贴 | 直接创建、修改、删除文件 |
| 终端命令 | 只给命令建议 | 直接在终端执行命令 |
| 上下文范围 | 当前文件或选中代码 | 整个项目目录 |
| 任务粒度 | 单个函数、单个问题 | 完整功能、多文件协作 |
| 执行流程 | 单轮或多轮对话 | 分析→规划→执行→迭代 |
| 适合场景 | 问问题、改 bug、解释代码 | 搭项目、加功能、大重构 |
一句话总结:Chat 是对话工具,Builder 是执行引擎。
Builder 的工作流程
你在 Builder 里输入任务后,它不会立刻写代码,而是走一套完整流程:
1. 分析需求
Builder 先扫描项目结构、读取关键文件、理解技术栈:
你的输入: "给项目添加用户认证功能"
Builder 的分析:
├── 检测到项目使用 Express + TypeScript
├── 发现已有 /src/routes/ 目录结构
├── 发现 package.json 中已有 mongoose 依赖
└── 判断应该使用 JWT + bcrypt 方案
2. 拆分子任务
任务拆分:
1. 安装依赖 (jsonwebtoken, bcryptjs)
2. 创建 User Model
3. 创建 auth 中间件
4. 创建注册/登录路由
5. 更新主路由文件
6. 添加环境变量配置
3. 规划执行顺序
把子任务排成有序计划,考虑依赖关系。比如”创建路由”必须在”创建 Model”之后。
4. 创建文件 → 编写代码
开始动手,先建目录和文件骨架,再逐个填充实现。你能在编辑器里实时看到文件被创建和修改。
5. 迭代优化
写完后 Builder 会自检,发现类型错误、导入缺失等问题会自动修复。
如何下达有效的 Builder 指令
Builder 的输出质量,很大程度取决于你的输入质量:
❌ 差: "做一个 API"
✅ 好: "用 Express + TypeScript 创建一个图书管理 REST API,
包含 CRUD 操作,使用 SQLite 数据库,端口 3000,添加错误处理"
❌ 差: "加个登录功能"
✅ 好: "给现有 Express 项目添加 JWT 认证,包含注册和登录接口,
密码用 bcrypt 加密,token 过期时间 24 小时"
❌ 差: "写个前端页面"
✅ 好: "用 React + Tailwind CSS 创建登录页面,包含邮箱密码输入框、
记住我复选框、登录按钮,添加表单验证,支持响应式"
好指令的要素
| 要素 | 说明 | 示例 |
|---|---|---|
| 技术栈 | 明确使用什么框架/库 | ”用 Express + TypeScript” |
| 功能范围 | 具体要实现什么 | ”包含 CRUD 操作” |
| 数据存储 | 用什么数据库 | ”使用 SQLite” |
| 约束条件 | 有什么限制或要求 | ”端口 3000” |
| 质量要求 | 需要什么额外处理 | ”添加错误处理和输入验证” |
文件操作和终端命令
Builder 能直接操作你的项目——创建、修改、删除、重命名、移动文件,每次操作都会展示 diff 视图,你可以选择接受或拒绝。
它也能直接在终端执行命令(npm install、mkdir、npm run build 等),但每条命令执行前都会弹出确认框,你需要手动点击”允许”。
实战:从零搭建 Express API
让 Builder 从零搭建一个待办事项 API。
输入指令
用 Express + TypeScript 从零创建一个 Todo REST API:
- CRUD 接口:GET /todos, POST /todos, PUT /todos/:id, DELETE /todos/:id
- 使用内存数组存储(不需要数据库)
- 添加输入验证和错误处理中间件
- 包含 npm scripts: dev, build, start
Builder 自动生成的项目结构
todo-api/
├── package.json
├── tsconfig.json
├── src/
│ ├── index.ts # 入口文件
│ ├── routes/todos.ts # Todo 路由
│ ├── middleware/
│ │ ├── errorHandler.ts # 错误处理
│ │ └── validate.ts # 输入验证
│ ├── types/todo.ts # 类型定义
│ └── data/store.ts # 内存数据存储
核心代码(Builder 自动生成)
// src/routes/todos.ts —— 路由层(Builder 自动生成)
import { Router, Request, Response } from 'express';
import { todoStore } from '../data/store';
import { validate } from '../middleware/validate';
const router = Router();
router.get('/', (_req: Request, res: Response) => {
res.json({ data: todoStore.getAll() });
});
router.post('/', validate('createTodo'), (req: Request, res: Response) => {
const todo = todoStore.create(req.body.title);
res.status(201).json({ data: todo });
});
router.put('/:id', validate('updateTodo'), (req: Request, res: Response) => {
const todo = todoStore.update(req.params.id, req.body);
if (!todo) { res.status(404).json({ error: '待办事项不存在' }); return; }
res.json({ data: todo });
});
router.delete('/:id', (req: Request, res: Response) => {
if (!todoStore.delete(req.params.id)) {
res.status(404).json({ error: '待办事项不存在' }); return;
}
res.status(204).send();
});
export default router;
// src/index.ts —— 入口文件
import express from 'express';
import todoRoutes from './routes/todos';
import { errorHandler } from './middleware/errorHandler';
const app = express();
app.use(express.json());
app.use('/todos', todoRoutes);
app.use(errorHandler);
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
Builder 还自动生成了 store.ts(内存 CRUD)、validate.ts(输入校验)、errorHandler.ts(统一错误处理)等文件,并执行了依赖安装和项目初始化命令。整个过程 2-3 分钟,你只需要点几次”允许”。
局限性与何时手动介入
Builder 擅长的 vs 容易翻车的
| 擅长 | 容易翻车 |
|---|---|
| 从零搭建项目,结构清晰 | 复杂业务逻辑,可能理解偏差 |
| 标准功能(CRUD、认证) | 性能优化,代码能跑但不一定高效 |
| 安装配置依赖 | 大型项目重构,上下文太多易遗漏 |
| 创建样板代码 | 第三方 API 集成,可能用过时版本 |
| 简单 bug 修复 | 数据库迁移,涉及数据安全 |
什么时候该手动介入
- Builder 连续两次改同一个文件没解决问题——它可能陷入循环了
- 涉及敏感操作(删除数据、改数据库 schema)——安全第一
- 生成的代码你完全看不懂——先理解再接受
- 项目有特殊架构约定——配合 Trae Rules 效果更好
安全性确认机制
Builder 能直接操作文件和执行命令,听起来有点吓人。但 Trae 设计了多层安全机制。
文件修改确认
每次修改文件都会展示 diff 视图:
{
"scripts": {
- "start": "node index.js"
+ "start": "node dist/index.js",
+ "dev": "nodemon src/index.ts",
+ "build": "tsc"
}
}
你可以 Accept(接受)、Reject(拒绝)或 Accept All(全部接受,谨慎使用)。
终端命令确认
每条命令执行前都会弹出确认框,你可以选择”允许”、“拒绝”或”始终允许此类命令”。
安全等级设置
{
"trae.builder.autoApprove": {
"fileCreate": true,
"fileModify": false,
"fileDelete": false,
"terminalCommand": false
}
}
| 设置项 | 默认值 | 建议 |
|---|---|---|
| fileCreate | true | 创建文件风险低,可自动批准 |
| fileModify | false | 修改文件建议手动确认 |
| fileDelete | false | 删除文件一定要手动确认 |
| terminalCommand | false | 终端命令一定要手动确认 |
撤销机制
万一接受了错误改动,别慌:
Cmd + Z/Ctrl + Z—— 撤销单个文件改动- Builder 面板的 “Undo” 按钮 —— 撤销整个步骤
- Git —— 最终安全网,随时
git checkout回退
养成好习惯:让 Builder 执行大任务前,先 git commit 当前工作。
小结
Builder Mode 把 AI 从”给建议”升级到了”干实事”。用好它的关键:指令要具体,理解工作流程,善用安全确认,知道何时手动介入。
下一篇我们聊 Trae 的 SOLO Mode,看看它和 Builder 有什么不同。
Builder Mode 的本质不是替代开发者,而是把重复性的工程工作交给 AI,让你把精力留给真正需要创造力的部分。好的开发者 + 好的 Agent = 10 倍生产力。
相关文章
评论
加载中...
评论
加载中...