
GhostCoder如何让LLM编辑大型代码库40内置动作系统全解析【免费下载链接】ghostcoderSolving the problems of merging incomplete code written by an LLM and splitting up code for embedding and indexing in a vector store.项目地址: https://gitcode.com/gh_mirrors/gh/ghostcoderGhostCoder 是一个专注于让 LLM 编辑大型代码库的开源 AI 编程工具其核心是一套 40 内置动作Action系统通过为模型配备读代码、查索引、精确改文件、跑测试等专业工具把大模型从靠推理硬猜中解放出来显著提升在真实仓库如 SWE-Bench 基准中的问题解决率。什么是 GhostCoder面向大型代码库的 AI 编程助手GhostCoder 的作者认为与其指望 AI Agent 自己想明白如何改代码不如构建好工具——把正确的上下文插入提示词、稳稳地处理模型输出。它的定位非常清晰工具箱40 个内置动作覆盖代码理解、编辑、执行、验证全流程可验证使用 SWE-Bench 基准持续评测Claude 4 Sonnet 曾达到 70.8% 解决率易部署支持 Docker 一键启动、PyPI 安装、Kubernetes 分布式运行如果你想本地体验可以克隆仓库后按文档启动git clone https://gitcode.com/gh_mirrors/gh/ghostcoder cd ghostcoder cp .env.example .env # 填入 MOATLESS_DIR 与 API Key make run # 启动服务访问 http://localhost核心理念给模型配专业工具而不是让它硬猜传统做法是把整个文件塞给模型让它输出完整新内容——这在大型代码库里既贵又容易出错。GhostCoder 的动作系统换个思路每个动作只做一件小事且结果可靠可观测。所有动作都继承自统一基类Action见moatless/actions/action.py每个动作包含三要素要素说明args_schema用 Pydantic 定义的结构化参数模型必须按格式填写_execute()执行逻辑操作代码库并返回结果Observation统一格式的观测反馈回灌给模型作为下一步依据这种参数校验 → 执行 → 观测的闭环让模型每一步都有据可依也是它能在大型代码库中稳定工作的关键。✅40 内置动作总览五大类能力拆解全部动作集中在moatless/actions/目录下按功能可以分为五类。1️⃣ 代码理解类找到该看哪段代码在几十万行的仓库里盲目搜索是大忌。GhostCoder 提供了多粒度检索动作ReadFile/ReadFiles按路径读取文件支持指定行号范围ListFiles/GlobTool/GrepTool列目录、按模式匹配文件名、正则搜内容FindFunction/FindClass定位函数与类的定义位置FindCodeSnippet按关键词查找代码片段SemanticSearch⭐ 亮点动作——基于向量索引的语义搜索用自然语言描述需求就能找到相关实现源码见moatless/actions/semantic_search.py底层由moatless/index/的代码索引模块支持 语义搜索正是 GhostCoder 对代码切分与向量化嵌入难题的解法代码先被切分成函数/类级别的代码块再入索引搜索粒度更准。2️⃣ 精确编辑类小步修改避免整文件重写这是动作系统的核心也是 LLM 编辑大型代码库最安全的方式StringReplacemoatless/actions/string_replace.py用精确字符串匹配 替换修改代码。要求old_str必须与文件内容完全一致且唯一缩进、空格都不能差——失败时不做任何修改杜绝误伤CreateFile/CreatePythonFile新建文件Python 文件还会自动做语法检查InsertLine/AppendString在指定行插入、向文件末尾追加ClaudeEditTool兼容 Claude 文本编辑器的编辑动作为什么不用输出整个新文件因为模型生成 2000 行代码时任何一行的细微偏差都会破坏无关代码。精确替换把风险锁定在改动的那几行这是大型代码库编辑的精髓。✂️3️⃣ 执行验证类改完必须跑起来代码改对了没有让工具说了算RunTests运行指定的测试文件见moatless/actions/run_tests.pyRunPythonCode/RunPythonScript执行 Python 代码片段或脚本RunMyPy运行类型检查RunMavenTests面向 Java 项目的 Maven 测试BashTool执行任意 shell 命令ViewDiff查看当前改动与原始代码的差异测试输出的解析也不含糊moatless/testing/下配有 pytest、Django、Maven 等专用输出解析器能把冗长的测试日志提炼成模型能看懂的失败摘要。4️⃣ 任务规划类让 Agent 像工程师一样管理进度CreateTasks/AddCodingTasks把需求拆成任务清单ListTasks/UpdateTask查看与更新任务状态FinishCodingTasks/RemoveCodingTasks任务完成后收尾Think⭐ 独特的思考动作moatless/actions/think.py——不获取信息、不改代码只把推理过程写入日志用于复杂决策前的整理思路DefineAPI生成人类可读的轻量 API 规范文档5️⃣ 流程控制类优雅地结束对话Finish完成任务并终止流程is_terminal终端动作VerifiedFinish验证通过后才允许结束防止改一半就收工Respond/Reject直接回答用户问题 / 拒绝无法执行的任务CleanupContext主动清理上下文为长任务节省 token动作如何与模型协同两种响应格式动作系统通过moatless/completion/模块与模型对接支持两种调用格式Tool Call函数调用适合 GPT-4o、Claude 等原生支持函数调用的模型ReACT适合开源模型用思考 → 行动 → 观察的文本循环驱动在 README.md 的评测表中可以看到不同模型在 SWE-Bench Verified Mini 上的表现对比官方也会为验证过的模型提供默认参数配置新手可以直接照抄。快速上手三种方式安装 GhostCoder方式适合人群命令Docker 一键启动想快速看效果的初学者make runPyPI 安装想集成到自己项目的开发者pip install moatless源码 uv想二次开发的贡献者uv sync最小可用的 Agent 示例来自项目文档from moatless.actions import Respond from moatless.agent import ActionAgent from moatless.completion.tool_call import ToolCallCompletionModel agent ActionAgent( completion_modelToolCallCompletionModel( modelgpt-4.1-mini, temperature0.0, model_api_key ), system_promptYou are a helpful assistant., actions[Respond()], ) observation await agent.run_simple(Hello)只需把actions列表换成StringReplace()、SemanticSearch()等任意动作组合就能搭出一个完整的代码编辑 Agent。️写在最后工具决定上限GhostCoder 最有价值的贡献不是某个具体模型而是一套可复用的思路AI 编程 Agent 的能力上限取决于工具设计而非模型智商。40 个动作各司其职——语义搜索负责找对位置、精确替换负责改对地方、测试执行负责验证结果——共同构成了 LLM 安全编辑大型代码库的完整闭环。如果你正在开发 AI 编程工具不妨深入研究moatless/actions/目录下的每个实现它们就是一份现成的Agent 工具设计最佳实践清单。【免费下载链接】ghostcoderSolving the problems of merging incomplete code written by an LLM and splitting up code for embedding and indexing in a vector store.项目地址: https://gitcode.com/gh_mirrors/gh/ghostcoder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考