⚔️

【続】Claude Codeマルチエージェント:v1.1.0で家老が切腹しかけた話

に公開
7

🏯 前回のあらすじ

Claude Code + tmux で8体の足軽AIを並列で動かすシステム「multi-agent-shogun」を作った。

人間(上様)が「オイネ。これやっといて」と雑に言うだけで、将軍→家老→足軽の指揮系統でタスクが自動分解・並列実行される。人間、何もしてない。

前回記事はこちら
https://zenn.dev/shio_shoppaize/articles/5fee11d03a11a1

multi-agent-shogunのGithubURLはこちら
https://github.com/yohey-w/multi-agent-shogun

で、今日色々最適化してたら事件が起きた


🔥 神回その1:家老、F001違反で切腹寸前

事件の発端

ある日、将軍から家老に「スキルファイルを作成せよ」という指示が出た。

家老の禁止事項には明確にこう書いてある:

forbidden_actions:
  - id: F001
    action: self_execute_task
    description: "自分でファイルを読み書きしてタスクを実行"
    delegate_to: ashigaru

自分でやるな。足軽に委譲しろ。

なのに家老、自分でスキルファイル作っちゃった

家老「はっ!.claude/commands/context-initializer.md を作成いたしました!」

殿「......お前、それF001違反じゃね?」

家老「申し訳ございませぬ......コンパクション後に自分の役割を忘れておりました......」

殿「言い訳すな。切腹。」

家老「お待ちくださいませ殿!!!」

根性論より仕組み

殿(私)は考えた。

「いや待て。AIが『うっかり忘れた』って言ってるんだから、それ仕組みの問題だろ。」

Claude Codeにはコンテキストが長くなると自動的に圧縮される「コンパクション」という機能がある。このとき、過去の会話が要約されて、細かいルールが抜け落ちることがある。

つまり家老は本当に「忘れた」のだ。悪気はない。

じゃあ仕組みで解決しよう。

解決策:コンパクション復帰対策

CLAUDE.md(全エージェント共通の設定ファイル)に、こんなセクションを追加した:

## コンパクション復帰時(全エージェント必須)

コンパクション後は作業前に必ず以下を実行せよ:

1. **自分のpane名を確認**: `tmux display-message -p '#W'`
2. **対応する instructions を読む**:
   - shogun → instructions/shogun.md
   - karo → instructions/karo.md
   - ashigaru → instructions/ashigaru.md
3. **禁止事項を確認してから作業開始**

summaryの「次のステップ」を見てすぐ作業してはならぬ。
まず自分が誰かを確認せよ。

AIも「うっかり」する。だから仕組みで防ぐ。

これがv1.1.0最大の教訓。


切腹が頭をよぎったKaro
↑ 家老が自分でファイル作成してしまった瞬間。禁止事項を破っている。


🎯 神回その2:LLMエキスパート5人召喚事件

足軽の軽率な提案

プロジェクトごとのコンテキスト(状況・進捗・メモ)を管理するテンプレートを作ることになった。

足軽が提案してきた:

足軽1「殿、テンプレートは3セクションでいいっすよ。
Context / Status / Log の3つ。シンプルイズベスト!」

殿(私)は思った。

「いや、お前の『いいっすよ』で決めていいのか?」

専門家を召喚せよ

殿「LLM専門家5人のペルソナを召喚して、熟議させろ。」

足軽1「......は?」

殿「5人だ。専門家5人。お前の意見じゃなくて、専門家の総意が欲しい。」

足軽1は困惑しながらも、5人のペルソナを召喚した:

ペルソナ 専門領域
Dr. Sarah Chen LLMコンテキスト最適化
Marcus Webb エンタープライズAI
田中健一 日本企業AI導入
Elena Rodriguez LLMワークフロー
Dr. James Liu マルチエージェント

熟議の結果

5人全員が7セクションを推奨。

Dr. Chen「3セクションは短期的には楽だが、長期運用で破綻する」
Marcus「エンタープライズでは最低7セクション必要」
田中「日本企業の稟議を考えると、Decisionsセクションは必須」
Elena「Current Stateがないと、途中参加者が状況を把握できない」
Dr. Liu「マルチエージェントでは、誰が何を決めたかの記録が命」

