pi-working-activity
Lively Working-line for pi CLI — live tool progress, playful phrases, settings panel, doctor, self-narration
Package details
Install pi-working-activity from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-working-activity- Package
pi-working-activity- Version
1.5.0- Published
- Jul 30, 2026
- Downloads
- 854/mo · 854/wk
- Author
- ccchimneyyy
- License
- MIT
- Types
- extension
- Size
- 103.9 KB
- Dependencies
- 0 dependencies · 2 peers
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
pi-working-activity
让 pi 的 Working 行活过来——实时工具动态与进度 + 俏皮中文文案 + 稀有彩虹彩蛋 + 模型自述 + 上下文预警。
功能一览
🛠 真实工具活动
监听 tool_execution_start / tool_execution_end,Working 行实时显示正在跑什么——不是假转圈。
翻翻 src/index.ts
改改 package.json
跑命令 npm run build
搜搜 NARRATE_MIN_MS
📈 实时工具进度
监听 tool_execution_update,优先读取工具返回的百分比、阶段和状态;对 bash 等流式输出,也会识别常见的下载、构建、测试和部署进度。
拉取模型权重 · 42% · 8s
跑命令 npm test · Testing integration · 12s
部署一下 staging · Deploying assets · 31s
普通输出不会直接塞进 Working 行,只有结构化进度、百分比和可识别阶段会展示。
⏩ 快工具队列重播
执行时间 < 1.5s 的工具一闪而过?不会。快工具排队逐个播 1s,最后一条粘留 3s,让你看得到。
💬 俏皮文案池
思考时 Working 行轮换 95 条口语化短句,约 2.6s 一换,像活人在说话。
嗯…让我捋捋 → 盘一下盘一下 → 大脑转起来了 → 思考.gif → 啾,让我想想 → lol → 别催别催
想太久了自动换档:
- 🕐 30s:转圈圈… 马上马上 嗯,让我细想想
- 🕑 1min:还在努力… 烧脑中… 这题有点东西
- 🕒 5min:还没放弃… 这题真的硬… 我给跪了…
🎰 稀有彩虹彩蛋
约 1/150 概率(每 6–7 分钟一次),Working 行炸出炫彩流光,停留 7.5 秒。
✦ S S R ! ✦ ✧ 金色传说 ✧ ✶ 你发现我了 ✶
四层特效叠加:平滑色相梯度慢滚 + 亮度波浪呼吸 + 一道带下划线的高光从左扫到右 + 两侧金边花饰轮转。比 1.0 的均匀彩虹有质感得多。
⏵ 模型自述
可选功能。开关打开后,扩展通过 context 事件向模型注入一条约定:每个步骤开始时写 ⏵ 你在做什么(≤20 字)。扩展实时解析流式输出,把自述显示在 Working 行。
⏵ 查一下报错原因 → Working 行:查一下报错原因 · 搜搜 error.log
⏵ 给补丁跑个验证 → Working 行:给补丁跑个验证 · 跑命令 node test
📊 实时配速
- 思考中:
嗯… · 总1m23s - 工具中:
改改 file.ts · 3s - 结束后:底部状态区闪现
搞定 ✓ · 4 工具 · 想3s 干2s,同时对话区末尾弹通知⏱ 总用时 1m23s · 4 工具 · 想12s 干11s
⚠ 上下文预警
每 3s 检查一次 context 用量。超过阈值(默认 80%)时 Working 行亮黄:
⚠ 上下文85% · 嗯… · 总1m23s
contextWarnAt: 0 关闭。
🔥 连击检测
连续 5+ 工具触发 火力全开×N(并行工具也算连击)。10+ 工具收尾时显示 十连击。
⏱ 慢工具提示
单工具超 30s 亮 这个有点慢 · 前缀。
🌙 时间感知
- 0–6 点:思考池混入
修仙中…夜猫子出没熬夜冠军等深夜专属文案 - 周末:首次会话弹一句
周末也在卷?放假也陪你
🎨 28 个动画预设
/activity 打开交互选择器,或 /activity frames <name> 直接切:
claude braille moon comet spark breathe dots circle star2 flip aesthetic hamburger random …
😐 英文冷幽默
lol hm oh ok um heh uh nah mm wow nice rgrg done again gg ez
混在一堆「嗯…」「盘一下」「啾」中间,冷不丁冒一句面无表情的英语。那种「我也不是真的在笑」的冷感。
❌ 工具失败文案
出错的工具不再只是 ✗,而是随机一句:
翻车了 · 读文件 config.json ✗
权限不对? · 跑命令 npm i ✗
🤖 子代理计数
并行多个子代理时显示 小弟×N:
派个小弟 修测试 · 小弟×3 · 另 2 项
⚡ ~tok/s 流式速率
showTokPerSec: true 后,按 text_delta 的中英文字符粗估流式 token 速率:
~42 tok/s · 嗯… · 总1m23s
Pi 的流式事件不提供逐段 usage,因此这是实时估算值;收尾摘要里的 token 数仍使用模型返回的实际 usage。
🎄 节假日彩蛋
元旦、春节、情人节、愚人节、劳动节、儿童节、万圣节、平安夜、圣诞、跨年——自动检测,思考池混入节日专属文案,同样用七彩流光渲染。
🔄 模型切换梗
/model 切模型时,Working 行闪一句和模型名相关的梗,1.5s 后恢复。
☕ 累计活跃提醒
默认每累计活跃 3 小时弹一次提示,提醒喝水休息。只有 agent 真正运行的时间计入;workRemindAt: 0 关闭,或改成其他间隔(小时数)。
💰 成本与 token 核算
每轮结束时(≥3s)在通知里追加本轮成本和 token 总量,直接读 Pi 官方核算的 usage.cost.total——和你的账单一致,不是估算。
⏱ 总用时 2m12s · 15 工具 · 想 123s 干 6s · 💰 $0.087 · 🔥 34.2k tok
/activity stats 查看更详细的分项:本轮 / 会话累计花费、缓存命中率、思考 token。
| 字段 | 来源 |
|---|---|
| 💰 成本 | Pi 官方 usage.cost.total(含缓存折扣、阶梯价) |
| 🔥 token | input + output + cacheRead + cacheWrite |
| 缓存命中 | cacheRead / (input + cacheRead) |
| 🧠 思考 | reasoning token(output 的子集,不重复计费) |
🗜️ 上下文压缩感知
监听 session_compact 事件,上下文被压缩时闪现一条通知——和上下文预警形成完整闭环:警告 → 压缩 → 恢复。
🗜️ 上下文已压缩 · 45.0k→12.0k tok · 腾出 73%
🗜️ 溢出自动压缩 · 45.0k→12.0k tok · 腾出 73% · 将重试
压缩调用的成本也会自动累计到本轮/会话统计。
🔧 自定义工具映射
customActions 让你为自己的工具/MCP 定义文案映射,按工具名精确匹配(不执行配置中的正则):
{
"customActions": {
"my_deploy": ["部署一下", "上线中"],
"format_code": ["格式化", "整理代码"]
}
}
⚙ 交互设置面板
/activity settings 打开可搜索的设置面板,统一调整模式、动画、自述、速率、上下文阈值、活跃提醒和全部特性开关。
面板顶部会使用当前主题实时播放动画和文案预览;每次切换立即持久化,不需要退出面板。
🩺 内置 Doctor
/activity doctor 一次检查:
- 配置 JSON 是否可解析、阈值关系是否有效
- 当前预设和全部动画结构是否完整
- 特性键是否认识
- 当前主题能否提取 RGB accent
- 配置目录与文件是否真正可读写
🎭 双模式 + 特性开关
花埑功能全部可选。总开关一键切换:
/activity mode minimal → 只显示真实工具 + 计时 + 预警
/activity mode lively → 全套俏皮文案 + 彩蛋(默认)
单特性独立开关(覆盖模式默认):
/activity feature → 列出所有特性状态
/activity feature rareEggs off → 只关彩虹彩蛋
/activity feature shimmer auto → 恢复跟随模式
可开关特性:phrases(俏皮文案)rareEggs(彩虹彩蛋)nightPhrases(深夜文案)weekend(周末问候)holidays(节假日)combo(连击)failPhrases(失败文案)modelQuips(模型梗)shimmer(星辉扫过)continuePhrases(打断接梗)
安装
pi install npm:pi-working-activity
配置
~/.pi/agent/working-activity.json(首次运行自动生成):
| 键 | 类型 | 默认值 | 说明 |
|---|---|---|---|
frames |
string |
"moon" |
动画预设名,"random" 每轮随机 |
narrate |
boolean |
false |
⏵ 模型自述开关 |
contextWarnAt |
number |
80 |
上下文预警阈值(百分比),0 关闭 |
contextDangerAt |
number |
95 |
上下文危险阈值,超过后变红 |
showTokPerSec |
boolean |
false |
流式输出时显示 ~tok/s 估算速率 |
workRemindAt |
number |
3 |
累计活跃 N 小时提醒喝水,0 关闭 |
customPhrases |
string[] |
[] |
追加到思考文案池的自定义短句 |
customActions |
object |
— | 自定义工具→文案映射,如 {"my_tool": ["搞一下","整一个"]} |
debugLog |
boolean |
false |
调试日志(~/.pi/agent/working-activity-debug.log,>512KB 自动截断) |
mode |
string |
"lively" |
"minimal" 只保留功能性信息 |
features |
object |
— | 单特性开关,如 {"rareEggs": false},覆盖 mode 默认 |
命令
| 命令 | 说明 |
|---|---|
/activity settings |
打开可搜索设置面板,实时预览动画和文案 |
/activity doctor |
检查配置、主题、预设和持久化权限 |
/activity |
打开动画预设交互选择器 |
/activity frames <name> |
直接切换预设,如 /activity frames claude |
/activity frames random |
每轮随机一个预设 |
/activity narrate on|off |
开关模型自述 |
/activity mode lively|minimal |
总开关:花哨 / 极简 |
/activity feature |
列出所有特性开关状态 |
/activity feature <名> on|off|auto |
单特性开关,auto 恢复跟随模式 |
/activity status |
显示当前所有配置 |
/activity warn <0-100> |
修改上下文预警阈值,0=关闭 |
/activity danger <n> |
修改红色危险阈值,必须不低于 warn 阈值 |
/activity tps on|off |
开关流式 ~tok/s 估算显示 |
/activity remind <0-24> |
设置累计活跃提醒间隔,0=关闭 |
/activity phrase add <文案> |
追加自定义思考短语 |
/activity phrase list |
列出所有自定义短语 |
/activity stats |
本轮+会话统计:工具数、想/干比、💰成本、🔥token、缓存命中、思考 token |
模型自述原理
- 扩展通过
before_agent_start把约定追加到该轮 system prompt:「每一步写⏵ 你正在做的事(≤20 字)」 - 模型在流式输出中写下
⏵ 查一下报错原因 - 扩展实时解析
text_delta,提取最新⏵行展示在 Working 行 - 每个 LLM turn 重置等待态;自述最低展示 2s,流式活跃时不消失,安静 5s 后退回普通文案
文案风格
- 中文:短、口语、俏皮,不说教不摆谱
- 英文:面无表情的冷幽默,穿插在中文文案中制造反差
- 游戏梗(SSR、金色传说、gg、ez)只放在稀有彩蛋池(1/150 爆率),不影响日常使用
License
MIT