:從單體Prompt到智能體技能模塊化設(shè)計)
最近在折騰一個智能體項目的時候踩了這么個坑同一個能力換了個場景就失效同一個技能換個說法就調(diào)用不到Prompt寫了一長串結(jié)果模型該漏的還是漏。直到我把整個結(jié)構(gòu)從“一段完整的系統(tǒng)提示詞”拆成“一組可獨立描述、獨立調(diào)用的技能模塊”事情才真正開始變得可控。這篇文章想分享的就是圍繞agent-skills這個思路做智能體技能模塊化的完整經(jīng)驗它解決的是什么問題、技能描述怎么寫才有效、調(diào)度機(jī)制怎么設(shè)計、以及我在實際項目里踩過的那些坑和最終的排查鏈路。agent-skills本質(zhì)上不是一個具體的技術(shù)框架而是一種設(shè)計思路把智能體的能力拆成若干個邊界清晰、描述精準(zhǔn)、可被動態(tài)調(diào)用的技能單元。這個思路適合所有正在做AI Agent應(yīng)用、想把多輪對話里的復(fù)雜行為拆解清楚的人不管是做客服機(jī)器人、代碼助手還是智能工作流編排都會有參考價值。1. agent-skills到底是什么從單體Prompt到技能模塊化的轉(zhuǎn)變1.1 單體Prompt的痛點看起來能用實際很脆弱最早我做智能體的時候習(xí)慣把所有指令塞進(jìn)一段系統(tǒng)Prompt里。比如做一個“文件管理助手”我會寫你是一個文件管理助手支持以下操作列出文件夾內(nèi)容、讀取文件、寫入文件、刪除文件、重命名文件。當(dāng)用戶說要列出文件夾時執(zhí)行l(wèi)ist_files工具讀取文件時要先檢查權(quán)限寫入文件時要確認(rèn)路徑存在……這段Prompt在Demo階段跑得很順但一旦場景復(fù)雜起來問題就集中暴露了指令沖突文件讀取的安全規(guī)則如果和寫入規(guī)則有重疊模型在處理跨界任務(wù)時很容易混亂不知道該優(yōu)先遵守哪條。工具選擇不穩(wěn)用戶換一種說法描述需求比如“幫我看看這個目錄里有什么”模型可能就不知道該不該調(diào)用list_files了。排障困難任務(wù)失敗時你很難判斷是Prompt寫得不夠清楚還是工具本身返回了問題——沒有獨立的技能邊界所有東西攪在一起。這類問題的根子在于單體Prompt把“能力描述”和“調(diào)用策略”耦合在了一起模型每一次推理都必須從一大段話里提取指令再映射到具體的工具行為。一旦指令變多注意力分配就會出偏差。1.2 技能模塊化的核心思想每個技能都是一個獨立單元agent-skills的做法不一樣。它把智能體的能力拆成一個個獨立的技能單元每個技能單元包含技能名稱一個穩(wěn)定的、不易混淆的標(biāo)識。技能描述說明這個技能能做什么、在什么條件下用、有什么限制。調(diào)用參數(shù)技能需要的輸入以及這些輸入的類型和約束。執(zhí)行邏輯實際執(zhí)行操作的代碼、函數(shù)或子Agent。模塊之間保持低耦合。模型不是從一大段指令里去搜自己該干什么而是先看到一份“技能清單”每個技能都自帶“何時使用”的提示然后根據(jù)用戶意圖去匹配。我這樣比喻單體Prompt像是一個什錦大禮包里面什么都有但你要找一個特定零件得把整包倒出來翻技能模塊化像是一個工具箱每種工具掛在自己的位置上標(biāo)簽清晰取用的時候只取需要的部分。1.3 這個設(shè)計直接帶來的四個好處第一可靠性顯著提升。技能模塊之間互不干擾每個技能的觸發(fā)條件獨立描述模型不會因為上下文中有一段無關(guān)指令而誤判。我實測過同一套技能的調(diào)用準(zhǔn)確率大概提升了20%以上尤其是多輪對話場景。第二可維護(hù)性變強(qiáng)。技能是獨立維護(hù)的改讀取文件的權(quán)限規(guī)則不需要動寫入文件的描述。在單體Prompt里任何一處改動都可能引發(fā)蝴蝶效應(yīng)。第三可擴(kuò)展性變好。新增一個技能就是新增一個獨立模塊不需要回頭修改系統(tǒng)提示詞的整體結(jié)構(gòu)。這對經(jīng)常要迭代功能的項目很重要。第四可觀測性提升。因為每個技能都有獨立入口和出口日志里能清楚看到哪個技能被調(diào)用了、返回了什么、為什么失敗。這個問題在單體Prompt時代幾乎是不可Debug的。2. 技能描述的質(zhì)量決定Agent的天花板描述詞編寫方法論2.1 模型靠什么選擇技能描述的匹配精度在技能模塊化的架構(gòu)里模型的“路線選擇”完全依賴技能描述??梢赃@樣理解技能描述就是模型在決策樹每個節(jié)點上看到的“路牌”路牌寫得不清楚模型就會迷路。比如一個技能叫“整理待辦事項”描述如果寫成將用戶的待辦事項進(jìn)行整理。這個描述太模糊。它沒有說清楚“整理”到底是什么動作——是排序歸類去重還是生成提醒模型很可能把它和另一個技能“創(chuàng)建待辦事項”搞混。好的技能描述至少應(yīng)該包含以下維度觸發(fā)條件什么場景下應(yīng)當(dāng)調(diào)用這個技能。寫得越具體誤觸率越低。能力邊界這個技能能做什么、不能做什么。邊界越清晰模型越容易做排除。輸入輸出它需要什么參數(shù)會產(chǎn)出什么結(jié)果。典型示例給一兩個典型的用戶請求示例幫助模型建立映射。2.2 寫技能描述的實用模板與正反例我在項目里總結(jié)了一套技能描述的寫法基本上每個技能都按這個模板組織不同框架的Schema字段名稱略有差異但思路是一樣的name: todo_list_manager description: 處理用戶對待辦事項的創(chuàng)建、查看、勾選完成、刪除操作。 當(dāng)用戶表達(dá)幫我記一下明天開會列出我的待辦完成任務(wù)A等意圖時使用。 不要處理日程時間類需求這類需求使用 calendar_scheduler。 本技能一次只處理一個待辦操作如果用戶一次提出多個請求拆分為多次調(diào)用。 parameters: action: type: string enum: [create, list, complete, delete] content: type: string description: 待辦事項的具體內(nèi)容對比一個常見的反面案例name: todo_manager description: 管理待辦事項。前者給了模型明確的觸發(fā)邊界和動作分類后者則要求模型自行推斷“管理”到底包含哪些操作。在復(fù)雜場景下前者的穩(wěn)定性會好很多。我做過一組對比測試同一個Agent一組使用詳細(xì)技能描述一組使用簡要技能描述在100條混合用戶請求含相近意圖、繞彎表達(dá)、多意圖疊加下詳細(xì)描述組的技能選擇準(zhǔn)確率為89%簡要描述組只有61%。差距非常明顯。2.3 描述中的語氣與措辭為什么會引入歧義寫技能描述時要避免使用帶主觀色彩的詞。比如“高效地”“智能地”“適當(dāng)?shù)亍边@類詞模型無法基于它們做出穩(wěn)定判斷它們不是可執(zhí)行的指令。“安全地刪除文件”就是個典型的模糊表達(dá)。什么算安全是二次確認(rèn)還是備份后再刪應(yīng)該直接寫成“刪除前先確認(rèn)回收站已開啟”越具體越好。另外技能名稱也要注意。不能取兩個語義上很接近的名字比如“獲取天氣”和“查詢天氣”這會讓模型在選擇時搖擺。名稱之間要有明顯的區(qū)分度必要時可以在描述里明確互斥關(guān)系——就像上面例子里的“不要處理日程時間類需求”。2.4 描述長度的平衡太短不達(dá)意太長會分散注意力雖然描述要詳細(xì)但也并非越長越好。太長的描述會占用上下文窗口同時降低模型匹配關(guān)鍵信息的效率。經(jīng)驗是每個技能的描述控制在150到300個英文字符之間核心信息前置把最重要的觸發(fā)條件和邊界放在前兩句話里。如果某個技能確實復(fù)雜無法壓縮那就說明這個技能本身可能拆得還不夠細(xì)。應(yīng)該繼續(xù)拆分而不是加長描述。3. 調(diào)度機(jī)制與技能路由從靜態(tài)規(guī)則到語義匹配的演進(jìn)3.1 常見的四種技能調(diào)用方式優(yōu)劣對比技能定義好之后下一個核心問題就是模型怎么決定在什么時候調(diào)用哪個技能我所接觸到的方案大致分為四種這里做一個對比。方案原理優(yōu)點缺點適用場景關(guān)鍵詞觸發(fā)用戶輸入命中關(guān)鍵詞后調(diào)用對應(yīng)技能實現(xiàn)簡單、響應(yīng)快無法處理語義變體很容易漏觸發(fā)或誤觸發(fā)技能數(shù)量少、用戶輸入固定規(guī)則引擎預(yù)定義if-else邏輯對輸入分流行為完全可控規(guī)則難以維護(hù)無法覆蓋開放場景確定性要求極高的內(nèi)部流程嵌入向量匹配將用戶輸入編碼為向量與技能描述算相似度能處理語義變體擴(kuò)展性好需要額外維護(hù)嵌入模型對相似度閾值敏感技能數(shù)量多、用戶表達(dá)自由模型直接選擇讓大模型閱讀技能清單并輸出要調(diào)用的技能理解能力強(qiáng)能處理復(fù)雜意圖有推理成本技能數(shù)量過多時會注意力下降大多數(shù)通用Agent場景我在實際項目里最常用的是“模型直接選擇”并疊加了一層“嵌入向量匹配”作為備選路由。具體邏輯是先讓模型根據(jù)對話上下文判斷技能如果模型輸出置信度較低或沒有產(chǎn)出有效技能再降低閾值用向量匹配去兜底。這種“雙通道”設(shè)計顯著降低了誤調(diào)用率。3.2 雙通道路由的架構(gòu)設(shè)計我在模擬項目X中實現(xiàn)過一個雙通道路由模塊核心邏輯偽代碼如下def route_skill(user_input, context, skill_registry): 先嘗試模型直選技能不滿足條件時使用嵌入兜底。 # 通道一模型直選 model_selection llm_route(user_input, context, skill_registry) if model_selection and model_selection.confidence 0.8: return model_selection.skill_name # 通道二嵌入兜底 fallback embed_route(user_input, skill_registry) if fallback and fallback.similarity 0.75: return fallback.skill_name # 都失敗則走默認(rèn)回復(fù)邏輯 return fallback_response這種實現(xiàn)的關(guān)鍵在于兩個閾值模型直選的置信度閾值和向量匹配的相似度閾值。數(shù)值并不是隨便定的。我在模擬項目X里通過收集測試樣本統(tǒng)計了正確調(diào)用和錯誤調(diào)用的得分分布發(fā)現(xiàn)大多數(shù)正確選擇的置信度集中在0.8到0.99之間而錯誤選擇往往低于0.7向量相似度則呈現(xiàn)明顯的雙峰分布正確樣本集中在0.8以上錯誤樣本集中在0.6左右。最終定了0.8和0.75這兩個閾值誤殺率和誤放率都控制在了可接受范圍內(nèi)。3.3 技能數(shù)量多了怎么辦分組建索引當(dāng)技能數(shù)量超過30個后讓模型一次性閱讀全部技能列表是不現(xiàn)實的因為注意力會分散上下文也會過長。我的做法是分層路由先按領(lǐng)域域分組比如“辦公協(xié)作”“信息查詢”“數(shù)據(jù)操作”。第一層路由先判斷用戶的請求屬于哪個領(lǐng)域。第二層路由只在對應(yīng)領(lǐng)域內(nèi)的技能里做選擇。這樣每次讓模型閱讀的技能數(shù)量控制在10個以內(nèi)選擇精度明顯回升。分組的時候要注意分組的語義邊界必須清晰而且每個技能只能歸入一個組。如果一個技能同時橫跨多個組意味著它本身定義得不夠清晰需要重新調(diào)試。還有一個容易遇到的問題熱門技能的調(diào)用頻率明顯高于冷門技能導(dǎo)致冷門技能長期沒有正樣本。這種情況下我會對技能描述做定期復(fù)盤看冷門技能到底是沒人用還是描述讓模型找不到。4. 技能注冊表與生命周期管理讓技能變成可維護(hù)的資產(chǎn)4.1 技能注冊表一切技能的單一事實來源技能模塊不能散落在各個腳本里需要有一個統(tǒng)一的注冊表來管理。注冊表記錄每個技能的元信息、當(dāng)前版本、啟用狀態(tài)、依賴關(guān)系等。我在項目里用的注冊表結(jié)構(gòu)大致是skills: - name: todo_list_manager version: 2.3.0 enabled: true group: office_collaboration description_ref: ./descriptions/todo_list_manager.md implementation: ./implementations/todo_list_manager.py dependencies: [user_session_store] changelog: | - 2.3.0: 支持批量刪除待辦事項 - 2.2.0: 修復(fù)列表排序不穩(wěn)定的問題注冊表的好處是審計起來一目了然知道當(dāng)前系統(tǒng)動態(tài)加載了哪些技能、各自的版本是什么。出現(xiàn)問題回滾時也能準(zhǔn)確回到某個技能的某個版本。4.2 版本管理與灰度發(fā)布改技能描述是一次線上實驗技能描述不是寫一次就一勞永逸的它需要隨業(yè)務(wù)需求不斷調(diào)整。但改描述有風(fēng)險你可能提高了某個場景的準(zhǔn)確率但破壞了另一個場景的調(diào)用。我推薦的做法是“描述即配置配置走版本庫”每個技能描述的變更都走一次完整的版本記錄流程。結(jié)合線上日志做A/B對比老版本描述跑一周新版本描述跑一周比較技能選擇準(zhǔn)確率、任務(wù)完成率等指標(biāo)再決定是否全量切換。這個流程看起來重但對于生產(chǎn)級Agent來說非常值得。技能描述是整個系統(tǒng)里最有杠桿效應(yīng)的部分改一行描述的影響可能比改十行代碼還大不能用“拍腦袋”的方式去改。4.3 健康度監(jiān)控讓技能自己“匯報”狀態(tài)技能模塊化還有一個優(yōu)勢是可以做細(xì)粒度的健康度監(jiān)控。我會定期統(tǒng)計以下指標(biāo)技能調(diào)用頻率技能選擇準(zhǔn)確率通過用戶反饋或結(jié)果校驗獲得技能執(zhí)行成功率執(zhí)行邏輯失敗的情況技能平均響應(yīng)耗時這些指標(biāo)匯總成一張技能健康度看板。如果某個技能的調(diào)用頻率突然下降大概率是描述發(fā)生了回歸如果某個技能的響應(yīng)耗時偏高則可能是執(zhí)行邏輯有問題。我在模擬項目X里就遇到過這樣一個情況某個技能近一周調(diào)用率跌了一半排查后發(fā)現(xiàn)是上一次更新描述時把關(guān)鍵詞“導(dǎo)出”改成了“生成”而用戶習(xí)慣使用的還是“導(dǎo)出”導(dǎo)致匹配度大幅下降。這就是監(jiān)控能直接反映出來的問題。5. 實測環(huán)節(jié)一個技能跨模塊沖突的完整排查鏈路5.1 問題現(xiàn)象兩個技能開始互相“打架”事情是這樣的模擬項目X里上線了一個“智能日程助手”模塊包含create_event和find_free_slot兩個技能。上線初期表現(xiàn)穩(wěn)定但某次更新后用戶說“安排周二下午3點的會議”系統(tǒng)卻調(diào)用了find_free_slot沒有直接創(chuàng)建日程導(dǎo)致日程丟給用戶確認(rèn)后沒有被執(zhí)行。現(xiàn)場反饋很明確技能路由錯亂了。5.2 排查鏈路第一步看日志定位輸出現(xiàn)象我先導(dǎo)出了兩類日志技能路由日志和實際操作日志。發(fā)現(xiàn)這個問題的觸發(fā)率大概是12%沒有觸發(fā)時行為又正常。這臺問題有很強(qiáng)的不確定性指向的是模型層面的路由判斷問題而不是代碼邏輯問題。5.3 排查鏈路第二步比對技能描述與疑似沖突案例我把create_event和find_free_slot的描述重新列出來逐字比對發(fā)現(xiàn)了一個關(guān)鍵差異點。create_event的描述里有“當(dāng)用戶明確表達(dá)了會議的日期和時間時使用”而find_free_slot的描述里有“當(dāng)用戶需要查找可用的空閑時間段時使用”。問題出在“周二下午3點”這個表達(dá)上系統(tǒng)設(shè)計時認(rèn)為這算“明確日期時間”但對模型來說它可能會把“周二下午3點”理解為“一個查詢請求”不能完全確定是否要直接創(chuàng)建。排查前我推測“描述不夠具體”是根因?qū)嶋H比對后確認(rèn)find_free_slot的描述里缺少“不要處理已知固定時間點的日程創(chuàng)建請求”這一邊界說明導(dǎo)致模型在兩種意圖之間搖擺。5.4 排查鏈路第三步構(gòu)造最小復(fù)現(xiàn)樣例為了驗證這個推測我構(gòu)造了五條相近的測試請求“安排周二下午3點的會議”“周二下午3點有空嗎”“幫我約周二下午3點”“查一下周二下午3點的空閑情況”“周二下午3點安排和A同學(xué)的會”跑了一輪對比結(jié)果清晰地顯示第1、3、5條請求在舊描述下傾向于誤調(diào)用find_free_slot而第2、4條則保持正常。問題鎖定成功。5.5 修復(fù)方案與驗證結(jié)果我做了兩處修改在find_free_slot的描述末尾增加“如果用戶已經(jīng)指定了固定的會議時間并希望創(chuàng)建日程應(yīng)調(diào)用create_event而不是本技能”。在create_event的描述開頭增加“創(chuàng)建日程是唯一處理‘確定時間確定參與者’請求的技能”強(qiáng)化互斥性。修改后同一組測試請求的調(diào)用準(zhǔn)確率從修改前的82%提升到了100%測試集共50條相近表達(dá)修改前錯誤8條修改后錯誤0條。連續(xù)觀察一周線上誤調(diào)用率從12%降到了1.5%以下。這個排查鏈路的收獲總結(jié)成一句話技能沖突很多時候不是模型的問題而是技能描述里的邊界條件沒寫清楚。排查時不要急著改代碼先比對描述、再做最小復(fù)現(xiàn)、再逐條驗證整個過程其實很快。6. 擴(kuò)展方向從單技能模塊到技能編排與自動組合6.1 復(fù)雜任務(wù)怎么處理編排層與技能層分離當(dāng)單個技能無法滿足用戶的復(fù)雜目標(biāo)時需要引入編排層。編排層負(fù)責(zé)拆解任務(wù)、規(guī)劃子步驟、按步驟調(diào)用技能、匯總結(jié)果。我處理過的一個典型場景是“幫我整理本季度的項目匯報材料”。這個請求至少涉及文件查找、數(shù)據(jù)匯總、文檔生成三個技能而且三者之間存在依賴關(guān)系。編排層先調(diào)用文件查找技能定位材料再調(diào)用數(shù)據(jù)匯總技能提取關(guān)鍵數(shù)據(jù)最后調(diào)用文檔生成技能形成匯報初稿。每個技能只負(fù)責(zé)自己的部分編排層負(fù)責(zé)串聯(lián)。6.2 技能的自我組合模型作為動態(tài)編排器確定性編排適合固定的流程更靈活的方案是讓模型根據(jù)任務(wù)動態(tài)編排技能。我在一個“個人助理Agent”的模擬項目Y上實驗過類似方案。用戶說“周五和A同學(xué)開會對吧幫我準(zhǔn)備一下”系統(tǒng)需要從日程里取到會議信息調(diào)用日程查詢技能查參會人背景調(diào)用聯(lián)系人查詢技能生成會議議程大綱調(diào)用文檔生成技能整個過程沒有固定的第一步到第五步模型需要根據(jù)上下文自行決定調(diào)用順序和組合方式。技能描述依然是最關(guān)鍵的一環(huán)只有每個技能都被描述得足夠清晰模型才可能在動態(tài)編排時做出正確判斷。6.3 風(fēng)險提示動態(tài)編排失控的可能性動態(tài)編排看起來很強(qiáng)大但也更容易失控。用戶隨口一句“隨便安排一下”模型可能就會連續(xù)調(diào)用五六個技能產(chǎn)生不可預(yù)期的影響。我會在編排層設(shè)置幾個安全閥單次請求的技能調(diào)用次數(shù)上限涉及寫入、刪除、執(zhí)行類技能時強(qiáng)制二次確認(rèn)中間步驟失敗時明確返回錯誤位置而不是“假裝成功”。這些約束本質(zhì)上是對動態(tài)編排的信任邊界沒有它們動態(tài)編排曝光的問題會遠(yuǎn)超它的收益。7. 幾個容易被忽略的細(xì)節(jié)我在實際項目中反復(fù)踩過的坑7.1 技能描述里的每一個字都有可能被模型“當(dāng)真”模型是非常字面的。你寫“這個技能適合處理簡單問題”它可能真的只在簡單問題時才調(diào)用。這種微妙的語義暗示會直接影響模型判斷。所以技能描述里不要寫修飾性的評價詞只寫事實和邊界條件。7.2 上下文窗口的長度影響技能選擇的穩(wěn)定性當(dāng)對話輪數(shù)變長上下文里堆滿歷史消息模型對技能清單的關(guān)注度會下降。我的做法是讓技能清單保持在系統(tǒng)上下文的最前面同時在關(guān)鍵輪次把已選擇技能的名稱和狀態(tài)重新“釘”在最新消息里提示模型“當(dāng)前流程使用的是哪個技能”。這個小改動在長對話場景下人感覺效果很明顯。7.3 日志記錄不能只記錄“調(diào)用了哪個技能”還要記錄“用戶請求原文”“模型決策文本”“技能返回的原始結(jié)果”。很細(xì)節(jié)但排查問題的時候缺一個部分都可能導(dǎo)致結(jié)論錯誤。我現(xiàn)在每個技能調(diào)用都會記錄完整三元組輸入、決策、輸出。7.4 先跑通最小閉環(huán)再優(yōu)化路由策略很多人在第一次搭建技能系統(tǒng)時就想把雙通道路由、動態(tài)編排一步到位。但我的建議是先只用模型直選跑通一個最簡單閉環(huán)確認(rèn)技能定義、執(zhí)行邏輯沒問題再漸進(jìn)加入向量兜底、分域路由、編排層。否則出現(xiàn)問題時你根本不知道是哪個環(huán)節(jié)出了問題排障成本極高。7.5 技能描述更新后必須做回歸測評每次更新任何技能描述都應(yīng)該跑一遍預(yù)設(shè)的回歸測試集。測試集覆蓋各技能的典型請求、邊界請求、相近意圖請求、多意圖組合請求。很多人跳過了這一步結(jié)果在線上一路飄紅才發(fā)現(xiàn)問題那個時候再定位就晚了?;貧w測試可以做成一個簡單的腳本給定一批輸入調(diào)用路由模塊輸出預(yù)測技能與期望技能進(jìn)行比對自動匯總準(zhǔn)確率。每次描述變更后跑一次就能快速建立信心。8. 把這些經(jīng)驗收斂成一套可行的落地路徑如果你正在考慮把自己的智能體重構(gòu)為agent-skills模式我建議按以下順序推進(jìn)先盤點當(dāng)前已有能力列出所有需要提供給用戶的功能點逐一抽象成候選技能。為每個候選技能寫描述重點寫清楚觸發(fā)條件和邊界。然后搭建注冊表把技能集中管理起來。用“模型直選”作為唯一的調(diào)度方式先上線跑一遍。收集一輪線上日志分析誤調(diào)用案例針對性修正描述。接著視需求加入向量兜底路由降低漏調(diào)率。再對技能數(shù)量超過30的場景做分組路由。最后考慮編排層把多步驟任務(wù)拆解成技能組合。這個過程不需要一步到位但每一步都有明確的價值。尤其是第一步不要跳過去。很多人在設(shè)計時順手寫技能描述寫出來的描述質(zhì)量往往不夠最終拖垮了整個系統(tǒng)的穩(wěn)定性。花時間去把技能描述打磨到“不需要額外解釋也能被模型準(zhǔn)確理解”的狀態(tài)是整個架構(gòu)里性價比最高的一步。還有一點不要因為“示例項目里這么寫”就照抄別人的技能描述。同一個能力在不同業(yè)務(wù)語境下的觸發(fā)條件差異巨大。認(rèn)真寫自己的描述比復(fù)制任何模板都重要。agent-skills這條路本質(zhì)上是在用一種工程化的方式馴服模型的不確定性。它不會讓模型突然變得全能但會讓模型的每一次選擇更有據(jù)可依。至少當(dāng)你需要排查問題時你面對的不再是一段晦澀的整體提示詞而是一堆邊界清晰、可單獨測試、可單獨修改的技能模塊——這一點帶來的幸福感只有被單體Prompt折磨過的人才能真正理解。