設定
OpenLimiterは、すべてをあなた自身のユーザーアカウントの下にある1つの状態ディレクトリに保持します。設定ファイル、キャッシュ、ロック、そして任意の手動ドキュメントです。このページは、それがどこにあり、各ファイルが何をするかを説明します。
状態ディレクトリ
| プラットフォーム | パス |
|---|---|
| Windows | %LOCALAPPDATA%\openlimiter |
| macOS | ~/Library/Application Support/openlimiter |
| Linux | ${XDG_STATE_HOME:-~/.local/state}/openlimiter |
プラットフォームが対応している場合、このディレクトリは制限的なパーミッションで作成されます。シンボリックリンクだと判明したパスは、たどられるのではなく、拒否されます。
その中にあるもの
| ファイル | 役割 |
|---|---|
openlimiter-config.json | openlimiter initによって書き込まれます。connectorの一覧、それぞれが検出されたかどうか、statuslineのレイアウトを記録します。 |
openlimiter-cache.json | すべてのコマンドが読み取り、すべての書き込み側がマージする、ただ1つのキャッシュです。 |
openlimiter.lock | 書き込み側だけが保持します。読み取り側が取ることは決してありません。 |
manual.json | 任意です。あなたが手で管理するquotaです。その構造については取り込みを参照してください。 |
キャッシュの振る舞い
- 1つのスキーマ、1つのファイル、1つのロック。調停すべき競合する状態ファイルはありません。
- 読み取り側がロックを取ることは決してありません。読み取り側はファイルを開き、その開いたディスクリプタを検証したうえで読み進めます。そのため、チェックの後にパスがすり替えられても、読み取るバイト列を差し替えることはできません。
- 書き込み側はロックを取り、読み取り、マージ、書き込みのすべてがその内側で行われます。5秒より古いロックは、放棄されたものとみなされ、回収されます。
- すべての置き換えは、リネームの前に安定したストレージへフラッシュされるため、読み取る側は以前の内容か新しい内容のどちらかを見るだけで、部分的なファイルを見ることは決してありません。
キャッシュの健全性は、いつでもopenlimiter doctorで確認できます。キャッシュの状態と、検証に失敗して取り除かれた行の数を出力します。
statuslineのレイアウト
statuslineは、プロバイダーごとにコンパクトな1セルを描きます。名前、5ブロックのバー、パーセンテージで、行の先頭には全体の理由コードとルーティングの推薦が来ます。設定ファイルの中の6つのキーが、その行がどう組み立てられるかを決め、openlimiter configがそれらを読み書きする方法です。
NO_COLOR=1 node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP PREFER ANTIGRAVITY CLAUDE ###.. 64.0% CODEX ####. 84.0% ANTIGRAVITY #.... 28.0% OPENCODE ####. 92.0%
MANUAL #.... 35.0% OPENROUTER ###.. 62.3%すべてのキー
| キー | 受け付ける値 | 意味 |
|---|---|---|
order | プロバイダーidをカンマ区切りで、またはNONE | セルが現れる順番です。あなたが列挙したものが先に来て、除外したプロバイダーはすべて、その後ろの組み込みの順番、つまりサブスクリプションのプランの後にクレジットとAPIのmeterという順番に従います。NONEは、その組み込みの順番に戻る方法です。デフォルトはNONE。 |
meters | worstまたはall | 複数のmeterを持つプロバイダーは、上限に最も近い1つを表示するか、PROVIDER:METERという名前の別々のセルとしてすべて表示します。meterはセッション、日次、週次、月次、クレジットの順に並びます。デフォルトはworst。 |
width | 40から400までの整数 | 行が折り返す前に、1行が使ってよい桁数です。あなたのターミナルを測ることは何もありません。statuslineのホストはターミナルを渡さずにこのコマンドを実行するため、ここで指定した数値がそのまま尊重されます。デフォルトは140。 |
rows | 1または2 | レイアウトが使ってよい行数です。デフォルトは2。 |
bars | trueまたはfalse | falseにすると、0.1.0の単純な1行を、そのままバイト単位で復元します。デフォルトはtrue。 |
color | auto、always、またはnever | autoはターミナルに従います。statuslineのホストの場合、通常は無色を意味します。ホストがターミナルを渡す代わりに出力をキャプチャするためです。alwaysは、ホストがエスケープコードを理解することをあなたが宣言する方法です。デフォルトはauto。 |
読み書きの方法
openlimiter config get statusline
statusline.order=NONE
statusline.meters=worst
statusline.width=140
statusline.rows=2
statusline.bars=true
statusline.color=auto一度に1つのキーずつ、書き込む前に検証されます。そのキーが使えない値を渡すと終了コード2になり、期待していたものが示されます。文書全体がアトミックに置き換えられるため、部分的な書き込みは発生しません。このコマンドが変更するのはstatuslineのキーだけです。connectorの一覧はopenlimiter initのものであり、それ以外のキーを指定すると終了コード2になります。
openlimiter config set statusline.order codex,claude
statusline.order=codex,claude
openlimiter config set statusline.meters all
statusline.meters=all
openlimiter config set statusline.width 12
openlimiter config: statusline.width must be a whole number from 40 to 400.
openlimiter config set statusline.theme dark
openlimiter config: unknown statusline key. Known keys: order, meters, width, rows, bars, color.openlimiter initを再実行しても、ここで設定した内容はそのまま保たれ、connectorだけが再検出されます。このバージョンが読み取れないstatuslineキーがあっても、描画を止めるのではなくデフォルトにフォールバックするため、手で編集した1つのフィールドの誤字が、残り5つを犠牲にすることはありません。
行に収まりきらないとき
行は切り捨てられるのではなく、折り返されます。区切りは2つのセルの間に入り、セルの内側に入ることは決してなく、2行が上限です。それを超えると、上限に最も近いプロバイダーが残され、最後の行の末尾に、表示しきれなかった数が示されます。
openlimiter config set statusline.rows 1 && NO_COLOR=1 node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP PREFER ANTIGRAVITY CODEX ####. 84.0% OPENCODE ####. 92.0% +4 more0.1.0の行を、リクエストに応じて
このレイアウトより前の形式は、バーのない単純な1行でした。それに対してスクリプトを書いていた場合、bars falseでそれを正確に復元でき、テストがその文字列を固定しているため、ずれることはありません。
openlimiter config set statusline.bars false && node packages/cli/dist/bin.js statusline
OpenLimiter NEAR_CAP CLAUDE 64.0% OPENROUTER 62.3% CODEX 84.0% ANTIGRAVITY 28.0% OPENCODE 92.0% MANUAL 35.0% PREFER ANTIGRAVITYClaude Codeの設定
自分のクローンへの絶対パスを使ってください。フォワードスラッシュは、Windowsを含むすべてのプラットフォームで機能します。
{
"statusLine": {
"type": "command",
"command": "node /absolute/path/to/openlimiter/packages/cli/dist/bin.js statusline"
},
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/openlimiter/packages/cli/dist/bin.js hook"
}
]
}
]
}
}2つのうちどちらが書き込むか
statuslineだけです。セッションのペイロードを受け取る経路であり、キャッシュを更新する経路です。hookは読み取るだけで、書き込むことは決してありません。
認証情報
認証情報ライブラリの呼び出しはインターフェースの裏にあり、adapterはこのリリースではスタブ化されているため、ドライバーが与えられるまでopenlimiter initはキーを保存できません。あなたのマシン上の他の何にも触れません。
connectorの検出
検出は、CLIがconnectorに渡す環境の純粋な関数です。状態ディレクトリに手動ドキュメントが置かれているといった、CLIだけが観測できる事実は、明示的なマーカーとして届きます。だからこそ、データを受け取れなかったconnectorを、openlimiter doctorが準備完了だと主張することは決してありません。
openlimiter doctor
CONNECTOR DETECTED FRESHNESS DRIFT
claude no unknown UNVERIFIED
openrouter no unknown UNVERIFIED
codex no unknown UNVERIFIED
antigravity no unknown UNVERIFIED
opencode no unknown UNVERIFIED
manual yes fresh UNVERIFIED
CACHE ok DROPPED 0パースできなかったキャッシュ、あるいは行が取り除かれた状態でパースされたキャッシュがある場合、その旨を伝える1行が赤字で追加されます。これはプロバイダーではなくキャッシュに対する報告です。壊れたファイルは、それが誰の値を保持していたかを信頼して語れないためです。