OpenClaw-RL 集成指南:mini-swe-agent —— 100 行代码搞定 GitHub Issue 的极简编码 Agent

发布时间:2026/10/12 18:16:53
OpenClaw-RL 集成指南:mini-swe-agent —— 100 行代码搞定 GitHub Issue 的极简编码 Agent 人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载导读本篇技术指南围绕 OpenClaw-RL 仓库中内置的第三方依赖 mini-swe-agent固定版本 v1.12.0展开它是在 SWE-bench / SWE-Gym 上进行强化学习RL与微调FT时最理想的 agent scaffold 基线核心实现只有约 100 行 Python 代码不依赖任何花哨的框架。读完本文你将掌握 mini-swe-agent 的三大设计哲学仅 bash、线性历史、无状态子进程执行、三种安装与启动方式、基于 YAML 的完整配置体系、GitHub Issue 实战用法、SWE-bench 批量评估方法以及它在本仓库 swe-rl 训练/评估流水线中的真实定位——让语言模型而不是 agent 脚手架成为研究的主角。一、项目概览The 100 line AI agent that solves GitHub issues moremini-swe-agent 的定位源自一个犀利的问题如果 SWE-agent 缩小 100 倍性能还能几乎保持不变吗2024 年SWE-bench 与 SWE-agent 掀起了 coding agent 革命一年后随着语言模型能力大幅增强构建一个有用 agent 不再需要复杂的工具接口mini-swe-agent 用极简代码给出了肯定的回答。它在 README 中明确服务三类人群研究者希望无假设、无冗余、无意外地进行 [基准评测]、微调或 RL 实验开发者喜欢像脚本一样短小、犀利、可读的工具工程师需要易于沙箱化、易于部署到任意位置的方案。1.1 官方宣称的五个特性根据 README 原文项目具备以下特性均以项目自述为准特性说明Minimal最小化核心 agent 仅约 100 行 Python加上环境local.py、模型litellm_model.py、启动脚本hello_world.py总计也仅约 100 行无花哨依赖Powerful强大README 宣称可解决 SWE-bench verified 基准中 68% 的 GitHub issues对应官方 leaderboardConvenient便捷自带多种 UI可当日常开发瑞士军刀使用Deployable可部署除本机环境外支持docker、podman、singularity、apptainer等多种沙箱Tested经过测试仓库自带完整 pytest 测试套件见 tests并接入 Codecov 覆盖率统计1.2 三大设计哲学More motivationREADME 的展开说明揭示了三项看似反直觉却极其关键的设计决策它们既是 100 行代码能成立的原因也是它适合作为 RL/FT 基线的原因除 bash 外没有任何工具tools甚至不使用 LMs 的 tool-calling 接口一切动作都是 shell 命令。这意味着任何模型都能跑——不要求模型支持函数调用协议在沙箱环境中也无需为 agent 单独安装任何包唯一需要的运行时就是 bash。想让 agent 做某件特定的事比如开 PR直接告诉 LM 自己想办法而不是在 agent 代码里为它实现一个工具。完全线性的历史completely linear history每一步 agent 只是把消息追加到消息列表然后原样传给 LM 进行下一步。轨迹trajectory与传给 LM 的消息之间没有任何差异这给调试和微调带来了巨大便利你可以 100% 确定 LM 到底看到了什么。用subprocess.run执行动作每次动作完全独立与保持有状态 shell 会话的方案不同每条命令都在一个全新子进程中执行。这让沙箱化变得微不足道把subprocess.run换成docker exec即可也让横向扩展毫无压力。状态不持久意味着 agent 需要靠cd /path cmd或读写环境变量文件来跨步骤保留状态代价换来的是稳定性和可扩展性。正是因为这些特性mini-swe-agent 成为以语言模型而非 agent 脚手架为中心的系统与基线 agent 的绝佳选择——SWE-benchbash only榜单正是用它来评估不同 LM 的性能。二、定位选择mini-swe-agent 还是 swe-agentREADME 给出了明确的选型建议应该用mini-swe-agent如果你想要一个在本机快速工作的命令行工具想要控制流极其简单的 agent想要更快、更简单、更稳定的沙箱与基准评估正在做 FT 或 RL且不想过度拟合特定的 agent 脚手架。应该用swe-agent如果你需要特定工具或想试验不同工具想试验不同的历史处理器history processors想要不碰代码就能实现的功能强大的 YAML 配置。两者共同提供SWE-bench 上的优秀性能与一个轨迹浏览器。三、快速开始三种安装方式与首次运行3.1 方式一虚拟环境中安装并运行推荐pip install uv uvx mini-swe-agent [-v] # 或者 pip install pipx pipx ensurepath pipx run mini-swe-agent [-v]-v切换为可视化 UI。3.2 方式二在当前环境直接安装pip install mini-swe-agent mini [-v]3.3 方式三从源码安装对应本仓库git clone https://github.com/SWE-agent/mini-swe-agent.git cd mini-swe-agent pip install -e . mini [-v]在本仓库中源码即位于 swe-rl/mini-swe-agentpyproject.toml声明了 Python 版本要求3.10并注册了四个可执行入口见 pyproject.toml命令入口点miniminisweagent.run.mini:appmini-swe-agentminisweagent.run.mini:appmini-extraminisweagent.run.mini_extra:mainmini-eminisweagent.run.mini_extra:main首次启动会打印版本信息并创建全局配置目录默认由MSWEA_GLOBAL_CONFIG_DIR或platformdirs的user_config_dir(mini-swe-agent)决定启动时还会通过 dotenv 加载该目录下的.env文件见init.py你可以把MSWEA_MODEL_NAME、MSWEA_MODEL_API_KEY等环境变量写进去。3.4mini命令行参数mini.py 基于 Typer 实现主要参数如下参数说明-v, --visual切换 Textual 分页式 UImini -v-m, --model指定要使用的模型--model-class指定模型类如anthropic或完整导入路径-t, --task任务/问题描述不传则进入交互式提示输入EscEnter 提交方向键翻历史CtrlR 搜索-y, --yolo无需确认直接执行yolo 模式-l, --cost-limit成本上限设为 0 表示禁用-c, --config配置文件路径默认mini.yaml可用MSWEA_MINI_CONFIG_PATH覆盖-o, --output轨迹输出文件默认last_mini_run.traj.json--exit-immediatelyagent 想结束时立即退出不再询问3.5 两种用户界面mini基于 prompt_toolkit 的简单 REPL 风格界面interactive.py执行过程直观打印每一步的成本与步数。mini -v基于 Textual 的分页式 TUIinteractive_textual.py支持多面板查看消息流与输入。是否默认进入可视化模式还可通过环境变量MSWEA_VISUAL_MODE_DEFAULT控制源码中visual (MSWEA_VISUAL_MODE_DEFAULT false)决定了选哪种 agent 类。两种界面都支持human / confirm / yolo三种交互模式详见下文-y参数即等价于将 agent 配置的mode设为yolo。四、核心架构源码解析100 行代码如何工作4.1 核心类DefaultAgent与四类协议default.py 是全部魔法的所在。它依赖三个极简协议定义于init.pyModel、Environment、Agent通过 Protocol 鸭子类型实现静态类型检查之外可以几乎忽略它们。AgentConfig数据类定义了五个模板与两个限额这些也是 YAML 配置的对应键配置键默认值/说明system_template系统提示词默认 You are a helpful assistant that can do anything.instance_template任务提示词模板含{{task}}占位符要求模型以三反引号包裹的单条 shell 命令作答timeout_template命令超时被杀后的反馈模板附输出要求换命令并避免交互式输入format_error_template格式错误提示请始终恰好提供一个三反引号内的动作action_observation_template观察模板默认Observation: {{output}}step_limit步数上限默认 0不限制cost_limit成本上限美元默认 3.04.2 控制流run → step → query → execute → observeDefaultAgent.run(task)的循环逻辑清晰而完整渲染并写入system与userinstance两条消息循环调用step()step get_observation(query())query()先检查限额step_limit与cost_limit超过则抛LimitsExceeded再调用model.query(messages)把 assistant 回复追加进消息parse_action()用正则re.findall(rbash\s*\n(.*?)\n, ...)提取动作——恰好一个 bash 代码块则返回该命令否则抛FormatErrorexecute_action()调用env.execute(action)捕获subprocess.TimeoutExpired/TimeoutError后转成ExecutionTimeoutErrorhas_finished()检查输出首行是否为MINI_SWE_AGENT_FINAL_OUTPUT或COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT若是则抛Submitted并返回剩余输出作为最终结果任何NonTerminatingExceptionFormatError / ExecutionTimeoutError / 用户中断等都会作为新的 user 消息喂回 LMagent 继续任何TerminatingExceptionSubmitted / LimitsExceeded则结束循环返回(exit_status, result)二元组。异常体系是这套极简设计的关键可恢复的格式/超时错误被转成对话内容让 LM 自己纠正自己不可恢复的结束条件才终止 agent。测试用例 tests/agents/test_default.py 分别验证了成功完成、步数上限、成本上限、格式错误处理与超时处理五类场景例如模型输出恰好一个 bash 块并回显 COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT 时agent 以Submitted状态结束、消息列表恰好 6 条。4.3 模型层LitellmModel 与成本追踪litellm_model.py 是默认模型实现配置项包括model_name、model_kwargs、litellm_model_registry可通过LITELLM_MODEL_REGISTRY_PATH环境变量指向 JSON 注册表用于登记自定义模型的成本/上下文。其关键行为通过litellm.completion()统一调用任意后端模型OpenAI 兼容、Anthropic、本地服务等用tenacity指数退避重试最多 10 次等待 4~60 秒但不重试UnsupportedParamsError、NotFoundError、ContextWindowExceededError等确定性问题避免浪费调用每次响应用litellm.cost_calculator.completion_cost()计算成本累加到self.cost与self.n_calls同时写入全局统计GLOBAL_MODEL_STATSmodels/init.py 中基于线程锁实现支持MSWEA_GLOBAL_COST_LIMIT/MSWEA_GLOBAL_CALL_LIMIT全局限额认证失败时提示可用mini-extra config set KEY VALUE永久设置 API key。模型选择逻辑models/init.py模型名含anthropic/sonnet/opus/claude时自动选AnthropicModel否则默认LitellmModel也可通过--model-class显式指定anthropic、litellm、openrouter、deterministic或任意完整导入路径。注意仓库中还内置了DeterministicModeltest_models.py专门用于测试时模拟固定输出也是理解控制流的绝佳教材。4.4 环境层Local / Docker / Singularity环境层通过统一的execute(command, cwd, timeout) - {output, returncode}接口抽象执行后端environments/README.mdLocalEnvironment直接在本机用subprocess.run(shellTrue)执行命令配置项cwd默认当前目录、env额外环境变量、timeout默认 30 秒。它把命令、系统平台信息platform.uname()与全部 OS 环境变量作为模板变量暴露给提示词——这正是mini.yaml里system_information{{system}} {{release}} .../system_information的数据来源。DockerEnvironment启动一个sleep container_timeout的常驻容器默认--rm自动清理、名称minisweagent-8位随机每条命令通过docker exec执行。配置项包括image、cwd、env、forward_env仅转发宿主机已设置的变量、timeout、executable可用MSWEA_DOCKER_EXECUTABLE换成 podman、run_args、container_timeout默认 2h、pull_timeout默认 120s、exec_modesubprocess或api后者走 Docker Engine API 并需pip install docker。对象析构时自动停止并删除容器。SingularityEnvironment先singularity build --sandbox构建可写沙箱目录失败最多重试 3 次执行时用--contain --cleanenv隔离宿主环境支持MSWEA_SINGULARITY_EXECUTABLE换成 apptainer。此外environments/extra/还提供 swerex_docker.py通过 swe-rex 管理远程 Docker与 bubblewrap.pybubblewrap 沙箱两个可选后端前者需要pip install mini-swe-agent[full]。五、配置系统YAML 模板与全局配置5.1 内置配置文件清单配置全部位于 src/minisweagent/config按入口点组织见 config/README.md文件用途mini.yamlmini/mini -v的默认配置mode: confirmcost_limit: 3mini_no_temp.yaml同 mini.yaml 但去掉 temperature 设置default.yamlDefaultAgent的默认配置cost_limit: 0不限成本github_issue.yamlGitHub Issue 入口点配置Docker 环境image: python:3.11、cwd: /testbedextra/swebench.yamlSWE-bench 批量评估配置extra/swebench_roulette.yaml轮盘多模型随机切换配置对应 README 提到的 GPT-5 / Sonnet 4 随机切换技巧通过自定义RouletteModel实现5.2 关键模板参数详解以 mini.yaml 为例其结构分agent/environment/model三段agent 段system_template要求模型响应中必须包含恰好一个bash 代码块、恰好一条命令可用/||连接并要求在命令前先写 THOUGHT 推理过程附format_example格式示例instance_template注入{{task}}给出六步推荐工作流分析代码 → 写复现脚本 → 改源码 → 验证 → 测边界 → 以echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT提交并明确三条铁律每条响应恰好一个动作、动作必须包裹在三反引号内、目录与环境变量变更不持久每个动作都在新子 shell 执行可通过MY_ENV_VARMY_VALUE cd /path ...前缀或写/读文件来跨步骤保留状态模板中还通过 Jinja2 条件渲染对 macOSsed -i 做特殊提示action_observation_template把执行结果格式化为returncodeoutput超过 10000 字符时截断——只保留前 5000 与后 5000 字符并提示模型改用更精确的 grep/sed/head/tail防止上下文爆炸format_error_template格式错误时的回灌提示含正确格式示例并提示罕见情况下可先写TRIPLEBACKTICKSBASH再替换step_limit: 0、cost_limit: 3、mode: confirmenvironment.env设置PAGERcat、MANPAGERcat、LESS-R、PIP_PROGRESS_BARoff、TQDM_DISABLE1压制交互式分页与进度条噪音model.model_kwargstemperature: 0.0确定性优先、drop_params: true丢弃模型不支持的参数。SWE-bench 配置差异extra/swebench.yamlstep_limit: 250、cost_limit: 3、环境cwd: /testbed、timeout: 60、environment_class: docker默认模型claude-sonnet-4-20250514提交命令为echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT git add -A git diff --cached先提交 git diff 再结束这是生成 model patch 的关键。5.3 全局配置与高级配置全局配置首次运行会引导设置configure_if_first_time见 run/extra/config.pyAPI key 等写入全局.envYAML 配置文件所有入口点都支持-c/--config指向自定义 YAMLCookbookPython bindingsREADME 展示了最简用法——把DefaultAgent、LitellmModel、LocalEnvironment三行组装agent DefaultAgent( LitellmModel(model_name...), LocalEnvironment(), ) agent.run(Write a sudoku game)更完整的参考实现见 run/hello_world.py它从default.yaml读取 agent 配置-m指定模型默认取MSWEA_MODEL_NAME环境变量随后agent.run(task)并在结束后返回 agent 对象以便检查messages、model.cost、model.n_calls。六、实战一让 agent 解决 GitHub Issuegithub_issue.py 提供了专用入口输入 issue URL自动抓取标题与正文作为任务在 Docker 容器中 clone 仓库后开始工作。mini-extra github-issue --url https://github.com/owner/repo/issues/123其内部流程对应 github_issue.yamlfetch_github_issue()将github.com/.../issues/N转为api.github.com/repos/.../issues/N获取标题与正文可选GITHUB_TOKEN环境变量用于鉴权用DockerEnvironmentpython:3.11 镜像cwd: /testbed构造隔离环境容器内执行git clone repo_url /testbed有 token 时把 token 拼进 URL可克隆私有仓库运行交互式 agent默认confirm模式逐条确认 LM 的命令-y可切换 yolo 模式结束成功提交或用户 CtrlC后把完整轨迹保存到traj.json。七、实战二SWE-bench 批量评估与轨迹分析7.1 批量推理入口mini-extra swebenchswebench.py 是面向研究场景的批量评估器核心能力包括数据集映射DATASET_MAPPINGfull→princeton-nlp/SWE-Bench、verified→princeton-nlp/SWE-Bench_Verified、lite→princeton-nlp/SWE-Bench_Lite以及 multimodal、multilingual、smith 等子集也接受任意 HF 数据集路径实例筛选--filter正则匹配 instance_id、--slicePython 切片语法如0:5、--shuffle固定随机种子 42 的复现性洗牌、--redo-existing跳过preds.json中已有的实例天然支持断点续跑并行执行--workers N线程池并发处理多个实例进度由 rich Live 面板实时展示ProgressTrackingAgent在每个 step 上报步数与已花费金额镜像解析get_swebench_docker_image_name()将 instance 的image_name转成docker.io/swebench/sweb.eval.x86_64.instance_id:latest双下划线转义为_1776_因为 Docker 不允许双下划线并支持 singularity 的docker://前缀输出每个实例生成instance_id.traj.json完整消息轨迹与配置快照汇总写入preds.json每实例含model_name_or_path、instance_id、model_patch即提交时的 git diff日志写入minisweagent.log。典型命令mini-extra swebench \ --subset verified --split test \ --slice 0:5 --workers 4 \ --model openai/Qwen3-32B \ -o ./swe_results7.2 轨迹浏览器 inspectormini-extra inspector [目录或文件]启动 Textual 分页浏览器inspector.py递归扫描*.traj.json按键操作←/→或h/l切换步骤、0跳到首步、$跳到最后一步、H/L切换不同轨迹、j/k滚动、q退出。轨迹文件格式save.py为trajectory_format: mini-swe-agent-1包含messages与infoexit_status、submission、model_stats 的instance_cost/api_calls、mini 版本、agent/model/environment 的完整配置 dataclass 转储。因为历史完全线性轨迹与 LM 实际看到的上下文完全一致调试、复现、构造微调/RL 训练数据都极其省心。八、在 OpenClaw-RL 中的集成swe-rl 的 agent 与评估在本仓库中mini-swe-agent 是 swe-rl 模块的第三方依赖README 标注 pinned v1.12.0其角色清晰RL 训练侧的 agent scaffoldswe-rl 用 slime 训练框架在 SWE-bench / SWE-Gym 上做强化学习agent 被训练为在隔离 Docker 容器内通过 bash 命令修复真实 GitHub issue评估时应用 agent 的 git patch 并运行官方测试套件——这与 mini-swe-agent 的仅 bash、线性历史、无状态执行哲学完全同构避免把模型能力与特定脚手架耦合评估侧的 runnerswe-rl的 CES 评估路径setup_minisweagent_ces.sh/run_minisweagent_eval.sh用独立 SGLang 集群以 OpenAI 兼容 API 服务模型由 mini-swe-agent 在 CES Docker 节点上管理 SWE-bench 容器与 agent 交互实现LLM 服务与训练框架解耦的评估方式可通过--sglang-url、--workers、--slice 0:5参数做多节点切片与冒烟测试。也就是说mini-swe-agent 的极简设计正好满足研究者不把 RL/FT 结果过度拟合到某个 agent 实现上的核心诉求轨迹消息、动作bash、环境可替换任何模型都能接入。九、引用与延伸阅读README 建议引用 SWE-agent 论文Yang et al., NeurIPS 2024《SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering》。BibTeX 如下省略外部 url 字段inproceedings{yang2024sweagent, title{{SWE}-agent: Agent-Computer Interfaces Enable Automated Software Engineering}, author{John Yang and Carlos E Jimenez and Alexander Wettig and Kilian Lieret and Shunyu Yao and Karthik R Narasimhan and Ofir Press}, booktitle{The Thirty-eighth Annual Conference on Neural Information Processing Systems}, year{2024} }继续深入本仓库的阅读路径核心 agent 源码agents/default.py、agents/interactive.py环境与模型environments/local.py、environments/docker.py、models/litellm_model.py配置模板config/mini.yaml、config/extra/swebench.yaml测试用例tests/agents/test_default.py上层集成说明swe-rl/README.md注意本文所有68% 通过率100 行代码等数据均为上游 README 的项目自述未在本仓库内做独立复测使用本地环境LocalEnvironment执行时agent 的命令会直接在你的机器上运行生产或实验场景请务必改用 Docker/Singularity 沙箱并善用confirm模式与cost_limit保护自己。赞分享人工智能大模型强化学习AI Agent微调【免费下载链接】OpenClaw-RLOpenClaw-RL: Train any agent simply by talking项目地址https://gitcode.com/gh_mirrors/op/OpenClaw-RL点击查看免费下载相关推荐mini-swe-agent 入门完全指南100 行代码的极简 AI 编程代理设计与实战mini swe agent 入门完全指南100 行代码的极简 AI 编程代理设计与实战 mini swe agent 是 SWE bench / SWE a人工智能大模型AI Agent代码智能体从网页到下载器网盘直链下载助手的直链获取与下载器对接指南从网页到下载器网盘直链下载助手的直链获取与下载器对接指南 网盘直链下载助手是一款基于 JavaScript 的用户脚本由【网盘直链下载助手】修改而来。在浏览前端Pocket Flow 深度指南100 行代码的极简 LLM 框架让 Agent 构建 AgentPocket Flow 深度指南100 行代码的极简 LLM 框架让 Agent 构建 Agent Pocket Flow 是 GitHub 加速计划 /人工智能大模型AI Agent工作流自动化RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询