智能体面试准备(六十九):智能体长期经验库与可复用技能(Skill)沉淀工程

发布时间:2026/9/1 4:48:09
智能体面试准备(六十九):智能体长期经验库与可复用技能(Skill)沉淀工程 智能体面试准备六十九智能体长期经验库与可复用技能(Skill)沉淀工程引言本篇是「工程实战深化」系列的第 69 篇智能体线。上一篇六十七讲了反思与自我修正智能体在单次任务里发现错误、回退、重试。但反思是「当场纠错」经验随任务结束就丢了。真正能越用越聪明的智能体得把每次任务里的成败沉淀成跨任务可复用的长期经验甚至把高频成功流程固化成可调用的技能Skill。本篇把「经验库 技能沉淀」讲透为什么需要、复盘AAR闭环怎么设计、经验怎么表示与去重、Skill 怎么从经验里合成、运行时怎么检索注入。建议和六十七反思、四十一记忆架构、六十一上下文工程一起看串成「短时反思 → 长期记忆 → 经验沉淀 → 技能固化」的完整链路。1. 为什么单靠反思不够从当场纠错到长期积累单次反思 (六十七) 长期经验库 (本篇) ┌──────────────┐ ┌──────────────────────┐ │ 任务内发现错误 │ │ 任务结束抽取经验 │ │ 回退重试 │ ──沉淀──▶ │ 存经验库(向量结构化) │ │ 结果丢弃 │ │ 下次任务检索复用 │ └──────────────┘ │ 高频流程→合成 Skill │ └──────────────────────┘ 问题: 同样坑踩第二次 收益: 同类任务越做越快越准两类记忆要区分呼应四十一会话记忆单次任务内的上下文、中间结果任务结束可清。长期经验跨任务沉淀的「什么场景用什么打法、什么坑别踩」可长期保留、检索复用。经验库解决的是「组织/个人踩过的坑和验证过的打法别再从头踩」。2. 复盘闭环AAR经验从哪来经验不是凭空写而是任务结束后自动跑一轮After-Action Review行动后复盘任务完成/失败 ──▶ AAR 抽取 │ ├─ 目标: 任务要什么 ├─ 结果: 成了/败了指标如何 ├─ 关键决策: 走了哪条路径(用了哪些工具/子Agent) ├─ 为什么: 成功因什么失败因什么 └─ 可复用点: 哪段流程值得固化哪个坑要标注AAR 本身可由一个「评审智能体」基于任务轨迹trace生成结构化经验减少主智能体负担也避免主智能体自评偏差。3. 经验怎么表示结构化 向量双索引一条经验最好同时有「能被检索读懂的结构」和「能被语义匹配的特征」经验记录 Experience ┌──────────────────────────────────────────┐ │ id: exp_2026xxxx │ │ type: success_pattern | failure_lesson │ │ | tool_usage | domain_knowledge│ │ scene: 触发场景(标签自然语言描述) │ │ precondition: 适用前提(何时有效) │ │ conclusion: 结论/打法(怎么做/别怎么做) │ │ evidence: 来源任务id、成功率、频次 │ │ confidence: 置信度(按被验证次数加权) │ │ embedding: 场景描述的向量(语义检索用) │ └──────────────────────────────────────────┘经验类型对照类型含义例子success_pattern验证可行的打法「RAG 先重排再生成幻觉降 30%」failure_lesson踩过的坑「超长 PDF 不分块直接塞会超上下文」tool_usage工具用法诀窍「某 API 分页要用 cursor 不是 offset」domain_knowledge领域事实「该类工单需先查订单状态再退款」4. 经验去重、合并与置信度经验库会膨胀必须治理去重新经验 embedding 与库内比对相似度超阈值视为同一经验合并而非新增。合并即投票同结论被多次验证 → confidence 升高出现反例 → confidence 降甚至标记「已过时」。衰减长期未被引用或场景已变的经验降权避免误导。冲突处理成功模式与失败教训对同一场景冲突时保留带证据、置信度高的一方另一方标注待复核。# 伪代码经验写入与去重defadd_experience(new_exp,store):simsstore.semantic_search(new_exp.embedding,top_k3)forold,scoreinsims:ifscore0.92andold.typenew_exp.type:# 合并: 累加证据、提升置信度old.evidence.append(new_exp.source_task)old.confidencemin(1.0,old.confidence0.1)old.conclusionreconcile(old.conclusion,new_exp.conclusion)returnold.idreturnstore.insert(new_exp)# 真正新增5. 可复用 Skill 合成从经验到能力当某条 success_pattern 被反复验证、且是一段固定多步流程就值得固化成 Skill——一个可被主智能体直接调用的「子能力 / 工具」高频 success_pattern: 处理退款工单 查订单状态 → 校验退款资格 → 调退款API → 发通知 │ 出现 ≥ N 次且成功率 阈值 ▼ 合成 Skill: refund_ticket(order_id) - 入参/出参定义 - 内部步骤脚本或子 Agent prompt - 注册到工具清单, 主智能体可 function calling 直接调Skill 的两种形态脚本型把流程写成确定性代码API 编排最稳最快呼应五十五工程化交付。提示型把流程写成强约束子 Agent prompt处理非结构化输入。合成原则高频 高成功 低风险才固化低频或易变的流程保留为经验文本让主智能体临场决策别过度固化。6. 运行时检索与注入经验怎么被用经验库的价值在「用」。运行时主智能体在规划/执行关键节点检索相关经验注入上下文呼应六十一上下文工程当前任务上下文 ──▶ 检索 query (场景目标) │ ▼ 经验库 top-k (按 embedding 置信度 场景匹配) │ ▼ 注入 system/working memory: 同类任务曾验证: ..., 注意: ... │ ▼ 主智能体决策时参考, 避开已知坑、复用验证打法注入要克制只取 top-k 高置信经验控制 token 占用避免上下文被经验淹没呼应六十一预算。# 伪代码运行时经验检索注入defretrieve_for_task(task_ctx,store,k3):qembed(f{task_ctx.goal}|{task_ctx.scene})hitsstore.search(q,top_kk*3)# 过滤: 场景匹配 置信度门槛 未过时filtered[hforhinhitsifh.confidence0.6andnoth.expiredandscene_match(h.scene,task_ctx)]returnfiltered[:k]# 仅取最相关 k 条注入7. 与反思、记忆的关系面试串讲反思六十七任务内当场纠错无状态残留。记忆四十一跨会话的「事实/状态」存储。经验库本篇跨任务的「打法/教训」带置信度与可检索。Skill经验的高频固化形态从「知道」变成「能调」。链路反思纠正 → 记忆留存事实 → AAR 抽经验 → 高频经验合成 Skill → 下次任务检索注入。四者分层缺一不可。面试速答为什么需要经验库单靠反思是当场纠错、经验随任务丢经验库让成败跨任务沉淀复用越用越聪明。经验怎么表示结构化类型/场景/前提/结论/置信度 向量双索引既能读懂又能语义检索。怎么防经验膨胀写入时语义去重合并、按验证次数加权置信度、长期未用衰减、冲突保留高证据方。Skill 什么时候合成高频 高成功 低风险的固定多步流程固化成可调用工具/子 Agent别固化易变流程。经验怎么被用运行时按场景检索 top-k 高置信经验注入上下文参考避坑与打法克制注入控 token。和反思/记忆区别反思当场纠错无残留记忆存事实状态经验库存跨任务打法Skill 是经验固化。高频追问清单经验库和 RAG 知识库有什么区别经验库存「打法/教训置信度场景」知识库存「事实/文档」索引与更新逻辑不同AAR 用主智能体还是独立评审智能体建议独立评审体避免自评偏差、减轻主链路负担经验置信度怎么初始化和衰减初始中值按被验证成功升、反例-降长期未引用衰减过度固化 Skill 有什么风险流程变时 Skill 过时、僵化应保留低频流程为文本经验临场决策经验注入会不会污染上下文、误导决策会故设置信度/场景门槛、top-k 限制、可溯源标注来源任务多智能体下经验库共享还是各 Agent 私有公共打法共享私有领域知识隔离靠权限与命名空间控制呼应二十一多租户