【AI Agent 觀念理解 #2】prompt、context、harness:單一 agent 的三層工程

把單一 AI agent 的優化拆成三層:prompt 管一句話怎麼問、context 管模型此刻知道什麼、harness 管整套系統怎麼跑得穩。整理每層各自在解什麼問題,以及為什麼用得越深,重心會一路往外層移動。

前言

剛開始接觸 AI 的時候,最常聽到的詞是 prompt engineering,
好像只要 prompt 下得夠好,什麼問題都能解決。

但真的天天用 agent 一陣子之後,我發現 prompt 只是最內層,
真正決定一個 agent 好不好用的東西,大部分在它外面 XD

這篇把我自己對「單一 agent 的優化」理解整理成三層,
由內到外:prompt、context、harness。

prompt 決定一次回答的品質,context 決定它知道什麼,harness 決定系統可不可靠。


第一層:Prompt engineering(這一句話怎麼問)

最內層,管的是「單次輸入的品質」。

心法其實就那幾條:

  • 角色、任務、限制、輸出格式講清楚
  • 給 1~2 個範例(few-shot),通常比空口白話好很多

這層的效果立竿見影,投資報酬率很高,
但天花板也很明顯:再好的問法,也救不了模型根本不知道的事

問一個它沒看過相關資料的問題,prompt 寫得再漂亮,
它還是只能憑「印象」回答,而憑印象回答就是幻覺的溫床。


第二層:Context engineering(模型此刻知道什麼)

往外一層,管的是「模型看到的世界」。

模型每次回答時,眼裡只有當下被塞進 context 的東西,
所以這層要解的問題是:怎麼讓它「此刻剛好知道該知道的事」。

我自己實際在用的做法有幾個:

  1. 餵對資料:回答要對得回資料來源,不讓模型憑記憶亂掰(RAG 是這個方向的代表作法,我自己建的是檔案型的出處鏈,同一個精神)
  2. 記憶分層與按需載入:常用的規則常駐、細節做成目錄按需要載入,不要什麼都一次塞進去(context 有限,塞爆了反而抓錯重點)
  3. SSOT(單一真相源)同一份知識只住在一個地方,其他地方只放指標。過時的複本就是幻覺溫床,模型讀到舊資料講出來的錯話,跟幻覺一樣難分辨

這層做好之後,agent 的回答品質會有感提升,
因為它不再「猜」,而是「查」。


第三層:Harness engineering(整套系統怎麼跑得穩)

最外層,也是我覺得最容易被略過、但最關鍵的一層。

prompt 跟 context 管的都是「這次回答好不好」,
harness 管的是「整套系統長期跑起來可不可靠」:

  • 工具執行與權限:agent 能動哪些東西、不能動哪些東西,用規則跟環境約束住,不靠它自覺
  • 靜態與動態驗證:產出用程式實際檢查(能執行的就真的跑跑看,執行結果是事實,不會幻覺)
  • SOP 規則與機械閘門:踩過的坑寫成規則自動載入,能程式檢查的就不靠自覺;agent 忘記是常態,閘門不會忘記
  • Human in the loop:不可逆的那一步(發布、刪除、對外送出)留給人把關

這層的核心思想是:
不要優化「它這次有沒有做對」,要優化「它做錯時系統會不會擋住」。


三層放在一起看

管什麼一句話
Prompt單次輸入的品質這一句話怎麼問
Context模型看到的世界它此刻知道什麼
Harness系統的可靠性整套怎麼跑得穩

我自己的使用重心,是一路從內層往外層移動的:
一開始狂研究怎麼下 prompt,後來花更多時間整理知識庫跟記憶分層,
到現在大部分心力都放在 harness:寫規則、建閘門、設計驗證流程。

因為用得越深越發現,單次回答的品質有上限,系統的可靠性沒有
每修一個坑,整套系統就永久性地變穩一點。

這篇講的是單一 agent 的內部分層,
至於「使用者跟 AI 的關係」怎麼分層(從聊天網頁到指揮多個 agent),
在上一篇:【AI Agent 觀念理解 #1】AI 使用的三個層級

一樣是個人使用經驗的整理,不敢說是標準答案,
有不同的分法歡迎跟我分享!

使用 Hugo 建立
主題 StackJimmy 設計