工程 · 2 min read
設計 Agent,先切 FR 與 NFR
Agent 是另一個你要設計的系統。能寫成 script 的就寫成 script,只把真正的判斷留給 LLM,再讓重複出現的判斷慢慢畢業成 script。
Agent 是另一個你要設計的系統。能寫成 script 的就寫成 script,只把真正的判斷留給 LLM。
故事
我做了一個個人助理 agent,叫 North。它每天讀我的日記、目標和待辦,用 Telegram 提醒我。早上它給我一份能量預報,下午它檢查我有沒有卡住,晚上它提醒我做回顧。
剛開始,我以為做 agent 的重點是 prompt。後來我發現,大部分問題都不在 prompt。
有一天,North 收到一份 4 天前的待辦快照。快照上寫著「連三天太累,今天要減量」。如果它照單全收,它會很有自信地叫我少做事,但那份資料早就過期了。
問題不在模型,而在我給它看了什麼、讓它自己算了什麼。從那次起,我開始用設計系統的方式設計 agent。
後來我聽了「大大帶我飛」的演講。演講給了我一套完整的框架:五個問題、harness 的分層、三種 loop。我發現,我在 North 上踩過的坑,幾乎都能對上其中一格。這個系列就是把兩者放在一起:演講的框架,加上 North 的真實運作。
寫給誰
- 已經在用 AI,想自己做一個 agent 的軟體工程師
- 有一點 vibe coding(靠 AI 寫程式)經驗,想知道 agent 背後怎麼運作的人
- 讀過把自己當成一個系統來設計,想把同一套思路用在 agent 上的人
路線圖
1:先想清楚要做什麼
- 先寫意圖,不先寫 prompt:先寫一句意圖,再回答五個問題。
- Agent 設計就是 FR 與 NFR 的切分:固定的步驟交給 script,判斷交給 LLM。
2:蓋好工作環境
- Harness 是 agent 的工作環境:模型只是一層,harness 才是整個環境。
- Context:這一步要讓 agent 看什麼、不看什麼:過期的資料,會讓 agent 很有自信地講錯話。
- 工具少而精,邊界先畫好:工具越強,邊界越要先畫。
3:讓它跑起來並變好
- Agent 系統裡的三種 loop:inner、outer、meta 三種 loop。
- 怎麼知道 agent 做得好?:先要求 agent 交代它做了什麼。
- 讓 NFR 畢業成 FR:重複出現的判斷,就寫成 script。
三個核心觀點
- 先有意圖,才有 prompt:說不出 agent 為什麼存在,就還不能開始寫 prompt(深入閱讀)。
- 判斷路徑越少越好:能算的交給 script,LLM 只負責真正的判斷(深入閱讀)。
- 變好靠畢業,不靠自我修改:重複三次的判斷,就是一條規則(深入閱讀)。
和上一個系列的關係
在把自己當成一個系統來設計,我用系統設計的原則設計自己:先觀測,再回饋,再調整。North 就是那套系統的一部分。這個系列把同一套原則,用在 agent 本身。
Agent 做得好不好,很少取決於模型,大多取決於你怎麼設計它周圍的系統。
從第 01 篇:先寫意圖,不先寫 prompt開始讀。系列最後一篇是 agent 開始變好的地方:讓 NFR 畢業成 FR。
參考來源:
- 「大大帶我飛」的演講