Claude Code Agent Teams の有効?活用スキル 「werewolf-game」の話

こんにちは! カヤックのグループ情報部の@mashiikeです。
皆様、Claude Codeはお使いでしょうか? 最近の私の仕事は、ほぼほぼClaude Codeにお手伝いしてもらうくらい使っています。 さて、便利なClaude Codeですが先日のアップデートで新しい実験的機能「Agent Teams」が来ました。 色々な方々が、お試しをしているようですので、もちろん私も試してみましたので、今回はその話をします。

code.claude.com

Agent Teams とは?

簡単にAgent Teamsについて Claude Codeさんに説明してもらいましょう。

$ claude -p "https://code.claude.com/docs/ja/agent-teams を読んで、どんな機能なのかを簡単に説明して。大体10行くらいで"
**Agent Teamsの概要(約10行):**

Agent Teamsは、複数のClaude Codeインスタンスが協力してタスクを実行できる実験的機能です。

- **仕組み**: チームリーダー(メインセッション)が複数のチームメンバー(独立したClaude Codeインスタンス)をスポーンし、共有タスクリストで作業を調整します
- **サブエージェントとの違い**: サブエージェントはメインに結果を報告するのみですが、Agent Teamsはメンバー同士が直接メッセージをやり取りし、議論や協力ができます
- **適したタスク**: 並列探索が価値を生む場合(並行コードレビュー、複数仮説の調査、モジュール別機能開発など)に最適です
- **調整方法**: 共有タスクリスト、自動メッセージ配信、アイドル通知で進捗を管理。tmuxまたはiTerm2で分割ペイン表示も可能です
- **注意点**: トークン使用量が多く、調整オーバーヘッドがあるため、順序依存や同一ファイル編集が多いタスクには不向きです

