🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
Quick Links
ニュース一覧 🏷️タグから探す
🧠Claude 🤖Agent 💬LLM 🔌MCP 🛠️Tool
Subscribe
📡 RSSフィード
ホーム explain 2026.04.04

Claude Codeのソースコード漏洩から生まれた軽量マルチエージェントOSS「open-multi-agent」

JackChen-me/open-multi-agent
🤖
// なぜ使えるか
Claude Codeのソースコード漏洩をきっかけに、元PMがマルチエージェント調整システムを独自実装。モデル非依存・インプロセス実行でサーバーレス環境にも対応。

要点まとめ

背景と文脈

2026年3月31日、AI開発コミュニティを震撼させる出来事が起きた。AnthropicのAIコーディングツール「Claude Code」のソースコード約51万2000行が、npm公開パッケージのソースマップファイルとして誤って公開された。.npmignoreの設定ミスにより59.8MBのデバッグ用.mapファイルが含まれていた。

この発見者はSolayer LabsのインターンChaofan Shouで、X(旧Twitter)で拡散した後、数時間以内にGitHubに複数のミラーリポジトリが立ち上がり、最速でGitHub史上最速で5万スターを超えるリポジトリが誕生したと報告されている。

このソースコードには、CLIツールとしてのClaude Codeが内部でどのようにマルチエージェントを調整しているかを示すcoordinatorMode.tsが含まれていた。コーディネーターが複数のワーカーエージェントを管理し、タスクの依存関係を解決しながら並列実行する仕組みが、詳細に記されていた。

このアーキテクチャを分析したのが、元AnthropicプロダクトマネージャーのJack Chen氏だ。彼はAnthropicのコードを直接利用するのではなく、その背後にある設計パターンを独自に解釈・再実装し、open-multi-agentとして公開した。Claude Code Auto Modeが多くの開発者の注目を集めていた中、より低レベルなエージェント調整の仕組みが初めてOSS化されたことになる。

詳しく見ていく

open-multi-agentの基本コンセプト

open-multi-agentの設計思想は「ゴールを渡せばフレームワークが残りをやる」という一点に集約される。公式claude-agent-sdkはCLIプロセスを起動してエージェントを動かすため、サーバーレス環境での利用が難しい。一方、open-multi-agentはNode.jsプロセス内で全処理を完結させる。

# インストール(npmパッケージとして提供)
npm install @jackchen_me/open-multi-agent

# 必要な環境変数
export ANTHROPIC_API_KEY="sk-ant-..."     # Claudeを使う場合
export OPENAI_API_KEY="sk-..."            # OpenAIモデルを使う場合(任意)
export GITHUB_TOKEN="ghp_..."            # GitHub Copilotを使う場合(任意)

基本的な使い方:runTeam()

最も直感的な使い方がrunTeam()だ。チームを定義してゴールを渡すだけで、タスク分解から実行まで自動化される。

import { OpenMultiAgent } from '@jackchen_me/open-multi-agent';

const orchestrator = new OpenMultiAgent();

// チームメンバーを定義
const team = orchestrator.createTeam([
  {
    name: 'architect',
    model: 'claude-sonnet-4-6',
    systemPrompt: 'You design clean API contracts and system architecture.',
    tools: ['file_write'],
  },
  {
    name: 'developer',
    model: 'claude-sonnet-4-6',
    systemPrompt: 'You implement designs with clean, testable code.',
    tools: ['bash', 'file_read', 'file_write', 'file_edit'],
  },
  {
    name: 'reviewer',
    model: 'gpt-4o',  // モデルを混在させることも可能
    systemPrompt: 'You review code for quality and security.',
    tools: ['file_read', 'grep'],
  },
]);

// ゴールを指定して実行(タスク分解は自動)
const result = await orchestrator.runTeam(
  team,
  'Create a REST API for a todo list with CRUD operations, tests, and OpenAPI docs'
);

console.log(result.output);
console.log(`Completed in ${result.duration}ms`);

このコードを実行すると、内部のコーディネーターエージェントがゴールを複数のタスクに分解し、適切なエージェントに割り当て、依存関係を考慮しながら順次・並列で実行する。

明示的なパイプライン:runTasks()

より細かくタスク間の依存関係を制御したい場合はrunTasks()を使う。

import { OpenMultiAgent, Task } from '@jackchen_me/open-multi-agent';

const orchestrator = new OpenMultiAgent();
const team = orchestrator.createTeam([/* エージェント定義 */]);

