pi-zen-mode

Distraction-free focus mode for Pi: hide thinking and tools, words still stream.

Packages

Package details

extension

Install pi-zen-mode from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-zen-mode
Package
pi-zen-mode
Version
0.3.0
Published
Sep 4, 2026
Downloads
295/mo · 43/wk
Author
wutongyuonce
License
MIT
Types
extension
Size
949 KB
Dependencies
0 dependencies · 3 peers
Pi manifest JSON
{
  "extensions": [
    "./zen-mode.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Ctrl+Alt+S 能展开更早的轮次:

  • 按开关隐藏 — 思考 / 工具各自决定要不要实时显示;文字始终流式出现
  • 可见项走原生 UI — 不隐藏的思考块保持 compact-thinking / 原生样式
  • 结束见真章 — 最终答案全文显示,被藏的内容折成一行占位
  • 随时可回看ctrl+alt+r / ctrl+alt+s 用原生渲染展开最近一轮过程或选择更早轮次
  • 零侵入 — 与 pi-compact-thinking 等渲染扩展共存;关闭时完全不碰它们的渲染

安装

pi install npm:pi-zen-mode

然后 /reload(或重启 pi)。

只想手动试:把 zen-mode.ts 放进 ~/.pi/agent/extensions/,/reload 即可。

更新:pi update --extensions

用法

/zen 打开设置面板:

  • thinking 开关,控制 focus mode 生命周期下的每轮对话是否隐藏 thinking 块
  • tools 开关,控制 focus mode 生命周期下的每轮对话是否隐藏 tools 块

快捷键

按键 作用
ctrl+alt+f 开关 zen 专注模式
ctrl+alt+r 展开 / 收起最近一轮被折叠的过程
ctrl+alt+s 弹出选择框,可展开 / 收起任意一轮已折叠的对话

ctrl+o 是 Pi 自带的全局工具展开(不是单条):会展开当前所有工具行,并让之后新建的工具行默认展开。一轮还在跑时 zen 仍然把工具画空;结束后若这个开关还开着,工具会按原生完整显示,不再变成一行占位。再按一次 ctrl+o 收起后,结束时又回到占位。

一轮还在跑时 /zen 和三个快捷键都会被挡住,结束后再用,避免改到一半的流式输出。

发生 compact(自动或 /compact)或切换分支后,compact / 切换之前轮次的完整过程已被摘要替换、组件已不存在,那些折叠轮无法再展开——选择框只保留其后产生的折叠轮。

配置

配置在首次改动时自动生成于 ~/.pi/agent/zen-mode.json(设置了 $PI_CODING_AGENT_DIR 则在其下):

{
  "enabled": true,
  "hideThinking": true,
  "hideTools": true,
  "locale": "zh",
  "toggleKey": "ctrl+alt+f",
  "revealKey": "ctrl+alt+r",
  "pickerKey": "ctrl+alt+s"
}
字段 含义
enabled 总开关
hideThinking 运行时隐藏思考块;结束后折成一行 ;false 则实时显示原生思考 UI
hideTools 运行时隐藏工具调用;结束后折成一行 ;false 则实时原生渲染
locale 占位/底栏/选择框语言,zhen/zen 面板本身不切换,始终中英对照
toggleKey / revealKey / pickerKey 三个快捷键,任意合法的 pi 键位字符串

zen 开着时思考和工具都会被管起来(方便事后改开关)。两个子开关只决定藏还是显示,以及底栏统计。文字不藏——中间那句「我先看看」和最终答案在协议里分不开,硬藏只会闪几个字再消失。关掉某一档走原生 UI;再打开会把已结束轮次里对应的行收成占位(只重绘被管到的那些组件)。ctrl+alt+r 展开走原生渲染。改完 /reload 生效。

兼容性

  • 需要 TUI 模式
  • 通过接管 AssistantMessageComponent / ToolExecutionComponent 渲染实现,pi 升级后内部接口变动可能需要跟进更新
  • 已在 pi 0.84.x 测试

License

MIT