TRAE 在 Agent 代码编辑的实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. TRAE 在代码编辑中的 实践 演讲人:冯绪 TRAE / 架构师
2.
3. 01 目录 02 03 04 Agent 在 AI 编程助手中的价值 01 TRAE 编程助手的发展阶段 02 从代码补全到 Agentic Edit 的探索 03 总结和展望
4. Agent 在 AI 编程助手中的价值
5. Agent 在 AI 编程助手中的价值 AI 编程助手正经历从 辅助工具 到 自主智能体 的深刻变革 辅助工具 智能辅助 Agent 自主智能体 核心价值 自主定位文件与代码改动 通过对项目结构的理解和语义分析,自主识别相关代码文件和修改位置 关键能力 Q 代码编辑能力 定位文件的编辑位置,准确完成文件的修改 自动规划与执行 项目感知与上下文理解 将复杂任务分解为可执行子任务,制定详细执行计划并自主执行 理解项目结构、文件依赖和业务逻辑,超越当前文件的局部视角 变更矫正与迭代优化 代码验证与测试生成 通过测试和分析自主识别问题,生成新修改方案进行迭代 自动生成测试用例,验证修改的正确性,减少人工测试工作
6. Agent 在 AI 编程助手中的价值 AI 编程助手正经历从 辅助工具 到 自主智能体 的深刻变革 辅助工具 智能辅助 Agent 自主智能体 核心价值 自主定位文件与代码改动 通过对项目结构的理解和语义分析,自主识别相关代码文件和修改位置 关键能力 Q 代码编辑能力 定位文件的编辑位置,准确完成文件的修改 自动规划与执行 项目感知与上下文理解 将复杂任务分解为可执行子任务,制定详细执行计划并自主执行 理解项目结构、文件依赖和业务逻辑,超越当前文件的局部视角 变更矫正与迭代优化 代码验证与测试生成 通过测试和分析自主识别问题,生成新修改方案进行迭代 自动生成测试用例,验证修改的正确性,减少人工测试工作
7. 准确的文件定位和代码编辑能力 存在的挑战 文件定位能力有限 跨文件修改困难 传统 AI 助手需要用户手动指定文件或代码块,无法自主识别相关代码文 件 和修改位置 处理跨文件、跨模块的复杂修改时,传统 AI 助手自动化能力有限,需多 次干预
8. TRAE 编程助手的发展阶段
9. TRAE 编程助手的发展阶段 补全 & Chat Chat Apply 编辑能力:代码续写,Chat 提 供代码片段,需要手动插入 编辑能力:根据代码块编辑文 件,具备一定的文件定位能力 用户体验:基础交互,效率提 升有限 用户体验:经用户选中的代码块 自动应用,一次性修改 Builder & Cue 编辑能力:Cue 提供即时的文 件改写、删除、续写等体验; Builder 自动规划和查找要变更 文件,自动完成变更和迭代 用户体验:自动化的开发体验, 大幅提升开发效率
10. 补全 & Chat :基础交互的建立 代码补全 用户编辑代码 AI 给出续写建议 Chat 用户提问 AI 生成代码 手动复制粘贴 集成到项目
11. Chat Apply :自动化编辑 AI 生成修改代码 AI 识别 目标文件 用户确认采用 AI 编辑目标文件
12. Builder & Cue : 智能化编辑 • Cue • Builder 多行编辑、智能改写、光标预测 项目上下文感知、自主规划、多文件编辑
13. 编辑能力的逐步增强 补全 & Chat 代码续写 简单的替换 Chat Apply 根据目标代码自动改 写原文件 具备一定的文件定位 能力 Builder & Cue Agentic Edit 智能的、自主的文件 编辑能力
14. 从代码补全到 Agentic Edit
15. 代码补全
16. 代码补全 • 让模型续写编辑器中的代码,是模型 最擅长的能力 • 通过 FIM、最近打开文件等优化手段 提升效果 • 局限性:只能编辑光标所在位置的代 码
17. Apply 让 Chat 更有用武之地
18. Apply • Chat 模型输出的代码块的特点 • 只输出关键的代码,不输出所有的内容 • 其他无变更的代码使用缩略格式表示
19. Apply • 为什么要求 Chat 模型输出这样的格式呢 • 节省 Token — 上下文窗口不足以让模型输出全文 • 为什么不输出 Diff 格式呢 • Chat 模型并不擅长输出 Diff 格式 — 准确性 不尽如人意 • Diff 格式对于用户的阅读体验较差
20. Apply • Apply 要解决的问题 — 根据模型输出的代码正确地编辑原文件 原始文件 Chat 模型输出(Plan) 结果 … # …existing code… … def calc_sum(a, b) : return a + b def calculate_sum(num1, num2) : return num1 + num2 def calculate_sum(num1, num2) : return num1 + num2 def calc_min(a, b) : … + # …existing code… 挑战:难以通过纯规则匹配的手段完成代码的合并 => def calc_min(a, b) : …
21. Apply • Apply 方案 — Apply 模型 • 基于上下文和语义的改写,正好发挥大模型的能力 : 训练专注于代码编辑任务的 Apply 模型 原文件内容 + 带有缩略的代码块 (Plan) => Apply 模型 => 编辑后的文件内容
22. Apply • Apply 方案 — Apply 模型的选择和训练 • 对模型的要求 • 时延低 • 在代码编辑任务上能良好地遵循 Plan • 长上下文支持 • 模型的训练 • 针对不同 Chat 模型的输出偏好,生成不同缩略格式的训练数据 • 针对不同场景(加注释、import 依赖、删除代码、重命名等)构造不同数据 • 针对常用的编程语言构造数据
23. Apply • Apply 案例演示 — 给文件添加注释
24. Apply • Apply 案例演示 — 给文件添加注释
25. Apply • Apply 方案 — 局限性 • 额外的资源开销:需要使用 Apply 模型来进行编辑任务 • 某些场景下效率不高:即时只修改一行代码,也需要重新生成整个文件 • 长文件限制:方案特性注定有一半的 token 用于输入,无法处理太长的文件,准确性上也会有所下降
26. Cue — 补全不再只是续写
27. Cue • 能力扩展到光标之外,覆盖整个工作空间 • 多点编辑:支持代码的删除和替换,多行同时变更 • 光标预测:预测下一次光标移动的位置,快速跳转 • 跨文件编辑:智能识别需要编辑的文件
28. Cue • Cue 的挑战 • 理解用户意图 — 确定用户想要完成什么任务 • 确定更改位置 — 决定在哪里进行更改 • 确定如何编辑 — 准确高效地执行更改 • Cue 的核心技术 • 通过用户编辑历史让模型推测用户的意图 • 基于 RAG 技术的上下文感知 — 仓库级别的编辑能力
29. Agentic Edit — 自主的文件编辑
30. Agentic Edit • 随着模型能力的增强, Builder 产品形态出现 • Builder 可以自主地搜索整个仓库,自主决定要编辑的文件 • 可多次编辑相同文件或不同文件,过程中保持一致性 • 增加了多种编辑能力
31. Agentic Edit • Builder 具备更多的代码编辑能力 • write_to_file:新建文件或者完全覆盖旧文件,多用于模型新建文件的场景 • delete_file:删除掉项目中的某个文件,需要用户确认 • update_file :编辑项目中的文件
32. Agentic Edit • 文件编辑方案的迭代:Apply -> Search/Replace Apply 方案在 Builder 模式下有一些局限性 • 一次编辑分为两个阶段(Chat 模型输出 & Apply 模型编辑),有额外的开销,两个阶段误差叠加,更容易编辑错误 • 跨行编辑效率低,长文件处理难度较高,准确性也较低
33. Agentic Edit • Search / Replace 方案 模型能力不断地提升,代码编辑能力被大模型内化 • 更强的指令遵循能力 • 更强的格式化输出能力 • 更强的工具调用能力 Search / Replace 方案被越来越多地使用在文件编辑功能上
34. Agentic Edit • Search / Replace 方案 • 提供 update_file 工具供模型调用,由模型指定文件路径、 old_str 和 new_str • 在原文件中匹配 old_str,找到编辑位置,并替换成 new_str 原始文件 old_str 结果 … def calc_sum(a, b) : return a + b … def calc_sum(a, b) : return a + b def calc_min(a, b) : … + new_str def calculate_sum(num1, num2) : return num1 + num2 => def calculate_sum(num1, num2) : return num1 + num2 def calc_min(a, b) : …
35. Agentic Edit • Search / Replace 方案 — 优势 • 无需再次调用编辑模型:避免了两个阶段调用带来的误差 • 不受上下文窗口限制:适用于任意长度的文件的编辑
36. Agentic Edit • Search / Replace 方案 — 劣势 • 模型输出要求高:要求模型能够严格输出符合要求的内容和格式 • • 大量变更时输出的 token 会翻倍,拆分成多次编辑效率低 • • 特别是在需要转义的场景中,特别容易出错 使用数组的方式来提升效率,但数组的格式会进一步提高对模型输出的格式要求 工程复杂度高:为了应对模型输出的不确定性,需要做模糊匹配以及出错时的修复操作
37. Agentic Edit • Apply 方案和 Search/Replace 方案应用于不同的场景 • Chat 场景下,使用 Apply 方案 — 用户体验更好 • 长文件编辑场景和 Builder 模式下,使用 Search / Replace — 准确性更高
38. Builder 的 Show Case 使用 Builder 模式完 成一个太阳系行星 示页面 • 根据用户命令 • 完成需求开发 • 过程中感知编译 错误自行修正
39. 总结和展望
40. 总结 • TRAE 编程助手的发展阶段和产品形态 • 补全 & Chat • Chat Apply • Builder & Cue • TRAE 编程助手的代码编辑能力的演进 • Apply — 通过训练 Apply 模型,完成代码编辑任务;但仍存在长文件处理不佳的问题 • Cue — 更低的延迟,更强的补全能力,RAG 的加持,提供多点编辑和光标预测能力 • Agentic Edit — 充分利用模型的编辑能力,Builder 模式下提供更准确且不受文件长度限制的编辑能力
41. 未来展望 编辑准确性和效率的进一步 提升 协作与集体智能 认知增强与自主性提升 • 探索单文件不同行和多文件的并 行编辑,提升代码编辑的效率 • Multi-Agent 协作框架 • 模型思考与规划能力的进一步激 发 • 通过自我纠正机制,提升编辑的 准确性 • 角色分化 & 领域专业化 • 代码生成质量自我反思 • 生态开放 & 自定义Agent分享 • 更有效的会话历史管理能力,在 有限的模型上下文窗口内达到最 佳效果
42.
43. THANKS 探索 AI 应用边界 Explore the limits of AI applications

Home - Wiki
Copyright © 2011-2025 iteam. Current version is 2.146.0. UTC+08:00, 2025-10-22 07:39
浙ICP备14020137号-1 $Map of visitor$