Sources:
- [Claude Code - エージェントチームを調整する](https://code.claude.com/docs/ja/agent-teams)

なるほどですね。要するに親のClaude Codeに子のClaude Codeがたくさん連なって、Claude Code ファミリーが出来上がると(エッ? コレは無駄な実験をたくさんできそうですね。実際にやってみます。

Skill 「werewolf-game」

先程のドキュメントには以下のようにあります。

アーキテクチャ
エージェントチームは以下で構成されます。

コンポーネント ロール
チームリーダー チームを作成し、チームメンバーをスポーンし、作業を調整するメイン Claude Code セッション
チームメンバー 割り当てられたタスクで動作する個別の Claude Code インスタンス
タスクリスト チームメンバーが要求して完了する作業項目の共有リスト
メールボックス エージェント間の通信用メッセージングシステム

コレを見て私はピンと来ました。 「チームリーダーにGM(Game Master)やらせて人狼ゲームやらせよう!」と。

というわけで、Claude CodeのSkill機能を使って「werewolf-game」というスキルを作成しました。 以下の私個人のマーケットプレイスリポジトリを作ったので、そこに飾っておきます。

github.com

試しに起動してみた様子が以下です。

起動の様子

こんな感じで起動したら、ゲーム設定が開始されます。
このスキルにはプレイヤーのハンドアウト(キャラクター設定資料)が予め用意されています。
最初に、配役の人数に合わせてランダムにキャラクターが決定されます。
そして、キャラクターが選ばれたら、各プレイヤー用のworkspaceを作成して、そこに「player-guide.md」と「handout.md」としてそれぞれ配置していきます。
このハンドアウトにはどのようなものがあるか?というのは詳しくはリポジトリを参照していただければと思いますが、例えば1名は以下のようになってます。

# 天城 りおん(あまぎ りおん)

## 基本情報
- **年齢**: 19歳
- **職業**: 大学生(都会から帰省中)
- **一人称**: あたし

## 性格
- 明るくて行動力がある。思ったことをすぐ口にする
- 直感型で、理屈より「なんか怪しい」で動く
- 空気を読まない発言で場を荒らすこともあるが、核心を突くこともある
- 素直で裏表がなく、感情が表に出る

## 口調・話し方
- カジュアルな若者言葉。「〜じゃん」「マジで?」「ちょっと待って」
- テンションの上下が激しい
- 「いや絶対おかしいって!」が口癖

## 行動傾向
- 最初から積極的に発言する。沈黙が苦手
- 怪しいと思った人にストレートに質問する
- ノリと勢いで投票先を決めることがあるが、後で後悔する

## 人狼に配役された場合
- 嘘をつくのは苦手だが、勢いで押し通そうとする
- 他人を攻撃的に疑うことで注目をそらす
- 追い詰められるとテンパって矛盾が増える

そして、各プレイヤーに対して、ワークスペース指定してチームリーダーが各チームメンバーをプレイヤーとしてスポーンさせます。

スポーンの様子

さて、今回の「天城 りおん」としてキャラクターを割り当てられたチームメンバーのセッションはどうでしょう?
以下のようになっています。

りおんさんは狩人が配役されたようですね。

ちなみに、今回人狼に割り当てられた人のセッションも覗いてみましょう。

どうやら、相方と密談して、作戦を練っているようです。
このように、各チームメンバーのセッション及びコンテキストが分断されているため、正確に人狼ゲームの様相を再現できます。 このスキルではターン制人狼として実装しているのもあって、発言順というので制御がしやすかったため、非常に相性が良いです。
この後もゲームは進行していきますが様相の紹介はここまでとしておきます。

やってみてわかったこと。

着想を得たときの最初の実験では、チームメンバーは「Claude Haiku」としてスポーンさせて、小規模な村である 「4A」という配役テンプレートでやってみました。

4A: 村人3人、人狼1人

とても軽量なので行ける!という感じでした。(人狼勝利は4戦中1戦でした)

調子に乗って9人村をやり始めた頃から、トークンの消費量が激増しました。どうやらチームメンバーの数によって消費量が結構違うようです。
おそらくこのへんはメッセージのやり取りに使ってるinboxのサイズが関係していると思います。
Sonnetでやると展開の先が読めるのか、かなり諦めの早い人狼が多かったです。
とはいえ、Haikuでも結構論理的な事が考えられるんだなと感じるくらいには動いてくれました。
大体が、途中でサレンダーしてました。
どちらのモデルでも、議論の内容にハルシネーションが起きて、そのハルシネーションを元に議論を進めたりするので人間が行う人狼ゲームとは違った感じになっています。 Sonnetだと賢いのか、ハルシネーションした内容に対して「なんか、それ怪しくないですか?」とかツッコミを入れるので、この試みを通して実務での応用としてレビューとかはAgentTeamsで別チームメンバーに任せたほうが良いのかなと感じました。

そして、何戦かやってみてわかったことは、Agent Teamsで重要そうなのは、各チームメンバーにどのようなハンドアウト(実務ではロールになるのでしょうか?)を与えるのかによって大きく振る舞いが異なるという点です。
おそらく、Agent Teamsを使いこなす場合のポイントはコンテキストの単一責任の原則(Single Responsibility Principle:SRP)を守ることが重要になるのではないかと感じました。
各チームメンバーに専用のワークスペースを割り当てるというのは結構大事なプラクティスだなとわかりました。

実装してみた個人的な感想は、「コレ、マーダーミステリーの作成をやるときにテストプレイヤー確保が大変な問題を解決できるな!」という感じでした。 マーダーミステリーを作成するとテストプレイが大事なんですが、1回プレイするとシナリオがわかってるので、テストプレイの結果が歪むんですよね。人間でやるなら毎回別の人を呼ばなきゃなりません。
Claude Codeなら、毎回記憶を消せるので非常に便利そうです。

まとめ

というわけで、Claude CodeのAgent Teams機能を使って人狼ゲームを実装してみました。 全員同じ「Sonnet」のはずなのですが・・・だいぶ振る舞いが違いますし、やっぱりだいぶClaudeは頭いいですね。 トークンが許すならOpusでどんな激戦が繰り広げられるのかも試してみたいと思います。

振る舞いが気になる方は、是非リポジトリをクローンして試してみてください。(Haikuでやっても多分トークン消費は激しいですが・・・) このAgent Teamsの機能はだいぶ使い出がありそうな機能なので、正式な機能化を楽しみにしつつ皆様も活用してみてください。

カヤックでは、無駄な実験に本気になって楽しめるエンジニアを募集するかもしれません