ThemeTUI@piex-dev/theme-dark-terminal

theme-dark-terminal — 把 pi 涂成一台真正的终端

导语

想把 pi 看成一台认真的黑客终端,而不是通用灰蓝面板:装上 Dark Terminal,/settings 切一下即可,行为逻辑零改变。

简介

默认主题追求「通用好读」,但不一定符合所有人审美:暗光下看 diff 需要更高对比,有人习惯经典终端(黑底、荧光绿、警告纯红)。@piex-dev/theme-dark-terminal 不做任何 TypeScript 逻辑,只提供一份 pi 官方主题 schema 下的 JSON:把整套 UI token 映射成高对比「暗终端」调色板。来源是 opencode-themes/dark-terminal 的色彩角色。

技术原理

pi 的主题是数据不是插件代码:主题包挂 "pi": { "themes": ["./theme.json"] },pi 启动扫描 themes/*.json 校验 name + colors。零运行时、零 hook:换主题不改 agent 行为。Token 分层 vars(调色板原子色)→ colors(语义 token 指向 var),改一个 green,accent/success/diff added 一起变。

角色颜色用在
主强调#00ff00 绿accent、success、diff 加行
结构#00aaffborder、链接、keyword
错误#ff0000error、string、高 thinking
警告#ffff00warning、function
背景#050505页面与 panel

没有渐变、没有莫兰迪:要的就是 CRT 式可读冲击力。

使用说明

安装

bash
pi install npm:@piex-dev/theme-dark-terminal
# 然后 /settings → theme: dark-terminal

仓库源码:themes/dark-terminal

配置

全局安装请用绝对路径,否则 /reload 后相对路径按 settings 文件位置解析,主题可能「丢了」。项目级 pi install -l ./themes/dark-terminal 更稳。npm 包安装走包管理路径,比手写相对路径省心。

切换

/settings → theme 选 dark-terminal/reload 即生效。

实现方案

纯 JSON:package.json + theme.json。填齐 pi theme schema 必需 color token(数十个):通用(accent/border/success/error/warning/muted/text)、消息、工具(pending/success/error/diff 加减行)、Markdown(标题/列表/链接/引用)、Syntax(keyword/string/function/type)、Thinking gradient(off→max,最高档亮粉 #ff0088,pi 侧增量)。主题包刻意不做:不注册 tool/command、不读文件不碰网络、不依赖 Node API——风险面最小,也是「扩展分发机制」示例。

设计参考

项目机制piex 取舍
opencode-themes dark-terminal51 token 高对比暗终端配色;bg:#050505、green/blue/red 强调采纳:色彩角色与语义映射。适配pi 额外 token(thinking gradient #ff0088 为 pi 侧增量)
pi theme schemavarscolors 两层映射;pi.themes JSON 分发;零代码热加载完全遵循:只提供静态 JSON,不写 TS、不走 hook

核心取舍:不做代码、不改行为、不绑宿主终端;只把 opencode-themes 色板翻译到 pi token 名。

迭代记录

路线图

方向打算
只有强对比暗色一款同系列变体 dark-terminal-soft(降饱和)、色弱安全分支
改色靠肉眼token 说明表 + 本地/可选 CI 视觉回归
与终端模拟器主题叠层文档给推荐外层配置,不试图控制宿主终端
跟 pi schema 演进版本说明跟 schema;缺键降级策略写清楚
主题资产偏手工建角色映射表一键生成多个 piex 主题包;settings 深链

版本记录

版本日期变更
0.1.12026-07-19初始版本:高对比暗终端调色板(黑底 #050505 + 荧光绿/蓝/青/红/黄);vars→colors 两层 token 映射;填齐 pi theme schema 必需 color token(通用/消息/工具/diff/markdown/syntax/thinking gradient);零代码零 hook 纯 JSON;thinking 最高档亮粉 #ff0088(pi 侧增量)