<!-- title: 自治即沙箱：代码自主体六栈实测 -->

## 概述：决定胜负的不是模型，是挽具

2026 年的自主代码智能体（autonomous coding agent）赛道出现了一个反直觉现象：**同一个底层模型，换一套执行挽具，SWE-bench Verified 成绩可以摆动 30 个百分点以上**。Princeton 的 SWE-agent 团队用一个仅约 100 行的 Mini-SWE-agent 跑到约 74% 的解决率，而把同一个模型丢进一个裸 bash 循环里，成绩往往跌到 12% 量级。OpenHands（原 OpenDevin）靠 Docker Runtime + EventStream 事件环稳坐 72% 量级；Devin 把整个隔离 VM（终端+浏览器+编辑器）连同 Knowledge Base/Playbooks 打包成"云端队友"；Aider 则是反例——它根本不追求自治，而是用 tree-sitter 仓库地图 + 四种编辑格式把"配对编程"做到极致。

结论很尖锐：**模型决定智能体"想做什么"，执行沙箱决定它"能否做成"**。隔离边界、动作-观测协议、编辑格式、回滚能力——这些"看不见的地下结构"才是真正的护城河。本文以六栈实测拆解这条隐藏的主轴。

## 对比表格：五款代码自主体六栈横评

| 维度 | OpenHands | SWE-agent | Devin | Aider | Mini-SWE-agent |
|------|-----------|-----------|-------|-------|----------------|
| 形态定位 | 开源通用平台 | 研究型评测挽具 | 商业云端队友 | 终端配对编程 | 极简教学挽具 |
| 隔离边界 | Docker 容器沙箱 | Docker/本地容器 | 全 VM（终端+浏览器+编辑器） | 无沙箱（直跑本机） | 最小容器 |
| 动作协议 | EventStream（Action/Observation） | ACI（LM 中心化命令） | 托管会话+Playbook | 编辑格式+git 提交 | ~100 行裸 shell 环 |
| 编辑格式 | 整文件/补丁（运行时层） | 专用 edit 命令+滚动窗口 | 运行时内编辑器 | whole/diff/unified/search-replace | edit 命令 |
| 自治级别 | L4 高自治 | L4 高自治 | L5 全自治 | L2 配对（人在环） | L4 高自治 |
| SWE-bench Verified | ~72% | ~74%（Mini） | 商业未公开 | 非该基准 | ~74% |
| 记忆机制 | 事件日志+可持久化 | 会话轨迹 | Knowledge Base+Playbooks | git 历史+仓库地图 | 无持久化 |
| 上手成本 | 中（Docker+配置） | 中（研究向） | 低（云订阅） | 极低（pip 即用） | 极低 |
| 变现路径 | 平台/SDK/托管 | 咨询+基准服务 | 已商业（订阅/ACU 计费） | 训练营+插件 | 教学+咨询 |

> **自治级别（L1–L5）参考**：L1 自动补全 → L2 配对编程（Aider）→ L3 受监督执行 → L4 沙箱内自治（OpenHands/SWE-agent）→ L5 全流程自治、人只验收（Devin）。

---

## 深度分析

### 一、OpenHands：EventStream + Docker Runtime，事件驱动的动作-观测环

OpenHands 的架构可压缩成一句话：**模型发 Action，沙箱执行，回传 Observation，循环往复**。它由三大件构成——Agent 抽象（决定推理）、Runtime（决定执行）、EventStream（决定通信）。EventStream 是一个中心化的发布/订阅事件总线，任何组件都可以往里写事件或订阅事件，整个会话就是一条不可变的事件日志。这种设计带来一个被低估的好处：**会话即状态**——崩溃后可以重放事件日志恢复，评测系统可以逐帧回放每一次动作。

执行边界是它真正的工程含量所在。Runtime 默认是 Docker Runtime：智能体收到的每一条 bash、每一段文件写入，都在一个隔离容器里发生，主机文件系统零暴露。

```python
# OpenHands 动作-观测环的简化骨架
from openhands.action import CmdRunAction, FileWriteAction
runtime = DockerRuntime(image="nikolaik/python-nodejs:latest")
# Action 进入沙箱执行
obs = runtime.run_action(CmdRunAction("pytest -q"))
print(obs.content)        # Observation 回流给模型
```
```toml
# config.toml: 隔离边界即护城河
[core]
workspace_base = "./repo"
runtime = "docker"
sandbox_base_container_image = "nikolaik/python-nodejs"
```

优点是隔离干净、模型无关（任意 LLM 后端）、有官方 Software Agent SDK 可上生产；缺点是冷启动要拉镜像、容器编排对小白有门槛。**变现评估**：60K+ Star 的开源底盘最适合走"平台+托管+企业 SDK"三段式，训练营可包装"从 EventStream 到私有化部署"的进阶课。

### 二、SWE-agent：ACI 才是产品，模型只是租户

