# 选型 · 从零写之后，何时该用框架 · Agent 实战 · 从零构建完备智能体

**作者** Aklman · **章节** 15 / 19 · **首发** 2026.07 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/build-agent/12-choosing
**全书 markdown** https://library.aklman.com/books/build-agent/llms.md
**上一章** https://library.aklman.com/books/build-agent/coding-agent/llms.md
**下一章** https://library.aklman.com/books/build-agent/identity/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 你把 agent 从 20 行循环建到了能上生产。现在该问的不是「该早点用框架吗」，是「我懂了这些之后，何时该用、何时不必」。

你把一个 agent 从 20 行循环，一路建到了能上生产。现在最该问的，不是「我是不是该早点用框架」，而是「我懂了这些之后，什么时候该用框架、什么时候不必」。这一章是全书的回报 —— 手写过一遍，框架对你不再是黑魔法，你能从「懂」的位置选，而不是从「跟风」的位置选。

### I · 手写完，框架不再是黑魔法

框架没有魔法 —— 它管的，就是你这十几章手写过的那个循环：loop、tools、memory、context。

业界对 agent 的定义和你第一章一样：model + loop + tools + memory。[^1]框架的工作，就是替你管这个循环和它周边的管道 —— 状态、重试、并发、流式。你手写过整个研究助手，所以你能看穿任何框架的文档：它说的 agent、chain、graph，都对应你已经亲手实现过的东西。

#### 从零：你管循环

```python
while not done: # 循环、状态、错误都在你手里
 resp = client.messages.create(model=M, tools=TOOLS, messages=messages)
 if resp.stop_reason != "tool_use":
 return final_text(resp)
 messages += run_tools(resp)
```

#### 框架：循环被接管

```python
agent = Agent(model=M, tools=TOOLS)
result = agent.run(goal) # 循环 / 状态 / 重试都归它了
```

这就是从零写的真正回报：不是为了永远不用框架，是为了能看懂框架在做什么 —— 以及它在你身上漏的那一刻，你能接住。

---

### II · 缺哪样能力，就按那样选

别问「哪个框架最好」，问「我手写的版本缺哪样，谁补得最好」。

2026 年没有单一赢家，框架格局已经碎片化，而 vendor SDK 在起势。[^1]按你缺的那一项对号入座：要**持久状态、checkpoint、断点恢复、人审** → LangGraph（生产 stateful 的首选，企业部署最多）；[^3]要**类型安全、FastAPI 式开发体验** → Pydantic AI；要**在一家模型生态里最快上线、原生 sandbox + MCP** → OpenAI Agents SDK；[^4]要**直接把 Claude Code 的生产 harness 当库用**（内置工具、权限、hooks、subagent）→ Claude Agent SDK；[^5]要**streaming UI、给用户看进度** → Vercel AI SDK；要**最快出原型** → CrewAI。

这是一张「按缺口选」的表，不是「功能越多越好」。你只缺 streaming，就别为它引入一个管所有东西的重框架 —— 你多引入的每一层，都是出事时多一层要调的别人的代码。

---

### III · 框架的代价是 lock-in 和「出事时你在调别人的抽象」

框架省的是管道代码，花的是控制权 —— 它漏的时候，你 debug 的是它的抽象，不是你的循环。

两个代价要算清。一是 lock-in，尤其 vendor SDK，把你绑在一家模型生态上。[^4]二是抽象税：框架在 80% 的常规情况省事，却在剩下最难的 20% 挡在你和真实行为之间。Anthropic 自己的建议是 —— 可以用框架起步，但要理解底层代码，否则对抽象的错误假设会成为常见 bug 源。[^2]

选框架的前提，是你能在它漏的时候掉回手写 —— 而你现在能了，这正是这本书从零写的意义。所以判断很简单：有明确、单一的缺口（状态 / 类型 / 流式），且你认那份 lock-in，就上对应框架；没有明确缺口，或那缺口你自己几十行就能补，就留在从零 —— 依赖更少，控制更全。

动手 · 从你手写的 agent 出发，做一次选型：

- **列出最难维护的 3 件事**:
 在你现在这个手写 agent 上，挑出维护起来最痛的 3 样：状态恢复？streaming？类型？并发？

- **给每件事对上「谁补得最好」**:
 用第二节那张表，把每个痛点对到补它最好的那一栏 —— 注意有没有一个框架同时补了两件以上。

- **拍板，并写下认 lock-in 的理由**:
 留在从零（自己补那 3 件），还是为某个明确缺口引入一个框架。写一句话结论，里面要有「这份 lock-in 我认了，因为___」。

> 先手写一遍，
> 你才有资格选框架。

## 引用与参考

01 · Speakeasy · 「Choosing an agent framework: LangChain vs LangGraph vs CrewAI vs PydanticAI vs Mastra vs Vercel AI SDK」（2026）—— 2026 框架格局已碎片化、没有单一赢家，并逐一对比各家强项与取舍。  (Speakeasy · Agent framework comparison)
02 · Anthropic · 「Building Effective Agents」（2024-12-19）—— 可以用框架起步，但建议理解底层代码：错误的抽象假设会成为常见 bug 源，框架在最难的 20% 反而挡在你和真实行为之间。  (Anthropic · Building Effective Agents)
03 · LangGraph 文档（langchain-ai）—— 以持久状态、checkpoint、条件分支、人审为卖点的生产 stateful agent 框架，企业部署案例最多。作为「按缺口选框架」里『要持久状态』那一栏的代表。  (LangGraph · Docs)
04 · OpenAI Agents SDK —— vendor-native SDK，把 handoff、sandbox、MCP 做成一等能力；2026 起 vendor SDK 成为主流之一，代价是绑一家生态的 lock-in。  (OpenAI Agents SDK)
05 · Claude Agent SDK 文档 —— 「用 Claude Code 作为库来构建生产 AI agent」：与 Claude Code 同一套工具、agent 循环与上下文管理，Python / TypeScript 可编程；内置工具、权限、hooks、subagent、MCP。vendor SDK 起势的另一半样本。截至 2026-07。  (Claude Agent SDK · Overview)

---

*选型 · 从零写之后，何时该用框架 · Agent 实战 · 从零构建完备智能体 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/build-agent/12-choosing*
