境踩坑實錄:Harness如何讓大模型不再“發(fā)瘋”)
文章目錄1. 先搞清楚Harness 是個啥1.1 什么時候根本不用上1.2 那 Harness 到底管啥2. 我們?yōu)樯缎枰@東西2.1 數 T 的日志不能全喂給模型2.2 模型沒有眼睛MCP 就是它的眼鏡2.3 團隊的記憶不能靠腦補3. 具體怎么干3.1 外部工具skill 和 MCP3.2 管理上下文3.2.1 數據預計算3.2.2 成本控制3.3 規(guī)劃與決策3.3.1 指令系統(tǒng)3.3.2 任務調度3.4 知識管理3.4.1 記憶管理3.4.2 版本控制3.5 前后指標對比眼見為實4. 還沒解決的老大難5. 下一步想干嘛P.S. 無意間發(fā)現(xiàn)了一個巨牛的人工智能教程非常通俗易懂對AI感興趣的朋友強烈推薦去看看 傳送門https://blog.csdn.net/qq_34419312先聲明一下這篇不是教科書是我被大模型折騰了三個月之后的血淚匯報。全程大白話能聽懂模型會一本正經地胡說八道這句話的人都能看下去。1. 先搞清楚Harness 是個啥OpenAI 今年 2 月把Harness 工程這個詞炒火了。Harness 直譯過來是馬具——韁繩、馬鞍、護具全算。馬具是干嘛的你見過不戴籠頭的馬嗎它想往哪跑往哪跑最后跑進玉米地你還得扛著胡蘿卜去追。大模型同理。你說你要聰明它能聰明地把同一個需求理解出十八個版本你說你自由發(fā)揮它能在你的生產庫里自由發(fā)揮出事故。套上馬具它才知道今天該往哪跑、跑到什么程度算完。但先說句公道話不是所有場景都配得上 Harness這玩意兒也有試用門檻。1.1 什么時候根本不用上**第一種你就臨時問幾個問題、檢索點資料、單輪對話用完就走。**普通模型加 System Prompt 加 RAG 完全夠用這時候選個聰明的模型比啥都強。非要上 Harness屬于下樓倒垃圾還要開個作戰(zhàn)會議。**第二種預算充足閉眼上最貴最強的模型。**那 Harness 可能反而拖后腿——這就好比給博爾特套一身鉛塊人家本來能跑你非讓人家先適應裝備。**第三種公司從架構上就是 AI 原生的核心價值全建立在模型的推理和決策上。**那你們已經是騎在馬背上的騎手了還研究什么馬具研究方向應該是怎么讓馬長翅膀。1.2 那 Harness 到底管啥一句話總結Agent 模型 Harness模型負責聰明Harness 負責穩(wěn)。就像創(chuàng)業(yè)公司的黃金搭檔一個負責天馬行空畫餅一個負責按住他別把公司作沒了。模型就是那個畫餅的Harness 就是那個按人的。順便說個真實感受跑一個 Demo 太容易了難的是讓模型連續(xù)三周穩(wěn)定輸出。我們前段時間參加公司內部的 Agent 大賽將近三個星期前三天就把 Demo 跑起來了剩下的時間全在收拾模型的各種幺蛾子——輸出跑偏、任務超時、幻覺上頭、權限亂飛。跑 Demo 是開屏孔雀生產環(huán)境是拉磨的驢而我們的日常是既當飼養(yǎng)員又當獸醫(yī)。2. 我們?yōu)樯缎枰@東西起因很簡單我們希望大模型幫安全團隊干三件臟活累活結果每件都踩坑。2.1 數 T 的日志不能全喂給模型第一件事是檢測惡意攻擊。網關日志光一天就是好幾個 T洗完數據也還有接近 T 級。把這玩意兒直接扔給大模型那不叫分析那叫給模型做壓力測試順便測試財務部的忍耐底線——錢和時間先不說上下文直接原地爆炸。2.2 模型沒有眼睛MCP 就是它的眼鏡第二件事是評估風險請求。沒有 MCP 工具的時候大模型就是個睜眼瞎你說啥它都好的呢我理解您的意思好不容易給它配了工具它又開始有小脾氣這個接口我沒用過那個工具我不太熟下一步該干嘛你還得逐句哄著來。2.3 團隊的記憶不能靠腦補第三件事是管理團隊記憶。哪些信息值得寫進長期記憶Agent 平臺要擴展記憶怎么遷移這些問題不解決模型每次都是閃婚式合作今天教會它這類請求必須人工復核明天它就忘了比金魚還金魚——金魚好歹有七秒它是按輪次清零的。3. 具體怎么干踩完坑方法論就出來了??偟脑瓌t是四件事約束動作空間、管好上下文、把調度交給確定性系統(tǒng)、把狀態(tài)和記憶存下來。下面按我們踩坑的順序展開。3.1 外部工具skill 和 MCP出于數據安全考慮Agent 一般蹲在沙箱里想讓它分析真實數據第一步是讓它看得見、夠得著。數據量小的時候你可以手動復制粘貼、傳附件粗糙但能用但這是重復性任務必須沉淀成穩(wěn)定可靠的 skill 和 MCP 工具。工具固化下來還有個隱藏福利能提升大模型的緩存命中率也就是省錢。這年頭能讓財務少皺一次眉就是技術人的最高勛章。但注意技能不是越多越好。社區(qū)有開發(fā)者反饋給 Agent 裝了上萬個 skill效果反而變得很差。你想想給一個人發(fā)一萬把工具他忙活一天大概率只用其中一把來開瓶蓋。我們自己的做法是以解決問題為導向idp-mcp 查 Hive 數據、ES 查詢技能分析實時流量、威脅情報技能查 IP把能力做成原子化的模塊隨取隨用還能直接復制到別的 Agent 里。3.2 管理上下文前面說了把 T 級數據直接懟給模型任務要么跑不起來要么跑起來比蝸牛還慢。而且長期看平臺限制執(zhí)行時間和思考輪次是必然的——上下文管理不是可選項是保命項。3.2.1 數據預計算核心思路一句話低信息密度的數據別直接給模型讓它干高價值的推理和歸因。我們的數倉分三層ods 是原始日志T 級dwd 做清洗和特征提取還是 T 級dws 是統(tǒng)計加工好的維度指標和事實指標百 M 級。前兩層必須在 Agent 之外先做清洗降維別拿去煩模型。到了 dws 層再按小時分區(qū)規(guī)模就小到模型可以愉快玩耍了。至于 dwd 的明細數據也不是沒用——dws 粒度不夠細的時候還得回去結合 dwd 查。簡而言之把白菜洗好切好端上桌別讓大廚自己去地里刨。3.2.2 成本控制有了工具、數據也降維了你當然希望模型干得越多越好、干得越久越好。但現(xiàn)實是token 不是無限的模型的注意力也是稀缺品——比我的發(fā)際線還珍貴得省著用。我們的做法分兩類**被動限制外部兜底**工具層面限制 MCP 返回的行數和會話時長模型層面限制思考輪次和思考時長成本層面搞 token plan。**主動介入內部取舍**在技能文檔和提示詞里規(guī)定時間范圍、查詢范圍、查詢深度分析任務按優(yōu)先級分層高優(yōu)先級全量分析中優(yōu)先級只看 TopN低優(yōu)先級抽樣檢查。舉個例子我們的分析任務覆蓋 1k API我總不能指望模型把所有接口流量都過一遍。所以先用廉價資源把 dwd 層的流量預算出風險等級高風險用 ES 全量查中低風險做分層抽樣。讓模型有指向性地干活別像個剛拿到超市購物車的孩子看見什么都想往里裝。3.3 規(guī)劃與決策3.3.1 指令系統(tǒng)最簡單的做法就是在系統(tǒng)層面把規(guī)矩寫清楚比如CLAUDE.md和./prompts。這類提示詞一次定義好就別天天改你天天調它反而輸出不穩(wěn)定——好比領導天天改 KPI員工只會越來越迷茫。duties.md管該干嘛duties.md - 工作模式接收問題后先思考是否需要調用工具 → 制定分析計劃 → 執(zhí)行工具調用 → 基于結果給出結構化回答 - 內容呈現(xiàn)要求結構化的、約定好的格式 - 工作原則使用什么工具、方案對比、信息來源 - 其他禁止事項rules.md管不該干嘛## 運行時產物隔離 12. 中間文件、下載產物、截圖、圖片、SQL、Excel、臨時報表、JSON 卡片、HTML 原型和調試日志 必須默認寫入 /tmp/runtime/不得寫到 Git 工作區(qū)根目錄 13. 只有明確需要版本化的團隊知識才寫入 team-knowledge/ 14. 不自作聰明在沒有被 的情況下保持沉默尤其最后這條沒被 就閉嘴強烈建議所有群聊的人類成員也抄一份。模型不寫這條能把工作目錄整成災難現(xiàn)場截圖、SQL、臨時報表滿地開花比大學男生宿舍查寢前的桌面還壯觀。它還會在你開會的時候突然好心地冒出來發(fā)表意見——你不攔著它能幫你把會開了。3.3.2 任務調度重要原則**Agent 不負責判斷什么時候該干活這個交給外部確定性系統(tǒng)。**分析、推理、歸因給模型但何時開工得有人拍板。常規(guī)做法是 cron 定時任務到點觸發(fā)。但實際跑起來你會發(fā)現(xiàn)上游任務的完成時間根本不確定定時觸發(fā)經常造成重復執(zhí)行、漏執(zhí)行、超時成功率低得感人。而且你讓模型自己決定什么時候干活它可能凌晨三點突然興奮“我覺得現(xiàn)在適合跑一次全量分析”——比我家貓半夜跑酷還準點。我們后來改成了事件觸發(fā)上游任務完成通過事件消息把模型叫起來干活。模型不用再猜上游什么時候就緒也不用自己管理調度狀態(tài)省了一大堆工具調用。效果后面有數據先賣個關子。3.4 知識管理重建一個 Agent 很容易難的是讓模型的行為保持一致。光復制模型、工具、提示詞、知識庫是不夠的——就像你換了個新同事簡歷一模一樣干起活來完全是兩個人。3.4.1 記憶管理跟大模型打交道多了你會發(fā)現(xiàn)人更多是在當 reviewer這個請求要人工復核、那個規(guī)則要寫進長期記憶、這類信息下次優(yōu)先展示。這些帶著個人色彩的業(yè)務判斷和處理偏好全是私域信息。不沉淀下來人和模型的磨合期會無限拉長——每次合作都像第一次相親自我介紹重來一遍還未必有下文。所以建議從第一天就重視記憶管理把它當長期資產來存。我們現(xiàn)在的做法是團隊里明確寫入長期記憶這個動作讓模型把經驗沉淀下來防止復發(fā)。3.4.2 版本控制用 git 管 Agent 的基礎文件系統(tǒng)提示詞、記憶文件、啟動腳本全管起來。好處是迭代可回溯、團隊可共享、沙箱重建不丟。以后模型出了幺蛾子還能git log看看是哪次提交把它帶溝里的——比看監(jiān)控回放找責任人有儀式感多了。3.5 前后指標對比眼見為實口說無憑貼一組我們同模型、同時段任務的前后對比。模型是 qwen3.7-plus主要調整了調度方式、加了重試熔斷、改了查詢方式、把重復邏輯固化成腳本指標調整前調整后變化Agent Loop 輪數52 輪21 輪↓ 59.6%執(zhí)行耗時2630.5s約 43.8 分鐘479.4s約 8 分鐘↓ 81.8%基礎輸入 Token22321278↓ 42.7%生成輸出 Token2424615421↓ 36.4%Token 總消耗2,920,4044,176,966↑ 43%增量主要是緩存工具調用次數也大幅縮水Bash 從 25 次降到 11 次Hive SQL 從 13 次降到 2 次Read 從 8 次直接清零。之前 Hive SQL 一次 2~14 分鐘13 次獨立查詢掃表占了總時長的七成以上——現(xiàn)在改成一次導出數據快照后續(xù)全部本地聚合重復的 Hive 讀寫和錯誤重試全沒了。說到重試必須單獨表揚一下熔斷規(guī)則每個操作最多重試 2 次不要反復嘗試不同參數格式。之前模型失敗了自己重試失敗了再重試比客服電話轉接還執(zhí)著你掛都掛不掉Token 就這么被它燒光了。現(xiàn)在規(guī)則寫死效果立竿見影??赡苡型瑢W要問Token 總量不是漲了嗎別急增量幾乎全來自緩存讀取和緩存創(chuàng)建而緩存命中的價格只有普通輸入的十分之一。用少量成本換執(zhí)行效率翻倍這筆賬怎么算都劃算——就像你多花了五塊錢升級加速包但省下了一下午的等待時間。4. 還沒解決的老大難坦白講Harness 不是萬能藥我們還有幾道題沒解完**幻覺這東西壓不滅。**系統(tǒng)提示詞、記憶層面都做了強化幻覺還是偶發(fā)。而且不同模型對指令的遵循程度不一樣一旦切換模型輸出就可能不一致——換模型跟換對象似的前任養(yǎng)成的習慣現(xiàn)任全不認。**任務要穩(wěn)定跑完還得繼續(xù)較勁。**Agent SDK 底座一直在迭代模型能力參差不齊上下文長度、提示詞長度都不一樣。保證持續(xù)輸出的穩(wěn)定性和行為一致性是場持久戰(zhàn)。**團隊 Agent 還是個人數字分身**我們傾向團隊優(yōu)先成員隨時能用、能共同管理經驗復用、口徑統(tǒng)一、共享記憶飛書生態(tài)還方便接入。個人分身當然也有價值但一個人養(yǎng)一個 AI 管家和一群人養(yǎng)一個 AI 同事投入產出比完全不是一回事。**一定需要 SOTA 模型嗎**真不一定。不是所有任務都需要最前沿的模型我們這套框架用的就是國產大模型工程上優(yōu)化好之后實際用下來完全能滿足需求。SOTA 是錦上添花Harness 才是雪中送炭。5. 下一步想干嘛現(xiàn)在模型是能穩(wěn)定跑了但新的問題冒出來了Agent 如果只顧埋頭輸出、收不到人類的反饋它會不斷自我強化最后鉆進死胡同出不來——像極了把導航開到斷頭路還堅信前方可達的司機。所以下一步的聚焦點是怎么高效收集人類真實的反饋和糾正讓 Agent 自己總結經驗、避免再次踩坑。說白了就是給它裝一個人類吐槽接收器把我們的嫌棄變成它的成長。最后說句掏心窩子的模型是馬Harness 是馬具但馬具不會自己調整松緊這件事終歸得人來干。所以各位別擔心被取代——你還能當個馬倌而且是個越來越省心的馬倌。P.S. 無意間發(fā)現(xiàn)了一個巨牛的人工智能教程非常通俗易懂對AI感興趣的朋友強烈推薦去看看傳送門https://blog.csdn.net/qq_34419312