核心设计权衡

一句话总结
不同框架之所以”长得不一样”,是因为它们在几条核心轴上做了不同取舍:轻量 vs 全家桶、命令式 vs 声明式、低抽象 vs 高抽象、模型驱动 vs 框架驱动、通用 vs 垂直、可控 vs 自由。看懂这些轴,就能预测一个框架的脾气,也能为自己的场景选型。

六条轴

1. 轻量库 ↔ 全家桶平台

2. 命令式(代码编排)↔ 声明式(配置/图)

  • 命令式:用普通代码写控制流,灵活直观(SwarmsmolagentsCrewAI)。
  • 声明式:用图/配置描述流程,引擎来跑,利于可视化与可恢复(LangGraph、Mastra workflows、Haystack pipeline、Botpress flows)。
  • 取舍:表达自由 vs 工具化(可视/恢复/校验)。

3. 低抽象(暴露 prompt)↔ 高抽象(隐藏细节)

  • :把 prompt、消息、循环都摊开给你改(适合研究/精调)。
  • :藏起 prompt,给你 Agent(role=..., tools=[...]) 这种声明(适合快速产出,但难精调、易”魔法”)。
  • 取舍:可控/可调 vs 简洁/快。

4. 模型驱动 ↔ 框架驱动

  • 模型驱动:框架尽量薄,相信模型自己决策(Strandssmolagents CodeAct)。随模型变强而受益。
  • 框架驱动:框架用代码兜住模型的不确定性(状态机、强约束、校验)。更稳但有上限。
  • 取舍:上限/前瞻 vs 当下稳定性。详见 agent-loop-paradigms

5. 通用 ↔ 垂直

6. 可控 ↔ 自由(贯穿全局)

这是上面几条的共同底色,也是 agent 工程的中心矛盾:越自由越强大、越难保证;越可控越可靠、越受限。 生产系统往往在关键路径加约束(人在环/治理可观测),在探索路径放自由。

一些经验法则

  • 从单 agent + 好工具开始,确有收益再上多 agent(见 single-vs-multi-agent)。
  • 选型先问场景:通用探索选轻量命令式;生产关键流程选声明式可恢复;垂直需求直接选垂直框架。
  • 抽象越高,越要能”掀开盖子”——不能改 prompt 的高抽象框架在真实项目里常被弃用。
  • 语言生态也是约束:Python 生态最厚(研究/数据),TypeScript 适合全栈/前端集成(MastraVoltAgent),Go/Rust 偏基础设施(ModusPilot Protocol)。见 language-ecosystem

关键要点

  • 框架差异 = 在这 6 条轴上的坐标,没有”最好”,只有”最适合某场景”。
  • 看懂轴,就能在 对比矩阵里快速定位一个框架的脾气。

关联