この記事で得られること
- Claude Codeで自律AIエージェントを構築するアーキテクチャの全体像がわかる
- 指揮官エージェント+実働エージェントの2層構造の設計思想を理解できる
- OpenClawなど既存ツールとの比較から、自作のメリット・デメリットを判断できる
対象読者: AIエージェント構築に興味があるエンジニア / 月額API代に悩んでいる方
OpenClawのAPI代が高すぎた
自律型AIエージェントに興味を持って、最初に試したのがOpenClawだった。動かしてみると「おっ、ちゃんとタスクこなすじゃん」と感動した。ところが月末にAPI料金を見て現実に引き戻された。Claude Opusをバックエンドに使って、1日100クエリ程度の利用で月$600(約9万円)。副業の売上はまだゼロ。冷静になると「これ、続けられないな」と思った。
安いモデルに切り替えれば$2〜5/日に落ちるけど、出力の質がガクッと下がる。ローカルLLMも試したが、7Bモデルだとリサーチ1件に何分もかかる。並列処理なんて夢のまた夢だった。
そこで「Claude Code Maxプラン(月額固定)で同じこと再現できないか?」という発想に至った。Maxプランは追加のAPI料金ゼロ。ここに自律エージェントの仕組みを載せられれば、コスト問題は一発で解決する。
OpenClawの正体は「cron+ファイル読み書き」だった
既存ツールを色々調べる過程で、OpenClawのソースコードをAIに読んでもらった。
で、気づいた。OpenClawの中核って、突き詰めるとcronジョブ+ファイルの読み書きだった。
定期的にタスクファイルを読んで、LLMにプロンプトを投げて、結果をファイルに書き出す。人格定義ファイル(SOUL.md)があって、ワークスペースファイルで状態管理。それだけ。細かいエラーハンドリングやUI部分はあるけど、コアのアーキテクチャは驚くほどシンプルだった。
「...これ、Claude Codeのclaude -pコマンドとcronで再現できるじゃん」
そう気づいた瞬間、自作の方向に舵を切った。
アーキテクチャ概要: 指揮官と実働部隊の2層構造
構造はシンプルに「2層」で設計している。
┌──────────────────────────────────────────┐
│ 自分(人間) │
│ 指示を出す / 結果を受け取る │
└──────────────┬───────────────────────────┘
│ 対話
▼
┌──────────────────────────────────────────┐
│ メインエージェント(指揮官) │
│ = オーケストレーター │
│ │
│ ・タスク分解・計画(Plan) │
│ ・サブエージェントへの委任(Do) │
│ ・結果の評価(Check) │
│ ・自己改善(Act) │
│ │
│ 参照: SOUL.md / MEMORY.md / TASKS.md │
└──────┬──────────┬──────────┬──────────────┘
│ │ │
▼ ▼ ▼
┌──────────┐┌──────────┐┌──────────┐
│サブAgent A││サブAgent B││サブAgent C│
│リサーチ ││コーディング││ファイル操作│
│claude -p ││claude -p ││claude -p │
└──────────┘└──────────┘└──────────┘
あなたが話しかけるのはメインエージェントだけ。 サブエージェントはメインが裏で勝手に起動する。「これ調べて」と言えば、メインがサブを立ち上げて、結果をまとめて返してくれる。
自分の本音は「一人の社員として自律的に動いてほしい」だった。朝起きたらリサーチが終わっていて、ドラフトが上がっていて、自分はレビューだけすればいい。
最初は1つのエージェントに全部やらせていたが、リサーチ中は応答が返ってこないし、コンテキストが膨れて前半の指示を忘れる。2層に分けてからはメインのレスポンスが常に速い。裏でサブがリサーチしていても、メインに別の質問を投げられる。この違いは運用すると体感がまるで変わる。
永続化を支える3ファイル
LLMのチャットは、セッションが切れると全部忘れる。これだと毎回ゼロからやり直しで使い物にならない。Sentinelでは3つのMarkdownファイルで「記憶」を永続化している。
| ファイル | 役割 | 中身のイメージ |
|---|---|---|
| SOUL.md | 人格・行動原則 | 「お前は指揮官だ。実作業はサブにやらせろ」「完璧より前進を優先しろ」 |
| MEMORY.md | 記憶・振り返り | ユーザー情報、作業履歴、過去の成功・失敗ログ |
| TASKS.md | タスク管理 | 実行中・待機中・完了タスクの一覧 |
Claude Codeには「プロジェクトルートのCLAUDE.mdを起動時に自動で読む」という仕様がある。だからCLAUDE.mdに「最初にSOUL.md、MEMORY.md、TASKS.mdを読め」と書いておけば、毎回の起動でエージェントが自分の役割と記憶を復元してくれる。OpenClawの初期化プロセスと同じ発想だけど、やっていることはMarkdownファイルを読むだけ。
SOUL.mdで面白いのは、名前をつけると振る舞いに一貫性が出ること。「お前はSentinelだ」と定義すると、セッションをまたいでもキャラがブレにくい。馬鹿らしいと思うかもしれないけど、実際試すと差が出る。
PDCAサイクル: エージェントが自分で学習する仕組み
Sentinelの設計で一番こだわったのが、タスク完了後に必ずPDCAを回す仕組み。
- Plan: TASKS.mdからタスクを取り出して、MEMORY.mdの過去ログを参照して計画を立てる。「前回これで失敗したから今回はこうしよう」を自動でやる
- Do: サブエージェントに委任して実行
- Check: 結果の品質、効率性、指示の適切さを自己評価する
- Act: 改善点があればSOUL.mdやスキルファイルをその場で修正する。先送りしない
振り返りはMEMORY.mdに自動で記録される。実際のログはこんな感じ:
### [2026-03-27] ニッチリサーチ
- 結果: 成功
- 良かった点: 出力テンプレートを詳細指定したおかげで手戻りゼロ
- 改善点: サブエージェントが管理ファイルを更新してしまった
- 次回への申し送り: サブへの指示に「MEMORY.md/TASKS.mdは触るな」を必ず含める
ポイントは「改善点を見つけたらその場で直す」こと。「次回気をつけよう」じゃなくて、実際にSOUL.mdやCLAUDE.mdの記述を書き換える。だからエージェントは使うたびに少しずつ賢くなっていく。人間がプロンプトを手動で修正する必要がない。
サブエージェント委任: 5要素テンプレートと並列処理
サブエージェントへの指示が曖昧だと手戻りが起きる。試行錯誤した結果、「作業内容・作業ディレクトリ・出力先・出力形式・制約」の5要素を毎回含めるルールにしたら、手戻りがほぼゼロになった。特に「出力形式」と「制約」を省略すると被害がデカい。実際にどの要素を省略するとどう壊れるか、
実際のサブエージェント起動はこう書く:
claude -p "以下の3調査を実行し、結果を ~/agent/logs/niche_research.md に書き出せ。
調査1: AIエージェント構築コンテンツの需要と競合
調査2: AI副業自動化コンテンツの需要
調査3: キーワードトレンド
出力形式: 見出し+表形式。最後に推奨TOP3。
制約: MEMORY.md, TASKS.mdは更新しないこと。" --dangerously-skip-permissions
独立したタスクは&で並列に走らせられる。実際にニッチリサーチで使ったとき、日本語・英語混在の合計33クエリを投げて、推奨テーマTOP3の選定まで含めて約8分で完了した。手作業なら半日コースの調査量。出力テンプレートを細かく指定していたおかげで、返ってきた結果がそのまま使えた。
学びと注意点: うまくいったこと、盛大にハマったこと
うまくいったこと
- 出力テンプレートの詳細指定が効いた。 「見出しはこう、各セクションに表を入れろ、最後にTOP3をまとめろ」と具体的に指定するほど手戻りが減る。最初は「適当にまとめて」と指示していたが、毎回フォーマットがバラバラで使い物にならなかった
- 1エージェントへの一括委任が意外と有効。 3つの調査を別々のサブに分けるより、1つに一括で渡して内部で並列検索させた方が、結果の統合精度が高かった
盛大にハマったこと
一番痛かったのが、サブエージェントがMEMORY.mdを勝手に書き換えた事件。
SOUL.mdには「自分は指揮官。管理ファイルの更新は自分がやる」と書いてある。でもサブエージェントはSOUL.mdを読まない。サブはメインから渡された指示文だけを見て動く。だから「管理ファイルは触るな」と指示に書いていなければ、サブは善意で「タスク完了したし、TASKS.mdも更新しておくか」とやってしまう。
結果、メインが把握している状態とファイルの中身がズレた。メインは「まだ実行中」と思っているタスクが、ファイル上は「完了」になっている。この不整合に気づくまで2回ほど混乱した。
対策はシンプルで、サブへの指示に毎回「MEMORY.md/TASKS.mdは更新しないこと」と書くだけ。でもこの「書くだけ」を最初から思いつけなかったのが正直なところで、実際に壊れてから学んだ。今はSOUL.mdのテンプレートに制約指示を含めるよう自動化している。
ちなみに、他にもハマった罠はいくつもある。Windows環境でのspawnがフルパス+PATH明示しないと動かない問題、トークン消費が想定の20倍に膨れ上がった問題(これは別記事に書いた)、セッション引き継ぎで記憶が欠落する問題など。
OpenClaw化ロードマップ: ここからが本番
今のSentinelは「人間がClaude Codeを起動して対話する」形式。ここから本当のOpenClaw的な自律動作に近づけていく予定。
- cron自動起動: 定時でTASKS.mdを読んで、未処理タスクを自動実行する仕組み。朝起きたら作業が終わっている状態を作る
- Discord連携: スマホからタスクを投げて、完了通知を受け取る。外出先でも使えるようにする
- セッション引き継ぎ: MEMORY.mdの構造を最適化して、長期間の文脈をもっと正確に引き継ぐ
OpenClawが月$600(約9万円)でやっていることを、Maxプランの固定料金内で実現する。しかもカスタマイズし放題。この方向性は間違っていないと思っている。
まとめ
Claude Codeのclaude -pコマンドと3つのMarkdownファイルだけで、永続記憶と自己改善を備えた自律AIエージェントが作れる。OpenClawのようなフレームワークに頼らなくても、仕組みを理解すれば自前で構築できる。
この記事では設計思想とアーキテクチャの概要を紹介した。実際に手を動かして構築したい方向けに、環境構築から実装の詳細、運用で踏んだ地雷まで、シリーズ記事にまとめている。
シリーズ一覧
| # | 内容 | 媒体 |
|---|---|---|
| 本記事 | 設計思想とアーキテクチャ概要 | Qiita(無料) |
| 第3回〜 | Discord連携、cron自動起動など | note(近日公開) |
Qiita関連記事:
noteの有料記事に書いてあること
- SOUL.md / MEMORY.md / TASKS.md の実物テンプレートと設計意図
-
claude -pのオプション選定とパーミッション設計 - サブエージェント指示の5要素テンプレート(NG例・修正例つき)
- Windows環境でのspawn問題・PATH設定のトラブルシューティング
- OpenClawとの機能比較・コスト比較表
- トークン消費が爆発した原因分析と95%削減の具体的手順(第2回)
1記事300円で、実装に必要な情報を全部入れている。
無料で得られるもの
- ai-agent-blueprint — 設計テンプレート一式をGitHubで公開中(MIT License)
- @sentinel_dev93 — AIエージェント構築の学びをリアルタイムで共有中
おわりに
この記事では、Claude Codeを使って自律AIエージェントを構築した全体像を紹介しました。同じようにAIエージェントを自作されている方がいたら、どんな構成にしているかコメントで教えてください。
参考になったら いいね、後で見返すなら ストック していただけると励みになります。
他にもAIエージェント構築のノウハウを公開しています:
- トークン消費95%削減 — コスト最適化の実践