設定
Pi は、グローバル設定をオーバーライドするプロジェクト設定を持つ JSON 設定ファイルを使用します。
| 位置 | 範囲 |
|---|---|
~/.pi/agent/settings.json |
グローバル (すべてのプロジェクト) |
.pi/settings.json |
プロジェクト(カレントディレクトリ) |
直接編集するか、一般的なオプションに /settings を使用します。
プロジェクトトラスト
インタラクティブな起動時に、pi は、プロジェクトのローカル設定、リソース、またはプロジェクト .agents/skills が含まれており、~/.pi/agent/trust.json のフォルダーまたは親フォルダーに対する決定が保存されていないプロジェクト フォルダーを信頼する前に質問します。プロジェクトを信頼すると、pi は .pi/settings.json および .pi リソースをロードし、不足しているプロジェクト パッケージをインストールし、プロジェクト拡張機能を実行できます。
非対話型モード (-p、--mode json、および --mode rpc) では、信頼プロンプトは表示されません。該当する保存された信頼決定がなければ、グローバル設定の defaultProjectTrust を使用します: ask (デフォルト) と never はこれらのプロジェクト リソースを無視し、always はそれらを信頼します。 --approve/-a または --no-approve/-na を渡して、1 回の実行でプロジェクトの信頼をオーバーライドします。
拡張機能または保存された決定が適用されない場合、defaultProjectTrust はフォールバック動作を制御します。 ~/.pi/agent/settings.jsonで"ask"、"always"、"never"に設定するか、/settingsで変更します。
pi config とパッケージ コマンドは、pi update がプロンプトを表示しないことを除き、同じプロジェクト信頼フローを使用します。 1 つのコマンドに対してプロジェクトのローカル設定を信頼するには --approve を、無視するには --no-approve を渡します。
対話モードで /trust を使用すると、直接の親フォルダーに対する信頼を含め、将来のセッションのためにプロジェクトの信頼決定を保存できます。 ~/.pi/agent/trust.json のみを書き込みます。現在のセッションはリロードされないため、変更を有効にするために pi を再起動します。
すべての設定
モデルと思考
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
defaultProvider |
弦 | - | デフォルトのプロバイダー (例: "anthropic"、"openai") |
defaultModel |
弦 | - | デフォルトのモデルID |
defaultThinkingLevel |
弦 | - | "off", "minimal", "low", "medium", "high", "xhigh", "max" |
hideThinkingBlock |
ブール値 | false |
出力内の思考ブロックを非表示にする |
showCacheMissNotices |
ブール値 | false |
重大なプロンプト キャッシュ ミスのトランスクリプト通知を表示する |
thinkingBudgets |
物体 | - | 思考レベルごとのカスタムトークン予算 |
考えている予算
{
"thinkingBudgets": {
"minimal": 1024,
"low": 4096,
"medium": 10240,
"high": 32768
}
}UIとディスプレイ
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
theme |
弦 | "dark" |
テーマ名 ("dark"、"light"、またはカスタム) |
externalEditor |
弦 | $VISUAL、次に $EDITOR、Windows ではメモ帳、その他の場所では nano |
Ctrl+G 外部エディターのコマンド。環境変数よりも優先されます |
quietStartup |
ブール値 | false |
起動ヘッダーを非表示にする |
defaultProjectTrust |
弦 | "ask" |
フォールバック プロジェクトの信頼動作: "ask"、"always"、または "never"。グローバル設定のみ |
collapseChangelog |
ブール値 | false |
更新後に要約された変更ログを表示する |
enableInstallTelemetry |
ブール値 | true |
最初のインストールまたは変更ログで更新が検出された後、匿名のインストール/更新バージョン ping を送信します。これは更新チェックを制御しません |
enableAnalytics |
ブール値 | false |
オプトイン分析データ共有。現在、実験的な初回セットアップ時にのみ要求されます (PI_EXPERIMENTAL=1) |
trackingId |
弦 | - | enableAnalytics がオンになったときに生成される分析追跡識別子 |
doubleEscapeAction |
弦 | "tree" |
ダブルエスケープのアクション: "tree"、"fork"、または "none" |
treeFilterMode |
弦 | "default" |
/tree のデフォルトフィルター: "default"、"no-tools"、"user-only"、"labeled-only"、"all" |
editorPaddingX |
番号 | 0 |
入力エディターの水平パディング (0 ~ 3) |
outputPad |
番号 | 1 |
ユーザー メッセージ、アシスタント メッセージ、思考の水平パディング (0 または 1) |
autocompleteMaxVisible |
番号 | 5 |
オートコンプリート ドロップダウンに表示される項目の最大数 (3 ~ 20) |
showHardwareCursor |
ブール値 | false |
TUI が IME サポート用に配置されている間、ターミナル カーソルを表示します |
tuiMode |
弦 | "regular" |
インタラクティブ TUI モード: "regular" または実験的 "fullscreen"。 /settings からの変更はすぐに適用されます。 --tui-mode は起動時にこの設定を上書きします |
fullscreenExitOutput |
弦 | "transcript" |
全画面終了出力: "transcript" は最終的なトランスクリプトと再開ヒントを印刷しますが、"resume-hint" は前の画面を復元し、再開ヒントのみを印刷します。通常の TUI モードでは効果がありません |
fullscreenScrollbar |
弦 | "auto" |
全画面トランスクリプト スクロールバー: "auto" はスクロール中に一時的に表示し、"always" は右端の列を予約して表示したままにし、"hidden" は非表示にします。通常の TUI モードでは効果がありません |
VS Code の場合、エディターが終了した後に pi が再開されるように、--wait を含めます。
{
"externalEditor": "code --wait"
}テレメトリとアップデートのチェック
enableInstallTelemetry は、https://pi.dev/api/report-install への匿名インストール/更新 ping のみを制御します。テレメトリをオプトアウトしても、更新チェックは無効になりません。 Pi は引き続き https://pi.dev/api/latest-version をフェッチして最新バージョンを探すことができます。
Pi バージョン更新チェックを無効にするには、PI_SKIP_VERSION_CHECK=1 を設定します。 --offline または PI_OFFLINE=1 を使用して、更新チェック、パッケージ更新チェック、インストール/更新テレメトリなど、ここで説明するすべての起動ネットワーク操作を無効にします。
ネットワーク
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
httpProxy |
弦 | - | HTTP プロキシ URL は HTTP_PROXY および HTTPS_PROXY として適用されます。グローバル設定のみ。 |
{
"httpProxy": "http://127.0.0.1:7890"
}警告
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
warnings.anthropicExtraUsage |
ブール値 | true |
Anthropic サブスクリプション認証で有料の追加使用量が使用される可能性がある場合に警告を表示します |
{
"warnings": {
"anthropicExtraUsage": false
}
}圧縮
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
compaction.enabled |
ブール値 | true |
自動圧縮を有効にする |
compaction.reserveTokens |
番号 | 16384 |
LLM 応答用に予約されたトークン |
compaction.keepRecentTokens |
番号 | 20000 |
保持する最近のトークン (要約されていない) |
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}ブランチの概要
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
branchSummary.reserveTokens |
番号 | 16384 |
branch summarization 用に予約されたトークン |
branchSummary.skipPrompt |
ブール値 | false |
「分岐を要約しますか?」をスキップします。 /tree ナビゲーションのプロンプト (デフォルトでは概要なし) |
リトライ
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
retry.enabled |
ブール値 | true |
一時的なエラーに対するエージェントレベルの自動再試行を有効にする |
retry.maxRetries |
番号 | 3 |
エージェントレベルの最大再試行回数 |
retry.baseDelayMs |
番号 | 2000 |
エージェントレベルの指数バックオフの基本遅延 (2 秒、4 秒、8 秒) |
retry.provider.timeoutMs |
番号 | SDK デフォルト | プロバイダー/SDK リクエストのタイムアウト (ミリ秒) |
retry.provider.maxRetries |
番号 | 0 |
プロバイダー/SDK 再試行 |
retry.provider.maxRetryDelayMs |
番号 | 60000 |
失敗するまでのサーバー要求の最大遅延 (60 秒) |
プロバイダーが retry.provider.maxRetryDelayMs より長い再試行遅延をリクエストすると、リクエストはサイレントに待機するのではなく、有益なエラーが表示されてただちに失敗します。制限を無効にするには、0 に設定します。
プロバイダーレベルの再試行が明示的に必要でない限り、retry.provider.maxRetries を 0 のままにしておきます。 0 より上に設定すると、SDK/プロバイダーは、Pi がエラーを検出する前に使用量制限外エラーの処理を再試行するため、状況によってはプロバイダー クォータがリセットされるまでエージェントがブロックされる可能性があります。
{
"retry": {
"enabled": true,
"maxRetries": 3,
"baseDelayMs": 2000,
"provider": {
"timeoutMs": 3600000,
"maxRetries": 0,
"maxRetryDelayMs": 60000
}
}
}メッセージ配信
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
steeringMode |
弦 | "one-at-a-time" |
ステアリングメッセージの送信方法: "all" または "one-at-a-time" |
followUpMode |
弦 | "one-at-a-time" |
フォローアップ メッセージの送信方法: "all" または "one-at-a-time" |
transport |
弦 | "auto" |
複数のトランスポートをサポートするプロバイダーの優先トランスポート: "sse"、"websocket"、"websocket-cached"、または "auto" |
httpIdleTimeoutMs |
番号 | 300000 |
HTTP ヘッダー/本文のアイドル タイムアウト (ミリ秒単位)。明示的なストリーム アイドル タイムアウトを持つプロバイダーでも使用されます。無効にするには、0 に設定します。 |
websocketConnectTimeoutMs |
番号 | 15000 |
WebSocket トランスポートをサポートするプロバイダーの WebSocket 接続/オープン ハンドシェイク タイムアウト (ミリ秒単位)。無効にするには、0 に設定します。 |
端末とイメージ
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
terminal.showImages |
ブール値 | true |
ターミナルに画像を表示する (サポートされている場合) |
terminal.imageWidthCells |
番号 | 60 |
ターミナルセルの推奨インライン画像幅 |
terminal.clearOnShrink |
ブール値 | false |
コンテンツが縮小するときに空の行をクリアします (ちらつきが発生する可能性があります) |
images.autoResize |
ブール値 | true |
画像のサイズを最大 2000x2000 に変更します。 @file 添付ファイル、read、ツールによって返された画像に適用されます |
images.blockImages |
ブール値 | false |
すべての画像が LLM に送信されるのをブロックする |
シェル
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
shellPath |
弦 | - | カスタム シェル パス (Windows 上の Cygwin など)。ホームディレクトリの先頭の~をサポートします |
shellCommandPrefix |
弦 | - | すべての bash コマンドのプレフィックス (例: "shopt -s expand_aliases") |
npmCommand |
弦[] | - | npm パッケージの検索/インストール操作に使用されるコマンド argv (例: ["mise", "exec", "node@20", "--", "npm"]) |
{
"npmCommand": ["mise", "exec", "node@20", "--", "npm"]
}npmCommand は、git パッケージ内のインストール、アンインストール、依存関係のインストールを含む、すべての npm パッケージ マネージャー操作に使用されます。ユーザースコープの npm パッケージは ~/.pi/agent/npm/ にインストールされます。プロジェクト スコープの npm パッケージは .pi/npm/ にインストールされます。プロセスを起動する必要があるとおりに、argv スタイルのエントリを正確に使用してください。 npmCommand が設定されている場合、git パッケージの依存関係インストールでは、ラッパーまたは代替パッケージ マネージャーの npm 固有のフラグを回避するために、プレーンな install が使用されます。
セッション
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
sessionDir |
弦 | - | セッションファイルが保存されるディレクトリ。絶対パスまたは相対パスに ~ を加えたものを受け入れます。 |
{ "sessionDir": ".pi/sessions" }複数のソースでセッション ディレクトリが指定されている場合、settings.json では優先順位は --session-dir、PI_CODING_AGENT_SESSION_DIR、次に sessionDir です。
モデルサイクリング
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabledModels |
弦[] | - | Ctrl+P サイクリングのモデル パターン (--models CLI フラグと同じ形式) |
{
"enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
}Markdown
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
markdown.codeBlockIndent |
弦 | " " |
コードブロックのインデント |
markdown.mermaid |
弦 | "streaming" |
マーメイドレンダリングモード: "off"、"final"、または "streaming" |
リソース
これらの設定は、拡張機能、スキル、プロンプト、テーマの読み込み元を定義します。
~/.pi/agent/settings.json のパスは ~/.pi/agent を基準にして解決されます。 .pi/settings.json のパスは .pi を基準にして解決されます。絶対パスと ~ がサポートされています。
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
packages |
配列 | [] |
リソースをロードするための npm/git パッケージ |
extensions |
弦[] | [] |
ローカル拡張ファイルのパスまたはディレクトリ |
skills |
弦[] | [] |
ローカルスキルファイルのパスまたはディレクトリ |
prompts |
弦[] | [] |
ローカル プロンプト テンプレートのパスまたはディレクトリ |
themes |
弦[] | [] |
ローカルのテーマファイルのパスまたはディレクトリ |
enableSkillCommands |
ブール値 | true |
スキルを/skill:nameコマンドとして登録 |
配列は、グロブ パターンと除外をサポートします。除外するには !pattern を使用します。正確なパスを強制的に含めるには +path を使用し、正確なパスを強制的に除外するには -path を使用します。
パッケージ
文字列形式はパッケージからすべてのリソースを読み込みます。
{
"packages": ["pi-skills", "@org/my-extension"]
}オブジェクト フォームは、ロードするリソースをフィルターします。
{
"packages": [
{
"source": "pi-skills",
"skills": ["brave-search", "transcribe"],
"extensions": []
}
]
}パッケージ管理の詳細については、packages.md を参照してください。
例
{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultThinkingLevel": "medium",
"theme": "dark",
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
},
"retry": {
"enabled": true,
"maxRetries": 3
},
"enabledModels": ["claude-*", "gpt-4o"],
"warnings": {
"anthropicExtraUsage": true
},
"packages": ["pi-skills"]
}プロジェクトの上書き
プロジェクト設定 (.pi/settings.json) はグローバル設定をオーバーライドします。ネストされたオブジェクトはマージされます。
// ~/.pi/agent/settings.json (global)
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 16384 }
}
// .pi/settings.json (project)
{
"compaction": { "reserveTokens": 8192 }
}
// Result
{
"theme": "dark",
"compaction": { "enabled": true, "reserveTokens": 8192 }
}