
1. 项目概述这不是在教你怎么调API而是在帮你重建对“智能体”的直觉“Understanding LLM Agents: Concepts, Patterns Frameworks”——这个标题乍看像一本教材目录但如果你最近半年翻过十家技术团队的内部分享文档、扫过二十个开源项目的 README、或者被产品同事拉着开了三次“Agent 落地可行性”会你就会明白这根本不是理论课而是一份紧急作战地图。我过去一年带过七个项目从金融风控的自动尽调助手到制造业设备维修知识库的实时推理引擎再到教育机构的个性化习题生成系统所有项目在第二周都会卡在一个地方我们到底在构建一个“程序”还是在培育一个“角色”这个问题不厘清后面写的每行代码都在透支技术债。所谓 LLM Agent绝不是“把 prompt 写得更长一点 加个 while 循环”它是一套全新的软件构造范式——底层是语言模型的非确定性推理能力中间是人类任务逻辑的结构化映射顶层是与真实世界持续交互的契约关系。它解决的核心问题是让大模型从“回答问题的图书馆”蜕变为“执行任务的协作者”。适合谁不是只适合算法工程师而是所有需要把模糊需求比如“帮我分析这份合同的风险点”“自动跟进这批客户的交付状态”变成可调度、可审计、可迭代的数字工作流的人产品经理要设计 agent 的行为边界后端工程师要重构服务编排逻辑运维同学得理解它的可观测性新维度甚至法务同事也得参与定义它的决策约束条款。它不替代人但它重新定义了“人机协作”的最小单元。关键词里反复出现的Concepts、Patterns、Frameworks恰恰对应着三个不可跳过的认知台阶先搞懂它“是什么”概念层再掌握它“怎么组织”模式层最后才谈得上“用什么搭”框架层。跳过前两步直接抄 LangChain 示例就像没学过力学就去拧航天器螺栓——表面能转但震动一来就散架。2. 核心概念解构剥离术语迷雾回到“人做事”的本质2.1 Agent 不是“更聪明的函数”而是“有目标的行动者”很多工程师第一次接触 Agent 概念时下意识把它当成一个高级版的 API 封装。这是最危险的误解起点。我们来拆一个最朴素的生活场景你让助理订一张明天下午三点从北京到上海的高铁票。传统函数调用你调用book_ticket(city_from北京, city_to上海, time2024-06-15 15:00)函数返回成功或失败。整个过程是原子的、确定的、无状态的。Agent 行为你只说“订明天下午三点的京沪高铁”Agent 首先要理解意图排除“订机票”“查余票”等干扰接着规划步骤查时刻表→比价→选车次→填乘客信息→支付→发确认短信然后执行每一步可能调用多个异构服务如12306接口、短信网关、内部CRM过程中若发现“G101次已售罄”它不会报错退出而是动态调整计划换G103次改签到14:30询问是否接受中转最后整合结果并以自然语言反馈“已为您预订G103次二等座票价553元电子票已发至邮箱”。关键差异在于四个不可分割的内核Goal-Oriented目标导向Agent 的存在意义是达成某个高层目标而非完成某个原子操作。目标可以是模糊的“提升客户满意度”、分阶段的“先诊断故障再推荐备件最后预约工程师”、甚至带约束的“在预算2000元内完成采购”。Planning Reasoning规划与推理它必须将高层目标分解为可执行步骤并在执行中持续评估进展、识别障碍、生成新子目标。这依赖于 LLM 的链式推理Chain-of-Thought和自我反思Self-Reflection能力不是硬编码的 if-else。Tool Use工具调用Agent 本身不存储数据、不执行计算它通过标准化协议如 OpenAPI、JSON-RPC调用外部工具数据库、API、计算器、代码解释器。工具是它的“手脚”LLM 是它的“大脑”。Memory State记忆与状态一次对话中它需记住用户偏好“上次说不接受红眼航班”、当前任务进度“已查完时刻表正在比价”、历史交互上下文避免重复提问。这种状态管理远超传统 session需区分短期工作记忆working memory与长期经验记忆episodic memory。提示判断一个系统是不是真正的 Agent就问它“如果第一步失败了它会自己想出第二条路吗” 如果答案是否定的那它只是个 prompt 工程精装修版。2.2 “Agent”与“RAG”“Fine-tuning”的本质分野解决不同维度的问题常有人困惑“我的 RAG 系统加了多轮对话算不算 Agent” 或者 “我微调了一个客服模型它能处理复杂流程是不是 Agent” 这需要划清三条技术红线维度RAG检索增强生成Fine-tuning微调LLM Agent核心目标提升回答的事实准确性提升模型在特定领域的表现实现多步骤任务的自主执行知识来源外部向量数据库静态快照训练数据中的统计规律固化权重实时调用工具动态获取最新数据行为逻辑单次推理检索→融合→生成单次推理输入→输出无中间态多次循环思考→规划→调用→观察→反思失败应对检索不到则胡说/拒答输入分布外即崩溃/乱码主动重试、降级策略、请求人工介入可观测性输出结果检索片段黑盒输出完整 trace每步 plan、调用参数、工具返回、反思日志举个实例一个保险理赔助手。RAG 方案用户问“骨折能赔多少”系统检索《意外险条款》PDF提取“骨折赔付比例表”生成回答。但如果用户追问“我上周在XX医院拍的片能在线提交吗”RAG 无法响应——它没有调用医院影像系统的工具也不理解“提交”这个动作。Fine-tuning 方案用海量理赔对话微调模型它可能学会说“请上传检查报告”但当用户真传了文件它无法调用 OCR 服务解析 PDF更不会把解析结果填入理赔系统表单。Agent 方案用户说“我要理赔骨折”Agent 自动触发流程① 调用 OCR 工具解析上传的 X 光片报告② 调用规则引擎匹配《条款》中的伤残等级③ 调用理赔系统 API 创建工单④ 调用短信服务通知用户工单号。每一步失败都有 fallbackOCR 失败则提示“请确保图片清晰”系统 API 超时则切换备用通道。这三者不是替代关系而是正交能力一个健壮的 Agent 可以同时集成 RAG作为其“知识库工具”和微调模型作为其“专用推理模块”但它们解决的是不同层面的问题。2.3 “自主性”的幻觉与真相Agent 永远在人类设定的牢笼里行业里有个危险倾向把 Agent 描绘成“即将觉醒的数字生命”。必须戳破这个泡沫。当前所有 LLM Agent 的“自主性”本质是强约束下的条件反射。它的自由度由三层铁壁严格限定第一层目标边界Goal BoundaryAgent 的目标必须由人类明确定义。它可以优化“如何达成”但绝不允许质疑“该不该达成”。例如一个电商客服 Agent 的目标是“最大化客户满意度”它可能建议退款、补发、赠券但绝不会因“成本过高”而拒绝服务——因为“成本控制”不在其目标函数内。目标一旦写死Agent 就成了目标的绝对忠仆。第二层工具沙箱Tool SandboxAgent 只能调用开发者显式授予的工具列表。它知道“银行转账”这个动作存在但不知道“如何绕过风控系统”。每个工具都像一把钥匙只开一把锁。我们曾给一个财务 Agent 配置了get_account_balance()和transfer_funds()两个工具结果它试图用余额查询结果去“猜”转账密码——当然失败了因为crack_password()根本不在工具列表里。工具即权限列表即宪法。第三层反思护栏Reflection Guardrails高级 Agent 会在每步执行后进行自我反思Self-Reflection“这步操作符合目标吗”“工具返回的数据可信吗”“下一步会不会违反合规条款” 这些反思提示词reflection prompt本身就是人类价值观的编码。我们给医疗 Agent 的反思模板里强制包含“本次建议是否符合《诊疗规范》第X条是否超出执业医师资格范围”——模型再“聪明”也无法绕过这个预设的伦理检查点。所以别怕 Agent “失控”。真正该警惕的是人类在设定目标、配置工具、编写反思提示时的疏忽。Agent 不是潘多拉魔盒它是人类意图的精密放大器——放大的是你的智慧也是你的盲区。3. 核心模式解析从“单兵作战”到“特种部队”的演进路径3.1 单 Agent 模式聚焦“一件事做到极致”的工程哲学这是最基础也最易落地的模式适用于目标明确、流程相对固定的场景。它的架构极简一个 LLM 核心 一组工具 一套记忆机制。但“简单”不等于“容易”关键在于如何让单个 Agent 在复杂现实中不翻车。我们以一个实际项目——某新能源车企的“电池健康诊断 Agent”为例拆解其模式设计核心目标用户上传一份电池BMS日志文件Agent 自动生成诊断报告指出潜在风险点并给出维护建议。工具集设计为什么是这四个parse_bms_log(file)专用于解析车企私有格式日志非通用CSV返回结构化 JSON。理由通用解析器如pandas会丢失BMS特有的时间戳精度和传感器校准参数必须定制。query_battery_knowledgebase(query)对接内部向量库检索《电池失效案例库》《热管理手册》。理由LLM 训练数据不含该车型2024年新发布的固件缺陷必须实时检索。run_simulation(params)调用MATLAB仿真引擎输入电压/温度曲线模拟未来72小时衰减趋势。理由诊断不能只看当前快照需预测性结论而LLM无法做数值仿真。generate_report(data)将解析结果、知识库引用、仿真输出按车企标准模板渲染为PDF。理由最终交付物是法律效力文件格式必须100%合规不能靠LLM自由发挥。记忆机制的分层实践短期工作记忆仅保留本次会话的 BMS 文件哈希值、解析后的关键参数如最高单体电压差、仿真ID。超时30分钟自动清除避免状态污染。长期经验记忆将每次诊断的“高风险模式”如“低温充电后电压突降50mV”存入向量库供后续相似日志快速匹配。但绝不存储原始日志文件——这是车企数据合规红线。实操心得单 Agent 模式最大的坑是试图让它“什么都干”。我们初期给它加了“联系4S店预约检测”的工具结果用户一说“赶紧约”它就跳过诊断直接预约导致误报率飙升。后来砍掉所有非核心工具把“预约”功能下沉为诊断报告末尾的标准化按钮前端调用问题立解。单 Agent 的威力在于专注。3.2 多 Agent 协作模式用“社会分工”破解超复杂任务当单个 Agent 无法覆盖全链条或需要引入专业制衡时多 Agent 协作成为必然。这不是简单堆砌多个 Agent而是构建一个微型“数字社会”。我们为某省级政务热线设计的“民生诉求处置 Agent 网络”是典型范例角色分工与契约设计Intake Agent入口代理唯一对外接口。职责语音转文字→情绪识别判断是否紧急→意图分类“投诉”“咨询”“求助”→分派给下游。关键约束它不处理任何业务逻辑只做路由。即使识别出“火灾报警”也绝不自行拨打119而是立即升级给 Emergency Agent。Policy Agent政策代理内置全省237部法规的向量库。职责根据诉求类型精准定位适用条款生成“政策依据摘要”。关键约束它不生成解决方案只提供法律文本引用。避免越权解读。Resource Agent资源代理对接民政、卫健、住建等12个部门的API。职责查询“附近养老院空床位”“社区医生排班”“危房鉴定进度”。关键约束它不承诺服务时效只返回API原始数据如“XX养老院剩余床位2更新时间2024-06-14 10:23”。Response Agent应答代理整合前三者输出生成自然语言回复。职责用口语化表达串联政策、资源、下一步动作。关键约束它不添加任何未被上游验证的信息。若 Policy Agent 未返回条款它就说“正在核查相关政策稍后回复”。协作协议不是聊天而是正式公文交换多 Agent 间通信绝不用自然语言那会引入歧义而是严格定义的 JSON Schema{ message_id: uuid, sender: IntakeAgent, receiver: PolicyAgent, task: retrieve_relevant_laws, payload: { complaint_type: elderly_care_shortage, location: Shanghai_Pudong } }每个 Agent 收到消息后必须在 800ms 内返回结构化响应超时则触发降级流程如 Response Agent 用预设话术“政策查询中请稍候”。这种“公文式”通信让协作可审计、可追溯、可压测。注意多 Agent 架构的致命诱惑是“过度设计”。我们曾为一个内部IT支持系统设计了7个Agent账号、权限、设备、网络、安全、知识库、应答结果调试成本爆炸。后来合并为3个Intake路由、Ops调用所有IT系统API、KnowledgeRAG效率反而提升40%。Agent 数量 问题域复杂度 / 单个Agent的认知负荷不是越多越好。3.3 分层 Agent 模式在“战略”与“战术”间架设桥梁这是面向大型组织的终极模式解决“顶层设计”与“一线执行”的断层。它把 Agent 分为三层战略层Strategic Agent角色CEO 视角的“数字高管”输入KPI 目标如“Q3客户满意度提升5%”、市场数据、竞品动态输出可执行的“战役计划”Campaign Plan例如“启动‘售后响应提速’战役重点攻坚家电品类目标首次响应30秒问题解决率92%”关键能力宏观推理、资源博弈、长期规划。使用更大参数量、更强推理能力的模型如 GPT-4-Turbo但调用频次极低每天1次。战役层Campaign Agent角色项目经理承接战略层计划输入战略层下发的 Campaign Plan JSON输出细化的“作战指令”Operation Order例如“Week1优化IVR菜单Week2训练客服Agent新话术Week3上线实时质检模块”关键能力任务分解、跨团队协调、进度跟踪。使用中等参数模型每日调用数次。战术层Tactical Agent角色一线士兵执行具体动作输入战役层下发的 Operation Order 中的单项任务输出可落地的操作如“修改IVR脚本第12行”“向客服团队推送3条新QA”关键能力精准执行、工具调用、异常上报。使用轻量模型如Phi-3每秒可处理数百请求。三层间的“指挥链”设计战略层不直接调用任何工具只向战役层发送 JSON 计划战役层不执行任何操作只向战术层分发带优先级的任务包含超时阈值、重试次数战术层执行失败时必须按标准格式上报含错误码、原始日志片段、建议修复方案战役层据此动态调整后续指令。这套模式在某全国性银行的“普惠金融扩面”项目中落地战略层分析监管文件后决定“向县域小微商户倾斜信贷资源”战役层将其拆解为“优化县域风控模型”“开发方言语音尽调”“对接地方税务API”三线任务战术层则具体执行——模型工程师用 AutoML 平台训练新模型NLP 团队微调方言ASR后端同学对接税务局开放平台。三层分离让战略不被细节淹没执行不偏离方向。4. 主流框架实战对比选型不是拼参数而是看“谁更懂你的组织基因”4.1 LangChain企业级应用的“瑞士军刀”但刀鞘太重LangChain 是目前生态最成熟的框架其优势在于企业就绪性Enterprise-Ready。我们用它交付了5个中大型项目核心价值不是“快”而是“稳”和“可管”。它真正强大的地方工具注册中心Tool Registry所有工具API、数据库连接、自定义函数统一注册、版本管理、权限控制。运维同学可在后台界面一键禁用某个高风险工具如“删除客户数据”无需改代码。记忆抽象层Memory Abstraction支持插拔式记忆后端——Redis 存短期会话PostgreSQL 存长期经验向量库存语义记忆。我们曾将客户投诉的“高频失败模式”存入向量库当新投诉出现相似关键词时Agent 自动关联历史根因准确率提升65%。链式调试Chain Debugging每个 LLM 调用、工具调用、内存读写都生成结构化 trace可直接导入 Grafana 做耗时分析。某次发现 70% 延迟来自query_knowledgebase工具的向量检索优化索引后 P95 延迟从 2.1s 降至 0.3s。但它沉重的代价学习曲线陡峭一个简单“查天气发邮件”Agent需写 200 行代码定义 Chain、Memory、OutputParser。新手前三天常卡在RunnablePassthrough的嵌套逻辑里。过度工程化为支持“任意组合”它抽象出太多概念Runnable, Bind, WithConfig实际项目中 80% 场景只需 3 种固定模式。实操心得LangChain 适合已有成熟 DevOps 体系、需要审计合规、且团队有 2 名以上资深工程师的中大型项目。千万别用它做 PoC我们曾用 LangChain 做一个内部会议纪要生成 Demo花了3天调通而用 LlamaIndex 原生 API 2小时搞定。选型要看阶段不是看名气。4.2 LlamaIndexRAG 场景的“极速引擎”Agent 是它的副业LlamaIndex 的基因是“让 LLM 无缝接入你的数据”。它的 Agent 能力是 RAG 能力的自然延伸因此在数据密集型任务中表现惊艳。它的杀手锏数据连接器Data Connectors原生支持 150 数据源Notion、Slack、Confluence、MySQL、S3且每个连接器都针对该数据源做了深度优化。例如Confluence 连接器能自动提取页面层级结构、作者、最后编辑时间并转化为带 metadata 的 chunk而 LangChain 的通用爬虫常把导航栏也当正文索引。查询引擎Query Engine不是简单 RAG而是支持“多跳查询”Multi-hop Query。用户问“张三负责的项目中哪些用了 React 技术栈”它能先查“张三的项目列表”再对每个项目查“技术栈”最后聚合。这种链式推理在 LangChain 中需手动编排而 LlamaIndex 一行代码搞定query_engine.query(张三的React项目)。轻量 Agent 模板ReActAgent模板封装了标准的“思考-行动-观察”循环只需注入工具列表和系统提示词50行内即可启动。我们用它 1 小时内就为法务部搭建了“合同条款冲突检测 Agent”接入了公司全部 37 份主合同模板。它的明显短板工具生态薄弱虽支持工具调用但缺乏 LangChain 那样的工具治理能力。所有工具需手动管理生命周期生产环境稳定性堪忧。无原生多 Agent 支持协作需自行实现消息总线不如 LangChain 的MultiAgentExecutor开箱即用。注意LlamaIndex 的核心价值是“数据管道”不是“Agent 框架”。把它当 Agent 框架用就像用挖掘机切菜——能切但不是最优解。我们的经验是数据源复杂、RAG 是核心、Agent 是辅助功能时选 LlamaIndex反之选 LangChain。4.3 AutoGen研究前沿的“乐高积木”生产环境需谨慎AutoGen 是微软研究院出品代表了 Agent 架构的最前沿探索。它把 Agent 彻底解耦为“可编程的对话参与者”理念激进潜力巨大。它颠覆性的设计Agent 即角色Role as Code每个 Agent 是一个 Python 类可定义自己的system_message角色设定、llm_config模型参数、human_input_mode是否允许人工干预。创建一个“代码审查员 Agent”只需reviewer AssistantAgent( namecode_reviewer, system_messageYou are a senior Python developer. Review code for security, efficiency, and PEP8 compliance., llm_config{model: gpt-4-turbo, temperature: 0.1}, )群聊Group Chat原生支持多个 Agent 可加入一个群聊自动协商、辩论、达成共识。我们测试过让coder、reviewer、tester三个 Agent 合作开发一个排序算法reviewer发现性能问题后coder自动重写tester生成新用例全程无人工介入。人类在环Human-in-the-Loop深度集成当 Agent 卡住时可自动暂停并弹出 Web 界面让人类输入指令如“忽略此警告”“强制使用此算法”指令会作为新消息注入群聊Agent 继续执行。它尚未成熟的现实生产级监控缺失没有内置的 trace 分析、延迟告警、失败归因。某次群聊中reviewer因 temperature 设置过高0.7导致过度批评coder反复重写却无法收敛系统默默运行了2小时才超时——而 LangChain 会立刻在 Grafana 报警。模型绑定过紧高度依赖 OpenAI/GPT 系列对国产模型适配需大量 hack。实操心得AutoGen 是未来但不是现在。我们只在两类场景用它一是前沿技术预研如测试多 Agent 协商谈判能力二是内部创新 Hackathon48小时内验证新想法。生产环境除非你有专职 MLOps 团队为其定制监控栈否则请远离。它的美在于自由痛在于失控。4.4 自研框架当“标准答案”成为最大瓶颈时的选择当项目走到深水区所有框架都会露出獠牙。我们为某军工单位做的“装备故障协同诊断系统”最终选择了自研框架原因很现实标准框架无法满足的硬需求离线部署所有模型、工具、向量库必须在无外网的涉密内网运行而 LangChain/LlamaIndex 的默认依赖如httpx、openaiSDK会尝试连外网。国密算法强制所有数据传输、存储必须用 SM4 加密而框架的序列化层如 LangChain 的Serializable不支持国密。硬件加速绑定需调用国产 GPU如寒武纪 MLU的专用推理库框架的模型抽象层LLMclass无法绕过 CUDA 依赖。自研框架的最小可行核心我们只实现了三个模块却解决了全部痛点Tool Core工具内核定义tool装饰器所有工具函数自动注册到本地 registry支持同步/异步、超时控制、SM4 加密参数透传。Orchestrator编排器一个极简状态机只支持PLAN → ACT → OBSERVE → REFLECT四个状态每个状态可绑定自定义 handler。没有多余抽象代码即文档。Secure Memory安全记忆所有内存操作走国密加密的 Redis且增加“记忆水印”——每次写入时自动附加当前 Agent ID 和时间戳防止跨 Agent 记忆污染。自研的代价与回报代价投入 3 名工程师 6 周写了 2100 行核心代码文档只有 1 页 README。回报系统上线后0 次因框架导致的故障涉密评审一次性通过后续新增工具如对接某型雷达信号分析仪平均只需 2 小时。提示自研不是英雄主义而是成本核算。当框架的定制成本 自研成本时就是动手的时刻。我们的红线是自研框架必须能在 100 行内讲清核心逻辑且所有代码必须有单元测试覆盖。没有这两条宁可忍受框架的痛苦。5. 实战避坑指南那些没人告诉你、但会让你彻夜难眠的细节5.1 “工具调用失败”不是 Bug而是设计信号几乎所有新手都把工具调用失败当成异常疯狂加重试逻辑。这是方向性错误。工具失败90% 是设计缺陷的警报。我们踩过的典型坑与解法坑HTTP 401 错误反复出现现象Agent 调用get_user_profile()工具时频繁返回 401。真相不是认证失效而是 Agent 在多次会话中复用了同一个过期 token。解法在工具注册时声明auth_required: true框架自动在每次调用前调用refresh_token()工具。工具不是孤立函数而是有生命周期的对象。坑SQL 查询返回空结果现象Agent 问“张三的订单金额总和”execute_sql()返回空。真相Agent 生成的 SQL 是SELECT SUM(amount) FROM orders WHERE user_name张三但数据库字段是user_id它根本没查对字段。解法为每个数据库工具配置 schema 描述如orders table has columns: id, user_id (int), amount (float), created_at (datetime)并在 LLM 的 system message 中强调“你必须严格遵循提供的 schema禁止猜测字段名”。坑OCR 工具识别率暴跌现象上传清晰发票OCR 返回乱码。真相Agent 把用户上传的 PNG 文件直接喂给 OCR而该 OCR 只支持 JPG。解法在工具链中插入“格式转换中间件”所有图像工具前自动调用convert_to_jpg()。工具调用链不是直线而是带预处理的流水线。实操心得每次工具失败先问三个问题① 工具的输入契约是否被严格遵守② 工具的输出是否被正确解析而非直接丢给 LLM③ 这个失败是否暴露了 Agent 对领域知识的缺失如不知道发票有格式要求答案指向设计而非代码。5.2 “记忆泄露”比数据泄露更隐蔽的灾难Agent 的记忆机制是双刃剑。我们曾在一个医疗项目中遭遇惨痛教训事故还原用户 A糖尿病患者问“我的血糖最近偏高怎么办”Agent 调用get_patient_history(patient_idA)获得其近3个月血糖记录生成建议。用户 B高血压患者紧接着问“我血压有点高吃什么药”由于工作记忆未及时清理Agent 的上下文里还残留着用户 A 的血糖数据它竟在回复中写道“您血糖也偏高建议同时服用二甲双胍……”——对高血压患者开降糖药根因与防御根因记忆管理策略错误。我们用了全局共享的 Redis 实例但未按user_id隔离 key 空间。防御四原则物理隔离每个用户会话使用独立的 memory key如memory:user_A:session_xyz绝不混用。语义擦除在每次新会话开始时主动调用clear_working_memory()而非依赖 TTL。敏感过滤对医疗、金融等场景所有记忆写入前用正则自动脱敏如patient_id替换为PATIENT_XXXX。审计日志每次 memory 读写都记录user_id、agent_id、operationread/write/clear便于事后溯源。注意记忆不是“缓存”而是 Agent 的“人格组成部分”。设计记忆就是设计 Agent 的伦理边界。没有记忆隔离的 Agent就像没有门锁的银行金库。5.3 “幻觉放大器”Agent 如何把 LLM 的小错误变成大事故单个 LLM 的幻觉Hallucination可能只是胡说一句而 Agent 会把它当作“事实”驱动后续一系列错误操作。经典放大链LLM 在PLAN阶段幻觉“用户需要查看2023年Q4财报”实际用户只问“最近业绩如何”Agent 执行get_financial_report(year2023, quarter4)—— 工具返回“无此报告”Agent 在REFLECT阶段认为“工具不可用”于是切换策略调用scrape_investor_website()—— 爬虫抓取到过期页面最终生成报告把2022年数据当成2023年Q4数据呈现阻断幻觉的三道防火墙Plan 层过滤在 LLM 生成 plan 后插入一个轻量校验 Agent用规则检查 plan 合理性。例如检测到year2023但当前是 2024年6月且用户未明确指定年份则强制修正为year2024。Action 层熔断为每个工具设置“可信度阈值”。get_financial_report()工具若返回空且其上游数据源ERP系统健康度95%则立即熔断不进入 reflect 阶段直接返回“数据暂不可用”。Output 层溯源最终回复中强制标注每条信息的来源如“根据2024年Q1财报来源内部ERP更新时间2024-04-30”。用户可点击溯源系统自动展示该数据的原始工具调用日志。实操心得对抗幻觉不能指望 LLM 更“诚实”而要构建“不信任但可验证”的系统。我们所有生产 Agent 的最终输出都带一个[Source]链接点击即跳转到该结论对应的完整 trace。这不仅是技术更是责任。5.4 “成本黑洞”你以为的免费正在悄悄吃掉你的利润LLM 的 token 成本是显性的但 Agent 架构会催生大量隐性成本常被忽视。**我们监控到的真实