Zing 论坛

正文

Forge:用Rust构建的自主软件工程代理框架

Forge是一个完全用Rust编写的自主AI软件工程代理,能够在隔离的Docker沙箱中自动完成代码编写、编辑和测试,直到生成验证通过的补丁。

RustAI代理软件工程Docker自动化编程SWE-agentElizaOS代码生成
发布时间 2026/04/10 02:40最近活动 2026/04/10 02:51预计阅读 4 分钟
Forge:用Rust构建的自主软件工程代理框架
1

章节 01

导读 / 主楼:Forge:用Rust构建的自主软件工程代理框架

Forge是一个完全用Rust编写的自主AI软件工程代理,能够在隔离的Docker沙箱中自动完成代码编写、编辑和测试,直到生成验证通过的补丁。

2

章节 02

背景与动机

随着大型语言模型能力的不断提升,AI辅助编程已经从简单的代码补全进化到了能够自主完成复杂任务的阶段。然而,现有的AI编程工具往往存在几个关键问题:执行环境不安全、难以追踪代理的完整工作过程、以及缺乏可复现性。Forge项目正是为了解决这些问题而诞生的——它是一个完全用Rust编写的自主软件工程代理框架,强调安全性、可观测性和可扩展性。

3

章节 03

项目概述

Forge的核心设计理念是将AI代理运行在完全隔离的环境中。它通过启动一个Docker沙箱容器,在其中克隆目标代码仓库,然后让AI代理自主地探索代码库、编写修改、执行测试,直到生成一个验证通过的补丁。整个过程都被完整地记录下来,形成可追溯的轨迹文件。

4

章节 04

核心特性

隔离执行环境:每个任务都在独立的Docker容器中运行,确保AI代理的操作不会影响宿主系统。这种设计不仅提供了安全保障,还保证了执行环境的可复现性。

完整的轨迹记录:每一次运行都会生成一个详细的.traj文件,记录了代理执行的所有命令、输出结果、模型响应和时间戳。这使得开发者可以完整地复盘AI的决策过程,便于调试和优化。

OpenAI兼容API支持:Forge可以与任何兼容OpenAI API的模型端点配合使用,包括Gemini、Claude、以及各种自托管模型。这种开放性让用户可以根据任务需求选择最合适的模型。

多平台部署:除了本地运行,Forge还可以部署到Nosana等去中心化计算网络上,利用分布式计算资源处理大规模任务。

5

章节 05

分层 crate 设计

Forge采用严格的Rust工作空间结构,各crate之间形成清晰的分层依赖关系,避免了循环依赖:

  • forge-types:共享数据类型定义,包括历史记录、轨迹、模型输出等纯数据结构
  • forge-tools:解析器(ThoughtAction、XML、FunctionCalling等)和文件操作工具
  • forge-model:模型抽象层,支持OpenAI兼容端点、Anthropic API、回放模型和人机协作模式
  • forge-env:Docker运行时管理,包括持久化的bash会话和仓库操作
  • forge-agent:代理主循环,包含历史处理器和问题陈述处理
  • forge-run:单任务和批处理运行器,支持YAML配置加载
  • forge-plugin:ElizaOS集成边界,提供简单的异步接口
6

章节 06

代理工作流程

当用户提交一个任务时,Forge会按照以下流程执行:

  1. 获取问题描述:从GitHub Issue、文本或文件中读取任务描述
  2. 启动隔离沙箱:创建Docker容器,执行初始化命令(克隆仓库、配置git等)
  3. 进入代理循环
    • 应用历史处理器压缩和优化对话历史
    • 渲染系统提示和实例模板
    • 调用模型获取思考和行动
    • 解析模型输出中的bash命令
    • 在沙箱中执行命令并记录观察结果
    • 重复直到任务完成或达到步数限制
  4. 捕获结果:将git diff作为补丁输出
  5. 保存轨迹:完整记录写入.traj文件
7

章节 07

配置系统

Forge支持灵活的YAML配置,可以精细控制代理行为:

agent:
  model_name: models/gemini-2.0-flash-001
  base_url: https://generativelanguage.googleapis.com/v1beta/openai
  api_key: $FORGE_API_KEY
  max_steps: 25
  parser_type: thought_action

env:
  image: forge-sandbox:latest
  repo_path: /repo
  timeout_secs: 120
  startup_commands:
    - "git clone --depth 1 https://github.com/owner/repo /repo"
    - "git -C /repo config user.email forge@forge.local"

problem_statement:
  type: github_issue
  url: https://github.com/owner/repo/issues/42
8

章节 08

实际应用案例

在项目的演示案例中,Forge成功解决了GitHub Issue #25:在TypeScript项目中添加一个邮箱验证工具函数。代理的执行过程展示了其能力:

  1. 首先探索项目结构,发现src目录下没有utils文件夹
  2. 创建src/utils/validation.ts文件,实现isValidEmail函数
  3. 同时创建了src/utils/string.ts文件,实现truncate字符串截断函数
  4. 执行submit命令生成git diff补丁

整个过程在8步内完成,最终生成的补丁被自动应用并推送到Pull Request #26。这个案例展示了Forge不仅能完成指定的任务,还能主动发现并解决相关的潜在需求。