View on GitHub

WePush

专注批量推送的小而美的工具,目前支持:模板消息-公众号、模板消息-小程序、微信客服消息、微信企业号/企业微信消息、阿里云短信、阿里大于模板短信 、腾讯云短信、云片网短信、E-Mail、HTTP请求、钉钉、华为云短信、百度云短信、又拍云短信、七牛云短信

用 Codex 等 AI 助手操作 WePush

本功能随 1.2.0 的 WebUI、Desktop 和完整发行包交付,使用同一个独立安装器 wepush-ai.mjs。

MCP 桥接器由 AI 客户端通过 stdio 启动,再调用用户自己的 WePush Next REST API,不需要新开服务端口或部署公共服务。它遵循已有 Workspace RBAC、Provider 校验、发送确认和 Idempotency-Key 语义。

桌面端一键接入

  1. 启动 WePush Next Service,先在 WePush 中配置渠道账号及 SecretRef。
  2. 打开 设置 → AI 助手接入,核对 Service URL 和当前 Workspace。
  3. 点击 一键接入 Codex,安装 MCP 和 Skill;或点击 仅安装 Skill。
  4. 重新连接 Codex 的 MCP,必要时重启 Codex。可以说:“用 WePush 列出已有任务,并对我选择的任务执行 Dry Run。”

桌面安装使用随 Desktop 提供的 Electron Node Runtime,无需另外安装 Node.js 或 Codex CLI。安装的 MCP 指向该 Desktop 可执行文件,移动或卸载 Desktop 后需要重新安装接入。

安装器会在 ~/.agents/skills/wepush 写入 Skill、独立工具脚本和连接信息。Codex MCP 配置写入 $CODEX_HOME/config.toml,未设置时使用 ~/.codex/config.toml;修改前保留同目录 .wepush-<id>.bak 备份。重复安装仅更新自己的配置块,保留其他 MCP、模型设置及注释。如果已有同名手动配置或自定义 Skill,安装会报告冲突并保留原文件。

“仅安装 Skill”不修改已有 MCP 配置,也不移除此前安装的 MCP;Skill 使用其自己的连接文件。需要同步修改已有 MCP 的连接时,选择“一键接入 Codex”。

浏览器或发行包安装

浏览器不能直接写入客户端配置。在 设置 → AI 助手接入 下载安装器,然后在下载目录执行界面生成的命令。也可使用新构建发行包的 ai/wepush-ai.mjs。这两种方式需要 Node.js 24+:

node ./wepush-ai.mjs install --target codex --url http://127.0.0.1:18990 --workspace ws_default

以上命令也适用于 Windows PowerShell。--target skill 只安装 Codex Skill;--target generic 把工具和通用 mcpServers JSON 写入 ~/.wepush/ai,不更改 Codex 配置。安装后不需要保留下载的原文件。

Service URL 是 AI 客户端运行环境 能访问的地址。容器、WSL、远端主机中的 127.0.0.1 不指向桌面所在机器;需要配置实际可达的 HTTPS 地址。桥接器仅允许回环地址使用 HTTP,拒绝 URL 中的密码或查询参数,并拒绝跟随 API 重定向。

Token 与权限

本地 Service 未启用认证时可直接使用。启用认证后,在启动 AI 客户端的环境中设置 WEPUSH_API_TOKEN,使用当前 Workspace 的 VIEWER(查询)或 OPERATOR(创建和发送)Token。已有系统管理员 Token 不应作为日常发送身份。

安装器不读取或复制 WePush 登录 Token,不将 Token 写入 Skill、MCP 配置或导出文件。Codex 配置通过 env_vars = ["WEPUSH_API_TOKEN"] 将客户端的环境变量传给 MCP 子进程。GUI 客户端的环境与终端可能不同,设置后应重启客户端;其他客户端按其环境变量设置方式传入该变量。

独立脚本同时支持 WEPUSH_SERVICE_URL、WEPUSH_WORKSPACE_ID 覆盖连接文件;MCP 安装配置中指定的 URL/Workspace 优先于客户端外部的同名环境变量。修改连接最直接的方式是重新安装。

其他 MCP / Skill 客户端

Desktop 的 导出通用 MCP 配置 会准备本机运行文件并打开 JSON 保存对话框;取消保存时,配置仍在 ~/.wepush/ai/mcp.json。将其中 mcpServers.wepush 合并到支持 stdio 的客户端(例如 Claude Desktop 或 Cursor)的配置中,保留其他服务器条目。导出包含当前机器的绝对路径;迁移到另一台机器时应在那台机器运行安装器。

其他支持 Agent Skills 的客户端可以使用生成的 SKILL.md 与整个 scripts/ 目录。脚本封装了已检测到的运行时路径,跨机器移动需要重新生成安装文件。此版本不提供远程 HTTP MCP 端点或 OAuth,云端仅支持远程 HTTP MCP 的客户端不能直接使用该 stdio 配置。

工具与发送流程

工具 能力
wepush_system_info 测试连接、版本及当前 Workspace
wepush_list_providers / wepush_provider_schema 发现渠道与账号、消息、收件人 Schema
wepush_list_resources / wepush_get_resource 分页查询或读取账号、消息、受众、任务及 Run
wepush_create_message / wepush_create_audience / wepush_create_job 创建草稿及任务,不发送
wepush_dry_run 执行测试运行
wepush_prepare_run / wepush_send_run 预览正式发送并使用确认令牌创建 Run
wepush_run_results / wepush_run_command 查询逐条结果、暂停、恢复或取消

先读取现有资源及渠道 Schema,准备消息、受众、任务,再执行 Dry Run。大于 1000 条的受众使用 WePush CSV/TXT 导入。账号、密钥、调度和失败重发在本版本仍由 WePush 界面管理。

正式发送需要先取得预览、核对消息内容和受众,然后在用户授权范围内提交 confirmationToken、同一个 idempotencyKey 和 userConfirmed: true。userConfirmed 是供助手表达已有授权的参数,不是独立的人工身份验证;实际权限和令牌有效性由 Service 校验。

返回 Run ID 表示已创建运行,不表示收件人已收到消息。应继续查询 Run 状态和结果。网络超时不自动重试;需要重试时复用原幂等键与请求内容。UNKNOWN 不等于失败,不自动重发。

Skill 在 MCP 不可用时可以直接调用同一套工具:

# 在安装后的 Skill 目录中执行;Windows 使用 scripts/wepush-ai.ps1
./scripts/wepush-ai.sh tools
printf '%s' '{}' | ./scripts/wepush-ai.sh call wepush_system_info
./scripts/wepush-ai.sh call wepush_create_message < message-arguments.json

tools 返回工具描述和完整 JSON Schema。调用参数走 stdin,避免把消息内容拼接成 shell 命令。

移除与排错

实现接入格式参考 Codex MCP 文档、Codex Skills 文档和 MCP stdio 传输规范。

开发验证:在 next/ui 运行 pnpm check 和 pnpm --filter @wepush-next/web e2e。构建 Service JAR 后,可运行 pnpm --filter @wepush-next/ai-integration test:service;该测试创建临时数据库和仅本机可达的 Service,通过 MCP 验证认证、Schema、草稿、发送预览、幂等 Dry Run 与结果,结束后清理,不实际投递消息。