📖 本文是「解剖 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,那樣會讓上下文爆掉。它的做法是:
- 在 System Prompt 裡只放一份清單,列出有哪些 Skill 可用,以及簡短說明
- 語言模型判斷當前任務需要哪個 Skill
- 用讀取工具把那個 Skill 的內容載入
- 按照 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