pi themes · color plates
@bachi/pi-coderpi.dev · pi 插件包

pi-coder 五色五套暗色 PI 主题,深夜编程不瞌睡

为 @bachi/pi-coder 定制的五套暗色 PI 主题:调色板分别取自 catppuccin mocha、ayu dark、Codex CLI 内置的 1337,以及在 1337 灰底上重定主色的 coffee(暖调奶金)与 nightfox(Nordfox 雾蓝)。面向 mac retina 屏微调。 色值逐字取自 clients/pi/themes/ 下五个 pi-coder-*.json(colors 里的变量引用已解析成实际 hex), 点任意色块复制其十六进制值。下面点一套皮肤看它的完整色板,再往下是 着色演示。

01

卡布 catppuccin

31 vars(31 个被引用) · 54 槽位 · 底色 #181825

在官方 Catppuccin Mocha 基础上面向 retina 屏做了大量微调,三档深底(crust #11111B / mantle #181825 / selected #1E1E29)撑起层次。唯一一处"越界"是强调色:用的是 Macchiato 的 lavender #B7BDF8(重命名为 macchiatoLavender),而不是 Mocha 自己的 mauve —— mauve 被降级去当工具标题与关键字。

macchiatoLavender #B7BDF8 mauve #CBA6F7 blue #89B4FA sky #89DCEB teal #94E2D5 green #A6E3A1 yellow #F9E2AF peach #FAB387
主色 22 槽primary slots · 点色块复制 hex
accent强调色#B7BDF8 · macchiatoLavender
borderAccent高亮边框#CBA6F7 · mauve
border边框#45475A · surface1
selectedBg选中行底#1E1E29 · selected
success成功#A6E3A1 · green
error错误#EBA0AC · maroon
warning警告#FAB387 · peach
toolTitle工具标题#CBA6F7 · mauve
mdHeadingMD 标题#FAB387 · peach
mdLinkMD 链接#89B4FA · blue
mdCodeMD 行内代码#94E2D5 · teal
mdListBulletMD 列表符#FAB387 · peach
bashModeBash 模式边框#FAB387 · peach
syntaxComment注释#A6ADC8 · subtext0
syntaxKeyword关键字#CBA6F7 · mauve
syntaxFunction函数名#89DCEB · sky
syntaxVariable变量名终端默认
syntaxString字符串#A6E3A1 · green
syntaxNumber数字#FAB387 · peach
syntaxType类型名#F9E2AF · yellow
syntaxOperator运算符#74C7EC · sapphire
syntaxPunctuation标点#7F849C · overlay1
语法取样sampler
// pi-coder-catppuccin · syntax sampler
import { Skin } from "./theme.js";

const palette = await load("pi-coder-catppuccin");
export default class Theme extends Skin {
  levels = [0, 25, 50, 75, 100];   // 思考强度阶梯
  mix(a, b) { return a.map((v, i) => (v + b[i]) / 2); }
}
全部变量vars · 31
mauve#CBA6F7red#F38BA8maroon#EBA0ACpeach#FAB387yellow#F9E2AFgreen#A6E3A1teal#94E2D5sky#89DCEBsapphire#74C7ECblue#89B4FAtext#CDD6F4subtext1#BAC2DEsubtext0#A6ADC8overlay2#9399B2overlay1#7F849Coverlay0#6C7086surface1#45475Asurface0#313244mantle#181825crust#11111BmacchiatoLavender#B7BDF8exportInfoTint#242031dimText#7E8398secondaryText#82889EthinkingGrey#626262selected#1E1E29successPanel#151515errorPanel#171010pendingPanel#0B151FdiffAddedBg#1C241BdiffRemovedBg#2E1C21

文件 themes/pi-coder-catppuccin.json · error 用 maroon 而非 red;syntaxFunction 用 sky 而非 blue;text 与 syntaxVariable 是空串(终端默认色),取样里用调色板的 text 近似显示。

着色演示

取自一次真实会话:上半是聊天区(用户消息 / 思考 / 工具调用 / diff / Markdown 回复),下半是 pi 的任务清单、输入框与 statusline 两行。 点下面的按钮换皮肤 —— 所有颜色都由当前皮肤的槽位驱动(终端底色取该皮肤的 export.pageBg 与主底色)。 输入框右上那一格是 working-indicator 的提示词摘要(✦ 用 accent、正文用 muted), 这里演示的正是「延续短语」形态:上一轮任务是「把 server.js 切到 HTTPS」,这一轮只敲了「继续」,摘要于是融合成一句完整语义。

当前皮肤 themes/pi-coder-nightfox.json
pi · session 01a0b95e · /Users/bachi/ttt/a nightfox
修改 server.js 到 https,如果已经是 https,就修改到 http,用 新建 tasks 来实现
Think: The user wants me to toggle server.js between HTTPS and HTTP. They say 「用 新建 tasks 来实现」— use the task list to do this. First, let me read server.js to see the current state.…
Read /Users/bachi/ttt/a/server.js (120 lines)
// 监听走纯 HTTP;反代上游按 PROXY_TARGET 协议选择 http/https const https = require('https'); const PORT = process.env.PORT || 18080;
Bash ls -la /Users/bachi/ttt/a/cert/
total 16 drwxr-xr-x@ 4 bachi staff 128 Jul 22 10:07 . -rw-r--r--@ 1 bachi staff 1123 Jul 22 10:07 abc.com+5.pem -rw-------@ 1 bachi staff 1704 Jul 22 10:07 abc.com+5-key.pem
Edit /Users/bachi/ttt/a/server.js 3 blocks
const PORT = process.env.PORT || 18080;
- const server = http.createServer(handleRequest);
+ const server = https.createServer(TLS_OPTIONS, handleRequest);
- console.log(`HTTP 静态资源服务器已启动: http://localhost:${PORT}`);
+ console.log(`HTTPS 静态资源服务器已启动: https://localhost:${PORT}`);

server.js 已从 HTTP 切到 HTTPS,其余逻辑(/api/ 反代、MIME、目录穿越防护)未动。

  • server.js:新增 TLS_OPTIONS 加载 cert/abc.com+5.pem / cert/abc.com+5-key.pem,入口改为 https.createServer(TLS_OPTIONS, handleRequest)。
  • CLAUDE.md:更新启动命令注释、协议说明和文件表里 server.js / cert/ 两行。

其他三份实现(Go / Rust / Python)仍是 HTTP,未改 —— 详见 README。

● 4 tasks (4 done)
✔ #1 确认 server.js 当前协议与历史 HTTPS 写法
✔ #2 把 server.js 切到 HTTPS(加载 cert/ 证书,端口不变)
✔ #3 启动服务并用 curl 验证 HTTPS 静态资源与 /api/ 反代
✔ #4 同步更新 CLAUDE.md 中 server.js 的协议说明
⠹ Thinking (↓ 214 tokens · 8s) ✦ 继续把 server.js 切回 HTTP
❯ 顺手把 CLAUDE.md 里 server.js 的协议说明也对齐一下
⚡️ deepseek-flash/max | Ctx 8.4% | ⎇ main | (+38,-12) | thinking
✔ 4/4 | 📁 /Users/bachi/ttt/a

输入框上方那行是 simple-task 的任务清单(已完成的 ✔ 用 success、正文用 dim 加删除线),下面依次是 pi 的输入框(边框与 ❯ 取当前思考档的颜色,这里是 max → 本主题的 thinkingMax;左上一段是工作指示器嵌在边框里的样子, 行尾 ✦ 后是提示词摘要)与 statusline 两行:⚡️ 模型/档位 | Ctx 百分比 | 分支 | (+增,-删) | 状态, 第二行是所有扩展 setStatus 的文本(任务计数、cwd)。分支图标用的是 ⎇(U+2387,通用符号区,没装 Nerd Font 的机器也能正常显示)。