当新一代模型发布时,如果你感到兴奋,说明你的架构走在正确的方向上。如果你开始担忧,那么也许是时候重新审视你的技术选型了。
引言:一条推文引发的思考
2026 年初,一位开发者在社交媒体上写道:“我被自己说服了,现在已经不再执着 Rust 了。”他列出了自己的语言使用排序:TS >= RS > Go >= C = C++ > Zig > Lua >= Python > JS。
这条看似平常的技术偏好分享,折射出一个更深层的行业趋势——TypeScript 正在成为 AI 应用开发的事实标准。MCP、LangChain.js、Vercel AI SDK,几乎所有主流 Agent 工具链都以 TS 为第一公民。前端开发者作为全球最大的开发者群体,正在用他们最熟悉的语言,定义着 AI Agent 的开发范式。
这本身不是问题。问题在于,当一个为浏览器而生的语言生态开始承载从应用层到基础设施层的全部重量时,我们是否需要停下来想一想:这条路的尽头是什么?
本文试图回答这个问题。不是要否定 TS 工具链在当下的合理性,而是探讨一个更长远的架构判断——在 Agent 从 demo 走向生产的转折点上,什么样的基础设施投入才是值得的,什么样的架构决策能够经受住模型能力持续跃迁的冲击。
而这个探讨的结论,或许指向一个正在行业中形成共识的理念:最好的 Agent 框架,也许是“没有”框架。
一、TS 主导的 AI 工具链:合理的现在,危险的惯性
市场选择的合理性
必须承认,TS 成为 AI Agent 开发的主流语言,是市场选择的自然结果。
AI 应用层当前最需要的能力是快速试错。一个想法从构思到 prototype,TS 的全栈特性允许开发者用同一套语言覆盖前端交互、后端逻辑、CLI 工具甚至桌面应用。类型系统在处理 LLM 返回的复杂嵌套 JSON 时表现出色,npm 生态提供了几乎开箱即用的一切组件。对于需要在最短时间内验证 Agent 产品假设的团队而言,TS 的效率优势是真实的。
隐患:边界模糊与协议污染
然而,AI 工具链不只是“调 API + 拼 JSON”。
当我们沿着 Agent 的技术栈向下走一层,碰到的问题开始变得不同:推理服务的性能调优、向量数据库的并发访问、Agent 长时运行场景下的内存管理、高并发 tool calling 的调度与限流。这些是确定性的系统工程问题,需要对 runtime 行为有精确控制的语言来解决。Node.js 的单线程事件循环模型,在这些场景下天然受限。
更隐蔽的问题在于协议层。当 MCP 的参考实现和主流 SDK 都以 TS 为第一公民时,协议本身的设计不可避免地被 JavaScript 的思维模式所塑造。tool schema 采用 JSON Schema 描述,对 TS 很自然,但对 Go、Java、Rust 这些强类型语言的适配成本并不低。这不是技术细节——当协议层被特定语言的 idiom 污染时,整个生态的多样性都会受到抑制。
当前的状态是:应用层和基础设施层用同一套语言在糊,边界模糊。这在 demo 阶段可以接受,但如果将其固化为企业级架构的基础,隐患将在规模扩大的过程中逐一暴露。
二、一个不同的起点:LLM 作为 Runtime
重新定义编排的归属
当前主流 Agent 框架——无论是 LangChain、LangGraph 还是其他变体——共享一个隐含假设:编排逻辑属于代码。
开发者用 Python 或 TypeScript 编写 chain、graph、state machine,定义 Agent 应该先调用哪个工具、再调用哪个工具、在什么条件下分支、在什么条件下回退。模型在这个框架里扮演的角色,更接近于一个被调用的函数——接收输入,返回输出,至于如何组合这些输入输出,由框架代码决定。
这本质上是把 LLM 当作 library 在使用。
但如果我们换一个角度思考:LLM 本身就具备理解意图、制定计划、选择工具、处理异常的能力。这些能力正是“编排”的核心。那么,为什么还需要用代码去模拟一个模型已经能做的事情?
这个思考引向一个不同的架构起点:把 LLM 当作 runtime,而不是 library。
三层分离架构
基于这个起点,架构自然地分为三层:
后端服务层(Go/Java) 承担所有确定性的系统工程职责——服务治理、并发调度、资源管理、可观测性、权限控制、审计日志。这些是强类型语言和成熟后端生态已经解决了几十年的问题,不需要用另一套语言生态重新发明。
LLM Runtime 层 让模型本身成为编排引擎。模型负责理解用户意图、选择合适的 skill、组合执行计划、处理执行过程中的异常和回退。编排决策权归还给模型,而不是硬编码在框架代码中。
Skill 描述层 以声明式的方式定义每个 skill 的能力边界——它能做什么、输入输出的格式与约束、前置条件与副作用。这些描述是给模型“读”的,而不是给框架“执行”的。新增一个 skill,是增加一份描述文件,而不是修改编排代码。
这三层的关注点完全正交。每一层可以独立演进,互不干扰。
三、“没有框架”的框架:为什么最好的编排是让模型自己来
框架的反模式
“最好的 Agent 框架是‘没有’框架”——这个理念正在开发者社区中形成共识,但它需要被准确理解。
它不是在说我们不需要任何基础设施。恰恰相反,它是在说:我们需要的基础设施应该服务于模型的决策能力,而不是替代它。
回顾过去两年 Agent 框架的演进历程,一个反复出现的模式是:框架试图用代码抽象去“驯服”模型的不确定性。Chain 规定了执行顺序,Graph 规定了状态转移,ReAct loop 规定了思考-行动-观察的节奏。这些抽象在模型能力较弱时有其价值——它们用确定性的代码逻辑兜底了模型的不可靠性。
但这些抽象有一个致命的副作用:它们同时也限制了模型能力的上限。
当模型足够强大,能够自主判断“这个任务应该先查数据库还是先看日志”时,一个硬编码了执行顺序的 chain 反而成了障碍。当模型能够根据中间结果动态调整策略时,一个预定义好状态转移图的 graph 反而限制了灵活性。
LangChain 从 v0.1 到 v0.3 的几乎完全重写,就是这个矛盾的现实注脚——框架在追赶模型能力的进化,而不是在赋能它。
“没有框架”的真正含义
“没有框架”不是虚无主义,而是一种架构哲学:把智能的部分交给智能的引擎(LLM),把确定性的部分交给确定性的工具(后端服务),把两者之间的接口做成声明式的描述(Skill),而不是命令式的编排代码。
在这个范式下,不存在一个叫做“Agent Framework”的中间层去告诉模型该怎么思考。模型直接面对 skill 描述,自己决定调用什么、以什么顺序、如何处理错误。后端服务层提供的是执行能力和安全边界,而不是决策逻辑。
这看起来更简单,但“简单”本身就是一种深思熟虑的架构选择。
四、超越 MCP:企业级 Agent 交互的重新设计
MCP 的价值与局限
MCP(Model Context Protocol)为 Agent 与工具的交互定义了一套标准化的协议格式——tool schema、调用约定、结果返回。作为序列化协议,这些定义是有价值的,没有必要重新发明。
但 MCP 隐含了一个架构假设:客户端启动时通过 tool/list 全量拉取所有可用工具的描述,平铺暴露给模型。这个假设在个人开发者连接几个 MCP server 的场景下工作得很好,但在企业环境中——几百个业务系统、上千个操作接口——这个模式不可持续。
根本矛盾在于:模型的注意力资源是有限的。 Context window 有上限,模型在几十上百个工具描述中做选择的准确率会随数量增长而下降。全量加载不仅浪费 token,更会直接降低 Agent 的决策质量。问题不是工具不够多,是模型的注意力不够用。
从全量加载到服务发现
替代方案是引入服务发现机制,将工具选择从一阶段决策变为两阶段决策:
第一阶段(平台侧,确定性的): 模型表达意图,平台根据意图做路由和检索,返回最相关的 skill 子集。这个过程可以用传统的检索技术优化——倒排索引、向量相似度、业务规则路由——都是成熟的、可工程化的方案。
第二阶段(模型侧,语义的): 模型在缩小的 skill 子集中做精确选择和组合。因为候选集小了,选择准确率自然提升。
同时,采用分层加载策略:高频核心工具(数据库查询、日志检索、告警查看等)预加载,避免每次交互都多一轮发现的延迟;长尾业务工具按需发现,用到时再加载,既节省 context 又避免干扰。
利用 MCP 格式,重建交互模式
这里的关键认知是:我们可以保留 MCP 的交互格式,但不采用 MCP 的架构模式。
利用 MCP 定义的 tool schema 和调用约定作为序列化协议,在此之上构建企业级的 C/S 端到端交互模式。对外暴露声明式的 skill 描述来指引 LLM 使用工具,但这种暴露不依赖 tool/list 的全量加载,而是通过服务发现动态解析。
这样既保持了与 MCP 生态的兼容性,又突破了其架构假设的限制。
五、架构的试金石:模型对齐测试
一个判断标准
如何评估一个 Agent 架构的长期健康度?这里提出一个简洁的判断标准:
当新一代模型发布时,你是更开心还是更担心?
如果你更开心——新模型理解 skill 描述更准确了,服务发现的意图匹配更好了,多步编排的可靠性提升了——说明你的架构在与模型能力对齐。模型的进步直接转化为系统的改善,你之前的基础设施投入在增值。
如果你更担心——新模型太强了,之前精心设计的编排逻辑变得多余了,框架的抽象层反而限制了模型的发挥——说明你的架构在与模型能力对抗。你之前的投入正在变成技术债。
本文提出的范式,在设计上确保了对这个测试的正向响应。因为编排决策权在模型侧,模型越强,编排越好。因为 skill 描述是声明式的,模型越强,理解越准。因为后端服务层只做确定性的事情,它的价值不会被模型进步所侵蚀。
反向验证
反观当前主流的框架模式。LangChain 从 v0.1 到 v0.3 的大规模重写,本质上就是在为模型能力的快速进化“还债”。每一次模型升级,都有一批框架抽象变得过时。开发者投入在学习框架 API、适配框架约束上的时间,在模型换代时归零。
作为 Agent 研发,有一个基本前提需要守住:基础模型的迭代不应侵蚀我们前期的人力投入。 基础设施的价值应该随模型进步而增值,而不是贬值。这不是一个技术偏好,而是一个工程经济学判断。
六、容错的正确姿势:不是修 Agent,是切换模式
重新定义 Fallback
关于 Agent 系统的可靠性,业界通常的思路是在 Agent 内部增加各种 fallback 机制——重试、降级模型、切换工具、回退到预定义流程。这些做法直觉上合理,但在架构层面会带来一个严重的后果:Agent 内部变成了一个“一半智能、一半硬编码”的缝合体,两套逻辑交织在一起,维护成本急剧上升。
本文提出一种不同的容错理念:Fallback 不是 Agent 内部的 try-catch,而是从 agentic 模式到传统模式的整体降级。
Agent 运行在明确定义的 sandbox 内,sandbox 规定了 Agent 能够访问的工具、能够执行的操作、能够影响的范围。在这个边界内,让模型充分决策,不加任何多余的硬编码约束。
如果在某个场景下,agentic 模式的整体可靠性不达标——不是去修补 Agent 的决策逻辑,而是将这个场景降级回传统的交互模式:表单提交、流程引擎、审批系统。这些系统本来就存在,经过多年打磨,可靠性有保证,不需要为 Agent 重建。
渐进式边界扩展
这个设计带来了一条清晰的企业落地路径:
不是要求 Agent 一步到位地替代所有现有系统。而是从最适合 agentic 模式的场景开始——信息查询、数据分析、报告生成这些“只读”场景风险最低——逐步扩大 sandbox 的能力边界。
模型更强了,sandbox 开放更多能力,agentic 模式覆盖更多场景。模型在某些场景还不够可靠,传统模式继续兜底。两种模式之间没有架构冲突,切换的依据是 sandbox 的能力边界定义,而不是代码里的 if-else。
Agent 系统内部保持架构纯粹性,容错交给系统边界外的成熟方案。 这是本范式处理可靠性问题的核心原则。
七、价值沉淀:工程体系的整体壁垒
“薄”的误解
有一个直觉上的质疑:如果平台层刻意做薄,skill 描述是声明式的、可移植的,sandbox 边界清晰,编排智能来自 LLM——那这个平台的护城河在哪里?
这个质疑背后有一个隐含的错误假设:把“薄”等同于“没有壁垒”。
Skill 描述文本看起来可移植,但真正有价值的不是那几行描述文字,而是 skill 背后封装的完整工具链路。一个企业级的“数据库诊断”skill,背后可能串联了慢查询分析、执行计划解读、索引建议、连接池监控、历史基线对比等一整套工具链路。这条链路的可靠性、性能、边界情况的处理,是需要持续工程投入来打磨的,绝不是几行文本能搬运走的。
Service discovery 同理。做好意图到 skill 的路由匹配——尤其是在企业的复杂业务语境下——本身就是一个需要深度工程投入的课题。Sandbox 的权限控制、审计合规、资源隔离,基于现有 PaaS 能力组合而成,但组合本身的合理性和可靠性也需要大量的设计与验证。
Kubernetes 式的壁垒
这里的壁垒模式更接近 Kubernetes 而非 LangChain。
Kubernetes 的每一个组件——容器调度、服务发现、配置管理——单拿出来都有替代品。但整个体系跑通之后,组件之间的互操作性、边界情况的覆盖度、运维工具链的成熟度,构成了一个整体壁垒。这个壁垒不是靠 API lock-in 建立的,而是靠工程成熟度建立的。
同样的逻辑适用于本文描述的 Agent Infra。壁垒不在于某一层的技术独特性,而在于整个体系的工程成熟度和互操作可靠性。一个靠让用户走不掉来建立壁垒,一个靠把事情做到别人追不上来建立壁垒——后者更健康,也更持久。
八、时机:需求探索期的结束与 Infra 建设期的开启
过去一年多,TS 工具链的快速迭代完成了一件重要的事情:需求探索。
通过大量的 demo、prototype、early product,行业对 Agent 开发的核心需求形成了相对清晰的共识:
Tool calling 的格式基本收敛。 MCP 和 OpenAI function calling 大同小异,序列化协议层面已经不需要太多创新。
编排应该是模型原生的,而不是代码驱动的。 越来越多的开发者发现,硬编排的框架在模型升级后反而成为负担。“最好的 Agent 框架是没有框架”的共识正在形成。
Context 管理是核心瓶颈,而不是工具数量。 如何在有限的注意力资源下让模型做出最优决策,比堆砌更多的工具更重要。
生产环境的需求远超 demo 的想象。 可观测性、权限控制、审计日志、灰度发布、回滚机制——这些企业级需求,当前的 TS demo 几乎完全没有覆盖。
需求探索期结束了,infra 建设期可以开始了。
当然,在 AI 快速发展的当下,TS 全栈框架作为快速验证想法的临时手段,仍然有其不可替代的价值。但临时手段不应被固化为长期架构。企业需要的是一个稳定的、可移植的、符合模型迭代趋势的、能够合理 fallback 的 Agent Infra 底座,来守住后端服务的基本防线,而不至于在模型每次升级时被动重构。
现在,我们已经有了足够清晰的架构拆分认知。是时候开始建设了。
结语
本文试图描述一种 Agent 基础设施的架构范式,它的核心信念可以浓缩为一句话:
把确定性的交给确定性的工具,把智能的交给智能的引擎,把两者的边界画清楚。
这不是一个否定当前工具链的极端主张。TS 生态在需求探索期发挥了巨大价值,LangChain 们教会了我们 Agent 开发中什么有用、什么没用。但当我们把目光投向更长的时间线时,需要问自己一个问题:两年后回头看,我们今天的架构决策,是让我们对未来更有信心,还是更焦虑?
如果答案是更有信心,那就继续走。如果不是,也许是时候换一条路了。
最好的 Agent 框架是“没有”框架。不是因为我们不需要基础设施,而是因为真正的基础设施,应该让智能的归智能,让工程的归工程——然后安静地退到幕后,让模型的进步成为整个系统的进步。