跳至內容

實作課程 07 — 總結

目標: 整合您建置的成果、整理電腦環境,並選擇合理的下一步。

時間: 約 10 分鐘

本課程涵蓋的內容

實作課程 能力
01 已建置應用程式,並完成 SDK 範例專案的基本驗證
02 已追蹤串流聊天回合,並在執行階段探索模型
03 已將靜態內容替換為 CopilotTool.DefineTool 工具
04 已觀察工作階段事件生命週期與完成訊號
05 已跨處理程序重新啟動持久保存並繼續 SDK 工作階段
06 已連接 MCP 伺服器,透過外部工具擴充代理程式

選擇性的 extra-* 實作課程現在位於主要 SDK 路徑之外。若您想練習 CLI 自訂代理程式、治理掛鉤或 ASP.NET/EF Core 擴充,可使用這些課程;但 SDK 學習順序並不要求完成它們。

值得保留的重點

  1. 嵌入整合勝過單純對話。 SDK 會讓代理程式成為應用程式的元件,並納入您的驗證、記錄與部署管線管理。

  2. 探索能力;不要將其硬式編碼。 模型來自 ListModelsAsync()。此示範曾內建六個模型識別碼,後來悄悄退化到只剩一個可用選項。

  3. 工具勝過將大量內容塞入提示。 CopilotTool.DefineTool 可讓模型擷取需要的內容,而不必預先在每個回合載入各種猜測,無論是否有用都浪費權杖。

  4. 事件串流比您想像的更豐富。 測試中觀察到的單一回合列印了 33 個事件。大多數應用程式只會處理四個,這並沒有問題;但在捨棄其他事件前,應先瞭解可取得哪些事件。

  5. 工作階段讓代理程式具備可攜性。 SessionId 加上 ResumeSessionAsync 可在處理程序重新啟動後保留。示範應用程式的瀏覽器 localStorage 歷程記錄雖然方便,卻無法跨裝置移動。

  6. MCP 可擴大觸及範圍。 MCP 透過標準通訊協定為代理程式提供非自行撰寫的工具,不必將每項整合都寫入應用程式。

  7. 請在您的環境中驗證權限控制。 OnPermissionRequest 雖然存在,但測試時從未叫用,因為主機 CLI 已預先授予核准。即使處理常式拒絕所有要求,命令仍會通過。將其作為控制措施前,請先證明它會在您的設定中觸發。請重新參閱 實作課程 03 取得工具權限範例。

清理環境

停止服務(Ctrl+C 於各終端機中),若服務已中斷連結,則執行:

lsof -ti:5050        # prints a PID if still listening
kill <PID>
lsof -ti:5051
kill <PID>

移除本機產生的檔案:

rm -f src/AgentOrchestrator/AgentHQDemo.Api/retail.db*   # SQLite DB + WAL files
rm -f logs/*                                             # sample and audit logs

⚠️ 如果 macOS 上仍有檔案開啟,移除命令可能看似成功,但服務隨後又重新建立檔案。請先停止服務,再移除產生的檔案。

git status --short

預期結果:沒有輸出,或只顯示您刻意編輯的實作課程檔案。若要捨棄本機實作內容並回復為乾淨的簽出狀態:

git status
git checkout -- .        # discards uncommitted changes — irreversible

檢查您的理解程度

  1. 為何 session.On(...) 會因未提供型別引數而無法編譯?
  2. 為何 ResumeSessionAsync 需要第二個引數?
  3. 為何 [Description] 工具參數上的屬性很重要?
  4. 哪個訊號表示回合已完成?
解答 1. `CS0411` — 無法推斷型別引數。SDK v1.x 需要 `On(...)`;在 v1.0.0 中,命名空間也從 `GitHub.Copilot.SDK` 移至 `GitHub.Copilot`。2. 繼續工作階段除了識別碼之外也需要設定。請傳入 `ResumeSessionConfig`,而不是 `SessionConfig`;若省略將產生 `CS7036`。3. 這些描述是模型唯一可用的工具 API 文件。若描述不夠清楚,模型只能猜測引數的意義及使用時機。4. `SessionIdleEvent` 表示該回合已完成。`SessionErrorEvent` 也必須設定例外路徑,否則呼叫端可能永遠等不到結果。

後續方向

方向 從這裡開始
重新執行特定 SDK 範例 SdkLabs
深入瞭解示範程式碼 示範
參考疑難排解與架構內容 深入解析
建置您自己的代理程式應用程式 Copilot SDK 存放庫
使用外部工具擴充 Copilot Model Context Protocol

可進一步延伸的構想

  • 將範例提升為應用程式功能。 將一個 SdkLabs 命令改造成真正的 API 端點,並新增面向使用者的進度資訊。
  • 在伺服器端持久保存交談。 以 SQLite 支援的工作階段中繼資料取代瀏覽器 localStorage,讓歷程記錄可跨裝置保留。
  • 新增第二個 MCP 伺服器。 不要將認證資訊放入原始碼;記錄必要的環境變數,並證明工具會在執行階段出現。
  • 加強可觀測性。 記錄目前忽略的事件類型,讓正式環境除錯保有足夠內容,同時避免儲存完整提示。

✅ 最終檢查點

  • [x] 已完成全部七個 SDK 實作課程
  • [x] 服務已停止,且本機產生的檔案已清理
  • [x] git status --short 是乾淨狀態,或只保留刻意的實作課程編輯
  • [x] 您能回答上述四個問題