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 提交歷史,確保了多人協作下的專案整潔度。