はじめに
oh-my-mermaid(omm)は、Claude Code や Codex などの AI コーディングツールにスキルを登録し、リポジトリを解析させて Mermaid の構成図と説明を .omm/ フォルダに残す CLI です。
Anthropic と OpenAI の公式リポジトリ5つを、同じ条件で omm+Codex CLI に解析させ、できた図を並べてみました。
結論
- 5つとも1回で構成図と日本語の説明ができ、
omm validate(図の文法・規約の検査)も全件通った - 1リポジトリあたり 68〜89秒、3.2万〜4.7万トークン(5つで約21.6万トークン)
- 図を並べると、Claude Agent SDK は「Claude Code CLI をサブプロセスで動かす薄い層」、OpenAI Agents SDK は「Runner がモデル・ツール・履歴・トレースを束ねる自前の実行系」と、設計の違いがひと目でわかった
- 費用を抑えるため「観点は3つまで・2段まで」に制限したので、15万行の SDK でも図は5〜7ノードの粗い要約になる
環境
- WSL2 の Ubuntu 22.04(隔離した試用環境)
- oh-my-mermaid 0.2.0、Codex CLI 0.162.1(OpenAI の API キーで実行)
手順
前提: Codex CLI を OpenAI の API キーで動かすため、環境変数 CODEX_API_KEY に API キーを設定済みであること(キーの値はここには書きません)。解析ごとに API の料金がかかります。
npm install -g oh-my-mermaid@0.2.0 @openai/codex@0.162.1
omm setup codex # ~/.agents/skills/oh-my-mermaid/ にスキルを登録
git clone --depth 1 https://github.com/anthropics/claude-agent-sdk-python.git
cd claude-agent-sdk-python
omm config language ja # 説明を日本語にする
codex exec --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox \
"Use the omm-scan skill (~/.agents/skills/oh-my-mermaid/omm-scan/SKILL.md) to scan this repository (focus on the src/claude_agent_sdk package) and generate .omm/ documentation. To limit cost: choose at most 3 perspectives, recurse at most 2 levels below each perspective, and keep each field short. Do not run the project's code or install anything." \
< /dev/null > ../scan.log 2>&1
omm status
omm validate
- プロンプトの括弧内(解析の対象)だけをリポジトリごとに変えました
-
--dangerously-bypass-approvals-and-sandboxは承認なしでコマンドを実行させるオプションです。今回は使い捨ての隔離環境の中なので使いました。普段の PC では使わないでください
結果
| リポジトリ | 対象の規模(Python) | 秒 | トークン | 観点 | 図 |
|---|---|---|---|---|---|
| anthropics/claude-agent-sdk-python | 26ファイル・13,295行 | 86 | 47,259 | 2 | 6 |
| anthropics/anthropic-sdk-python | 2,288ファイル・155,171行 | 85 | 43,285 | 2 | 7 |
| anthropics/claude-code | 22ファイル・7,914行+プラグイン等 | 89 | 46,626 | 2 | 8 |
| openai/openai-agents-python | 320ファイル・135,502行 | 71 | 47,227 | 3 | 4 |
| openai/swarm | 6ファイル・512行 | 68 | 31,587 | 2 | 3 |
観点(perspective)は AI が選びます。全件で全体構成(overall-architecture)が選ばれ、ほかにデータの流れ(data-flow)、リクエストの流れ(request-lifecycle)、拡張点(extension-points)が選ばれました。
規模が300倍違っても、時間・トークン数はほぼ同じでした。上限をかけたため、大きいリポジトリほど粗く要約されるということです。
Claude Agent SDK(Python)
通信層の実体は SubprocessCLITransport(Claude Code CLI をサブプロセスで起動)で、create_sdk_mcp_server で Python の関数を MCP ツールとして渡せる、という構造がソースと一致しました。
OpenAI Agents SDK(Python)
Claude Agent SDK がエージェントのループを CLI 側に任せるのに対し、こちらは Runner(run.py)が自前でループを回し、履歴(SQLite などのセッション)やトレースまで持っています。
Anthropic SDK(Python)
懸念(concern)の欄に「生成 API と手書き補助層が混在」と書かれました。15万行の大半は自動生成のコードで、図では resources/ の1ノードにまとまっています。
Claude Code(公開リポジトリ)
公開リポジトリには CLI 本体の実装が無く、プラグインや周辺資産が中心です。omm も説明に「CLI 本体の実装全体ではなく、周辺資産と mods のソースを収録」と正しく書きました。
Swarm
制約の欄に「呼び出し間の状態は呼び出し側が保持。永続ストアや HTTP サーバーはない」とあり、教育用の軽量フレームワークという性格をよく表しています。
内容はソースと合っているか
全部は確認していませんが、各リポジトリで1〜2点を grep で抜き取り確認し、すべて一致しました。
| リポジトリ | 図の関係 | ソース |
|---|---|---|
| claude-agent-sdk-python | 通信は CLI のサブプロセス |
_internal/transport/subprocess_cli.py の class SubprocessCLITransport(Transport)
|
| claude-agent-sdk-python | SDK が MCP サーバーを提供 |
__init__.py の def create_sdk_mcp_server(
|
| anthropic-sdk-python | クライアントが通信基盤を継承 |
_client.py の class Anthropic(SyncAPIClient)
|
| openai-agents-python | 実行制御がトレースを記録 |
run.py の run_state.set_trace(get_current_trace())
|
| swarm | 対話ループが run を呼ぶ |
repl/repl.py の client.run(
|
所感
- 知らない SDK を読み始める前の「入口の地図」として便利です。5つとも同じ形(観点・図・説明)で出るので、横に並べて比べやすいのが良い点でした
- 説明は1〜2文と短めです。大きいリポジトリを深く知りたいときは、上限を緩めるか、サブフォルダごとに解析するのがよさそうです(未確認)
- 結果はテキストなので git で管理でき、
omm diffで前回の図との差分も見られます - 注意: ビューア(
omm view)は試した版(0.2.0)では全インターフェースで待ち受けました。共有のネットワークで使うときは気を付けてください