1 引言
大语言模型已经深刻改变了软件工程实践。Aider [^23]、SWE-agent [^57] 和 OpenHands [^52] 等工具能够浏览陌生的代码仓库、定位缺陷、生成补丁并运行测试套件,且对人工监督的依赖日益减少。其中最强大的系统在 SWE-bench Verified 基准测试 [^27] 上能够解决超过半数的真实 GitHub 问题,本研究分析的智能体中有七个各自积累了超过 15,000 个 GitHub star [^7](Table 1),表明其已被相当规模的开发者社区所采用。随着这些智能体从研究原型走向生产工具,包裹在语言模型外部的脚手架代码——控制循环、工具定义、状态管理和上下文策略——越来越多地决定着智能体的行为方式、所犯的错误类型以及 Token 预算的分配 [^13]。
尽管脚手架具有如此重要的实践意义,编码智能体脚手架的内部架构在研究文献中仍然缺乏充分的理解。现有的 LLM 智能体综述在概念层面运作,按照抽象能力(工具使用、记忆、规划、反思)而非区分不同生产系统的具体实现策略来组织系统 [^35] [^37]。一个使用蒙特卡洛树搜索来探索候选补丁的编码智能体与一个使用简单 while 循环配合测试驱动重试的编码智能体,在这些分类法下都属于"使用工具、具备规划、可反思"的智能体,然而它们的脚手架架构在影响成本、可靠性和失败模式的根本层面上存在差异。关于编码智能体的实证研究已开始通过轨迹分析来表征其运行时行为 [^34] [^14],揭示出成功的智能体比失败的智能体更快地定位缺陷、更早地进行测试、产生更短的动作序列。然而,这些研究将智能体视为黑箱:它们观察智能体做了什么,但并未检视决定其行为原因的脚手架代码。已有研究者呼吁建立架构感知的评估指标,将内部组件与可观察的结果关联起来 [^50],针对单个系统的详细架构描述也已存在 [^13],但据目前的文献检索所知,尚无研究在源代码层面系统性地比较过生产级编码智能体的脚手架架构。
这一空白的重要性体现在三个方面。第一,缺乏脚手架设计的共享词汇表,研究智能体行为的学者无法将观察到的差异归因于具体的架构选择;脚手架设计与模型能力之间的混淆因素未被认识到。此前的轨迹研究为不同的智能体使用了不同的 LLM [^34],导致无法判断行为差异究竟源于脚手架还是模型。第二,构建新编码智能体的实践者缺乏设计空间的系统性地图。架构决策——是使用持久化事件存储还是扁平消息列表,是为 LLM 提供十个专用工具还是一条 shell 命令,是通过摘要还是截断来压缩上下文——目前只能依赖阅读单个代码库或博客文章来做出,没有可供比较的参考资源(Section 2)。第三,快速的发展意味着设计空间的扩展速度超过了其被文档化的速度:本研究分析的 13 个智能体的发布时间跨越 2023 年 6 月至 2025 年 3 月,代表了不同的架构策略(固定流水线、顺序 ReAct 循环、分阶段工作流、深度优先树搜索以及完整的 MCTS),但此前没有任何研究对它们之间的关系进行过梳理。
本文提出了一套针对 13 个开源编码智能体脚手架的源代码级架构分类法。每个智能体的实现在固定的提交哈希处,沿 12 个维度进行分析,这些维度组织为三个层次:控制架构(智能体如何决定下一步做什么)、工具与环境接口(智能体如何与代码和执行环境交互)以及资源管理(智能体如何管理上下文、状态和模型)(Section 3.2)。分析遵循定性案例研究方法论,每一项分类法论断均以克隆仓库中的文件路径和行号为依据。
该分类法揭示了若干挑战编码智能体设计常见假设的发现。智能体并非落入离散的架构类别中,而是占据连续频谱上的不同位置:控制策略的分布范围从没有反馈循环的固定流水线(Agentless [^54])到具有奖励反向传播的完整蒙特卡洛树搜索(Moatless Tools [^40]),其中 13 个智能体中有 7 个使用顺序 ReAct 循环作为其主要控制结构。循环原语(ReAct、生成-测试-修复、计划-执行、多次重试)作为可组合的构建块,被智能体以不同方式分层组合,而非作为互斥的类型。工具集的规模从零个 LLM 可调用工具(Aider,由用户驱动所有导航)到 37 个动作类(Moatless Tools)不等,但底层的能力类别趋于收敛:读取、搜索、编辑和执行代码的功能出现在每一个赋予 LLM 自主权的智能体中。上下文压缩、状态管理和多模型路由各自呈现出类似的频谱,设计选择在一端侧重简洁性,在另一端侧重鲁棒性或搜索广度。五个跨维度主题——包括采样与迭代之间的权衡、子智能体委托作为一等工具的涌现以及 IDE 耦合的架构影响——跨越多个维度,捕捉了无法归结为单一轴线的模式。
本文的贡献如下:
- 一套编码智能体脚手架架构的分类法,源自对 13 个开源智能体的源代码分析,组织为三个层次和 12 个维度。据目前的文献检索所知,这是首个在实现层面对编码智能体进行比较的架构研究。
- 一项实证发现:脚手架架构更适合被表征为沿连续频谱排列的循环原语组合,而非离散架构类型的实例。
- 一份锚定到具体提交的架构观察详细证据库,为研究智能体行为的研究者和设计新脚手架的实践者提供了可复用的参考。
本文其余部分的结构如下。Section 2 综述了智能体架构、轨迹分析和编码智能体评估方面的相关工作。Section 3 描述了智能体选择标准、分析维度和编码流程。Section 4 从三个层次呈现分类法,包含证据表和跨维度主题。Section 5 解读研究发现并引申出对智能体设计和评估的启示。Section 6 讨论效度威胁。Section 7 以总结和未来工作方向作结。