AgentSpeak(L) BDI 架構
當困難點不在於編寫另一個工作流程,而是在於決定自主代理在變動條件下該如何反應、承諾、暫停工作並解釋其選擇時,請使用此技能。
使用時機
- 系統必須對新事件做出反應,但不能放棄更長期的任務承諾。
- 您需要一個計畫庫,其中包含可根據當前上下文選擇的重複使用行為,而非單一的大型控制器。
- 代理策略必須與領域知識分離,以便在不重寫計畫的情況下改變急迫性、公平性或風險容忍度。
- 失敗應觸發復原行為與重新規劃,而非導致整個代理崩潰。
- 您需要一個可檢查的心智模型,以了解代理為何選擇某個任務或計畫而非另一個。
不適用於
- 簡單規則引擎,不需要持久承諾或意圖堆疊。
- 靜態規劃問題,環境不會中斷執行。
- 集中式工作流程系統,已有一個排程器決定每一步。
- 僅提示詞的代理循環,從不分別表示信念、計畫或策略。
核心心智模型
信念、願望與意圖是不同的物件
信念模擬當前世界,願望定義候選結果,而意圖是當前正在消耗執行預算的具體已承諾計畫堆疊。如果這些概念合併為一塊,代理將變得無法解釋。
計畫是情境化的知識
AgentSpeak 計畫並非通用程序。它們是由事件觸發的食譜(recipes),帶有上下文防護條件,因此同一個目標可以根據代理當前所相信的內容而觸發不同的行為。
選擇函數承載策略
事件選擇器、選項選擇器與意圖選擇器是急迫性、公平性與風險容忍度所屬之處。計畫應該編碼「如何做」;選擇函數則應編碼「策略」。
可中斷性是一項功能,而非錯誤
意圖是部分執行的堆疊,可以交錯、暫停與恢復。這使得具有反應能力的代理能夠處理中斷,而無需將每個長時間任務都變成重新啟動。
從運作中的系統向上形式化
從 AgentSpeak(L) 中學到的實際教訓是:從一個可運作的代理循環開始,然後形式化它實際所做的行為。不要編寫一個優雅的抽象理論,之後再將其近似為執行時行為。
決策點
flowchart TD
A[需要自主行為設計] --> B{需要持久承諾?}
B -->|否| C[使用規則、狀態機或簡單工作流程]
B -->|是| D{環境會中斷正在進行的工作?}
D -->|否| E[傳統規劃器可能足夠]
D -->|是| F{需要將策略與計畫分離?}
F -->|否| G[自訂代理循環,但預期會緊密耦合]
F -->|是| H[使用 AgentSpeak 風格的 BDI]
H --> I{當前問題}
I -->|選擇了錯誤的任務| J[重新檢視 SI 或 SE]
I -->|選擇了錯誤的計畫| K[重新檢視 SO 或上下文防護]
I -->|失敗導致執行中斷| L[添加失敗事件與復原計畫]
I -->|難以審計| M[公開意圖堆疊與選擇軌跡]
- 當系統必須平衡反應性與承諾,而非只選擇其一時,請使用 AgentSpeak 風格的建模。
- 將世界假設放在信念查詢與計畫防護中,而非深埋在動作內部的條件判斷中。
- 如果策略改變但領域知識不變,請在重寫計畫之前先更改選擇函數。
- 將長時間任務分解為子目標,以便意圖堆疊保持可檢查與可中斷。
失敗模式
目標-意圖崩潰
提示:設計中說代理「有一個目標」,但無法顯示它是否真正針對該目標提交了資源。
修復:分別表示候選目標與當前活躍的意圖堆疊。
策略隱藏在計畫中
提示:每個計畫本體都包含優先級、公平性或急迫性的分支邏輯。
修復:將這些選擇移至事件、選項或意圖選擇函數中。
單體計畫
提示:計畫過長,以致任何中斷都迫使整個序列在心智上重新啟動。
修復:將長行為拆分為較短的計畫,並帶有明確的子目標邊界。
失敗視為當機,而非事件
提示:子目標失敗導致整個代理中止或悄無聲息地消失。
修復:將失敗建模為一個可以觸發復原、重試或放棄計畫的事件。
無根據的上下文防護
提示:計畫基於模糊的世界假設進行匹配,而這些假設從未與真實的信念或觀察相關聯。
修復:使信念更新路徑明確,並保持防護條件可針對當前信念狀態進行查詢。
工作範例
具備緊急中斷功能的工具型 LLM 代理
一個程式碼代理正在進行長時間的重構工作,此時收到一個高嚴重性的生產環境警報。將重構建模為一個意圖堆疊,將警報建模為一個新事件。讓選擇函數先佔重構任務,之後再恢復它,而不遺失狀態。
無中央調度器的倉庫協調
多個移動代理共享關於通道擁塞與庫存狀態的信念庫。它們的領域知識保留在計畫中,而選擇函數則編碼在擁塞情況下哪些緊急揀貨任務優於補貨工作。
質量關卡
- 信念、願望與意圖被分別表示。
- 每個主要觸發事件至少有一個帶有明確上下文防護的計畫。
- 設計中明確指出 SE、SO 與 SI 策略所處的位置。
- 失敗路徑會建立事件或復原計畫,而非無聲崩潰。
- 審查者可以檢查活躍的意圖並解釋為何選擇一個計畫而非另一個。
行話檢查
- 如果有人無法解釋「代理想要的目標」與「代理已承諾的意圖」之間的差異,則他們尚未內化這個模型。
- 如果「策略」改變需要重寫計畫本體,代表策略與知識從未被分離。
- 如果代理無法說出是什麼中斷了它,以及接下來要恢復什麼,則它並非真正在使用意圖堆疊。
參考資料路由
references/bdi-architecture-for-agent-orchestration.md:載入以了解完整的代理循環以及 B/D/I 之間的交互。references/context-sensitive-plans-as-agent-knowledge.md:當計畫結構與防護設計是主要問題時載入。references/selection-functions-as-agent-policy.md:當優先級、公平性或風險容忍度需要明確的策略處理時載入。references/intention-management-and-goal-decomposition.md:當暫停/恢復、子目標或意圖可審計性為核心時載入。references/failure-modes-in-bdi-systems.md:當現有設計已存在且您正在除錯故障時載入。