<!-- title: 漏抽象税：通用层吃掉七倍缓存 -->

## 概述

2026 年的 Agent 框架都在兜售同一句话："一次编写，多模型运行"。但当你把 Claude、GPT、Gemini 塞进同一套抽象层时，厂商独有的高级能力——显式 `cache_control`、扩展思维预算、流式工具调用、引用与文件 API——会在抽象边界被悄悄裁掉。其中最致命的不是能力丢失，而是**缓存语义鸿沟**：Anthropic 的缓存是"显式标记"，OpenAI 的是"自动前缀"，两者不可调和。一个标榜"模型无关"的框架只能取最大公约数，于是每轮循环都按全价重发前缀。实测推导：30 轮、5 万 token 前缀的 Agent 循环，缓存漏掉带来的成本膨胀达 **7 倍**，且这个税随轮次线性累加。本文拆解六大框架的漏抽象边界，给出按场景的避税选型。

---

## 对比表格：六大框架漏抽象横评

| 框架/运行时 | 缓存透传 | 扩展思维暴露 | 流式工具调用 | 结构化输出 | 模型无关度 | 漏抽象税 |
|---|---|---|---|---|---|---|
| LangChain / LangGraph | 半透（中间件可选，默认关） | 部分（可读难喂回） | 支持 | `create_agent` 自动 | 高 | 中 |
| OpenAI Agents SDK | 全透（OpenAI 侧自动） | 全（effort / reasoning items） | 支持 | 原生 Responses | 低（锁 Responses API） | 低(OpenAI) / 高(跨厂) |
| CrewAI | 黑盒（经 LiteLLM 透传） | 弱 | 部分 | 委托底层 | 中 | 高 |
| Microsoft Agent Framework（AutoGen 演进） | 矩阵化（按 provider 查表） | 部分 | 支持 | 部分原生 | 中高 | 中 |
| PydanticAI | 全透（薄壳直传） | 全 | 支持 | 原生强 | 中 | 低 |
| Google ADK | 全透（Gemini 侧） | 全 | 支持 | 原生 | 低（锁 Gemini） | 低(Gemini) / 高(跨厂) |

---

## 深度分析

### 一、缓存语义鸿沟：显式标记 vs 自动前缀，不可调和

漏抽象税的根，在两家厂商对"缓存"的定义根本不是一回事。Anthropic 走**显式标记**路线：必须在消息块上挂 `cache_control: {"type": "ephemeral"}`，系统才会把这段前缀算作可缓存，写入价 1.25×、读取价 0.1×。OpenAI 走**自动前缀**路线：GPT-4o 及更新模型、GPT-5.1 的 24 小时缓存全部隐式触发，开发者无需任何参数，缓存命中价约为 0.5×。

这两套语义在抽象层无法合并。一个"模型无关"的 Agent 抽象，要么对所有 provider 都不发 `cache_control`（于是 Claude 侧永远全价），要么尝试统一注入（于是 OpenAI 侧的自动缓存被破坏性重排）。TrueFoundry 的网关层实践也证实："每家厂商实现 prompt caching 的方式都不一样"，只能在网关层强行归一化。

成本推导（基于两家公开缓存定价比例）：

```
场景：50,000 token 可缓存前缀（系统提示+工具定义+检索上下文），30 轮循环
无缓存：30 × 50k × 1.0      = 1500 单位
有缓存：1 × 50k × 1.25 + 29 × 50k × 0.1 = 62.5 + 145 = 207.5 单位
膨胀比 ≈ 7.2×
```

这就是**七倍缓存红利**的来源：它不是性能玄学，是定价数学。漏抽象税的可怕之处在于——你感知不到它，账单却按它走。

### 二、LangChain / LangGraph：中间件兜底，但默认不开

LangChain 的 `ChatAnthropic` 确实支持 `cache_control`，但要靠 `additional_kwargs={"cache_control":{"type":"ephemeral"}}` 手动挂到每个消息块上，或者启用 `AnthropicPromptCachingMiddleware` 让框架自动优化。问题在于：**两者都不是默认行为**。`create_agent` 开箱即用时，缓存多半是关的。

更隐蔽的是一个普遍的概念混淆。LangGraph 有自己的 **checkpointing cache**（断点序列化缓存），用于崩溃恢复与时间旅行，和模型侧的 **prompt caching** 是完全两回事。开发者看到"LangGraph 缓存已开启"就以为缓存红利到手，实则模型侧仍在每轮全价重发。这两层缓存一者管"状态持久化"，一者管"前缀计费"，框架文档没有把它们的关系讲清楚，于是税在沉默中累积。

```python
# 正确：显式挂载缓存标记（Anthropic 侧）
from langchain_anthropic import ChatAnthropic
msg = SystemMessage(
    content=long_context,
    additional_kwargs={"cache_control": {"type": "ephemeral"}},
)
# 或启用自动中间件
from langchain.agents.middleware import AnthropicPromptCachingMiddleware
```

