jpskill.com
🛠️ 開発・MCP コミュニティ

agent-fungibility

The philosophy and practical benefits of agent fungibility in multi-agent software development. Why homogeneous, interchangeable agents outperform specialized role-based systems at scale.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o agent-fungibility.zip https://jpskill.com/download/18635.zip && unzip -o agent-fungibility.zip && rm agent-fungibility.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/18635.zip -OutFile "$d\agent-fungibility.zip"; Expand-Archive "$d\agent-fungibility.zip" -DestinationPath $d -Force; ri "$d\agent-fungibility.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して agent-fungibility.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → agent-fungibility フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

エージェント代替可能性 — スケーラブルなエージェントスウォームの鍵

中核となる原則: 「代替可能性は、コンピュータシステムにおいて非常に多くの優れた特性を自動的に与えてくれます。」

あなたがボトルネックです。エージェントスウォームにとっての時計仕掛けの神になりましょう。美しく複雑な機械を設計し、それを実行させ、次のプロジェクトに移りましょう。


議論: 特化型エージェント vs. 代替可能エージェント

ソフトウェアプロジェクトに取り組むエージェントの数をスケールアップする最適な方法について、新たな議論が巻き起こっています。

アプローチ 説明
特化型ロール 明確なロール(テスターエージェント、バックエンドエージェント、コミッターエージェントなど)を割り当てる
代替可能エージェント すべてのエージェントが同一であり、あらゆるタスクを実行できる

ソフトウェア開発における答え: 代替可能エージェントの勝利です。


代替可能性が機能する理由

特化型エージェントの問題点

エージェントに特定のタスクのためのロールを割り当てる複雑な異種システムを構築する代わりに、エージェントの1つがクラッシュしたり、メモリを失ったり、あるいはコンテキストの腐敗に苦しみ、安楽死させる必要が生じた場合、それは脆く、問題を引き起こします。対処しなければならないのは次のことです。

  1. どのような種類のエージェントが死んだのかを理解する
  2. 死んだときに何をしていたのか
  3. 関連するコンテキストで機能的にそれを置き換える方法
  4. その特化型エージェントに依存していた他のエージェントはどうなるのか?

代替可能性の解決策

あらゆる種類のビーズを実行するだけの代替可能エージェントをたくさん用意する方が良いでしょう。

それらはどんな種類のエージェントでも構いません。

  • Claude Code
  • Codex
  • Gemini CLI
  • Amp
  • Cursor
  • など

しかし、それらはすべてどんな役割も担うことができ、作業しているビーズのタスクに応じて適応的に役割を引き受けることができるという点で代替可能です。


2つの大きな解放

1. BV を使用して最適な次のビーズを選択する

各エージェントは、bv --robot-triage または bv --robot-next を使用して、最も影響の大きい準備完了のビーズを見つけます。中央での割り当ては不要です。

2. すべてを計画 → ビーズに入れる

ビーズに変換する元の Markdown 計画で発生させたいことをすべて記述すると、他のすべてが「無料で」手に入り、エージェントに悪いことが起こっても堅牢になります。


堅牢性の特性

エージェントは失敗します。それらは:

  • クラッシュする
  • タブを誤って閉じてしまう
  • コンテキストが腐敗する(何をしているのかわからなくなる)
  • ループに陥る
  • 「安楽死」させて再起動する必要がある

代替可能エージェントを使用すると、そのようなことを心配する必要はありません。

エージェントが死んだ場合:

  1. 作業していたビーズは、進行中としてマークされたままになる
  2. 他のエージェントがそれを引き継ぐことができる
  3. 特別な交換ロジックは不要
  4. その特定のエージェントへの依存関係はない

スケーリングの特性

より速く動きたい場合:

  • いつでもより多くのエージェントをスピンアップするだけ
  • 各エージェントロールの数に不均衡があるかどうかを考える必要はない
  • 3つのエージェント → 10のエージェント → 20のエージェント: 単に数を増やすだけで、すべて同じことを行う

エージェントの代替可能性により、特に次の場合は、はるかに高速になり、より適切にスケールできます。

  • プロジェクトがより大きく、より複雑になる
  • 同じプロジェクトで同時に作業するエージェントの数が10を超える

類推: Fountain Codes

これが、私がファイルストレージに fountain codes (RaptorQ など) のようなものが大好きな理由です。

ファイルを非常に少ないオーバーヘッドで代替可能なブロブの無限ストリームに変え、ユーザーは任意の順序で任意のブロブをキャッチでき、新しいブロブごとにファイルの再構築に役立ちます。BitTorrent のように「最も希少なチャンク」はありません。

