用 AgentScope 两阶段多智能体架构,代码修复率做到 63.4%
【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope
AgentScope 2.0 是一个生产级多智能体开发框架,解决的是"单个智能体难以独立修复跨模块代码"的问题:它把修复拆成分工、执行、验证、投票的协作流程,在 SWE-Bench 基准上验证了两阶段方案修复率 63.4%,比单智能体基线高 21 个百分点。
先看结果:单智能体 vs AgentScope 多智能体
| 指标 | 优化前(单智能体) | 优化后(两阶段多智能体) | 变化 |
|---|---|---|---|
| SWE-Bench 修复率 | 42.1% | 63.4% | +21.3 个百分点 |
| 平均修复耗时 | 8.7 分钟 | 5.2 分钟 | 缩短约 40% |
| 回归问题率 | 15.3% | 6.8% | 降低约 56% |
除了解决率,还有一个常被忽略的收益:候选补丁的评估不再依赖 LLM 直接"当裁判",而是用一个微调奖励模型打分,评估方差比 LLM 直接评判降低约 67%,意味着同样一组候选补丁,多次评估的结论更稳定。
拆解核心方案:修复率是怎么攒出来的
1. 执行-验证闭环:验证者看"实际状态"而不是"口头汇报"
框架在 src/agentscope/pipeline/ 提供了 GoalPipeline,这是整个分工协作的基本单元:
- 执行者(Executor):用工作区里的文件工具干活,完成后输出结构化的成果报告——文件路径、入口、运行方式。
- 验证者(Verifier):就是另一个普通 Agent,用同一套工具读文件、跑命令,给出三态裁决:
pass/fail/impossible。 - 循环:验证不通过时,失败原因(要求指明具体文件路径和行号)原样回传给执行者重试,默认最多 10 轮(
max_iters=10)。
关键设计在于两个 Agent 共享同一个LocalWorkspace——验证者检查的是磁盘上真实写出的代码,而不是执行者声称写了什么。这直接消除了多智能体协作最常见的"口头确认"失效模式。
2. 两阶段修复加奖励模型投票:SWE-Bench 上的具体做法
在 SWE-Bench 场景中,上述闭环被展开为两阶段:
- 第一阶段,三个专业化智能体并行推进:问题复现智能体先基于 PR 描述写出
reproduction_test.py,确保缺陷能稳定复现;问题修复智能体结合代码差异分析与 Git 工具定位根因、生成补丁;测试验证智能体跑相关单元测试,确认修复没有引入回归。 - 第二阶段,奖励模型投票:多个候选修复方案先做统一轨迹格式处理,再交给基于 Qwen2.5-Coder-Instruct 微调的奖励模型,从代码质量、功能完整性、性能影响等维度打分,选最高分方案。
这样分工的原因:单智能体同时要负责"复现、理解、改码、自测",认知负担集中在一个上下文里容易丢线索;拆开后每个 Agent 的系统提示和工具集都可以收窄,错误也被隔离在各自阶段。
3. 自主执行的底座:事件流、权限与沙箱
多智能体能"放开手脚"干活,靠的是三层保障:
- 事件系统:推理、工具调用、多模态内容统一走一条事件流推给前端;支持中断后恢复——事件的
reply_id会标明当时停在哪个智能体,调用方不用自己记回合。 - 权限系统:
src/agentscope/permission/下的 PermissionEngine 对工具和资源做细粒度管控,支持逐次确认与 BYPASS 免确认模式。 - 工作区沙箱:local、Docker、E2B、Daytona、K8s、OpenSandbox 等 8 种后端,工具与代码执行全部隔离,智能体跑飞也不会波及宿主机。
落地要点与关键配置
搭一条执行-验证流水线,核心代码只有几行:
pipe = GoalPipeline(executor=executor, verifier=verifier) # verifier_reset_context 默认 True:每轮重置验证者上下文 # max_iters 默认 10;验证者判 "impossible" 时提前终止两处配置值得注意。其一,服务化部署时,examples/agent_service/main.py默认用的是InMemoryMessageBus(),多进程或生产环境要换成RedisMessageBus,否则各进程之间状态互不可见。其二,PermissionMode.BYPASS适合可信的自动化任务(省掉每次工具确认),但涉及删除文件或对外发请求的任务不要开,保持逐次确认。
避坑与调优
- 别让验证者自由发挥:强制结构化输出三态裁决,且失败消息必须定位到文件路径和行号,否则执行者拿到"写得不太好"这种反馈无法定向修复。
- 调
max_iters时配合成本预算:难任务可以调大,但每轮都是完整的模型调用开销;好在"impossible"裁决会提前终止,避免无效烧钱。 - 理解
verifier_reset_context=True的取舍:每轮重置上下文省 token,但验证者看不到上一轮的历史;如果验证依赖历史轨迹,改成 False。 - 多进程部署必须换 Redis 消息总线:内存总线是进程级的,只适合单机调试。
- 长任务走后台卸载:训练、抓取这类耗时工具通过
offloader=workspace转入后台,结果回来后唤醒会话恢复对话,避免事件流被长时间占住。
快速上手
uv pip install agentscope # 或从源码安装: git clone https://gitcode.com/GitHub_Trending/ag/agentscope cd agentscope && uv pip install -e . export DASHSCOPE_API_KEY=sk-... python examples/pipeline/goal/goal_pipeline.py想在服务形态里体验(含 Web UI、权限确认、团队协作),先起 Redis,再运行python examples/agent_service/main.py,然后在examples/web_ui下pnpm install && pnpm dev,把 UI 指向http://localhost:8000即可。仓库内置约 160 个测试文件,覆盖事件、权限、沙箱等核心路径,可对照验证行为。更多更新记录见 docs/NEWS.md,流水线实现可深入 src/agentscope/pipeline/ 阅读。
【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考