优点：可控到字节级；缺点：心智负担重，默认配置是漏的。**变现评估**：适合做成"LangGraph 缓存调优训练营"，因为坑足够多、足够具体，单期可收 1-2k。

### 三、OpenAI Agents SDK：Responses API 绑定的单边红利

OpenAI Agents SDK 建立在 **Responses API** 之上，享受 OpenAI 侧**全自动** prompt caching——无需任何配置，前缀命中即半价。它还完整暴露 reasoning：`reasoning_effort` 调节、`reasoning_items` 回读、流式推理 token。在 OpenAI 模型上，这个 SDK 的漏抽象税接近零。

但红利是**单边**的。SDK 虽然支持通过 model provider 接 Claude/Gemini，却把所有非 OpenAI 模型硬塞进 Responses API 的语义模具。Claude 的显式 `cache_control` 在这条管道里找不到挂载点，扩展思维的 `thinking` block 也被规整成 reasoning items 的近似。结果是：在 OpenAI 上零税，切到 Claude 上立刻吃满七倍缓存税。这就是"模型无关"承诺的反面——**抽象层锁死在单一厂商的最优解上**。

```python
from agents import Agent, Runner
agent = Agent(
    name="coder",
    model="gpt-5.1",           # 自动缓存生效
    model_settings={"reasoning_effort": "high"},
)
# 切到 Claude 时，缓存红利与 thinking 预算同时消失
```

优点：OpenAI 原生力全保留；缺点：跨厂即塌。**变现评估**：适合做"Responses API 时代的企业 Agent 迁移"咨询，因为很多团队会在跨厂切换时撞上这笔税。

### 四、CrewAI / Microsoft Agent Framework：双层透传的黑盒

CrewAI 在底层经 LiteLLM/LangChain 透传模型调用，**缓存行为对用户完全不可见**。文档几乎不谈 prompt caching，角色（agent）抽象层层包裹，`cache_control` 要透传到最底层 provider 需要穿透两到三层封装，多数实践里根本没人做。角色越多、每轮重发的工具描述越长，漏抽象税越重——而 CrewAI 恰恰以"多角色协作"为卖点，等于把七倍税按角色数放大。

Microsoft Agent Framework（AutoGen 的 2026 演进，BUILD 2026 主推）走的是另一条路：**把抽象泄漏摆上台面**。它的 Providers 文档明确列出每个 provider 的"supported features"矩阵——也就是说，它不假装能力一致，而是承认漏抽象，让开发者查表。这是更诚实的工程姿态，但税仍在：矩阵里标"部分支持"的能力，实际就是被裁掉的。

```python
# CrewAI：缓存无处可挂，靠 LiteLLM 默认行为兜底
from crewai import Agent
researcher = Agent(
    role="研究员",
    backstory=long_text,   # 每轮全价重发
    llm="anthropic/claude-...",
)
```

优点：上手快、角色化直觉好；缺点：缓存黑盒、跨层透传损耗大。**变现评估**：CrewAI 适合做"非技术团队的 Agent 搭建"低门槛产品，但要把成本上限讲清楚，否则按量计费时会爆账。

### 五、PydanticAI：薄壳保真派，用类型把泄漏挡在门外

PydanticAI 是这批里**漏抽象税最低**的通用层。它的设计哲学是"薄壳直传"：不发明自己的消息格式，模型原生返回直接暴露给开发者，结构化输出走 Pydantic 模型 + 原生 strict mode，reasoning 与缓存参数都通过 `ModelSettings` 透传。因为壳足够薄，Anthropic 的 `cache_control`、OpenAI 的 reasoning_effort 都能原样送达 provider，不经过语义归一化的损耗。

代价是它**不那么"模型无关"**——你必须为每家模型写对应的 settings，不能靠框架替你抹平差异。但这恰恰是正确的取舍：与其用一层谎言假装抹平，不如把差异显式化交给开发者。在缓存这件事上，PydanticAI 几乎不收税。

```python
from pydantic_ai import Agent
from pydantic_ai.models.anthropic import AnthropicModelSettings

agent = Agent("anthropic:claude-...", output_type=Report)
settings = AnthropicModelSettings(
    anthropic_cache_control={"type": "ephemeral"},  # 原样透传
)
result = await agent.run("...", model_settings=settings)
```

优点：类型安全、原生力保真；缺点：跨厂需手写适配。**变现评估**：适合做"生产级 Agent 工程化"中高端课程，受众是后端工程师，客单价可拉到 3-5k。

### 六、扩展思维与流式工具调用：被裁掉的长尾高级力

缓存是漏抽象税里**最贵**的一项，但不是唯一一项。还有一长串厂商原生力在通用层被静默裁掉：

- **扩展思维预算**：Claude 的 `thinking` block、OpenAI 的 `reasoning_effort`。多数框架要么不暴露调节旋钮，要么读了思维 token 却**不喂回下一轮**——导致模型每轮重新推理，token 双花。
- **流式工具调用**：Claude 流式吐出 tool_use 的部分 JSON，框架若缓冲到完整才执行，每个工具调用多 1-3 秒尾延迟。Agent 循环里工具调用密集时，这是用户体验的直接劣化。
- **引用 / 文件 API / computer use**：OpenAI 的 citations、Anthropic 的 computer use 与 files API，在"模型无关"层几乎全部缺席，因为它们没有跨厂对应物。

