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ặcpi.themesmục trongpackage.json - Cài đặt: mảng
themesvớ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
- Tạo một tập tin chủ đề:
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json- 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"
}
}- 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": "",
...
}
}namelà bắt buộc, phải là duy nhất và không được chứa/.varslà 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 trongcolors.colorsphải xác định tất cả 51 mã thông báo bắt buộc.thinkingMaxlà tùy chọn và quay trở lạithinkingXhigh;scrollbarThumblà tùy chọn và quay trở lạiselectedBg.
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. thinkingMax và scrollbarThumb 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 thinkingXhigh và selectedBg 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 + Btrong đó 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: