恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
SWE-RL代码架构深度解析:core与agentless_mini两大模块如何各司其职
首页
资讯中心
/
SWE-RL代码架构深度解析:core与agentless_mini两大模块如何各司其职
SWE-RL代码架构深度解析:core与agentless_mini两大模块如何各司其职
发布时间:2026/8/21 15:05:47
SWE-RL代码架构深度解析core与agentless_mini两大模块如何各司其职【免费下载链接】swe-rl[NeurIPS25] Official codebase for SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution项目地址: https://gitcode.com/gh_mirrors/sw/swe-rlSWE-RLSoftware Engineering Reinforcement Learning是首个将强化学习规模化应用于真实软件工程推理的LLM训练框架其SWE-RL代码架构的核心在于core与agentless_mini两大模块的分工协作。简单来说core 负责怎么训练agentless_mini 负责怎么用——前者为模型提供可计算的奖励信号后者则搭建了一条完整的自动化代码修复流水线。本文将带你从源码层面拆解这两大模块的设计逻辑与协作方式帮助你快速理解这套开源项目的整体骨架。SWE-RL代码架构总览两条清晰的主线打开项目的src/swerl/目录你会发现整个代码库被巧妙地划分为两块模块核心职责对应目录core强化学习的提示词模板 奖励函数src/swerl/core/agentless_mini无智能体Agentless自动修复流水线src/swerl/agentless_mini/这种训练与推理分离的设计让研究者既能独立复现论文中的强化学习训练方法又能把训练好的模型直接接入现成的自动修复流程进行评测互不干扰、各司其职。core模块深度解析强化学习的训练引擎core模块是整个SWE-RL训练流程的地基只包含两个关键文件却承担了强化学习中最重要的信号与提示两项任务。规则化奖励函数让模型学会改代码在 src/swerl/core/reward.py 中SWE-RL 实现了一套完全**规则化rule-based**的奖励机制不依赖任何外部模型打分核心思想是解析模型输出通过extract_thought_solution()提取模型生成的think思考过程与solution解决方案。应用代码修改parse_search_replace()解析 SEARCH/REPLACE 编辑块apply_code_change()将修改应用到原始文件内容上。计算序列相似度compute_change_similarities()使用difflib.SequenceMatcher将模型生成的补丁与标准答案补丁逐文件计算相似度最终平均得到奖励值。值得一提的是calculate_search_replace_reward()和更通用的calculate_reward()两个入口前者针对 SEARCH/REPLACE 格式做了开箱即用的封装后者则可以配合任意编辑格式使用。这也正是强化学习的关键——模型每做一次尝试都能立刻得到一个明确的数值反馈。提示词模板规范模型的思考-回答格式在 src/swerl/core/prompts.py 中定义了整套训练用提示词其中最核心的是THINKING_SYSTEM模板它强制模型先输出think内部思考草稿再输出solution最终方案。这种思考-回答两段式输出格式与 reward.py 中的解析逻辑一一对应构成了训练闭环。agentless_mini模块深度解析开箱即用的自动修复流水线如果说 core 模块是训练场那么agentless_mini就是实战演练场。它构建在 Agentless 方法论之上核心特点是不需要智能体逐步交互直接让模型一次性完成定位与修复效率更高、也更易并行化。整条流水线由三个主脚本串联而成第一步文件级定位 localizesrc/swerl/agentless_mini/localize.py 接收 GitHub issue 描述与仓库结构树让模型预测需要修改哪些文件。它内置了多项工程优化过滤非 Python 文件、排除测试文件、支持多轮采样num_samples并通过随机化项目结构提升多样性。所有请求通过asyncio并发调度配合semaphore信号量控制并发上限极大提升吞吐。第二步代码修复 repairsrc/swerl/agentless_mini/repair.py 是流水线的重头戏。它将定位阶段选出的文件内容拼接为上下文受max_input_tokens上限约束让模型直接生成 SEARCH/REPLACE 编辑块。随后通过post_process_raw_output()完成一系列后处理生成 git diff、语法检查、过滤仅空行差异的无效修改最终输出标准化的补丁文件。这种定位即修复的无智能体设计显著降低了多轮交互的推理成本。第三步多候选重排 reranksrc/swerl/agentless_mini/rerank.py 负责从多次采样生成的多个补丁中挑出最优解。它支持三种排序策略回归测试不破坏原有功能、复现测试修复目标 bug以及多数投票去重后按补丁出现频率选择。文件头部的注释NOTE: this file is mostly not refactored也提醒我们这部分代码保留了较多原始逻辑适合作为理解排序策略的参考。两大模块如何协同工作从训练到评测的完整闭环理解了各自职责后再看它们如何协作就一目了然了强化学习训练阶段 core.prompts.py 生成训练提示 → LLM 输出 think/solution → core.reward.py 计算奖励反馈训练 模型评测阶段 agentless_mini.localize 定位文件 → agentless_mini.repair 生成补丁 → agentless_mini.rerank 选出最优解值得一提的是两个模块并非完全孤立agentless_mini中的修复提示词 src/swerl/agentless_mini/utils/prompts.py 直接复用了 core 模块的AGENTLESS_REPAIR模板保证了训练与推理阶段的提示格式完全一致这是强化学习模型能稳定发挥的关键细节。快速上手克隆仓库并体验完整流程如果你想亲手体验这条流水线可以参考 README 中的指引使用git clone https://gitcode.com/gh_mirrors/sw/swe-rl克隆仓库后按以下步骤操作安装依赖执行pip install -e .[agentless]安装 agentless 相关依赖。配置环境变量设置OPENAI_API_KEY、OPENAI_BASE_URL可配合 vLLM 本地部署模型、PROJECT_FILE_LOC仓库结构文件路径等具体说明见 src/swerl/agentless_mini/utils/envs.py。运行完整流水线依次执行python -m swerl.agentless_mini.localize、python -m swerl.agentless_mini.repair、python -m swerl.agentless_mini.rerank最终得到all_preds.jsonl预测结果。流水线还支持分片并行--num_shards方便在集群上大规模加速。总结SWE-RL代码架构的精妙之处在于用极简的模块划分承载了完整的训练-评测闭环core模块用规则化奖励函数解决了强化学习的信号问题agentless_mini模块用无智能体流水线解决了推理效率问题。无论你是想复现论文实验还是想为自己的模型搭建一套自动代码修复评测流程从这两个模块入手都能事半功倍。【免费下载链接】swe-rl[NeurIPS25] Official codebase for SWE-RL: Advancing LLM Reasoning via Reinforcement Learning on Open Software Evolution项目地址: https://gitcode.com/gh_mirrors/sw/swe-rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考