ソフトウェア開発において:

  • 各ビーズは「ブロブ」です
  • どのエージェントもどのビーズでも作業できます
  • ボトルネックとなる「重要なスペシャリスト」はいません
  • システムは部分的な障害に対して回復力がある

特化型ロールが意味をなす場合

エージェントの指定されたロールがより適切に機能するコンテキストがあります。例: 自動化された科学的探求 (BrennerBot など)。

それがそこで機能する理由:

  • 談話自体(異なるエージェントタイプ間のやり取り)が真実を明らかにするための中心的なメカニズムである
  • 議論の構造がポイントである

それがソフトウェアで機能しない理由:

  • ソフトウェア開発では、動作する優れたコードが欲しいだけです
  • 目標は出力であり、談話ではありません
  • 代替可能性はボトルネックと単一障害点を取り除く

時計仕掛けの神の哲学

私のエージェントツールとワークフローのほとんどは、私を方程式から取り除くことです。なぜなら、私は一人しかいませんが、エージェントの数は潜在的に無制限だからです。

これを行う方法:

  1. 計画段階ですべての入力を事前にロードする — 拡張推論を備えた GPT Pro、複数のイテレーション、すべてのフロンティアモデルからのフィードバックをブレンドする
  2. タスクの構造化をオフロードする — 完全な依存関係グラフを使用して計画をビーズに変換する
  3. 直接通信を許可する — Agent Mail を使用すると、エージェントはあなたなしで連携できます
  4. 実行させて、次に進む — 戻ってくる頃には、大量の作業が完了している

これが機能する理由

最終的にすべてが機能するのは次の理由によります。

  • 最高のモデル (GPT Pro) が最大限に活用されている
  • すべてのフロンティアモデルからのフィードバックをブレンドした多くのイテレーション
  • 最終的な仲裁者としての最高のモデル
  • 「計画空間」では、すべてがコンテキストウィンドウに簡単に収まる
  • モデルは、ピンホールを通してではなく、システム全体を一度に見ることができる

実践的な実装

代替可能なスウォームの開始

# エージェントを生成する (あらゆる種類の組み合わせ)
ntm spawn myproject --cc=3 --cod=2 --gmi=1

# すべてに同じ初期プロンプトを与える
ntm send myproject --all "$(cat initial_prompt.txt)"

初期プロンプト (すべてに共通)

まず、AGENTS dot md ファイルと README dot md ファイルをすべて注意深く読み、両方をすべて理解してください!次に、コード調査エージェントモードを使用して、プロジェクトのコード、技術アーキテクチャ、および目的を完全に理解します。次に、MCP Agent Mail に登録し、他のエージェントに自己紹介します。

必ずエージェントメールを確認し、必要に応じてメッセージに迅速に応答してください。次に、割り当てられた次のビーズを綿密に進め、タスクを体系的に処理します。

