ARTICLE · 1126782
11个编程agent源码的7个共同部件
一篇源码研究把 11 个编程 Agent 拆成 7 个共同部件。样本覆盖约 400 万行 Python、TypeScript 和 Rust。研究者还记录了一个反复出现的事实:代码 Agent 的核心运行逻辑,大多由各团队自己写。

原帖信息图:论文将 11 个编程 Agent 的源码结构归纳为 7 个共同部件。
11。
个 Agent。
7。
个共同部件。
0。
个向量检索运行时。
论文研究的对象。
这篇论文的题目是《Harness Engineering》。
作者分析了 Claude Code、Codex CLI、Gemini CLI、Mistral Vibe 和 OpenHands。
样本还包括 Aider、Mini-SWE-Agent、Hermes、Pi、OpenCode 和 OpenClaw。
论文把这些软件称为 coding harness。
它们负责把语言模型接到文件系统、终端、权限系统和外部工具上,让模型能够持续执行软件工作。
论文的研究方法是源码分析,不是统一任务上的性能测试。
作者按照固定提交版本读取代码,再比较每个系统如何组织循环、工具、上下文、权限、编排和扩展机制。这个口径决定了文章讨论的是“这些 Agent 如何被造出来”,不是“谁的模型分数最高”。
7 个部件,拼出一个可工作的 Agent。
●Agent 循环:模型提出动作,运行时执行工具,再把结果送回模型,循环直到任务结束。
●模型接入:处理提示词、流式输出、模型专属接口和不同模型的配置。
●工具与动作系统:把读文件、搜代码、改文件、运行命令等能力变成模型可以调用的动作。
●记忆与上下文:决定历史对话、仓库文件、命令结果和压缩后的信息如何继续留在任务中。
●安全与权限:控制哪些命令可以执行,哪些文件可以修改,哪些动作需要用户确认。
●多 Agent 编排:处理子 Agent、协议和任务分派,让一个任务可以拆给多个运行单元。
●扩展机制:提供 Skills、MCP、插件或其他接口,让运行时能够增加新能力。
这 7 个部件的共同点是:它们都围绕“模型如何连续行动”服务。单次问答只需要输入和输出;编程 Agent 还要处理状态、工具返回值、权限、失败、重试和任务恢复。
为什么源码里看不到通用 Agent 框架。
论文分析了约 400 万行 Python、TypeScript 和 Rust。
在这些样本中,作者没有发现被研究的 Agent runtime 导入通用 Agent 框架。
这里的“通用框架”包括 LangChain、LangGraph、AutoGen 等。图片中特别标出了 Gemini CLI 也没有使用 Google 自家的框架。
论文给出的源码观察是,很多系统直接实现自己的异步循环、工具调用和状态管理。这样做会增加维护工作,却能让开发者直接控制模型接口、错误处理、权限判断和上下文拼接。编程 Agent 的工具链会反复触碰文件系统和终端,运行时的每一个细节都可能影响任务结果。
代码检索仍然偏向确定性工具。
论文还记录了另一个结果:样本中的 Agent runtime 没有使用向量嵌入来检索代码。
它们更常调用 ripgrep、tree-sitter、glob,以及自动发现的 Markdown 上下文文件。
这些工具把“搜索什么、匹配到什么、返回哪些行”暴露出来。Agent 可以先搜文件名,再搜符号或文本,最后打开相关片段。对于需要修改具体代码的任务,这条路径保留了可检查的中间结果,也方便人类复核模型为什么读到了这些文件。
扩展层开始成为共同接口
论文统计到,11 个系统中有 9 个支持 SKILL.md,有 8 个支持 MCP。
这个结果把扩展机制放到了运行时结构层面。
Agent 的能力可以通过说明文件、工具协议和外部服务继续增加。
论文还提到 ACP 在 6 个系统中出现,并开始承担运行其他 Agent 的托管角色。OpenHands 可以把 Claude Code、Codex 或 Gemini CLI 作为后端运行。此时,Agent 的边界从一个命令行工具扩展成了可被接入、配置和替换的平台。
阅读这篇论文时,先记住一个范围:它比较的是源码结构和扩展方式,论文没有用统一 benchmark 给 11 个系统排名。7 个部件是一张架构地图,不是一套性能榜单。
模型之外,才是编程 Agent 的工作现场。
从源码结构看,编程 Agent 的工作现场由一整套运行时决定:它怎样循环,能调用什么工具,如何保留上下文。
运行时还要处理权限、错误和重试,并把结果继续写入文件、命令和项目状态。模型能力会改变上限,Harness 决定这些能力如何进入工作流。
这也是论文把 Harness Engineering 称为一个独立方向的原因。面对编程 Agent,比较模型名称只是第一层。
真正影响使用体验的,还包括这 7 个部件如何组合,以及它们是否能让一次对话变成可恢复、可检查、可扩展的软件工作流。
SOURCES
论文:Harness Engineering,源码研究论文。
论文编号:arXiv 2609.00006。
原帖:X @yupi996,配图为论文结构摘要。
交叉说明:论文摘要与正文 HTML,arXiv 2609.00006。