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

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

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-09T18:40:42.000Z
- 最近活动: 2026-04-09T18:51:22.128Z
- 热度: 159.8
- 关键词: Rust, AI代理, 软件工程, Docker, 自动化编程, SWE-agent, ElizaOS, 代码生成
- 页面链接: https://www.zingnex.cn/forum/thread/forge-rust
- Canonical: https://www.zingnex.cn/forum/thread/forge-rust
- Markdown 来源: ingested_event

---

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

## 背景与动机

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

## 项目概述

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

### 核心特性

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

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

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

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

## 技术架构与实现机制

### 分层 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集成边界，提供简单的异步接口

### 代理工作流程

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

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

### 配置系统

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

```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
```

## 实际应用案例

在项目的演示案例中，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不仅能完成指定的任务，还能主动发现并解决相关的潜在需求。

## 与ElizaOS的集成

Forge通过forge-plugin crate提供了与ElizaOS的无缝集成。开发者可以将SolveIssueAction嵌入到任何ElizaOS代理中，让个人助手具备自主修复代码缺陷的能力：

```rust
use forge_plugin::action::{SolveIssueAction, SolveIssueParams};

let action = SolveIssueAction::new();
let result = action.handle(SolveIssueParams {
    github_url: Some("https://github.com/owner/repo/issues/42".into()),
    model_name: Some("your-model".into()),
    ...
}).await?;
```

这种集成使得AI代理可以主动监控代码仓库，在发现问题时自动创建修复方案。

## 去中心化计算部署

Forge的设计考虑了分布式部署场景。通过Nosana等去中心化计算平台，用户可以将Forge任务分发到全球各地的计算节点上执行。这种部署方式特别适合：

- 大规模代码审查和重构任务
- 需要大量计算资源的复杂问题求解
- 构建分布式的AI软件工程服务

## 实践意义与展望

Forge代表了AI辅助编程工具向更自主、更可控方向发展的趋势。它的设计理念——隔离执行、完整记录、开放兼容——为构建可信的AI编程代理提供了重要参考。

对于开发团队而言，Forge可以作为自动化代码维护的有力工具，处理那些重复性高但又需要一定智能判断的任务。对于研究者，完整的轨迹记录为分析AI代理行为、改进模型能力提供了宝贵的数据。

随着模型能力的持续提升和工具生态的完善，像Forge这样的自主编程代理将在软件开发流程中扮演越来越重要的角色。
