Aklman · Library

15 / 第十五章

选型 · 从零写之后,何时该用框架.

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


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

I

手写完,框架不再是黑魔法.

框架没有魔法 —— 它管的,就是你这十几章手写过的那个循环:loop、tools、memory、context。 业界对 agent 的定义和你第一章一样:model + loop + tools + memory。1注 1Speakeasy · 「Choosing an agent framework: LangChain vs LangGraph vs CrewAI vs PydanticAI vs Mastra vs Vercel AI SDK」(2026)—— 2026 框架格局已碎片化、没有单一赢家,并逐一对比各家强项与取舍。框架的工作,就是替你管这个循环和它周边的管道 —— 状态、重试、并发、流式。你手写过整个研究助手,所以你能看穿任何框架的文档:它说的 agent、chain、graph,都对应你已经亲手实现过的东西。

从零:你管循环

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)

框架:循环被接管

agent = Agent(model=M, tools=TOOLS)
result = agent.run(goal)                     # 循环 / 状态 / 重试都归它了
这就是从零写的真正回报:不是为了永远不用框架,是为了能看懂框架在做什么 —— 以及它在你身上漏的那一刻,你能接住。

II

缺哪样能力,就按那样选.

别问「哪个框架最好」,问「我手写的版本缺哪样,谁补得最好」。 2026 年没有单一赢家,框架格局已经碎片化,而 vendor SDK 在起势。1注 1Speakeasy · 「Choosing an agent framework: LangChain vs LangGraph vs CrewAI vs PydanticAI vs Mastra vs Vercel AI SDK」(2026)—— 2026 框架格局已碎片化、没有单一赢家,并逐一对比各家强项与取舍。按你缺的那一项对号入座:要持久状态、checkpoint、断点恢复、人审 → LangGraph(生产 stateful 的首选,企业部署最多);3注 3LangGraph 文档(langchain-ai)—— 以持久状态、checkpoint、条件分支、人审为卖点的生产 stateful agent 框架,企业部署案例最多。作为「按缺口选框架」里『要持久状态』那一栏的代表。类型安全、FastAPI 式开发体验 → Pydantic AI;要在一家模型生态里最快上线、原生 sandbox + MCP → OpenAI Agents SDK;4注 4OpenAI Agents SDK —— vendor-native SDK,把 handoff、sandbox、MCP 做成一等能力;2026 起 vendor SDK 成为主流之一,代价是绑一家生态的 lock-in。streaming UI、给用户看进度 → Vercel AI SDK;要最快出原型 → CrewAI。 这是一张「按缺口选」的表,不是「功能越多越好」。你只缺 streaming,就别为它引入一个管所有东西的重框架 —— 你多引入的每一层,都是出事时多一层要调的别人的代码。

III

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

框架省的是管道代码,花的是控制权 —— 它漏的时候,你 debug 的是它的抽象,不是你的循环。 两个代价要算清。一是 lock-in,尤其 vendor SDK,把你绑在一家模型生态上。4注 4OpenAI Agents SDK —— vendor-native SDK,把 handoff、sandbox、MCP 做成一等能力;2026 起 vendor SDK 成为主流之一,代价是绑一家生态的 lock-in。二是抽象税:框架在 80% 的常规情况省事,却在剩下最难的 20% 挡在你和真实行为之间。Anthropic 自己的建议是 —— 可以用框架起步,但要理解底层代码,否则对抽象的错误假设会成为常见 bug 源。2注 2Anthropic · 「Building Effective Agents」(2024-12-19)—— 可以用框架起步,但建议理解底层代码:错误的抽象假设会成为常见 bug 源,框架在最难的 20% 反而挡在你和真实行为之间。 选框架的前提,是你能在它漏的时候掉回手写 —— 而你现在能了,这正是这本书从零写的意义。所以判断很简单:有明确、单一的缺口(状态 / 类型 / 流式),且你认那份 lock-in,就上对应框架;没有明确缺口,或那缺口你自己几十行就能补,就留在从零 —— 依赖更少,控制更全。 动手 · 从你手写的 agent 出发,做一次选型:
01

列出最难维护的 3 件事

在你现在这个手写 agent 上,挑出维护起来最痛的 3 样:状态恢复?streaming?类型?并发?
02

给每件事对上「谁补得最好」

用第二节那张表,把每个痛点对到补它最好的那一栏 —— 注意有没有一个框架同时补了两件以上。
03

拍板,并写下认 lock-in 的理由

留在从零(自己补那 3 件),还是为某个明确缺口引入一个框架。写一句话结论,里面要有「这份 lock-in 我认了,因为___」。

先手写一遍, 你才有资格选框架。.

Write it by hand once, then you're fit to choose a framework..

Aklman Library

讨论

讨论.

评论区初始化中…