// タスクをDAGとして明示的に定義
const tasks: Task[] = [
  {
    id: 'fetch_requirements',
    agent: 'architect',
    prompt: 'Analyze the requirements from requirements.md',
    // 依存なし → 最初に実行
  },
  {
    id: 'design_api',
    agent: 'architect',
    prompt: 'Design the API contract based on requirements',
    dependsOn: ['fetch_requirements'],  // fetch_requirementsの後に実行
  },
  {
    id: 'implement_endpoints',
    agent: 'developer',
    prompt: 'Implement the API endpoints from the design',
    dependsOn: ['design_api'],
  },
  {
    id: 'write_tests',
    agent: 'developer',
    prompt: 'Write integration tests for the endpoints',
    dependsOn: ['implement_endpoints'],
  },
  {
    id: 'security_review',
    agent: 'reviewer',
    prompt: 'Review the implementation for security vulnerabilities',
    dependsOn: ['implement_endpoints'],  // implement_endpointsの後、testsと並列実行
  },
  {
    id: 'final_review',
    agent: 'reviewer',
    prompt: 'Final code review incorporating all feedback',
    dependsOn: ['write_tests', 'security_review'],  // 両方完了後に実行
  },
];

const result = await orchestrator.runTasks(team, tasks);

write_testssecurity_reviewはともにimplement_endpointsに依存しているが、互いに依存していないため自動的に並列実行される。このDAGの最適化がopen-multi-agentの中核だ。

構造化出力とZodスキーマ

エージェントの出力を型安全なJSONとして受け取ることもできる。Zodスキーマで検証済みの出力が保証される。

import { z } from 'zod';
import { OpenMultiAgent } from '@jackchen_me/open-multi-agent';

const AnalysisSchema = z.object({
  summary: z.string(),
  issues: z.array(z.object({
    severity: z.enum(['critical', 'high', 'medium', 'low']),
    description: z.string(),
    file: z.string().optional(),
  })),
  recommendations: z.array(z.string()),
  score: z.number().min(0).max(100),
});

const orchestrator = new OpenMultiAgent();

const result = await orchestrator.runAgent({
  name: 'security_analyzer',
  model: 'claude-sonnet-4-6',
  systemPrompt: 'You are a security expert analyzing codebases.',
  tools: ['file_read', 'grep'],
  outputSchema: AnalysisSchema,  // Zodスキーマを指定
}, 'Analyze the security of the current codebase');

// result.outputはAnalysisSchema型として型安全に使える
console.log(`Security score: ${result.output.score}/100`);
result.output.issues
  .filter(i => i.severity === 'critical')
  .forEach(i => console.error(`CRITICAL: ${i.description}`));

トレーシングとデバッグ

全LLMコールとツール実行を追跡するトレーシング機能が標準搭載されている。

const orchestrator = new OpenMultiAgent({
  onTrace: (event) => {
    // LLMコール、ツール実行、エラーをリアルタイム追跡
    if (event.type === 'llm_call') {
      console.log(`[${event.agent}] ${event.model} - ${event.tokens} tokens`);
    } else if (event.type === 'tool_use') {
      console.log(`[${event.agent}] Using tool: ${event.tool}`);
    } else if (event.type === 'task_complete') {
      console.log(`Task "${event.taskId}" completed in ${event.duration}ms`);
    }
  },
});

この機能により、どのエージェントがどのモデルを何トークン使ったかが可視化できる。コスト管理やパフォーマンス最適化に直接活用できる。

ローカルモデルとの統合

Ollamaなどのローカルモデルを組み合わせることで、API費用を抑えながら機密データを処理できる。

// 費用のかかるタスクはクラウドAPIに、センシティブな処理はローカルに
const team = orchestrator.createTeam([
  {
    name: 'planner',
    model: 'claude-sonnet-4-6',  // 高精度な計画立案
    systemPrompt: 'You decompose complex goals into sub-tasks.',
    tools: [],
  },
  {
    name: 'local_processor',
    model: 'ollama/llama3.2',    // ローカルモデルで機密データ処理
    systemPrompt: 'You process sensitive internal data.',
    tools: ['file_read', 'file_write'],
    baseURL: 'http://localhost:11434/v1',  // Ollama endpoint
  },
]);

マルチエージェントアーキテクチャと仕組み

open-multi-agentの全体的なアーキテクチャは以下の通りだ。ゴール入力からタスク実行・出力統合まで、5つのコアコンポーネントが連携する。

flowchart LR
    A["ユーザー<br/>ゴール入力"] --> B["CoordinatorAgent<br/>ゴール→タスクDAG変換"]
    B --> C["TaskQueue<br/>依存関係解析<br/>トポロジカルソート"]
    C --> D["AgentPool<br/>並列実行制御<br/>セマフォ管理"]
    D --> E1["Agent A<br/>bash/file_write"]
    D --> E2["Agent B<br/>file_read/grep"]
    D --> E3["Agent C<br/>bash/file_edit"]
    E1 --> F["MessageBus<br/>エージェント間<br/>非同期通信"]
    E2 --> F
    E3 --> F
    F --> G["SharedMemory<br/>コンテキスト共有"]
    G --> C
    G --> H["結果集約<br/>LLMAdapter出力"]
    H --> I["構造化出力<br/>Zodスキーマ検証済み"]

