开发一个生产级 Agent 的最佳实践
做 Agent 开发其实很容易让模型“动起来”接一个搜索接口再接一个数据库屏幕上开始滚动 Thought、Action、Observation看上去就像系统真的会思考了。可一旦把它接进真实业务画风很快就变了。物流接口偶发超时模型连续重试十几次上下文越积越长答案开始前后矛盾某个工具返回格式稍微变了一下整条任务链直接卡死。更麻烦的是排查时你只看到一句“任务执行失败”根本不知道问题发生在模型、工具还是某个子 Agent。这时候才会发现能跑通一次的 Agent只是 Demo能够长期稳定地替人干活才算系统。真正难的部分通常不在 Prompt而在传统软件工程与大模型不确定性的交界处。业务拆解、工具契约、容错、上下文管理、评估、发布和可观测性缺一块线上迟早会补课。一、先别写 Prompt把业务里的“决策”拆出来业务方很少会给你一份适合直接编码的需求。他们更可能说“把客服成本降下来”“让供应链响应更快”“把合同审核自动化”。这些是方向不是系统边界。如果听完需求就开始选模型、搭工作流大概率会做出一个演示效果不错、但没人敢真正使用的东西。正确的起点是把业务目标翻译成决策链路。以智能客服为例表面任务是“回复用户”实际至少包含意图识别、信息查询、规则判断、方案生成和动作执行。查订单和解释规则风险很低改收货地址风险更高退款或赔付则可能直接造成资金损失。它们不应该走同一条自动化路径。我更习惯在设计阶段先回答三个问题这个动作如果做错了损失有多大结果是否可逆系统有多大把握知道自己做对了。据此可以把动作分成三个区域。低风险、高置信度的任务自动执行信息不足或置信度较低的任务先补充信息高风险、不可逆的任务必须暂停保留当前状态转人工审批。人工确认后流程再从断点恢复而不是从头重跑。这里的人并不是 Agent 失败后的“兜底客服”而是系统里正式的一环。一个靠谱的人机协同流程至少要保存任务上下文、工具调用结果、待审批动作、风险原因和恢复位置。否则人工拿到的只是一张“请处理”的工单还得重新调查一遍所谓提效也就不存在了。二、工具调用不是“让模型猜参数”Agent 最终还是要通过 API、数据库和内部服务完成动作。工具定义如果写得含糊模型就只能靠猜。一个常见的坏例子是工具update_order 说明更新订单信息 参数order_id, data对程序员来说这个定义都不够用更别说模型。data里能写哪些字段金额用元还是分地址是否允许为空重复调用会不会重复扣款工具失败后返回什么都没有讲清楚。更稳妥的做法是把工具当成一份严格的接口契约。输入用 Schema 约束枚举值写全必填项和默认值明确示例覆盖正常与异常分支输出则使用稳定的结构化格式不要把“成功”“部分成功”“稍后重试”都塞进一段自然语言。{status:retryable_error,error_code:UPSTREAM_TIMEOUT,message:物流服务在 2 秒内未响应,retry_after_ms:1000}复杂场景里仅有说明书还不够。可以为模型提供少量经过挑选的调用样例特别是容易混淆的边界情况。不过示例的作用是帮助模型理解契约不是代替契约。真正的安全边界仍然要由代码完成参数校验、权限校验、幂等键、速率限制以及执行前后的业务规则检查。有一条经验很朴素凡是不能接受模型做错的事情就不要只靠 Prompt 约束。三、失败不是异常而是正常分支生产环境里的第三方服务一定会超时数据库连接一定会抖动模型也一定会偶尔返回无法解析的内容。区别只在于它什么时候发生。因此工具调用链不该只有“成功”和“报错退出”两种状态。至少要区分可重试错误、不可重试错误、需要人工介入以及可以降级的错误。对网络抖动、限流等短暂故障可以采用带抖动的指数退避delay min(base * 2^attempt random_jitter, max_delay)这里的随机抖动很重要。没有它大量请求会在同一时间失败又在同一时间重试形成新的流量尖峰。重试还必须有上限并配合总超时预算。一个已经耗时 20 秒的任务没有必要再机械地重试五轮。更关键的是并非所有调用都能重试。查询库存可以创建支付、发送优惠券、提交合同则必须先保证幂等。否则用户只点了一次系统可能执行三次。当重试耗尽后系统需要进入可解释的降级路径。例如实时物流查不到时返回最近一次同步状态并提示稍后刷新主模型不可用时切换到能力较弱但稳定的备用模型自动决策无法继续时生成带完整上下文的人工工单。降级不是随便回一句“系统繁忙”而是在能力下降时仍然把核心业务维持在可接受范围内。熔断也不能省。若某个下游在短时间内持续失败继续调用只会拖垮自己和对方。达到阈值后应暂时切断请求进入半开状态做小流量探测确认恢复后再逐步放量。四、Agent 循环必须有刹车ReAct 一类“思考—行动—观察”循环很适合处理开放任务但它也带来了一个传统服务里不常见的问题系统可能非常认真地做无用功。模型会在两个工具之间反复横跳会用不同措辞重复同一个查询也可能因为拿不到理想结果而持续调用付费接口。如果没有限制一次普通请求就能跑出几十轮推理和一张离谱的账单。所以每个任务都应该有硬边界包括最大执行步数、最大工具调用次数、最大 Token 消耗、最大费用和墙钟时间。还可以记录最近若干次动作的指纹当相同或高度相似的调用持续出现时直接判定为循环。复杂任务则应该先拆成有明确完成条件的子任务。每个子任务都需要输入、预期输出、允许使用的工具和失败策略。不要让模型只拿着一句宏大目标在十几轮调用后自己回忆“我最初要干什么”。这类限制看起来不够“智能”却是系统敢于上线的前提。好的 Agent 不是永远不犯错而是犯错时知道停在哪里。五、多 Agent 的重点不是数量而是边界单 Agent 能解决的问题没必要拆成五个角色开会。多 Agent 架构真正有价值的地方是隔离权限、上下文和专业能力。例如调度 Agent 负责理解目标和分配任务库存 Agent 只能读取与锁定库存财务 Agent 可以计算金额但付款动作需要单独授权。这样做的好处不是界面上出现更多头像而是每个角色的责任和权限都更容易审计。多 Agent 系统最容易失控的是上下文。若所有角色都携带完整历史消息Token 成本会迅速增长模型也会被无关信息干扰。更合理的方式是分层保存信息原始事件写入可追溯存储当前任务只保留最近窗口长期信息压缩成结构化摘要子 Agent 仅获取完成当前任务所需的最小上下文。摘要不能只是一段“聊了什么”最好包含已确认事实、未决问题、关键约束、已执行动作和证据引用。重要数据仍应指向原始记录避免摘要在多轮压缩后逐渐失真。换句话说上下文管理不只是省 Token它还是一种权限控制和认知降噪。六、没有评估集就没有“效果变好了”Agent 的输出有随机性开发者手动试几条 Case感觉回答顺了并不能证明版本可以上线。评估应该从业务任务出发。通用指标通常包括端到端任务完成率、工具调用成功率、人工接管率、平均成本和延迟分位数。P50 能反映日常体验P95、P99 更能暴露高并发和长链路下的问题。具体阈值不能照抄别人的数字要根据业务损失、下游能力和用户预期来定。离线评估集也不能只放“标准问题”。真正有价值的 Case 往往来自线上事故、用户的奇怪表达、工具超时、空数据、权限不足以及历史上模型最容易误判的边界条件。每次出现新故障都应该沉淀成回归样本。对于自然语言质量可以使用规则、程序化校验和 LLM-as-a-Judge 组合评估。金额、日期、字段完整性适合代码判断语气、相关性和解释质量可以交给评审模型。但评审模型同样会漂移因此需要固定版本、固定评分标准并定期用人工标注集校准。最终我们关心的不是“模型说得像不像人”而是它有没有把事情办成、有没有越权以及代价是否可控。七、发布新版本时默认它可能有问题模型、Prompt、工具描述和工作流中的任何一个变化都可能改变系统行为。传统单元测试依然重要但它覆盖不了所有语义变化。一次完整的发布流程应该同时包含确定性测试和语义回归。前者检查 Schema、权限、幂等、状态迁移和错误分支后者用固定评估集比较新旧版本在任务成功率、风险违规率、延迟和成本上的变化。通过测试也不等于直接全量。更稳妥的方式是先让新版本承接很小一部分真实流量或先跑影子流量再根据指标逐步扩大。监控到任务失败率、工具异常率、成本或延迟显著恶化时系统应自动停止放量并回滚。这里最怕的是只能回滚代码不能回滚配置。Prompt、模型版本、工具 Schema、路由规则和评估集都应该版本化并且能准确回答某次请求到底使用了哪一套组合。八、最后补上可观测性否则故障只能靠猜一条 Agent 请求可能经过调度、多个模型、几个子 Agent 和一串外部工具。只记录入口和最终结果几乎无法排障。每个请求都需要唯一的 Trace ID并贯穿模型调用、工具调用、队列任务和人工审批。每个 Span 至少记录耗时、状态、重试次数、Token、费用、模型与 Prompt 版本、工具参数摘要和错误码。涉及隐私的数据应脱敏但不能因为担心日志泄漏就干脆什么都不记。真正有用的告警也不是“出现了一次错误”而是能表达趋势某工具五分钟错误率超过基线某版本的任务完成率显著下降单任务平均调用次数突然翻倍或者人工接管率持续上升。当这些数据能串起来排障才从“翻日志碰运气”变成回答具体问题慢在哪一步失败集中在哪个版本哪类输入最容易触发以及降级是否真的生效。结语Agent 工程最后还是工程做出一个会调用工具的 Agent 并不难。难的是让它在接口抖动、模型漂移、流量突增和需求变化中仍然完成该完成的任务做不了时安全停下出了问题能快速定位发新版本时不把所有用户一起拉来冒险。这背后没有某个神奇框架能一键解决。它依赖的是一组不算新、却很容易被忽略的工程能力把模糊目标拆成可执行流程为工具建立严格契约把失败设计成正常分支限制失控循环管理上下文用数据评估效果再通过灰度和追踪把风险收进笼子里。如果一个 Agent 只能在演示时聪明它还不算真正可用。真正的生产级系统往往显得没那么“炫”该重试时重试该降级时降级该找人时找人该停下时绝不硬撑。但也正是这种克制才让智能真正进入业务。

