トラブルシュート
lait doctor による環境・設定・接続の一括診断、接続・認証・モデル・終了コード・詳細ログの確認。
まず、接続先が起動していることと、指定したモデル ID が正しいことを確認してください。インストール済みなら lait、ソースから試している場合は各コマンドの先頭を cargo run -- に置き換えて実行します。
まず lait doctor を実行する
設定ファイルの構文、${VAR} で参照している環境変数、default.model の解決、各プロバイダーへの接続と認証、設定済みモデル ID がサーバー上に存在するか、mcp_servers: の起動・初期化、agents:/skills: が参照するファイルの存在を一括で診断します。原因を一つずつ手探りする前に、まずこれを実行してください。
lait doctor
各項目を OK / WARN / NG と対処ヒント付きで表示し、NG が一つでもあれば終了コードは非ゼロになります。--json を付けると機械可読な出力になり、CI での自動チェックにも使えます。
lait doctor --json
症状から調べる
connection refused になる
サーバーが起動していないか、接続先のホスト・ポートが違います。
- LM Studio の Developer(Local Server)画面でサーバーが起動しているか確認します。
- 既定値は
http://localhost:1234/v1です。別の接続先なら--base-urlまたはOPENAI_BASE_URLを指定します。 - 設定済みの接続先に問い合わせるには、
lait models --remoteを使います。
lait --base-url http://localhost:1234/v1 --model "<MODEL_ID>" "接続を確認してください"
lait models --remote
404 や「モデルが見つからない」になる
接続先の API ベース URL とモデル名を確認します。
- ベース URL は API の仕様に合わせて指定してください。LM Studio の既定値は
/v1付きですが、すべてのサーバーが同じパスを使うとは限りません。 - LM Studio でモデルをロードし、モデル ID を完全に一致させます。設定ファイルの alias を使っている場合は
lait modelsで alias と解決先を確認します。 - サーバーが公開しているモデルを確認するには
lait models --remoteを使います。
401 や認証エラーになる
サーバーの認証設定と、lait が使う API キーを確認します。
- 一時的には
OPENAI_API_KEYまたは--api-keyを指定します。 - 設定ファイルでは
api_key、${VAR_NAME}、api_key_cmdを使えます(詳しくは 設定ファイル)。 - API キーをシェルの履歴に残したくない場合は、CLI 引数ではなく環境変数または
.envを使ってください。 - 認証なしの LM Studio では API キーを省略できます。
export OPENAI_API_KEY="your-api-key"
lait --model "<MODEL_ID>" "認証付きでリクエストしてください。"
--model が不足していると言われる
次のいずれかでモデルを指定します。
lait --model "<MODEL_ID>" "こんにちは。"
export LLM_MODEL="<MODEL_ID>"
lait "こんにちは。"
設定ファイルを使う場合は default.model を指定できます。alias を登録した場合は、lait models で名前を確認してください。
応答が遅い、またはタイムアウトする
- LM Studio のモデルがロード済みか、サーバーログにエラーがないかを確認します。初回リクエストはモデルの準備に時間がかかることがあります。
- クラウド API ではネットワーク、レート制限、モデルの混雑も確認します。
- 対応モデルでは
--reasoning-effortを下げ、--max-tokensを小さくすると、生成時間を短くできる場合があります。--temperatureは出力のランダムさを調整する値で、生成長の上限ではありません。 - ステップの
timeout:はそのステップの1回の試行の制限です。ワークフロー全体の制限はトップレベルのtimeout:で設定します(ワークフロー)。
JSON、添付ファイル、ツールで失敗する
--jsonは CLI の出力形式、--json-schemaは API に Structured Outputs を要求する機能です。目的に合う方を選びます(出力例)。--fileはファイルの内容、--imageは vision 対応モデル向けの画像入力です(ファイル・画像の添付)。- MCP、subagent、カスタムシェルツールの設定名と参照名が一致しているか確認し、必要なら
--approve-toolsで実行前に確認します(MCP、サブエージェント、カスタムシェルツール)。
終了コード
スクリプトや CI から失敗の種類を区別できるよう、lait は終了コードを使い分けます。
| コード | 意味 |
|---|---|
0 |
成功(--help / --version を含む) |
1 |
上記以外の一般的なエラー |
2 |
コマンドライン引数のエラー(未知のフラグ、必須引数の不足など) |
3 |
lait lint の指摘、または workflow / agent Markdown の構文エラー |
4 |
モデル API のエラー(接続失敗、認証エラー、レート制限など) |
5 |
timeout: によるタイムアウト、またはアプリケーション内のキャンセル |
130 |
Ctrl-C(SIGINT)による中断 |
エラー時は lait: <エラーメッセージ> を標準エラー出力に表示します。Ctrl-C の通常の終了コードは 5 ではなく 130 です。
サーバーへ実際に何が送られたか確認する
原因が特定しづらいときは -v または -vv を付け、標準エラー出力をファイルに保存します。
lait --model my-model -vv "この変更をレビューして" 2>trace.log
| フラグ | 出力内容 |
|---|---|
-v |
解決後の model_id / base_url / サンプリングパラメータ、有効な mcp / skills / subagents / tools、ワークフローのステップ開始・終了・リトライ、ツール呼び出しの名前と引数 |
-vv |
上記に加えてリクエスト/レスポンス JSON 全体 |
LAIT_LOG 環境変数(tracing_subscriber::EnvFilter の書式、例: LAIT_LOG=debug)を設定すると -v / -vv より優先されます。ログは標準エラー出力に出るため、応答本文のパイプ利用を壊しません。API キーの値や先頭文字は表示せず、取得元(literal / command / absent)のみを表示します。