OpenClawのコストを半分にした方法(Lumin)

Dev.to / 2026/4/7

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • この記事では、OpenClaw型のエージェント的ループが高コストになりやすい主な理由として、同じ大きなシステムプロンプト、ツール/ワークスペースの文脈、ループ構造を毎ターン繰り返し送信してしまう点を挙げています。
  • Luminは、自己ホスト型でOpenAI互換のローカルプロキシであり、圧縮、鮮度(freshness)や鮮度ガード(freshness-guard)ロジックによるキャッシュ、モデルルーティングをリクエストがモデル提供事業者に届く前に適用することでコストを削減すると説明しています。
  • 最大の節約効果は、静的な文脈の圧縮と、多ターンのループで繰り返される文脈の扱いを改善したことによるものでした。重複したプロンプト素材をトリミングする処理は、時間の経過とともに積み重なります。
  • 一定の表形式データに対してフィールド名を繰り返さないことで冗長性を避ける、TOONベースの圧縮レイヤー(構造化JSON配列向け)を新たに紹介しています。
  • 讃度(freshness)とピボット検出により、会話やタスクの意味が新しいデータへと実質的に切り替わった場合に、キャッシュの過度な再利用を防ぎ、古い文脈(stale context)によるリスクを抑えます。

私はエージェント的ワークフローに多くの時間を費やしてきました。特に、モデルが毎ターン大きな塊のコンテキストを再利用する OpenClaw 型のループです。
それは非常に早く高くつきます。

コストの大部分は、繰り返されるコンテキスト、過剰に大きいプロンプト、そして毎ターン同じ構造を行き来させることによって発生していました。あなたが支払っているのは新しい推論ではなく、同じプロンプト、ツールのコンテキスト、そしてループ構造を何度も何度も払い続けている、という状態になりがちです。
そこで私は、プロバイダにリクエストが届く前にコストを削減する、ローカルプロキシの Lumin を構築しました。
GitHub: https://github.com/ryancloto-dot/Lumin

問題:
ほとんどのエージェント的ループは次のようになっています:

大きなシステムプロンプトが毎ターン送られる
繰り返されるワークスペースおよびツールのコンテキスト
ほぼ同一のリクエスト構造をループ内で再送してしまう
プロンプトの大半が変わっていないのに、エージェントがフル価格を支払ってしまう

Lumin の仕組み
Lumin は、あなたのエージェントとモデルプロバイダの間に入ります:
あなたのエージェント → Lumin → OpenAI / Anthropic / Google / Ollama / OpenRouter
|
+> 圧縮
+> キャッシュ + フレッシュネス・ガード
+> モデルルーティング
+> リアルタイムの節約ダッシュボード
セルフホストされており、OpenAI 互換のエンドポイントを公開しているため、統合は通常環境変数 1 つで済みます。

実際に役立ったこと

  1. 静的コンテキストの圧縮
    多くのエージェント呼び出しには、大きいプロンプトが含まれており、それがターンごとにほとんど変わりません。タスクが短いのにプロンプトが巨大なら、繰り返される部分や価値の低い部分を安全に削る余地があることが多いです。これは OpenClaw 型ワークフローで最大級の効果の 1 つでした。

  2. 繰り返しコンテキストの取り扱い

ここで最良の数値が得られました。もしエージェントが複数ターンにわたって非常に似たコンテキストを何度も再送しているなら、ワンショットのリクエストと比べて節約効果が大きく積み上がります。だから、繰り返しコンテキストのループは、より単純な単発(シングルターン)のプロンプトよりもはるかに強い結果を示しました。

  1. TOON による構造化データ

最近、構造化された JSON 配列向けの TOON ベースの圧縮レイヤーを追加しました。各行でフィールド名を繰り返す代わりに、TOON は、モデルに送る前にそれらをよりトークン効率の良い形式で一度だけ宣言します。
TOON の詳細はこちら: https://github.com/toon-format/toon
これはすべてのワークフローに役立つわけではありませんが、入力が大きな均一な構造化エクスポートを含む場合に大いに役立ちます。

  1. フレッシュネス・ガード
    連鎖が新しいデータへと移ったときにキャッシュ再利用を控えるため、フレッシュネスとピボット検出を追加しました。タスクがはっきりとピボットする場合、Lumin は古くなった圧縮済みまたはキャッシュ済みコンテキストを、必要以上に再利用しないようにします。この部分はまだ改善の余地がありますが、それでもコストをそれなしで最適化したくないと思うほど重要でした。

結果:
結果は、ワークロードの形状に大きく依存します。ベンチマークセットでは:

平均節約: 約 11%
繰り返しコンテキストのループ: 最大 57%
構造化エクスポートのワークフロー: 最大 57.5%

繰り返しコンテキストの数値は、同じコンテキストファイルが毎ターン注入される OpenClaw および NanoClaw ユーザーにとって最も関連が高いものです。

統合方法:
オプション 1: エージェントにインストールさせる:
github.com/ryancloto-dot/Lumin から Lumin をインストール
そして自分のセットアップ用に設定する

オプション 2: 環境変数 1 つ:
OpenAI 互換のエージェントの場合:
OPENAI_BASE_URL=http://localhost:8000/v1
Anthropic 互換のルーティングの場合:
ANTHROPIC_BASE_URL=http://localhost:8000/anthropic/main

次にやること:

より良い回答品質の評価(eval)
フレッシュネスとキャッシュ無効化の作業をさらに進める
既存のエージェント用シェルとの統合をよりクリーンにする
公開しやすい形で再現可能な、より広範なワークロードのベンチマーク

試してみてください:
https://github.com/ryancloto-dot/Lumin
もし試す場合は、セットアップ時の摩擦(どこが面倒か)、節約ダッシュボードが分かりやすいか、どこで最も役立つか、そして品質面でどこから攻めすぎてうまくいかないのかについて、具体的なフィードバックをお願いします。