相关新闻

opencode 命令行安装

opencode 命令行安装

一、升级 Node.js(必须先做) OpenCode 要求 Node.js 18,你当前的 v10.24.0 跑不起来 。 安装 nvm(国内镜像,绕过 GitHub) 创建 nvm 目录并手动下载核心文件(绕过 git clone) mkdi…

2026/10/11 22:49:48 阅读更多 →
Photosynthesis:2026 年夏季登陆 iPhone,无需换手机升级相机功能!

Photosynthesis:2026 年夏季登陆 iPhone,无需换手机升级相机功能!

Photosynthesis:创新 iPhone 相机应用 Photosynthesis 是一款创新的 iPhone 相机应用,真正实现缩放与增强效果。每次拍摄时,该应用会同时调用两个镜头,然后将拍摄结果合成为一张高分辨率照片,呈现真实的光学细节&#…

2026/10/11 22:49:55 阅读更多 →
Go 服务接入模型推理:别让 Goroutine 和 CGO 拖垮吞吐

Go 服务接入模型推理:别让 Goroutine 和 CGO 拖垮吞吐

Go 服务接入模型推理:别让 Goroutine 和 CGO 拖垮吞吐本文用可复现的示例场景说明排查和设计方法;阈值、容量与超时设置需要结合实际流量、依赖版本和压测结果确认,不能直接照搬。在 Go 语言中引入 AI 预测建模与实时异常识别时,很…