コアコンポーネントの役割:

コンポーネント 役割 実装の特徴
CoordinatorAgent ゴール→タスクDAG変換 LLMにタスク分解を委譲(プロンプトがロジック)
TaskQueue 依存関係解析・実行順序決定 トポロジカルソートで最適化、エラーカスケード対応
AgentPool 並列実行制御 セマフォによる同時実行数制限、タイムアウト管理
MessageBus エージェント間非同期通信 イベント駆動、疎結合設計
LLMAdapter 複数モデルへの統一インターフェース Anthropic/OpenAI/GitHub Copilot対応

特筆すべきは、コーディネーターの「タスク分解ロジック自体がLLMへのプロンプト」という設計だ。Claude Codeのリーク解析ブログ(alex000kim.com)でも指摘されていたように、「orchestration algorithm is a prompt, not code」という原則を採用している。ハードコードされたルールベースではなく、LLMの推論能力でタスク分解を行う柔軟なアーキテクチャだ。

他の選択肢との比較

現在マルチエージェントシステム構築に使える主要な選択肢を比較する。

項目 open-multi-agent Claude Agent SDK LangGraph Microsoft AutoGen
モデル依存性 なし Claudeのみ 任意 任意
実行方式 インプロセス CLIプロセス起動 グラフベース マルチプロセス
言語 TypeScript TypeScript/Python Python Python
サーバーレス対応 ✅ 完全対応 ❌ 非対応 ✅ 対応 ⚠️ 部分対応
DAG自動解決 ✅ 自動 ❌ 手動 ✅ 自動 ✅ 自動
メッセージバス ✅ 標準搭載 ❌ なし ⚠️ 限定的 ✅ あり
構造化出力 ✅ Zod対応 ❌ なし ⚠️ 別途実装 ⚠️ 別途実装
ローカルモデル ✅ Ollama対応 ❌ なし ✅ 対応 ✅ 対応
依存関係数 3件 多数 多数 多数
ライセンス MIT Anthropic独自 MIT MIT

open-multi-agentが特に優位なのは「TypeScript + サーバーレス + 少ない依存関係」の組み合わせだ。LangGraphはPythonエコシステムが前提で、Node.js環境では使いにくい。Claude Agent SDKはCLIプロセス起動のためサーバーレスに向かない。

OpenHandsのようなフルスタックのAIコーディングエージェントとは競合せず、より低レイヤーの「マルチエージェント協調ミドルウェア」として位置づけられる。自分のアプリケーションに組み込むライブラリとしての利用が主なユースケースだ。

AIエージェント開発への実務的影響

open-multi-agentが実務にもたらす変化は4点に整理できる。

① ベンダーロックイン回避 Anthropic、OpenAI、Googleの間でのモデル切り替えがフレームワークレベルで可能になる。AIモデルの価格・性能変化に応じた戦略的な選択が実現する。チームごとに異なるモデルを割り当てることもできるため、タスクの特性に合わせた最適化も容易だ。

② サーバーレス環境への展開 AWS Lambda、Google Cloud Functions、Vercel Edge Functionsでのマルチエージェント実行が可能になる。これまでは仮想マシンやコンテナが必要だったワークロードを、サーバーレスに移行できる可能性がある。特にバースト的な負荷変動(大量ドキュメント処理、夜間バッチなど)での費用対効果が高い。

③ CI/CDパイプラインへの統合 LangChainベースのエージェントをCI/CDに組み込む際、プロセス分離の問題で苦労した経験を持つチームは多い。open-multi-agentのインプロセス実行モデルはGitHub ActionsやJenkinsへの統合が素直に書ける。テスト自動化、コードレビュー自動化、ドキュメント生成の自動化が現実的な選択肢になる。

④ トレーシングによるコスト管理 onTraceコールバックで全LLMコールのトークン数・実行時間を記録できる。どのエージェントがコストの大部分を占めているかが可視化でき、モデルの格下げ(高精度モデル→軽量モデル)や並列化の効果測定が定量的にできる。

一方、注意点もある。open-multi-agentはリリースから1ヶ月未満の新しいOSSであり、プロダクション実績はまだ積み上がっていない。3.1kスター(2026年4月時点)の注目度はあるが、エンタープライズ環境での耐障害性テストや長期的なメンテナンスについては未知数だ。既存のClaude Code Auto Modeと組み合わせた場合の相互作用も検証が必要だ。

まとめ

Claude Codeのソースコード漏洩という想定外の出来事が、マルチエージェントシステムの設計パターンをOSSコミュニティに開示するきっかけとなった。open-multi-agentはその知見を独自に再実装したTypeScriptフレームワークで、モデル非依存・インプロセス実行・DAGスケジューラという特性が、既存選択肢の隙間を埋める。

