📖 本文是「解剖 AI Agent」系列的第 4 篇(完結)。← 上一篇:AI Agent 的安全風險

前幾篇談了 AI Agent 的基本原理和記憶系統。但光是能對話和記東西,還不足以讓 Agent 成為真正的自動化助理。

要讓 AI 能夠獨立處理複雜任務、24 小時不間斷運作,還需要三個關鍵機制:Skill(技能)Sub-agent(分身)Cron(排程)


Skill:AI 的工作手冊

請 AI 做一件複雜的事(比如製作一支影片),中間可能牽涉十幾個步驟:寫腳本、做投影片、截圖、配音、語音驗證、影片合成……每次都靠模型自己想該怎麼做,很容易漏掉步驟。

Skill 就是寫好的 SOP。

它的本體是一份純文字檔案(通常是 .md 格式),不是程式碼,裡面記載:

  • 完成任務的步驟順序
  • 每個步驟需要用到的工具在哪裡
  • 遇到例外狀況該怎麼處理

Skill 的巧妙之處:按需載入

Agent 不會把所有 Skill 都塞進 System Prompt,那樣會讓上下文爆掉。它的做法是:

  1. 在 System Prompt 裡只放一份清單,列出有哪些 Skill 可用,以及簡短說明
  2. 語言模型判斷當前任務需要哪個 Skill
  3. 用讀取工具把那個 Skill 的內容載入
  4. 按照 Skill 的步驟開始執行

這是一種 Context Engineering 的技巧,只在需要的時候才載入資訊,避免佔用寶貴的上下文窗口。

Skill 可以交換

因為 Skill 就是文字檔,所以可以直接把自己的 Skill 分享給別人的 AI Agent,或者從社群平台下載別人的 Skill。就像在《駭客任務》裡把武功直接灌入大腦一樣,AI 只要把 Skill 放進指定資料夾,就立刻學會了一套新的工作流程。

下載來路不明的 Skill 要注意安全風險,這部分前面在 AI Agent 的安全風險Skill Shielder 那兩篇有詳細討論。

AI 也會自己創造工具

除了使用現有的工具和 Skill,語言模型也能自己寫程式來解決問題。

舉個例子:告訴 AI「每次做語音合成後要用語音辨識驗證,不對就重做,最多五次」。模型想了想,覺得每次都要來回溝通太麻煩,於是自己寫了一個小腳本,把合成、驗證、重試的邏輯全部包進去,一次執行搞定。

這些「免洗小工具」通常用完就被 AI 遺忘,下次又會重新寫一個,但它們展現了 Agent 解決問題的靈活性。


Sub-agent:分身術

當任務可以拆成平行的子任務時,Agent 能派出分身去處理。

假設要 AI 比較兩篇論文的方法。語言模型會要求 Agent 繁殖出兩個 Sub-agent(子代理),一個去讀論文 A 並摘要,另一個去讀論文 B 並摘要。兩個分身各自跟語言模型溝通、搜尋網頁、下載論文、逐段閱讀,最後把摘要回傳給主 Agent。

為什麼不直接用主 Agent 做?

關鍵在於節省上下文空間

讀一篇論文可能需要跟語言模型來回幾十次:搜尋、下載、分段閱讀、整理。如果這些過程都發生在主 Agent 的上下文裡,窗口很快就會被塞滿。

用 Sub-agent 的話,所有繁瑣的過程都在分身的獨立上下文中進行。對主 Agent 來說,它只看到最終的摘要結果,就像主管只看報告,不需要知道下屬加了幾天班。

這也是 Context Engineering 的核心思維:讓每一層只看到它需要的資訊。

無限外包的陷阱

分身也能召喚分身嗎?理論上可以,但不加限制就會變成無限外包。每個人都把工作丟給下一層,最後沒人真的在做事。

解決方法很粗暴但有效:讓分身失去繁殖能力。 Agent 在程式層面直接禁止 Sub-agent 使用「召喚分身」這個工具,靠程式碼鎖死,不靠語言模型的指令來約束。


Cron:讓 AI 學會「等」和「守時」

AI Agent 的一個根本問題是:模型不會主動做任何事。