(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Agent Fungibility — The Key to Scalable Agent Swarms

Core Principle: "Fungibility bestows a LOT of really good properties automatically in a computer system."

YOU are the bottleneck. Be the clockwork deity to your agent swarms: design a beautiful and intricate machine, set it running, and then move on to the next project.


The Debate: Specialized vs. Fungible Agents

A burgeoning debate has sprung up around the optimal way to scale up the number of agents working on a software project:

Approach Description
Specialized Roles Assign distinct roles (tester agent, backend agent, committer agent, etc.)
Fungible Agents All agents are identical and can do any task

The answer for software development: Fungible agents win.


Why Fungibility Works

The Problem with Specialized Agents

Rather than setting up a complex heterogeneous system where you have assigned roles to specific tasks for agents, which is brittle and creates problems when one of the agents crashes or loses its memory or otherwise suffers from context rot and needs to be euthanized, you have to deal with:

  1. Understanding what kind of agent just died
  2. What was it doing when it died
  3. How to replace it functionally with the relevant context
  4. What happens to the other agents that were depending on that specialized agent?

The Fungibility Solution

You're better off just having a bunch of fungible agents that are all simply executing beads of any kind.

They can be any kind of agent:

  • Claude Code
  • Codex
  • Gemini CLI
  • Amp
  • Cursor
  • etc.

But they're fungible in that they can all wear any hat and adaptively assume any role depending on the bead task they're working on.


The Two Big Unlocks

1. Use BV to Choose Optimal Next Bead

Each agent uses bv --robot-triage or bv --robot-next to find the highest-impact ready bead. No central assignment needed.

2. Put Everything in the Plan → Beads

If you put everything you want to have happening in your original markdown plan that you turn into beads, you get everything else "for free" and it's robust to bad things happening to any agents.


Robustness Properties

Agents fail. They:

  • Crash
  • You accidentally close the tab
  • Context rot (lose track of what they're doing)
  • Get stuck in loops
  • Need to be "euthanized" and restarted

With fungible agents, you never have to worry about that stuff.

When an agent dies:

  1. The bead it was working on remains marked in-progress
  2. Any other agent can pick it up
  3. No special replacement logic needed
  4. No dependency on that specific agent

Scaling Properties

When you want to move faster:

  • Simply spin up more agents at any time
  • Don't need to think about whether there's an imbalance between the counts of each agent role
  • 3 agents → 10 agents → 20 agents: just add more, they all do the same thing

Agent fungibility lets you go much faster and scales better, especially as:

  • Projects get larger and more complex
  • Agent counts increase past 10 working on the same project at the same time

The Analogy: Fountain Codes

This is why I'm a huge fan of things like fountain codes (like RaptorQ) for file storage:

Turn a file into an endless stream of fungible blobs with very little overhead and the user can catch any blob in any order and each new blob helps them reconstruct the file; there's no "rarest chunk" like with BitTorrent.

In software development:

  • Each bead is a "blob"
  • Any agent can work on any bead
  • There's no "critical specialist" that becomes a bottleneck
  • The system is resilient to partial failures

When Specialized Roles DO Make Sense

There are contexts where designated roles for agents work better. Example: Automated scientific inquiry (like BrennerBot).

Why it works there:

  • The discourse itself (the back and forth between different agent types) is the core mechanism of surfacing truth
  • The debate structure IS the point

Why it doesn't work for software:

  • In software development, we just want good code that works
  • The goal is output, not discourse
  • Fungibility removes bottlenecks and single points of failure

The Clockwork Deity Philosophy

Most of my agent tooling and workflows are about removing me from the equation, because there's only one of me, but a potentially unlimited number of agents.

The way to do this:

  1. Front-load all input in planning phases — Use GPT Pro with Extended Reasoning, multiple iterations, blend feedback from all frontier models
  2. Offload task structuring — Convert plans to beads with full dependency graphs
  3. Allow direct communication — Agent Mail lets agents coordinate without you
  4. Set it running and move on — By the time you come back, huge chunks of work are done

Why This Works

It all ultimately works because:

  • The best models (GPT Pro) are used to their fullest
  • Many iterations with blending feedback from all frontier models
  • The very best model as the final arbiter
  • In "plan space" it all fits easily in context windows
  • Models can see the entire system at once instead of through a pinhole

Practical Implementation

Starting a Fungible Swarm

# Spawn agents (any mix of types)
ntm spawn myproject --cc=3 --cod=2 --gmi=1

# Give them all the SAME initial prompt
ntm send myproject --all "$(cat initial_prompt.txt)"

The Initial Prompt (Same for All)

First read ALL of the AGENTS dot md file and README dot md file super carefully and understand ALL of both! Then use your code investigation agent mode to fully understand the code, and technical architecture and purpose of the project. Then register with MCP Agent Mail and introduce yourself to the other agents.

Be sure to check your agent mail and to promptly respond if needed to any messages; then proceed meticulously with your next assigned beads, working on the tasks systematically and meticulously and tracking your progress via beads and agent mail messages.

Don't get stuck in "communication purgatory" where nothing is getting done; be proactive about starting tasks that need to be done, but inform your fellow agents via messages when you do so and mark beads appropriately.

When you're not sure what to do next, use the bv tool mentioned in AGENTS dot md to prioritize the best beads to work on next; pick the next one that you can usefully work on and get started. Make sure to acknowledge all communication requests from other agents and that you are aware of all active agents and their names.  Use ultrathink.

When an Agent Fails

  1. Don't panic
  2. Start a new session in its place
  3. Give it the same initial prompt
  4. It will:
    • Read AGENTS.md
    • Check bead status via bv
    • See what's in-progress/stuck
    • Either resume or pick a new bead

No special logic. No role assignment. Just fungibility.


Summary

Property Specialized Agents Fungible Agents
Failure handling Complex Simple
Scaling Requires role balancing Just add more
Replacement Need matching specialist Any agent works
Single point of failure Yes (each role) No
Coordination overhead High Low (via beads + mail)
Human involvement Ongoing Front-loaded in planning

The bottom line: Agent fungibility lets you build the machine once, set it running, and move on. The swarm handles the rest.