特にTypeScriptエコシステムでサーバーレスやCI/CDにマルチエージェントを組み込みたいチームには、現時点で最も実用的な選択肢の一つだ。依存3件・ソース27ファイルの軽量設計は、フレームワークをブラックボックスとして扱わず、必要に応じてソースを読んで理解・改変できる透明性も魅力だ。

今後、エージェント系ツールの普及に伴い、このようなミドルウェア層のOSSが増えていくことが予想される。open-multi-agentの発展とコミュニティの反応は、マルチエージェントアーキテクチャの標準化に向けた重要な指標になるだろう。

参照ソース

広告
🔌
MCP対応ツール特集
Claude Codeと連携できるMCPサーバーの日本語解説まとめ
GitHub で見る X 🧵 Threads Facebook LINE B! はてブ
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
記事の信頼性について
AI Heartland エディトリアルポリシーに基づき作成
複数ソース照合
公式情報・報道等を突き合わせて確認
ファクトチェック済
ソースURLの内容を検証
参照ソース明記
記事末尾に引用元を掲載
Next Read →
🤖 AWS DevOps Agent正式リリース——CI/CDパイプライン生成からインシデント自動解決まで
関連記事
🧠 Claude Codeの記憶管理を完全解説 — 3層圧縮とpreserved-tail relinkingの仕組み
Claude Codeの「忘れる」問題の正体が判明。MicroCompact・Session Memory Compact・Legacy Compactの3層圧縮パイプラインと、preserved-tail relinkingの全仕組みを図解付きで解説。
2026.04.02
🔍 Claude Codeセキュリティ事件を切り分ける:ソース漏洩とaxios攻撃の違いと対処法
3月31日にClaude Codeで起きたソース漏洩とaxiosマルウェア。感染チェックコマンド・対策コードを交えて、2つの別事件の実態と具体的な対応手順を解説。
2026.04.01
⚠️ ドラマトライアングルとは?YC会長Garry Tanが警告する組織崩壊パターンと具体的対策を徹底解説
YC会長Garry Tanが全経営者に警告するドラマトライアングル。直接対話を避け第三者を巻き込む構造が組織の信頼と心理的安全性を蝕む仕組みと、Stephen Karpmanの原典に基づく具体的な防止策を解説。スタートアップ経営者は今すぐ確認しよう。
2026.04.02
🤖 Claude Codeで40体のAIエージェントを構築→1ヶ月で全廃止した実験の教訓
Claude Code Maxプランで40体のAIエージェントを役割分担・階層化して1ヶ月運用した実験記録。context rot、compaction崩壊、指示の限界という3つの構造的問題と、そこから導かれた設計原則を解説。
2026.03.31
Popular
#1 POPULAR
🔓 Claude Codeのソースコード流出、npmソースマップに51万行が丸見えだった件
Anthropic Claude Codeのnpmパッケージにソースマップが含まれ、1,902ファイル・51万行超のTypeScriptソースが公開状態に。未公開プロジェクト「KAIROS」や107個のフィーチャーフラグなど、内部コードの全貌を解説する。
#2 POPULAR
🚨 【速報】JavaScript主流ライブラリAxios、NPM供給チェーン攻撃でRAT配布
JavaScriptの週間1億DL HTTPクライアント「Axios」がNPM供給チェーン攻撃の被害に。[email protected]と0.30.4に悪意あるパッケージplain-crypto-jsが注入され、クロスプラットフォーム対応RATが配布。証拠自動削除機能を備えた高度な攻撃。
#3 POPULAR
⚠️ Anthropic、Claude Codeで予想外の高速クォータ枯渇認める。キャッシュバグで料金10〜20倍
Claude Codeでプロンプトキャッシュを破壊する2つのバグが発見され、API利用料が10〜20倍に跳ね上がる問題が発生。Anthropicは「チームの最優先事項」と認める。Pro/Maxユーザーから月間の大半で使用不可との報告多数。
#4 POPULAR
🔍 Claude Codeセキュリティ事件を切り分ける:ソース漏洩とaxios攻撃の違いと対処法
3月31日にClaude Codeで起きたソース漏洩とaxiosマルウェア。感染チェックコマンド・対策コードを交えて、2つの別事件の実態と具体的な対応手順を解説。
#5 POPULAR
🚀 ソフトウェア開発者ではない人が400ドルから年7M達成。AI時代の先発者優位性
AI技術を活用して短期間で大規模な収益を生み出した事例から、開発経験がなくても可能な起業の実態と、AI知識の先発者優位性について解説する。
← Nothing Design Skill:AIがデザイン知識を習得するスキルセット AWS DevOps Agent正式リリース——CI/CDパイプライン生成からインシデント自動解決まで →