pi-working-activity

Lively Working-line for pi CLI — live tool progress, playful phrases, settings panel, doctor, self-narration

Packages

Package details

extension

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

模型自述原理

  1. 扩展通过 before_agent_start 把约定追加到该轮 system prompt:「每一步写 ⏵ 你正在做的事(≤20 字)
  2. 模型在流式输出中写下 ⏵ 查一下报错原因
  3. 扩展实时解析 text_delta,提取最新 行展示在 Working 行
  4. 每个 LLM turn 重置等待态;自述最低展示 2s,流式活跃时不消失,安静 5s 后退回普通文案

文案风格

  • 中文:短、口语、俏皮,不说教不摆谱
  • 英文:面无表情的冷幽默,穿插在中文文案中制造反差
  • 游戏梗(SSR、金色传说、gg、ez)只放在稀有彩蛋池(1/150 爆率),不影响日常使用

License

MIT