Framework / Runtime / Harness · 三层模型
这三个词在生态里被反复用,但它们不是同一个抽象。把它们解耦看,选型空间一下就清楚了。
Core Curriculum
Level 2 · 工程判断
阅读时间 · 20 分钟
练习 · 建议必做
低波动
Last reviewed · 2026-04-22
你将学会什么
- 理解《Framework / Runtime / Harness / 三层模型》在 agent harness / coding agent 学习路径里的核心作用。
- 能用本页给出的判断法区分“概念、机制、边界、代价”。
- 知道这页内容之后会在哪一章被复用到源码阅读或动手实践里。
学习前提
建议先读《本章索引》;如果你是跳读,至少先看本章索引与本页 TL;DR。
这页在课程中的位置
runtime 认知层,用来分清编排、执行、持久化与产品边界。
本页 1 句话结论
这三个词在生态里被反复用,但它们不是同一个抽象。 把它们解耦看,选型空间一下就清楚了 。
带走的判断法
先分清谁负责编排、谁负责执行、谁负责产品化,再评估复杂度。
Source Policy
课程主线:稳定 runtime 机制 + 官方实现。
TL;DR
- "Agent 框架"这个口语词其实糊了三件事:Framework(积木)/ Runtime(执行引擎)/ Harness(默认能力)。三层各自有不同的主问题、不同的代表玩家、不同的可换性。
- 同一个产品可以在 3 层上分别用不同方案——比如"用 LangGraph runtime + Deep Agents harness + 自定义 framework primitives"是合法组合。混着选才是常态。
- "对标"两个产品时,先问"它们对标的是哪一层"。Cursor 对标 Claude Code 是产品层;LangGraph 对标 Inngest 是 Runtime 层;Deep Agents 对标 OpenAI Agents SDK 是 Harness 层。跨层对标会得出无意义结论。
- 3 层之外还有L0 模型 API(Anthropic / OpenAI Messages)和 L4 产品(Cursor 等带 UI 的应用)——这两层在章 1 第 01 节已讲;本节专注中间 3 层。
1. 为什么三层不是一回事
每一层解决的"主问题"完全不同:
- Framework 层解决的是"我用什么积木拼"——节点是什么、状态是什么、工具是什么、消息是什么。它给你 抽象,不给你 执行。
- Runtime 层解决的是"积木拼起来怎么跑"——谁调度、状态怎么持久化、崩溃了怎么恢复、中断了怎么 resume、流式输出怎么处理。
- Harness 层解决的是"开箱给我一个能用的 agent"——默认 system prompt、默认 ReAct loop、默认 todos / files / task 这些通用工具、默认的 middleware 集合。
三个直觉对照:
- Web 类比:Framework ≈ HTTP 库(Werkzeug / Hyper);Runtime ≈ ASGI 服务器(uvicorn);Harness ≈ 全栈应用框架(Django / Rails,连同 admin、auth、ORM 都给你)。
- 对偶映射:Framework 给"原语",Runtime 给"调度",Harness 给"配方"。
- 可换性:往下越难换、往上越易换。换 framework 等于重写;换 runtime 是大手术;换 harness 通常是配置变化。
2. 三层 · 可点击
点击每一层看它的主问题、典型代表、关键 API、容易和哪一层混淆: