Pushplus 推送 Skill
通过 pushplus(推送加) API 发送消息到微信(公众号)等渠道。
前置条件:注册与申请 Token(用户必读)
使用本 skill 前,需先完成一次性的配置:
-
打开 pushplus 官网:https://www.pushplus.plus/
-
点击右上角「登录」,使用微信扫码注册并登录
-
登录后进入首页,在「一对一推送」页面复制你的 token
-
关注 pushplus 官方微信公众号(用于接收推送消息),token 页面上有二维码
-
将 token 配置到本地(二选一):
方式 A:环境变量(推荐)
setx PUSHPLUS_TOKEN "你的token" # 设置后需重启终端生效方式 B:本地配置文件 编辑
%USERPROFILE%\.config\opencode\api_keys.json,加入pushplus字段:{ "dashscope": "你的阿里云key", "pushplus": "你的pushplus token" }
安全说明:token 与识图服务、阿里千问模型 API key 一样,不硬编码在 skill 文件中,统一通过环境变量
PUSHPLUS_TOKEN或本地配置文件api_keys.json的pushplus字段读取(读取优先级:命令行--token> 环境变量 > 本地配置文件)。
自动推送触发规则(核心)
这是本 skill 最重要的规则。作为 orchestrator,你必须在以下时机主动调用 pushplus 推送消息:
必须推送的场景
- 任务执行完成 — 所有 todo 项标记
completed,或用户的多步骤任务全部完成时,推送"任务完成"通知,包含任务摘要。 - 任务执行失败/异常 — 遇到无法自动恢复的错误、用户需要介入时,推送"任务异常"告警。
- 长时间任务阶段性汇报 — 如果任务超过 3 个步骤,每完成一个关键里程碑推送进度。
- 用户明确要求 — 用户说"通知我"、"推送结果"、"发到微信"等。
推送内容格式
使用 markdown 模板,内容结构:
## {任务状态}
- **任务**: {简要描述用户原始需求}
- **结果**: {成功/失败/进行中,关键数据}
- **耗时/步骤**: {如有}
- **备注**: {有需要用户关注的事项时填写}
推送调用方式
python "C:\Users\Mulin\.config\opencode\skills\pushplus\scripts\pushplus.py" \
--title "{简短标题}" \
--content "{markdown格式正文}" \
--template markdown
token 由脚本自动从环境变量
PUSHPLUS_TOKEN或~/.config/opencode/api_keys.json的pushplus字段读取,调用时无需传--token。
不要推送的场景
- 用户刚发出请求、任务还未开始执行时
- 单步简单操作(如"读这个文件"、"搜索一下")
- 推送频率过高:同一会话中,至少间隔 3 个步骤以上才再次推送
手动调用
基本用法
python scripts/pushplus.py --title "消息标题" --content "消息内容"
从文件发送
python scripts/pushplus.py --title "版本更新日志" --template markdown --file "CHANGELOG.md"
临时指定 token
python scripts/pushplus.py --token "your_token" --title "标题" --content "内容"
参数说明
| 参数 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| --token | 否 | 环境变量/配置文件 | 用户 token(省略时自动读取) |
| --content | 是 | - | 消息内容(与 --file 二选一) |
| --title | 否 | 无 | 消息标题 |
| --template | 否 | html | 模板:html / txt / json / markdown |
| --channel | 否 | wechat | 渠道:wechat / webhook / cp / mail / sms / extension / app |
| --topic | 否 | 无 | 群组编码 |
| --file | 否 | 无 | 从文件读取内容 |
| --option | 否 | 无 | 渠道配置参数 |
| --to | 否 | 无 | 好友令牌 |
渠道枚举
| 渠道 | 说明 |
|------|------|
| wechat | 微信公众号(免费,默认) |
| webhook | 第三方 webhook |
| cp | 企业微信应用 |
| mail | 邮件 |
| sms | 短信(收费) |
| extension | 浏览器插件/桌面应用 |
| app | App 渠道 |
模板枚举
| 模板 | 说明 |
|------|------|
| html | 支持 HTML |
| txt | 纯文本 |
| json | JSON 展示 |
| markdown | Markdown 渲染 |
返回结果
成功时返回 JSON:
{ "code": 200, "msg": "执行成功", "data": "消息流水号" }
注意事项
code: 200仅表示服务端已接收,消息异步推送- 同一会话中控制推送频率,避免骚扰用户
- 推送内容控制在 500 字以内,大段内容用
--file方式
依赖服务与触发信号说明
本 skill 的运作依赖以下外部条件,需了解其边界:
| 依赖项 | 说明 |
|--------|------|
| 触发信号 | 无后台钩子。唯一触发来源是 orchestrator(本 Agent)依据上述规则自行判断:用户显式要求 / todo 全部完成 / 任务异常 / 长任务里程碑。不会因"任务结束"这类系统事件被自动调用 |
| pushplus 服务 | 依赖其公开 API(http://www.pushplus.plus/send)。若服务不可用或 token 失效,返回 code: 200 之外的错误码 |
| 微信接收端 | 用户必须已关注 pushplus 官方公众号,否则推送无法送达(服务端仍可能返回成功) |
| 本地配置 | token 依赖环境变量 PUSHPLUS_TOKEN 或 api_keys.json 的 pushplus 字段,缺失时脚本报错退出 |
| 网络 | 需可访问 pushplus 服务器(国内直连,无 GFW 问题) |
总结:本 skill 无硬编码密钥、无后台事件订阅,是纯"被 Agent 主动调用"的工具型 skill;其可用性完全取决于「token 已配置 + pushplus 服务在线 + 用户已关注公众号」三要素。
Scan to join WeChat group