Tools、Workflow、Agent 三层架构详解
Tools、Workflow、Agent 三层架构详解从最小能力单元到编排框架1. 三者的核心误区很多人把 Tools、Workflow、Agent 当成三个并列的竞争方案认为做项目时需要在三者中选一个。这个理解是错的。三者不是同一维度的东西而是粒度不同、可以相互嵌套的三层结构。Tools 是最小的能力单元Agent 是一个完整的决策系统Workflow 是更上层的编排框架。在实际项目中三者通常同时存在扮演不同角色。三者最核心的区别一句话Tools 不做决策只执行Agent 自己做决策Workflow 是开发者替所有节点把决策提前写好。2. 第一层Tools——最小能力单元2.1 核心定义Tools 是整个体系里最底层的概念就是一个封装好的函数有明确的输入参数、明确的输出结果。你给 LLM 配备的每一个能力比如查天气“搜索网页”“执行 Python 代码”“往数据库写一条记录”本质上都是一个函数。Tools 和普通函数唯一的区别是需要额外写一份说明书告诉 LLM 这个工具叫什么名字、能做什么事、需要传哪些参数这样 LLM 才知道自己有哪些能力可以调用。一个工具定义的结构示例{name:search_web,description:搜索互联网并返回结果,parameters:{type:object,properties:{query:{type:string,description:搜索关键词}},required:[query]}}2.2 技术特征零决策能力工具本身没有任何决策能力它甚至不知道自己应该在什么时候被使用被动等待调用由外部Agent 或 Workflow触发不会主动执行高确定性输入固定则输出固定行为可预测2.3 边界与局限Tools 的使命就是把一个具体能力封装好、随时待命至于什么时候该用它那是别人的事。Tools 只负责执行不负责判断什么时候该用需要组合才能完成复杂任务。3. 第二层Agent——拿着工具自己做决定3.1 核心定义Agent 是一个完整的决策系统内部用 LLM 做大脑自己判断什么时候调哪个工具、要不要继续、什么时候结束。给 Agent 一个目标比如调研一下最近竞品的动态它不会直接给一个答案而是开始自己思考第一步应该搜索什么关键词搜索结果里有没有需要的信息需不需要多搜几次什么时候才算调研完了这一系列要不要、用哪个、够不够、停不停的判断全部由 Agent 内部的 LLM 做决策。3.2 运行机制思考-行动-观察循环Agent 的运行方式是一个反复循环的过程Thought想清楚→ Action行动→ Observation看结果→ 再 Thought → 再 Action → ...直到 LLM 判断任务完成为止这个循环才结束。用 Go 代码表示这个循环funcRunAgent(taskstring)string{for{thought:llm.Think(task,context)// 思考下一步做什么ifthought.IsDone{// 判断是否完成returnthought.FinalAnswer}result:callTool(thought.ToolName,thought.Args)// 执行工具调用context.AddObservation(thought.ToolName,result)// 记录观察结果}}关键点这个 for 循环会跑几次开发者完全不知道也不需要知道。这正是 Agent 和普通代码最不一样的地方——普通代码的每一步都是开发者预先写好的但 Agent 的执行路径是 LLM 实时决定的。3.3 关键特征主动决策Agent 自己决定执行路径灵活性高能应对预料之外的复杂情况完成事先无法预测路径的任务行为不确定同样的任务今天跑和明天跑可能调了不同的工具、走了不同的路径。这是因为 LLM 本质上是概率模型每次生成都带有随机性灵活性和不确定性是一对孪生兄弟。有 Agent 的灵活就必然伴随着一定程度的不可预测。3.4 边界与局限行为不可预测线上排查困难成本不可控LLM 调用轮次可能超出预期调试难度大执行路径不确定无法打断点逐步追踪4. 第三层Workflow——确定性编排框架4.1 核心定义Workflow 把整个执行流程的骨架写在代码里LLM、Agent、Tools 都只是这个流程里的节点每个节点负责完成自己那一步。但整体走哪条路、下一步去哪里全由开发者的代码决定不是任何节点自己说了算。4.2 技术特征一个客服系统的 Workflow 示例defcustomer_service(user_input):# 第一步意图分类intentllm.classify(user_input)# 第二步根据意图走不同分支ifintentrefund:order_infosearch_order(user_input)resultgenerate_refund_response(order_info)elifintentcomplaint:complaint_infoanalyze_complaint(user_input)resulttransfer_human_service(complaint_info)else:knowledgesearch_knowledge_base(user_input)resultllm.generate_answer(knowledge)returnresult关键点LLM 在这里出现了两次一次是做意图分类一次是生成回答但它只是流程里的两个工位。接下来去哪这件事完全由 if/elif 这些普通代码控制。开发者预先写死执行路径if/elif/else 控制流程高确定性代码看到什么就做什么不会有惊喜易调试可以打断点逐步追踪精确定位是哪个节点出了故障4.3 与 Agent 的核心区别谁在做下一步去哪的决策维度AgentWorkflow决策者LLM 实时决定开发者代码写死行为不确定路径动态变化确定完全可预测调试难执行路径不确定易链路清晰可追踪4.4 边界与局限流程提前写死难以动态调整无法穷举所有情况遇到预料之外输入容易失败或给出很差结果5. 三者对比总结维度ToolsAgentWorkflow决策能力无只执行不决策有LLM 自主动态决策无开发者在代码里写死执行方式被动等待被调用主动自主循环直到完成按开发者定义的顺序执行确定性高输入固定则输出固定低同输入可能走不同路径高行为完全可预测灵活性只做一件事高能应对预料之外的情况低流程提前写死调试难度容易单一函数难执行路径不确定容易链路清晰可逐步追踪适用场景封装单一具体能力路径未知的复杂任务流程相对固定的业务系统6. Agentic Workflow生产环境的主流组合模式完全靠 Agent 自主决策的系统其实很少在生产环境出现原因行为太难控制一旦出问题很难排查成本也容易失控LLM 调太多轮。完全靠 Workflow 写死的系统又太脆弱没法把所有情况都穷举到代码里遇到预料之外的输入就容易失败。Agentic Workflow 的核心思想用 Workflow 固定主流程的骨架在需要灵活判断的节点嵌入 Agent其余固定节点直接用 LLM 或 Tools。Workflow 骨架确定性 ├── 节点 1固定逻辑LLM 或 Tools ├── 节点 2Agent 子模块自主决策灵活应对 │ ├── 子工具 A │ ├── 子工具 B │ └── 子工具 C ├── 节点 3固定逻辑LLM 或 Tools └── 节点 4结果聚合骨架是确定的让你能控制整体行为、便于调试关键节点是灵活的让你能应对各种复杂情况。两个优点都有两个缺点都被削弱了。7. 总结Tools、Workflow、Agent 不是三个并列的竞争方案而是不同粒度的三层结构在项目中通常同时存在、相互嵌套Tools 是手负责执行具体操作不做决策Agent 是大脑自主判断用哪个工具、什么时候结束Workflow 是骨架由开发者预先编排好整体流程生产环境推荐采用 Agentic Workflow 组合模式用 Workflow 固定主流程在需要灵活性的节点嵌入 Agent实现可控与灵活的平衡。

相关新闻

一文搞懂 AI Agent 核心支柱:从 Tools 到 MCP,从 Skills 到 Loop

一文搞懂 AI Agent 核心支柱:从 Tools 到 MCP,从 Skills 到 Loop

一文搞懂 AI Agent 核心支柱:从 Tools 到 MCP,从 Skills 到 Loop摘要:2025 年是 AI Agent 的爆发年,但很多开发者分不清 Function Call、MCP、Skills 和 Loop 的区别。本文将从“手”、“接口”、“手艺”和“大脑运行”四个维度&…

2026/10/3 6:04:23 阅读更多 →
ESP32-S3触摸屏开发实战:从硬件解析到LVGL界面设计

ESP32-S3触摸屏开发实战:从硬件解析到LVGL界面设计

1. 项目概述:当ESP32-S3遇上触摸屏 如果你玩过ESP32,可能会觉得它已经很强大了,集成了Wi-Fi和蓝牙,能做不少物联网项目。但当你拿到一块带触摸屏的ESP32-S3开发板,比如我手头这块“ESP32-S3-Touch-LCD-5”,…

2026/10/3 23:57:17 阅读更多 →
程序员客栈接单全攻略:避开5大坑,高效拿下项目

程序员客栈接单全攻略:避开5大坑,高效拿下项目

很多想做兼职的程序员都在问:怎么在程序员客栈接单?我先说一个容易误解的地方:注册成功不等于进入接单状态,资料填得多详细也不等于马上会有项目。按照平台流程,开发者需要先完成资料填写和签约审核,再进入…

2026/10/1 7:46:56 阅读更多 →

最新新闻

独立游戏AI工作流:可审计、可降级、可干预的三层框架

独立游戏AI工作流:可审计、可降级、可干预的三层框架

1. 这不是“用AI做游戏”的速成课,而是独立开发者真实踩坑后的框架重建手记“AI辅助独立游戏开发可行性探索之框架搭建(三)”——这个标题里藏着三个被多数教程刻意忽略的关键限定词:辅助、独立、可行性。它不承诺“AI帮你写完《空…

2026/10/7 12:43:42 阅读更多 →
xberg 插件体系实战:使用 Go 绑定 `ClearOcrBackends` 清空 OCR 后端注册表

xberg 插件体系实战:使用 Go 绑定 `ClearOcrBackends` 清空 OCR 后端注册表

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

2026/10/7 12:43:42 阅读更多 →
鉴相器:锁相环中决定成败的“相位裁判”与调试要点

鉴相器:锁相环中决定成败的“相位裁判”与调试要点

干锁相环调试的工程师,十有八九都有过这种经历:明明VCO和环路滤波器都按公式算好了,上电之后就是锁不住,或者输出频谱上平白无故多出一圈杂散。翻来覆去查,最后发现问题往往出在鉴相器这个环节。有人管鉴相器叫锁相环的…

2026/10/7 12:43:42 阅读更多 →
Superpowers实战:用状态机把AI编程从“快而不稳”变为“可控可靠”

Superpowers实战:用状态机把AI编程从“快而不稳”变为“可控可靠”

最近几个月,我用AI编程工具写代码的时间,比手动敲键盘的时间还多。最直观的感受是“快”:需求一讲,代码马上就出来了,看起来像模像样,跑起来也能完成主流程。但真正让我睡不着觉的,也是这些“快…

2026/10/7 12:43:42 阅读更多 →
游戏引擎架构实战:物理系统与动画系统的分层设计与同步解耦

游戏引擎架构实战:物理系统与动画系统的分层设计与同步解耦

1. 物理与动画系统在引擎架构中的真实定位聊游戏引擎架构,绕不开物理和动画这两个模块。很多刚接触引擎源码的朋友会觉得它们只是"两个功能库",调调API就能跑,但真正在项目里踩过坑的人都清楚,物理和动画是整个引擎里最…

2026/10/7 12:43:42 阅读更多 →
Spring Boot+Vue电商推荐系统实战:基于协同过滤的精准营销

Spring Boot+Vue电商推荐系统实战:基于协同过滤的精准营销

简介:这是一份电商精准营销推荐系统的完整源码包,后端采用SpringBoot框架,前端采用Vue技术,实现了前后端分离的现代Web开发模式。项目围绕电商平台的用户推荐场景,设计了用户管理、商品展示、推荐策略配置等核心功能模…

2026/10/7 12:42:41 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →