pi-all-notification
Multi-channel notification for pi: macOS desktop, Bark push, custom webhook
Package details
Install pi-all-notification from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-all-notification- Package
pi-all-notification- Version
1.0.4- Published
- Oct 9, 2026
- Downloads
- 245/mo · 213/wk
- Author
- alexandre_ai
- License
- MIT
- Types
- extension
- Size
- 39.8 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-all-notification
pi 多渠道通知扩展 — macOS 桌面通知 / Bark 推送 / 自定义 Webhook。
三种推送途径
| 渠道 | 说明 | 配置 |
|---|---|---|
| 🖥 macOS 原生通知 | 右上角弹窗通知,基于 osascript |
零配置,开箱即用 |
| 📱 Bark 推送 | 推送到 iPhone(Bark) | 需配置设备 Key + Server |
| 🔗 自定义 Webhook | 任意 HTTP 端点(Slack/Discord/飞书/钉钉/企业微信…) | 配置 URL + Method + Body 模板 |
安装
pi install npm:pi-all-notification
重启 pi(或 /reload)。
使用
Agent 自动触发
一轮运行最终结束时自动通知(Pi 的 agent_settled 事件)。自然结束发 ✅ Complete,被用户取消发 ⏹ Cancelled,两者不会混为一谈。可在设置面板 toggle 触发时机。
用的是
agent_settled而不是agent_end:agent_end之后还可能跟着重试、压缩恢复或排队的消息,在那里发通知既可能过早,也无法区分「完成」和「被取消」。
Agent 手动调用
Agent 可主动调用 notify_user 工具发送通知:
notify_user({
title: "Build Failed",
message: "TypeScript compilation failed with 12 errors.",
priority: "high"
})
| 参数 | 说明 |
|---|---|
title |
通知标题 |
message |
通知内容 |
priority |
normal / high / critical(影响 emoji 前缀) |
/all-notification — 设置面板
↑↓ 导航 Enter 切换/进入子面板 Esc 退出
主面板 toggle 三个渠道开关,进入子面板配置参数。
Bark 配置
| 参数 | 默认值 | 说明 |
|---|---|---|
key |
(必填) | Bark 设备 Key |
server |
https://api.day.app |
Bark 服务器地址 |
authUser / authPass |
无 | Basic Auth(自建 Bark 服务端用) |
sound |
calypso |
推送铃声:calypso alarm birdsong chime complete electronic 等 |
group |
pi |
通知分组名 |
level |
active |
iOS 通知级别:active / timeSensitive / passive |
url |
无 | 点击通知跳转的 URL |
isArchive |
1 |
是否存入历史:1 是 / 0 否 |
Webhook 配置
Webhook 支持 GET 和 POST,Body 模板支持变量替换:
| 变量 | 说明 |
|---|---|
{{title}} |
通知标题,如 "pi ✅ Complete" |
{{message}} |
通知内容,通常是任务描述 |
{{project}} |
当前项目名 |
{{timestamp}} |
ISO 时间戳 |
示例 — Slack Incoming Webhook:
{
"method": "POST",
"url": "https://hooks.slack.com/services/xxx",
"bodyTemplate": "{\"text\": \"{{title}}: {{message}}\"}"
}
示例 — 飞书机器人:
{
"method": "POST",
"url": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx",
"bodyTemplate": "{\"msg_type\":\"text\",\"content\":{\"text\":\"{{title}}\\n{{message}}\"}}"
}
示例 — 钉钉机器人:
{
"method": "POST",
"url": "https://oapi.dingtalk.com/robot/send?access_token=xxx",
"bodyTemplate": "{\"msgtype\":\"text\",\"text\":{\"content\":\"{{title}}\\n{{message}}\"}}"
}
触发时机
| 事件 | 默认 | 说明 |
|---|---|---|
agent_end |
✅ | 一轮运行结束(自然完成 ✅ 或被取消 ⏹) |
agent_start |
⬜ | Agent 开始处理 |
tool_error |
⬜ | 工具执行出错 |
配置文件
运行时配置存储在 ~/.pi/agent/extensions/pi-all-notification/config.json。
首次启动自动生成默认配置。仓库中的 config.json 是模板,不含密钥。
License
MIT