@epiphanye/pi-hud
Rana desktop pet that shows Pi Coding Agent status above your desktop
Package details
Install @epiphanye/pi-hud from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@epiphanye/pi-hud- Package
@epiphanye/pi-hud- Version
0.1.2- Published
- Aug 25, 2026
- Downloads
- 509/mo · 38/wk
- Author
- epiphanye
- License
- MIT
- Types
- extension
- Size
- 1.6 MB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@epiphanye/pi-hud · Rana 桌面宠物
让 Pi Coding Agent 的状态以常驻桌面的 Rana 桌宠呈现:透明角色动画、状态气泡、桌面置顶与可拖动位置。它是标准 Pi Package:TypeScript 扩展负责接收 Pi 生命周期事件;Python / PySide6 客户端负责显示原生桌宠。
安装
先安装 PySide6:
# Windows / WSL2:安装到 Windows 原生 Python
py -3 -m pip install PySide6
# Linux 桌面
python3 -m pip install --user PySide6
安装已发布版本:
pi install npm:@epiphanye/pi-hud
本地使用此工程:
pi install /home/epiphanye/dev/floating-status-hud
重启 Pi 或执行 /reload 后生效。请删除旧的手工扩展,避免争用 HUD 端口:
rm -f ~/.pi/agent/extensions/hud.ts ~/.pi/agent/extensions/hud_client_windows.py
平台
| Pi 运行环境 | 桌宠窗口 |
|---|---|
| WSL2 Ubuntu | Windows 原生 Python / Win32 Topmost |
| Windows | Windows 原生 Python |
| Linux 桌面 | Linux Python / PySide6 |
在 WSL2 中即使启用 WSLg,也优先创建 Windows 原生窗口,以覆盖普通 Windows 应用。
状态与动作
Rana 使用随包提供的精灵图动画。每种状态会持续循环,直到 Pi 事件或命令改变状态。
| Pi 状态 | Rana 动作行 | 气泡 |
|---|---|---|
| 空闲 | 第 1 或第 7 行(进入时随机,之后保持该循环) | 默认一直显示 |
| 思考与执行中 | 第 9 行 | 默认一直显示 |
| 目标达成 | 第 4 行 | 默认一直显示,随后 Pi 自动回到空闲 |
| 执行出错 | 第 6 行 | 默认一直显示 |
| 等待用户确认 | 第 8 行 | 默认一直显示 |
| 向右拖动 | 第 2 行 | 默认一直显示 |
| 向左拖动 | 第 3 行 | 默认一直显示 |
| 上下拖动 | 第 5 行 | 默认一直显示 |
精灵图按固定 8×9 格子切帧(1536×1872,单格 192×208)。帧数不足 8 的行只播放左侧有效帧,不按整行宽度重新均分。空闲、完成和错误动作约为 3 FPS;工作、等待确认和拖动动作约为 4 FPS。
默认角色高度约为 160px。气泡根据当前状态文字自适应宽度并位于角色正上方;超长文字会省略。气泡与角色一起常驻并等比缩放,只有右键“隐藏气泡”才会关闭。桌宠位置、气泡偏好和大小保存在:
~/.pi/hud-pet.json
旧版 ~/.pi/hud-position.json 的位置会在首次运行时迁移。
命令
/hud # 显示 / 隐藏桌宠
/hud show # 显示桌宠
/hud hide # 隐藏桌宠
/hud restart # 重启 HUD 服务与桌宠
/hud waiting # 显式进入“等待用户确认”状态
/hud idle # 立即回到空闲状态
/hud status # 显示端口、心跳、素材和当前动画诊断
等待确认不通过猜测 Agent 文本触发:当需要时使用 /hud waiting;确认完成后使用 /hud idle,或继续让 Pi 执行下一轮任务。
操作
- 左键拖动:角色可见轮廓和气泡可拖动,外围透明区域会将点击传递给下层窗口。向右、向左、上下分别播放第 2、3、5 行;同方向移动连续播放,中途改变方向才切换动作。轻微点击不会开始拖动,松开后记住位置并恢复当前 Pi 状态动作。
- Ctrl + 滚轮:按约 16px 步进缩放角色高度(80–320px);气泡、文字和精确点击热区一起缩放。右键“大小”可选小 / 默认 / 大 / 重置。
- 左键双击(Windows / WSL):恢复启动桌宠前处于前台的 Edge、Windows Terminal 或 VS Code 宿主窗口;若窗口最小化会先恢复。
- 右键菜单:显示/隐藏气泡、查看当前状态与动画帧、调整大小、重新置顶、隐藏桌宠或退出桌宠。
- 退出桌宠只关闭图形窗口,不停止 Pi 服务;健康检查会尝试重新拉起客户端,也可使用
/hud restart。 /hud restart会先等待旧连接、TCP 端口和 Windows 单实例锁释放,再重新拉起客户端,因此可能有约 1 秒的短暂延迟;可用/hud status查看phase、端口、最近启动和具体错误。
Windows 只能稳定恢复 Edge、VS Code 或终端的顶层窗口,不能可靠定位
http://127.0.0.1:30141/的特定 Edge 标签页,也不能选择具体 Terminal / VS Code 终端标签。
生命周期与限制
- Pi CLI、Pi Web 服务、会话切换或
/reload正常结束时,桌宠会立即关闭。 - 关闭单个 Pi Web 浏览器页面不等于停止 Pi Web 后端服务,因此桌宠会保留到服务停止。
- Pi 被强制终止、WSL 被关闭或本地通信中断时,桌宠约 12 秒收不到有效服务端消息后自动退出。
- Windows 使用单实例互斥锁,重复启动不会叠加多个桌宠。
- 桌宠会定期重新申请 Windows Topmost;无边框窗口化和窗口化全屏游戏通常可恢复显示。
独占全屏游戏、UAC 安全桌面、锁屏、受保护内容和不同管理员权限级别由 Windows 管理,普通桌面程序无法保证置顶或激活窗口。
诊断
在 Pi 中执行:
/hud status
输出会包含重启阶段、端口绑定、最近启动与错误、客户端心跳、素材状态,以及当前 clip、精灵图行/帧、实际 FPS、气泡和缩放诊断。
WSL 中可验证 Windows Python 启动器:
/mnt/c/Windows/pyw.exe -3 --version
若启动器不在默认位置,在启动 Pi 前设置:
export PI_HUD_PYW="/mnt/c/Windows/pyw.exe"
pi