SWE-agent（Princeton NLP + Stanford）的论文标题已经把秘密写在脸上——*Agent-Computer Interfaces Enable Automated Software Engineering*。它的核心贡献不是又一个 agent loop，而是 **ACI（Agent-Computer Interface）**：一套为语言模型量身设计的命令与反馈格式。关键洞察是：**裸 bash 对人类友好，对 LM 极不友好**——命令输出无界、文件无滚动锚点、错误信息噪声大。ACI 的做法是把 `find_file`、`search_dir`、`open_file`、`edit` 等做成受控命令，强制每个命令输出有界、每屏文件有行号窗口、编辑必须落在可见行内。

```yaml
# SWE-agent ACI 片段：LM 中心化命令（非裸 shell）
custom_commands:
  - name: open_file
    doc: "打开文件，带行号窗口，默认显示 100 行"
  - name: edit
    doc: "替换可见行范围内的一段，失败时给出 diff 反馈"
  - name: search_dir
    doc: "在目录中搜索字符串，返回匹配文件与计数"
```

这套设计的代价是命令集合需要精心维护、对非 SWE-bench 场景要重做适配；收益是**同一模型成绩暴涨**，论文记录从裸终端的 12% 量级跃升到 SWE-agent 配置下的领先段位。**变现评估**：SWE-agent 是研究者和评测团队的首选基准挽具，适合做"ACI 咨询+企业内部 SWE-bench 评测服务"，而非直接做产品。

### 三、Devin：全 VM + Knowledge/Playbook，把"队友"装进云

Devin（Cognition Labs）是商业自治的最高形态，也是唯一把 L5 全自治作为默认体验的产品。它的执行边界不是容器，而是**一个完整的隔离 VM，内置终端、浏览器、代码编辑器三件套**——意味着智能体可以自己查文档、跑端到端测试、甚至操作有 UI 的部署控制台。但 Devin 真正的护城河在记忆层：**Knowledge Base**（持久化的组织上下文、代码规范、踩坑笔记）+ **Playbooks**（针对重复任务的自定义系统提示）。二者组合，让"上一个会话学到的部署流程"能复用到下一个会话。

```markdown
# Devin Playbook：重复任务的"自定义系统提示"
## 标准部署流程
1. 从 main 拉取并 rebase
2. 运行 pnpm test && pnpm lint
3. 通过后创建 PR，标题遵循 [scope]: 描述 规范
4. 指派给 @reviewer 并 @-mention 安全审查
```
```hcl
# Terraform 管理 Playbook（DevOps 友好）
resource "devin_playbook" "deploy" {
  body = file("./playbooks/deploy.md")
}
```

优点是体验最"甩手"、记忆跨会话、适合长周期项目；缺点是黑盒（评分不公开）、按 ACU/订阅计费成本不透明、强绑定 Cognition 云端。**变现评估**：Devin 本身已是商业样本，对内容创作者的价值在于"如何用 Playbook 把团队 know-how 沉淀成可复用资产"——这是一门极好的企业内训课。

### 四、Aider：反例，仓库地图 + 编辑格式，配对而非自治

把 Aider 放进"自治"榜单是要说明一个边界：**并非所有代码智能体都该追求 L5**。Aider 明确定位为终端里的配对编程（pair programmer），自治级别停在 L2——人在环里发指令，它负责改代码并自动 git 提交。它的两件技术法宝都和"自治"无关，却和"编辑保真度"强相关：其一是 **repo map**——用 tree-sitter 解析全仓符号，再用 **PageRank** 给符号按"被引用重要度"排序，把最相关的类/函数塞进上下文；其二是**四种编辑格式**（whole 全文重写、diff、unified diff、search-replace 替换块）。

```bash
# Aider：配对而非自治，git 是它的状态机
aider --model sonnet --edit-format udiff   # unified diff
# repo map = tree-sitter 解析符号 + PageRank 排序注入上下文
```
```python
# 编辑格式选择逻辑（简化）
def pick_edit_format(model, repo):
    if model.lazy:        return "udiff"   # 统一 diff，治"懒癌"
    if file_small:        return "whole"   # 小文件直接重写，最稳
    if reliable:          return "diff"    # 标准 diff
    return "search-replace"                # 兜底，定位即替换
```

unified diff 格式曾让 GPT-4 Turbo 的"懒编码"（只改一半就停）下降约 3 倍——这是编辑格式即生产力的硬证据。优点是零沙箱零负担、git 友好、编辑最可靠；缺点是不自治、无法跑长任务、无隔离有风险。**变现评估**：Aider 是训练营的完美入门——"四格式 + repo map"足够撑起一门"高保真代码编辑工程"课。

### 五、Mini-SWE-agent：100 行 74%，"挽具即壁垒"的铁证

这是整篇文章最该记住的实验。SWE-agent 团队发布了 Mini-SWE-agent，把核心 loop 压到约 100 行，却在 SWE-bench Verified 上跑到约 74%——逼近甚至超过许多重型框架。它用最少的代码证明：**自治代码智能体的最小充分集 = 一个沙箱 + 一个动作-观测环 + 一个像样的 ACI**，其余都是工程糖衣。

```python
# Mini-SWE-agent 核心：极简即真理
def run(task):
    sh = DockerShell()              # 1. 隔离沙箱
    history = []
    while True:
        tail = sh.tail_output(200)  # 2. 观测：末尾窗口，有界
        action = model(task, history, tail)   # 3. 推理
        if is_done(action): break   # 4. 终止判断
        sh.run(action)              # 5. 动作
        history.append((action, sh.tail_output(50)))
```

