技能多了提示詞變垃圾場——我們改成按需檢索注入,順帶修了中文渲染和「搜一次就下結論」的毛病
原本的做法:啟動時把技能目錄整體寫進系統提示。每加一個技能,就往提示詞裡塞一段說明。加到幾十個技能時,每次請求都帶著大量當前用不上的內容——佔 token,也稀釋模型注意力。
現在的做法:每輪對話先做一次檢索,只把命中的前幾個技能(名稱 + 描述)注入;沒命中就回退到完整目錄,保證不會因為檢索失敗而丟能力。
用一個具體場景說差別:使用者在飛書裡問「怎麼把審批流接到釘釘」,這輪只需要「釘釘接入」和「審批流設定」兩個技能的說明,不需要把繪圖、語音、檔案處理那幾十個技能的說明全帶上。
這不是新概念,檢索增強在很多場景都用。但把它用在「技能注入」這個位置,效果比想像中直接——提示詞短了,模型的注意力也更集中。
我們給 Agent 加了畫圖能力,可以輸出流程圖、架構圖這類圖形。做的時候踩了一個坑:圖形引擎預設按 1 倍解析度輸出 PNG,英文標籤沒問題,中文標籤糊。
| 輸出倍率 | 三節點圖實測尺寸 | 中文標籤 |
|---|---|---|
| 1 倍(預設) | 124×224 像素 | ❌ 筆畫糊成一團 |
| 3 倍 | 367×667 像素 | ✅ 正常顯示 |
所以現在預設按 3 倍輸出。這個數字沒有理論依據,就是試出來的——中文筆畫密,低解析度下筆畫會糊成一團。別信預設值,用你們自己的圖實測。
另一個取捨:圖形引擎只留一個,把之前試過的另一套路徑砍掉了。兩套並存的時候,維護成本和出錯機率都是雙份。
這是行為層面的改動,不是功能。我們給系統提示裡加了一條紀律:只搜一次就下結論是不允許的,至少換一種說法再搜一次。
原因很實際。搜尋類任務裡,第一次沒搜到,很可能是關鍵詞選錯了,而不是「這個東西不存在」。只搜一次就回答「沒有」,是最常見的錯誤來源。
這條紀律還要求區分兩種情況:「判據錯了」和「資料錯了」。比如使用者問「有沒有支援 XX 的產品」,搜不到時,要先想是不是自己搜的詞不對,而不是直接說「沒有這樣的產品」。這條紀律做成了開關,可以按場景開或關。
穩定性方面的工作佔了大頭,多數不適合展開講,挑兩個能說的:
上面這些,都是我們自己產品裡的能力和穩定性改進。沒有客戶案例,沒有使用數據——產品上線時間還不長,這類數字編不得。
如果你們在做類似的 Agent 產品,有兩個點可能值得參考:技能注入可以做成檢索式的;中文渲染的解析度要實測,別信預設值。