メインコンテンツまでスキップ

完全な設定リファレンス

~/.opencli/config.toml が受け付けるすべてのキー。大半の人が触るのはごく一部で、 それは設定ファイルにあり、そちらはずっと短いです。

一番早い道:OpenCLI にモデルを見つけさせる​

すでに Ollama、LM Studio、vLLM、llama.cpp をローカルで動かしているなら:

opencli provider scan

これは通例の localhost ポートを探り、見つけたサーバーそれぞれに何を提供しているか訊いて、 対応する [model_providers.*] と [[models]] を config.toml に書き込みます —— 既存のコメントと設定は保たれます。--dry-run を足すと、何を書くつもりか先に見られます。

ホスト型の供給元は、カタログから一つ入れて鍵を設定します:

opencli provider list # カタログと、すでに設定済みのもの
opencli provider add openrouter
export OPENROUTER_API_KEY=...

カタログには接続情報しかありません —— バイナリに鍵は同梱されず、 あなたが足すまで何も有効になりません。カタログにないものを設定するには、 下のとおり自分でこれらの節を書きます。

モデルの能力を埋める​

ローカルモデルのコンテキストウィンドウとツール呼び出しの可否は、どこにも公表されていません。 そして当てずっぽうは、未設定より悪いです —— コンテキストウィンドウが大きすぎると、 供給元は自動圧縮する代わりにそのターンを拒否します。モデル本人に訊いてください:

opencli model probe <slug> # --dry-run を足すと下見できます

利用できる場合は実行環境自身のメタデータを読み(Ollama は本物のコンテキスト長と能力一覧を 報告します)、さらに実際のリクエストを一度送って、差し出したツールを呼ぶかどうか、 思考を別の reasoning フィールドで返すかどうかを見ます。分かったことはそのモデルの [[models]] に書き込まれます。

そもそも会話ができないモデル —— 例えば埋め込みモデル —— は provider scan に飛ばされるので、 /model の選択リストには決して届きません。

モデルと供給元を選ぶ​

このビルドはいくつかのゲートウェイのプリセットを同梱していますが、 OpenAI 互換 API で届くモデルなら何でも ~/.opencli/config.toml で設定でき、 再ビルドは要りません。

供給元を足す​

[model_providers.<id>] の項目は同じ id の内蔵供給元を上書きします。 ですからこれは、同梱のゲートウェイをプロキシやミラーに向け直す方法でもあります:

[model_providers.my-gateway]
name = "My Gateway"
base_url = "https://gateway.example.com/v1"
env_key = "MY_GATEWAY_API_KEY"
wire_api = "chat"
# 任意: このゲートウェイが最初のトークンを吐くのが遅いなら上げてください。
stream_idle_timeout_ms = 90000

API 鍵は常に環境変数から読まれ、設定ファイルに保存されることはありません。

モデルを足す​

[[models]] でモデルを宣言します。内蔵プリセットの隣で /model の選択リストに現れ、 model が内蔵プリセットと一致する項目はそれを置き換えます:

[[models]]
model = "qwen3-max"
provider = "my-gateway"
display_name = "Qwen3 Max" # 任意。既定は slug
description = "自前で動かしています。" # 任意
show_in_picker = true # 任意。既定は true

provider は必須で、上で定義した供給元か内蔵のものを指す必要があります。 未定義の供給元を指すモデルは起動時に弾かれます —— あとで無関係なエラーとともに失敗する代わりに。

選択リストに入れずにモデルを選ぶには、model と model_provider を直に設定します:

model = "qwen3-max"
model_provider = "my-gateway"

model が内蔵プリセットでも [[models]] の項目でもないものを指していて、 model_provider も未設定なら、リクエストは openai 供給元に落ち、警告が記録されます。

コンテキストウィンドウ​

このビルドにメタデータのないモデルは、控えめな 131,072 トークンの窓から始まり、 ゲートウェイからの最初の「窓を超えた」拒否から本物の値を学びます。 model_context_window を設定すれば明示的に固定できます。

MCP サーバーにつなぐ​

OpenCLI は ~/.opencli/config.toml で宣言された MCP サーバーにつなげます。

[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env_vars = ["GITHUB_PERSONAL_ACCESS_TOKEN"]

[mcp_servers.internal]
url = "https://mcp.example.com/mcp"

env_vars はそのサーバーが必要とする変数の名前です。 値は、共有されるこのファイルではなく、あなたの他の鍵と一緒に保管されます。 ここで宣言したサーバーは、目の前の対話ではなく、次に開く対話とともに起動します。

デスクトップアプリは Abilities → Connectors から同じ表を書き、 握手のテストと、各サーバーが提供するツールの一覧も行います。

アプリ(Connectors)​

入力欄で $ を使うと ChatGPT のコネクターを挿入できます。ポップオーバーが使えるアプリを並べます。 /apps コマンドは使用可能なアプリと導入済みのアプリを並べます。 接続済みのものが先に来て「接続済み」と表示され、それ以外は「導入可能」と印がつきます。

通知​

OpenCLI は、エージェントが一巡を終えたときに通知フックを走らせられます。

notify = ["/path/to/your/script.sh"]

そのプログラムは引数一つで呼ばれます:何が起きたかを述べる JSON オブジェクト。 切り離して実行されるので、遅いスクリプトが次の一巡を止めることはなく、 失敗したスクリプトは表に出るのではなく記録されます。

JSON スキーマ​

config.toml から生成された JSON スキーマは opencli-rs/core/config.schema.json にあり、リリースごとに config-schema.json として同梱されます。 手でこのファイルを編集するとき、エディターをそこに向ければ補完と検証が効きます。

これは Rust の型から生成され、型と食い違えば CI が落ちます —— つまりこのファイルについての、唯一古びない説明です。

通知の抑止​

OpenCLI は一部の画面のプロンプトについて「二度と表示しない」フラグを [notice] 表に保存します。

Ctrl+C / Ctrl+D での終了は、およそ一秒以内の二度押しをうながす表示を使います (ctrl + c again to quit)。