pi-pushplus-notify
Send a PushPlus WeChat notification when a pi task settles. Zero runtime dependencies.
Package details
Install pi-pushplus-notify from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-pushplus-notify- Package
pi-pushplus-notify- Version
0.1.0- Published
- Sep 19, 2026
- Downloads
- 187/mo · 16/wk
- Author
- koma-chan
- License
- MIT
- Types
- extension
- Size
- 43.5 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-pushplus-notify
pi 任务结束时,通过 PushPlus 推送一条微信通知。
English | 简体中文
本插件面向中国用户。 PushPlus 是国内的推送服务,消息最终送达微信,所以你需要有一个微信账号和一个 PushPlus 账号。如果你不使用微信,这个插件对你没有帮助。除此之外的服务商(Bark、ntfy、Telegram、Slack 等)本插件都不支持。
为什么需要它
让 pi 跑一个长任务——跑的构建、跑测试、批量改代码——启动之后你其实就没事干了,但又不敢走开:不知道它什么时候结束,也不知道成功还是失败。
这个插件在每一轮任务结束时推一条微信给你,带上项目名、工作目录、耗时和最终回复的摘要。于是你可以锁屏、去干别的,等微信响。
刻意做得很小:
- 零运行时依赖。不需要 Python,不需要
curl,只用 Node 内置的fetch。 - token 只存在本地,文件权限
0600,除了 PushPlus 官方接口,不会发给任何第三方。 - 限流保护内置。PushPlus 超限的惩罚很重(见下方),所以插件自己会做滑动窗口限流、被限流后自动停机。
- 不阻塞界面。推送在后台发送,PushPlus 卡住时你的终端不会跟着卡住。
安装
pi install npm:pi-pushplus-notify
安装后重启 pi,或在交互式会话里执行 /reload。
快速开始:三步
PushPlus 没有 OAuth,也没有第三方授权登录。任何声称"扫码登录"的插件都是错的——官方唯一的扫码功能是给你已经登录的账号绑定推送渠道,并不能让第三方替你拿到 token。所以你只能自己取一个 token 再粘进来。
取 token:在微信公众号「pushplus 推送加」里直接回复文字
token,它会立刻把 token 值回给你。不用打开网页。(其他取法见下一节。)粘贴:在 pi 里执行
/pushplus,在弹出的菜单里选「配置 token」,把 token 粘进去。看微信确认:配置时会立即发一条测试消息验证 token 真的有效。收到就说明成功,通知也自动开启了。
之后每次任务结束,微信就会收到通知。token 长期有效、不会自动过期,粘一次就够了。
前提:PushPlus 账号必须完成实名认证。未实名的账号接口会返回错误码 905,测试消息发不出来。
命令
只有一个命令 /pushplus。
| 命令 | 作用 |
|---|---|
/pushplus |
弹出菜单让你选,不用记参数 |
/pushplus setup |
交互式粘贴 token,立即发一条测试消息验证,成功后保存并自动开启通知 |
/pushplus status |
查看状态:是否已配置 token、token 来源(配置文件/环境变量)、通知开还是关、是否正处于限流暂停期 |
/pushplus on / /pushplus off |
开启 / 关闭任务结束通知 |
/pushplus test |
重发一条测试消息 |
/pushplus reset |
清除本地保存的 token 并关闭通知(同时清除限流暂停记录) |
裸 /pushplus 的菜单会根据当前状态变化:
- 还没配置 token 时,只有一项「配置 token」——因为这时没有别的事可做。
- 已经配置 时,提供四项:发送测试消息、开启或关闭通知(文字随当前状态变化)、更换 token、清除 token。
- 在非交互环境(如
-p模式)下不会弹菜单,只打印一行状态。
参数支持 Tab 补全;用中文输入法打出的全角字母(如 ON)会被自动归一化。
获取 token 的三种方式
任选一种,得到的都是同一个东西:一个字母数字组成的 token。
最简单:在微信公众号「pushplus 推送加」里回复文字
token,公众号直接把 token 值返回给你。不用打开网页。网页登录:微信扫码登录 pushplus.plus,进入「一对一消息」页面,页面上有一键复制按钮。
更安全(推荐长期使用):在 pushplus.plus 的个人中心 →「开发设置」里创建额外的「消息 token」。这种 token 可以设置到期时间,也可以单独删除,比账号主 token 多一层保险——万一泄露,删掉重建即可,不影响主账号。
限流与防护
先说 PushPlus 官方的限制,因为超限的惩罚很重:
- 每分钟 5 次请求
- 微信渠道每天 200 条
- 关键坑:计的是请求次数,包括失败的请求——报错也会消耗额度
- 相同内容 1 小时最多 3 条
- 超限后果:当日停推,严重时停 7 天
插件为此内置了防护:
- 滑动窗口限流。插件记录最近 60 秒内实际发出的请求时间,达到 5 次就跳过本次推送,并明确告诉你「已达 PushPlus 每分钟 5 次上限,本次通知已跳过」。被跳过的请求没有发出去,所以不消耗配额。
- 相同内容检测。1 小时内相同正文累计 3 次就跳过,并提示「PushPlus 相同内容 1 小时最多 3 条,本次通知已跳过」。
- 收到错误码 900(账号受限)时,自动暂停 24 小时,不再继续尝试——否则只会加重服务端的惩罚。暂停期内
/pushplus test也会被拦截。 - 错误码 903(token 无效)、905(账号未实名)、888(积分不足)都会给出对应的处理提示。
- 错误码 999 会显示 PushPlus 返回的具体原因(通常是"推送频率过快"),不会只给你一句看不懂的"服务端验证错误"。
有两点和"什么时候发"有关:
- 推送是后台发送的,不会阻塞 pi。网络慢或 PushPlus 无响应时,你的终端不会被卡住——15 秒超时只发生在后台。
setup和test是你手动触发的,它们同样占用配额。其中setup不受滑动窗口限制(你刚配置完总得能验证一次,否则等于什么都没发生),test则会遵守窗口上限和限流暂停状态——窗口已满或正在暂停时它会直接告诉你,不会真的发出去。
setup 和 test 的消息里都带了时间戳,这是为了避开「相同内容」规则:如果内容完全一样,连点三次测试就会触发限流。
推送内容会经过处理
微信里收到的是摘要,不是完整内容;完整输出始终留在终端。处理规则:
- 剔除 Markdown 围栏代码块,替换为
[代码块已省略](避免一整个 diff 变成微信消息正文) - 清理 ANSI 转义序列
- 超过 1200 字符时保留开头和结尾,中间插入省略标记
- 标题截断到 100 字符
- 本轮没有任何文本输出时,正文显示「本轮执行结束,终端正在等待下一步输入。」
配置与存储
- 配置文件:
~/.pi/agent/pushplus-notify.json(通过 pi 的getAgentDir()定位)。写入时权限0600。 - 环境变量:
PUSHPLUS_TOKEN。只在配置文件里没有 token 时作为初始来源生效,适合 CI —— 不需要把 token 写到磁盘上。 - 优先级:手动
/pushplus setup保存的 token 永远优先于环境变量。所以先设了环境变量、之后再用setup,新 token 依然会生效。 - 默认行为:配置了 token 之后,通知默认就是开启的。
- 你只需要配置一个 token;其余(开关、限流暂停截止时间、发送记录)由插件自己维护。
- 写入采用「临时文件 + 重命名」的原子方式,因此多个 pi 进程同时读写不会读到半截文件。
reset只清除 token、开关和发送记录,你在文件里手动添加的其它字段会被保留。
常见问题
/pushplus setup 提示「配置失败:token 无效」
token 复制错了。回公众号重新取一个(回复 token 最简单)。注意不要带上多余的空格或换行。
提示「账号未实名」(错误码 905)
PushPlus 拒绝未实名账号发送消息。去 pushplus.plus 完成实名认证后再试。
配置成功了,任务结束却收不到
按顺序排查:
/pushplus status看通知是不是被关了(on打开);- 看是否显示「已被 PushPlus 限流,暂停中」(若是,等暂停期结束);
- 确认微信里关注的是「pushplus 推送加」公众号,且没有屏蔽它;
- 确认账号没有因为超限被停推。
被限流了 / 收到「账号已被限流」
说明 5 次/分钟或 200 条/天的额度用满了——通常是因为短时间内跑了多个任务,或者手动测试点太多次。插件收到 900 后会自动暂停 24 小时,等它过去即可。
想立刻恢复可以执行 /pushplus reset 再重新 setup,但这不会解除 PushPlus 服务端的惩罚,只是让插件重新尝试。
收到「PushPlus 判定请求过于频繁」
这是错误码 999,原因会跟在后面(常见的是「推送频率过快」或「请勿频繁推送相同内容」)。等一分钟再试,或者检查是不是刚发过内容完全一样的两条消息。
提示「PushPlus 积分不足」(错误码 888)
账号积分用尽。去 pushplus.plus 充值或检查套餐。
setup 发的测试消息要占用配额吗?
占用。setup 和 test 都是真实请求,PushPlus 全都计数——包括失败的那些。所以别反复点测试。
只支持 PushPlus 吗?
是的。本插件只对接 PushPlus,不支持其他推送服务商。