Lab 23 學習導引與技術解析#
本 Lab 深入解析了如何將 Agent 運行的「技能知識(SOP)」與「行為守則(Rules)」與 Python 程式碼完全解耦,實現真正的「聲明式軟體定義 Agent 工作流」。
💡 核心學習重點#
1. 聲明式自攜技能封裝 (Declarative Skills)#
- 概念:當音樂教室的颱風停課標準、退費 SOP 發生修改時,我們不需要也不應該修改 Python 代碼。我們將其寫成標準 Markdown 文件並加上 YAML frontmatter 標頭,封裝為 Skill。
- 實作技術:
在
LocalAgentConfig中使用skills_paths指向包含該 Skill 資料夾的路徑。Agent 在對話中,會自動根據語意檢索此技能文件(SKILL.md),獲得相關知識並回答家長。
2. 專案層級 Rules 治理 (Project-Scoped Rules)#
- 概念:
AGENTS.md是用來約束 Agent 行為規範的聲明式規則文件。在本專案中,Agent 啟動時會自動讀取並載入.agents/AGENTS.md。 - 動態演進對比證明:
為了物理性驗證這項特性,我們在同一個 Python 程式運行中,動態改寫了專案的
.agents/AGENTS.md,並觀察兩階段 Agent 在接收相同提問時的行為差異:- 第一階段 (上限 2 次):規則檔中宣告上限為 2 次。家長想申請第 3 次補課,Agent 查閱規則後,堅定且有禮貌地拒絕了申請。
- 第二階段 (上限 4 次):規則檔在背景被修改放寬為 4 次(Python 代碼不變)。Agent 重新啟動後,查閱新規則,自動轉換為核准補課申請。
這清晰地展示了:未來當教室政策變動時,行政管理人員只需修改純文字的 .md 文件,Agent 就能在下一次執行時自動遵循新規範,完全免除了開發人員重新上線或修改代碼的維護成本。
🧹 系統狀態還原與環境整潔#
- 工程原則:測試腳本在動態修改專案配置時,必須確保在結束或發生錯誤(利用
try...finally)時,將修改過的.agents/AGENTS.md無條件還原為原始內容。這防止了污染 Git 提交歷史,確保了多人協作下的專案整潔度。