专注概念 · 构建完整认知框架 · 面试准备专用 · 主流产品深度剖析
【核心概念】智能体(Agent) 是能够自主感知环境、进行推理决策、执行动作以实现特定目标的实体。其本质是一个闭环控制系统:
感知 → 思考 → 行动 → 再感知 → 再思考 → 再行动 → ... → 目标达成
【核心洞察】:Agent与普通程序的本质区别不在于"能不能调用工具",而在于决策权归属——Agent将决策权交给了推理引擎(LLM),而非预设的if-else规则。
一句话定义:Agent = LLM + 工具 + 记忆 + 规划能力
| 特征 | 含义 | 反面教材 |
|---|---|---|
| 自主性【核心】 | 独立决策,无需外部指令 | 每一步都等人类确认 |
| 反应性【核心】 | 感知环境变化并实时响应 | 忽略反馈,机械执行 |
| 主动性【重点】 | 不仅响应,更主动推进目标 | 被动等待指令 |
| 社交性【重点】 | 能与人或其他Agent协作 | 孤立运行,无法沟通 |
| 适应性【了解】 | 从经验中学习优化策略 | 每次从零开始 |
判断标准:如果一个系统关机了就没有任何影响,那它就不是真正的Agent——Agent是持续自主运行的实体。
【核心】第0层:反射型(Reflex)
└─ 无状态,输入→输出直接映射
└─ 例:简单的规则机器人
【重点】第1层:基于模型的反射型(Model-based Reflex)
└─ 维护内部状态,但状态变化完全由外部输入决定
└─ 例:带记忆的客服机器人
【核心】第2层:目标驱动型(Goal-driven)
└─ 具备目标意识,决策时考虑"这个行动是否有助于达成目标"
└─ 例:ReAct Agent ★当前主流
【重点】第3层:效用驱动型(Utility-driven)
└─ 在多个目标间权衡,选择效用最大化的方案
└─ 例:投资决策Agent
【了解】第4层:学习型(Learning Agent)
└─ 从历史经验中改进自身策略
└─ 例:RL-based Agent,记忆增强Agent
【核心】:当前LLM Agent的主流落点在第2层到第3层之间。具备目标意识,但效用权衡能力取决于底层LLM的推理能力。
【核心】问题:LLM本身已经很强大,为什么还要Agent?
回答:LLM有三个根本局限:
[局限一] 信息局限 → 训练数据截止,无法访问实时信息
[局限二] 执行局限 → 只能输出文本,无法改变世界
[局限三] 任务局限 → 单次推理,无法处理多步骤任务
【核心】Agent恰好填补这三个空白:
[方案一] 工具调用 → 获取实时信息
[方案二] 动作执行 → 通过API改变世界
[方案三] 循环推理 → 分步完成复杂任务
【核心】:Agent不是"更好的LLM",而是**"LLM的扩展装置"**,让LLM具备完整的感知-决策-行动闭环。
| 维度 | 传统程序 | 普通LLM | Agent【核心】 |
|---|---|---|---|
| 决策方式 | 预定义规则 | 单次推理 | 多轮思考+行动 |
| 环境交互 | 被动调用 | 无 | 主动感知+反馈 |
| 工具使用 | 硬编码 | 不支持 | 自主选择+调用 |
| 记忆能力 | 变量存储 | 上下文窗口 | 短期+长期记忆 |
| 任务适应性 | 固定 | 单步任务 | 多步动态规划 |
| 错误恢复 | 异常处理 | 无法自我纠错 | 可反思+重试 |
【核心】:Agent具备闭环决策能力——执行→观察→思考→调整→再执行,直到任务完成。
| 类型 | 描述 | 代表 |
|---|---|---|
| 简单反射Agent【了解】 | 条件-动作规则 | 恒温器 |
| 基于模型的Agent【了解】 | 维护内部世界状态 | 导航系统 |
| 目标驱动Agent【重点】 | 基于目标选择行动 | 规划系统 |
| 效用驱动Agent【核心】 | 最大化期望效用 | 决策系统 |
| 学习Agent【核心】 | 从经验中改进 | LLM Agent |
| 类型 | 核心能力 | 典型应用 |
|---|---|---|
| RAG Agent【核心】 | 知识检索+问答 | 企业知识库、法律咨询 |
| 工具Agent【核心】 | 调用外部API/工具 | 自动化运维、数据查询 |
| 代码Agent【重点】 | 代码生成+执行 | 软件开发、数据分析 |
| 决策Agent【重点】 | 多因素权衡+决策 | 投资分析、供应链优化 |
| 交互Agent【核心】 | 多轮对话+任务执行 | 客服、销售助手 |
| 多Agent系统【了解】 | 角色分工+协作 | 复杂项目、模拟仿真 |
【核心】 Agent的"思考"有四种基本范式:
最简单的形式——LLM直接推理出答案,不调用工具。
问题 → LLM → 答案
特点:单步、低成本,但无法获取外部信息或执行动作。
将推理和行动交织进行,这是目前最主流的范式。
问题 → [思考 → 行动 → 观察]×N → 答案
【核心机制】:
- 思考(Thought):分析当前状态,决定下一步做什么
- 行动(Action):执行工具调用或输出中间结果
- 观察(Observation):接收环境反馈,更新信念状态
【核心洞察】:ReAct的价值在于让推理过程可见且可纠正。如果某一步观察不符合预期,模型可以在下一步调整策略。这种闭环机制是Agent区别于Prompt Chain的根本。
ReAct工作流示例:
用户:帮我查一下订单ORD-001的状态
Thought: 用户想查询订单状态,我需要调用订单查询工具
Action: query_order(order_id="ORD-001")
Observation: 该订单状态为"已发货",物流单号SF123456
Thought: 我已获得订单信息,可以回答用户了
Answer: 您的订单ORD-001已发货,物流单号为SF123456
通过在回答中显式输出推理步骤来提升准确性。
问题 → 思考步骤1 → 思考步骤2 → ... → 答案
【核心要点】:
- 强制模型展示推理过程,而不是直接跳转结论
- 本质是在推理时增加"计算量",让模型在token空间完成更多运算
【重点】 与ReAct的区别:
- CoT:只在内部推理,不对外行动
- ReAct:思考会转化为实际行动并接收外部反馈
并行探索多条推理路径,在每条路径结束时评估,选择最优解。
┌─ 路径1 → 评估
问题 → 分支1 → ───┼─ 路径2 → 评估 → 选择最优
└─ 路径3 → 评估
适用场景:需要创意思考或优化的问题(如数学证明、方案设计)
成本代价:ToT的token消耗呈指数级增长,在实际生产系统中应用有限。
| 范式 | 核心思想 | 工具调用 | 适用场景 | 成本 |
|---|---|---|---|---|
| 直接推理 | 单步输出 | 否 | 简单问答 | 低 |
| ReAct【核心】 | 推理+行动交替 | 是 | 通用任务 | 中 |
| CoT【重点】 | 链式推理 | 否 | 需要逻辑推导 | 中 |
| ToT【了解】 | 多路径搜索 | 可选 | 创意/优化问题 | 高 |
【核心】 规划(Planning)是Agent的核心认知能力:
Agent不显式写出计划,而是在每步"即时决策"——走一步看一步。
特点:
- 每步都重新评估全局
- 灵活性极高,能适应动态变化
- 但易在长任务中"迷失方向"
【核心】 代表:ReAct模式
Agent先制定完整计划,再逐步执行。
阶段1:规划 → 生成步骤序列(含依赖关系)
阶段2:执行 → 按计划逐步推进
阶段3:监控 → 检测偏差时重新规划
特点:
- 长任务中方向感好
- 便于人类审查和介入
- 但灵活性相对较低
【核心】 代表:Plan-and-Execute模式
| 粒度 | 说明 | 示例 |
|---|---|---|
| 宏观规划 | 步骤级别,不涉及具体操作细节 | "先查订单,再联系客服" |
| 微观规划 | 具体API调用级别 | "调用query_order('ORD-001')" |
实践建议:宏观规划交给LLM,微观细节通过工具定义来约束。
| 决策类型 | 说明 | 后续动作 |
|---|---|---|
| 继续推理 | 输出新的Thought | 进入下一轮思考 |
| 调用工具 | 选择工具+参数 | 执行工具节点 |
| 结束任务 | 输出最终答案 | 终止循环 |
| 请求澄清 | 向用户提问 | 等待用户回复 |
Agent的决策基于以下信息:
- 系统提示词:角色定位、目标、约束条件
- 当前状态:已完成步骤、已有信息、待办事项
- 可用工具列表:名称、描述、参数schema
- 历史交互:对话上下文、过去的思考轨迹
【核心】 任何Agent系统都可以抽象为四个层次:
功能:理解输入,构建当前"世界状态"
输入类型:
- 自然语言指令【重点】
- 结构化数据(JSON、表格)【重点】
- 环境反馈(工具返回结果)【核心】
- 多模态数据(图像、音频)【了解】
输出:一个结构化的"当前状态"表示
功能:基于当前状态,决定下一步做什么
决策类型:
- 继续推理(输出新的Thought)
- 调用工具(选择哪个工具、带什么参数)
- 结束任务(输出最终答案)
- 请求澄清(向用户提问)
决策依据:
- 系统提示词(角色、目标、约束)
- 当前状态(已完成步骤、已有信息)
- 可用工具列表(名称、描述、参数schema)
- 历史交互(对话上下文)
功能:将决策转化为具体动作
动作类型:
- 工具调用(API请求、数据库查询)
- 内部状态更新(保存记忆、更新计划)
- 外部通信(发消息、写文件)
功能:存储和检索信息,支撑决策
【核心】 三层记忆架构:
| 记忆类型 | 存储内容 | 技术实现 | 生命周期 |
|---|---|---|---|
| 工作记忆【核心】 | 当前对话上下文、中间步骤 | 状态字典、消息列表 | 单次会话 |
| 情景记忆【核心】 | 历史会话、用户偏好 | 向量数据库 | 跨会话 |
| 语义记忆【重点】 | 事实知识、业务规则 | 知识图谱、文档库 | 永久 |
记忆设计要点:
- 区分"事实"与"推断",附带时间戳
- 重要信息自动触发保存
- 检索时考虑时效性和相关性
- 实现遗忘机制避免污染
【核心】 Agent是有状态的系统。状态(State) 是Agent在任意时刻的知识和信念的总和。
- 已完成的操作列表
- 已获得的观察结果
- 待完成的步骤
- 当前决策上下文
- 错误计数和重试信息
- 工具调用历史
| 挑战 | 说明 | 应对策略 |
|---|---|---|
| 状态膨胀 | 状态超出上下文窗口 | 关键信息摘要而非全量保留 |
| 状态污染 | 错误信息进入状态后难纠正 | 区分"事实"与"推断" |
| 状态一致性 | 多步执行中状态需保持一致 | 支持状态回滚 |
| 并发状态 | 多用户同时使用 | 状态隔离,每个会话独立 |
工具是Agent连接外部世界的桥梁。从抽象角度看,一个工具包含三个层次:
工具 = 接口(Interface) + 实现(Implementation) + 语义(Semantics)
- 接口:LLM看到的描述(名称、说明、参数schema)——这是LLM决策的唯一依据
- 实现:实际的执行代码——这是工具的真实行为
- 语义:工具在业务逻辑中的含义——用于人类理解和审核
【核心洞察】:工具的"接口"决定了LLM能否正确使用它。接口设计是Agent系统设计中最重要的工作之一。
工具设计原则【核心】:
- 工具描述应清晰说明功能、参数格式、边界条件
- 提供典型用法示例
- 明确错误处理方式
- 复杂工具应拆分为多个简单工具
【核心】 Agent的基本工作循环:
1. 接收输入(用户指令或环境触发)
2. 构建当前状态(输入 + 历史上下文 + 记忆检索)
3. 调用LLM进行推理
4. 解析LLM输出,判断类型:
├─ 如果是"调用工具" → 执行工具,获取结果,回到步骤3
├─ 如果是"最终答案" → 输出结果,结束
├─ 如果是"需要澄清" → 向用户提问,等待回复,回到步骤3
└─ 如果是"内部思考" → 更新状态,回到步骤3(无外部动作)
5. 达到终止条件(最大步数、任务完成、用户终止)
【核心】:每一步都依赖上一步的"观察结果"来更新状态,这是闭环控制的本质。
【核心】 Agent必须能在有限步骤内终止:
| 终止条件 | 说明 | 优先级 |
|---|---|---|
| 自然终止 | LLM输出"最终答案"标记 | 最高(正常) |
| 步数限制 | 达到最大执行步数 | 中(硬截断) |
| 时间限制 | 超时强制终止 | 中(硬截断) |
| 状态重复 | 检测到已访问状态,判定为循环 | 高(兜底) |
| 用户终止 | 用户主动取消 | 最高(紧急) |
设计原则:每个Agent都必须有明确的终止条件和兜底机制。没有终止条件的Agent在生产环境中是不可部署的。
【核心】 Agent运行在充满不确定性的环境中:
| 不确定性来源 | 表现形式 | 应对策略 |
|---|---|---|
| 感知不确定性 | 输入模糊、意图不明 | 主动澄清、置信度评估 |
| 执行不确定性 | 工具失败、超时、返回异常 | 重试、降级、人工介入 |
| 推理不确定性 | LLM幻觉、推理错误 | 验证步骤、外部事实校验 |
核心原则:Agent系统设计中,错误恢复机制与正常流程同样重要。
【重点】 当单个Agent无法完成复杂任务时,引入多Agent协作:
Supervisor(协调者)
├── Worker A(执行者)
├── Worker B(执行者)
└── Worker C(执行者)
- 协调者负责任务分解和结果汇总
- 适用场景:任务可以自然分解
Agent A → Agent B → Agent C → 结果
- 每个Agent的输出是下一个的输入
- 适用场景:流水线式任务
Agent A ←→ Agent B ←→ Agent C
(多轮讨论,达成共识)
- 通过辩论收敛到更可靠的答案
- 适用场景:需要高可靠性的判断
任务发布 → Agent们竞标 → 选择最优 → 执行
- 多个Agent竞争执行任务
- 适用场景:开放任务池
我们可以将Agent的世界分为三大江湖,各有各的生态和规则。
这是技术人的"兵器库",用于从底层构建自定义Agent。
| 框架 | 所属厂商/社区 | 核心理念 | 适用场景 | 一句话点评 |
|---|---|---|---|---|
| LangChain & LangGraph | LangChain Inc. | 生态之王,通过标准化组件连接模型、数据和工具 | 企业级RAG、复杂工作流 | 生态最广,灵活性高 |
| AutoGen | 微软研究院 | 多智能体协作,通过对话协作完成任务 | 代码生成与调试、复杂模拟 | 生产级首选,与Azure深度集成 |
| CrewAI | CrewAI Inc. | 角色扮演团队,强调角色、目标和任务的分离 | 市场调研、内容创作流水线 | 轻量易用,适合快速搭建 |
| Dify | 语灵智能 | 开源LLMOps平台,侧重RAG和可视化工作流编排 | 企业私有化知识库 | 开源明星,GitHub星标136K |
这是普通开发者和极客们的"数字员工",能自主完成编程和工程任务。
| 产品 | 所属厂商 | 核心特点与技术亮点 | 服务对象 |
|---|---|---|---|
| Claude Code | Anthropic | 口碑与自主性之巅。强大的自主编程能力,独特的四层上下文压缩级联技术 | 追求极致编程效率的开发者 |
| OpenAI Codex | OpenAI | 增长最快的编程Agent。轻量级命令行工具,Guardian AI审批机制确保安全 | 希望与ChatGPT推理能力结合的开发者 |
| WorkBuddy / CodeBuddy | 腾讯 | 中国AI工作台的"工友"。CodeBuddy是IDE编程助手;WorkBuddy是全场景AI工作台 | 企业员工,尤其是腾讯生态内的用户 |
这是非技术人员的"AI应用工厂",通过可视化配置来"生产"面向特定场景的Agent。
| 平台 | 所属厂商 | 核心特点 | 服务对象 |
|---|---|---|---|
| Coze (扣子) | 字节跳动 | 零代码,生态强。海量插件,15分钟搭建Agent,一键发布到微信等渠道 | C端用户、个人开发者 |
| Dify | 语灵智能 | 开源LLMOps平台,侧重RAG和可视化工作流编排 | 企业私有化知识库 |
| 维度 | Claude Code | OpenAI Codex | WorkBuddy | Dify |
|---|---|---|---|---|
| 核心定位 | 终端内的自主编程Agent | 可嵌入的编码智能体框架 | 企业级全场景AI工作台 | 开源LLM应用开发平台 |
| 技术栈 | TypeScript + Bun | Rust (CLI) + JSON-RPC协议 | 深度整合腾讯云生态 | Python + TypeScript + FastAPI |
| 核心引擎 | 代理循环 (Agentic Loop) | 应用服务器 (App Server) | 多智能体编排 (Harness) | DAG工作流引擎 |
| 执行范式 | ReAct (推理+行动) 循环 | 基于Responses API的闭环交互 | 五层解耦架构下的双模运行 | 可视化编排,流程驱动 |
| 核心服务对象 | 追求极致效率的个人开发者 | 希望将Agent能力嵌入产品的开发者 | 寻求组织级AI协同的企业 | 注重定制化和私有化部署的开发者 |
Claude Code本质上是一个为高自主度、长时间运行而设计的 Agent Runtime(代理运行时)。
它的架构遵循一条清晰的管道:用户输入 → CLI解析 → 查询引擎 → LLM API → 工具执行循环 → 终端UI。整个UI层基于 React + Ink 构建,是一个完全响应式的终端应用。
flowchart TD
A[用户输入] --> B[CLI解析器<br/>Commander.js]
B --> C[查询引擎 QueryEngine<br/>~46K行代码]
C --> D[Anthropic API]
D --> E{工具调用请求?}
E -->|是| F[工具执行循环<br/>Tool System]
F --> G[执行结果反馈]
G --> C
E -->|否| H[生成最终响应]
H --> I[终端UI<br/>React + Ink渲染]
1. 代理循环 (Agentic Loop)
这是它的心脏,由 queryLoop() 函数驱动。它遵循经典的 ReAct(推理+行动) 范式:调用模型 → 收到工具调用意图 → 执行工具 → 把结果塞回上下文 → 再次调用模型,直至任务完成。循环终止条件有8种,恢复机制分5层(API级重试、输出Token恢复、响应式压缩、上下文排空、Fallback模型切换),设计上就准备长期运行。
2. 工具系统
内置了40多种工具,涵盖文件操作、Shell命令执行、网络搜索、代码智能等五大类别。每个工具都是自包含的,拥有输入Schema(Zod验证)、权限模型、执行逻辑和UI组件。工具调用循环中,模型的每次推理都会决定下一步使用哪个工具。
3. 记忆体系——五层设计
记忆系统覆盖五个层面:
- 短期记忆:会话内的对话消息,进程退出即丢失。
- 工作记忆:当前任务状态(如正在运行的子Agent任务、文件变更追踪)。
- 长期记忆:三层结构——
~/.claude/projects/目录(按项目隔离)→MEMORY.md索引文件(最多200行,始终加载进系统提示)→ 独立的主题文件。主题文件分四种类型:user(角色偏好)、feedback(用户纠正)、project(进行中工作)、reference(外部系统指针)。记忆检索也是模型驱动的——用Claude Sonnet扫描记忆目录,选出最相关的5个文件。 - 摘要记忆:四级压缩体系——轻量裁剪(Snip)→工具结果缓存(Microcompact)→全量对话摘要(Auto Compact)→413错误响应式压缩(Reactive Compact)。
- 投机执行:在用户确认操作前,通过写时复制(Copy-on-Write) 的覆盖文件系统在后台预执行操作,大幅降低等待感。
4. Shell安全
bashSecurity.ts 中实现了20项安全检查,覆盖命令替换注入、IFS注入、Unicode空白技巧等攻击向量。Auto模式下还有解释器黑名单(python、node、bash、eval、exec、sudo、ssh等默认不允许自动执行)。
// 核心逻辑简化——queryLoop()驱动的无限循环
// 来源:src/QueryEngine.ts 及源码审计报告
async function queryLoop() {
while (true) {
// 1. 调用模型,获取响应
const response = await callLLM(context);
// 2. 如果模型要求调用工具
if (response.hasToolCall()) {
const toolResult = await executeTool(response.toolCall);
// 3. 把工具执行结果追加到上下文
context.append(toolResult);
continue; // 继续循环
}
// 4. 没有工具调用,任务完成
break;
}
}# 实际使用:在项目目录下启动
cd my-project
claude
# 让Claude自主完成任务
> 帮我修复所有失败的单元测试
# Claude会自动:运行测试→读取错误→搜索源文件→编辑代码→再次验证追求在终端内获得极致自主编程体验的个人开发者。
Codex的设计哲学是解耦与可嵌入性。它不是一个最终产品,而是一个可以被任何客户端调用的"智能体引擎"。
它的核心是一个 App Server(应用服务器),通过双向JSON-RPC协议与各种客户端(CLI、IDE、Web、桌面应用)通信,将智能体的推理能力与界面彻底分离。
flowchart LR
subgraph 客户端层
CLI[Codex CLI]
IDE[VS Code扩展]
Web[Codex Cloud]
Desktop[桌面应用]
end
subgraph Codex核心
AppServer[应用服务器<br/>JSON-RPC协议]
Loop[智能体循环]
ToolExec[工具执行器]
ContextMgr[上下文管理器]
end
subgraph 模型层
API[Responses API]
Model[GPT-5.2 Codex<br/>等模型]
end
CLI --> AppServer
IDE --> AppServer
Web --> AppServer
Desktop --> AppServer
AppServer --> Loop
Loop --> ToolExec
ToolExec --> ContextMgr
ContextMgr --> API
API --> Model
1. 智能体循环 (Agent Loop)
一个标准的闭环:
- 接收用户输入 → 整合为提示词
- 推理 → 通过Responses API发送请求,模型生成响应
- 分支判断:
- 若模型生成最终响应 → 返回给用户,循环终止
- 若模型请求工具调用 → 执行工具,将结果追加到提示词,回到步骤2
2. Responses API驱动的提示构建
Codex CLI通过向Responses API发送HTTP请求来执行推理。JSON负载包含三个关键参数:
instructions:系统/开发者消息(从config.toml的model_instructions_file读取,或使用模型自带的base_instructions)tools:工具定义列表(内置工具 + MCP服务器提供的工具)input:输入项目列表,按顺序构建:role=developer消息:沙盒权限描述- (可选)
role=developer消息:用户config.toml中的developer_instructions - (可选)
role=user消息:聚合的"用户指令"(来自AGENTS.md、AGENTS.override.md、技能元数据等) role=user消息:描述当前本地环境(工作目录、Shell类型)- 用户的实际消息
3. 上下文窗口管理
每次推理调用,完整对话历史(包括所有工具调用)都会纳入提示。单轮可能涉及数百次工具调用,因此Codex将上下文窗口管理作为核心职责之一。
4. 灵活的API端点配置
Codex的Responses API端点可配置,支持多种后端:
- OpenAI官方API(
https://api.openai.com/v1/responses) - ChatGPT后端(
https://chatgpt.com/backend-api/codex/responses) - 本地OSS模型(ollama 0.13.4+ 或 LM Studio,默认
http://localhost:11434/v1/responses) - Azure等云服务商托管的Responses API
# ~/.codex/config.toml —— 核心配置文件
# 模型配置
model = "gpt-5.2-codex"
# 模型指令文件(覆盖base_instructions)
model_instructions_file = "~/.codex/my_instructions.md"
# 开发者指令
developer_instructions = """
你是一个专注于Python后端开发的专家。
在修改代码前,先运行现有测试套件。
"""
# 项目文档文件(从根目录向上查找)
project_doc_fallback_filenames = ["AGENTS.md", "README.md"]# 实际使用
codex "帮我重构这个API端点,提高性能"
# Codex会自动:读取代码→规划步骤→执行工具(编辑文件、运行测试)→验证→返回结果希望将自主智能体能力轻松嵌入到自己产品中的开发者或企业。
WorkBuddy的架构不是为了服务单个人,而是为了解决整个组织的协同问题,将AI从工具提升为企业资产。
它采用同源底座与五层解耦的设计。从上到下依次是:用户交互层、业务应用层(20+技能包)、能力服务层、智能体底座层(与CodeBuddy共享)、基础设施层(云端沙箱+本地环境)。
flowchart TD
subgraph 第五层[用户交互层]
WX[企业微信]
WeChat[微信]
Feishu[飞书]
DingTalk[钉钉]
Desktop[桌面客户端]
end
subgraph 第四层[业务应用层 - 20+技能包]
Meeting[会议助手]
Sales[销售助手]
Finance[财务助手]
HR[人事助手]
IT[IT助手]
end
subgraph 第三层[能力服务层]
Doc[文档处理]
Data[数据处理]
Content[内容创作]
Code[代码开发]
Comm[通讯协作]
Sys[系统操作]
end
subgraph 第二层[智能体底座层 - 同源底座]
NLU[自然语言理解器]
Planner[任务规划器]
ToolCaller[工具调用器]
Monitor[执行监控器]
end
subgraph 第一层[基础设施层]
Cloud[云端沙箱<br/>腾讯云]
Local[本地执行环境<br/>用户电脑]
end
WX --> Meeting
WeChat --> Sales
Feishu --> Finance
DingTalk --> HR
Desktop --> IT
Meeting --> Doc
Sales --> Data
Finance --> Content
HR --> Code
IT --> Comm
Doc --> NLU
Data --> Planner
Content --> ToolCaller
Code --> Monitor
Comm --> NLU
NLU --> Cloud
Planner --> Local
ToolCaller --> Cloud
Monitor --> Local
1. 同源底座策略
WorkBuddy与CodeBuddy、QClaw共享同一套AI Agent底层底座——腾讯从2023年开始研发,经过CodeBuddy三年内部验证和QClaw百万用户外部验证。三个产品共享:
- 技术复用:CodeBuddy的代码能力、QClaw的远程操控能力可无缝集成到WorkBuddy
- 统一生态:开发者编写一次技能,三个产品上同时运行;用户配置一次大模型,三个产品上同时使用
2. 五层解耦架构
每层只与相邻层通信,有明确职责边界:
- 第一层 基础设施层:云端+本地混合架构,兼顾云端算力优势与本地数据安全
- 第二层 智能体底座层:四组件协同——自然语言理解器(理解指令隐含意思)、任务规划器(分层拆解+动态调整)、工具调用器(自动选择最合适工具)、执行监控器(异常自动重试/重新规划)
- 第三层 能力服务层:独立微服务——文档处理、数据处理、内容创作、代码开发、通讯协作、系统操作
- 第四层 业务应用层:20+内置技能包(会议助手、销售助手、财务助手等),均为腾讯内部验证过的生产级应用
- 第五层 用户交互层:融入企业微信、微信、飞书、钉钉等已有工具
3. 双模运行机制
WorkBuddy最独特的技术设计——云端沙箱与本地执行双模式,可无缝切换:
- 云端沙箱模式:任务在腾讯云隔离沙箱执行,不受本地设备限制,支持定时/后台任务。适合非敏感、需大量算力、定时执行的任务。
- 本地执行模式:任务在用户电脑执行,数据不上传云端,速度快,可访问本地资源和内网。适合处理敏感数据、涉及本地文件的任务。
用户可手动指定,也可由系统根据任务类型自动选择,执行过程中还可随时切换。
4. 企业级硬核指标
| 指标 | 数据 |
|---|---|
| 启动延迟 | 隔离容器支持100ms冷启动 |
| 存储能力 | 腾讯网盘统一数据底座,PB级一键归档 |
| 技能生态 | SkillHub收录7万+Skills,两月累计下载量突破3000万+ |
| 运行周期 | 支持7×24长周期异步Session |
| 内置能力 | 文档Agent预置10+ Skills及100+ MCP |
# WorkBuddy技能包开发示例(基于腾讯云ADP平台)
class MeetingAssistant(Skill):
"""会议助手技能包"""
def run(self, instruction: str):
# 1. 自然语言理解:解析用户意图
intent = self.parse_intent(instruction) # "帮我预约明天下午3点的项目评审会"
# 2. 任务规划:拆解子任务
subtasks = [
("check_calendar", {"time": "2026-08-07 15:00"}),
("find_available_room", {"capacity": 10}),
("invite_participants", ["张工", "李总", "王组长"]),
("generate_agenda", {"topic": "项目评审"})
]
# 3. 工具调用:在本地或云端执行
results = []
for task, params in subtasks:
if task == "check_calendar":
result = self.tool_caller.call("calendar_api", params)
# ...
results.append(result)
# 4. 返回结果
return self.format_response(results)# 实际使用:在任意入口发送指令
企业微信: @WorkBuddy 帮我预约明天下午3点的项目评审会,邀请张工、李总和王组长
# WorkBuddy自动完成所有子任务并返回确认寻求将AI深度融入内部流程,实现安全、可治理、组织级协同的大中型企业。
Dify的核心理念是将复杂的AI逻辑,变成产品经理也能拖拽完成的"流程图"。
它采用典型的前后端分离架构。前端是可视化画布(React + xyflow),后端是一个自研的轻量级DAG(有向无环图)执行引擎。两者通过一份结构化的工作流定义JSON作为通信契约。
flowchart LR
subgraph 前端层
Canvas[可视化画布<br/>React + xyflow]
Config[节点配置面板]
end
subgraph 通信层
JSON[工作流定义JSON]
end
subgraph 后端执行引擎
Parser[JSON解析器]
DAG[DAG构建与环检测]
Topo[拓扑排序]
Pool[变量池管理]
Dispatch[节点分发执行器]
end
subgraph 执行器
LLM[LLM执行器]
KB[知识库检索]
Code[代码执行沙箱]
Cond[条件分支]
HTTP[HTTP调用]
end
Canvas --> JSON
Config --> JSON
JSON --> Parser
Parser --> DAG
DAG --> Topo
Topo --> Pool
Pool --> Dispatch
Dispatch --> LLM
Dispatch --> KB
Dispatch --> Code
Dispatch --> Cond
Dispatch --> HTTP
1. 工作流定义JSON
用户拖拽编排的结果,被序列化为标准JSON,包含节点列表(nodes)和连线列表(edges):
{
"nodes": [
{ "id": "start", "type": "start" },
{ "id": "llm_1", "type": "llm", "data": { "prompt": "总结:{{input}}" } },
{ "id": "end", "type": "end" }
],
"edges": [
{ "source": "start", "target": "llm_1" },
{ "source": "llm_1", "target": "end" }
]
}2. DAG执行引擎四步走
- DAG构建与环检测:将JSON转为图结构(邻接表),用DFS或Kahn算法检测是否存在环
- 拓扑排序:计算节点执行顺序,保证"先依赖,后使用"
- 上下文变量管理:维护全局
variable_pool,存储各节点输出,支持模板插值(如{{retrieval_1.text}}) - 节点分发执行:每类节点有独立执行器——LLMNode调用模型API、KnowledgeNode查询向量数据库、CodeNode在沙箱中执行Python、ConditionNode动态跳转分支
3. 为什么不用传统工作流引擎(Activiti/Airflow)?
| 维度 | 传统引擎(Activiti) | Dify专用引擎 |
|---|---|---|
| 设计目标 | 人工审批、批处理 | 实时AI推理与交互 |
| 输出模式 | 异步、批处理 | 原生支持流式输出(SSE) |
| 上下文 | 强类型业务对象 | 动态、非结构化上下文 |
| 启动延迟 | 重、事务重 | 轻量、低延迟、可中断 |
4. 多种索引方式
| 模式 | 查询方式 | 适用场景 |
|---|---|---|
| 高精度 | 向量嵌入 + Vector Search / Full-Text Search / Hybrid Search | 高精度问答、复杂意图理解 |
| 经济 | 仅倒排索引的全文检索 | 快速响应、低成本、轻量级查询 |
5. 函数调用集成
插件系统支持将外部服务封装为工具,供LLM调用。所有敏感调用都通过内网守护进程+内部API通道,带API Key、租户上下文和严格的结构校验。
// Dify 工作流定义 JSON 示例
{
"id": "workflow-1",
"name": "Customer Support Assistant",
"nodes": [
{
"id": "node-1",
"type": "llm",
"prompt_template": "Answer based on context: {{context}}",
"model": "gpt-4"
},
{
"id": "node-2",
"type": "function_call",
"function_name": "get_customer_order_status",
"arguments": { "customer_id": "{{input.customer_id}}" }
},
{
"id": "node-3",
"type": "conditional",
"condition": "{{result.status}} == 'pending'",
"true_node": "node-4",
"false_node": "node-5"
}
],
"edges": [
{ "from": "node-1", "to": "node-2" },
{ "from": "node-2", "to": "node-3" }
]
}# 实际使用:通过可视化画布拖拽
# 产品经理可以直接:拖入LLM节点 → 配置提示词 → 拖入知识库检索 → 连接 → 发布
# 无需编写任何代码即可完成一个RAG应用注重定制化、希望私有化部署,并渴望用低代码方式快速构建AI应用的开发者或产品团队。
| 维度 | Claude Code | OpenAI Codex | WorkBuddy | Dify |
|---|---|---|---|---|
| 核心范式 | ReAct代理循环 | Responses API驱动的闭环 | 五层解耦+双模运行 | DAG工作流引擎 |
| 适用人群 | 追求极致效率的开发者 | 希望嵌入Agent能力的开发者 | 寻求组织级AI协同的企业 | 注重定制化和私有化部署的开发者 |
| 编程入门 | TypeScript + Bun | Rust + TOML配置 | Python技能包开发 | Python + JSON工作流定义 |
| 独特优势 | 深度代码理解+投机执行 | 高度可嵌入+多后端兼容 | 云端/本地双模+企业级管理 | 可视化编排+低代码门槛 |
"最成功的Agent实现往往是最简单的。" —— Anthropic
【核心】 这条原则的核心理念:
- 不要一开始就追求多Agent、复杂记忆、多层规划
- 从最简单的工作流开始:一个LLM + 少量工具
- 在实际使用中发现问题,再逐步增加复杂性
- 复杂度是手段,不是目的
【核心】 Agent能做什么,完全取决于它拥有什么工具:
- 工具的质量(描述准确性、参数清晰度)决定Agent的使用正确率
- 工具的数量决定Agent的能力广度
- 工具的粒度决定Agent的操作精度
规律:工具描述越清晰,Agent调用越准确。接口设计比实现更重要。
【核心】 Agent的多步推理依赖于状态的一致性:
- 状态必须真实反映已执行的操作和已获得的观察
- 错误信息一旦写入状态,会持续影响后续决策
- 状态的可审计性决定了系统的可调试性
【核心】 生产级Agent必须可观测:
- 每一步的Thought、Action、Observation都可追溯
- 决策依据(系统提示词、工具描述、上下文)可重现
- 错误发生时能快速定位是"推理错"还是"执行错"
参考答案:
Agent是以LLM为推理核心,通过自主规划、工具调用和记忆管理在动态环境中完成复杂任务的系统。
与普通LLM调用的核心区别:
| 维度 | 普通LLM | Agent |
|---|---|---|
| 交互方式 | 单次问答 | 多轮闭环 |
| 工具使用 | 不支持 | 自主选择调用 |
| 任务处理 | 单步 | 多步骤规划执行 |
| 状态管理 | 无状态 | 有状态 |
| 自我修正 | 无 | 可通过反思修正 |
加分回答:Agent的本质是闭环系统,LLM是开环推理引擎。Agent每步都依赖"观察结果"来更新状态,这是闭环控制的本质。
参考答案:
ReAct = Reasoning + Acting,核心是让LLM在思考和行动之间交替进行。
每轮循环包含三个环节:
- Thought(思考):分析当前状态,决定下一步做什么
- Action(行动):执行一个具体行动(通常调用工具)
- Observation(观察):观察行动结果,更新状态
循环直到模型认为已获得足够信息回答用户问题。
核心优势:可解释性强(每一步都可追溯)、灵活(能适应动态变化)、自我纠错(观察不符预期时可调整)。
加分回答:ReAct的价值在于让推理过程可见且可纠正,这种闭环机制是Agent区别于Prompt Chain的根本。
参考答案:
三层记忆架构:
| 层级 | 名称 | 存储方式 | 生命周期 | 容量 |
|---|---|---|---|---|
| L1 | 工作记忆 | 对话上下文/状态字典 | 单次会话 | 受上下文窗口限制 |
| L2 | 情景记忆 | 向量数据库 | 跨会话 | 百万级向量 |
| L3 | 语义记忆 | 知识图谱 | 永久 | 结构化 |
设计要点:
- 区分"事实"与"推断",附带时间戳
- 重要信息自动触发保存(如用户偏好、关键决策)
- 检索时考虑时效性和相关性
- 实现遗忘机制避免信息污染
- 工作记忆放不下时,用摘要压缩
参考答案:
负载均衡层(LB)
│
API Gateway(限流/认证)
│
┌─────────┼─────────┐
▼ ▼ ▼
Agent Pod Agent Pod Agent Pod (水平扩展)
│ │ │
└─────────┼─────────┘
▼
分布式状态存储(Redis Cluster)
│
工具服务(微服务化,独立扩展)
关键设计:
- 无状态Agent实例:状态外置到Redis,便于水平扩展
- 弹性伸缩:根据队列深度动态调整Pod数量
- 异步处理:接收请求后立即返回request_id,通过WebSocket推送结果
- 工具调用隔离:工具服务独立部署,可单独扩容
- 熔断与超时:每个工具调用设置超时,失败时降级
参考答案:
长任务的核心挑战是上下文长度限制和步骤间依赖。Plan-and-Execute通过显式规划解决:
阶段一:规划(1-2次LLM调用)
- 生成带依赖关系的步骤图
- 识别可并行执行的步骤
阶段二:执行
- 按依赖顺序执行
- 每步结果存入共享状态
- 步骤结果紧凑摘要(避免状态膨胀)
阶段三:动态重规划
- 定期检查是否需要调整计划
- 异常时局部重新规划,而非全部推倒
加分回答:关键思想是不要在每一步都"重新思考",而是在规划上多投入。好的规划可以节省大量执行中的决策成本。
参考答案:
四种协作模式:
| 模式 | 结构 | 适用场景 |
|---|---|---|
| 层次式 | Supervisor协调多个Worker | 任务可自然分解 |
| 顺序式 | A→B→C流水线 | 有明确先后依赖 |
| 辩论式 | 多Agent讨论达成共识 | 需要高可靠性 |
| 市场式 | Agent竞标执行任务 | 开放任务池 |
设计要点:
- 明确每个Agent的角色和职责边界
- 设计清晰的通信协议(推荐A2A标准)
- 避免过度分工(每个Agent仍需具备完整推理能力)
- 设置协调者防止无限循环
参考答案:
原因分析:LLM在不确定时倾向于重复尝试类似方案,尤其在工具调用失败后。
解决方案:
| 方案 | 说明 |
|---|---|
| 最大步数限制 | 硬性终止条件,如最多10步 |
| 状态去重 | 检测重复状态,强制跳出 |
| 多样化提示 | 明确告知"如果前三次失败,尝试不同方法" |
| 置信度阈值 | 低置信度时直接请求用户澄清 |
| 结构化输出 | 强制输出action格式,避免自由文本 |
加分回答:可以在设计中加入"循环检测器",维护已访问状态列表,检测到重复时触发特殊的"跳出循环"指令。
参考答案:
- 输入验证:工具执行前用Pydantic校验参数格式
- 重试机制:指数退避重试(最多3次)
- 降级策略:工具不可用时提供备选方案
- 清晰错误信息:返回结构化错误(含错误码、原因、建议),便于LLM理解
- 工具描述优化:明确说明参数格式、边界条件、典型示例
- 工具拆分:复杂工具拆分为多个简单工具,降低调用难度
参考答案:
- 精简系统提示词:压缩到必要信息
- 工具结果摘要:大结果只返回关键信息
- 会话压缩:用LLM摘要历史对话
- 缓存策略:相同问题缓存结果
- 模型分级:简单任务用小模型,复杂任务用大模型
- 批处理:多个操作合并为一次调用
- 限制推理步数:设置最大步数,防止无限循环
参考答案:
- 标准化:MCP/A2A等协议统一工具和Agent间通信
- 轻量化:PydanticAI等类型安全框架崛起
- 垂直化:从通用Agent转向行业专业Agent
- 自主化:从需要人类确认到自主执行
- 成本优化:更高效的小模型+大模型组合
- 可观测性:Agent行为的可追踪性成为生产必需
- 多模态:从纯文本到图像、音频、视频的感知
参考答案:
| 维度 | 具体指标 |
|---|---|
| 任务完成率 | 用户任务是否最终完成 |
| 准确率 | 工具选择正确率、参数正确率 |
| 效率 | 平均步骤数、总耗时 |
| 成本 | 总Token消耗、API调用次数 |
| 稳定性 | 成功率、超时率、错误率 |
| 用户体验 | 响应时间、可解释性、自然度 |
| 安全性 | 是否越权、是否泄露敏感信息 |
参考答案:
Agent不是万能的,以下场景应避免使用:
- 简单任务:单步问答直接调用LLM更高效
- 确定性流程:规则工作流比Agent更可靠、更便宜
- 成本敏感场景:Agent的循环推理消耗大量Token
- 延迟敏感场景:Agent多步推理响应慢
- 没有明确评估标准:无法判断Agent输出好坏时,难以优化
- 高风险决策:Agent可能产生不可预测的行为
加分回答:好的架构是在"规则"和"Agent"之间找到平衡——用规则处理确定部分,用Agent处理需要判断的部分。
| 概念 | 能否用自己的话解释? | 是否理解本质? |
|---|---|---|
| Agent的定义 | ☐ | ☐ |
| ReAct模式 | ☐ | ☐ |
| 四种推理范式 | ☐ | ☐ |
| 外显规划vs内隐规划 | ☐ | ☐ |
| 三层记忆架构 | ☐ | ☐ |
| 四层架构模型 | ☐ | ☐ |
| MCP协议 | ☐ | ☐ |
| 原则 | 能否举例说明? | 是否理解其重要性? |
|---|---|---|
| 最小可用原则 | ☐ | ☐ |
| 工具即能力边界 | ☐ | ☐ |
| 状态即信任基础 | ☐ | ☐ |
| 可观测性必需 | ☐ | ☐ |
| 题目 | 能否流畅回答? | 能否举出实例? |
|---|---|---|
| Agent vs LLM区别 | ☐ | ☐ |
| ReAct核心思想 | ☐ | ☐ |
| 三层记忆设计 | ☐ | ☐ |
| 高并发架构设计 | ☐ | ☐ |
| 循环问题解决 | ☐ | ☐ |
| 成本优化策略 | ☐ | ☐ |
| 何时不用Agent | ☐ | ☐ |
| 产品 | 核心引擎 | 独特优势 | 适用场景 |
|---|---|---|---|
| Claude Code | ☐ | ☐ | ☐ |
| OpenAI Codex | ☐ | ☐ | ☐ |
| WorkBuddy | ☐ | ☐ | ☐ |
| Dify | ☐ | ☐ | ☐ |
理论部分到此结束。 核心要义就一句话:Agent = 感知 → 思考 → 行动 → 再感知的闭环系统。
当你理解了"为什么要让LLM循环"和"循环中每一步在做什么",你就掌握了Agent的本质。剩下的只是把每个环节用具体的技术实现出来。