| 高级力 | Anthropic | OpenAI | 通用层通常 |
|---|---|---|---|
| 缓存 | 显式 cache_control | 自动前缀 | 取舍失当→7×税 |
| 思维预算 | thinking block | reasoning_effort | 不暴露/不喂回 |
| 流式工具 | 部分流式 JSON | 部分流式 | 缓冲→延迟 |
| 引用/文件/computer use | 有 | 有 | 缺席 |

**变现评估**：这一节本身就是一门"原生力榨干课"的完整大纲，可以按"思维 token 回灌""流式工具零延迟"拆成单点技巧包售卖。

---

## Mermaid 架构图：通用层裁掉哪些原生力

```mermaid
flowchart TB
    subgraph APP["应用 / Agent 循环（每轮重发前缀）"]
        A1[系统提示+工具定义+上下文<br/>≈50k token]
        A2[轮次 1..30]
        A1 --- A2
    end

    subgraph GEN["通用抽象层（漏抽象发生处）"]
        direction TB
        G0{模型无关<br/>取最大公约数}
        G1[缓存语义归一<br/>→ 放弃显式 cache_control]
        G2[思维 token<br/>→ 不喂回 / 不暴露 effort]
        G3[流式工具<br/>→ 缓冲到完整]
        G4[引用/文件/computer use<br/>→ 缺席]
        G0 --> G1 --> G2 --> G3 --> G4
    end

    subgraph PV["Provider 原生力"]
        P1[Anthropic: 1.25×写 / 0.1×读]
        P2[OpenAI: 自动 0.5×]
        P3[Gemini: 显式缓存]
    end

    APP ==>|"透传请求"| GEN
    GEN ==>|"裁剪后"| PV
    G1 -.->|"缓存漏掉"| COST["七倍成本膨胀<br/>30 轮 50k 前缀<br/>2075→1500 单位"]

    style COST fill:#fdd,stroke:#c00,stroke-width:2px
    style G0 fill:#ffe,stroke:#aa0
    style GEN fill:#eef,stroke:#33a
```

---

## 推荐方案：按场景避税

- **单厂、要榨干原生力**：直接用厂商 SDK（OpenAI Agents SDK 或 Anthropic 原生）。零抽象层，零漏抽象税，缓存与思维全保留。代价是放弃可移植性——但如果你的业务锁定一家模型，这本就是正确选择。
- **需跨厂、且成本敏感**：选 **PydanticAI**。壳薄、透传诚实，用类型把差异显式化。为每家模型手写 `ModelSettings` 是一次性成本，换来的是缓存红利不被裁。
- **需复杂状态图、可观测性优先**：选 **LangGraph**，但务必同时启用 `AnthropicPromptCachingMiddleware`，并区分清楚 checkpointing cache（持久化）与 prompt caching（计费）两层，别让文档歧义替你交税。
- **多角色协作、非技术团队**：**CrewAI** 上手最快，但要在产品里做成本熔断（每会话 token 上限），否则角色数 × 七倍税会让按量账单失控。
- **企业级、多 provider 矩阵**：**Microsoft Agent Framework**。它把"能力差异"做成查表而非谎言，工程上最诚实，适合需要明确 SLA 与合规留痕的场景。

一条通用铁律：**凡宣称"模型无关"的抽象层，都先问它怎么处理 prompt caching**。答不上来的，七倍税基本跑不掉。

---

## 参考来源

1. [AI Agent Frameworks (2026 Update): 8 SDKs Compared — morphllm](https://www.morphllm.com/ai-agent-framework) — 2026 年八款 Agent SDK 的发布事实与特性横评
2. [Don't Break the Cache: An Evaluation of Prompt Caching — arXiv 2601.06007](https://arxiv.org/html/2601.06007v1) — 多轮 Agent 场景下 prompt 缓存失效率的系统评测，含 OpenAI 自动缓存与跨厂商差异
3. [ChatAnthropic integration — LangChain Docs](https://docs.langchain.com/oss/python/integrations/chat/anthropic) — `cache_control` 与 `AnthropicPromptCachingMiddleware` 的官方用法与边界
4. [Prompt caching — OpenAI API](https://developers.openai.com/api/docs/guides/prompt-caching) — GPT-4o+/GPT-5.1 自动前缀缓存与 24 小时缓存机制
5. [Provider-Agnostic Prompt Caching: How an LLM Gateway Normalizes — TrueFoundry](https://www.truefoundry.com/blog/provider-agnostic-prompt-caching-llm-gateway) — 各厂商缓存实现差异及网关层归一化方案
6. [Microsoft Agent Framework — Providers Overview](https://learn.microsoft.com/en-us/agent-framework/agents/providers/) — 各 provider 支持特性矩阵（BUILD 2026 Agent Framework）

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
