智能体框架的构成解析

你以为智能体不聪明是模型太菜,其实很多时候是“外壳”搭错了。一个简单的 ReAct 循环、几件工具、再加一段精心写好的系统提示,在演示里看起来光鲜亮丽。但一旦任务拉长到十几步,模型开始忘事、工具调用悄悄失败、上下文窗口被垃圾信息塞满,体验立刻崩盘。真正拉开差距的,不是模型本身,而是包在模型外面的那层工程体系。

一个 ReAct 循环、几个工具和一个精心编写的系统提示,在 demo 里确实能打出“超预期效果”。

可任务一旦超过 10 步,问题就会集中爆发:模型记不住三步之前干了什么,工具调用失败却没人发现,上下文窗口被无用日志和中间结果塞满。

真正的瓶颈往往不在模型,而在模型周围的一切。

LangChain 做过一个很有说服力的“对照实验”:只改了包裹同一 LLM 的基础设施(模型和权重完全不变),在 TerminalBench 2.0 上的排名就从 30 名开外直接冲到第 5 名。

另一个独立研究项目干脆让 LLM 自己优化这层基础设施,结果通过率做到 76.4%,超过了人类精心手写的系统。

这整套围绕模型的工程,现在有了一个更准确的名字:智能体框架(agent harness)

什么是智能体框架?

概念:不是“多写点提示词”那么简单

“智能体框架”这个术语是在 2026 年初被正式提出的,但对应的工程实践早就存在,只是大家叫法不统一。

可以把它理解成:包裹在 LLM 外面的一整套软件基础设施,包含编排循环、工具系统、记忆、上下文管理、状态持久化、错误处理和安全防护等。

Anthropic 在 Claude Code 文档里说得很直白:SDK 就是“驱动 Claude Code 的智能体框架”。

LangChain 的 Vivek Trivedy 有句很流行的说法:“如果你不是模型,那你就是框架。”这话听着有点绝对,但很抓重点。

换个角度说,“智能体”本身是涌现出来的行为:它看起来像一个有目标、会用工具、能自我纠错的实体;而框架,是让这种行为得以出现的机械装置。

当有人说“我做了一个智能体”,更准确的意思往往是:我做了一套框架,然后把它指向了某个模型。

一个更贴切的类比:框架就是“操作系统”

Beren Millidge 在 2023 年的一篇文章里给了一个非常精准的类比:

  • 原始 LLM 像一颗没有 RAM、没有磁盘、没有 I/O 的 CPU。
  • 上下文窗口扮演 RAM:访问快,但容量有限。
  • 外部数据库类似磁盘:容量巨大,但读写慢。
  • 工具集成就像设备驱动程序,让 CPU 能够操作外设。

换句话说,智能体框架就是这颗“LLM CPU”的操作系统:调度、存储、I/O、安全,全在这里发生。

所以,调优提示词只是其中一个小模块,真正决定系统上限的,是这层“OS”设计得好不好。

三个工程层级:从提示到框架

从“说什么”到“看见什么”

围绕模型,大致可以分出三个同心层级:

  • 提示工程:给模型下什么指令,用什么语气、结构和约束。
  • 上下文工程:在什么时机,把哪些信息喂给模型看。
  • 框架工程:把前两者和整个应用基础设施串起来,包括工具编排、状态持久化、错误恢复、验证循环、安全执行和生命周期管理。

很多团队一开始只在提示工程上反复打磨,效果会有一点提升,但很快遇到瓶颈。

真正把智能体从“玩具”推到“生产”的,是后面两层:上下文工程和框架工程。

框架的边界:不只是“包一层 API”

有个常见误解:框架就是在模型外面包一层 HTTP 调用和日志记录。

现实要复杂得多。

一个成熟的智能体框架,至少要负责:

  • 维护多轮对话和任务状态;
  • 决定何时调用哪些工具,以及如何组合;
  • 在上下文窗口有限的前提下,选择“最值得保留的那一小撮 token”;
  • 在错误、超时、工具失败时,给模型一个自我修复的机会;
  • 在安全和权限上划清边界,防止“模型一冲动删库跑路”。

所以,框架不是提示的简单包装,而是让“自主智能体行为”真正落地的完整系统。

生产级框架的 11 个组成部分

综合 Anthropic、OpenAI、LangChain 以及更广泛社区的实践,一个能上生产的智能体框架,通常包含 11 个关键组件。