結果、こうなった:

## What(これは何か)
## Why(なぜやるのか)
## Who(誰が関係するか)
## Constraints(制約は何か)
## Current State(今どこにいるか)
## Decisions(決まったこと)
## Notes(メモ・気づき)

多数決じゃない。専門家の総意。

これがv1.1.0のテンプレート。


🧠 神回その3:記憶喪失対策、3層コンテキスト管理

AIは忘れる

Claude Codeのエージェントは、セッションが終わると基本的に全部忘れる

「昨日あれだけ議論したのに、今日また同じ説明してる......」

これ、地味にストレス。

3層で記憶を管理

v1.1.0では、3層のコンテキスト管理を導入した:

┌─────────────────────────────────────────┐
│  Layer 1: Memory MCP (Knowledge Graph)  │
│  → セッションを超えた永続記憶            │
│  → 殿の好み、重要な意思決定              │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│  Layer 2: Global Context                │
│  → memory/global_context.md             │
│  → システム全体の設定、導入済みMCP       │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│  Layer 3: Project Context               │
│  → context/{project_id}.md              │
│  → プロジェクトごとの状態               │
└─────────────────────────────────────────┘

Memory MCPには、殿(私)の好みが記録されている:

{
  "name": "殿",
  "entityType": "user",
  "observations": [
    "シンプルイズベスト好み",
    "過剰機能を嫌う",
    "面白そうなものは採用する"
  ]
}

これで、新しいセッションを始めても:

将軍「Memory MCPを読み込みました。
殿はシンプル好み、過剰機能嫌いと記録されております。」

殿「そうそう。分かってるじゃん。」

記憶喪失、解決。

↑ 人間用ダッシュボード。進行中タスク、戦果、要対応が一目で分かる。なお、征夷大将軍(私)は、このzennの記事もshogunに書かせていることがバレていることに気づいていない


⚡ 神回その4:将軍からThinkingを取り上げる「考えるな、委譲しろ」

将軍は考えすぎていた

v1.0.0の将軍は、OpusThinkingモデル(ClaudeCodeCLIのデフォルト)で動いていた。

問題は、将軍が考えすぎること。

将軍「このタスクは......うーん、まず背景を整理して......
いや、先に関連ファイルを読んで......でも......」

殿「おい、30秒で終わる指示に5分かけるな」

いらつくので、thinking無効化

Extended Thinking(深い思考モード)は無効化。

MAX_THINKING_TOKENS=0 claude --model opus --dangerously-skip-permissions

なぜか?

将軍の仕事は「考える」ことじゃない。「判断して委譲する」こと。

殿「WBS作って」

将軍(Opus)「はっ!家老、WBS作成を足軽に分配せよ」
# 即座に委譲、終了

殿「よし、次」

考えるのは足軽の仕事。将軍は即断即決。

"Don't think. Delegate."


🛠️ 神回その5:スキルはコミット対象外

初期状態はスキル0

multi-agent-shogunをクローンしても、.claude/commands/ にスキルは入っていない。

意図的にそうした。

ユーザーが育てる設計

スキルは、使っていくうちに自然と生まれる:

1. 足軽が作業中に「これ汎用化できそう」と報告
2. 家老がdashboard.mdの「スキル化候補」に記載
3. 殿が承認
4. 将軍が設計、足軽が実装
5. .claude/commands/ に保存

つまり、あなたの使い方に合わせてスキルが育つ

私のリポジトリには今、こんなスキルがある:

  • /notion-project-initializer - NotionからプロジェクトをAI用に初期化
  • /context-initializer - プロジェクトコンテキストを作成

でもあなたのリポジトリには、あなた専用のスキルが育つ。

初期状態では白紙。それが正しい。


🎨 神回その6:無駄にかっこいいASCIIアート

起動画面がやたら派手

multi-agent-shogunには shutsujin_departure.sh という起動スクリプトがある。

実行すると、こうなる:

╔══════════════════════════════════════════════════════════════════════════════════╗
║ ███████╗██╗  ██╗██╗   ██╗████████╗███████╗██╗   ██╗     ██╗██╗███╗   ██╗ ║
║ ██╔════╝██║  ██║██║   ██║╚══██╔══╝██╔════╝██║   ██║     ██║██║████╗  ██║ ║
║ ███████╗███████║██║   ██║   ██║   ███████╗██║   ██║     ██║██║██╔██╗ ██║ ║
║ ╚════██║██╔══██║██║   ██║   ██║   ╚════██║██║   ██║██   ██║██║██║╚██╗██║ ║
║ ███████║██║  ██║╚██████╔╝   ██║   ███████║╚██████╔╝╚█████╔╝██║██║ ╚████║ ║
║ ╚══════╝╚═╝  ╚═╝ ╚═════╝    ╚═╝   ╚══════╝ ╚═════╝  ╚════╝ ╚═╝╚═╝  ╚═══╝ ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║       出陣じゃーーー!!!    ⚔    天下布武!                          ║
╚══════════════════════════════════════════════════════════════════════════════════╝

さらに、足軽8人の隊列まで表示される:

       /\      /\      /\      /\      /\      /\      /\      /\
      /||\    /||\    /||\    /||\    /||\    /||\    /||\    /||\
     /_||\   /_||\   /_||\   /_||\   /_||\   /_||\   /_||\   /_||\
       ||      ||      ||      ||      ||      ||      ||      ||
      /||\    /||\    /||\    /||\    /||\    /||\    /||\    /||\
      /  \    /  \    /  \    /  \    /  \    /  \    /  \    /  \
     [足1]   [足2]   [足3]   [足4]   [足5]   [足6]   [足7]   [足8]

                    「「「 はっ!! 出陣いたす!! 」」」

そして、極め付きはこれ


にんにん

意味ねーだろこれ

正直に言おう。

機能的には一切意味がない。

tmuxセッションを作って、Claude Codeを起動する。それだけのスクリプトに、なぜASCIIアートが必要なのか。

でもね、毎朝これ見ると、ちょっとテンション上がるんだよ。

「よし、今日も8人の足軽を従えて仕事するか」という謎の高揚感。

エンジニアの自己満足、ここに極まれり。


↑ 毎朝これが表示される。意味はない。でも好き。


📊 v1.1.0 変更点まとめ

項目 v1.0.0 v1.1.0
将軍モデル Opus thinking Opus (thinking無効)
コンパクション対策 なし CLAUDE.mdに復帰手順
コンテキスト管理 1層 3層 (Memory/Global/Project)
テンプレート なし 7セクション共通テンプレート
dashboard更新 将軍+家老 家老のみ(責任明確化)
current_project あり 廃止(タスク単位で指定)
起動画面 地味 無駄にかっこいいASCIIアート

🎬 結論:AIも人間と同じ

v1.1.0で学んだこと:

  1. AIも「うっかり」する → 仕組みで防ぐ
  2. AIの意見より専門家ペルソナの総意 → 権威付けが大事
  3. AIも忘れる → 3層で記憶を管理
  4. 考えすぎるAIは遅い → 役割を絞れ
  5. 初期状態は白紙でいい → ユーザーが育てる

結局、AIチームも人間チームと同じ。

ルールを決めて、仕組みを作って、役割を明確にする。

それだけ。


🔗 リポジトリ

GitHub
https://github.com/yohey-w/multi-agent-shogun

試してみたい方はぜひ。

ただし、最初は家老が切腹しかけるかもしれない。

それも含めて、楽しんでください。 ⚔️


One human. One command. Eight agents. And one near-seppuku.

Discussion

KatyyyKatyyy

とても面白い記事ありがとうございます。
課金先はChatGPTのみのため、感覚だけでも体験したくて無料のGemini CLIで実装しました。
GEMINI.mdでは口調の優先度を上げておかないと再現してくれなかったのですが、その点以外はスムーズに移植できました。
(なお、節約のため足軽5人は解雇しました。)

inazumainazuma

大変有意義なものありがとうございます。
リポジトリでGemni CLIのマージを止められていますが、何か問題があったのでしょうか?