pi-open-tui-fixed0.4.0
Fork of pi-open-tui for the Pi coding agent: same TUI, but working-state refresh defaults to event-driven so terminal scrollback stays stable while the model works.
Untested on omp
This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.
Reports 0
No reports yet.
Readme
pi-open-tui
English | 简体中文
这是 pi-open-tui 的本地维护版本,面向 Pi 编程代理保留原有界面,并默认使用不会持续重绘的事件驱动工作状态刷新。

功能亮点
- Pi 顶栏:显示模型、思考等级、当前目录和常用斜杠命令提示
- 自适应底栏:集中展示 Git 状态、运行环境、上下文用量、Token、费用和扩展状态
- 带边框的编辑器:支持块状、竖线和下划线三种光标样式
- 项目环境感知:识别 50 多种运行环境,并展示 ahead/behind、已暂存、已修改、未跟踪、stash 和 detached HEAD 等 Git 状态
- 单轮遥测:展示 TPS、首 Token 延迟(TTFT)、耗时、停顿、Token 数量和模型标价速率
- 思考预览:模型工作时,在 Pi 隐藏思考块的
Thinking...位置显示实时字幕,展示推理内容的末尾片段 - 交互式设置:通过
/open-tui配置,并支持英文和简体中文界面 - 带版本保护的 Pi 兼容层:全屏滚轮速度所依赖的运行时支持发生变化时,会回退为 Pi 默认行为
环境要求
- Pi 0.80 或更高版本
- 支持 UTF-8 和彩色输出的终端
- 使用完整图标集时需要 Nerd Font(可选;内置 ASCII 图标)
安装
从 npm 安装:
pi install npm:pi-open-tui-fixed
也可以直接从 git 安装:
pi install git:github.com/doccker/pi-open-tui-fixed
或只在当前会话中试用:
pi -e npm:pi-open-tui-fixed
不要同时加载本版本和上游 npm 包,因为两者都会注册 /open-tui 并替换相同的界面组件。
字体与图标
可从 Nerd Fonts 官方下载页或 GitHub 最新版本下载任意已修补字体。安装后,请在终端配置中选择该字体,并重启终端。
默认的 auto 模式检测的是终端环境,无法确认终端当前实际使用的字体。如果图标显示为方框、乱码或错误符号,请打开 /open-tui,在外观页选择合适的模式:
nerd:终端已配置 Nerd Font 时,强制使用 Nerd Font 图标ascii:使用纯文本图标,无需安装修补字体auto:在已识别的终端中使用 Nerd Font 图标,其他环境回退到 ASCII
如果已经安装字体,但 auto 仍选择 ASCII,请手动切换为 nerd。使用 VS Code、Windows Terminal 等应用时,只在操作系统中安装字体还不够,还需要在对应的终端配置中选中该字体。
配置
运行 /open-tui 打开设置窗口,其中包含常规、外观、底栏和遥测四个页面。设置保存在 ~/.pi/agent/open-tui.json:
{
"enabled": true,
"settingsLanguage": "zh",
"cursorStyle": "block",
"fullscreen": {
"wheelScrollLines": 4
},
"icons": {
"mode": "auto"
},
"footerSegments": {
"cwd": true,
"hostname": false,
"sessionName": false,
"gitBranch": true,
"gitStatus": true,
"gitCommit": false,
"runtime": true,
"context": true,
"tokens": true,
"cost": true,
"extensionStatuses": true
},
"telemetry": {
"enabled": true,
"tps": true,
"ttft": true,
"duration": true,
"tokens": true,
"stalls": true,
"cost": true
},
"thinkingPeek": {
"lines": 1
},
"workingRefresh": {
"mode": "event"
}
}
主要选项:
| 选项 | 可选值 | 说明 |
|---|---|---|
settingsLanguage |
en、zh |
切换 /open-tui 设置界面的语言 |
cursorStyle |
block、bar、underline |
bar 和 underline 需要终端支持光标形状转义序列 |
fullscreen.wheelScrollLines |
1-10 |
全屏模式下滚轮每格滚动的行数,默认值为 4;/open-tui 中在该项上按 Enter 后直接输入数字(超出范围会自动钳制到 1-10) |
icons.mode |
auto、nerd、ascii |
控制底栏和遥测通知使用的图标 |
footerSegments |
布尔开关 | 分别控制底栏中的各项数据 |
telemetry |
布尔开关 | 控制遥测总开关和各项指标 |
thinkingPeek.lines |
0、1、2 |
关闭、单行或双行思考预览 |
workingRefresh.mode |
event、realtime |
Agent 工作期间的底栏刷新策略,默认使用滚动稳定的 event 模式 |
sessionName 仅在会话有名称时显示;hostname 会显示主机名的短名称(主机名的第一个标签,例如从 mba.example.com 显示为 mba),并使用服务器图标;gitCommit 会在 detached HEAD 状态下显示短哈希和标签;关闭 extensionStatuses 会隐藏整行扩展状态,其中也包括 MCP 状态。
全屏滚轮速度通过隔离的兼容层写入 Pi 0.84.2 的运行时字段,因为 Pi 尚未提供公开 setter。若后续 Pi 版本不再包含兼容字段,该设置会被忽略并继续使用 Pi 的默认滚动行为。
工作状态刷新
event 模式只在 Agent 与消息生命周期事件发生时刷新底栏,不启动上游每 250 毫秒执行一次的定时器,可避免模型工作期间的周期性底栏重绘干扰 macOS Terminal 回滚。耗时仍由时间戳计算,任务结束后的最终耗时保持准确,但两次事件之间可见计时可能暂时不动。
realtime 模式恢复上游每 250 毫秒一次的周期刷新,仅建议在工作期间滚动稳定的终端中使用。
单轮遥测
每次 Agent 完整运行结束后,pi-open-tui 会显示一条临时结果,并将其中的多个工具调用轮次合并统计:
> TPS 42.5 tok/s | ~ TTFT 1.2s | + 29.7s | ↑ 567 | ↓ 1.2k | ! stall 1x / 4.3s | $ $3.60/M
TPS 的计算方式是:将本次运行中服务商报告的全部 Assistant 输出 Token,除以各个生成轮次的总耗时。计时范围从 turn_start 到 Assistant 的 message_end,包含 TTFT、隐藏推理、缓冲和停顿,但不包含轮次之间的工具执行时间。没有输出 Token 或无法测得生成时间时,会显示 TPS —。
$ / M 表示根据 usage.cost.total 得到的模型标价速率,不是底栏中的会话累计费用。所有遥测字段都可以在遥测页单独开关。
思考预览
开启 Pi 的 Hide thinking 后,任务运行期间 pi-open-tui 会在原生隐藏思考块的 Thinking... 位置显示紧凑的实时字幕。/open-tui 中提供关闭、单行、双行三种模式:
- 模型推理时,思考内容的末尾片段会随 spinner 滚动(
~ think ⠋ …); - 开始输出正文时定格为对勾(
~ think ✓); - 双行模式中,上一条和最新一条思考内容使用相同的文字缩进;如果最新一行超出宽度,则两行随新 Token 持续显示它的最新末尾片段,不再保留上一条;
- 任务结束后恢复原生
Thinking...标签。
~ think ⠋ 上一条思考
最新一条思考
该字幕仅在模型真正输出推理内容后出现,非推理模型不会显示。可见性由 Pi 自身的 Hide thinking 开关控制,切换后立即生效。每一行都按显示宽度截断(全角字符计 2 列),因此包含中文的思考文本也不会溢出终端。可在 /open-tui 的常规 → 思考预览中切换,或直接修改 open-tui.json 中的 thinkingPeek.lines。
本地开发
npm install
npm test
npm run typecheck
pi -e .
致谢
本项目基于多个 Pi 社区包的工作:
- pi-haiku — 双行底栏结构和工作计时器
- pi-claude-code-tui — Pi Logo 帧与圆角编辑器边框技术
- pi-zentui — Starship 风格底栏、运行环境检测、会话生命周期和设置界面模式
- pi-tps — 单轮计时、停顿检测和保守的 TPS 计算方式
Logo 帧源自 Pi 官方安装脚本(pi.dev/install.sh)。运行环境检测和 Git porcelain 解析借鉴了 pi-zentui 的结构。
特别感谢 LINUX DO 社区的支持。