这两年要是你在技术圈还没听说过 AI Agent,说实话有点说不过去了。我自己的经历是从去年初开始把 Agent 方向当正经营生来做的,最开始就是拿 LangChain 拼一个会调搜索的本地聊天机器人,后来一路做到帮团队落地企业内部的客服工单分诊、周报汇总、代码评审助手,踩过的坑能写一本书。这篇我打算完全站在实战角度,把 AI Agent 的核心概念、LLM 和 Agent 的区别、从 0 到 1 搭建的完整路径、常见的翻车现场,以及当前这个方向的产品生态和学习路线,一次讲透,不讲虚头巴脑的概念,只讲能落地的判断和操作。
先说个结论放在前面:Agent 不是旧瓶子装新酒,它是把 LLM 从“只会答题的优等生”改造成“能自己拆活、调用工具、按步骤完成任务的初级员工”的那套完整方法论。如果你正准备转 AI 应用开发、想搞懂 Agent 究竟是什么,或者就是好奇为什么所有人都在喊“智能体”,这篇都适合你。文章里所有的技术判断,都来自我自己在一线项目中真实跑过的结果,不是文档搬运。
1. AI Agent到底是什么——先把概念掰碎了说
1.1 LLM、AI模型和Agent到底差在哪里
这三个词现在被混用得太厉害了,我面试候选人的时候发现很多做了两三年后端的人,一说 Agent 就以为是在调大模型接口,这是最大的误解。我建议你用一句话来分清楚:AI 模型是发动机,LLM 是“能读写人类语言的发动机”,Agent 则是“装上了轮子、方向盘、油门和导航的整车”。
具体一点解释。AI 模型这个概念最大,传统机器学习模型、深度学习模型都算,干的事情是模式匹配,比如判断一张图里有没有猫、预测明天股票涨跌,输入输出都是结构化数据。LLM 是 AI 模型里专门处理自然语言的那一类,GPT 系列、Claude、以及开源生态里的 DeepSeek、Qwen 这些都是 LLM,它们的能力是“根据上下文预测下一个 token”,所以能写文章、能聊天,但特点是“你问它才答”,你不给指令它就什么都不干。
Agent 完全不是这个层面的东西。它的定位是一个自治系统,有目标、能拆解任务、能调用外部工具、能根据执行结果自我调整,直到把目标完成。最直白的体验区别是:你给 LLM 说“帮我订一张周五从上海到北京的机票,要下午的”,它最多给你一段订票建议文字。但如果你给它套一个 Agent 框架,给它订票 API 和航班查询接口,它会自己查到航班、比价、选择下午的班次,尝试提交订单,如果发现没票了自己调整到相邻时段,最后告诉你完成情况。这个“自己干完活”的过程,就是 Agent 和 LLM 最本质的区别。
我还想拿 DeepSeek 这个例子多说一句,因为太多人问“DeepSeek 是 Agent 吗”。DeepSeek 是开源 LLM,你直接打开对话窗口跟它聊,它只是一个模型,不是 Agent。但你把它接在 Agent 框架里,给它加工具、加工作流、加记忆,让它去自动处理工单,这时候整体系统才是 Agent。模型是零件,Agent 是整机,市面上说的“搭 Agent”本质上就是组装这台车。
1.2 一个Agent的组成结构
任何 Agent,不管宣传得多么高大上,拆开来看都是这个框架:核心大脑、规划器、记忆、工具集、行动执行层、反馈机制。我在团队内部培训时喜欢用“新入职实习生”来打比方,这样所有人都能秒懂。
核心大脑就是那个 LLM,相当于实习生的“学校知识储备”,负责理解需求、生成思路。规划器是 Agent 的“工作日志”,把“处理用户投诉”这个目标拆成“识别情绪”“查询订单”“拟定回复”“发送邮件”四个步骤,很多复杂 Agent 还会用 ReAct 模式循环执行:先思考下一步该做什么,再行动,观察结果后再思考。记忆分两块,短期记忆是当前对话上下文,长期记忆是向量数据库里存的 FAQ、历史工单、用户偏好,相当于这个实习生的“私人笔记本”。工具集就是它能调用的外部能力,可以是搜索 API、数据库 SQL 查询、代码解释器、企业内部的 ERP 接口,Agent 没工具就像实习生没电脑,再聪明也交不了活。行动执行层负责真的把动作做出去,比如调用 Python 函数、发 HTTP 请求。反馈机制则是 Agent 的复盘能力,任务执行失败或结果异常时,它能根据错误信息修正计划,再试一次。
这个结构说起来简单,真正落地时难就难在每一个环节都要做“工程化取舍”。比如记忆到底要存多少轮对话、存到向量库还是 Redis、工具调用的参数校验怎么做、规划器如果规划错了怎么兜底,这些才是 Agent 开发的核心工作,而调模型 API 反而是最简单的一步。你自己第一次写 Agent 的时候,不要一上来就追求“全知全能”,一定要先把六个零件里最关键的三个做好——大脑、工具、记忆,其他的一步步加。
2. 为什么是现在这个时间点——Agent爆火背后的技术逻辑
2.1 从“对话机器”到“干活机器”的跨越
其实 Agent 这个研究方向在 AI 领域一点都不新鲜,上世纪 80 年代学界就在搞智能体了,但这么多年一直没有大规模落地,核心原因是“大脑不够用”。传统智能体靠规则引擎和有限状态机驱动,只要场景一复杂,规则就指数级膨胀,最后维护成本比人工干活还高。现在情况起变化,是因为 LLM 提供了两个传统方法完全不具备的能力:语义理解和开放生成。
有了 LLM 做大脑,Agent 不再需要穷举所有分支的规则。以前做一个自动客服机器人,你要把所有异常情况写成 if else 的规则树,新增一个产品活动,规则就要跟着改半天。现在只需要在 Prompt 里告诉 Agent“你是客服助手,遇到你无法回答的情况请转人工”,大模型自己就能处理大部分未见过的问题。这就是把“确定性编程”变成了“目标导向编程”,我不教它每一步怎么做,只告诉它目标和边界,它自己想办法。这个转变听起来轻巧,实际是把软件开发的底层范式撬动了一个口子。
另外还有一个很关键的推动力,是工具生态的成熟。Agent 不是一个独立的东西,它最擅长的是“指挥其他系统干活”。以前企业里的 API、数据库、RPA 流程、消息中间件都是分散的,Agent 相当于一个超级调度员,把以前需要人手工点来点去的操作串起来。像 OpenAPI、MCP 这类协议的高速普及,让模型能以标准格式发现和调用外部工具,这一步打通了,Agent 才真正具备了进入企业生产环境的条件。
我自己判断一个技术方向是否值得投入,只看一条:它是否显著降低了某个复杂任务的交付成本。Agent 在“自然语言转结构化操作”这条线上,确实做到了,所以哪怕现在还有这样那样的不稳,大方向我是坚定的。
2.2 Agent与现有开发模式的碰撞
把 Agent 塞进现有开发体系,会碰撞出很有意思的火花。传统软件是人给机器下命令,机器按代码执行,开发和维护的重心在于把需求翻译成精确的代码逻辑;Agent 体系里,重心变成了定义目标和约束,模型自动生成执行路径。这两种模式在未来很长时间里会并存,而不是谁取代谁。
举个实际例子,我们团队做过一个 Jenkins AI Agent 的集成尝试,目的不是要替代 CI/CD,而是给研发团队配一个“运维值班助理”。开发者可以在群里发一句“帮我看看最新一次构建为什么失败”,Agent 自动登录 Jenkins 拉取构建日志、定位到报错段落、再结合代码仓库最近提交做初步归因,最后把排查结论发回群里。这本质上不是替代 Jenkins,而是在 Jenkins 上面加了一层语义层,把原来要人肉翻日志的动作接管了。这种模式同样适用于数据库慢查询排查、线上监控告警分析,价值非常直接。
在 Java 技术栈里,这个趋势也很明显。Spring AI 的出现就是让 Java 开发者可以用熟悉的 Spring 风格去写 LLM 应用,把模型接入、提示词模板、结构化输出这些都封装成了标准 Bean。很多企业级平台已经在做类似的事情:把多 Agent 编排做为中台能力,供业务系统统一调用。“企业级 Java AI Agent 应用平台”这类关键词的热度,说明 Java 后端圈子已经意识到 Agent 不是一个玩具,而是要支撑关键业务的基础设施组件。
但我也想说句泼冷水的话:越是 Java 系的企业团队,越容易犯一个错误——把 Agent 做成“大号的伪需求”。你想,如果业务流程本来就是固定的,用传统工作流引擎就够了,不需要 Agent 的“自主决策”。Agent 真正值得上的场景,一定是那些原来需要人来根据不完全信息做判断的地方,比如非结构化文档处理、异常归因、个性化回复。搞不清楚这一点,Agent 项目大概率做一半就烂尾。
3. 从0到1搭建一个Agent——完整实操路径记录
3.1 明确场景与需求拆解
我见过太多人学 Agent 的第一天就问“能不能做一个万能助手”,然后就没有然后了。正确姿势是选一个足够窄的场景做透。我自己最推荐新手做的第一个 Agent 是“客服工单分诊与摘要生成”,原因有三个:边界清晰(输入是工单文本,输出是分类+摘要+推荐处理组)、好准备数据(自己拿历史工单就能造)、效果容易评估(分类对不对、摘要精不精一目了然)。
需求拆解这一步非常关键。你要把业务需求翻译成 Agent 的能力需求,我习惯在这个阶段画一个表格,列出输入、感知方式、决策逻辑、输出行动:
| 模块 | 具体内容 |
|---|---|
| 输入 | 用户提交的文本工单(包含问题描述、用户类型、紧急标记) |
| 感知 | 读取工单文本,必要时调用历史工单查询函数 |
| 决策 | 判断工单类型(退款/故障/咨询/投诉),评估紧急程度 |
| 输出 | 生成工单摘要、推荐处理部门、拟定一条初步回复话术 |
| 兜底 | 模型置信度不足时,标记为“需人工审核” |
这一步做完,你就知道这个 Agent 需要哪几类工具函数了。按我的经验,第一个版本不要超过三个工具函数,否则你自己都调试不过来。这个场景最少只需要两个工具:一个查询历史相似工单的函数,一个触发“转人工”标记的函数。少即是多,跑通闭环后才去加别的。
3.2 工具选型与框架思考
说完需求说选型。先谈框架,我的建议是分情况:如果你是 Python 背景,想深入理解 Agent 原理,就用 LangChain 或者轻量点的 Agnetic 这类库;如果你想快速给团队做一个可视化 Agent 应用,Dify、Coze 这类平台更合适;如果你是 Java 背景且要融入公司现有架构,那就直接看 Spring AI 体系,它和 Spring Cloud 配合做企业级 Agent 中台很顺手。这里有个我踩过的坑:框架越重,调试越难。新手的第一个项目我甚至建议只用原生代码加一个模型 SDK,自己写循环和工具调用,跑通了再引入框架,否则你分不清遇到的问题到底是模型笨还是框架配置错了。
再聊模型选择。如果只是做内部工具、对成本敏感,国产开源模型 DeepSeek、Qwen 系列就够了,它们的工具调用能力和语义理解已经能打;如果做面向客户的高质量产品,商业闭源模型在复杂推理和稳定度上优势仍然明显。实操中还会做“模型分级”:简单分类任务用便宜的小模型,复杂多步推理任务用贵的大模型,让请求自动路由。别一张嘴就上旗舰模型,成本会吃掉你整个项目的收益。
准备环境时,Python 开发者需要安装以下依赖(我用的是 Python 3.11 + 最新的 SDK):
pip install openai pip install langchain langchain-openai pip install chromadb如果是 Java 工程师,对应的做法是在 pom.xml 里引入 Spring AI 的依赖,配置好模型 API 的 key 和 endpoint,定义一个 ChatClient Bean 就可以开始写业务逻辑了。注意不管哪个语言,API Base URL 和密钥这些配置都建议用环境变量管理,别硬编码在代码里。
3.3 核心实现:一个“工单分诊Agent”的最小代码
我现在给你一个极简但可运行的版本,不依赖 LangChain,纯 Python 用模型 API 自己写 Agent 循环。这个版本跑通了,你就能理解所有 Agent 框架的底层逻辑。
import openai import json client = openai.OpenAI() def search_similar_ticket(text): # 这里简化:实际应查询 vector db 或历史工单库 return "历史相似工单:用户反馈支付成功后未到账,处理方案为核对交易流水。" def mark_manual_review(ticket_id, reason): # 调用内部系统接口,把工单标记为人工处理 return f"工单 {ticket_id} 已转人工,原因:{reason}" tools = [ { "type": "function", "function": { "name": "search_similar_ticket", "description": "查找历史相似工单", "parameters": { "type": "object", "properties": {"text": {"type": "string", "description": "工单描述"}}, "required": ["text"] } } }, { "type": "function", "function": { "name": "mark_manual_review", "description": "将工单标记为人工处理", "parameters": { "type": "object", "properties": { "ticket_id": {"type": "string"}, "reason": {"type": "string"} }, "required": ["ticket_id", "reason"] } } } ] def run_agent(user_input, ticket_id): messages = [ {"role": "system", "content": "你是工单分诊助手。先判断工单类型和紧急程度,如果需要可查询历史相似工单。若不确信如何处理,调用mark_manual_review转人工。"}, {"role": "user", "content": user_input} ] for step in range(5): resp = client.chat.completions.create( model="deepseek-chat", messages=messages, tools=tools, tool_choice="auto" ) msg = resp.choices[0].message messages.append(msg) if msg.tool_calls: for call in msg.tool_calls: func = { "search_similar_ticket": search_similar_ticket, "mark_manual_review": mark_manual_review }[call.function.name] args = json.loads(call.function.arguments) result = func(**args) messages.append({ "role": "tool", "tool_call_id": call.id, "content": str(result) }) else: return msg.content return "达到最大步数,转人工处理" print(run_agent("用户说付款成功但账户没到账,很生气要投诉", "T20240515001"))这个代码的逻辑其实就是 Agent 标准的 ReAct 循环:模型收到用户问题后,自己决定调哪个工具、传什么参数,工具返回结果后再让模型继续推理,直到模型认为信息足够了,输出最终结论。值得注意的地方是tool_choice="auto",这意味着模型自己判断要不要调工具,而不是强制必须调。我在实际生产代码里还会加一个max_steps限制,防止模型陷入死循环。
团队内部跑这个 demo 的时候,模型在两轮之内就正确调用了查历史工单工具,生成了符合预期的摘要。这个版本虽然简陋,但它已经是一个完整的四要素 Agent:有大脑(大模型)、有规划(工具调用序列)、有行动(执行函数)、有记忆(messages 历史)。
3.4 部署、接入与效果评估
代码写好只是第一步,上线前还有一堆事情要处理。首先要包装服务,我推荐用 FastAPI 把上面的 Agent 封装成一个 HTTP 接口,入参是工单文本,出参是 JSON 格式的分类结果和摘要;然后把它接入到企业现有的客服系统里,可以用消息队列异步处理,或者作为 Webhook 订阅工单创建事件。如果用的是 Java 生态,这一步就变成把 Spring AI 的组件暴露成 REST API,通过 Spring Cloud 注册到网关,供上游工单系统调用。
部署层面,容器化是最省心的方案。Dockerfile 里只需要基础 Python 镜像加依赖安装,注意把模型 API 的超时时间调长一点,因为 Agent 一次请求可能要串行调好几次模型。上线前的评估我认为是整个项目最容易被忽视的部分。强烈建议用历史工单准备一个 100 条左右的评测集,逐条跑 Agent 输出,对比人工标注的分类是否正确;摘要质量的评估可以用 ROUGE 或者人工打分,但更接地气的做法是让业务方直接看输出像不像人话。
还有一点很关键:设定降级兜底策略。我在系统里给每条 Agent 输出加一个置信度判断,凡是模型在回复里出现“不确定”“建议人工”这类词,或者连续两轮工具调用没有产生有效动作,就直接把工单标记为需要人工审核,而不是硬着头皮给出一个可能错误的答案。这是一个很简单的规则策略,但它能帮你把 Agent 的自动化成功率从 60% 稳稳抬到 90%——因为那 30% 的“不确定场景”被转换成了人工兜底而不是错误输出。
4. 实战中的常见问题与排查技巧实录
4.1 问题速查表
Agent 开发刚上手的时候会遇到很多看着頭大但原因其实很集中的问题。我把团队踩过的坑整理成一张表,排查时按图索骥就行:
| 问题现象 | 根本原因 | 解决方案 |
|---|---|---|
| 模型就是不调用工具,只会嘴炮 | 工具描述不清楚,或参数格式没说明白 | 重写工具 description,给出参数示例,必要时用 JSON Schema 校验 |
| Agent 反复调用同一个工具停不下来 | 缺少终止条件或反馈信息不明确 | 增加 max_steps 限制,在 system prompt 写清“信息足够就立即回答” |
| 工具传参总是错(幻觉参数) | 模型对参数语义理解有偏差 | 给每个参数加枚举约束和 default 值,重要参数在描述里给具体例子 |
| 输出结果不稳定,时好时坏 | 模型温度设置太高或 prompt 指令松散 | 把 temperature 调到 0.2 以下,系统提示词用三段式:角色+任务+输出格式 |
| 上下文一长就“失忆” | 消息列表无限膨胀,超长时模型丢弃早期信息 | 使用滑动窗口,或写个摘要函数把早期对话压缩成一句记忆 |
| 并发请求成本爆表 | 所有请求都用最强模型 | 用分类路由:简单场景走小模型,复杂场景才让大模型上 |
| 工具结果很乱,模型解读错误 | 工具返回的不带结构化元信息 | 工具函数统一返回“状态码+数据”JSON,并且用文本说明结果 |
排查口诀我总结为六个字:先看提示词,再看工具定义,最后才怀疑模型本身。这个顺序对应的问题是:80% 的 Agent 失效都是因为交流不清,而不是模型变笨。
4.2 成本、性能与稳定性优化心得
优化 Agent 的成本,本质上是减少“无意义的模型调用次数”。你自己写完一个 Agent 之后,把日志翻出来看看,通常会发现大量调用其实是浪费的:同一个问题反复问模型、历史上下文重复传入、工具链路上明明可以用缓存的地方硬跑了完整流程。我采取的办法是分三层做优化。
第一层是缓存层。相同或相似的输入直接命中结果,不再调用模型。客服场景里用户问的高频问题重叠度很高,我在 Agent 前面加了一个向量检索缓存,命中率能做到 30% 到 40%,成本直接砍掉三分之一。第二层是路由层。在请求进入 Agent 之前,先用一个极小的分类模型判断意图,如果是“查订单物流”这种常见且固定的操作,直接走规则脚本,压根不进 Agent 流程;只有真正的复杂开放性问题才交给大模型。第三层是上下文压缩层。给 Agent 加一个“记忆压缩”机制,当 messages 超过一定阈值时,调用一次模型把前面的对话总结成大纲,后面继续在摘要上推理。这样既保留了关键信息,又不会让 token 费用失控。
性能稳定性的关键则在于“确定性复核”。大模型有随机性,但业务要的是稳定输出。我的做法是:让模型在输出最终结果前先输出一个“推理摘要”,系统再根据摘要的确定性做规则校验,不满足规则就重试。比如工单分诊,我要求模型必须输出包含工单编号、分类、紧急度三个字段的 JSON,如果 JSON 解析失败或字段缺失,就自动重新生成一次,重试两次还失败就转人工。这套机制虽然简单,但把系统的可用性从“看模型心情”变成了“可以预期的服务”。
还有一个小技巧:在开发环境里,把模型的 temperature 设为 0,并且固定测试集。开发期不用随机性,否则你没法判断代码改动到底是修好了问题,还是刚好碰运气跑通了一次。确定性优先,稳定性优先,上线之后再根据业务需求微调。
5. 产品生态、学习路线与练手项目
5.1 当前主流Agent产品和形态
现在市面上的 Agent 产品和平台可以分成四类,每一类的定位和适用人群差别非常大。第一类是通用 Agent 产品,用户直接输入目标,系统自动调用浏览器、代码工具去完成,比如各种被称为“通用智能体”的产品,适合做信息搜集、表单填写、日程安排这类任务;第二类是垂直场景 Agent,比如代码辅助、数据分析助手、客服 Agent,它们专注于一个行业动作,效果比通用 Agent 深得多;第三类是 Agent 开发平台,像 Dify、Coze,主打低代码可视化编排,业务同学都能拖拽出一个人力资源问答 Agent;第四类是开发框架,LangChain、LlamaIndex、AutoGen、Spring AI 等,适合工程师在自己系统里嵌入 Agent 能力。
很多人问“Agent 有哪些产品”,其实不用急着记品牌名,先看形态再选方向。我的建议是:如果你是产品型选手,把时间砸在场景和体验上,直接选一个开发平台做 MVP;如果你是后端工程师,至少要把一个开源框架用穿,并且手写过一次 ReAct 循环。另外工业场景我也不吐不快,像热词里提到的“Agent 与 PLC 编程”,已经在制造行业出现苗头——老工程师用自然语言描述控制逻辑,Agent 帮助生成 PLC 代码或调试建议。这类工业 Agent 的难点不在模型,而在于数据孤岛和安全合规,短期内还是以辅助人为主,别指望完全替代。
产品选择上别贪多。市面上的 Agent 产品每天都有新的,但底层能力拼的就是模型、工具生态、记忆和流程编排这四件事。你只要把一个平台吃透,其他平台迁移起来很轻松,真正限制你的永远是业务问题的拆解能力。
5.2 技能树与面试考点
如果你是这个方向的新人,我建议你按三个阶段走学习路线。第一阶段是基础概念,两周时间:搞清楚 LLM 原理、向量检索、Embedding、RAG 和 Agent 的边界,能解释清楚当然最好。第二阶段是框架实操,四周时间:选一个框架跟一个完整教程做一个项目,比如知识库问答机器人或者销售线索清洗助手,重点要吃透“工具调用”的实现细节。第三阶段是进阶强化,长期持续:手写一个 Mini Agent 框架,不做任何依赖,用原生代码实现工具注册、模型循环、记忆管理;同时研究多 Agent 协作模式,比如任务分发、结果汇总、互相评审。
在招聘和面试层面,我自己常问的 Agent 方向问题就这么几类:一是概念题,让候选人解释 Agent 和 RAG 的区别,能说出“RAG 是给 Agent 提供记忆/知识的手段,不是和 Agent 并列的东西”的,我直接给好评;二是架构题,给一个业务场景让候选人设计 Agent 结构,考察会不会拆需求、选工具、定兜底;三是异常题,问“模型一直不调用工具怎么办”“回答问题之前怎么控制 Agent 别乱跑”,这比我让背八股文管用得多。补充一句,会 Spring AI 的 Java 工程师在求职市场上特别加分,因为大量企业级平台是基于 Java 技术栈的,他们把模型接入这件事做成了标准组件。
技能树上还有个隐藏项:评估能力。现在很多 Agent 项目挂在“效果看着还行”上,缺乏量化指标。你要是有能力给 Agent 建立评测集、设计召回率/准确率/Tokens 成本这些指标,在团队里的话语权完全不一样。这一块大多数人忽略,恰恰是你的机会。
5.3 练手项目推荐
如果你已经心动,我给你四个练手项目,按难度递增排序。第一个是“PDF 合同问答助手”:上传一份合同,Agent 能回答“违约金怎么算”“服务期多长”,核心涉及文档解析和 RAG,两三天就能出活。第二个是“邮件/工单自动分类回复器”:接一个邮箱或工单系统,让 Agent 自动判断类型、生成回复,这个就是我前面讲的案例,能帮你吃透 ReAct 循环。第三个是“个人知识库智能体”:把散落在飞书文档、本地 Markdown、网页书签里的知识统一收进一个 Agent,用自然语言提问,“总结我去年读过的关于分布式系统的笔记”,涉及数据管线和记忆设计。第四个是“代码评审/测试 Agent”:接入 Git 仓库,Agent 在每次提交时自动 review 代码变更,指出潜在 bug 和风格问题,甚至自动生成测试用例,这个项目难度高但学习收益最大。
做这些练手项目有一个共同原则:一定要准备一份人工标注的真实验证集,而不是边做边随便拿几个例子试。当你把练手项目当成工程来做,能坚持评测、迭代、记录决策,你已经超过了大多数停留在“调 API 玩”的同行。
我个人在实际操作中的体会是,Agent 开发最难的从来不是某个技术点,而是“拆问题的能力”。你面对一个用户需求,能不能一眼看出哪些环节应该让模型决策、哪些环节必须用规则卡死、哪些地方需要人工兜底,这个能力只能靠一个个项目磨出来。我的习惯是每个项目结束都写一页纸的复盘,记录“哪个 Prompt 调整解决了问题”“哪类输入最容易让 Agent 翻车”,攒到现在就是自己的避坑手册。最后再分享一个小技巧:真正上线之前,给 Agent 留一个“人工干预”开关,在界面上放一个“转人工”按钮。这个按钮看着不起眼,但它能让业务方对 Agent 建立信任,信任有了,后续优化才有机会。希望这篇能给你一个平稳的起跳点,咱们在自己搭出来的 Agent 面前见真章。