1. 编排循环:智能体的“心跳”

编排循环是整个框架的心跳,负责实现思考-行动-观察(TAO)循环,也就是常说的 ReAct 循环。

它的基本流程是:组装提示,调用 LLM,解析输出,执行工具调用,把结果反馈给模型,然后继续下一轮,直到任务结束。

从代码层面看,往往就是一个 while 循环,真正的复杂度在于循环里要管理的所有东西,而不是循环本身。

Anthropic 把自己的运行时形容为“哑循环”:所有智能都在模型里,框架只负责把每一回合的输入输出接好。

我自己在做一个内部代码助手时也踩过坑:一开始循环里塞了太多“聪明逻辑”,结果反而和模型抢活干,删掉一半逻辑后,效果肉眼可见地变好。

2. 工具:智能体的“手和脚”

工具是智能体与外部世界交互的手段,相当于它的“手脚”。

每个工具都有清晰的模式:名称、描述、参数类型,这些会被注入到 LLM 的上下文里,让模型知道自己能做什么。

工具层负责:注册工具、做模式验证、从模型输出中提取参数、在沙箱里执行、捕获结果,并把结果格式化成模型能读懂的“观察”。

Claude Code 提供了六大类工具:文件操作、搜索、执行、网页访问、代码智能和子智能体生成。

OpenAI 的 Agents SDK 则支持函数工具(function_tool)、托管工具(WebSearch、CodeInterpreter、FileSearch)以及 MCP 服务器工具。

3. 记忆:跨回合、跨会话的“脑子”

记忆系统在多个时间尺度上工作。

短期记忆是单次会话内的对话历史;长期记忆则跨会话持久化。

Anthropic 的做法是:用 CLAUDE.md 作为项目级记忆,再自动生成 MEMORY.md 存储更细粒度的信息;LangGraph 用命名空间组织的 JSON 存储;OpenAI 则支持基于 SQLite 或 Redis 的会话存储。

Claude Code 里有一个三层结构:

  • 轻量索引:每条大约 150 字符,始终加载;
  • 详细主题文件:按需拉取;
  • 原始转录:只通过搜索访问。

有用户反馈,在引入这套分层记忆后,长项目里的“重复问同一个问题”现象减少了接近一半,开发者主观体验提升非常明显。

4. 上下文管理:最容易“悄悄翻车”的地方

很多智能体“看起来没报错,但就是做错事”,问题往往出在上下文管理。

一个关键现象叫“上下文衰减”:当关键信息落在上下文窗口中间区域时,模型性能会明显下降,有研究给出的数字是 30% 以上。

即便是百万 token 的大窗口,随着上下文变长,模型的指令遵循能力也会逐步变差。

生产环境里常见的策略包括:

  • 压缩:接近窗口上限时,对对话历史做摘要。Claude Code 会优先保留架构决策和未解决 bug,丢弃冗余工具输出。
  • 观察屏蔽:JetBrains 的 Junie 会隐藏旧的工具输出,但保留“调用了哪些工具”这条线索。
  • 即时检索:维护轻量标识符,按需动态加载数据。Claude Code 更倾向用 grepglobheadtail 之类的操作,而不是一次性加载整文件。
  • 子智能体委派:让子智能体广泛探索,但只返回 1000–2000 token 的浓缩摘要。

Anthropic 在上下文工程指南里把目标概括得很清楚:找到那一小撮“高信号 token”,用最少的上下文,换取最高的成功概率。

5. 提示构建:模型“每一步到底看到了什么”

提示构建负责组装模型在每一步实际看到的内容。

通常会有一个层级结构:系统提示、工具定义、记忆文件、对话历史、当前用户消息,按优先级和重要性拼接。

OpenAI 的 Codex 使用的是严格优先级堆栈:

  • 服务器控制的系统消息(最高优先级);
  • 工具定义;
  • 开发者指令;
  • 用户指令(通过级联的 AGENTS.md 文件,限制在 32 KiB 内);
  • 对话历史。

一个常被忽略的小技巧是:把最关键的约束和目标放在提示的开头和结尾,尽量避免落在“中间地带”。

6. 输出解析:从“自由文本”到“结构化决策”

现代框架越来越依赖原生工具调用能力:模型直接返回结构化的 tool_calls 对象,而不是一段需要正则硬抠的自由文本。

