SaaSBench:探索编码代理在长期企业级SaaS工程中的能力边界 SaaSBench: Exploring the Boundaries of Coding Agents in Long-Horizon Enterprise SaaS Engineering
首个企业级SaaS开发编码代理基准测试,覆盖30个复杂任务和5370个验证节点
前置知识
编码代理(Coding Agent)
编码代理是基于大型语言模型的自主系统,能够理解自然语言需求、规划任务、生成代码、与环境交互并进行迭代调试。它集成了终端访问、文件系统和运行环境到统一的代理循环中,支持长周期规划、实现和调试。现代编码代理分为IDE集成助手和自主导向框架两类,前者从上下文感知的代码补全向跨文件修改演进,后者则通过工具调用来完成端到端软件工程任务。
本文核心是评估编码代理在企业级SaaS开发中的能力,理解编码代理的工作原理和能力边界是读懂本文的基础。
SaaS(Software as a Service)
软件即服务是一种通过互联网提供软件应用的交付模式,用户无需在本地安装和维护软件。企业级SaaS系统通常具有高度复杂性,包括前端界面、后端API、持久化数据模型、基于角色的权限系统、部署配置等完整系统结构。与简单的函数级或玩具项目不同,真实SaaS开发需要联合设计实现多个组件,涉及跨组件工作流、数据一致性和复杂业务逻辑。
SaaSBench专注于评估编码代理在真实企业级SaaS开发场景中的能力,理解SaaS的复杂性是理解本文挑战性的关键。
有向无环图(DAG)
有向无环图是由节点和有向边组成的图结构,其中没有环。在SaaSBench中,DAG用于组织评估范式,每个节点对应一个独立评分的验证单元,每条边明确表示节点之间的先决依赖关系。节点包含按顺序执行的基本验证原语链,通过先决依赖门控和失败传播控制,实现可重现的客观评估。与传统的扁平单元测试不同,DAG能够准确刻画复杂业务流程中的先决依赖和状态依赖。
DAG评估范式是SaaSBench的核心创新,理解它有助于理解本文如何解决长周期、高交互性系统开发的评估难题。
产品需求文档(PRD)
产品需求文档是详细描述软件产品功能需求、技术要求、数据模型、核心业务流程、API契约、权限策略、边界规则和构建步骤的文档。在真实企业开发中,PRD通常是长文档,包含大量关键信息。与大多数基准测试只保留简短问题描述不同,SaaSBench中的PRD平均包含4363行,尽可能保留了系统级开发所需的所有关键信息,使其更接近真实企业开发中使用的长文档需求输入。
PRD是SaaSBench的核心输入之一,理解PRD的结构和作用有助于理解本文如何模拟真实企业开发场景。
研究动机
现有编码代理基准测试存在三个关键局限性,无法有效评估代理在企业级SaaS开发中的真实能力。首先,缺乏真实市场基础。现有基准通常先定义任务实例然后从它们抽象类别,导致任务缺乏明确的市场起源、稳定的产品类别和明确定义的业务边界。例如,HumanEval、MBPP、APPS等只关注函数级代码生成,缺乏真实商业SaaS产品的复杂性和业务逻辑。其次,系统复杂性有限。大多数现有基准在以单语言、单组件或弱耦合架构为中心的软件开发设置中运行,而真实SaaS系统开发通常需要联合设计实现前端、后端、数据库、认证、部署和跨组件工作流。例如,ProjectEval、NL2Repo-Bench等虽然要求从零开始构建完整项目,但仍限于Python单一语言。第三,评估机制不足。现有对端到端开发任务的评估通常依赖扁平的端到端信号,如执行结果和单元测试通过率。这些评估方法缺乏明确定义和充分约束,只适用于相对简单的软件开发任务,无法刻画复杂真实业务流程中的先决依赖、状态依赖等约束。
本文的目标是本文的具体目标是引入SaaSBench,第一个系统设计用于真实企业级SaaS开发场景的编码代理基准测试系统。SaaSBench从真实软件开发市场和其开源产品实现出发,通过严格多阶段流程和严格质量验证构建基准。它包含6个高级SaaS域中的30个任务实例,覆盖主流SaaS软件开发场景。每个任务包含长上下文产品需求文档、歧义消除知识库、标准化运行环境和基于DAG的测试套件。该设计评估编码代理是否能完成从零开始的完整工程循环,包括需求理解、系统实现、调试、部署和执行。此外,本文设计了一个依赖感知混合评估范式,用于长周期和高度交互的端到端系统开发任务,为下一代可靠的系统级编码代理的发展提供实践和具有挑战性的试验平台。
与已有工作不同的是,本文的独特切入角度在于从真实软件开发市场和开源产品实现出发构建基准,而非从抽象任务定义开始。SaaSBench通过多阶段系统化工作流程构建,包括候选仓库审计、PRD编写、KB组织、标准化容器环境准备、DAG测试套件实现和严格质量验证。这种从真实市场到基准构建的逆向工程方法,确保了任务的真实性和多样性。此外,本文引入依赖感知混合评估范式,以DAG为核心组织评估,每个验证节点编译为可执行原语组成的线性检查链,通过先决依赖门控、失败传播控制和三种评分机制实现可重现和客观评估。这与传统依赖扁平端到端信号的评估方法形成本质区别,特别适用于长周期、高交互性和多依赖的系统开发任务。
核心方法
SaaSBench的整体思路是从真实软件开发市场和开源产品实现出发,通过多阶段人机协作构建基准,然后使用依赖感知混合评估范式评估编码代理的能力。首先,从行业分类、公开商业产品景观和领域专家咨询中定义候选域,选择满足稳定商业SaaS用例、可识别产品形式和核心技术挑战不与其他选定域实质性冗余条件的域。然后,为每个选定域选择种子仓库,要求仓库显示持续维护和社区活动信号、提供完整SaaS系统形式并保持清晰主要业务边界。接着,通过分析每个仓库的代码结构、配置文件、路由定义、数据模型、现有测试和关键业务逻辑,生成长上下文PRD,保留尽可能多的系统级开发所需信息。同时,构建歧义消除KB来处理难以用自然语言需求稳定表达的行为细节。最后,为每个任务构建标准化运行环境,并实现DAG测试套件来评估编码代理的端到端开发能力。
SaaSBench的核心创新是引入依赖感知混合评估范式,以有向无环图DAG G = (V, E)为中心组织评估,其中每个节点v ∈ V对应独立评分的验证单元,每条边e ∈ E明确表示节点之间的先决依赖。这与传统的扁平单元测试评估形成本质区别,传统评估主要依赖执行结果和单元测试通过率等扁平端到端信号。DAG范式通过先决依赖门控和失败传播控制,解决复杂长周期系统评估中的基础噪声问题。当节点先决依赖不满足时,节点不会被简单地标记为直接失败,而是被标记为Skipped dependency,这防止基础错误在所有下游节点中被重复惩罚。此外,节点评分分为三类:binary用于必须完全正确的场景如权限门控和安全约束,weighted用于允许部分完成的场景如多步CRUD工作流,llm-as-judge仅当确定性断言不能充分刻画目标时使用,如页面布局的合理性。每个评估节点分配到六个工程能力维度之一:Deploy、Data、API、Logic、AuthZ和Quality,实现全面评估。
方法步骤详情
SaaSBench的构建流程分为四个主要步骤。第一步是SaaS域定义和种子仓库选择,从真实软件开发市场和行业分类中定义候选域,为每个域选择满足持续维护、完整SaaS系统形式和清晰业务边界的种子仓库,然后进行冷启动验证要求每个仓库能独立构建、成功启动并通过基本冒烟测试。第二步是PRD和KB构建,通过分析种子仓库的代码结构、配置文件、路由定义、数据模型、现有测试和关键业务逻辑,生成包含技术要求、完整数据模型、核心业务流程、API契约、权限策略、边界规则、部署约束和构建步骤的长上下文PRD,同时构建歧义消除KB来处理难以稳定表达的行为细节如默认分页规则、删除语义或回退逻辑。第三步是环境构建和DAG测试套件实现,为每个任务构建容器化的标准化运行环境,预装所需的系统包、系统依赖、数据库服务、端口映射和环境变量,然后通过扫描PRD将每个可验证需求映射为候选节点,对齐KB中的潜在歧义断言,将每个节点编译为具有反映真实业务流程的先决依赖的可执行线性原语链。第四步是质量验证,通过将种子仓库的上游源代码部署在与评估相同的标准化运行环境,要求参考实现通过完整测试套件,对llm-as-judge节点允许有界方差,只有通过此验证的任务才包含在基准中。
技术新颖性
SaaSBench的技术新颖性体现在三个方面。首先,它是第一个基于真实软件开发市场而非抽象任务定义的编码代理基准。通过从行业分类、商业产品景观和领域专家咨询中定义候选域,从真实开源产品实现出发构建基准,确保任务的真实市场基础和稳定性。这与大多数现有基准先定义任务实例然后抽象类别的方式形成本质区别。其次,它引入依赖感知混合评估范式,以DAG为核心组织评估,通过先决依赖门控、失败传播控制和三种评分机制,实现可重现和客观的长周期、高交互性系统开发任务评估。这与传统依赖扁平端到端信号的评估方法形成本质区别,特别适用于多用户交互、多模型数据操作和跨模块业务流程的真实SaaS系统评估。第三,它系统定义了六个工程能力维度(Deploy、Data、API、Logic、AuthZ、Quality),覆盖真实软件开发生命周期中必须验证的关键工程方面,实现了从服务启动、数据建模到工程质量的全面评估。这与大多数现有基准主要关注功能正确性的评估方法形成本质区别。
实验结果
SaaSBench对当前最先进的编码代理提出了实质性挑战。如表2和图1所示,最佳结果仅为20.68%,由Claude Code下的Claude Opus 4.7实现。平均而言,Claude Code达到11.64%的性能,OpenHands达到9.26%。这些结果表明,当前的基于LLM的编码代理仍然难以可靠地基于自然语言需求从零开始生成完整的企业级SaaS系统,端到端SaaS构建远未解决。跨SaaS域的性能分析显示,模型在安全身份基础设施SI和数据内容基础设施DCI上表现相对较好,而在商业金融CF和生产力协作PC上表现持续较弱。这种差异表明,当前编码代理更容易处理具有清晰结构和明确定义接口边界的基础设施导向任务,但仍然在涉及复杂业务语义、长周期状态依赖和多用户协作行为的场景中面临实质性挑战。特别是,CF任务中的账单、订单和财务状态一致性,以及PC任务中的日历交互和共享状态管理,通常要求代理在前端、后端、数据库和权限逻辑之间保持跨组件一致性,这些结果进一步刻画了当前模型在不同SaaS产品形式中的能力边界。表3显示,失败不是均匀分布的。Deploy通常是得分最高的维度,表明当前编码代理已经具备服务启动和基本运行环境配置的一些能力。Data处于中间水平,而API、Logic和AuthZ得分较低,表明代理在接口契约一致性、持久状态建模、业务状态转换和角色权限控制方面仍然面临明确困难。最突出的瓶颈在于Quality维度,得分显著低于其他工程能力维度,表明即使代理能够生成成功启动并实现一些本地功能的服务,它们仍然缺乏足够的代码组织、前端渲染质量、边缘情况处理和整体工程健壮性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Overall Pass@1 | Pass@1 (%) | 20.68 (Claude Opus 4.7 + Claude Code) | 11.64 (Claude Code average) | +77.7% |
| Node Coverage | Coverage (%) | 18.50 (Claude Opus 4.7 + Claude Code) | 9.26 (OpenHands average) | +99.8% |
| Customer & Growth Domain | Pass@1 (%) | 21.51 (Claude Opus 4.7 + Claude Code) | 7.63 (Claude Opus 4.7 + OpenHands) | +181.9% |
| Security, Identity & Infrastructure Domain | Pass@1 (%) | 37.14 (Claude Opus 4.7 + Claude Code) | 7.69 (Claude Opus 4.7 + OpenHands) | +383.0% |
| Deploy Dimension | Score (%) | 22.76 (Claude Opus 4.7 + Claude Code) | 12.81 (Gemini 3.1 Pro + Claude Code) | +77.7% |
| Quality Dimension | Score (%) | 2.66 (Claude Opus 4.7 + Claude Code) | 2.32 (Gemini 3.1 Pro + Claude Code) | +14.7% |
局限与改进
作者承认的局限性包括:第一,SaaSBench使用的模型版本是固定的,编码代理领域发展迅速,新的模型和框架不断涌现,基准可能需要定期更新以保持相关性。第二,验证节点的数量有限,虽然包含5370个可执行验证节点,但对于复杂的真实SaaS系统,可能需要更多的验证节点来全面评估系统能力。第三,基准仅覆盖代码生成方面,未涵盖系统维护、性能优化、用户体验等其他软件开发方面。第四,受限于算力和时间,仅评估了代表性的编码代理框架,可能无法全面反映所有框架的能力。基于对论文的独立观察,我认为还有一些额外的局限性:首先,基准虽然涵盖8种编程语言、6种数据库类型和13种框架,但某些语言或框架的覆盖可能仍然有限,例如某些新兴语言或框架可能未包含在内。其次,DAG测试套件虽然基于PRD和KB系统构建,但某些复杂业务场景可能仍然难以通过可执行原语完全刻画,例如某些涉及复杂决策逻辑或高度动态行为的功能。第三,评估虽然包含llm-as-judge节点来处理无法用确定性断言充分刻画的目标,但LLM判断本身可能存在主观性和不一致性,即使设置temperature=0也可能存在一定的变异性。第四,基准虽然使用标准化运行环境来确保可重现性,但不同的硬件配置、网络环境或系统配置可能仍然影响评估结果的可重现性。
独立分析的弱点
基于对论文的独立分析,我认为SaaSBench存在以下具体弱点和改进方向。首先,基准对多组件系统集成的挑战关注不足。虽然论文揭示了超过95%的任务失败发生在代理到达深度业务逻辑之前,但基准对配置错误、依赖管理、基础架构设置等系统级工程挑战的评估可能仍然不够细致。改进方向是增加更多针对系统级工程设置的验证节点,例如数据库迁移、服务发现、负载均衡、容器编排等,更全面地评估代理在多组件系统集成方面的能力。其次,基准对长期维护和演进的评估不足。真实SaaS系统开发不仅包括从零开始构建,还包括长期维护、功能迭代、性能优化、故障排查等。改进方向是引入维护和演进场景的评估,例如在现有系统上添加新功能、修复bug、优化性能、迁移数据等,评估代理在长期维护场景中的能力。第三,基准对协作和多角色交互的评估有限。真实SaaS开发通常涉及多角色协作,例如产品经理、设计师、前端开发、后端开发、测试工程师等。改进方向是引入多角色协作场景的评估,例如模拟不同角色提出需求、审查代码、报告bug等,评估代理在多角色协作环境中的能力。第四,基准对安全性和合规性的评估不足。企业级SaaS系统通常需要满足严格的安全性和合规性要求,例如数据加密、访问控制、审计日志、合规认证等。改进方向是增加更多安全性和合规性验证节点,评估代理在构建安全合规SaaS系统方面的能力。
未来方向
作者提出的未来工作方向包括:扩展更多SaaS领域和任务类型以增加基准的多样性和覆盖面,例如增加更多垂直领域如医疗SaaS、金融SaaS、教育SaaS等,以及更多任务类型如实时数据处理、机器学习服务、区块链应用等。此外,作者还提出开发针对长周期、高交互性系统的新评估方法,例如基于模型代理的评估、动态测试生成、自适应测试选择等。基于对论文成果的可延伸方向,我认为还有以下未来研究方向:首先,开发更精细的能力维度分析。虽然基准定义了六个工程能力维度,但可以进一步细分每个维度,例如将API维度细分为API设计、API实现、API文档、API测试等子维度,更精细地刻画代理的能力边界。其次,引入更复杂的交互场景。当前基准主要评估代理从零开始构建SaaS系统的能力,未来可以引入更复杂的交互场景,例如代理与人类开发者的协作、代理与代理之间的协作、代理在多步骤决策中的表现等。第三,开发更智能的评估方法。虽然当前评估使用三种评分机制,但可以进一步开发更智能的评估方法,例如基于机器学习的评估、自适应评估权重、上下文感知评估等,提高评估的准确性和效率。第四,建立基准社区和持续更新机制。编码代理领域发展迅速,建立基准社区和持续更新机制可以确保基准保持相关性和有效性,例如定期举办基准竞赛、收集社区反馈、更新任务和评估方法等。
复现评估
SaaSBench的复现性评估如下:代码方面,论文指出代码可在https://github.com/ShadeCloak/SaaSbench获取,这为研究者提供了复现的基础。数据方面,基准包含30个任务实例,每个任务包含PRD、KB、标准化运行环境和DAG测试套件,这些数据应该随代码一起发布,为研究者提供了完整的复现所需数据。算力方面,评估编码代理需要大量的计算资源,包括运行编码代理本身、部署和测试生成的SaaS系统、执行DAG测试套件等。论文中未明确报告具体的算力需求,但从实验设置来看,需要多个GPU来运行不同的LLM后端,以及足够的CPU和内存来运行Docker容器和SaaS系统。难度方面,复现SaaSBench需要多个技能:配置和运行编码代理框架(如OpenHands和Claude Code)、管理Docker容器和标准化运行环境、执行DAG测试套件、分析和解释评估结果等。虽然论文提供了详细的描述和代码,但对初学者来说仍然具有一定难度。总的来说,SaaSBench在开源代码、完整数据和详细文档方面做得较好,为研究者提供了良好的复现基础,但由于评估的复杂性和资源需求,完全复现所有实验可能需要相当的时间和资源投入。
论文图表