iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
AI Engineering

30 天探索 MCP:從基礎概念到實作系列 第 27 篇

MCP Agent 實戰:加入任務管理與狀態追蹤

  • 分享至 

  • xImage
  •  

上一篇我們整理了 MCP Agent 的專案架構,將不同 MCP Server 的連線管理與任務執行紀錄分開處理,讓 Agent 可以透過統一的介面使用各種工具。

不過,之前的執行紀錄主要是顯示當次任務的執行過程。如果程式關閉後再重新啟動,想查詢之前執行過哪些任務、完成了多少步驟,就需要另外保存任務資料。

因此,今天就繼續在原本的專案上加入任務管理與狀態追蹤,讓 Agent 不只可以執行任務,也能保存每次任務的執行狀態與歷程。


調整專案架構

這次會保留上一篇已經完成的檔案,另外新增 task_planner.py 與 task_manager.py,分別處理任務規劃與任務資料管理。

day27/
├── config.py
├── mcp_manager.py
├── agent.py
├── main.py
├── task_logger.py
├── task_planner.py      # 任務規劃與重新規劃
├── task_manager.py     # 任務狀態與執行紀錄
└── tasks.db             # 執行後自動建立

其中,task_logger.py 與 task_manager.py 的用途不同:前者負責整理當次任務的執行摘要,後者則使用 SQLite 保存任務資料,讓程式重新啟動後仍然可以查詢。


加入任務規劃與動態調整

除了保存任務紀錄,這次也進一步整理 Agent 的任務規劃流程。

在 task_planner.py 中,讓 AI 根據使用者的需求產生執行計畫,再由 agent.py 依序呼叫對應的 Tool,如果某個步驟成功,就繼續執行原本計畫中的下一個步驟;如果執行失敗,則可以重新規劃後續工作。

為了避免 Agent 不斷重試,也保留了最大執行步數與失敗次數限制。另外,成功執行時不需要每一步都重新呼叫 AI 規劃,可以減少不必要的 API 使用。


使用 SQLite 保存任務狀態

接著,新增 task_manager.py,使用 SQLite 保存每次任務的資料。

主要記錄以下資訊:

  • 任務 ID 與內容: 方便識別及查詢不同任務。
  • 任務狀態: 記錄任務是否已完成,或是在執行過程中失敗。
  • 執行進度: 記錄預計步驟數量與已成功完成的步驟數。
  • 執行歷程: 保存各步驟使用的 Tool、執行狀態與回傳結果。

資料會儲存在 tasks.db,程式第一次執行時就會自動建立資料庫及所需的資料表,不需要手動建立。

當 Agent 開始執行任務時,會先建立任務紀錄;每完成一個步驟,就將結果保存到資料庫,並更新執行進度。任務結束後,再更新整體狀態。

這樣即使程式關閉,也不會因為記憶體中的資料消失而失去之前的任務紀錄。


查詢過去的任務

為了查看保存下來的資料,我也在 main.py 加入任務查詢功能。

啟動程式後,可以輸入以下指令:

  • tasks:查看最近的任務清單。
  • task 1:查看 ID 為 1 的任務詳細資料。
  • exit:離開程式。

任務清單會顯示任務 ID、狀態、任務內容、執行進度與建立時間;詳細資料則會列出各個步驟使用的 Tool,以及對應的執行結果。

和上一篇主要顯示當次執行摘要不同,這次可以直接查詢先前保存的任務,方便之後追蹤與除錯。


實際測試

完成修改後,我輸入以下任務進行測試,請搜尋知識庫中與 MCP Agent 執行限制有關的資料,整理成重點,寫入 report.txt,最後讀取 report.txt 確認內容。

https://ithelp.ithome.com.tw/upload/images/20261011/20178769JjMZOkZeGn.png

https://ithelp.ithome.com.tw/upload/images/20261011/20178769glsSgmFlc2.png

可以看到指令都有順利完成,並且任務完成後輸入 tasks,可以看到這次任務的狀態與進度:

https://ithelp.ithome.com.tw/upload/images/20261011/20178769PRB14pekuU.png

接著輸入 task 1,就能查看完整的執行紀錄,包括每個步驟的工作內容、Tool 名稱、執行狀態與回傳結果。

https://ithelp.ithome.com.tw/upload/images/20261011/20178769OyYZTnC1TB.png

我也確認了任務紀錄會保存到 tasks.db,因此重新啟動程式後,仍然可以查詢先前的任務。


今天的成果

今天在原本的 MCP Agent 專案上,進一步加入任務規劃、失敗時的動態調整,以及可持續保存的任務管理功能,現在除了能查看單次任務的執行摘要,也能保存任務狀態與各步驟的執行歷程,並在程式重新啟動後查詢過去的任務。

不過保存任務紀錄不等於自動恢復任務。目前即使能查到中斷前的執行進度,程式仍然需要進一步實作,才能從未完成的步驟繼續執行。


上一篇
MCP Agent 實戰:整合既有功能,打造自己的 AI 助手
下一篇
MCP Agent 實戰:整合 Resource、Prompt 與安全操作確認
系列文
30 天探索 MCP:從基礎概念到實作 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言