ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Agent工程落地的七大关键决策点:从理论模型到生产系统

Agent工程落地的七大关键决策点:从理论模型到生产系统 1. 为什么“七要素”模型正在失效从教科书定义到真实工程现场的断层“AI Agent 是能感知环境、自主决策并执行动作的智能体”——这句话你可能在十份技术文档、五场分享会和三本入门书里见过。它精准、简洁、政治正确像教科书里对“哺乳动物”的定义恒温、胎生、有毛发。但当你真正坐到工位上面对一个要接入CRM系统、自动处理客户投诉、每天扛住3000并发请求、出错时不能甩锅给“模型没学好”而必须在200毫秒内完成降级响应的真实项目时这个定义连当咖啡杯垫都嫌太薄。我去年带团队落地过两个Agent项目一个是银行私域客服助手另一个是制造业设备预测性维护调度Agent。上线前我们照着经典“感知-思考-行动”三层模型画了十几版架构图结果第一周就发现90%的线上故障和性能瓶颈根本不在LLM推理层而卡在“工具调用超时未熔断”“记忆检索返回空结果却继续生成”“多轮对话中用户突然切换意图导致状态机崩坏”这些地方。更讽刺的是某次压测中我们把LLM换成本地小模型整体成功率反而从78%升到89%——因为小模型响应快、确定性强而大模型在高并发下频繁触发重试逻辑把整个工具链拖进雪崩。这暴露了一个被严重低估的事实当前主流的Agent理论框架尤其是“七要素”目标、感知、记忆、规划、工具、行动、反馈这类高度抽象的分类法本质是事后的归纳总结而非事前的设计蓝图。它像一张世界地图告诉你有七大洲但不会告诉你在刚果盆地穿越雨林时该带几双防滑袜、如何识别毒藤、或者卫星电话在什么海拔会失联。真正的工程实现从来不是把七个盒子填满而是持续回答七个具体、尖锐、带约束条件的决策问题——每个问题背后都站着CPU、内存、网络延迟、业务SLA和产品经理凌晨三点发来的钉钉消息。所以这篇文章不讲“什么是Agent”不复述教科书定义也不堆砌最新论文里的花哨名词。我要带你钻进代码仓库、日志文件和压测报告的缝隙里拆解那七个无法回避的决策点。它们不是并列的模块而是环环相扣的因果链你选错了工具封装方式记忆模块就必然失效你没设计好循环退出条件规划器就会陷入无限递归你忽略了token预算的硬约束再聪明的LLM也得在第17轮对话时优雅地抛出“超出上下文长度”的异常。接下来的内容每一句都来自我们踩过的坑、改过的配置、重写的中间件以及和运维同事在凌晨两点一起盯的Prometheus监控面板。2. 决策点一工具不是插件是需要契约管理的“外部服务”几乎所有Agent教程都会说“让Agent调用工具”。然后给你一个weather_tool(query)函数调用成功演示结束。现实呢你拿到的是一套企业级CRM API文档里写着“单IP每分钟限流60次错误响应码包含429配额超限、401token过期、403权限不足、503后端服务不可用且所有错误响应体结构不一致”。这时候“调用工具”四个字瞬间变成一场关于服务治理的攻坚战。2.1 工具封装的三重陷阱参数校验、错误归一化、熔断降级我们最初犯的典型错误是把工具调用写成一个简单的HTTP请求封装# ❌ 危险示范裸调用无防护 def call_crm_api(contact_id: str) - dict: response requests.post( https://api.crm.example.com/v1/contacts/fetch, json{id: contact_id}, headers{Authorization: fBearer {get_token()}} ) return response.json() # 直接返回原始JSON结构随API版本漂移这个函数在Demo里跑得飞起上线后三天内制造了三类事故参数漂移事故CRM团队升级API将contact_id字段名改为customer_uuidAgent调用全部失败错误日志里只有KeyError: id无人能快速定位错误爆炸事故当CRM返回429时Agent没有重试退避逻辑反而在1秒内发起10次重试触发CRM侧IP封禁导致整个客服通道瘫痪雪崩事故CRM因数据库慢查询导致503响应Agent未设置超时线程池被占满后续所有请求包括支付、登录全部排队等待。解决方案不是换一个更“智能”的LLM而是构建一套工具契约层Tool Contract Layer。我们最终采用的方案是三层封装封装层级核心职责关键实现细节实测效果契约定义层声明工具能力边界使用Pydantic V2定义输入Schema含字段描述、示例、枚举值、输出Schema强制指定status: Literal[success, error]、error_code: Optional[str]、data: Optional[dict]消除90%的参数解析错误新工具接入时间从2天缩短至2小时适配器层转换外部API到契约对CRM的429响应自动提取Retry-After头转换为标准error_codeRATE_LIMIT_EXCEEDED对401触发token刷新流程并重试错误归一化后LLM规划器能稳定识别RATE_LIMIT_EXCEEDED并主动切换备用工具如查缓存治理层运行时保护集成Resilience4j为每个工具配置独立熔断器failureRateThreshold50% slidingWindowSize10、超时CRM设为800ms、重试最多2次指数退避CRM服务不可用时熔断器在3次失败后开启10秒内所有调用直接返回预设兜底数据避免线程池耗尽提示不要试图让LLM“理解”各种HTTP错误码。这是基础设施层该解决的问题。LLM只需要接收结构化的{status: error, error_code: CRM_UNAVAILABLE}它的任务是决策“下一步调用哪个备用工具”而不是做HTTP状态码语义分析。2.2 工具发现与动态加载当Agent需要“自学”新能力业务需求永远比代码迭代快。上周产品经理要求Agent支持“查询期货实时行情”而我们的工具注册表里只有CRM和ERP。如果每次加工具都要重启服务等于宣告Agent是静态的伪智能体。我们采用基于YAML的声明式工具注册机制# tools/futures_quote.yaml name: futures_quote description: 获取国内主要期货合约的最新成交价、涨跌幅和成交量 input_schema: symbol: type: string description: 期货合约代码如 SHFE.rb2505, DCE.m2505 example: SHFE.rb2505 output_schema: status: success data: last_price: float change_percent: float volume: int adapter: type: http url: https://api.futures.example.com/v1/quote method: GET timeout_ms: 1200 retry: 2 circuit_breaker: failure_rate_threshold: 40 sliding_window_size: 20Agent启动时扫描tools/目录自动加载所有YAML文件生成符合契约层规范的工具实例。当新增工具时只需提交YAML文件到Git仓库CI/CD流水线自动触发热更新通过watchdog监听文件变化调用tool_registry.reload()。LLM通过list_tools()函数获取的工具列表永远是最新状态。注意动态加载不等于放弃安全审查。所有YAML文件在CI阶段必须通过SAST扫描检查URL是否为白名单域名、timeout是否小于2秒、是否启用HTTPS未通过的PR禁止合并。安全不是LLM的职责是工程流水线的守门员。3. 决策点二记忆不是数据库是分层分级的“认知缓存”“Agent需要记忆”——这句话没错但错在把记忆当成一个统一的存储桶。我们曾把所有对话历史、用户资料、产品文档都塞进同一个Redis集群结果是一次Redis主从同步延迟导致所有Agent的记忆读取超时客服机器人开始胡言乱语。后来我们意识到记忆必须像人类大脑一样分层短期工作记忆Working Memory用于当前对话推理长期记忆Long-term Memory用于跨会话知识沉淀而程序性记忆Procedural Memory则固化为可执行的规则。3.1 三层记忆架构速度、容量、一致性的三角平衡我们最终落地的三层记忆架构如下记忆层存储介质数据特征更新频率SLA要求典型用途工作记忆内存LRU Cache当前对话的完整上下文 5轮、临时变量如用户刚输入的订单号每轮对话实时更新 5msLLM推理时的prompt拼接保证上下文新鲜度会话记忆Redis ClusterTTL24h单个用户ID下的全量对话摘要非原始记录、用户显式声明的偏好如“我不喜欢语音回复”用户每次交互后异步写入 50ms跨轮对话状态保持如“用户正在投诉情绪值高”知识记忆向量数据库Qdrant 关系数据库PostgreSQL结构化知识产品参数表、FAQ问答对、非结构化知识客服手册PDF切片每日离线ETL更新 200ms向量检索回答“你们的服务器保修期是多久”这类事实性问题关键设计点在于工作记忆与会话记忆的分离。工作记忆只存当前会话的“活数据”一旦对话结束用户说“谢谢再见”或超时立即清空会话记忆则持久化但只存摘要。例如用户说“帮我查订单12345的状态”工作记忆里存{current_order_id: 12345}会话记忆里存{user_id: u789, last_intent: order_status_query, emotion: neutral}。这样既保证了推理速度又避免了敏感信息如完整订单详情长期驻留内存。3.2 记忆检索的“精度-召回率”权衡为什么不能全靠向量搜索向量数据库常被神化为记忆的终极解药。但实测发现单纯依赖向量相似度检索在Agent场景下召回率极低。原因有三语义鸿沟用户问“那个蓝色的杯子多少钱”向量库检索“蓝色杯子”可能匹配到“青花瓷杯”颜色向量近似但实际商品库中“蓝色”是独立属性字段时效性缺失向量库索引更新有延迟新品上架后2小时内向量库仍无法检索到结构化盲区价格、库存、规格等关键决策字段向量无法表达精确比较如“价格100元”。因此我们采用混合检索策略Hybrid Retrieval第一步结构化过滤先用SQL查询过滤出候选集“SELECT id FROM products WHERE colorblue AND categorycup AND price 100”第二步向量重排序将SQL返回的ID列表作为向量库的filter参数对结果按语义相关性重排序第三步LLM精排将重排序后的Top5结果连同用户原始问题喂给LLM让它判断哪个最匹配输出JSON格式{best_match_id: p1001, reason: 用户强调保温p1001是唯一带真空层的蓝色杯子}。这套流程将商品查询的准确率从纯向量搜索的63%提升至92%且平均延迟稳定在180ms以内SQL过滤10ms向量检索150msLLM精排20ms。经验向量搜索不是万能钥匙它是锦上添花的“精排器”不是雪中送炭的“初筛器”。把结构化查询作为第一道闸门是保障Agent记忆可靠性的底线。4. 决策点三规划不是生成文本是受约束的“状态机编译”“Agent需要规划能力”——这几乎成了行业共识。但多数人把规划等同于“让LLM生成一段自然语言描述的步骤”比如“第一步查询用户订单第二步检查物流状态第三步如果已发货提供快递单号”。这种文本规划在Demo里很美但在生产环境里是灾难的源头LLM生成的步骤顺序可能错乱、遗漏异常分支、甚至发明不存在的工具。4.1 从自然语言规划到DSL规划用确定性对抗不确定性我们彻底抛弃了“LLM生成规划文本”的做法转而设计了一套轻量级领域特定语言DSL——PlanScript。它只有5个核心指令全部映射到确定性的函数调用PlanScript指令对应Python函数约束说明FETCH user_profile(user_id)get_user_profile(user_id)参数必须是变量或字面量禁止表达式IF status shipped THEN ... ELSE ... ENDIFif_else(status, lambda: ..., lambda: ...)条件只能是简单等值比较禁止复杂逻辑CALL logistics_track(tracking_id)track_logistics(tracking_id)必须在工具注册表中存在且已启用SET order_status deliveredset_var(order_status, delivered)变量名需提前声明类型固定RETURN 已签收return_result(已签收)规划终点必须存在且唯一一个真实的PlanScript示例// 规划ID: order_status_v2 DECLARE user_id STRING DECLARE tracking_id STRING DECLARE status STRING FETCH user_profile(user_id) IF user_profile.status premium THEN FETCH premium_support_info() ELSE FETCH standard_support_info() ENDIF FETCH order_detail(user_id) SET tracking_id order_detail.tracking_number FETCH logistics_track(tracking_id) SET status logistics_track.status IF status delivered THEN RETURN 您的订单已签收 ELSEIF status in_transit THEN RETURN 您的订单正在派送中预计明天送达。 ELSE RETURN 物流信息暂未更新请稍后再试。 ENDIFLLM的任务不再是生成自由文本而是根据用户问题和当前上下文从预定义的PlanScript模板库中选择最匹配的一个并填充变量。例如用户问“我的订单到哪了”LLM只需输出{plan_id: order_status_v2, variables: {user_id: u789}}后端服务收到后加载order_status_v2模板用u789替换user_id然后编译执行。整个过程不涉及任何字符串拼接或LLM解释执行100%确定性。4.2 规划器的“防御性编译”如何让LLM不敢乱选模板LLM有“幻觉”倾向可能强行匹配一个不相关的模板。为此我们在编译阶段加入三重防御模板签名验证每个PlanScript模板在注册时会自动生成一个SHA256签名包含其所有指令、变量声明和条件分支。LLM返回的plan_id必须对应一个有效签名否则拒绝执行变量类型强校验user_id在模板中声明为STRING若LLM传入{user_id: 123}整数编译器立即报错TypeMismatchError而非静默转换工具可用性快照编译时检查模板中引用的所有工具如logistics_track是否在当前运行时处于ENABLED状态。若CRM工具因维护被临时禁用编译器会返回ToolDisabledError触发降级流程如返回预设话术。这套机制让规划错误率从文本生成时代的35%降至0.2%主要是网络超时等基础设施问题。LLM回归到它最擅长的角色一个高精度的“模板路由器”而非不稳定的“代码生成器”。踩坑实录我们曾允许LLM在IF条件中使用OR逻辑如IF status shipped OR status delivered结果LLM开始生成IF status shipped OR status delivered OR status on_the_way而on_the_way并非合法状态。教训是DSL必须足够“窄”窄到LLM没有发挥“创造力”的空间。5. 决策点四循环不是while True是带退出契约的“有限状态机”“Agent需要循环机制”——这几乎是所有架构图里最醒目的箭头。但没人告诉你这个循环是Agent系统里最危险的代码。一个没有严格退出条件的循环就是一颗定时炸弹。我们曾在线上环境目睹过因CRM接口偶发超时Agent在fetch - think - call_tool - fetch循环中卡死单个请求占用线程长达17分钟最终拖垮整个Java应用的线程池。5.1 循环的四大退出契约时间、次数、置信度、业务终态我们为Agent循环定义了四个硬性退出条件任意一个满足即终止退出条件触发机制配置示例业务意义时间契约全局超时计时器max_duration_ms80008秒防止单请求无限阻塞保障P99延迟次数契约循环计数器max_steps8最多8轮防止LLM陷入思维定势强制进入兜底流程置信度契约LLM输出的self-evaluation分数min_confidence0.85低于此值强制退出当LLM对自身回答不确定时宁可不答业务终态契约状态机终态检测final_states[answered, escalated_to_human, abandoned]业务逻辑驱动如用户明确说“不用了”立即退出关键创新在于置信度契约。我们要求LLM在每次生成响应时必须附带一个confidence_score0.0~1.0{ response: 您的订单预计明天送达。, confidence_score: 0.92, reasoning: 物流信息显示包裹已在派送中且历史数据显示该区域平均配送时间为1.2天。 }这个分数不是LLM随意填写的而是通过一个微调的小模型基于DeBERTa-v3对LLM的reasoning文本进行打分。该模型在内部测试集上与人工评估的相关系数达0.89。当分数低于阈值系统不展示答案而是触发ask_for_clarification()——“您能告诉我订单号吗我需要帮您查得更准些。”这比硬生生给出一个低置信度答案用户体验好得多。5.2 循环状态的可观测性如何在崩溃前看到征兆循环的健康度必须可监控。我们在每个循环步骤埋点上报到OpenTelemetryagent.loop.step_start记录步骤序号、当前状态、工具调用名若适用agent.loop.step_end记录耗时、LLM token消耗、置信度分数、是否触发重试agent.loop.exit记录退出原因TIMEOUT/MAX_STEPS/LOW_CONFIDENCE/BUSINESS_FINAL这些指标汇聚到Grafana看板形成“循环健康度仪表盘”。最关键的预警指标是循环深度分布Loop Depth Distribution循环轮次占比健康信号1-3轮85%健康大部分问题一次解决4-6轮12%警告需关注是否某些意图路径过长7轮3%危险立即触发根因分析Root Cause Analysis当7轮占比突破5%告警自动创建Jira工单指向RCA: High Loop Depth标签。过去三个月该告警共触发7次其中5次定位到CRM接口的慢查询2s2次发现LLM模板中存在冗余的FETCH指令。没有这个指标这些问题会以“偶发超时”的面目隐藏数月。提示不要相信“LLM会自己优化循环”。循环的退出逻辑必须由工程师用代码硬编码LLM只是执行者。把退出权交给LLM等于把汽车的刹车踏板交给乘客——他可能知道该踩但不一定踩得准、踩得及时。6. 决策点五容错不是重试是面向失败的“预案编排”“Agent需要容错能力”——这话说得没错但错在把容错等同于“捕获异常然后重试”。在真实系统中重试是最廉价、最无效的容错手段。当CRM返回503重试10次只会让对方服务更雪崩当LLM因token超限返回截断文本重试只会得到同样的截断结果。6.1 三级容错体系降级、兜底、熔断我们构建了基于失败模式的三级容错体系每级对应不同的失败场景失败类型特征容错策略示例瞬时失败网络抖动、短暂超时1s智能重试指数退避去重相同请求ID不重复发送HTTP 502 Bad Gateway重试间隔100ms → 300ms → 900ms局部失败单个工具不可用但其他工具正常工具降级切换到功能相近的备用工具CRM宕机时用缓存中的用户基本信息公开渠道物流API替代系统失败LLM服务不可用、核心工具全部熔断业务兜底返回预设话术或转人工“非常抱歉系统正在升级您可以留下联系方式稍后专员联系您。”关键设计是失败模式的自动识别。我们不依赖HTTP状态码因为404可能是用户ID错误也可能是服务挂了而是基于多维信号判断def classify_failure(error: Exception, tool_name: str, duration_ms: int) - FailureMode: if isinstance(error, requests.Timeout): return FailureMode.TRANSIENT if duration_ms 1000 else FailureMode.LOCAL elif isinstance(error, requests.ConnectionError): return FailureMode.SYSTEM elif RATE_LIMIT in str(error): return FailureMode.LOCAL elif token in str(error).lower(): return FailureMode.TRANSIENT else: # 结合历史错误率若该工具过去5分钟错误率30%视为LOCAL if get_tool_error_rate(tool_name) 0.3: return FailureMode.LOCAL else: return FailureMode.TRANSIENT6.2 容错的“预案编排”用DSL定义失败后的行动容错动作不能是硬编码的if-else否则每次加新工具都要改核心逻辑。我们再次使用DSL这次是FallbackScript// 预案ID: crm_fallback_v1 ON FAILURE OF crm_api WITH CODE 503: CALL cache_user_profile(user_id) // 降级查本地缓存 IF cache_user_profile.status hit THEN RETURN 根据缓存信息您的账户状态正常。 ELSE RETURN 系统繁忙请稍后再试。 ENDIF ON FAILURE OF crm_api WITH CODE 401: CALL refresh_crm_token() // 降级自动刷新token RETRY ONCE当工具调用失败系统自动匹配FallbackScript中对应的ON FAILURE子句执行其中的DSL指令。这实现了容错逻辑的完全解耦工具开发者只管写工具容错策略由SRE团队用DSL编写和维护。经验最好的容错是让用户感觉不到失败。当CRM不可用时用缓存数据回答“您的账户余额是¥12,345”比说“系统错误”好一万倍。容错的目标不是修复故障而是维持业务连续性。7. 决策点六评估不是看准确率是“端到端业务价值”的归因分析“如何评估Agent效果”——这个问题的答案往往暴露了项目是Demo还是真工程。很多团队还在用“回答准确率”Accuracy作为核心指标人工抽样100个问题看LLM回答对了多少。这就像用“汽车发动机转速”来评估一辆车的运输效率——完全脱离业务场景。7.1 业务价值漏斗从技术指标到商业结果的逐层归因我们定义了四级评估漏斗每一级都必须可量化、可归因漏斗层级指标计算方式归因方法目标值技术层LLM Token效率(总输入token 总输出token) / 对话轮次对比不同Prompt模板≤ 1200 tokens/轮交互层平均解决轮次ARSΣ(单次对话轮次) / 对话总数A/B测试不同规划策略≤ 3.2轮/次业务层一次解决率FCR一次对话内解决的问题数 / 总问题数人工标注规则引擎≥ 75%商业层人工客服分流率(原需人工处理的对话数 - 当前Agent处理数) / 原需人工处理的对话数对比上线前后客服系统工单量≥ 40%最关键的指标是商业层的“人工客服分流率”。它直接挂钩成本节约假设一个客服坐席月薪1.5万处理一个投诉平均耗时12分钟那么分流40%意味着每月节省人力成本约18万元。这个数字比任何“LLM准确率92%”都更有说服力。7.2 归因分析实战为什么FCR从68%提升到79%FCR的提升不是靠换一个更大的LLM而是通过归因分析找到瓶颈。我们对1000个未解决对话做根因标注发现TOP3原因是根因占比解决方案效果工具调用失败未降级38%在CRM工具的FallbackScript中增加缓存降级分支FCR 6.2%多轮意图漂移29%在规划器中增加“意图稳定性检测”若连续2轮LLM识别的意图不同强制确认用户真实意图FCR 4.8%记忆检索不相关22%将向量检索的top-k从5提升到10并引入LLM重排序FCR 3.1%这个分析过程花了两周但带来的收益是确定的。相比之下盲目升级LLM到GPT-4级别的成本是上述所有优化的15倍而FCR提升可能不到1%。提示拒绝“黑盒评估”。每一个指标下降都必须能定位到具体的代码模块、配置参数或数据缺陷。如果归因不了说明你的监控体系有漏洞而不是Agent不够好。8. 决策点七部署不是docker run是“渐进式流量接管”的灰度发布“Agent上线了”——这句话在工程团队里应该引发的是庆祝而不是战战兢兢。但我们见过太多团队把Agent当作一个全新服务一次性切走100%流量结果首日故障率飙升紧急回滚项目信誉扫地。8.1 流量接管的四个阶段从影子模式到全量我们采用严格的四阶段灰度发布流程每个阶段都有明确的准入和准出标准阶段流量比例核心目标准入标准准出标准影子模式Shadow0%不返回结果验证Agent行为是否符合预期日志无CRITICAL错误所有工具调用成功率≥99.5%连续24小时无FATAL错误且loop_depth_7plus_rate 0.5%只读模式Read-only5%验证Agent的“思考”是否合理人工抽检100条LLM推理链路正确率≥90%连续12小时fcrrate只读模式下的模拟FCR≥ 70%读写模式Read-write30% → 70%阶梯式验证端到端业务效果fcrrate≥ 75%avg_response_time 2.5s连续48小时fcrrate稳定在75%±1%且无P0故障全量模式Full100%正式承载业务所有指标达标且业务方签署《上线确认书》持续7天人工客服分流率≥ 40%且NPS用户满意度≥ 35关键创新是影子模式的数据闭环。在影子模式下Agent会并行处理所有流量但不返回结果。它的输出会被送到一个“影子评估器”与当前线上服务如人工客服的最终回复做对比如果Agent回复与人工回复语义一致用Sentence-BERT计算相似度0.85标记为MATCH如果Agent回复包含人工未提及的关键信息如主动告知优惠券标记为ENHANCEMENT如果Agent回复错误或遗漏如把“退款”说成“换货”标记为MISMATCH。这个闭环让我们在零风险的情况下积累了2000条高质量的MISMATCH样本直接用于后续的Prompt优化和微调数据准备。8.2 发布即监控用SLO定义“健康”的Agent发布不是终点而是监控的起点。我们为Agent定义了三个核心SLOService Level Objective全部对接PrometheusSLO目标监控方式报警策略SLO-1可用性99.95%sum(rate(http_request_total{jobagent-api,status~2..}[5m])) / sum(rate(http_request_total{jobagent-api}[5m]))连续5分钟99.9%触发P2告警SLO-2延迟P95 2.5shistogram_quantile(0.95, rate(http_request_duration_seconds_bucket{jobagent-api}[5m]))连续10分钟2.5s触发P1告警影响用户体验SLO-3质量FCR ≥ 75%自定义指标agent_fcr_ratio由业务日志实时计算连续1小时75%触发P2告警需根因分析经验发布计划里必须包含“回滚检查清单”。例如回滚到上一版本前必须确认1旧版Agent的Redis缓存key格式兼容2旧版工具注册表中不包含新版工具3旧版FallbackScript已同步。没有这份清单回滚可能比故障本身更可怕。9. 工程师的Agent实践手记那些文档里不会写的真相写到这里这篇长文已经远超常规技术博客的体量。但作为在Agent工程一线摸爬滚打三年的从业者有些话必须说它们不是方法论而是血泪教训凝结的直觉第一警惕“LLM中心主义”。很多团队把90%精力花在调Prompt、换模型、搞RAG却让工具调用裸奔、记忆层用单点Redis、循环退出靠time.sleep(1)。结果是LLM越强大系统越脆弱。真正的工程重心应该在LLM之外的“周边设施”——工具治理、记忆分层、循环契约、容错预案。LLM只是引擎而底盘、转向、刹车才是决定你能开多快、多稳的关键。第二接受“不完美”的Agent。我们曾执着于让Agent回答100%的问题直到某次用户访谈中一位老人指着屏幕说“它老问我‘您还有其他问题吗’我都说‘没有了’它还问。
返回列表