實作課程 07 — 總結¶
目標: 整合您建置的成果、整理電腦環境,並選擇合理的下一步。
時間: 約 10 分鐘
本課程涵蓋的內容¶
| 實作課程 | 能力 |
|---|---|
| 01 | 已建置應用程式,並完成 SDK 範例專案的基本驗證 |
| 02 | 已追蹤串流聊天回合,並在執行階段探索模型 |
| 03 | 已將靜態內容替換為 CopilotTool.DefineTool 工具 |
| 04 | 已觀察工作階段事件生命週期與完成訊號 |
| 05 | 已跨處理程序重新啟動持久保存並繼續 SDK 工作階段 |
| 06 | 已連接 MCP 伺服器,透過外部工具擴充代理程式 |
選擇性的 extra-* 實作課程現在位於主要 SDK 路徑之外。若您想練習 CLI 自訂代理程式、治理掛鉤或 ASP.NET/EF Core 擴充,可使用這些課程;但 SDK 學習順序並不要求完成它們。
值得保留的重點¶
-
嵌入整合勝過單純對話。 SDK 會讓代理程式成為應用程式的元件,並納入您的驗證、記錄與部署管線管理。
-
探索能力;不要將其硬式編碼。 模型來自
ListModelsAsync()。此示範曾內建六個模型識別碼,後來悄悄退化到只剩一個可用選項。 -
工具勝過將大量內容塞入提示。
CopilotTool.DefineTool可讓模型擷取需要的內容,而不必預先在每個回合載入各種猜測,無論是否有用都浪費權杖。 -
事件串流比您想像的更豐富。 測試中觀察到的單一回合列印了 33 個事件。大多數應用程式只會處理四個,這並沒有問題;但在捨棄其他事件前,應先瞭解可取得哪些事件。
-
工作階段讓代理程式具備可攜性。
SessionId加上ResumeSessionAsync可在處理程序重新啟動後保留。示範應用程式的瀏覽器 localStorage 歷程記錄雖然方便,卻無法跨裝置移動。 -
MCP 可擴大觸及範圍。 MCP 透過標準通訊協定為代理程式提供非自行撰寫的工具,不必將每項整合都寫入應用程式。
-
請在您的環境中驗證權限控制。
OnPermissionRequest雖然存在,但測試時從未叫用,因為主機 CLI 已預先授予核准。即使處理常式拒絕所有要求,命令仍會通過。將其作為控制措施前,請先證明它會在您的設定中觸發。請重新參閱 實作課程 03 取得工具權限範例。
清理環境¶
停止服務(Ctrl+C 於各終端機中),若服務已中斷連結,則執行:
移除本機產生的檔案:
rm -f src/AgentOrchestrator/AgentHQDemo.Api/retail.db* # SQLite DB + WAL files
rm -f logs/* # sample and audit logs
⚠️ 如果 macOS 上仍有檔案開啟,移除命令可能看似成功,但服務隨後又重新建立檔案。請先停止服務,再移除產生的檔案。
預期結果:沒有輸出,或只顯示您刻意編輯的實作課程檔案。若要捨棄本機實作內容並回復為乾淨的簽出狀態:
檢查您的理解程度¶
- 為何
session.On(...)會因未提供型別引數而無法編譯? - 為何
ResumeSessionAsync需要第二個引數? - 為何
[Description]工具參數上的屬性很重要? - 哪個訊號表示回合已完成?
解答
1. `CS0411` — 無法推斷型別引數。SDK v1.x 需要 `On後續方向¶
| 方向 | 從這裡開始 |
|---|---|
| 重新執行特定 SDK 範例 | SdkLabs |
| 深入瞭解示範程式碼 | 示範 |
| 參考疑難排解與架構內容 | 深入解析 |
| 建置您自己的代理程式應用程式 | Copilot SDK 存放庫 |
| 使用外部工具擴充 Copilot | Model Context Protocol |
可進一步延伸的構想¶
- 將範例提升為應用程式功能。 將一個
SdkLabs命令改造成真正的 API 端點,並新增面向使用者的進度資訊。 - 在伺服器端持久保存交談。 以 SQLite 支援的工作階段中繼資料取代瀏覽器 localStorage,讓歷程記錄可跨裝置保留。
- 新增第二個 MCP 伺服器。 不要將認證資訊放入原始碼;記錄必要的環境變數,並證明工具會在執行階段出現。
- 加強可觀測性。 記錄目前忽略的事件類型,讓正式環境除錯保有足夠內容,同時避免儲存完整提示。
✅ 最終檢查點¶
- [x] 已完成全部七個 SDK 實作課程
- [x] 服務已停止,且本機產生的檔案已清理
- [x]
git status --short是乾淨狀態,或只保留刻意的實作課程編輯 - [x] 您能回答上述四個問題