Agent 中间层正在塌缩——谁在抢这块夹心饼?

2026-05-13 12 预计阅读时间:1 分钟
来源:my.oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:10 分钟

大模型能力在涨,Agent 框架在瘦身,用户界面在变薄。三层夹心结构里,中间那层到底该多厚、谁来砌砖,正在成为整个 Agent 生态最激烈的争夺点。

三层结构:底座、夹心、壳

Manus、OpenClaw、Claude Managed Agent——三个当下最受关注的 Agent 方案,骨子里都是同一副骨架:

层级 角色 典型内容
底层 基础模型 GPT-4o、Claude 3.5、开源 LLM
中间层 Agent 能力构建 工具编排、记忆管理、规划推理、权限控制
顶层 用户交互界面 对话窗口、任务面板、浏览器插件

三层本身没什么争议。争议集中在中间层:谁来写中间层的代码,中间层该多厚。

三种答案,三种厚度

Manus:中间层最厚,自己全砌

Manus 的策略是"全栈 Agent"——中间层几乎全部由团队自建:工具调用链、多步规划器、沙箱执行环境、结果校验模块,一层叠一层。用户只管提需求,剩下的 Manus 自己跑完。

好处是体验丝滑:用户不需要懂工具、不需要写 prompt 技巧,丢一句"帮我调研竞品定价"就能拿到完整报告。代价是中间层膨胀——每新增一个场景,就要在夹心层里多码一层胶水代码,维护成本随场景数线性上升。

OpenClaw:中间层最薄,用户自砌

OpenClaw 走了另一个极端——中间层只提供最基础的 hook:一个工具注册接口、一个简单的循环调度器、一个上下文窗口管理器。至于怎么规划、怎么选工具、怎么处理异常,全部交给用户(或开发者)在顶层自己拼。

结果:中间层极薄,框架本身几乎零学习成本,但用户要自己写编排逻辑。对开发者来说这是自由,对普通用户来说这是门槛。

Claude Managed Agent:中间层适中,模型自砌

Claude 的 Managed Agent 方案最有意思——中间层的厚度由模型能力决定。Anthropic 不手动写厚重的编排框架,而是让 Claude 自己在推理过程中完成规划、工具选择、回溯纠错。框架只提供"工具描述 + 安全边界",剩下的交给模型的自推理能力。

这意味着:模型越强,中间层越薄;模型越弱,中间层越厚。 中间层的厚度变成了模型能力的倒数。

什么正在变厚?

中间层在塌缩,但有两样东西在变厚:

一是工具生态层。 当中间层不再负责硬编码每个工具的调用逻辑,工具本身的描述质量、接口规范、错误处理就成了新的"厚度"来源。一个写得好、描述清晰的 MCP 工具,比十个需要中间层手写胶水的碎片 API 更有价值。

二是模型推理层。 当编排逻辑从中间层代码迁移到模型推理链,prompt engineering、推理链设计、安全护栏配置就成了新的"厚度"。这不是代码厚度,而是认知厚度——你需要在模型可理解的范围内,把任务边界、约束条件、回退策略全部表达清楚。

简单说:代码在变薄,语义在变厚。

实践:用三种厚度搭同一个 Agent

下面用一个"调研竞品定价"的 Agent 为例,展示三种中间层厚度的实现差异。所有示例基于 Python,可直接改造运行。

方案一:厚中间层——硬编码编排

"""厚中间层:所有编排逻辑写在框架代码里"""
import json
from typing import Any

class ThickMiddleware:
    """Manus 风格:框架硬编码每一步"""
    def __init__(self, model_client, tools: dict[str, Any]):
        self.model = model_client
        self.tools = tools  # {"web_search": fn, "scrape_page": fn, "summarize": fn}

    def run(self, task: str) -> str:
        # 第一步:搜索竞品
        search_result = self.tools["web_search"](query=f"{task} 竞品定价")
        # 第二步:抓取详情页
        pages = []
        for url in search_result["urls"][:3]:
            pages.append(self.tools["scrape_page"](url=url))
        # 第三步:摘要
        combined = "\n".join(p["text"] for p in pages)
        summary = self.tools["summarize"](text=combined, prompt="提取定价信息")
        # 第四步:模型润色
        final = self.model.chat(
            f"根据以下调研结果,生成定价对比报告:\n{summary}"
        )
        return final