框架要做的事情变成:检查是否有工具调用;有就执行并继续循环,没有就把文本当作最终答案返回。

对于需要结构化输出的场景,OpenAI 和 LangChain 都支持通过 Pydantic 模型来约束响应模式。

传统的做法,比如 RetryWithErrorOutputParser,会把原始提示、失败的完成结果和解析错误一起丢回给模型,让模型自己修正格式,这种方式现在更多用于边缘情况兜底。

7. 状态管理:让智能体“记得自己做到哪了”

LangGraph 把状态建模为在图节点间流动的类型化字典,用 reducers 合并更新。

在所谓“超级步骤”边界上做检查点,可以支持中断后恢复和时间旅行式调试。

OpenAI 提供了四种互斥的状态策略:应用内存、SDK 会话、服务器端 Conversations API,以及轻量的 previous_response_id 链。

Claude Code 则走了另一条路:用 git 提交作为检查点,用进度文件作为结构化草稿。

我自己试过用 git 做状态管理,说实话一开始有点不习惯,但在长周期 refactor 任务里,能直接看到每一轮智能体的 diff,调试体验非常好。

8. 错误处理:10 步流程只要每步 99% 成功率,整体就掉到 90%

错误处理是被严重低估的一环。

一个 10 步的流程,即便每一步成功率有 99%,端到端成功率也只有大约 90.4%。流程一长,这种复合效应会非常致命。

LangGraph 把错误分成四类:

  • 瞬态错误:带退避的自动重试;
  • LLM 可恢复错误:作为 ToolMessage 返回给模型,让模型调整策略;
  • 用户可修复错误:中断流程,等待人工输入;
  • 意外错误:直接冒泡,用于调试。

Anthropic 的做法是在工具处理器内部捕获失败,把它们包装成错误结果返回给模型,让循环继续跑下去。

Stripe 的生产框架则会严格限制重试次数,通常不超过两次,以免在异常状态下“疯狂烧钱”。

9. 安全防护:谁说了算,模型还是系统?

OpenAI 的 SDK 实现了三层安全防护:

  • 输入防护:在智能体第一次运行前检查输入;
  • 输出防护:在最终输出前再跑一遍;
  • 工具防护:每次工具调用前都要过一遍。

一旦触发所谓“触发线”,智能体会被立即停止。

Anthropic 在架构上把“权限执行”和“模型推理”彻底分离:模型可以提出要做什么,但工具系统才决定“允不允许做”。

Claude Code 对大约 40 个离散工具能力做了独立控制,分三阶段:项目加载时建立信任、每次工具调用前做权限检查、高风险操作必须用户明确确认。

这套设计的负面一面是:有用户吐槽“点确认点到手酸”,但在企业环境里,这种“烦一点但安全”的取舍往往更容易被接受。

10. 验证循环:玩具 demo 和生产系统的分水岭

验证循环是区分“能跑起来”和“敢上线”的关键。

Anthropic 推荐三种主要方式:

  • 规则/程序化反馈:测试、代码检查器、类型检查器等;
  • 视觉反馈:通过 Playwright 截图来验证 UI 任务;
  • LLM 作为裁判:用独立子智能体评估输出质量。

Claude Code 的作者 Boris Cherny 提到,让模型有机会“检查自己的作业”,整体质量可以提升 2–3 倍。

我也不太确定这个倍数在所有场景都成立,但在代码生成和重构任务里,增加一轮“自测+修复”,确实能明显减少线上 bug。

11. 子智能体编排:一个人干,还是一队人干

Claude Code 支持三种子智能体执行模型:

  • Fork:父上下文的字节级复制;
  • Teammate:独立终端窗格,通过文件邮箱通信;
  • Worktree:独立 git 工作树,每个智能体在自己的分支上工作。

OpenAI 的 SDK 支持把智能体当作工具(处理有限子任务的专家),也支持“交接”(某个专家接管全部控制权)。

LangGraph 则把子智能体实现为嵌套状态图。

多智能体听起来很酷,但有用户反馈:一上来就搞“智能体团队”,结果大部分时间都花在路由和交接上,真正干活的 token 反而变少了。

逐步流程演示:一次完整循环里发生了什么

