moatless-tools

GitHub
637 60 中等 1 次阅读 1周前MIT语言模型开发框架Agent图像
AI 解读 由 AI 自动生成,仅供参考

moatless-tools 是一个专注于利用大语言模型(LLM)在大型现有代码库中进行代码编辑的开源实验项目。它旨在解决当前 AI 编程助手在处理复杂项目时,因缺乏精准上下文而导致修改错误或效率低下的痛点。与传统依赖智能体自主推理不同,moatless-tools 的核心理念是构建高效的工具链,主动为模型注入正确的上下文信息并规范其响应,从而实现更可靠的代码变更。

该项目在权威的 SWE-bench 基准测试中表现优异,例如配合 Claude 3.5 Sonnet 模型时,问题解决率可达 70.8%,且单次运行成本控制在较低水平。其独特技术亮点在于支持基于蒙特卡洛树搜索(MCTS)和迭代优化的策略(相关实现在 moatless-tree-search 项目中),并提供了一套完整的评估框架,方便用户验证不同模型在真实软件缺陷修复任务中的表现。

moatless-tools 非常适合软件开发者和 AI 研究人员使用。开发者可以利用它探索自动化修复代码缺陷的新工作流,而研究人员则能借助其提供的 Docker 环境和评估脚本,复现论文结果或测试新的 Agent 架构。虽然目前主要面向技术人群,但其模块化的设计也为未来集成到更广泛的开发工具中奠定了基础。

使用场景

某后端团队需要在三天内修复一个拥有十年历史的大型 Django 项目中存在的复杂并发漏洞,该问题涉及多个模块的联动修改。

没有 moatless-tools 时

  • 开发者需手动翻阅数万行代码定位上下文,极易遗漏关键依赖文件,导致修复方案片面。
  • 通用 AI 助手因缺乏项目全局视野,常产生“幻觉”代码或修改错误文件,人工验证成本极高。
  • 每次尝试修复都需重复构建环境并手动测试,迭代效率低下,难以在截止日期前完成验证。
  • 面对复杂的调用链,传统工具无法智能规划修改路径,往往陷入“改一处坏两处”的循环。

使用 moatless-tools 后

  • moatless-tools 自动索引全量代码库,精准提取与漏洞相关的上下文片段,确保 AI 掌握完整信息。
  • 内置的智能代理结合蒙特卡洛树搜索(MCTS),能自主规划最优修改路径,直接生成可运行的补丁。
  • 通过在 Docker 中自动化执行 SWE-Bench 风格的验证流程,实时反馈修复结果,将试错周期从小时级缩短至分钟级。
  • 系统自动处理代码编辑中的边界情况,显著减少回归错误,让开发者只需关注最终逻辑确认。

moatless-tools 通过构建精准的上下文工程与自动化验证闭环,将大型遗留系统的代码修复从“大海捞针”转变为高效可控的标准化流程。

运行环境要求

操作系统
  • Linux
  • macOS
GPU

未说明

内存

未说明

依赖
notes该工具主要通过 Docker 运行评估任务,或使用 uv/poetry 安装。运行 SWE-Bench 评估需要配置 LLM 提供商 API Key 和 Voyage AI API Key。支持多种模型工作流(如 function calling 和 ReACT),具体取决于所选模型。未明确提及本地 GPU 推理需求,主要依赖外部 API 或容器化环境。
python未说明 (需使用 uv 或 Poetry 管理环境)
moatless
uv
poetry
litellm
docker
moatless-tools hero image

快速开始

Moatless Tools

Moatless Tools 是一个兴趣项目,我在其中尝试一些关于如何利用大型语言模型(LLM)编辑大型现有代码库的想法。我认为,与其依赖代理自行推理出解决方案,不如构建优秀的工具来为提示注入正确的上下文,并妥善处理响应。

有关论文 SWE-Search: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement 中所使用的实现,请参阅 moatless-tree-search

SWE-Bench

我使用 SWE-bench 基准测试 来验证我的想法。

  • Claude 4 Sonnet - 解决率为70.8%,每次实例费用为0.63美元。

试用一下

在 Docker 中运行

  1. 克隆仓库:

    git clone https://github.com/aorwall/moatless-tools.git
    cd moatless-tools
    
  2. 设置环境变量:

    cp .env.example .env
    

    编辑 .env 文件以设置您的 API 密钥和其他配置选项,包括必需的 MOATLESS_DIR 变量:

    MOATLESS_DIR=/path/to/your/moatless/data
    

    注意MOATLESS_DIR 指定了 Moatless 将存储配置文件和轨迹数据的目录。该目录将在 Docker 容器中作为卷挂载。

  3. 启动服务:

    make run
    
  4. 访问 UI:http://localhost

从 PyPI 安装

# 仅安装基础包
pip install moatless

# 安装支持 Kubernetes 运行器的版本
pip install "moatless[kubernetes]"

从源码安装

克隆仓库并使用 Poetry 安装

# 克隆仓库
git clone https://github.com/aorwall/moatless-tools.git
cd moatless-tools

# 使用 uv 安装依赖
uv sync

代码示例

基本代理流程

from moatless.actions import Respond
from moatless.agent import ActionAgent
from moatless.completion.tool_call import ToolCallCompletionModel