2026/10/10 21:09:59 阅读更多 →

最新新闻

PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

【免费下载链接】PgQue PgQue – Zero-bloat Postgres queue built on top of on battle-proven Skypes PgQ. One SQL file to install, pg_cron to tick https://pgque.dev 项目地址: https://gitcode.com/gh_mirrors/pg/PgQue 点击查看 免费下载 PgQue 是一个零膨…

2026/10/11 22:49:35 阅读更多 →
农行银企直联全链路实战:从密钥申请到转账对账的Java避坑指南

农行银企直联全链路实战:从密钥申请到转账对账的Java避坑指南

简介:这份资源面向使用 Java 对接农业银行银企直联的开发者,聚焦企业财务系统与银行系统之间的电子数据交换场景,帮助解决转账、余额查询、支付等业务自动化处理中的接口开发与安全控制问题。压缩包共 20 个文件,约 23KB&#xff…

2026/10/11 22:49:35 阅读更多 →
从需求到建库:工厂物资管理数据库系统设计实战

从需求到建库:工厂物资管理数据库系统设计实战

简介:《工厂物资管理数据库系统》是一份面向高校数据库课程设计、毕业设计及物资管理项目初学者的完整设计报告。文档围绕工厂物资采购、入库、领用、库存盘点与报废处理全流程,按设计任务说明、需求分析、概念模型设计、逻辑模型设计、物理模型设计和数…

2026/10/11 22:49:35 阅读更多 →
Java实现人体姿态识别与动作评分:ONNX Runtime与DTW实战指南

Java实现人体姿态识别与动作评分:ONNX Runtime与DTW实战指南

简介:基于Java的人体姿态识别与动作评分系统,以动态捕捉画面中人体关键点为入口,在双侧肩、肘、髋、膝八个关节处同步生成角度数据,并融合姿态评估、实时语音提示和训练后多维分析,可服务于运动康复、体态矫正等专业场…

2026/10/11 22:49:35 阅读更多 →
从多智能体到提示注入:awesome-ai-agent-papers 5大核心分类全解析

从多智能体到提示注入:awesome-ai-agent-papers 5大核心分类全解析

【免费下载链接】awesome-ai-agent-papers A curated collection of AI agent research papers released in 2026, covering agent engineering, memory, evaluation, workflows, and autonomous systems. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-ai-…

2026/10/11 22:49:35 阅读更多 →
Vscode插件推荐——智能切换输入法(Smart IME)与TaoToken配置实践

Vscode插件推荐——智能切换输入法(Smart IME)与TaoToken配置实践

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

2026/10/11 22:48:31 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →