重也能終身學(xué)習(xí):技能自演進(jìn)架構(gòu)實(shí)戰(zhàn)解析)
三個(gè)月前我把一個(gè)內(nèi)部客服型的 AI Agent 部署上線專門處理公司員工的各種IT服務(wù)請求——密碼重置、郵箱退信排查、軟件安裝審批、會議室設(shè)備報(bào)修。頭兩周跑得很順第三周問題出現(xiàn)了公司換了郵件網(wǎng)關(guān)舊網(wǎng)關(guān)的所有排障動作全部失效員工反饋的“郵箱退信”工單開始大量堆積。我當(dāng)時(shí)的第一個(gè)反應(yīng)是“要不微調(diào)一下模型”但認(rèn)真一算這個(gè)需求根本做不過來規(guī)則每周都在變每次微調(diào)要準(zhǔn)備數(shù)據(jù)、訓(xùn)練、評測、灰度上線周期至少三五天而且每次微調(diào)都可能讓模型在其他任務(wù)上表現(xiàn)退化。后來我換了個(gè)思路不再去動模型權(quán)重而是把Agent改造成一個(gè)“權(quán)重不變、外圍可變”的架構(gòu)讓它在運(yùn)行過程中自己積累經(jīng)驗(yàn)、沉淀技能、自我更新。這套架構(gòu)跑了兩個(gè)月模型權(quán)重一次沒動過Agent的工單解決率反而從61%穩(wěn)定爬到了87%。這篇文章就把這套東西完整拆開講講“不改權(quán)重的終身學(xué)習(xí)”到底怎么落地技能自演進(jìn)閉環(huán)怎么設(shè)計(jì)以及我在真實(shí)項(xiàng)目中踩過的坑。這個(gè)內(nèi)容適合誰看如果你正在做 Agent 類產(chǎn)品被“模型不更新導(dǎo)致能力老化”困擾或者你想讓 Agent 具備在運(yùn)行中自我成長的能力又不想陷入“微調(diào)-評估-上線”的無限循環(huán)這篇文章應(yīng)該能給你一個(gè)經(jīng)過驗(yàn)證的參考方案。1. 先想清楚為什么“不動權(quán)重”反而是Agent長期可用的前提很多人一提到“讓Agent終身學(xué)習(xí)”第一反應(yīng)就是微調(diào)或者持續(xù)預(yù)訓(xùn)練。這個(gè)直覺可以理解畢竟模型是Agent的“大腦”大腦不更新能力怎么能成長但實(shí)際做過生產(chǎn)環(huán)境的人會很快發(fā)現(xiàn)微調(diào)路線在Agent場景里有幾個(gè)繞不開的硬傷。1.1 微調(diào)路線的三個(gè)死穴知識新鮮度、任務(wù)漂移、成本回歸第一個(gè)死穴是知識新鮮度。大模型的訓(xùn)練語料有截止日期而你部署Agent之后面對的業(yè)務(wù)規(guī)則是持續(xù)變化的。拿我那個(gè)IT服務(wù)Agent舉例公司的郵箱網(wǎng)關(guān)從A廠商換成B廠商退信錯(cuò)誤碼的含義完全不同排障的第一步從“檢查A網(wǎng)關(guān)隊(duì)列”變成了“調(diào)用B網(wǎng)關(guān)的查詢接口”。這種變化靠微調(diào)根本追不上——等你花幾天準(zhǔn)備好數(shù)據(jù)、訓(xùn)完模型業(yè)務(wù)規(guī)則可能又改了。微調(diào)本質(zhì)上是在給模型“補(bǔ)一張期效很短的考卷”考完就過期。第二個(gè)死穴是任務(wù)漂移。一個(gè)Agent在真實(shí)環(huán)境里會不斷碰到訓(xùn)練時(shí)沒見過的新任務(wù)類型。比如員工突然問“我們部門的軟件授權(quán)還剩幾個(gè)名額”這既不是排障類任務(wù)也不是權(quán)限類任務(wù)它需要Agent去查詢License管理系統(tǒng)。如果Agent只能靠模型權(quán)重里的知識來應(yīng)對面對這種長尾需求就必然露怯。你不可能為了每個(gè)新任務(wù)都微調(diào)一次模型。第三個(gè)死穴是成本回歸。微調(diào)不只是訓(xùn)練成本還有評估成本和回歸風(fēng)險(xiǎn)。每次微調(diào)都要準(zhǔn)備評測集、跑回歸測試、灰度觀察稍有疏忽就可能在某個(gè)邊角任務(wù)上“災(zāi)難性遺忘”。我見過一個(gè)項(xiàng)目微調(diào)之后對話類任務(wù)的準(zhǔn)確率漲了5個(gè)點(diǎn)但代碼生成類任務(wù)直接跌了十幾個(gè)點(diǎn)整個(gè)團(tuán)隊(duì)折騰了兩周才回滾。在生產(chǎn)環(huán)境里這種風(fēng)險(xiǎn)是很多人不愿意承擔(dān)的。1.2 “可塑性”不等于“再訓(xùn)練”向人腦學(xué)分層適應(yīng)拋開具體的工程實(shí)現(xiàn)我覺得這件事首先得想明白一個(gè)認(rèn)知模型。人腦并不是學(xué)一個(gè)新技能時(shí)就重寫一遍全部神經(jīng)連接而是有一套非常精細(xì)的分層適應(yīng)機(jī)制新信息先進(jìn)海馬體變成短期記憶經(jīng)過反復(fù)使用后被固化到皮層具體操作流程會被基底節(jié)“程序化”變成不需要深度思考就能執(zhí)行的自動行為而前額葉負(fù)責(zé)在行為不符合預(yù)期時(shí)踩剎車、調(diào)策略。把這個(gè)結(jié)構(gòu)映射到Agent上就是“核心推理層 可變外圍層”的分層架構(gòu)。核心推理層是模型權(quán)重本身負(fù)責(zé)語言理解、邏輯推理、工具調(diào)用的決策這一層凍結(jié)不動外圍層包括記憶系統(tǒng)、技能庫、工作流定義、策略配置這一層在運(yùn)行中不斷迭代。這樣做的好處很明顯模型的能力邊界保持不變但Agent作為一個(gè)系統(tǒng)它的行為邊界可以不斷擴(kuò)展。一句話總結(jié)我的設(shè)計(jì)哲學(xué)模型負(fù)責(zé)“聰明”系統(tǒng)負(fù)責(zé)“經(jīng)驗(yàn)”。權(quán)重是模型的長期記憶而Agent的短期記憶、程序性知識、任務(wù)策略都應(yīng)該放在系統(tǒng)層讓它們在運(yùn)行時(shí)自由生長。這樣既避開了微調(diào)的三個(gè)死穴又讓Agent真正具備了“越用越順手”的可能。2. 可塑性架構(gòu)的四大積木記憶倉庫、技能手冊、工作流沙盒、策略看門狗我設(shè)計(jì)的可塑性架構(gòu)底層是模型推理核心權(quán)重凍結(jié)上層由四大組件構(gòu)成。下面逐個(gè)拆解它們的功能、實(shí)現(xiàn)方式和我踩過的設(shè)計(jì)坑。2.1 記憶倉庫情景記憶與語義記憶的分工記憶系統(tǒng)是“不改權(quán)重”的第一個(gè)關(guān)鍵組件它解決的是“Agent如何記住過去”。我把它分成兩類對應(yīng)人類的兩種記憶類型。情景記憶Episodic Memory記錄具體的交互過程比如“昨天下午某員工反饋郵箱退信最終是因?yàn)楦郊^20MB被網(wǎng)關(guān)攔截”這類記憶的粒度是事件用于后續(xù)的案例檢索和技能提煉。語義記憶Semantic Memory記錄穩(wěn)定的知識事實(shí)比如“公司郵箱附件上限是20MB”“B網(wǎng)關(guān)的退信碼SMTP-550表示收件人不存在”這類記憶的粒度是陳述用于在推理時(shí)給模型補(bǔ)充背景知識。在實(shí)現(xiàn)上我采用向量庫加結(jié)構(gòu)化字段的組合方式。情景記憶每條記錄包含時(shí)間戳、用戶角色、任務(wù)類型、完整對話軌跡、操作序列、最終結(jié)果語義記憶每條記錄包含知識主體、謂詞、對象、有效期、來源。查詢時(shí)既走向量相似度檢索也可以按部門、任務(wù)類型等結(jié)構(gòu)化字段過濾。一個(gè)必須強(qiáng)調(diào)的細(xì)節(jié)記憶入庫前的“清洗”比檢索算法本身更影響效果——如果一段錯(cuò)誤的操作結(jié)果被當(dāng)成成功案例存進(jìn)去后續(xù)所有檢索到它的會話都會被帶偏這就是所謂的“記憶污染”。2.2 技能手冊把一次性調(diào)用變成可復(fù)用的“肌肉記憶”技能庫是整個(gè)架構(gòu)里最核心的部分。技能解決的核心問題是Agent不能每次遇到同類問題都從零開始思考它需要把經(jīng)過驗(yàn)證的解題流程沉淀下來下次直接調(diào)用。我把技能定義成一個(gè)自包含的JSON結(jié)構(gòu)體核心字段包括技能ID、觸發(fā)條件、執(zhí)行計(jì)劃、所需工具、驗(yàn)證標(biāo)準(zhǔn)、版本狀態(tài)、適用領(lǐng)域。舉個(gè)例子沉淀一條“郵箱退信排障”技能后它的執(zhí)行計(jì)劃會寫成這樣先調(diào)用退信詳情查詢工具獲取退信原文再根據(jù)退信碼走不同的分支——若是SMTP-550則查詢收件人地址是否存在若是SMTP-552則檢查附件大小是否超過20MB若是網(wǎng)關(guān)策略攔截則查詢發(fā)件人IP是否在白名單。模型在推理時(shí)看到這臺“技能手冊”里有匹配項(xiàng)就不用再去思考“該查什么、按什么順序查”直接按技能模板執(zhí)行大大降低出錯(cuò)概率和Token消耗。技能庫需要配套檢索機(jī)制我使用“雙路召回”一路是LLM根據(jù)用戶問題和上下文主動從技能庫中挑選候選技能另一路是向量相似度檢索把用戶問題映射成向量到技能庫中找語義相近的技能。兩路結(jié)果做交集和排序取置信度最高的1到3個(gè)作為候選交給策略看門狗裁決。2.3 工作流沙盒用編排層隔離臨時(shí)試錯(cuò)不是所有問題都適合立刻沉淀成技能。有些是真正的新場景Agent也拿不準(zhǔn)該怎么處理這時(shí)候就需要一個(gè)“臨時(shí)工作區(qū)”讓Agent在里面自由組合工具、嘗試多步操作——這就是工作流沙盒。沙盒里的執(zhí)行邏輯用DAG有向無環(huán)圖描述節(jié)點(diǎn)是工具調(diào)用或LLM推理步驟邊是執(zhí)行順序和條件分支。Agent可以在沙盒里實(shí)驗(yàn)各種工具組合觀察每一步的輸出是否符合預(yù)期。為什么叫“沙盒”因?yàn)檫@里允許犯錯(cuò)失敗的操作不會污染正式技能庫。一旦某次沙盒實(shí)驗(yàn)被后續(xù)驗(yàn)證為有效我們就可以把整條DAG從“臨時(shí)草稿”提升為正式技能模板完成從“試錯(cuò)”到“可復(fù)用”的轉(zhuǎn)化。沙盒的存在讓Agent具備了“探索能力”這是技能自演進(jìn)的土壤。必須強(qiáng)調(diào)沙盒本身要有副駕駛機(jī)制——關(guān)鍵節(jié)點(diǎn)需要人工確認(rèn)或策略審批不能完全撒手讓Agent在無人監(jiān)管下自由操作高風(fēng)險(xiǎn)系統(tǒng)。2.4 策略看門狗不變權(quán)重怎么約束行為邊界既然模型權(quán)重凍結(jié)了怎么保證Agent在不斷變化的技能庫和記憶的“喂養(yǎng)”下不越界這就是策略看門狗的職責(zé)。它是一個(gè)獨(dú)立的規(guī)則引擎不依賴模型和技能庫專門負(fù)責(zé)檢查兩件事行為是否在授權(quán)范圍內(nèi)技能調(diào)用是否經(jīng)過驗(yàn)證。所有技能在真正執(zhí)行前都要過一遍看門狗的規(guī)則校驗(yàn)。我在看門狗里維護(hù)了一張“權(quán)限矩陣”什么角色能訪問哪些工具、哪些操作需要額外審批、哪些敏感操作必須在特定時(shí)間段執(zhí)行。比如員工密碼重置技能是被授權(quán)的但批量重置部門賬號的技能只允許管理員角色發(fā)起并且必須走審批流程。看門狗還維護(hù)“黑名單技能”和“降級技能列表”一旦某個(gè)技能連續(xù)失敗達(dá)到閾值看門狗會強(qiáng)制降級該技能下次Agent就不會再調(diào)用它。這是整個(gè)架構(gòu)里唯一不以學(xué)習(xí)為導(dǎo)向、以安全為優(yōu)先的模塊權(quán)重不變的情況下它是可靠的安全底線。3. 技能自演進(jìn)的完整閉環(huán)從一次偶然成功到永久技能這一節(jié)是整個(gè)架構(gòu)的“靈魂”。技能不能靠人手工編寫——那就又回到傳統(tǒng)規(guī)則系統(tǒng)的老路了技能也不能由Agent自由生成——那會產(chǎn)生大量無效甚至有害的“偽技能”。我用的方案是一個(gè)四段式閉環(huán)捕獲觸發(fā)、拆解泛化、驗(yàn)證灰度、沉淀淘汰。3.1 捕獲觸發(fā)在什么時(shí)機(jī)采集“有效行為”捕獲是閉環(huán)的起點(diǎn)。在系統(tǒng)運(yùn)行過程中并不是每一次對話都值得沉淀成技能我們只采集兩類事件。第一類是“高價(jià)值成功事件”Agent完成了一個(gè)之前從未處理過的新任務(wù)類型并且最終結(jié)果被用戶明確確認(rèn)滿意第二類是“修復(fù)事件”Agent在沙盒里經(jīng)歷了多次失敗后最終找到正確路徑完成了任務(wù)。這兩種事件都意味著Agent學(xué)到了一些原本不在技能庫里的東西。如何識別這類事件我設(shè)計(jì)了一個(gè)主動記錄的鉤子在Agent執(zhí)行軌跡中加入“事件評估點(diǎn)”。當(dāng)流程結(jié)束時(shí)系統(tǒng)會檢查三個(gè)指標(biāo)——任務(wù)是否完成結(jié)果狀態(tài)、是否多步操作超過三個(gè)節(jié)點(diǎn)具備技能價(jià)值、新場景度評分是否超過閾值和已有技能庫的語義相似度低于某個(gè)值。三個(gè)條件都滿足就把整個(gè)軌跡打包送進(jìn)“技能提煉隊(duì)列”。注意用戶的一句“謝謝”不能直接作為成功標(biāo)志太容易被討好型輸出誤導(dǎo)必須結(jié)合任務(wù)狀態(tài)的客觀評估。3.2 拆解與泛化把軌跡壓成帶參數(shù)的技能模板拿到一條高價(jià)值軌跡后接下來要做的是“拆解”。原始軌跡里混著大量會話噪音——用戶抱怨、來回澄清、無效分支——要把里面真正有效的操作序列提煉出來。我是用另一套獨(dú)立的提煉模型也可以用更好的通用模型來完成配合規(guī)則過濾去掉純閑聊節(jié)點(diǎn)只保留工具調(diào)用節(jié)點(diǎn)和關(guān)鍵決策節(jié)點(diǎn)并對長段推理文本做摘要壓縮。泛化是更關(guān)鍵的一步。軌跡里的具體參數(shù)必須被替換成占位符。比如“把張三的賬號在AD里解鎖”應(yīng)該泛化成“把{用戶}的賬號在{目錄服務(wù)}里解鎖”否則技能只能服務(wù)這一個(gè)具體場景。泛化處理我堅(jiān)持半自動模型做初步參數(shù)識別再由人工或規(guī)則引擎審核一遍參數(shù)邊界把哪些字段可以變量化、哪些必須是常量都寫入技能模板的“參數(shù)約束”字段里。這一步做不好技能就會過擬合換個(gè)場景就廢。3.3 驗(yàn)證與灰度新技能必須先過“模擬考”新技能不能直接進(jìn)入正式庫它先進(jìn)入“草稿區(qū)”并打上“待驗(yàn)證”標(biāo)簽。我會在歷史工單里抽一批同類型任務(wù)作為測試集讓Agent執(zhí)行這個(gè)草稿技能計(jì)算技能成功率。如果一個(gè)技能在測試集上的首次成功率能達(dá)到80%以上才被允許進(jìn)入灰度區(qū)?;叶葏^(qū)的技能在執(zhí)行時(shí)仍然會被看門狗標(biāo)記為“低置信度”并且每次執(zhí)行都會要求用戶做額外的結(jié)果確認(rèn)“這是我根據(jù)新學(xué)到的流程自動處理的請確認(rèn)結(jié)果是否正確”。這種做法既積累了更多真實(shí)反饋又避免一個(gè)新技能在無人監(jiān)督的情況下出大事故。當(dāng)一個(gè)灰度技能在真實(shí)環(huán)境里連續(xù)成功20次以上閾值可以逐步降低最后轉(zhuǎn)正進(jìn)入正式技能庫。3.4 沉淀、版本化與淘汰技能庫不是藏寶閣而是一個(gè)需要持續(xù)清理的花園。我會為每個(gè)技能維護(hù)調(diào)用次數(shù)、成功率、平均耗時(shí)和最近成功時(shí)間四項(xiàng)指標(biāo)。如果一個(gè)技能被調(diào)用但成功率持續(xù)低于60%系統(tǒng)會將它自動降級回灰度區(qū)并提醒維護(hù)者如果超過30天沒有被調(diào)用且沒有關(guān)聯(lián)的任務(wù)類型匹配就進(jìn)入待刪除名單由人工確認(rèn)后清理。版本化同樣重要。業(yè)務(wù)規(guī)則變化會導(dǎo)致舊技能失效但我們不能直接把舊技能刪掉因?yàn)榭赡苓€有歷史工單需要回溯。我采用的方案是給技能加“版本鏈”每次修改技能都生成新版本舊版本標(biāo)記為“已歸檔”不再用于新任務(wù)但保留在庫里供審計(jì)和回滾。在一次郵件網(wǎng)關(guān)切換事件中舊版排障技能被歸檔新版排障技能的觸發(fā)條件里加上了“網(wǎng)關(guān)類型B”的約束條件Agent在切換后的第二天就學(xué)會了走新流程——整個(gè)過程模型權(quán)重零改動。4. 落地過程中的五個(gè)隱蔽坑與我的處理方式理論設(shè)定講完說點(diǎn)更實(shí)際的。這套系統(tǒng)我在開發(fā)環(huán)境和生產(chǎn)環(huán)境跑了兩個(gè)月前前后后踩了不少坑挑五個(gè)最隱蔽、最容易被忽略的分享出來。4.1 坑一技能檢索比技能執(zhí)行更容易讓系統(tǒng)變笨你可能會覺得技能庫有了挑個(gè)合適的技能執(zhí)行不就行了實(shí)際上大部分返工都發(fā)生在“檢索”這一步。技能檢索的意圖匹配非常容易出錯(cuò)——員工問“郵件發(fā)不出去”技能庫里可能有五六個(gè)技能都沾點(diǎn)邊如果召回錯(cuò)了哪怕技能本身執(zhí)行得再漂亮結(jié)果也是錯(cuò)上加錯(cuò)。我的解法是“檢索結(jié)果排序”和“執(zhí)行前自檢”兩道保險(xiǎn)。排序階段不僅看語義相似度還看歷史匹配率——這個(gè)技能在過去類似查詢下最終解決率如何執(zhí)行前自檢階段讓模型在調(diào)用技能前用一句話復(fù)述“我選擇了技能X因?yàn)橛脩魡栴}匹配了條件Y”再由策略看門狗校驗(yàn)“條件Y”和當(dāng)前上下文的客觀事實(shí)是否一致。好用的技能如果沒有好用的“檢索器”等于有個(gè)大腦袋但裝在了小身子上。4.2 坑二記憶寫入把關(guān)不嚴(yán)系統(tǒng)開始“復(fù)讀”記憶系統(tǒng)上線初期我設(shè)置了很低的寫入門檻結(jié)果Agent開始出現(xiàn)“復(fù)讀機(jī)”行為用戶問A問題Agent檢索到一段語義相似的舊記憶B就把B的答案套出來。一開始還覺得“模型會舉一反三了”后來發(fā)現(xiàn)不少舊記憶本身就是過期的錯(cuò)誤信息Agent越用越偏。修這個(gè)問題的思路是給記憶加“保質(zhì)期”和“來源信用分”。語義記憶每條都有有效期到期自動降權(quán)情景記憶的信用分取決于最終反饋一旦某條記憶關(guān)聯(lián)的會話出現(xiàn)“用戶明確表示不滿意”的負(fù)面信號這條記憶的信用分就大幅下調(diào)檢索排名也相應(yīng)降低。記憶不是越多越好而是越準(zhǔn)越好。4.3 坑三工作流沙盒逃逸危險(xiǎn)行為進(jìn)入生產(chǎn)沙盒的初衷是隔離風(fēng)險(xiǎn)但如果沙盒里的操作走的是真實(shí)的工具接口風(fēng)險(xiǎn)并沒有被真正隔離。我有一次發(fā)現(xiàn)沙盒里某次實(shí)驗(yàn)已經(jīng)觸發(fā)了真實(shí)的郵件發(fā)送接口給客戶發(fā)了一封測試郵件。雖然內(nèi)容無害但說明沙盒隔離不徹底——“實(shí)驗(yàn)環(huán)境”和“生產(chǎn)環(huán)境”的邊界沒有做好。改法很直接所有工具調(diào)用都要經(jīng)過統(tǒng)一的“網(wǎng)關(guān)接口”網(wǎng)關(guān)根據(jù)當(dāng)前上下文判斷這是實(shí)驗(yàn)?zāi)J竭€是生產(chǎn)模式實(shí)驗(yàn)?zāi)J较聦懖僮黝惞ぞ咭宦煞祷啬M數(shù)據(jù)只有顯式標(biāo)記為生產(chǎn)模式的調(diào)用才走真實(shí)接口。沙盒可以探索但探索必須不帶副作用。4.4 坑四技能模板過擬合換場景就失效我的技能提煉管線早期有一個(gè)通病從一條具體軌跡提煉出的技能寫死了太多隱含約束。比如某個(gè)排障技能的前兩步是“檢查退信隊(duì)列”和“查詢ID目錄”看起來完全正常但技能模板里把這兩個(gè)操作的順序?qū)懰懒撕髞戆l(fā)現(xiàn)某些場景下應(yīng)該先查ID目錄再查退信隊(duì)列順序反了就查不到數(shù)據(jù)。解決方式是“條件化技能模板”在模板的DAG節(jié)點(diǎn)間加入顯式的條件邊標(biāo)注什么條件成立時(shí)走哪條分支而不是把所有順序都做成線性依賴。模板的泛化能力要在驗(yàn)證階段就用多場景測試集來檢驗(yàn)而不僅僅是拿提煉用的原始軌跡來回放一個(gè)“過擬合的答案”。4.5 坑五缺少度量指標(biāo)演進(jìn)成了玄學(xué)如果做完了上面所有機(jī)制卻沒有一套度量指標(biāo)你只能感覺“Agent好像變強(qiáng)了”但說不清強(qiáng)在哪也沒法判斷哪個(gè)環(huán)節(jié)出了問題。我給這套系統(tǒng)定義了一組核心指標(biāo)技能覆蓋率成功處理的任務(wù)類型中有對應(yīng)技能的比例、技能首次成功率不經(jīng)過沙盒試錯(cuò)直接一次成功的比例、記憶召回準(zhǔn)確率檢索出的記憶與當(dāng)前問題的相關(guān)性評分、以及回滾率技能被看門狗強(qiáng)制降級的次數(shù)占比。有了這些指標(biāo)每次架構(gòu)調(diào)整都可以量化驗(yàn)證。比如我調(diào)優(yōu)了技能檢索的排序權(quán)重就可以對比調(diào)整前后“技能首次成功率”的變化。若沒有度量體系“技能自演進(jìn)”就會變成“無監(jiān)督的賭博”你根本不知道系統(tǒng)哪天會突然變蠢。5. 一套可復(fù)用的最小落地配置數(shù)據(jù)結(jié)構(gòu)、偽代碼與評測最后給出一套可復(fù)用的最小配置。下面的數(shù)據(jù)結(jié)構(gòu)定義和偽代碼都是我在這套架構(gòu)里實(shí)際跑過的版本你可以直接參考改造成自己的項(xiàng)目。我盡量給出具體字段和參數(shù)而不是停留在概念層。5.1 四大數(shù)據(jù)表的物理結(jié)構(gòu)技能表、記憶表、沙盒實(shí)驗(yàn)表、權(quán)限規(guī)則表是最核心的四個(gè)存儲結(jié)構(gòu)。下面用簡化結(jié)構(gòu)表示出來。# 技能庫主表Skill Library class SkillRecord: skill_id: str # 唯一標(biāo)識 name: str # 技能名稱 description: str # 技能用途說明用于語義檢索 trigger_conditions: list # 觸發(fā)條件列表如 [退信碼 SMTP-550] execution_plan: str # DAG結(jié)構(gòu)化執(zhí)行計(jì)劃一般存JSON required_tools: list # 需要的工具列表 version: int # 當(dāng)前版本號 status: str # 枚舉draft - sandbox - grayscale - active - deprecated confidence: float # 灰度/正式置信度閾值0.8 success_count: int # 成功次數(shù) fail_count: int # 失敗次數(shù) last_success_time: str created_at: str # 記憶表Memory Store class MemoryRecord: memory_id: str memory_type: str # episodic | semantic content: str # 記憶正文 embedding_vector: list # 向量索引 expiration_date: str # 有效期 source_credit: float # 來源信用分 feedback_signal: str # 正面/負(fù)面反饋 domain: str # 適用領(lǐng)域如 email_troubleshoot # 沙盒實(shí)驗(yàn)表Sandbox Experiment class SandboxExperiment: exp_id: str related_trace: str # 來源軌跡ID dag_definition: str # DAG定義 status: str # running | success | failed verified_flag: bool # 是否通過驗(yàn)證 result_summary: str created_at: str # 權(quán)限規(guī)則表Policy Rule class PolicyRule: rule_id: str role: str # 角色如 employee | admin tool_name: str permitted_actions: list # [read, write] 等 requires_approval: bool # 是否需要審批 sandbox_only: bool # 是否僅限沙盒 blacklist: bool # 是否命中黑名單具體運(yùn)行時(shí)的策略技能從沙盒轉(zhuǎn)正本質(zhì)上就是在trace實(shí)驗(yàn)表里回放一次然后把執(zhí)行計(jì)劃從沙盒DAG拷貝到正式技能表的execution_plan字段里同時(shí)生成一條新的權(quán)限規(guī)則把該技能所需的工具綁定到授權(quán)角色。5.2 核心決策流程的偽代碼下面是Agent在收到用戶問題后經(jīng)過記憶召回、技能召回、看門狗校驗(yàn)、執(zhí)行、反饋回收的主流程偽代碼用Python風(fēng)格表達(dá)方便你對應(yīng)著實(shí)現(xiàn)。def handle_user_request(user_input, user_role, context): # 階段一記憶召回 relevant_memories memory_store.recall( queryuser_input, domaincontext.domain, limit5, min_credit0.6, # 過濾過期expiration_date now ) # 階段二技能召回雙路召回 llm_recall skill_selector.llm_select(user_input, skill_metadata) vec_recall skill_selector.vector_select(user_input, skill_embeddings) candidate_skills intersect_top_k(llm_recall, vec_recall, k3) # 階段三看門狗校驗(yàn) allowed_skills [] for skill in candidate_skills: if policy_gatekeeper.check_skill_permission(skill, user_role): allowed_skills.append(skill) # 階段四執(zhí)行決策 if allowed_skills: skill rank_by_historical_success(allowed_skills) if skill.status active: result executor.run_skill(skill, context) elif skill.status grayscale: # 灰度技能額外確認(rèn) result executor.run_skill(skill, context, require_user_confirmTrue) else: result executor.run_sandbox(skill.execution_plan, context) # 自動進(jìn)入沙盒實(shí)驗(yàn) sandbox_experiment.create(related_tracecontext.trace_id, ...) else: # 無匹配技能走沙盒探索 result explorer.run_freeform_with_sandbox(context) # 階段五反饋回收與觸發(fā)演進(jìn) event_evaluator.evaluate( trace_idcontext.trace_id, task_resultresult, memory_recallrelevant_memories, skill_candidatesallowed_skills, ) return format_response(result)需要特別說明的是LLM在整個(gè)流程中的角色不是被拋棄而是嵌在skill_selector.llm_select和explorer.run_freeform_with_sandbox這兩個(gè)環(huán)節(jié)里——前者做意圖理解后者處理真正的新場景。權(quán)重凍結(jié)不影響這兩個(gè)環(huán)節(jié)發(fā)揮作用因?yàn)長LM負(fù)責(zé)的始終是“理解與推理”而“經(jīng)驗(yàn)與流程”都在外圍數(shù)據(jù)層增長。5.3 評估這套系統(tǒng)的四張儀表盤落地離不開數(shù)據(jù)反饋我把四張關(guān)鍵指標(biāo)表放在這里你可以在項(xiàng)目的監(jiān)控面板里直接照抄。目標(biāo)是每項(xiàng)指標(biāo)都能回答一個(gè)“到底行不行”的問題。指標(biāo)名稱計(jì)算方式我的建議閾值作用技能覆蓋率成功處理的任務(wù)類型中命中技能庫的比例≥70%衡量技能庫積累是否跟上需求變化技能首次成功率調(diào)用技能后不做沙盒試錯(cuò)直接成功的比例≥80%衡量技能檢索和模板質(zhì)量記憶召回準(zhǔn)確率人工抽檢檢索結(jié)果的相關(guān)性評分≥75%衡量記憶清洗與檢索質(zhì)量技能回滾率被看門狗降級退回的技能數(shù) / 技能總數(shù)≤5%衡量技能泛化與質(zhì)量穩(wěn)定性四張表之外我還會記錄一個(gè)“未沉淀事件數(shù)”——Agent成功處理了但沒有提煉成技能的高價(jià)值任務(wù)數(shù)量。如果這個(gè)數(shù)字持續(xù)增長說明捕獲觸發(fā)條件太苛刻需要放寬如果技能庫長期不變但未沉淀事件很多說明技能庫已經(jīng)跟不上業(yè)務(wù)了。這套指標(biāo)不是一次性建好就不管了我每個(gè)月都會重新校準(zhǔn)一次閾值因?yàn)锳gent的技能庫在長大閾值也應(yīng)該跟著動態(tài)變化否則度量就會失真。寫到這里整個(gè)“不改權(quán)重、終身學(xué)習(xí)”的架構(gòu)就基本拆完了。它不是一個(gè)純理論模型而是我過去兩個(gè)多月在生產(chǎn)環(huán)境里一點(diǎn)點(diǎn)調(diào)試出來的組合方案。我個(gè)人體會最深的一點(diǎn)是Agent的能力邊界并不等于模型的參數(shù)邊界把記憶、技能、策略這些外圍系統(tǒng)做好完全可以擺脫“成長就要改權(quán)重”的思維定式。如果你準(zhǔn)備在自己項(xiàng)目里嘗試這套架構(gòu)我建議先從“一個(gè)業(yè)務(wù)域的技能庫閉環(huán)”開始別一上來就鋪全套記憶系統(tǒng)。先種一小塊地把水澆透再考慮擴(kuò)大規(guī)模。最后再分享一個(gè)小技巧給技能庫加一條“觸發(fā)條件解釋字段”——每次技能被選中時(shí)都讓系統(tǒng)記錄一句“為什么選它”。積累一個(gè)月后回看這些解釋你會發(fā)現(xiàn)很多檢索策略的優(yōu)化線索它們比任何日志分析都來得直接。