这条结论对选型有直接杀伤力：当你看到某框架宣称"独家算法提升 20 分"，先问一句"它换 ACI 了吗"。很多时候，所谓创新只是把滚动窗口、错误回显、编辑校验这些 ACI 细节做对了。**变现评估**：Mini-SWE-agent 是最好的教学锚点——"用 100 行手搓一个 74% 的自治智能体"是顶级训练营选题。

### 六、沙箱失效模式与五级自治：回滚、状态、成本三道暗礁

把上面五款放到一起，隐藏的失败模式集中在三处。**其一，状态失忆**：沙箱重启即归零，OpenHands 靠事件日志重放、Devin 靠 Knowledge/Playbook 跨会话，而 Aider 靠 git 历史兜底——没有持久化的沙箱跑长任务必崩。**其二，回滚缺失**：智能体会写错、会删错，"无退即停产"——能 `git reset` 的（Aider/OpenHands 的事件回放）才有资格谈 L4 以上自治。**其三，长任务成本**：沙箱里每一步都是一次模型调用，无人监管的 loop 是 token 黑洞，必须配预算闸与终止判断。

```mermaid
flowchart TD
    U[用户任务] --> CTL[Controller/Agent]
    CTL -->|Action| SBX{执行沙箱}
    SBX --> SHELL[Shell 命令]
    SBX --> EDIT[文件编辑]
    SBX --> BRW[浏览器/VM]
    SHELL --> OBS[Observation 有界观测]
    EDIT --> OBS
    BRW --> OBS
    OBS --> MEM[(记忆层<br/>事件日志/KB/git)]
    MEM --> CTL
    CTL -->|终止判断| DONE[交付: PR/补丁]
    CTL -.预算/超时.-> KILL[熔断]
    SBX -.崩溃可重放.-> MEM
    classDef box fill:#eef,stroke:#446,stroke-width:1px;
    classDef sand fill:#efe,stroke:#262,stroke-width:2px;
    classDef mem fill:#fee,stroke:#a33,stroke-width:1px;
    class CTL,SBX,OBS,DONE,KILL box;
    class SHELL,EDIT,BRW sand;
    class MEM mem;
```

上图把"看不见的地下结构"画出来了：**模型-控制器-沙箱-记忆四层，沙箱与记忆之间是可重放的契约**。一个自治代码智能体强不强，就看这条契约稳不稳。

---

## 推荐方案：按场景对号入座

- **研究/评测团队** → **SWE-agent**：基准就是为它而生，ACI 可定制，复现性最好。
- **要私有化部署的企业** → **OpenHands**：Docker 隔离 + SDK 可上生产 + 模型无关，合规可控。
- **甩手掌柜、跨会话长项目** → **Devin**：全 VM + Knowledge/Playbook，唯一原生 L5，预算够就上。
- **日常配对编程、追求编辑保真** → **Aider**：不追求自治，但 repo map + 四格式让改动又快又准，零沙箱负担。
- **学习/教学/原型验证** → **Mini-SWE-agent**：100 行手搓 74%，理解挽具本质的最佳入口。
- **变现/训练营设计** → 选题"挽具即壁垒"：用 Mini-SWE-agent 做 day1，OpenHands 做进阶，ACI/编辑格式做深度专题，最后落到 Playbook 化企业 know-how。

一句话收束：2026 年选代码自主体，**先看沙箱，再看协议，最后才看模型**。模型是租来的，挽具才是你自己的。

## 参考来源
1. [SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering (arXiv 2405.15793)](https://arxiv.org/abs/2405.15793) — ACI 设计的核心论文，证明命令界面比裸 shell 大幅提升解决率。
2. [OpenHands: An Open Platform for AI Software Developers as Generalist Agents (arXiv 2407.16741)](https://arxiv.org/html/2407.16741v3) — OpenHands 三组件架构（Agent/Runtime/EventStream）与 Docker 沙箱设计。
3. [OpenHands Runtime Architecture 官方文档](https://docs.openhands.dev/openhands/usage/architecture/runtime) — Docker Runtime 隔离边界与动作执行机制。
4. [SWE-agent Agent-Computer Interface 文档](https://swe-agent.com/0.7/background/aci/) — LM 中心化命令集合与滚动窗口反馈格式说明。
5. [How Aider's repomap uses PageRank and tree-sitter to rank your codebase](https://anishgandhi.com/aider-pagerank-codebase-ranking/) — Aider 仓库地图的 tree-sitter + PageRank 排序原理。
6. [Devin Advanced Capabilities / Creating Playbooks 官方文档](https://docs.devin.ai/work-with-devin/advanced-capabilities) — Devin 全 VM 隔离、Knowledge Base 与 Playbook 记忆体系。
7. [Autonomous Coding Agents in 2026: A Practical Guide (Tembo)](https://www.tembo.io/blog/autonomous-coding-agents) — 代码智能体五级自治（L1–L5）框架与控制权取舍分析。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
