ETCLOVG 七层框架详解
论文提出的核心分类框架,用于系统性地描述 agent 执行框架的设计空间。
全景图
┌──────────────────────────────────────────────────────┐
│ Governance (G) │
│ 权限模型 · 生命周期钩子 · 组件加固 · 宪法 · 审计 │
├──────────────────────────────────────────────────────┤
│ Verification (V) │
│ 基准对齐 · 执行前验证 · 受控执行 · 多级判断 · 回归 │
├──────────────────────────────────────────────────────┤
│ Observability (O) │
│ 追迹监控 · 专用运维 · 成本追踪 · 可靠性工程 │
├──────────────────────────────────────────────────────┤
│ Lifecycle / Orchestration (L) │
│ 状态管理 · 单Agent内循环 · 多Agent编排 · 全流程管道 │
├──────────────────────────────────────────────────────┤
│ Context / Memory (C) │
│ 短期窗口 · 中期会话 · 长期记忆 · 长程技术 · 上下文漂移 │
├──────────────────────────────────────────────────────┤
│ Tool Interface (T) │
│ 协议标准 · 描述/发现/选择 · 工具增强训练 · 会话管理 │
├──────────────────────────────────────────────────────┤
│ Execution Environment (E) │
│ 通用沙箱 · 代码沙箱 · 浏览器环境 · 框架运行时 · OS级权限│
└──────────────────────────────────────────────────────┘
E: Execution Environment & Sandbox (执行环境与沙箱)
核心问题
agent 的指令在哪里被执行?
七大沙箱类别
| 类别 | 代表项目 | 特点 |
|---|---|---|
| 通用托管沙箱 | Daytona, E2B, Modal, Docker Sandboxes | OCI 容器 API, 可配置隔离级别 |
| 计算机使用代理 | Anthropic Computer Use, CUA | 全桌面环境, 鼠标/键盘/屏幕 |
| 代码专用沙箱 | Judge0, Code Interpreter, sandboxed.sh | 轻量, 预设编译器, 高并发 |
| 框架集成运行时 | OpenHands, smolagents, agent-infra | 与框架捆绑 |
| 浏览器评估环境 | WebArena, BrowserGym | 双角色: 沙箱 + 评估基准 |
| OS 级权限沙箱 | sandbox-runtime, IsolateGPT | 轻量, bubblewrap/seccomp, 不启动另OS |
| 沙箱抽象层 | SWE-ReX, K8s Agent Sandbox | 统一多种后端, 可替换执行环境 |
设计洞察
沙箱有三种使命:安全(隔离恶意代码)、可复现性(重置到已知基线)、活性/自由度(在受限区域内自由操作)。第三个是 agent 时代独有的——沙箱既是牢笼也是许可证。
T: Tool Interface & Protocol Layer (工具接口与协议)
核心组成部分
-
协议与接口标准
- MCP (Model Context Protocol) — Anthropic 推出的开放标准
- A2A (Agent-to-Agent) — Google 推出的 agent 间通信协议
- Function Calling API — OpenAI 的 native 工具调用接口
-
工具描述、发现与选择
- 描述:openAPI schema, JSON Schema
- 发现:MCP 的客户端-服务器发现机制
- 选择:embedding-based 检索 vs. 静态注册
-
工具增强训练与集成
- 通过微调让模型学会工具使用(如 Toolformer, ToolLLM)
- vs. 通过 prompt 诱导(in-context learning)
-
可扩展性与会话管理
- 大量工具的连接池
- 工具调用会话的生命周期
C: Context & Memory Management (上下文与记忆管理)
三层结构
短期 (Short-Term)
├── Active Context Window (当前对话窗口)
├── 窗口管理: 滑动窗口, 摘要压缩, 关键信息保存
└── Token 预算策略: 固定/动态/优先级分配
中期 (Mid-Term)
├── Session State (会话状态)
├── 跨运行持久化 (文件, 数据库)
└── Checkpoint/Restore 机制
长期 (Long-Term)
├── Persistent Memory Systems
├── Vector + Graph + Relational 混合存储
└── 记忆检索: RAG, 主动检索, 反思
为什么上下文需要工程?
- Cost-Grows-With-Input:输入的 token 成本主导了总推理成本
- Lost-in-the-Middle:模型对长上下文中间部分注意力下降
- Context Drift:agent 在长程对话中逐渐偏离原始指令
- 关键缺失:没有标准化的 context budget API(不像传统 OS 有 malloc/free)
L: Lifecycle & Orchestration (生命周期与编排)
单 Agent 内循环
Observe → Think → Act → Observe → ...
典型实现:
while True:
observation = observe(environment)
thought = think(observation, context)
action = decide(thought, tools)
result = execute(action)
context.append(result)多 Agent 编排模式
| 模式 | 描述 | 代表 |
|---|---|---|
| 角色扮演对话 | 两个 agent 扮演不同角色对话 | CAMEL |
| 软件公司 | agent 组成虚拟公司, 各司其职 | ChatDev, MetaGPT |
| 分层聚合 | 多个 agent 输出后投票/聚合 | Mixture-of-Agents |
| 管理者-工人 | 一个 manager agent 分配任务给 worker | 多种框架 |
全流程管道
从 Issue → PR 的完整生命周期:问题理解 → 方案设计 → 编码 → 测试 → 代码审查 → 提交
O: Observability & Operations (可观测性与运维)
层级结构
- Traces — 完整调用链路(LLM 调用 → 工具调用 → 嵌套调用)
- Metrics — 延迟、成功/失败率、token 消耗
- Costs — 按模型/任务/用户追踪推理成本
- Logs — 结构化日志、失败模式分析
- Reliability — 重试策略、熔断、降级
代表性工具
- OpenTelemetry (基础设施标准)
- Langfuse (开源,agent 专用)
- AgentOps、Arize AI、MLflow
V: Verification & Evaluation (验证与评估)
五阶段评估生命周期
- 任务与基准对齐:定义什么算”正确”
- 执行前就绪验证:环境是否准备好?工具是否可达?
- 受控执行与轨迹捕获:记录每一步
- 多级判断与失败归因:
- 单元测试级别的精确匹配
- 语义级别的模糊匹配
- 人工审查
- 自动失败归因(哪一步出错了?为什么?)
- 持续回归与部署反馈:防止回归,从生产中学习
评估基准生态系统
- SWE-bench, Terminal-Bench, WebArena, GAIA, OSWorld
G: Governance & Security (治理与安全)
五层治理模型
- 权限模型:哪些 agent 可以做什么?
- 角色基础访问控制 (RBAC)
- 工具级 vs 操作级权限
- 生命周期钩子:在关键节点注入策略
- 执行前钩子(该操作被允许吗?)
- 执行后钩子(结果无害吗?)
- 组件加固:防止框架本身被攻击
- 声明式宪法:用代码表达 agent 行为约束(类似 Anthropic 的宪法 AI)
- 审计基础设施:谁做了什么?为什么?
三层安全架构
┌─────────────────────────────────┐
│ 组织级:审计、合规、人机协作 │
├─────────────────────────────────┤
│ 系统级:API 网关、权限引擎、 │
│ 内容过滤代理 │
├─────────────────────────────────┤
│ 模型级:安全护栏、内容过滤器 │
└─────────────────────────────────┘