把这些组件拆开看容易碎片化,下面按一次完整循环的时间顺序串起来:

  • 第 1 步:提示组装。框架构建完整输入:系统提示 + 工具模式 + 记忆文件 + 对话历史 + 当前用户消息。关键信息尽量放在开头和结尾,避免“中间丢失”。
  • 第 2 步:LLM 推理。组装好的提示发给模型 API,模型生成输出 token:可能是纯文本、工具调用请求,或者两者混合。
  • 第 3 步:输出分类。如果只有文本且没有工具调用,循环结束;如果有工具调用,就去执行;如果请求交接,就更新当前智能体并重启循环。
  • 第 4 步:工具执行。对每个工具调用,框架验证参数、检查权限、在沙箱里执行并捕获结果。只读操作可以并行,带副作用的操作一般串行。
  • 第 5 步:结果打包。工具结果被格式化成 LLM 可读的消息。错误会被捕获并包装成错误结果,供模型自我纠错。
  • 第 6 步:上下文更新。结果被追加到对话历史。接近上下文窗口上限时,触发压缩或裁剪策略。
  • 第 7 步:循环继续。回到第 1 步,直到满足终止条件。

终止条件通常包括:模型给出不再调用工具的响应、达到最大回合数、令牌预算耗尽、防护触发、用户中断或安全拒绝。

简单问题可能 1–2 回合就结束,复杂的重构任务则可能跨多回合、链式调用几十次工具。

对于跨多个上下文窗口的长任务,Anthropic 设计了一个两阶段的“Ralph 循环”模式:

  • 初始化智能体负责搭好环境:初始化脚本、进度文件、功能列表、初始 git 提交;
  • 每次会话里的编码智能体会读取 git 日志和进度文件,定位当前进度,选择最高优先级的未完成功能,完成后提交并写总结。

文件系统在这里扮演了“跨上下文窗口的连续性载体”。

框架如何支撑这些模式

Anthropic:哑循环 + 收集-行动-验证

Anthropic 的 Claude Agent SDK 通过一个 query() 函数暴露框架:创建智能体循环,并返回一个异步迭代器来流式传输消息。

运行时本身是“哑”的,所有智能都在模型里。

Claude Code 采用“收集-行动-验证”循环:

  • 收集上下文(搜索文件、读取代码);
  • 采取行动(编辑文件、运行命令);
  • 验证结果(跑测试、检查输出);
  • 然后继续下一轮。

这种模式在当前“AI 编程助手大战”的背景下非常应景,几乎所有 IDE 插件都在往类似方向靠。

OpenAI:代码优先的 Runner + 三层架构

OpenAI 的 Agents SDK 通过 Runner 类实现框架,支持异步、同步和流式三种模式。

SDK 是典型的“代码优先”:工作流逻辑用原生 Python 表达,而不是图形化 DSL。

Codex 框架被扩展成三层架构:

  • Codex 核心:智能体代码 + 运行时;
  • 应用服务器:双向 JSON-RPC API;
  • 客户端界面:CLI、VS Code、Web 应用。

所有界面共享同一套框架,这也是为什么“Codex 模型在 Codex 界面里感觉比在通用聊天窗口里聪明得多”的原因——不是模型变了,而是框架更贴合任务。

LangGraph & CrewAI:显式状态图和多智能体协作

LangGraph 把框架建模为显式状态图。

最简单的例子是两个节点:llm_calltool_node,通过条件边连接:有工具调用就路由到 tool_node,否则直接结束。

LangGraph 源自 LangChain 的 AgentExecutor,后者在 v0.2 被弃用,原因是难以扩展且不支持多智能体。

LangChain 的“深度智能体”明确使用了“智能体框架”这个词:内置工具、规划(write_todos 工具)、基于文件系统的上下文管理、子智能体生成和持久记忆。

CrewAI 则实现了一个基于角色的多智能体架构:

  • Agent:围绕 LLM 的框架,由角色、目标、背景故事和工具定义;
  • Task:具体的工作单元;
  • Crew:智能体集合。

CrewAI 的 Flows 层提供“确定性骨干和关键智能”,负责路由和验证,Crew 负责自主协作。

脚手架隐喻:框架应该“越用越薄”

建筑脚手架是一种临时基础设施,让工人能触达原本够不到的地方。

脚手架本身不“盖楼”,但没有它,楼根本盖不起来。

关键洞见在于:楼盖完了,脚手架要拆掉。

随着模型能力增强,框架的复杂度理应逐步降低。

