A-Evolve
通过评测反馈自动迭代 Agent 工作区中的提示词、技能与记忆。
这个 Agent 能做什么,适合哪些场景?
A-Evolve 是一个用于演化现有 Agent 的 Python 基础设施,而不是单独的终端用户 Agent。开发者将 Agent 工作区和评测适配器交给 `ae.Evolver`,系统以 Solve、Observe、Evolve、Gate、Reload 五个阶段运行迭代。它通过文件系统工作区管理可演化状态,包括 `manifest.yaml`、提示词、`SKILL.md` 技能、工具配置和 JSONL 记忆。演化引擎根据轨迹与评测反馈修改这些文件,并用保留任务验证候选变更;发生回归时可通过 Git 回滚。项目提供 SWE-bench Verified、MCP-Atlas、Terminal-Bench、SkillsBench 和 CL-Bench 等适配器示例,也允许接入自定义 Agent、评测和演化算法。
调用 Evolver.run(cycles=10) 后,A-Evolve 让 Agent 对一批任务执行 solve(),收集 Trajectory 和评测反馈,并把观察结果写入结构化日志。EvolutionEngine.step() 可分析工作区、观察记录、历史和试验结果,再修改提示词、技能或记忆文件。Gate 阶段使用保留任务验证修改;回归的修改通过 Git 撤销,接受的版本以 evo-1、evo-2 等标签保存。自定义 Agent 只需继承 BaseAgent 并实现 solve(self, task: Task) -> Trajectory;自定义评测则实现 BenchmarkAdapter.get_tasks() 与 .evaluate()。
- 需要在 SWE-bench Verified 上持续改进代码修复 Agent 的研究团队,可从内置 `swe-verified` 种子工作区和适配器开始。
- 构建 MCP 工具调用 Agent 的开发者,可使用 `mcp-atlas` 适配器,并让系统根据评测反馈增加或调整技能文件。
- 研究新的自我改进策略的算法作者,可实现 `EvolutionEngine.step()`,复用试验、历史和 Git 回滚组件。
- 已有自定义 Agent、但希望用统一评测闭环迭代提示词、技能和记忆的团队,可将其封装为 `BaseAgent`。
- 需要在终端操作或技能发现任务上比较演化策略的评测人员,可使用 Terminal-Bench 或 SkillsBench 的内置示例。
这个 Agent 有哪些优点和局限?
- 把可演化状态限定为普通工作区文件,使提示词、技能和记忆可被同一套演化流程处理,而无需了解 Agent 内部实现。
- 支持通过 `BaseAgent.solve()`、`BenchmarkAdapter` 和 `EvolutionEngine.step()` 分别替换 Agent、评测和算法。
- Gate 阶段使用保留任务验证候选修改,并以 Git 回滚和 `evo-*` 标签保留审计轨迹。
- 提供多类内置评测适配器和种子工作区,覆盖代码修复、MCP 工具调用、终端操作、技能发现及持续学习评测。
- 效果依赖具体基准、基础模型、演化算法和任务设置;README 所列成绩不能证明自定义 Agent 会获得同等提升。
- 工作区文件会被自动修改,且运行依赖 Git 式版本控制;接入前需要明确哪些提示词、技能和记忆文件可安全演化。
- 虽然列出 Anthropic、OpenAI 和 AWS Bedrock Provider,README 未给出凭据配置、模型选择或成本控制的具体步骤。
- Terminal-Bench 的任务域明确涉及 Docker,采用该适配器时可能需要相应容器运行环境。
如何安装或部署这个 Agent?
运行环境为 Python 3.11+。安装核心库:pip install a-evolve;若使用 Claude 支持:pip install a-evolve[anthropic];若使用 MCP-Atlas:pip install a-evolve[mcp];若使用 SWE-bench:pip install a-evolve[swe];全部可选组件:pip install a-evolve[all]。从源码开发可运行:git clone https://github.com/A-EVO-Lab/a-evolve.git && cd a-evolve,然后执行 pip install -e ".[all,dev]"。README 列出 Anthropic、OpenAI 和 AWS Bedrock 作为 LLM Provider 示例,但未说明凭据的具体配置方式;使用相应 Provider 前仍需自行完成其认证配置。
如何使用这个 Agent?
最小调用:import agent_evolve as ae;然后创建 evolver = ae.Evolver(agent="swe-verified", benchmark="swe-verified"),执行 results = evolver.run(cycles=10),并读取 results.final_score 和 results.converged。要接入自己的 Agent,继承 BaseAgent、实现 solve() 返回 Trajectory,再传入 ae.Evolver(agent=MyAgent("./my_workspace"), benchmark="mcp-atlas")。工作区应使用文档给出的文件系统契约,并由 Agent 在每轮后重新加载;系统会对接受的修改进行 Git 标记。