# 使用
agent = ThickMiddleware(model_client=my_llm, tools=my_toolbox)
report = agent.run("智能客服 SaaS")

每加一个场景,就要写一个新的 run 方法。中间层代码量随场景数增长——这就是"厚"。

方案二:薄中间层——用户自编排

"""薄中间层:框架只提供循环调度,编排交给用户"""
from openclaw import Agent, Tool  # 假设的 OpenClaw SDK

# 用户自己定义工具和编排 prompt
agent = Agent(
    model="gpt-4o",
    tools=[
        Tool(name="web_search", fn=my_search, desc="搜索网页,返回 URL 和摘要"),
        Tool(name="scrape_page", fn=my_scrape, desc="抓取网页全文"),
    ],
    # 编排逻辑全写在 system prompt 里——这就是"薄中间层"
    system_prompt="""你是一个竞品调研助手。
    步骤:
    1. 用 web_search 搜索目标竞品的定价信息
    2. 用 scrape_page 抓取前 3 个结果的详情
    3. 综合分析后输出定价对比表格
    如果搜索结果不足,换关键词重试。""",
)

result = agent.run("调研智能客服 SaaS 的竞品定价")

框架只管"调用模型 → 解析工具调用 → 执行工具 → 回传结果"这个循环。编排全靠 prompt——薄到几乎没有框架代码。

方案三:模型自编排——中间层厚度随模型浮动

"""模型自编排:Claude Managed Agent 风格"""
import anthropic

client = anthropic.Anthropic()

# 中间层只提供工具描述和安全边界
tools = [
    {
        "name": "web_search",
        "description": "搜索网页。输入查询关键词,返回相关页面 URL 和摘要。",
        "input_schema": {
            "type": "object",
            "properties": {"query": {"type": "string"}},
            "required": ["query"],
        },
    },
    {
        "name": "scrape_page",
        "description": "抓取指定 URL 的网页内容,返回纯文本。",
        "input_schema": {
            "type": "object",
            "properties": {"url": {"type": "string"}},
            "required": ["url"],
        },
    },
]

# 不写编排逻辑——模型自己规划步骤
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    tools=tools,
    messages=[
        {"role": "user", "content": "调研智能客服 SaaS 的竞品定价,输出对比表格"}
    ],
)

# 模型自行决定:先搜索、再抓取、再分析
# 中间层代码量 ≈ 0,厚度由模型推理能力决定
print(response.content)

注意这里没有 system_prompt 写编排步骤——模型自己推理出"先搜索再抓取再分析"的链路。中间层代码几乎为零,但前提是模型足够强。

运行前需要修改:my_searchmy_scrape 替换为你自己的搜索/抓取实现;方案三需要 anthropic SDK 和有效 API key。

选哪种厚度?

场景 推荐厚度 原因
垂直 SaaS 产品,场景固定 厚中间层 可控、可测、可审计
开发者平台,场景开放 薄中间层 灵活、可扩展、社区驱动
模型能力持续升级 模型自编排 减少硬编码,随模型进化自动变薄

一个务实的混合策略:核心路径用厚中间层保稳定,探索性任务用薄中间层给自由,长线押注模型自编排。 三种厚度不是互斥的,而是同一系统里不同模块的选择。

最后一条提醒:中间层变薄不代表"不用写了",而是"写的位置变了"。原来写在框架里的胶水代码,现在要写在工具描述、prompt 约束和安全护栏里。代码厚度在下降,语义厚度在上升——这才是真正的迁移方向。


相关推荐