Manus 在半年内重写了五次框架,每一次重写都在减复杂度:复杂的工具定义被简化成通用的 shell 执行,“管理智能体”被收敛成简单的结构化交接。

这背后是一个“共进化原则”:模型会在特定框架循环里被后训练,Claude Code 的模型就学会了使用它训练时接触到的那套框架。

风险在于:一旦工具实现方式大改,可能因为这种紧耦合导致性能短期下滑,这点在社区里已经有过几次真实案例。

一个框架是否“面向未来”,有一个简单测试:当你换成更强的模型时,性能能否自然提升,而不需要把框架再堆得更厚。

智能体框架设计的七个关键决策

每个框架架构师,几乎都会面对下面七个选择。

1. 单智能体 vs 多智能体

Anthropic 和 OpenAI 都给过类似建议:先把单智能体的能力榨干,再考虑多智能体。

多智能体系统会带来额外开销:路由需要额外的 LLM 调用,交接时还会丢失一部分上下文。

只有在工具数量重叠超过大约 10 个,或者任务领域明显分离时,拆成多个智能体才更划算。

2. ReAct vs 计划-执行

ReAct 在每一步交织推理和行动,灵活但每一步都要付出完整的推理成本。

计划-执行则把“想清楚要做什么”和“具体去做”拆开:先生成一个计划,再按计划执行。

LLMCompiler 的数据表明,相比顺序 ReAct,计划-执行可以做到大约 3.6 倍的速度提升。

在近期“AI 代码助手”竞赛里,很多团队都在往计划-执行迁移,尤其是在 CI/CD 集成场景下,延迟和成本压力更明显。

3. 上下文窗口管理策略

生产环境里常见的五种方法:

  • 基于时间的清理:优先丢弃最早的对话;
  • 对话总结:把历史压缩成摘要;
  • 观察屏蔽:隐藏旧的工具输出;
  • 结构化笔记:把关键决策写入专门的“笔记文件”;
  • 子智能体委派:让子智能体探索,主智能体只看摘要。

ACON 研究显示:通过优先保留推理轨迹而不是原始工具输出,可以减少 26%–54% 的 token 使用,同时保持 95% 以上的准确率。

这类“只留推理,不留噪声”的策略,是很多团队现在还没用好的一块信息差。

4. 验证循环怎么设计

验证大致分两类:

  • 计算验证:测试、代码检查器、类型检查器等,提供确定性的真值;
  • 推理验证:让 LLM 当裁判,捕捉语义层面的错误,但会增加延迟和成本。

Martin Fowler 在 Thoughtworks 的团队里,把这类机制框成“引导 vs 传感器”:

  • 引导是前馈,在行动前给出约束和建议;
  • 传感器是反馈,在行动后观察结果并纠偏。

一个可复用的小方法是:对高风险步骤(比如数据库迁移、支付相关操作)强制加一层传感器验证,其它步骤只用轻量引导。

5. 权限与安全架构:宽松还是严格

宽松模式下,大部分操作自动批准,体验流畅但风险更高;

严格模式下,很多操作需要显式确认,安全但慢。

选择哪种,取决于部署环境:

  • 内部研发工具可以相对宽松;
  • 面向终端用户或涉及资金、隐私的系统,通常需要更严格的权限分级和审计日志。

近期围绕“AI 误删生产数据”的讨论,其实都在提醒一个现实:安全架构是框架设计的一等公民,而不是上线前临时补的“合规模块”。

6. 工具范围策略:工具越多越好?不一定

工具越多,模型在“选哪个工具”上花的 token 就越多,出错空间也越大。

Vercel 有个有意思的经验:从 v0 版本里移除了 80% 的工具后,整体效果反而更好。

Claude Code 通过惰性加载工具定义,把上下文占用减少了大约 95%。

一个简单可用的判断标准是:只暴露当前步骤“必需”的最小工具集,其它工具按需加载。

7. 框架厚度:逻辑写在框架里,还是交给模型

这是一个长期博弈:

  • 厚框架:更多逻辑写死在代码里,可控但僵硬;
  • 薄框架:把更多决策交给模型,灵活但不确定性更高。

Anthropic 更偏向薄框架 + 强模型,基于图的框架则更偏向显式控制。

Anthropic 的一个做法是:每次模型升级后,都会尝试从 Claude Code 框架里删掉一部分规划步骤,因为新模型已经内化了这些能力。

