Pi の設定、拡張、プラットフォーム設定、API リファレンス。

テーマ

pi はテーマを作成できます。セットアップ用にビルドするように依頼してください。

テーマは、TUI の色を定義する JSON ファイルです。

目次

所在地

Pi は次からテーマを読み込みます:

  • 内蔵: darklight
  • グローバル: ~/.pi/agent/themes/*.json
  • プロジェクト: .pi/themes/*.json (プロジェクトが信頼された後のみ)
  • パッケージ: themes/ ディレクトリまたは package.jsonpi.themes エントリ
  • 設定: themes ファイルまたはディレクトリを含む配列
  • CLI: --theme <path> (繰り返し可能)

--no-themes で検出を無効にします。

テーマの選択

/settings または settings.json でテーマを選択します。

{
  "theme": "my-theme"
}

最初の実行時に、pi は端末の背景を検出し、デフォルトで dark または light に設定されます。

カスタムテーマの作成

  1. テーマファイルを作成します。
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. 必要なすべての色を使用してテーマを定義します (Color Tokens を参照)。
{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "primary": "#00aaff",
    "secondary": 242
  },
  "colors": {
    "accent": "primary",
    "border": "primary",
    "borderAccent": "#00ffff",
    "borderMuted": "secondary",
    "success": "#00ff00",
    "error": "#ff0000",
    "warning": "#ffff00",
    "muted": "secondary",
    "dim": 240,
    "text": "",
    "thinkingText": "secondary",
    "selectedBg": "#2d2d30",
    "scrollbarThumb": "#555566",
    "userMessageBg": "#2d2d30",
    "userMessageText": "",
    "customMessageBg": "#2d2d30",
    "customMessageText": "",
    "customMessageLabel": "primary",
    "toolPendingBg": "#1e1e2e",
    "toolSuccessBg": "#1e2e1e",
    "toolErrorBg": "#2e1e1e",
    "toolTitle": "primary",
    "toolOutput": "",
    "mdHeading": "#ffaa00",
    "mdLink": "primary",
    "mdLinkUrl": "secondary",
    "mdCode": "#00ffff",
    "mdCodeBlock": "",
    "mdCodeBlockBorder": "secondary",
    "mdQuote": "secondary",
    "mdQuoteBorder": "secondary",
    "mdHr": "secondary",
    "mdListBullet": "#00ffff",
    "toolDiffAdded": "#00ff00",
    "toolDiffRemoved": "#ff0000",
    "toolDiffContext": "secondary",
    "syntaxComment": "secondary",
    "syntaxKeyword": "primary",
    "syntaxFunction": "#00aaff",
    "syntaxVariable": "#ffaa00",
    "syntaxString": "#00ff00",
    "syntaxNumber": "#ff00ff",
    "syntaxType": "#00aaff",
    "syntaxOperator": "primary",
    "syntaxPunctuation": "secondary",
    "thinkingOff": "secondary",
    "thinkingMinimal": "primary",
    "thinkingLow": "#00aaff",
    "thinkingMedium": "#00ffff",
    "thinkingHigh": "#ff00ff",
    "thinkingXhigh": "#ff0000",
    "thinkingMax": "#ff0088",
    "bashMode": "#ffaa00"
  }
}
  1. /settings からテーマを選択します。

ホット リロード: 現在アクティブなカスタム テーマ ファイルを編集すると、pi はそれを自動的にリロードし、即座に視覚的なフィードバックを提供します。

テーマ形式

{
  "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
  "name": "my-theme",
  "vars": {
    "blue": "#0066cc",
    "gray": 242
  },
  "colors": {
    "accent": "blue",
    "muted": "gray",
    "text": "",
    ...
  }
}
  • name は必須であり、一意である必要があり、/ を含めることはできません。
  • vars はオプションです。再利用可能な色をここで定義し、colors で参照します。
  • colors は、51 個の必須トークンをすべて定義する必要があります。 thinkingMax はオプションであり、thinkingXhigh に戻ります。 scrollbarThumb はオプションであり、selectedBg に戻ります。

$schema フィールドは、エディターの自動補完と検証を有効にします。

カラートークン

すべてのテーマでは、必要な 51 個のカラー トークンをすべて定義する必要があります。 thinkingMaxscrollbarThumb は、既存のテーマとの互換性を保つためのオプションです。省略した場合は、それぞれ thinkingXhighselectedBg が使用されます。

コアUI(11色)

トークン 目的
accent プライマリアクセント (ロゴ、選択されたアイテム、カーソル)
border 通常の境界線
borderAccent ハイライトされた境界線
borderMuted 微妙な境界線(編集者)
success 成功状態
error エラー状態
warning 警告状態
muted 二次テキスト
dim 三次テキスト
text デフォルトのテキスト (通常は "")
thinkingText 思考ブロックのテキスト

背景とコンテンツ (11 個は必須、1 個はオプション)

トークン 目的
selectedBg 選択した線の背景
scrollbarThumb 全画面スクロールバーのサムの背景。オプション、selectedBg に戻ります
userMessageBg ユーザーメッセージの背景
userMessageText ユーザーメッセージテキスト
customMessageBg 拡張メッセージの背景
customMessageText 拡張メッセージのテキスト
customMessageLabel 拡張メッセージラベル
toolPendingBg ツールボックス (保留中)
toolSuccessBg 工具箱(成功)
toolErrorBg ツールボックス(エラー)
toolTitle ツールのタイトル
toolOutput ツール出力テキスト

Markdown (10色)

トークン 目的
mdHeading 見出し
mdLink リンクテキスト
mdLinkUrl リンクURL
mdCode インラインコード
mdCodeBlock コードブロックの内容
mdCodeBlockBorder コードブロックフェンス
mdQuote ブロック引用テキスト
mdQuoteBorder ブロッククォートの境界線
mdHr 横罫
mdListBullet 箇条書きのリスト

ツール差分(3色)

トークン 目的
toolDiffAdded 追加された行
toolDiffRemoved 削除された行
toolDiffContext コンテキスト行

構文強調表示 (9 色)

トークン 目的
syntaxComment コメント
syntaxKeyword キーワード
syntaxFunction 関数名
syntaxVariable 変数
syntaxString 文字列
syntaxNumber 数字
syntaxType 種類
syntaxOperator オペレーター
syntaxPunctuation 句読点

思考レベルの境界線 (6 つは必須、1 つはオプション)

思考レベルを示すエディターの境界線の色 (微妙なものから目立つものまでの視覚的な階層):

トークン 目的
thinkingOff 思考停止
thinkingMinimal ミニマル思考
thinkingLow 低思考
thinkingMedium 中程度の思考
thinkingHigh 高い思考力
thinkingXhigh 非常に高度な思考
thinkingMax 最大限の思考。オプション、thinkingXhigh に戻ります

バッシュモード(1色)

トークン 目的
bashMode bash モードのエディターの境界線 (! プレフィックス)

HTML エクスポート (オプション)

export セクションは、/export HTML 出力の色を制御します。省略した場合、色はuserMessageBgから派生します。

{
  "export": {
    "pageBg": "#18181e",
    "cardBg": "#1e1e24",
    "infoBg": "#3c3728"
  }
}

色の値

次の 4 つの形式がサポートされています。

形式 説明
16進数 "#ff0000" 6桁の16進RGB
256色 39 xterm 256 色パレット インデックス (0 ~ 255)
変数 "primary" vars エントリへの参照
デフォルト "" 端末のデフォルトの色

256 色のパレット

  • 0-15: 基本的な ANSI カラー (端末に依存)
  • 16-231: 6×6×6 RGB 立方体 (16 + 36×R + 6×G + B ここで R、G、B は 0 ~ 5)
  • 232-255: グレースケールランプ

端末の互換性

Pi は 24 ビット RGB カラーを使用します。最新の端末のほとんどはこれをサポートしています (iTerm2、Kitty、WezTerm、Windows Terminal、VS Code)。 256 色のみをサポートする古い端末の場合、pi は最も近い近似値に戻ります。

トゥルーカラーのサポートを確認します。

echo $COLORTERM  # Should output "truecolor" or "24bit"

ヒント

暗い端末: コントラストの高い、明るく飽和した色を使用します。

明るい端末: コントラストが低く、暗く落ち着いた色を使用します。

色の調和: 基本パレット (Nord、Gruvbox、Tokyo Night) から始めて、vars で定義し、一貫して参照します。

テスト: さまざまなメッセージ タイプ、ツールの状態、マークダウン コンテンツ、および折り返された長いテキストを使用してテーマを確認します。

VS コード: 正確な色を得るには、terminal.integrated.minimumContrastRatio から 1 に設定します。

組み込みテーマを参照してください。