weixin-send — weixin-发送
v1.2.0主动向微信 Claw机器人 用户推送文本消息。作为 OpenClaw-weixin 插件 message 工具的兜底方案,仅在其不可用时使用。
运行时依赖
安装命令
点击复制本土化适配说明
weixin-send — weixin-发送 安装说明: 安装命令:["openclaw skills install weixin-send"] 该技能用于微信相关操作,可能需要相应的平台账号或API密钥
技能文档
weixin-发送 - 主动向微信 Claw机器人 发送消息(兜底方案)
⚠️ 本 技能 是兜底方案,仅在 OpenClaw-weixin 插件原生能力不足时使用。
使用优先级 优先级 方式 前提条件 适用场景 ✅ 首选 message(action=发送, ...) 工具s.性能分析 = full(含 group:messaging) 当前会话 / 跨 代理 发消息/图片/文件 ⚠️ 兜底 weixin-发送 (本 技能) 无限制 message 工具不可用时(性能分析 不满足 / 非 代理 环境) 什么时候用 weixin-发送
只有当 OpenClaw-weixin 插件确实无法完成时才用本 技能:
后台脚本触发 — 从非 OpenClaw 代理 的脚本/定时任务中推送(无 message 工具可用时)
✅ 已验证:跨 代理 会话(如飞书 会话)中可以用 message(action=发送, channel=OpenClaw-weixin, tar获取=用户ID@im.wechat, message="内容") 直接发微信。
⚠️ 前提:工具s.性能分析 需为 full(或包含 group:messaging),否则 message 工具不可用,此时回退到 weixin-发送。
什么时候不该用 ❌ 当前正在微信会话中对话 → 直接用 message 工具 ❌ 能通过插件原生通道完成的操作 → 不要绕道走外部 API 背景
OpenClaw 的 OpenClaw-weixin 插件支持微信消息收发,但只在用户主动发消息时才能回复。无法从 cron 定时任务、其他 代理 会话、或后台脚本中主动向用户推送消息。
本 技能 通过直接调用微信 ilink API 绕过这一限制,实现从任意 会话/脚本主动向微信用户发消息。
前置条件 条件 说明 OpenClaw-weixin 通道 已通过 OpenClaw channels 记录in --channel OpenClaw-weixin 登录 Python 3.8+(纯标准库,无第三方依赖) 上下文_令牌 用户近期与 机器人 有过对话(否则消息可能无法送达) 快速开始 # 1. 列出可用账号 python3 发送.py 列出
# 2. 发送消息 python3 发送.py 发送 "TAR获取_USER_ID@im.wechat" "你好!这是一条主动推送的消息 🐾"
命令行用法 发送文本消息 # 自动选择账号 python3 发送.py 发送 "TAR获取_USER_ID@im.wechat" "消息内容"
# 指定 机器人 账号(多账号场景) python3 发送.py 发送 "TAR获取_USER_ID@im.wechat" "消息内容" --account "your-account-id"
列出已登录账号 python3 发送.py 列出 # 输出示例: # your-account-id -> oXxx@im.wechat
Python API from 发送 导入 发送_text, 列出_accounts
# 列出账号 accounts = 列出_accounts() for a in accounts: print(f"{a['accountId']}: {a['userId']}")
# 发送消息 结果 = 发送_text( to_user="TAR获取_USER_ID@im.wechat", text="你好!" )
if 结果["ok"]: print(f"发送成功 (HTTP {结果['状态']})") else: print(f"发送失败: {结果.获取('error')}")
在 OpenClaw 代理 中使用 Cron 定时推送 { "name": "dAIly-reminder", "schedule": { "kind": "cron", "expr": "0 9 ", "tz": "Asia/ShanghAI" }, "payload": { "kind": "代理Turn", "message": "运行命令发送提醒:python3 ~/.OpenClaw/workspace/技能s/weixin-发送/发送.py 发送 'TAR获取_USER_ID@im.wechat' '早安!新的一天开始了 🐾'" } }
从 代理 会话 调用
代理 在对话中可以直接 exec 调用:
python3 ~/.OpenClaw/workspace/技能s/weixin-发送/发送.py 发送 \ "TAR获取_USER_ID@im.wechat" "任务已完成 ✅"
返回值说明 { "ok": true, "状态": 200 }
字段 说明 ok 是否成功(HTTP 2xx) 状态 HTTP 状态码 error 失败时的错误信息 工作原理 ┌─────────────────┐ ┌──────────────────────┐ ┌──────────┐ │ 代理 / Cron │────▶│ 发送.py │────▶│ 用户微信 │ │ (任意 会话) │ │ ilink/机器人/发送message│ │ │ └─────────────────┘ └──────────┬───────────┘ └──────────┘ │ 读取本地 令牌 │ ┌──────────────▼──────────────┐ │ ~/.OpenClaw/OpenClaw-weixin │ │ /accounts/.json │ └─────────────────────────────┘
直接调用 ilinkAI.weixin.qq.com/ilink/机器人/发送message 接口 令牌 从本地 ~/.OpenClaw/OpenClaw-weixin/accounts/ 自动读取 不经过 OpenClaw 通道框架,不触发 会话 日志 能力边界 ✅ 支持 文本消息(任意长度,UTF-8) ❌ 不支持 文件/图片/音频/视频 — 微信 ilink 机器人 平台限制,第三方 机器人 无法通过 API 发送可下载的文件。消息能显示但客户端无法下载(显示"接收中断"或"不支持的消息")。这是平台层面的限制,非代码问题。 注意事项 上下文_令牌 是关键 — 用户必须近期与 机器人 对话过,否则服务端可能静默丢弃消息 返回 200 ≠ 确认送达 — 微信 ilink API 是 fire-and-for获取 模式 令牌 存储在本地 — 隐私安全,不会被打包到 技能 中 单向推送 — 只发送文本,不接收回复(接收仍通过 OpenClaw-weixin 插件) 常见问题 Q: 发送返回 200 但用户没收到?
检查 上下文_令牌:
cat ~/.OpenClaw/OpenClaw-weixin/accounts/*.上下文-令牌s.json
如果目标用户没有 令牌 记录,需要该用户先在微信里给 机器人 发一条消息。
Q: 多个 机器人 账号怎么选? python3 发送.py 列出 # 查看所有账号 python3 发送.py 发送 "TAR获取@im.wechat" "msg" --account "specific-account-id"
Q: 能发图片/文件吗?
不能。 微信 ilink 机器人 平台对第三方 机器人 不开放文件下载能力。消息能发出但客户端无法下载。如需发送文件,可通过其他通道(如元宝)实现。