2026年9月4日 金曜日
AI時短ラボ
検証· 約12

Claude Codeの「毎回ゼロから調べ直す」を止める「Graft」──SWE-benchで33/50 vs 27/50まで踏み込んだ数字

OSSツールGraftは、コードベースの構造をMarkdownのリンクグラフとして書き出し、Claude Codeのフックに乗せて毎セッションの再探索コストを減らす。開発元が公開しているSWE-bench Verified実測では正解数27→33、トークン消費142.0M→109.4Mまで数字が出ている。

Claude Codeの「毎回ゼロから調べ直す」を止める「Graft」──SWE-benchで33/50 vs 27/50まで踏み込んだ数字
執筆・編集:
目次

3行まとめ

  1. Graftは、コードベースの構造を「ノード=システムや概念、リンク=関係」というMarkdownのグラフとして書き出し、Claude Codeなどのフックに乗せてエージェントの再探索コストを減らすOSSツール。
  2. 独自の162実行ベンチマークでは、トークン消費42%減・ツール呼び出し46%減・レイテンシ60%減、正答率は93%で変わらずとGitHub READMEに記載。
  3. 業界標準のSWE-bench Verified(50件・公式グレーダー)では、正解数がCold Claude Codeの27/50からgraft併用で33/50まで伸びたと公開されている。

「毎回ゼロから調べ直す」という無駄

READMEが指摘する問題は単純だ。コーディングエージェントはタスクごとに丸腰でリポジトリに入る。何かを変える前に、grepして、ファイルを開いて、importを辿って、行き詰まって、また探す——1時間前に自分がマッピングしたはずのコードベース像を、セッションが終わるたびに捨てて作り直している。この再探索が、1回の実行のツール呼び出し・トークン・レイテンシの大半を食い、しかも純粋なオーバーヘッドだとREADMEは書く。人間は一度オンボーディングすれば済むが、エージェントは毎回オンボーディングし直している、という表現だ。

やっていること──埋め込みでもインデックスでもなくMarkdownのグラフ

Graftはこの理解を一度だけ構築し、リポジトリ内にリンクされたMarkdownファイル群として書き出す。1つのシステム・API・概念につき1ノード、という単位だ。README上の特徴を要約すると次の通り。

  • 本物の説明文であって、関数名の羅列ではない。シニアエンジニアが説明するような自然文で「何をしていて、他とどうつながっているか」を書く
  • 埋め込みも類似検索もない、ただのリンクされたファイル群。エージェントは他の通常ファイルと同じようにopenしgrepしてたどるだけ
  • graft/はローカルキャッシュであり.gitignoreに入る(node_modulesと同じ扱い)。コミットされるのはgraft initが生成する小さな配線(.claude/AGENTS.md、MCP設定)だけで、チームメイトは各自graft buildで自分のグラフを生成する
  • 常に最新ask/grep/callers/skeleton/mapのどのクエリも、実行前に作業ツリーに対してグラフを再構築する(何も動いていなければ約3ms)。コミットされていない編集も反映される
  • プロバイダは自由:要約生成にはOpenAI・Anthropic・OpenRouter・Fireworks・Groq・LiteLLMプロキシ・ローカルモデルのいずれも使える。構造グラフの構築自体(graft build/graft check)はtree-sitterによる決定論的処理で、モデル呼び出しは発生しない

導入はgraft initが対話的に「どのコーディングエージェントを配線するか」を聞き、コードからgraft/を構築、.claude/にステータスラインとフックを配置する、という流れになっている。

GitHubリポジトリはNanoNets/Graftからtrailhq/Graftへ移管されていた

github.com/NanoNets/Graftに直接アクセスすると、現在は301リダイレクトでgithub.com/trailhq/Graftに転送される(本記事執筆時点で確認)。リポジトリのAboutには「Turbocharge Claude Code, Cursor, Codex, Gemini & every coding agent」とあり、Claude Code専用ではなくCursor・Codex・Geminiなど複数のコーディングエージェントに対応する、と明記されている。スター数は5.1k、フォーク数458、ウォッチャー23(実測時点)。

Graftの配布元をたどると、graft.nanonets.aiというホームページURLもtrailhq.com/graftにリダイレクトされる。Trail社の公式サイトは自社を「Your Company Brain for AI Agents」と位置づける企業向けプロダクト(Context Graph、Natural Language Rule Engine、Agent Builderなど)を展開しており、Graftはその中の「オープンソース版のコードベース向けコンテキストレイヤー」という位置づけで製品ラインに含まれている。npmパッケージ名は@nanonets/graftのまま変わっておらず、npm registryの実測では2026-07-15に初回公開、2026-08-27時点で28バージョンがリリースされている(最新は0.15.0)。約6週間で28回のバージョン更新という頻度は、活発に開発が続いているツールであることを示している。

独自ベンチマーク:162実行

READMEに掲載されている最初のベンチマークは、Claude Sonnet 5を使った3パターン(cold=ゼロから探索/graft=グラフを事前に一括投入/pull=必要な時だけ取りに行く)の比較だ。Opus 4.8を判定役にして必須キーワードの充足を採点し、キャッシュを考慮したコストモデル(読み取り約0.1倍、書き込み1.25倍)で計測している。2つのリポジトリ(Graft自身と実際のNode/Express認証サービス)に対し、単一ファイル・複数ファイルの質問を織り交ぜて162回実行した結果が次の表だ。

指標(タスクあたり平均) Cold Claude Code Claude Code + graft
コスト $0.0429 $0.0292(32%減)
トークン数 8,070 4,650(42%減)
ツール呼び出し数 4.2 2.3(46%減)
レイテンシ 39.8秒 15.8秒(60%減)
正答率 93% 93%(同等)

pull方式(必要な時だけ取得するツールのみ渡す)はスピードでは劣るが正答率が98%まで上がり、「速さが要る時はpush、正しさが要る時はpull」という使い分けが提案されている。

SWE-bench Verifiedでの実測

自社ベンチだけでなく、業界標準のSWE-bench Verified(実際のGitHub issueを使い、公式swebenchハーネスで採点)でも検証したとREADMEは書く。50件のインスタンス、両アームともClaude Sonnet 5・同じDockerイメージ・同じターン数上限で、違いはgraftを配線したかどうかだけ、という条件だ。

指標 Cold Claude Code Claude Code + graft
正解数 27 / 50(54%) 33 / 50(66%、+12pt)
トークン消費 142.0M 109.4M(23%減)
コスト $52.34 $42.43(19%減)
ツール呼び出し数 1,370 1,031(25%減)
APIリクエスト数 2,455 1,875(24%減)
実行時間 13,094秒 8,922秒(32%減)

README曰く、正解が増えた事例の多くは「ベースラインは1ファイルだけ直して兄弟ファイルを見落とす」という同じパターンだったという。django-11532ではCold版が5ファイル中1ファイルしか直さず、既存の通過済みテストを18件(2回分)壊した。django-16263では4ファイル中1ファイルしか直せずスコアは102/103止まりだったのに対し、graft併用版は残りを見つけ、しかもトークン・時間とも半分で到達したとされている。

「4倍安く3倍速い」は、掲げている場所ではなく数字の読み替えの問題

「Up to 4× cheaper and 3× faster(最大4倍安く、3倍速い)」は、trailhq.com/graft のトップページだけでなく、README自身の見出し(23行目)と本文(524行目)にも同じ文言で掲げられている(2026年9月4日にrawで取得して確認)。つまりWebサイト固有のマーケティング表現ではない。

問題はどこに書いてあるかではなく、この「4倍・3倍」と、同じREADMEが示す実測値が別の数字だということだ。162実行ベンチマークではコスト32%減(約1.47倍)、レイテンシ60%減(約2.5倍)、SWE-bench Verifiedではコスト19%減・実行時間32%減。「最大(Up to)」の語が付いている以上、条件が揃った場合の上限値であって、表に出ている平均値を4倍・3倍と読み替えることはできない。

確認できたこと・確認できていないこと

本記事はGitHubリポジトリのREADME・Trail公式サイト・npm registryを2026年8月27日〜30日にcurlで取得し、掲載されている表・数値をそのまま書き起こしている。ベンチマークの実行環境・タスクセットの詳細(具体的なタスク一覧、評価プロンプトの全文)まではREADMEの範囲を超えるため確認できていない。また、これらの数字はGraft開発元(Trail)自身が計測・公開したものであり、第三者による独立した再現結果は今回の調査では見つかっていない。実際に手元のリポジトリにgraft initを通して動作を検証したわけでもない。

日本語では「grep」の文脈でしか触れられていない

Zenn・Qiitaともに固有名詞としてのGraftへの言及はゼロだった。「Claude Codeのトークン消費を減らす」というテーマ自体は日本語圏でも語られるが、コードグラフをMarkdownファイル群として持つというこのアプローチは、まだ日本語での紹介記事が見当たらない。

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

Agent Client Protocol(ACP)とは──コーディングエージェントを「LSPのように」つなぐ標準規格の記事画像
検証09.04読了13

Agent Client Protocol(ACP)とは──コーディングエージェントを「LSPのように」つなぐ標準規格

出典 ─ Introduction(Agent Cli
Claude CodeのセッションをブラウザでGenUIごと覗くmacaron-artifacts──プロンプトも会話履歴も送らないテレメトリ設計を読むの記事画像
検証09.04読了12

Claude CodeのセッションをブラウザでGenUIごと覗くmacaron-artifacts──プロンプトも会話履歴も送らないテレメトリ設計を読む

出典 ─ MindLab-Research/macar
「クローンだらけのオフィス」を自宅PCに──Munder Difflinはマルチエージェント運用をどう解決したかの記事画像
検証09.04読了12

「クローンだらけのオフィス」を自宅PCに──Munder Difflinはマルチエージェント運用をどう解決したか

出典 ─ Munder Difflin公式サイト
30プロバイダを自動フェイルオーバーで渡り歩く──Rust製ターミナルコーディングエージェント「VT Code」の記事画像
検証09.04読了13

30プロバイダを自動フェイルオーバーで渡り歩く──Rust製ターミナルコーディングエージェント「VT Code」

出典 ─ vinhnx/vtcode README(G
Claude Agent SDKを『エディタの共通言語ACP』に翻訳する──Zed製アダプタが対応する機能を数えてみたの記事画像
検証09.04読了13

Claude Agent SDKを『エディタの共通言語ACP』に翻訳する──Zed製アダプタが対応する機能を数えてみた

出典 ─ zed-industries/claude-
1つのACPエージェントの中にClaude・Codex・Grokが同居する──『艦隊型』オーケストレータClaw Orchestratorの記事画像
検証09.03読了13

1つのACPエージェントの中にClaude・Codex・Grokが同居する──『艦隊型』オーケストレータClaw Orchestrator

出典 ─ Enderfga/claw-orchestr
Claude Code・Codex・Hermesを1コンテナにまとめる「HarnessRouter」──自前サーバーで動かす統一プロトコルの記事画像
検証09.03読了14

Claude Code・Codex・Hermesを1コンテナにまとめる「HarnessRouter」──自前サーバーで動かす統一プロトコル

出典 ─ harnessrouter/harnessr
81,481スターと11,203スター──MiniMax公式より大きい「個人製Agent Skills」を2つ確認するの記事画像
検証09.03読了13

81,481スターと11,203スター──MiniMax公式より大きい「個人製Agent Skills」を2つ確認する

出典 ─ GitHub: Leonxlnx/taste