Build Systems, Not Code - Angie Jones, Agentic AI Foundation
三句話摘要
Agent 系統設計需要應用傳統軟體工程的紀律,不是讓 Agent 寫程式,而是架構 Agent 成為可復用、可維護的系統。 Agent 系統設計就是軟體工程,只是建築層次往上了一層——依然需要系統思維、工作流設計、職責分解、契約定義和故障安全,但對象從函式類別變成了 Agent 和工作流。 系統思維優先於寫程式:Agent 只是系統的一部分,需要先思考整個環境、依賴、失敗方式,再決定讓 Agent 做什麼。直接讓寫程式 Agent 構建系統會產生難以維護的架構。
重點整理
重點- 1
系統思維優先於寫程式:Agent 只是系統的一部分,需要先思考整個環境、依賴、失敗方式,再決定讓 Agent 做什麼。直接讓寫程式 Agent 構建系統會產生難以維護的架構。
- 2
工作流設計決定架構:Agent 需要的不只是目標,更需要明確的路徑(收集資訊 → 權衡評估 → 採取行動 → 停止/重試/升級)。這個工作流會影響後續所有決策。
- 3
代碼分解和關注點分離:大型提示詞會不斷膨脹(邊界情況、安全規則、例外),應該把隱藏在其中的不同工作分離出來,用合適的工具(提示詞、架構、子 Agent、代碼腳本)各自處理。
- 4
演算法思維:任務分配給最適合的執行者:不是所有任務都要用 Agent。計算通勤時間、過濾已看過的房屋應該用代碼(便宜、可靠);模糊判斷、推理應該用 Agent;最終決策交給人類。
實用技巧與重點
乾貨- 案例系統:Relocation Scout(房屋搜尋 Agent)
- 系統組成:Agent + 文件 + 工具 + 人類 + 其他 Agent
- Agent 輸出應寫入結構化記憶(提到使用 Karpathy 的 LLM Wiki 作記憶層)
- 記憶欄位包含:決策、評分、理由
- 設計原則:冪等性、威脅建模、輸入驗證、最小權限、行動邊界
- Agent 與下游系統的合約包括:評分、通勤時間等可查詢的結構化欄位
- 防護機制:記錄已執行的操作,重試時檢查狀態,避免重複動作(如重複寄信)
結論
結論“Agent 系統設計就是軟體工程,只是建築層次往上了一層——依然需要系統思維、工作流設計、職責分解、契約定義和故障安全,但對象從函式類別變成了 Agent 和工作流。”
完整解析
詳細建築 Agent 系統的真正挑戰不在於個別 Agent 的能力,而在於整個系統的設計。演講者以 Relocation Scout(房屋搜尋 Agent)為例,說明如何套用傳統軟體工程的思維。
首先是系統思維。許多人犯的錯誤是讓寫程式 Agent 直接構建其他 Agent,但這樣會產生技術上可用但難以維護的架構。正確的做法是先理解整個環境:Agent 的職責是什麼?它依賴什麼?它如何失敗?這個思維過程本身就是工程。
其次是工作流設計。Agent 不應該只有一個目標,還需要明確的執行路徑。例如 Relocation Scout 的流程是:蒐集房屋資訊 → 根據條件權衡評估 → 採取行動 → 結束或重試或升級。定義這個工作流後,才能決定哪些邏輯應該在 Agent 裡、哪些應該用工具、哪些應該交由人類決策。
第三個關鍵是避免「巨型提示詞」的代碼異味。初期時提示詞可能很精簡,但逐漸因邊界情況、安全規則、例外而膨脹。解決方法是分解職責:提示詞中隱藏著四個不同工作——標準化房屋資訊、定義輸出格式、計算通勤、研究鄰里。應該把這些分開,每個用最適合的工具:標準化用結構化架構定義、計算用腳本、研究用子 Agent。
演算法思維則是關鍵判斷:哪些任務應該用代碼、哪些用 Agent。計算通勤時間、過濾重複房屋應用代碼(確定性、便宜、可靠);模糊判斷如房屋評分應用 Agent;最終決策(真的要預約看房)由人類決策。這三層分工確保系統又便宜又安全。
結構化契約也很重要。當 Agent 評分一個房屋時,不應該只回傳文字訊息,而要寫入結構化記憶,包含評分、通勤時間等欄位。這樣其他系統或後續流程才能查詢這些資料,而不是被困在單次對話裡。
最後是冪等性和威脅防護。實務中 Webhook 會觸發兩次、程式中途崩潰,所以 Agent 必須記錄已執行的動作。若第二次執行時發現「已寄信給仲介」就不再寄,只完成剩餘的步驟(例如阻佔日曆時間)。同時要限制 Agent 的行動權限:可讀房屋資料、可製作清單,但不能自動寄信或下訂。威脅防護則要區分可信的系統命令和不可信的外部輸入(如賣家房源文案、網路評論)。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。