語言模型只會在收到輸入時才產生輸出。沒有人問它問題,它就靜靜待著。Agent 跟模型對話結束後,如果沒有新的觸發,整個系統就停住了。

心跳機制:定時叫醒

Heartbeat(心跳) 是最基本的解決方案。每隔一段固定時間(比如 15 分鐘),Agent 就會自動送一個預設的指令給語言模型,讓它「醒來」看看有什麼事要做。

心跳的指令通常是「去讀一下 heartbeat.md 這個檔案,看有沒有待辦任務」。模型讀完之後,如果有任務就開始執行,沒有就回覆「沒事」然後繼續等下次心跳。

心跳指令不一定要很具體。心跳設成「往你的目標前進」,如果 AI 的設定裡寫著它的目標是「成為一流的學者」,那每 15 分鐘它就會起來做點跟學術研究有關的事:讀論文、寫筆記、整理資料。

Cron Job:定點觸發

心跳是固定間隔的敲鐘,Cron 則是在特定時間觸發特定任務。

「每天中午做一支影片」這條指令,語言模型會使用排程工具設定一個 Cron Job:中午 12 點觸發,觸發時的指令是「製作一支影片」。到了中午,Cron 系統就會像一次額外的心跳一樣戳一下 Agent,但帶著特定的任務指令。

學會等待

Cron 帶來一個意想不到的能力:讓 AI 學會等待。

假設 AI 要使用一個線上工具,上傳資料後那個工具需要 5 分鐘才能處理完成。一般情況下,AI 看到「處理中」就只能回報「處理中」然後結束,因為它不會主動等待。

有了 Cron 之後,聰明的模型可以在看到「處理中」時,設定一個 3 分鐘後的 Cron Job:「3 分鐘後回來檢查這個頁面」。3 分鐘到了,Cron 觸發,AI 回來檢查,發現處理完了,就繼續下一步。

這讓 AI 能夠操控需要等待的非同步流程,甚至能用一個 AI 去操控另一個 AI 的服務。


三者合體:真正的自動化

當 Skill、Sub-agent 和 Cron 三個機制同時運作,AI Agent 就不再只是一個問答工具,而是一個真正的自動化系統:

  • Skill 確保複雜任務不會遺漏步驟
  • Sub-agent 讓多個任務可以同時進行
  • Cron 讓 AI 能定時工作、學會等待

這三個機制沒有一個是革命性的新技術,本質上都是「寫死的程式規則」加上「語言模型的判斷力」。組合在一起,就讓 AI 從「被動回答問題」進化到「主動完成工作」。

延伸閱讀


📖 系列回顧:① AI Agent 不是 AI② 記憶機制③ 安全風險 → ④ 自動化機制(本篇)

小企鵝的經驗

OpenClaw 上跑了一整套 cron job 系統,每天固定時間做不同的事:早上整理新聞、晚上總結今天的進展、半夜跑備份。這算是一種自動化沒錯,重點是「非工程師能不能做到」這件事,答案是可以,但前提是用成熟的最佳化架構和 self-healing 工具,不要從零造輪子。把 Skill / Sub-agent / Cron 三層分工搞清楚,再選一套適合新手的框架,比硬寫 Python 排程腳本省力很多。

常見問題

Q: 什麼是 AI Agent 的 Skill?

Skill 就是 AI 的工作 SOP,是一份文字檔,記載完成某個複雜任務的步驟流程。AI 在需要時讀取 Skill,按照裡面的步驟執行,就像員工翻閱操作手冊一樣。

Q: Sub-agent 和主 Agent 有什麼不同?

Sub-agent 是主 Agent 召喚出來的分身,負責處理子任務。它跟主 Agent 使用同一個語言模型,但有獨立的上下文窗口,做完後只回報結果,不佔用主 Agent 的記憶空間。

Q: AI Agent 怎麼做到定時執行任務?

透過心跳機制(Heartbeat)和排程系統(Cron)。心跳是固定間隔戳一下 AI 讓它醒來;Cron 則是在指定時間觸發特定任務。兩者搭配就能實現 24 小時自動運作。


本文觀念參考台大李宏毅教授公開課程內容,整理:小企鵝 Penchan