
在上一篇文章中,我们了解了什么是 Agent Harness。今天,我们将深入 Harness 的内部架构,剖析从模型到执行的六层设计。理解这套架构,是构建可靠 Agent 系统的关键。
一、六层架构概览
一个完整的 Agent Harness 可以分解为六个层次,每层负责不同的职责,共同构成从用户输入到执行完成的完整链路:
| 层级 | 名称 | 核心职责 |
|---|---|---|
| Layer 6 | 应用层 | 用户界面、对话管理、会话状态 |
| Layer 5 | 编排层 | 任务分解、工作流管理、Agent 调度 |
| Layer 4 | 上下文层 | Prompt 组装、记忆管理、RAG 检索 |
| Layer 3 | 模型层 | LLM 调用、多模型路由、响应解析 |
| Layer 2 | 工具层 | 工具注册、执行沙箱、结果处理 |
| Layer 1 | 基础设施层 | 权限控制、日志监控、安全隔离 |
二、Layer 1:基础设施层
这是最底层,为整个系统提供运行基础:
- 权限控制:决定 Agent 能访问什么资源、执行什么操作
- 沙箱隔离:代码执行在 Docker 或受限环境中运行
- 日志监控:记录所有操作,便于审计和调试
- 密钥管理:API Key、数据库凭证的安全存储
最佳实践:使用 Docker 作为执行沙箱,设置网络隔离,限制文件系统访问范围。
三、Layer 2:工具层
工具层负责管理 Agent 可调用的所有能力:
- 工具注册:定义工具的输入输出 schema、描述、权限要求
- 执行引擎:调用本地命令、API、数据库等
- 结果处理:格式化执行结果,处理错误和异常
- 工具发现:根据任务自动选择合适的工具
关键洞察:Vercel 将工具从 15 个减少到 2 个,准确率反而提升。工具贵在精不在多。
四、Layer 3:模型层
模型层处理与 LLM 的所有交互:
- 模型路由:根据任务复杂度选择不同模型(简单任务用轻量模型,复杂任务用强模型)
- 响应解析:从模型输出中提取工具调用、推理链、最终答案
- 流式处理:实时返回模型生成的内容
- 错误重试:处理模型超时、限流、格式错误
五、Layer 4:上下文层
这是 Harness 最核心的层之一,直接决定 Agent 的表现:
- Prompt 组装:将系统提示、工具定义、历史对话、检索内容组合成最终 Prompt
- 记忆管理:短期记忆(当前会话)和长期记忆(跨会话知识)
- 上下文压缩:当对话过长时,智能摘要保留关键信息
- RAG 检索:从向量数据库检索相关知识
Andrej Karpathy 称之为「Context Engineering」——在正确的时间把正确的信息放入上下文窗口的艺术。
六、Layer 5:编排层
编排层负责复杂任务的分解和调度:
- 任务分解:将复杂目标拆分为可执行的子任务
- 工作流管理:定义任务间的依赖关系和执行顺序
- Agent 调度:多 Agent 场景下的任务分配
- 状态机:管理任务执行的状态转换
七、Layer 6:应用层
最顶层,直接面向用户:
- 对话界面:CLI、Web UI、IM 集成(飞书/钉钉/微信)
- 会话管理:创建、切换、保存对话会话
- 用户配置:模型选择、工具开关、权限设置
- 反馈收集:用户对 Agent 输出的评价和改进建议
八、六层协作流程示例
以「整理 Downloads 文件夹」为例,看六层如何协作:
- 应用层:用户输入「整理我的 Downloads 文件夹」
- 编排层:分解为「扫描文件→分类→移动→报告」四个子任务
- 上下文层:组装 Prompt,包含文件操作工具定义和历史记录
- 模型层:调用 LLM 生成文件扫描命令
- 工具层:在沙箱中执行 ls、find 等命令
- 基础设施层:确保命令在受限环境中运行,记录操作日志
九、总结
六层架构为 Harness Engineering 提供了清晰的设计蓝图。每一层都有其明确的职责边界,层与层之间通过定义良好的接口通信。在实际开发中,你可以根据需求选择实现全部六层,或者聚焦于特定层的优化。
下一篇文章,我们将进入实战环节,手把手教你从零搭建第一个 Harness。
📚 Harness Engineering 入门到实战系列
本系列手把手教你从零开始掌握 Harness Engineering:
