Cursor、低コスト・高品質なコーディング用ルーティングシステム発表
Cursor は、リクエストレベルでタスクを分類し最適なモデルに振り分ける「Router」を一般公開し、複雑な問題の質を維持しながらコストを最大60%削減する実用的な解決策を提供した。
キーポイント
コスト最適化と品質維持の両立
単純作業には低価格モデル、UI 更新には「審美性」に優れたモデル、複雑な問題には最上位モデルを割り当てることで、高価な Frontier モデルの使用頻度を減らしつつ出力品質を損なわない。
キャッシュ意識型のアーキテクチャ
会話中のモデル切り替えがプロンプトキャッシュの無効化(キャッシュミス)を引き起こすコストを考慮し、トレーニングと評価の両方でキャッシュ効率を最適化した独自の設計を採用している。
大規模データに基づく分類器
60 万件以上のライブリクエストデータを学習基盤とし、ユーザー満足度(AFC)を報酬信号としてオンライン A/B テストで評価された高精度な分類システムである。
モデル陳腐化への対応力
市場のフロンティアが月次で移動する中で、新しいモデルの登場に合わせてルーターを迅速に更新できる設計となっており、長期的な運用に適している。
リクエストレベルの自動ルーティング
Cursor Router はコードタスクを分析し、複雑さや種類に基づいて最適なモデル(例:高速な軽量モデルか、高品質な Frontier モデル)へ自動的に振り分けます。
コスト削減と性能の両立
単純なタスクには低コストモデルを使用することで、全体のコストを 30〜50% 削減しつつ、複雑なタスクでは最高品質のコーディング能力を維持します。
動的な適応型アーキテクチャ
ユーザーの入力内容やコンテキストをリアルタイムで評価し、固定された設定ではなく状況に応じた最適なモデル選択を行うことで効率化を実現しています。
重要な引用
The savings do not come from downgrading hard problems. They come from removing routine work from frontier pricing while the difficult tier stays intact.
Switching models mid-conversation invalidates prompt cache, and that cost is real. Routers that ignore it overstate their savings.
Delivering Frontier Coding Quality at 30–50% Lower Cost
A Request-Level Classifier
"Online A/B test across millions of live requests, not offline evals"
~60% of Cursor developers pick one model as a daily driver, putting routine work on frontier pricing"
影響分析・編集コメントを表示
影響分析
このリリースは、AI コスト管理の文脈において「品質とコストのトレードオフ」を解消する画期的なアプローチを示しています。特に、プロンプトキャッシュの無効化コストまで計算に入れた設計は、実運用における隠れたコストを可視化する点で業界標準となる可能性があります。これにより、企業は AI 利用規模を拡大しつつも予算管理を厳格に行えるようになり、LLM の採用障壁がさらに低下すると予想されます。
編集コメント
「Router」による動的なモデル選定は、単なるコスト削減ツールを超え、AI エコシステム全体の効率化を促す重要なインフラとなり得ます。特にキャッシュ効率への言及は、実務家にとって非常に示唆に富む視点であり、今後の類似製品の設計基準にも影響を与えるでしょう。
Cursor は、Teams および Enterprise プラン向けに「Cursor Router」の一般提供を開始しました。このシステムは、モデルが実行される前に各リクエストを検査し、特定のタスクに最も適したモデルへ振り分ける分類器です。
Cursor チームによると、オンライン A/B テストでは最上位クラスの性能を維持しながらコストを 60% 削減できたと報告されています。また、早期アクセスの企業アカウントでも 30〜50% のコスト削減が実現しています。
このシステムが解決しようとしているのは、機能不足ではなく支出のパターンです。Cursor によれば、開発者の約 60% が日常業務で単一のモデルを固定して使用しており、その結果、日常的なタスクでも最上位クラスの価格設定のモデルが使われ続けています。これにより、AI への支出が出力品質の向上よりも速く増加するという問題が生じていました。Cursor Router は、このミスマッチに対する解決策です。
分類器が実際に読み取る情報とは?
Cursor Router は、失敗した際のフォールバックチェーンや再試行メカニズムではありません。60 万件以上の実稼働リクエストで訓練され、数百万件のリクエストにわたるオンライン A/B テストで評価された上で、ユーザー満足度(AFC)を報酬信号として最適化された分類器です。
各リクエストに対して、Router は以下の 4 つの入力を分析します:クエリ、コンテキスト、タスクの複雑さ、そしてドメイン。これらに、各モデルの振る舞いに関する学習済み知識を組み合わせて判断を下します。Cursor は、この分類に基づいて以下の 3 つのルーティングルールを公開しています。
- シンプルな作業は、最もコスト効率の高いモデルへ割り当てます。
- UI の更新処理は、美的感覚に優れたモデルへ割り当てます。
- 複雑で長期にわたる問題には、最上位クラスの推論能力を持つモデルへ割り当てます。
この三つ目のルールは、コスト論の核心を担っています。節約の源泉は、難しい問題を簡易化することではありません。難易度の高いタスクには最上位モデルを使い続ける一方で、定型業務のみを低価格帯に振り分けることで実現されます。
ルーターを実装した経験がある人なら、実装上の重要なポイントに注目すべきです。Cursor Router は、学習時と評価時の両方でキャッシュの状況を考慮して設計されています。このルーターは、ルーティングの結果としてキャッシュミスが発生するデータセットで訓練されており、報告されているコスト削減効果には、そのキャッシュミスのコストも含まれています。会話中にモデルを切り替えるとプロンプトキャッシュが無効化され、これが実在するコストとなります。これを無視したルーターは、削減効果を過大評価してしまいます。
また、この分類器は、モデルの陳腐化(チェア)にも対応するように設計されています。Cursor によれば、より新しいモデルがリリースされるたびにルーターを更新可能であり、最上位モデルの性能が月次で更新される市場において、これは極めて重要な機能です。
*{box-sizing:border-box;margin:0;padding:0}
body{background:#0b0b0b;color:#e8e8e8;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;padding:0}
#mtp-router-explainer{background:#0b0b0b;border:1px solid #222;border-radius:10px;overflow:hidden}
.hd{padding:18px 20px;border-bottom:1px solid #222;background:#0e0e0e}
.kick{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#76B900;font-weight:700}
.hd h2{font-size:clamp(17px,2.4vw,21px);margin:6px 0 4px;color:#fff;font-weight:650;line-height:1.25}
.hd p{font-size:13px;color:#8a8a8a;line-height:1.5}
.tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid #222;background:#0e0e0e}
.tab{flex:1 1 auto;min-width:110px;padding:11px 8px;font-size:12px;font-weight:600;color:#8a8a8a;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:inherit;transition:.15s}
.tab:hover{color:#cfcfcf}
.tab.on{color:#76B900;border-bottom-color:#76B900;background:#111}
.pane{display:none;padding:20px}
.pane.on{display:block}
.lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#8a8a8a;font-weight:700;margin-bottom:9px}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px}
.chip{padding:8px 12px;font-size:12px;border:1px solid #2a2a2a;background:#141414;color:#cfcfcf;border-radius:6px;cursor:pointer;font-family:inherit;transition:.15s;text-align:left}
.chip:hover{border-color:#3d3d3d;color:#fff}
.chip.on{border-color:#76B900;color:#76B900;background:rgba(118,185,0,.09)}
.flow{display:grid;grid-template-columns:fr;gap:10px}
.box{background:#111;border:1px solid #222;border-radius:8px;padding:14px}
.box h4{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#76B900;margin-bottom:9px;font-weight:700}
.sig{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,fr));gap:8px}
.sigcell{background:#0d0d0d;border:1px solid #1e1e1e;border-radius:6px;padding:9px 10px}
.sigcell .k{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#7a7a7a;margin-bottom:3px}
.sigcell .v{font-size:12.5px;color:#e8e8e8;font-weight:600;line-height:1.35}
.arrow{text-align:center;color:#76B900;font-size:15px;line-height:1}
.tier{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.tierdot{width:9px;height:9px;border-radius:50%;background:#76B900;flex:none}
.tiername{font-size:15px;font-weight:700;color:#fff}
.tierwhy{font-size:12.5px;color:#9a9a9a;line-height:1.55;margin-top:8px}
.rule{font-size:11.5px;color:#76B900;background:rgba(118,185,0,.07);border-left:2px solid #76B900;padding:7px 10px;margin-top:10px;border-radius:0 4px 4px 0;line-height:1.5}
.modebtns{display:flex;gap:7px;margin-bottom:15px;flex-wrap:wrap}
.modebtn{flex:1 1 90px;padding:10px 8px;font-size:12.5px;font-weight:700;border:1px solid #2a2a2a;background:#141414;color:#cfcfcf;border-radius:6px;cursor:pointer;font-family:inherit}
.modebtn.on{border-color:#76B900;color:#76B900;background:rgba(118,185,0,.09)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,fr));gap:10px;margin-bottom:12px}
.stat{background:#111;border:1px solid #222;border-radius:8px;padding:13px}
.stat .n{font-size:24px;font-weight:700;color:#76B900;line-height:1.1}
.stat .n.na{font-size:15px;color:#6a6a6a}
.stat .c{font-size:11.5px;color:#8a8a8a;margin-top:5px;line-height:1.45}
.bar{margin-bottom:11px}
.barhead{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:5px}
.barhead .nm{color:#e8e8e8;font-weight:600}
.barhead .vl{color:#76B900;font-weight:700;font-variant-numeric:tabular-nums}
.bartrack{height:9px;background:#171717;border-radius:5px;overflow:hidden}
.barfill{height:100%;background:#76B900;border-radius:5px;transition:width .35s ease}
.barfill.alt{background:#3d5c00}
.slider{width:100%;-webkit-appearance:none;appearance:none;height:4px;background:#222;border-radius:3px;outline:none;margin:6px 0 3px}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:#76B900;cursor:pointer}
.slider::-moz-range-thumb{width:17px;height:17px;border-radius:50%;background:#76B900;cursor:pointer;border:none}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:#7a7a7a;padding:7px 8px;border-bottom:1px solid #222;font-weight:700}
td{padding:9px 8px;border-bottom:1px solid #191919;color:#cfcfcf;line-height:1.45;vertical-align:top}
td strong{color:#fff}
.note{font-size:11.5px;color:#7a7a7a;line-height:1.55;margin-top:13px;padding-top:12px;border-top:1px solid #1c1c1c}
.ft{padding:11px 20px;border-top:1px solid #222;background:#0e0e0e;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;color:#6a6a6a}
.ft b{color:#76B900;font-weight:700}
a{color:#76B900;text-decoration:none}
a:hover{text-decoration:underline}
@media(max-width:640px){.pane{padding:15px}.hd{padding:15px}.tab{min-width:80px;font-size:11px;padding:10px 5px}.stat .n{font-size:20px}}
インタラクティブ解説
Cursor Router の内部:分類、ティア、公開された結果
以下のすべての図は、2026 年 7 月 22 日に Cursor が発表した投稿と変更履歴から引用したものです。Cursor が未発表の値については明記しています。
リクエストのルーティング
モード
コミットあたりのコスト
測定方法
タスクを選択して、分類器がどのように読み取るかを確認します
ステップ 1 · モデル実行前に読み取られるシグナル
▼
ステップ 2 · ルーティング・ティアの選択
Cursor は 3 つのルーリングルールを公開していますが、特定のタスクタイプに対して個別のモデル名は明記していません。ここで示されている「ティア」は Cursor が独自に定義したカテゴリであり、サンプルとなるタスクはそれら 3 つのルールがどのように適用されるかを説明するための例です。Cursor は、分類器がクエリ、コンテキスト、タスクの複雑さ、ドメインを読み取り、各モデルの挙動に関する知識と組み合わせて判断すると述べています。
自動モード — コストと知能のパレートフロンティア上の 3 点
コスト
バランス
知能
Cursor の説明
公開されたコミットあたりのコスト(早期アクセス測定)
線形投影 — ドラッグして月間のコミットボリュームを設定
ボリューム:1,000 コミット/月
モデル / モード $ / コミット 月間 vs Opus 4.8
コミットあたりのコストは、Cursor が公開した早期アクセスの観測データに基づくものです。この予測値は単に単位コストを単純に掛け算しただけの計算結果であり、Cursor による将来予測ではありません。また、タスク構成が一定であると仮定しています。
Cursor の報告によると、GPT-5.6 Sol モデルは「インテリジェンスモード」と同等のコストを実現しましたが、ユーザー満足度は低いものでした。同社はこのモデルの正確なコスト数値については公開していません。
| 項目 | Cursor が報告している内容 |
|---|---|
| 学習データ | 60 万件以上のライブリクエスト |
| リワード信号 | ユーザー満足度(AFC) |
| 評価方法 | オフライン評価ではなく、数百万件のライブリクエストにわたるオンライン A/B テスト |
| 品質指標 1 | ユーザー満足度 — ユーザーの反応からエージェントの成功を分類。次の機能へ進むことは強いポジティブ信号、エージェントの修正は強いネガティブ信号として扱われます |
| 品質指標 2 | 維持率 — エージェントが生成したコードが、時間経過とともにコードベース内にどれだけ残存しているか |
| メトリクスの実績 | 過去 9 ヶ月間、すべてのモデルリリースとハッチング変更において、両方の指標を評価に使用 |
| キャッシュ処理 | 学習および評価時にキャッシュを意識。ルーティングによってキャッシュミスが発生するデータセットで訓練され、報告された節約効果にはキャッシュミスコストの削減分も含まれます |
| プラットフォーム規模 | Cursor は週に数億件のコーディングリクエストを複数のモデルとプロバイダー間で処理しています |
| 解決すべき課題 | 開発者の約 60% が特定の 1 つのモデルを日常使いとして選択しており、日常的な作業にも最先端モデルの高額な価格設定が適用されている状況です |
Cursor がオンラインでの A/B テストを採用した理由として、オフライン評価には「サンプル数が限られている」「実際の利用状況との乖離がある」「成功基準を数値化するのが難しい」といった課題があり、さらに会話中にモデルを切り替えた際に発生するキャッシュミスによる追加コストが考慮されていない点を挙げています。
出典:cursor.com/blog/router(2026 年 7 月 22 日検証済み)
作成:Marktechpost
Cursor は「Cursor Router」というリクエストレベルの分類器をリリースしました。これにより、最前線のコーディング品質を維持しつつ、コストを 30〜50% 削減することが可能になりました。
このシステムは、タスクの種類に応じて最適なモデルを自動選定します。例えば、「1 つのファイル内の変数名変更」や「単一ファイルでの短く具体的な修正」は低コストで処理され、「テスト失敗の修正」も明確なエラーテキストに基づいて低〜中程度の負荷として扱われます。
一方、UI 関連の作業、例えば設定ページのレイアウト調整やデザイン主導の新規ダッシュボードコンポーネント作成などは、主観的な品質が問われるため、"Best-taste model(最も優れた審美眼を持つモデル)" が選ばれます。これは、単純な正誤判定ではなく、出力の質やデザインの良し悪しが評価される場面だからです。
さらに複雑で長期的な課題、例えばサービス間での競合状態の追跡や、コードベース全体にわたる ORM レイヤーの移行などは、"Frontier reasoning models(最前線の推論モデル)" に委ねられます。これらのタスクは多リポジトリにまたがり、ログや長い履歴を扱う必要があり、高い計算資源と推論能力が要求されます。
Cursor Router は、以下の 3 つのティアで構成されています。
- 価格効率型モデル:日常的な作業には最前線モデルの高額な料金をかける必要はありません。このティアは、以前は高価な最前線モデルで処理されていたリクエストを、より安価なモデルへ振り替えることでコスト削減を実現するものです。Cursor の公式ルールでは「単純な作業は最も価格効率の高いモデルに割り当てる」と明記されています。
- 審美眼重視型モデル:UI 更新などは正誤だけでなく、デザインや使い勝手の良し悪しが評価されるため、推論の深さよりも出力の質("taste")を重視したモデルが選ばれます。公式ルールでは「UI 更新は最も優れた審美眼を持つモデルに任せる」とされています。
- 最前線推論型モデル:長期的・複雑な課題には、フルスペックの最前線モデルが投入されます。コスト削減の根拠となるのは、このティアが維持されていることです。Cursor は「より複雑で長期にわたる課題は、最も能力の高い最前線推論モデルに任せる」と述べています。
また、利用モードには以下の 3 つがあります。
- Cost モード:「高品質を維持しつつ、利用可能な最高レベルの知能を活用しながらトークン消費を最適化する」ことを目指します。ただし、Cursor はこのモードにおける A/B テストの結果やコスト削減率などの数値データを公開していません。チャangelog でも、"Balance" と "Intelligence" モードのみがルーティングモデル課金の対象として言及されており、Cost モードの数値に関する情報は現時点で未公開です。
- Balance モード:「高い品質を維持し、多くのユーザーが日常的に好む最前線モデルと同等の満足度を提供する」ことを目指します。Cursor によると、このモードは GPT-5.6 Sol と比較しても同等の満足度を得ながら、より低いコストで運用可能です。課金はルーティングされたモデルのレートに基づきます。
- Intelligence モード:「最前線レベルの品質を提供し、日常利用には高価すぎるほど強力なモデルと同等のパフォーマンスを発揮する」ことを目指します。このモードには 2 つの比較データがあります。1 つは Fable と同程度の満足度を得ながらコストを約 60% 削減できること、もう 1 つは Opus 4.8 よりも満足度が約 15% 高いにもかかわらず、コストはほぼ同等であることです。課金もルーティングされたモデルのレートに基づきます。
コミットあたりのコスト比較では、Auto Balance が 4.63 ドル、Auto Intelligence が 6.76 ドルに対し、Opus 4.8 は 7.34 ドル、Fable 5 は 12.69 ドルとなっています。これにより、Cursor Router を活用することで、最前線の品質を損なうことなく、大幅なコスト削減を実現できることがわかります。
var TASKS=[
{t:"Rename a variable across one file",q:"Short, literal, single-file",c:"One file in context",x:"Low",d:"Refactor / syntax",tier:0},
{t:"Fix a failing unit test",q:"Explicit error text supplied",c:"Test file + source under test",x:"Low to moderate",d:"Testing",tier:0},
{t:"Adjust spacing and states on a settings page",q:"Visual intent, subjective outcome",c:"Component + stylesheet",x:"Moderate",d:"UI / front-end",tier:1},
{t:"Build a new dashboard component",q:"Design-led, taste-sensitive",c:"Design system + sibling components",x:"Moderate",d:"UI / front-end",tier:1},
{t:"Trace a race condition across services",q:"Open-ended, hypothesis-driven",c:"Multi-repo, logs, long history",x:"High, long-horizon",d:"Distributed systems",tier:2},
{t:"Migrate an ORM layer across the codebase",q:"Multi-step plan with dependencies",c:"Hundreds of files, schema",x:"High, long-horizon",d:"Architecture / migration",tier:2}
];
var TIERS=[
{n:"Price-efficient models",w:"Routine work does not need frontier pricing. This is the tier Cursor says the router exists to reclaim — the requests that were previously being paid for at daily-driver frontier rates.",r:"Cursor's published rule: \u201CSimple work goes to the most price-efficient models.\u201D"},
{n:"Best-taste model",w:"Interface work is judged on subjective quality rather than pass/fail correctness, so the router selects for output taste rather than raw reasoning depth.",r:"Cursor's published rule: \u201CUI updates go to the model with the best taste.\u201D"},
{n:"Frontier reasoning models",w:"Long-horizon problems keep their full frontier budget. The savings claim rests on this tier staying intact — Cursor states it keeps hard tasks on the most capable models.",r:"Cursor's published rule: \u201CMore complex, long-horizon problems go to frontier reasoning models.\u201D"}
];
var MODES=[
{n:"Cost",stats:[["n/a","Published quality delta"],["n/a","Published cost delta"],["n/a","Cost per commit"]],
d:"\u201CGood quality, reaching the highest available intelligence while optimizing token spend.\u201D",
note:"Cursor published no A/B quality or cost figures for Cost mode, and the changelog specifies routed-model billing only for Balance and Intelligence. Treat Cost mode as undocumented on numbers until Cursor releases them."},
{n:"Balance",stats:[["above","User satisfaction vs Opus 4.8"],["~36%","Lower cost than Opus 4.8"],["$4.63","Cost per commit"]],
d:"\u201CStrong quality, matching the frontier models that most people like to daily drive.\u201D",
note:"Cursor also reports Balance delivers comparable satisfaction to GPT-5.6 Sol at a lower spend rate. Balance bills at the routed model's rate."},
{n:"Intelligence",stats:[["~60%","Lower cost at near-Fable satisfaction"],["~15%","Satisfaction lift over Opus 4.8, near-equal cost"],["$6.76","Cost per commit"]],
d:"\u201CFrontier quality, with performance matching the most expensive and powerful models that might be out of reach for daily use.\u201D",
note:"The two Intelligence figures are separate comparisons: near-Fable satisfaction at ~60% lower cost, and ~15% higher satisfaction than Opus 4.8 at roughly the same cost. Intelligence bills at the routed model's rate."}
];
var COMMITS=[["Auto Balance",4.63,1],["Auto Intelligence",6.76,1],["Opus 4.8",7.34,0],["Fable 5",12.69,0]];
function $(i){return document.getElementById(i)}
function money(v){return "$"+v.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}
var chips=$("taskchips");
TASKS.forEach(function(t,i){
var b=document.createElement("button");b.className="chip"+(i===0?" on":"");b.textContent=t.t;
b.onclick=function(){[].forEach.call(chips.children,function(c){c.className="chip"};b.className="chip on";drawTask(i);};
chips.appendChild(b);
});
function drawTask(i){
var t=TASKS[i],T=TIERS[t.tier];
$("sigrow").innerHTML=[["Query",t.q],["Context",t.c],["Task complexity",t.x],["Domain",t.d]]
.map(function(p){return ''+p[0]+'\n'+p[1]+'\n'};).join("");
$("tiername").innerHTML=T.n;$("tierwhy").innerHTML=T.w;$("tierrule").innerHTML=T.r;
post();
}
drawTask(0);
[].forEach.call(document.querySelectorAll(".tab"),function(b){
b.onclick=function(){
[].forEach.call(document.querySelectorAll(".tab"),function(x){x.className="tab"};b.className="tab on";
[].forEach.call(document.querySelectorAll(".pane"),function(x){x.className="pane"});
$("p"+b.getAttribute("data-t")).className="pane on";post();
};
});
オンラインでの A/B テストを、オフライン評価ではなく採用する理由
[].forEach.call(document.querySelectorAll(".modebtn"),function(b){
b.onclick=function(){
[].forEach.call(document.querySelectorAll(".modebtn"),function(x){x.className="modebtn"});b.className="modebtn on";
drawMode(+b.getAttribute("data-m"));
};
});
function drawMode(i){
var m=MODES[i];
$("modestats").innerHTML=m.stats.map(function(s){
var na=s[0]==="n/a";
return ''+(na?"Not published":s[0])+'
'+s[1]+'
';
}).join("");
$("modedesc").innerHTML=m.d;$("modenote").innerHTML=m.note;post();
}
drawMode(1);
$("bars").innerHTML=COMMITS.map(function(c){
var w=(c[1]/12.69*100).toFixed(1);
return ''+c[0]+'$'+c[1].toFixed(2)+'
'+
'
';
}).join("");
var vol=$("vol");
function proj(){
var n=+vol.value,base=7.34*n;
$("volval").textContent=n.toLocaleString("en-US");
$("projbody").innerHTML=COMMITS.map(function(c){
var tot=c[1]*n,diff=base-tot,sign=diff>0?"−":"+";
var col=diff>0?"#76B900":(diff'+c[0]+'$'+c[1].toFixed(2)+''+
''+money(tot)+''+
''+(diff===0?"—":sign+money(Math.abs(diff)))+'
';
}).join("");
post();
}
vol.oninput=proj;proj();
function post(){
var h=document.getElementById("mtp-router-explainer").offsetHeight+40;
if(window.parent!==window)window.parent.postMessage({mtpFrame:"router-explainer",height:h},"*");
}
window.addEventListener("load",post);setTimeout(post,300);
なぜオフライン評価ではなくオンラインの A/B テストを行うのか
Cursor は、オフライン評価を主要な測定指標として採用することを意図的に避けています。その理由は、オフライン評価がサンプル数が少ないこと、実際の使用状況との乖離があること、そして成功を評価基準に落とし込むことが難しいことにあります。さらに、モデルを切り替えた際に発生するキャッシュミスによるコストも含まれていません。
実際のルーティングは、会話全体を通じて行われます。開発者はコードを書き、追跡質問を行い、エラーに直面し、それを乗り越えて進めます。これは週に数百回のリクエストに及ぶことも珍しくありません。ルーターは、どのモデルを選ぶかだけでなく、いつ切り替えるかも判断する必要があります。
評価には 2 つの品質指標が用いられます。
ユーザー満足度:ユーザーの反応からエージェントの成功を分類します。次の機能へ進むことは強いポジティブなシグナルであり、エージェントの修正は強いネガティブなシグナルです。
維持率:時間経過とともにコードベースに残る、エージェント生成のコードの割合です。
Cursor チームは、過去 9 ヶ月間にわたってすべてのモデルリリースと機能改善をこれらの指標で評価し、活用してきたと述べています。これは重要な信頼性の証左です。なぜなら、この指標は現在正当化のために使われている製品よりも先に存在していたからです。
3 つのモードと背後にある数値
Auto モードでは now、コストと知能の最適化フロンティアを移動させる 3 つの最適化設定が利用可能です。
Auto Intelligence は、チームにとって約 60% の低コストで Fable と同等のユーザー満足度を実現します。Opus 4.8 と比較すると、ほぼ同じコストで満足度を約 15% 引き上げます。
ユーザー満足度において、Auto Balance は Opus 4.8 を約 36% の低コストで上回ります。GPT-5.6 Sol と比較しても、同等の満足度をより低い支出率で実現しています。
Cost mode(コスト最適化モード)は、トークン使用量を最適化しつつ、利用可能な最高レベルの知能を維持する高品質な運用として説明されています。ただし、Cursor 社はこのモードに関する A/B テストの結果や具体的なコスト数値については公開していません。
リクエストあたりのコストは全体像の一部に過ぎないため、Cursor ではコミットあたりのコストも測定しました。
モデル / モード | コミットあたりコスト
---|---
Auto Balance | $4.63
Auto Intelligence | $6.76
Opus 4.8 | $7.34
Fable 5 | $12.69
GPT-5.6 Sol は Intelligence モードと同程度のコストでしたが、ユーザー満足度は低かったです。Cursor 社はこのモデルのコミットあたりの正確な数値は公開していません。
(function(){var f=document.getElementById("mtp-router-deploy-frame");
window.addEventListener("message",function(e){
if(e.data&&e.data.mtpFrame==="router-deploy"&&e.data.height){f.style.height=e.data.height+"px";}
});})();
デプロイの現状と唯一の制約事項
Cursor Router は、デスクトップ版、Web 版、iOS アプリ、CLI、そして Cursor SDK にわたって展開されています。Teams プランではデフォルトで有効化されており、Enterprise の管理者はダッシュボードから設定を管理できます。
変更履歴(changelog)によると、管理者が制御できる機能には以下のものがあります:チーム単位やグループ単位の有効化、メンバーが選択可能な最適化モードの制限、デフォルトモードのカスタマイズ、およびモデルのホワイトリスト・ブラックリストの設定です。Auto モードへの標準化を徹底するため、ソフト面とハード面の両方の強制オプションが用意されています。ルーティングされるモデルは表示も非表示も可能ですが、デフォルトでは非表示に設定されており、ルーティングの透明性を求めるチームは手動でオプトインする必要があります。
調達において重要な制約は二つあります。まず、Grok 4.5 は価格効率に優れたルーティングオプションとして必須であるため、このモデルを除外するブロックリストは作成できません。Grok 4.5 は 7 月 8 日にリリースされ、入力トークンあたり 2 ドル、出力トークンあたり 6 ドルで提供されています(高速版はそれぞれ 4 ドル、18 ドル)。二つ目は、Balance と Intelligence の請求がルーティング先モデルのレートに基づいて行われるため、単価は一律ではなく、各ルーティングの判断によって変動することです。
Key Takeaways
- Cursor Router は、60 万件以上の実稼働リクエストで訓練されたリクエストごとの分類器であり、ユーザー満足度(AFC)の最大化を目的に最適化されています。
- オンライン A/B テストでは、最上位クラスの出力品質を維持しつつコストが 60% 削減されました。また、早期アクセスを行った 3 件の企業アカウントでは、Opus 4.8 と比較して 30〜50% のコスト削減を実現しています。
コミットあたりのコスト:Balance は 4.63 ドル
原文を表示
Cursor has made Cursor Router generally available for Teams and Enterprise plans. The system is a classifier that inspects each request before a model runs, then dispatches it to the model best suited to that specific task. The cursor team reports frontier-quality performance at 60% savings in online A/B tests, and 30–50% savings for early-access enterprise accounts.
The problem it targets is a spend pattern rather than a capability gap. Cursor states that roughly 60% of its developers pick a single model as a daily driver. Routine work therefore gets completed at frontier prices, and AI spend grows faster than output quality. Routing is Cursor’s answer to that mismatch.
What the classifier actually reads
Cursor Router is not a fallback chain or a retry mechanism. It is a classifier trained on 600k+ live requests, evaluated in an online A/B test across millions of live requests, and optimized for user satisfaction (AFC) as its reward signal.
For each request, the router analyzes four inputs: query, context, task complexity, and domain. It combines these with learned knowledge of each model’s behavior. Cursor publishes three routing rules that follow from that classification:
Simple work goes to the most price-efficient models.
UI updates go to the model with the best taste.
Complex, long-horizon problems go to frontier reasoning models.
That third rule carries the weight of the cost argument. The savings do not come from downgrading hard problems. They come from removing routine work from frontier pricing while the difficult tier stays intact.
One implementation detail deserves attention from anyone who has built a router. Cursor Router is cache-aware in both training and evaluation. It is trained on a dataset where routing produces cache misses, and the reported cost savings include the cost of those cache misses. Switching models mid-conversation invalidates prompt cache, and that cost is real. Routers that ignore it overstate their savings.
The classifier was also designed for model churn. Cursor states it can update the router as newer models ship, which matters in a market where the frontier moves monthly.
*{box-sizing:border-box;margin:0;padding:0}
body{background:#0b0b0b;color:#e8e8e8;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;padding:0}
#mtp-router-explainer{background:#0b0b0b;border:1px solid #222;border-radius:10px;overflow:hidden}
.hd{padding:18px 20px;border-bottom:1px solid #222;background:#0e0e0e}
.kick{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#76B900;font-weight:700}
.hd h2{font-size:clamp(17px,2.4vw,21px);margin:6px 0 4px;color:#fff;font-weight:650;line-height:1.25}
.hd p{font-size:13px;color:#8a8a8a;line-height:1.5}
.tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid #222;background:#0e0e0e}
.tab{flex:1 1 auto;min-width:110px;padding:11px 8px;font-size:12px;font-weight:600;color:#8a8a8a;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:inherit;transition:.15s}
.tab:hover{color:#cfcfcf}
.tab.on{color:#76B900;border-bottom-color:#76B900;background:#111}
.pane{display:none;padding:20px}
.pane.on{display:block}
.lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#8a8a8a;font-weight:700;margin-bottom:9px}
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px}
.chip{padding:8px 12px;font-size:12px;border:1px solid #2a2a2a;background:#141414;color:#cfcfcf;border-radius:6px;cursor:pointer;font-family:inherit;transition:.15s;text-align:left}
.chip:hover{border-color:#3d3d3d;color:#fff}
.chip.on{border-color:#76B900;color:#76B900;background:rgba(118,185,0,.09)}
.flow{display:grid;grid-template-columns:1fr;gap:10px}
.box{background:#111;border:1px solid #222;border-radius:8px;padding:14px}
.box h4{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#76B900;margin-bottom:9px;font-weight:700}
.sig{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px}
.sigcell{background:#0d0d0d;border:1px solid #1e1e1e;border-radius:6px;padding:9px 10px}
.sigcell .k{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#7a7a7a;margin-bottom:3px}
.sigcell .v{font-size:12.5px;color:#e8e8e8;font-weight:600;line-height:1.35}
.arrow{text-align:center;color:#76B900;font-size:15px;line-height:1}
.tier{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.tierdot{width:9px;height:9px;border-radius:50%;background:#76B900;flex:none}
.tiername{font-size:15px;font-weight:700;color:#fff}
.tierwhy{font-size:12.5px;color:#9a9a9a;line-height:1.55;margin-top:8px}
.rule{font-size:11.5px;color:#76B900;background:rgba(118,185,0,.07);border-left:2px solid #76B900;padding:7px 10px;margin-top:10px;border-radius:0 4px 4px 0;line-height:1.5}
.modebtns{display:flex;gap:7px;margin-bottom:15px;flex-wrap:wrap}
.modebtn{flex:1 1 90px;padding:10px 8px;font-size:12.5px;font-weight:700;border:1px solid #2a2a2a;background:#141414;color:#cfcfcf;border-radius:6px;cursor:pointer;font-family:inherit}
.modebtn.on{border-color:#76B900;color:#76B900;background:rgba(118,185,0,.09)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:12px}
.stat{background:#111;border:1px solid #222;border-radius:8px;padding:13px}
.stat .n{font-size:24px;font-weight:700;color:#76B900;line-height:1.1}
.stat .n.na{font-size:15px;color:#6a6a6a}
.stat .c{font-size:11.5px;color:#8a8a8a;margin-top:5px;line-height:1.45}
.bar{margin-bottom:11px}
.barhead{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;margin-bottom:5px}
.barhead .nm{color:#e8e8e8;font-weight:600}
.barhead .vl{color:#76B900;font-weight:700;font-variant-numeric:tabular-nums}
.bartrack{height:9px;background:#171717;border-radius:5px;overflow:hidden}
.barfill{height:100%;background:#76B900;border-radius:5px;transition:width .35s ease}
.barfill.alt{background:#3d5c00}
.slider{width:100%;-webkit-appearance:none;appearance:none;height:4px;background:#222;border-radius:3px;outline:none;margin:6px 0 3px}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:#76B900;cursor:pointer}
.slider::-moz-range-thumb{width:17px;height:17px;border-radius:50%;background:#76B900;cursor:pointer;border:none}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:#7a7a7a;padding:7px 8px;border-bottom:1px solid #222;font-weight:700}
td{padding:9px 8px;border-bottom:1px solid #191919;color:#cfcfcf;line-height:1.45;vertical-align:top}
td strong{color:#fff}
.note{font-size:11.5px;color:#7a7a7a;line-height:1.55;margin-top:13px;padding-top:12px;border-top:1px solid #1c1c1c}
.ft{padding:11px 20px;border-top:1px solid #222;background:#0e0e0e;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;color:#6a6a6a}
.ft b{color:#76B900;font-weight:700}
a{color:#76B900;text-decoration:none}
a:hover{text-decoration:underline}
@media(max-width:640px){.pane{padding:15px}.hd{padding:15px}.tab{min-width:80px;font-size:11px;padding:10px 5px}.stat .n{font-size:20px}}
Interactive Explainer
Inside Cursor Router: classification, tiers and published results
Every figure below is taken from Cursor’s launch post and changelog (July 22, 2026). Values Cursor did not publish are marked as such.
Route a request
Modes
Cost per commit
How it was measured
Pick a task — see how the classifier reads it
Step 1 · Signals read before any model runs
▼
Step 2 · Routing tier selected
Cursor publishes three routing rules and does not name a specific model per task type. The tier shown is Cursor’s own published category; the sample tasks are illustrative applications of those three rules. Cursor states the classifier reads query, context, task complexity and domain, combined with what it knows about each model’s behavior.
Auto mode — three points on the cost–intelligence Pareto frontier
Cost
Balance
Intelligence
Cursor’s description
Published cost per commit (early access measurement)
Linear projection — drag to set monthly commit volume
Volume: 1,000 commits / month
Model / mode$ / commitMonthlyvs Opus 4.8
Cost-per-commit figures are Cursor’s published early-access observations. The projection is straight multiplication of those unit figures — it is arithmetic, not a Cursor forecast, and assumes a constant task mix. Cursor reports GPT-5.6 Sol matched the cost of Intelligence mode but with lower user satisfaction; it did not publish an exact figure for it.
ElementWhat Cursor reports
Training data600k+ live requests
Reward signalUser satisfaction (AFC)
EvaluationOnline A/B test across millions of live requests, not offline evals
Quality metric 1User satisfaction — agent success classified from user responses. Moving to the next feature is a strong positive; correcting the agent is a strong negative.
Quality metric 2Keep rate — how much agent-generated code remains in the codebase over time
Metric track recordBoth metrics used to evaluate every model launch and harness change for the past nine months
Cache handlingCache-aware in training and evaluation. Trained on a dataset where routing causes cache misses; reported savings include cache-miss cost.
Platform scaleCursor routes hundreds of millions of coding requests per week across models and providers
Problem being solved~60% of Cursor developers pick one model as a daily driver, putting routine work on frontier pricing
Cursor’s stated reason for choosing online A/B tests: offline evals are limited by small size, distance from real usage, and the difficulty of reducing success to a rubric — and they omit the extra cache-miss cost incurred when switching models mid-conversation.
Source: cursor.com/blog/router · verified Jul 22, 2026
Built by Marktechpost
var TASKS=[
{t:"Rename a variable across one file",q:"Short, literal, single-file",c:"One file in context",x:"Low",d:"Refactor / syntax",tier:0},
{t:"Fix a failing unit test",q:"Explicit error text supplied",c:"Test file + source under test",x:"Low to moderate",d:"Testing",tier:0},
{t:"Adjust spacing and states on a settings page",q:"Visual intent, subjective outcome",c:"Component + stylesheet",x:"Moderate",d:"UI / front-end",tier:1},
{t:"Build a new dashboard component",q:"Design-led, taste-sensitive",c:"Design system + sibling components",x:"Moderate",d:"UI / front-end",tier:1},
{t:"Trace a race condition across services",q:"Open-ended, hypothesis-driven",c:"Multi-repo, logs, long history",x:"High, long-horizon",d:"Distributed systems",tier:2},
{t:"Migrate an ORM layer across the codebase",q:"Multi-step plan with dependencies",c:"Hundreds of files, schema",x:"High, long-horizon",d:"Architecture / migration",tier:2}
];
var TIERS=[
{n:"Price-efficient models",w:"Routine work does not need frontier pricing. This is the tier Cursor says the router exists to reclaim — the requests that were previously being paid for at daily-driver frontier rates.",r:"Cursor's published rule: \u201CSimple work goes to the most price-efficient models.\u201D"},
{n:"Best-taste model",w:"Interface work is judged on subjective quality rather than pass/fail correctness, so the router selects for output taste rather than raw reasoning depth.",r:"Cursor's published rule: \u201CUI updates go to the model with the best taste.\u201D"},
{n:"Frontier reasoning models",w:"Long-horizon problems keep their full frontier budget. The savings claim rests on this tier staying intact — Cursor states it keeps hard tasks on the most capable models.",r:"Cursor's published rule: \u201CMore complex, long-horizon problems go to frontier reasoning models.\u201D"}
];
var MODES=[
{n:"Cost",stats:[["n/a","Published quality delta"],["n/a","Published cost delta"],["n/a","Cost per commit"]],
d:"\u201CGood quality, reaching the highest available intelligence while optimizing token spend.\u201D",
note:"Cursor published no A/B quality or cost figures for Cost mode, and the changelog specifies routed-model billing only for Balance and Intelligence. Treat Cost mode as undocumented on numbers until Cursor releases them."},
{n:"Balance",stats:[["above","User satisfaction vs Opus 4.8"],["~36%","Lower cost than Opus 4.8"],["$4.63","Cost per commit"]],
d:"\u201CStrong quality, matching the frontier models that most people like to daily drive.\u201D",
note:"Cursor also reports Balance delivers comparable satisfaction to GPT-5.6 Sol at a lower spend rate. Balance bills at the routed model's rate."},
{n:"Intelligence",stats:[["~60%","Lower cost at near-Fable satisfaction"],["~15%","Satisfaction lift over Opus 4.8, near-equal cost"],["$6.76","Cost per commit"]],
d:"\u201CFrontier quality, with performance matching the most expensive and powerful models that might be out of reach for daily use.\u201D",
note:"The two Intelligence figures are separate comparisons: near-Fable satisfaction at ~60% lower cost, and ~15% higher satisfaction than Opus 4.8 at roughly the same cost. Intelligence bills at the routed model's rate."}
];
var COMMITS=[["Auto Balance",4.63,1],["Auto Intelligence",6.76,1],["Opus 4.8",7.34,0],["Fable 5",12.69,0]];
function $(i){return document.getElementById(i)}
function money(v){return "$"+v.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:0})}
var chips=$("taskchips");
TASKS.forEach(function(t,i){
var b=document.createElement("button");b.className="chip"+(i===0?" on":"");b.textContent=t.t;
b.onclick=function(){[].forEach.call(chips.children,function(c){c.className="chip"});b.className="chip on";drawTask(i);};
chips.appendChild(b);
});
function drawTask(i){
var t=TASKS[i],T=TIERS[t.tier];
$("sigrow").innerHTML=[["Query",t.q],["Context",t.c],["Task complexity",t.x],["Domain",t.d]]
.map(function(p){return ''+p[0]+'
'+p[1]+'
'}).join("");
$("tiername").innerHTML=T.n;$("tierwhy").innerHTML=T.w;$("tierrule").innerHTML=T.r;
post();
}
drawTask(0);
[].forEach.call(document.querySelectorAll(".tab"),function(b){
b.onclick=function(){
[].forEach.call(document.querySelectorAll(".tab"),function(x){x.className="tab"});b.className="tab on";
[].forEach.call(document.querySelectorAll(".pane"),function(x){x.className="pane"});
$("p"+b.getAttribute("data-t")).className="pane on";post();
};
});
[].forEach.call(document.querySelectorAll(".modebtn"),function(b){
b.onclick=function(){
[].forEach.call(document.querySelectorAll(".modebtn"),function(x){x.className="modebtn"});b.className="modebtn on";
drawMode(+b.getAttribute("data-m"));
};
});
function drawMode(i){
var m=MODES[i];
$("modestats").innerHTML=m.stats.map(function(s){
var na=s[0]==="n/a";
return ''+(na?"Not published":s[0])+'
'+s[1]+'
';
}).join("");
$("modedesc").innerHTML=m.d;$("modenote").innerHTML=m.note;post();
}
drawMode(1);
$("bars").innerHTML=COMMITS.map(function(c){
var w=(c[1]/12.69*100).toFixed(1);
return ''+c[0]+'$'+c[1].toFixed(2)+'
'+
'
';
}).join("");
var vol=$("vol");
function proj(){
var n=+vol.value,base=7.34*n;
$("volval").textContent=n.toLocaleString("en-US");
$("projbody").innerHTML=COMMITS.map(function(c){
var tot=c[1]*n,diff=base-tot,sign=diff>0?"\u2212":"+";
var col=diff>0?"#76B900":(diff'+c[0]+'$'+c[1].toFixed(2)+''+
''+money(tot)+''+
''+(diff===0?"\u2014":sign+money(Math.abs(diff)))+'
';
}).join("");
post();
}
vol.oninput=proj;proj();
function post(){
var h=document.getElementById("mtp-router-explainer").offsetHeight+40;
if(window.parent!==window)window.parent.postMessage({mtpFrame:"router-explainer",height:h},"*");
}
window.addEventListener("load",post);setTimeout(post,300);
Why online A/B tests instead of offline evals
Cursor deliberately avoided offline evals as its primary measurement. Its stated reasoning is that offline evals suffer from small sample size, distance from real-world usage, and the difficulty of reducing success to a rubric. They also omit the cache-miss cost incurred when switching models.
Real routing happens across a conversation, not a single turn. Developers write code, ask follow-ups, hit errors, and continue, often across hundreds of requests in a week. The router must decide both which model to pick and when to switch.
Two quality metrics carry the evaluation:
User satisfaction: agent success classified from user responses. Moving on to the next feature is a strong positive signal. Correcting the agent is a strong negative one.
Keep rate: how much agent-generated code remains in the codebase over time.
Cursor team states it has used both metrics to evaluate every model launch and harness improvement for the past nine months. This is a meaningful credibility marker: the metrics predate the product they are now being used to justify.
Three modes, and the numbers behind them
Auto mode now exposes three optimization settings that move the user along the cost–intelligence Pareto frontier.
Auto Intelligence lands near Fable on user satisfaction at about 60% lower cost for teams. Against Opus 4.8, it lifts satisfaction about 15% at nearly the same cost.
Auto Balance lands above Opus 4.8 on user satisfaction at about 36% lower cost. Against GPT-5.6 Sol, it delivers comparable satisfaction at a lower spend rate.
Cost mode is described as good quality reaching the highest available intelligence while optimizing token spend. Cursor published no A/B quality or cost figures for it.
Cost per request is only part of the picture, so Cursor also measured cost per commit:
Model / modeCost per commit
Auto Balance$4.63
Auto Intelligence$6.76
Opus 4.8$7.34
Fable 5$12.69
GPT-5.6 Sol matched the cost of Intelligence mode but produced lower user satisfaction. Cursor did not publish an exact per-commit figure for it.
(function(){var f=document.getElementById("mtp-router-deploy-frame");
window.addEventListener("message",function(e){
if(e.data&&e.data.mtpFrame==="router-deploy"&&e.data.height){f.style.height=e.data.height+"px";}
});})();
Deployment reality and the one hard constraint
Cursor Router ships across desktop, web, iOS, CLI, and the Cursor SDK. It is on by default for Teams plans. Enterprise admins enable it from the dashboard.
The changelog specifies the admin surface: per-team and per-group enablement, restrictions on which optimization modes members can select, a configurable default mode, and model allow and block lists. Soft and hard enforcement options exist for standardizing on Auto. The routed model can be displayed or hidden, and it is hidden by default — teams that want routing transparency must opt in.
Two constraints are important for procurement. First, Grok 4.5 is required as a price-efficient routing option, so the model block list cannot be used to exclude it. Grok 4.5, released July 8, is priced at $2/M input and $6/M output tokens, with a fast variant at $4/M and $18/M. Second, Balance and Intelligence bill at the routed model’s rate, so unit cost varies with each routing decision rather than settling at a flat price.
Key Takeaways
Cursor Router is a per-request classifier trained on 600k+ live requests, optimized for user satisfaction (AFC).
Online A/B tests report frontier-quality output at 60% savings; three early-access enterprise accounts saved 30–50% versus Opus 4.8.
Cost per commit: $4.63 Balance
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み