📖 この記事は「AI Agentを解剖する」シリーズの第4回(完結)です。← 前回:AI Agentのセキュリティリスク
前回までで、AI Agentの基本原理と記憶システムを扱いました。ただ、会話できて記憶できるだけでは、Agentは本当の自動化アシスタントにはなりません。
AIが複雑なタスクを独立して処理し、24時間止まらず動くには、3つの重要な仕組みが必要です。Skill(スキル)、Sub-agent(分身)、**Cron(スケジュール)**です。
Skill:AIの作業マニュアル
AIに複雑なこと、たとえば動画制作を頼むと、途中に十数個のステップが入ります。脚本を書く、スライドを作る、スクリーンショットを撮る、音声を入れる、音声認識で検証する、動画を合成する……。毎回モデルに手順を考えさせると、かなりの確率で抜けます。
Skillは書かれたSOPです。
本体はプレーンテキストファイルで、通常は.md形式です。コードではありません。中には次のことを書きます。
- タスクを完了する手順の順番
- 各ステップで使うツールの場所
- 例外が起きた時の対処方法
Skillのうまいところ:必要時だけ読み込む
AgentはすべてのSkillをSystem Promptへ詰め込みません。そんなことをするとcontextが爆発します。やり方はこうです。
- System Promptには使えるSkillの一覧と短い説明だけを入れる
- 言語モデルが現在のタスクに必要なSkillを判断する
- 読み取りツールでそのSkillの中身を読み込む
- Skillの手順に沿って実行を始める
これは Context Engineering のテクニックです。必要な時だけ情報を読み込み、貴重なcontext windowを無駄にしません。
Skillは交換できる
Skillはテキストファイルなので、自分のSkillを他の人のAI Agentへ共有したり、コミュニティから他人のSkillをダウンロードしたりできます。『マトリックス』で武術を脳へ直接ロードするように、AIはSkillを指定フォルダに入れるだけで、新しい作業フローをすぐ覚えます。
出どころ不明のSkillにはセキュリティリスクがあります。この点は前回の AI Agentのセキュリティリスク と Skill Shielder で詳しく扱いました。
AIは自分でツールも作る
既存のツールやSkillを使うだけでなく、言語モデルは問題解決のために自分でコードを書くこともできます。
例を挙げます。「音声合成後は毎回音声認識で検証し、違っていたら作り直す。最大5回まで」とAIに伝えます。モデルは少し考えて、毎回やり取りするのは面倒だと判断し、合成、検証、リトライをまとめた小さなスクリプトを書き、一度で実行できるようにします。
こうした使い捨ての小ツールは、使い終わるとAIに忘れられ、次回また書き直されることも多いです。それでもAgentの問題解決の柔軟さはよく表れます。
Sub-agent:分身術
タスクを並行した子タスクへ分けられる場合、Agentは分身を出して処理できます。
たとえばAIに2本の論文の手法を比較させるとします。言語モデルはAgentに2つのSub-agentを作らせ、片方に論文Aを読んで要約させ、もう片方に論文Bを読んで要約させます。2つの分身はそれぞれ言語モデルとやり取りし、Web検索し、論文をダウンロードし、段落ごとに読み、最後に要約をメインAgentへ返します。
なぜメインAgentで直接やらないのか?
鍵はcontext spaceを節約することです。
論文1本を読むだけでも、検索、ダウンロード、分割読解、整理と、モデルとのやり取りが何十回も発生します。これを全部メインAgentのcontext内でやると、windowはすぐ埋まります。
Sub-agentを使うと、細かい過程はすべて分身の独立contextで進みます。メインAgentから見ると、最終要約だけが見えます。上司が報告書だけ読むようなもので、部下が何日残業したかまでは見る必要がありません。
これも Context Engineering の中核です。各層には、その層に必要な情報だけを見せます。
無限外注の罠
分身はさらに分身を呼べるのでしょうか。理論上はできます。ただし制限しないと無限外注になります。全員が次の層へ仕事を投げ、最後に誰も実作業をしません。
解決策は荒いですが有効です。分身から増殖能力を取り上げることです。Agentはプログラム層でSub-agentに「分身を呼ぶ」ツールを使わせないようにします。言語モデルへの指示ではなく、コードでロックします。
Cron:AIに「待つ」と「時間を守る」を教える
AI Agentには根本的な問題があります。モデルは自分から何もしません。
言語モデルは入力を受け取った時だけ出力します。誰も質問しなければ静かにしています。Agentとモデルの会話が終わった後、新しいtriggerがなければシステム全体が止まります。
Heartbeat:定期的に起こす
Heartbeat(心拍) は最も基本的な解決策です。一定間隔、たとえば15分ごとに、Agentがあらかじめ決めた指示を言語モデルへ送り、「起きて」何かすることがあるか確認させます。
Heartbeatの指示は通常、「heartbeat.mdを読んで、未処理タスクがあるか確認して」のようなものです。モデルは読み終わった後、タスクがあれば実行を始め、なければ「何もない」と返して次のheartbeatを待ちます。
Heartbeatの指示は必ずしも具体的でなくても構いません。「あなたの目標へ前進して」と設定し、AIの設定に「一流の研究者になる」と書いてあれば、15分ごとに起きて論文を読む、メモを書く、資料を整理するといった研究関連の作業を始めるかもしれません。
Cron Job:指定時刻に発火する
Heartbeatは一定間隔で鳴る鐘です。Cron は特定時刻に特定タスクを発火します。
「毎日正午に動画を1本作る」という指示なら、言語モデルはスケジュールツールでCron Jobを設定します。正午12時に発火し、その時の指示は「動画を1本作る」。正午になるとCronシステムが追加のheartbeatのようにAgentを起こしますが、特定のタスク指示を持っています。
待つことを覚える
Cronがもたらす意外な能力があります。AIに待つことを教えられるのです。
たとえばAIがオンラインツールを使い、データをアップロードした後に5分の処理時間が必要だとします。普通なら、AIは「処理中」と表示されると「処理中です」と報告して終わります。自分から待たないからです。
Cronがあれば、賢いモデルは「処理中」を見た時点で、3分後のCron Jobを設定できます。「3分後に戻ってこのページを確認する」。3分後にCronが発火し、AIが戻って確認し、処理が終わっていれば次へ進みます。
これにより、AIは待ち時間のある非同期フローを扱えるようになります。場合によっては、1つのAIが別のAIサービスを操作することもできます。
三つが合わさると、本当の自動化になる
Skill、Sub-agent、Cronの3つが同時に動くと、AI AgentはただのQ&Aツールではなく、本当の自動化システムになります。
- Skill は複雑なタスクの手順漏れを防ぐ
- Sub-agent は複数タスクの同時進行を可能にする
- Cron はAIに定時実行と待機を覚えさせる
この3つの仕組みのどれも、革命的な新技術ではありません。本質は「決め打ちのプログラムルール」と「言語モデルの判断力」の組み合わせです。組み合わせることで、AIは「受け身で答えるもの」から「能動的に仕事を完了するもの」へ進化します。
関連記事
📖 シリーズ振り返り:① AI AgentはAIではない → ② 記憶メカニズム → ③ セキュリティリスク → ④ 自動化メカニズム(本記事)
小企鵝の経験
私はOpenClaw上で一連のcron jobシステムを動かしています。朝はニュース整理、夜はその日の進捗まとめ、深夜はバックアップというように、毎日決まった時間に違う仕事をしています。これは自動化です。重要なのは「非エンジニアでもできるか」という点で、答えはできます。ただし、成熟した最適化アーキテクチャとself-healingツールを使うことが前提です。ゼロから作らないこと。Skill / Sub-agent / Cronの3層分担を理解してから、初心者に合うフレームワークを選ぶほうが、いきなりPythonのスケジュールスクリプトを書くよりずっと楽です。
よくある質問
Q: AI AgentのSkillとは何ですか?
SkillはAIの作業SOPです。複雑なタスクを完了する手順を書いたテキストファイルです。AIは必要な時にSkillを読み、手順に沿って実行します。社員が作業マニュアルを見るのと同じです。
Q: Sub-agentとメインAgentは何が違いますか?
Sub-agentはメインAgentが呼び出す分身で、子タスクを担当します。同じ言語モデルを使いますが、独立したcontext windowを持ちます。完了後は結果だけを報告し、メインAgentの記憶スペースを消費しません。
Q: AI Agentはどうやって定時にタスクを実行しますか?
Heartbeat(心拍)とCron(スケジューラ)を使います。Heartbeatは一定間隔でAIを起こし、Cronは指定時刻に特定タスクを発火します。組み合わせることで24時間の自動運用ができます。
この記事の概念は台湾大学・李宏毅教授の公開講義を参考にしています。— Penchan