TRAE Agent 在 SWE-bench Verified 上得分 75.2%,并已开源
资料来源:火山引擎-开发者社区
在近期的 SWE-bench Verified 排行榜上,TRAE Agent 拿到了 75.2% 的求解率分数 ,我们也非常激动地将其作为开源项目贡献给社区。
什么是 TRAE Agent?
TRAE Agent 是一个基于大语言模型(LLM)的智能助手,专为软件工程任务设计。你可以把它想象成你团队中的一位资深工程师,能够自主完成以下任务:
- Lakeview 模式可对 Agent 执行的步骤进行简明总结
- 通过系统性复现与分析调试复杂问题
- 制定详细计划并实现健壮的修复方案
- 理解任意代码库并掌握现有代码模式
- 编写符合最佳实践的高质量代码
TRAE Agent 如何在
SWE-bench Verified 上取得第一?
补丁生成
我们采用单 Agent 模式来生成补丁。为此,我们为 TRAE Agent 提供以下工具:
- str_replace_based_edit_tool:允许 Agent 查看文件与目录,并对现有文件进行创建和编辑
- bash:提供一个持久的命令执行接口,用于运行系统命令、捕获输出与错误
- sequential_thinking:具备结构化问题分析能力,可进行多轮推理、修正、生成并验证假设
- ckg_tools:构建代码知识图谱,使 Agent 可以在仓库中查找类与函数
- task_done:用于标记任务完成并输出最终结果与总结
我们引入了多个模型供 Agent 使用,包括 Claude-4-Sonnet、Claude-4-Opus、Claude-3.7-Sonnet 和 Gemini-2.5-Pro。
补丁选择
在由不同 LLM 生成的多个候选补丁中,我们探索了两种补丁选择策略:
- LLM-as-a-Selector: 使用 LLM 对回归测试通过的补丁进行评分与选择
- Selector Agent: 增强方案,结合语法投票机制与多 Agent 验证提升选择准确性
Selector Agent 概览图
Selector Agent 是一个更强健、可扩展的补丁选择机制,分为三个阶段:
- 多模型生成候选补丁
- 回归测试进行初筛
- 使用语法等价聚类与多 Agent 验证做最终选择
通过在语法等价的补丁中进行聚类,并结合上下文推理与辅助工具验证,Selector Agent 显著提升了准确率。该机制不仅利用模型共识,还引入了对过拟合和伪一致性的防护,从而提高在更大候选空间中的补丁选择能力。
我们力求在多样性与可靠性之间取得平衡,推动 SWE-bench Verified 自动修复性能的上限。更多选择机制细节可见我们之前的文章:一文讲解,Trae 如何在 SWE-bench Verified 中达到70.6%的求解率
最终成果
我们的方法在 SWE-bench Verified 基准集上达到了 75.2% 的总成功率,成功解决了 500 个真实软件工程任务中的 376 个。
开源项目包括哪些内容?
多种 LLM 支持
LLM Client 系统为多个 AI 服务提供统一接口,已支持 OpenAI、Anthropic、Azure,并便于扩展至更多提供商。
LLMClient (llm_client.py):
- “工厂模式”,支持不同 LLM 提供商
- 统一聊天补全接口
- 内置轨迹(trajectory)记录功能
丰富的工具系统
tools 模块为 Agent 与环境交互提供完整能力。其基础类 base.py 包括:
- Tool: 所有工具的抽象类,包括工具名称、描述、参数和执行函数。
- ToolExecutor: 负责工具的执行,支持并行或串行执行。
- ToolCall 和 ToolResult: 用于描述工具调用和执行结果的结构体。
基于这些抽象,我们提供了四种现成工具:
- 文件编辑工具 (edit_tool.py): TextEditorTool (内部名称 str_replace_based_edit_tool) 提供了包括文件查看、创建、替换和插入字符串等文件操作。
- Bash 工具 (bash_tool.py): BashTool 支持持久的 bash 会话、超时保护、输出捕获、会话管理。
- 结构化思维工具 (sequential_thinking_tool.py): SequentialThinkingTool 支持多轮思考、修正、分支逻辑和假设验证。
- 任务完成工具 (task_done_tool.py): 一个向 Agent 发送任务完成信号的简单但关键的工具。
全面可观测性
轨迹记录系统详尽记录 Agent 执行的每一步操作,包括与 LLM 的交互、步骤元数据与错误信息。
我们还提供了实时终端输出( cli_console.py ),默认启用 lakeview 模式,会异步调用另一 LLM 对步骤进行简要总结,以增强用户体验。
构建自定义 Agent
不论是直接使用 TRAE Agent,还是构建你自己的专业化 AI 助手,模块化架构让这一切变得非常简单:
# 自定义 Agent 创建示例 class MyAgent(Agent): def get_system_prompt(self) -> str: return "Your specialized agent prompt"
加入我们
立即体验:
git clone <repository-url>
cd TRAE-agent
uv sync
cp TRAE-config.json TRAE-config-local.json
# 在 TRAE-config-local.json 中指定你的模型与 API Key
TRAE run "Your first software engineering task" --working-dir='PATH TO WORKING DIR' --config-file TRAE-config-local.json
我们正在寻找:
- 愿意测试并提供反馈的早期使用者
- 愿意扩展工具生态的贡献者
- 想基于平台构建创新助手的 Agent 开发者
- 愿意分享使用案例与改进建议的社区成员
快速入口
仓库地址:
github.com/bytedance/TRAE-agent
文档说明:
https://github.com/bytedance/TRAE-agent/blob/main/README.md
问题讨论:
https://github.com/bytedance/TRAE-agent/issues
TRAE Agent 遵循 MIT 开源协议开发,致力于回馈软件工程和人工智能社区 ❤️