1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

oh-my-mermaid × Codex で Anthropic・OpenAI の公式リポジトリ5つを構成図にしてみた

1
Last updated at Posted at 2026-10-12

はじめに

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)では全インターフェースで待ち受けました。共有のネットワークで使うときは気を付けてください

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?