框架即产品:同一个模型,差出一个数量级

用同一个模型,两个产品的体验可以天差地别,差别往往就出在框架设计上。

TerminalBench 的结果已经说明:只改框架,不动模型,智能体排名就能提升 20 多位。

框架不是一个已经被“标准化”的商品层,而是目前工程创新最密集的地方:

  • 如何把上下文当成稀缺资源来管理;
  • 如何设计能捕捉失败的验证循环;
  • 如何构建既有连续性又尽量少幻觉的记忆系统;
  • 如何在“多搭脚手架”和“多交给模型”之间找到平衡点。

随着模型能力继续提升,行业整体会往“更薄的框架”收敛,但框架本身不会消失。

哪怕是最强的模型,也需要某种机制来管理上下文窗口、执行工具调用、持久化状态和验证工作。

下次你的智能体表现拉胯时,不妨先别骂模型,先看看框架是不是该重构了。

如果你正在搭自己的智能体系统,这些决策和组件可以当成一份“长期备忘录”,等你踩到对应的坑时,翻出来对照一下,往往比问十个朋友更有用。

常见问题

Q:怎么判断我现在的智能体框架是不是“过度设计”了?

A:一个直接信号是:你频繁在框架里写 if-else 和复杂状态机逻辑,试图“管住”模型的每一步。这样做的结果往往是开发成本飙升,但效果提升有限。更好的判断方式是看:1)换成更强模型时,是否需要大改框架才能受益;2)新增一个任务类型时,需要改多少框架代码。如果每次都要大动干戈,说明框架太厚。建议做法是:把一部分决策下放给模型,用验证和安全机制兜底,而不是在框架里硬编码所有路径。

Q:小团队做智能体产品,有必要一开始就上多智能体架构吗?

A:大多数情况下不需要,一上来就多智能体反而会拖慢进度。原因在于,多智能体会引入路由、交接、上下文同步等额外复杂度,而这些问题在产品早期并不是主要矛盾。更务实的做法是:先用单智能体把一个核心场景打磨到可用,再观察是否出现明显的“领域分裂”(比如代码生成和法律文书完全不同)。如果确实需要拆分,可以先从“智能体作为工具”这种弱耦合方式开始,而不是一开始就搞复杂的团队协作和角色系统。

Q:上下文窗口已经很大了,还需要做复杂的上下文管理吗?

A:需要,而且窗口越大,越容易掉以轻心。原因是:1)上下文衰减问题不会因为窗口变大而消失,关键信息落在中间区域时,模型依然容易忽略;2)大窗口会鼓励“什么都塞进去”,导致成本和延迟飙升。更健康的做法是:即便有大窗口,也要刻意练习“高信号 token 思维”,通过摘要、结构化笔记和子智能体摘要来控制上下文密度。可以从一个简单实践开始:为每个长任务维护一份“决策日志”,只把这份日志长期保留在上下文里,其它内容按需检索。

Q:什么时候该把验证逻辑交给 LLM,什么时候必须用程序化验证?

A:涉及安全、资金、数据完整性的场景,优先用程序化验证,因为它提供的是确定性真值,LLM 只能给出“看起来合理”的判断。比如数据库迁移、支付指令、权限变更等,都应该有明确的规则和测试来兜底。LLM 作为裁判更适合语义层面的评估,比如“这段解释是否清晰”“这个 UI 是否符合设计规范”。一个实用的分界线是:一旦错误会带来不可逆损失,就不要只依赖 LLM 验证,而是用 LLM 做预筛选,再用程序化验证做最终把关。

Q:如果我现在只会写提示词,不懂框架工程,该怎么入门智能体框架?

A:可以从“改造现有 SDK 示例”开始,而不是从零写一个框架。原因是成熟 SDK(比如 Claude Agent SDK、OpenAI Agents、LangGraph)已经帮你实现了大部分底层循环和状态管理,你只需要在几个关键点动手:1)根据自己的场景裁剪工具集;2)设计合适的记忆和上下文策略;3)为高风险步骤加上简单的验证和日志。实践路径可以是:先把一个官方示例跑通,再逐步替换其中的工具和提示,最后再考虑调整编排逻辑。这样既能快速看到效果,又能在真实问题中学会框架思维。

愿你在下一次重构智能体时,少一点“盲目加功能”,多一点对框架边界和节奏的掌控。