completion_model = ToolCallCompletionModel(
    model="gpt-4.1-mini",
    temperature=0.0,
    model_api_key=""
)

agent = ActionAgent(
    completion_model=completion_model,
    system_prompt="您是一位能够回答问题的助手。",
    actions=[
        Respond()
    ]
)

observation = await agent.run_simple("你好")

print(observation.message)

代码检查器代理

notebooks/code_inspector_agent.ipynb

运行 SWE-Bench 评估

在运行评估之前,您需要:

  1. 至少一个 LLM 提供商的 API 密钥(例如 OpenAI、Anthropic 等)
  2. 一个来自 voyageai.com 的 Voyage AI API 密钥,用于 SWE-Bench 实例的预嵌入向量存储。

验证设置

在运行完整评估之前,您可以先运行一个简单的 SWE-Bench 实例来验证您的设置。

uv run python scripts/docker_run.py  --flow swebench_tools --model-id gpt-4o-mini-2024-07-18 --instance-id django__django-11099 --evaluation-name testing_setup

该脚本将针对一个 SWE-Bench 示例实例运行模型。

结果会保存在 .moatless/projects/testing_setup 中。

运行评估

用于在 Docker 容器中运行评估的脚本。

python3 scripts/run_evaluation.py  --model gpt-4o-mini-2024-07-18 --dataset-split [dataset_split] --evaluation-name [evaluation_name]

必填参数:

  • --dataset-split:要使用的数据集划分
  • --evaluation-name:评估名称

可选参数:

  • --model:用于评估的模型(默认为 gpt-4o-mini-2024-07-18,等同于 --model-id)
  • --model-id:要使用的模型配置 ID(替换整个模型配置)
  • --litellm-model-name:要覆盖的 LiteLLM 模型名称(保留其他模型设置)
  • --flow:用于评估的流程(默认为 “simple_coding”)
  • --num-parallel-jobs:并行作业数量(默认为 1)

流程

可通过 --flow 参数指定的可用流程:

流程 ID 格式 最适合场景 默认模型
swebench_tools 函数调用 支持原生函数调用的模型 gpt-4o-mini-2024-07-18
swebench_tools_and_reasoning 函数调用 支持原生函数调用的推理模型 claude-sonnet-4-20250514
swebench_react ReACT 不支持原生函数调用的开源模型 openrouter/mistralai/devstral-small
swebench_react_reasoning ReACT 不支持函数调用的推理模型 openrouter/deepseek/deepseek-r1-0528

模型配置

两个评估脚本都支持通过以下选项进行灵活的模型配置:

模型选项

  • --model-id:指定完整的模型配置 ID。这将替换整个完成模型配置,包括温度、最大令牌数及其他所有设置。
  • --litellm-model-name:仅覆盖 LiteLLM 模型名称,同时保留来自流程或模型配置的所有其他完成模型设置(温度、最大令牌数等)。

已验证模型

为已验证模型提供了默认的模型配置。请注意,其他模型可能也能工作,但尚未经过广泛测试。
已验证模型是指已在 SWE-Bench 数据集的 Verified Mini 子集 上进行测试并确认可用的模型。

当仅指定 --model-id 参数时,将使用以下配置:

模型 响应格式 消息历史 思考过程 Verified Mini
claude-3-5-sonnet-20241022 tool_call messages 46%
claude-3-5-haiku-20241022 tool_call messages 28%
gpt-4o-2024-11-20 tool_call messages 32%
gpt-4o-mini-2024-07-18 tool_call messages 16%
o1-mini-2024-09-12 react react 否(禁用思考) 28%
deepseek/deepseek-chat react react 36%
deepseek/deepseek-reasoner react react 否(禁用思考) 50%
gemini/gemini-2.0-flash-exp react react 38%
openrouter/meta-llama/llama-3.1-70b-instruct react react -
openrouter/meta-llama/llama-3.1-405b-instruct react react 28%
openrouter/qwen/qwen-2.5-coder-32b-instruct react react 32%

数据集划分

可通过 --dataset-split 参数指定的可用数据集划分如下:

划分名称 描述 实例数量
lite lite 数据集中的所有实例 300
verified verified 数据集中的所有实例 500
verified_mini MariusHobbhahn/swe-bench-verified-mini,SWE-Bench Verified 的一个子集 50
lite_and_verified_solvable 同时存在于 lite 和 verified 数据集中,且至少有一份在 SWE-Bench 上被成功解决的提交的实例 84

使用示例

# 使用 Claude 3.5 Sonnet 运行评估,并采用完整的模型配置
python3 scripts/run_evaluation.py \
  --model-id claude-3-5-sonnet-20241022 \
  --flow swebench_tools_and_reasoning \
  --dataset-split verified_mini \
  --num-parallel-jobs 5

# 仅覆盖模型名称,同时保留流程的模型设置来运行评估
python3 scripts/run_evaluation.py \
  --litellm-model-name openrouter/qwen/qwen-2.5-coder-32b-instruct \
  --flow swebench_react \
  --dataset-split verified_mini \
  --num-parallel-jobs 5

版本历史

0.0.22025/06/07

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|3天前
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像