Cấu hình, tùy chỉnh, thiết lập nền tảng và tham chiếu API cho Pi.

Chủ đề

pi có thể tạo chủ đề. Yêu cầu nó xây dựng một cái cho thiết lập của bạn.

Chủ đề là các tệp JSON xác định màu cho TUI.

Mục lục

Địa điểm

Pi tải chủ đề từ:

  • Tích hợp sẵn: dark, light
  • Toàn cầu: ~/.pi/agent/themes/*.json
  • Dự án: .pi/themes/*.json (chỉ sau khi dự án được tin cậy)
  • Các gói: themes/ thư mục hoặc pi.themes mục trong package.json
  • Cài đặt: mảng themes với các tệp hoặc thư mục
  • CLI: --theme <path> (có thể lặp lại)

Tắt tính năng khám phá bằng --no-themes.

Chọn một chủ đề

Chọn chủ đề qua /settings hoặc trong settings.json:

{
  "theme": "my-theme"
}

Trong lần chạy đầu tiên, pi phát hiện nền thiết bị đầu cuối của bạn và đặt mặc định là dark hoặc light.

Tạo một chủ đề tùy chỉnh

  1. Tạo một tập tin chủ đề:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json
  1. Xác định chủ đề với tất cả các màu được yêu cầu (xem 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. Chọn chủ đề qua /settings.

Tải lại nóng: Khi bạn chỉnh sửa tệp chủ đề tùy chỉnh hiện đang hoạt động, pi sẽ tự động tải lại tệp đó để có phản hồi trực quan ngay lập tức.

Định dạng chủ đề

{
  "$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 là bắt buộc, phải là duy nhất và không được chứa /.
  • vars là tùy chọn. Xác định các màu có thể sử dụng lại ở đây, sau đó tham chiếu chúng trong colors.
  • colors phải xác định tất cả 51 mã thông báo bắt buộc. thinkingMax là tùy chọn và quay trở lại thinkingXhigh; scrollbarThumb là tùy chọn và quay trở lại selectedBg.

Trường $schema cho phép tự động hoàn thành và xác thực trình chỉnh sửa.

Mã thông báo màu

Mỗi chủ đề phải xác định tất cả 51 mã thông báo màu bắt buộc. thinkingMaxscrollbarThumb là tùy chọn để tương thích với các chủ đề hiện có; khi bị bỏ qua, họ sử dụng thinkingXhighselectedBg tương ứng.

Giao diện người dùng cốt lõi (11 màu)

Mã thông báo Mục đích
accent Giọng chính (logo, mục đã chọn, con trỏ)
border Đường viền bình thường
borderAccent Đường viền nổi bật
borderMuted Đường viền tinh tế (biên tập)
success Trạng thái thành công
error Trạng thái lỗi
warning Trạng thái cảnh báo
muted Văn bản phụ
dim văn bản cấp ba
text Văn bản mặc định (thường là "")
thinkingText Văn bản khối suy nghĩ

Hình nền & Nội dung (11 bắt buộc, 1 tùy chọn)

Mã thông báo Mục đích
selectedBg Nền dòng được chọn
scrollbarThumb Nền ngón tay cái của thanh cuộn toàn màn hình; tùy chọn, quay trở lại selectedBg
userMessageBg Nền tin nhắn của người dùng
userMessageText Văn bản tin nhắn của người dùng
customMessageBg Nền tin nhắn mở rộng
customMessageText Văn bản tin nhắn mở rộng
customMessageLabel Nhãn tin nhắn mở rộng
toolPendingBg Hộp công cụ (đang chờ xử lý)
toolSuccessBg Hộp công cụ (thành công)
toolErrorBg Hộp công cụ (lỗi)
toolTitle Tiêu đề công cụ
toolOutput Văn bản đầu ra của công cụ

Markdown (10 màu)

Mã thông báo Mục đích
mdHeading Tiêu đề
mdLink Liên kết văn bản
mdLinkUrl URL liên kết
mdCode Mã nội tuyến
mdCodeBlock Nội dung khối mã
mdCodeBlockBorder Hàng rào khối mã
mdQuote văn bản trích dẫn
mdQuoteBorder Đường viền trích dẫn
mdHr Quy tắc ngang
mdListBullet Danh sách đạn

Công cụ khác biệt (3 màu)

Mã thông báo Mục đích
toolDiffAdded Đã thêm dòng
toolDiffRemoved Dòng đã xóa
toolDiffContext Dòng ngữ cảnh

Đánh dấu cú pháp (9 màu)

Mã thông báo Mục đích
syntaxComment Bình luận
syntaxKeyword Từ khóa
syntaxFunction Tên hàm
syntaxVariable Biến
syntaxString Dây
syntaxNumber số
syntaxType Các loại
syntaxOperator Toán tử
syntaxPunctuation Dấu câu

Biên giới cấp độ tư duy (6 bắt buộc, 1 tùy chọn)

Màu sắc đường viền của trình soạn thảo biểu thị mức độ tư duy (phân cấp trực quan từ tinh tế đến nổi bật):

Mã thông báo Mục đích
thinkingOff Đang suy nghĩ
thinkingMinimal Suy nghĩ tối thiểu
thinkingLow Suy nghĩ thấp
thinkingMedium Tư duy trung bình
thinkingHigh Tư duy cao
thinkingXhigh Tư duy siêu cao
thinkingMax Tư duy tối đa; tùy chọn, quay trở lại thinkingXhigh

Chế độ Bash (1 màu)

Mã thông báo Mục đích
bashMode Đường viền biên tập ở chế độ bash (tiền tố !)

Xuất HTML (tùy chọn)

Phần export kiểm soát màu sắc cho đầu ra HTML /export. Nếu bị bỏ qua, màu sắc sẽ bắt nguồn từ userMessageBg.

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

Giá trị màu

Bốn định dạng được hỗ trợ:

Định dạng Ví dụ Sự miêu tả
lục giác "#ff0000" RGB 6 chữ số
256 màu 39 chỉ số bảng màu xterm 256 màu (0-255)
Biến "primary" Tham chiếu đến mục vars
Mặc định "" Màu mặc định của Terminal

Bảng màu 256 màu

  • 0-15: Màu ANSI cơ bản (phụ thuộc vào thiết bị đầu cuối)
  • 16-231: Khối lập phương RGB 6×6×6 (16 + 36×R + 6×G + B trong đó R,G,B là 0-5)
  • 232-255: Đường dốc thang độ xám

Khả năng tương thích thiết bị đầu cuối

Pi sử dụng màu RGB 24 bit. Hầu hết các thiết bị đầu cuối hiện đại đều hỗ trợ điều này (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). Đối với các thiết bị đầu cuối cũ hơn chỉ hỗ trợ 256 màu, pi sẽ quay trở lại giá trị gần đúng nhất.

Kiểm tra hỗ trợ truecolor:

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

Mẹo

Cực tối: Sử dụng màu sáng, bão hòa với độ tương phản cao hơn.

Cực sáng: Sử dụng màu tối hơn, tắt tiếng với độ tương phản thấp hơn.

Sự hài hòa về màu sắc: Bắt đầu với bảng màu cơ bản (Nord, Gruvbox, Tokyo Night), xác định bảng màu đó trong vars và tham chiếu một cách nhất quán.

Thử nghiệm: Kiểm tra chủ đề của bạn bằng các loại thông báo, trạng thái công cụ, nội dung đánh dấu và văn bản được bao bọc dài khác nhau.

Mã VS: Đặt terminal.integrated.minimumContrastRatio thành 1 để có màu chính xác.

Ví dụ

Xem các chủ đề tích hợp: