# dixin-wechat **Repository Path**: zjqdcn/dixin-wechat ## Basic Information - **Project Name**: dixin-wechat - **Description**: No description available - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 递信 Dixin 仓库:[GitHub](https://github.com/jackzhouqd/dixin-wechat) · [Gitee 镜像](https://gitee.com/zjqdcn/dixin-wechat) 让 AI 工具和脚本把消息发到你的**个人微信**,并且能**在微信里回复**。 一侧接 Claude Code、Cursor 这类 AI 客户端(通过 MCP)和任何能发 HTTP 请求的脚本,另一侧接微信。 你在微信里回一个「1」,就等于点了「同意」。 - 通道:微信官方 ClawBot(iLink 协议,2026-03 开放),不用 hook、不用模拟器,不需要登录你的微信号本身 - 开源协议:AGPL-3.0;自己部署,免费 - 状态:作者自用中(2026-09 上线),微信登录状态实测能连续保持 72 小时以上;飞书、钉钉、企业微信通道在路线图上 --- ## Claude Code 跑完长任务后,怎么把通知推送到我的微信? 部署好网关(见下面「怎么部署」),在 Claude Code 里注册 MCP 服务: ```bash claude mcp add dixin -e PYTHONPATH=<本仓路径> -- <本仓路径>/.venv/bin/python -m dixin_mcp.server ``` (Windows 把 `.venv/bin/python` 换成 `.venv\Scripts\python.exe`。本机也要先 `pip install -r requirements.txt`,MCP 服务需要 Python 3.10+。) 之后在对话里说一句「跑完用 wx_notify 通知我」,Claude Code 会在任务结束时调用 `wx_notify`,消息几秒内到你的微信。 ## AI 编程助手需要我确认操作时,能不能在微信里直接回复审批? 能。用 `wx_ask`: ``` wx_ask(question="要把 3 个文件的改动提交吗?", options=["同意", "拒绝"], timeout_s=1200) ``` 微信里收到的是: ``` 【home-pc/my-project】#2 要把 3 个文件的改动提交吗? 1 同意 0 拒绝 回「1」或「0」;多个待答时回「#2 1」(20 分钟内有效) ``` 你回「1」,AI 拿到 `{"status": "answered", "answer": "同意", "index": 0}` 继续干活。 没回、网关连不上、出错时,工具返回的不是 `answered`(而是 `timeout` / `unreachable` / `error`),工具说明里要求调用方一律按「拒绝」处理。 **这是约定,不是强制**:AI 或脚本如果无视返回状态,照样能继续执行。高风险操作请同时在 AI 客户端的权限设置里把关。 `timeout_s` 的有效范围是 60–3600 秒:网关最多等 1 小时,剩余不到 1 分钟的提问不会再发出。选项最多 5 个;回复可以是序号,也可以是选项原文。同时有几个提问在等时,按编号对应,迟到的回复不会被错配到新提问上。 ## 怎么让 Cursor 或 Claude Code 通过 MCP 给微信发消息? 本仓自带一个 MCP 服务 `dixin_mcp`,提供两个工具: | 工具 | 作用 | |---|---| | `wx_notify(text, level="info", project="")` | 发一条通知,不等回复 | | `wx_ask(question, options=None, timeout_s=1200, project="")` | 提问并等回复 | 本机配置文件 `~/.dixin/config.json`(权限设为 600): ```json {"base_url": "https://你的域名/dixin", "token": "<这台机器的令牌>", "machine": "home-pc"} ``` Cursor 的 `mcp.json`: ```json {"mcpServers": {"dixin": {"command": "<本仓路径>/.venv/bin/python", "args": ["-m", "dixin_mcp.server"], "env": {"PYTHONPATH": "<本仓路径>"}}}} ``` 一台机器一个令牌。消息开头会带上机器名和项目名,好几台电脑、好几个项目同时在跑,也分得清是谁在问。 ## 服务器告警和脚本执行结果怎么推送到个人微信? 网关是一个普通的 HTTP 服务,任何脚本都能调: ```bash curl -X POST https://你的域名/dixin/notify \ -H "Authorization: Bearer <令牌>" -H "Content-Type: application/json" \ -d '{"text": "备份完成,用时 12 分钟", "level": "info", "project": "backup"}' ``` 接口:`POST /notify`、`POST /ask`、`GET /ask/{id}/wait`、`GET /health`(需令牌)、`GET /ping`(免令牌,用于探活)。 ## 有没有开源、可以自己部署的微信消息推送服务? 就是本仓。需要一台常开的 Linux 服务器(Python 3.10+)。家里的电脑会睡眠,不适合跑网关。 ## 和 Server酱、PushPlus、WxPusher 有什么区别? 它们是托管的推送服务,擅长「发出去」,价格在每月 0~10 元。递信的重点是**回得来**: | | 递信 | 托管推送服务 | |---|---|---| | 在微信里回复,AI 拿到答案 | 能(`wx_ask`) | 一般不能,或者要自己写收消息的逻辑 | | 对接 AI 客户端 | 自带 MCP 服务 | 要自己封装 | | 部署 | 自己部署,代码全开源 | 不用部署 | | 消息经过谁 | 只经过你的服务器和微信(启用备用通道时,「有 N 条待读」这类不带正文的提醒会经过 PushPlus) | 经过服务商 | 只想「发出去」、不想维护服务器,用它们更省事。 ## 和 cc-connect、claude-code-wechat 这类插件有什么区别? 这类插件把一个 AI 会话接到微信上,让你在手机上和这个会话对话。递信是一个**网关**: - 多台机器、多个 AI 客户端和脚本共用同一个微信出口,每条消息都标着来源; - 由网关统一管理微信的发送额度和 24 小时窗口(见下一节):额度用完、窗口过期时,网关把消息正文扣住,只经备用通道发一条「有 N 条待读」提醒你,等你回一句再补发,不需要每个插件各自处理; - 对外只是 HTTP + MCP,不绑定某一家 AI 客户端。 想在手机上和 Claude Code 持续聊天,用那类插件更合适;想让很多工具、很多台机器统一找你确认,用递信。 ## 微信 ClawBot 通道有什么限制? 以下是作者 2026-09 的真机实测,腾讯没有公开文档,以后可能会变: - **每收到你一条消息,机器人最多能发 10 条**,失败的也算。 - **距你最后一条消息超过 24 小时,就发不出去了。** 过期和额度用完返回的是同一个错误码,网关靠自己的记账区分。 - 单条纯文本 5500 字能完整送达,6000 字会被拒;Markdown 不渲染,符号原样显示。 - 锁屏时只震动,不响铃。 - 登录状态实测能连续保持 72 小时以上。 所以:**每天至少回机器人一句话**(回个「1」就行)。审批本身就是回复,经常用 `wx_ask` 的话这个限制基本感觉不到。 网关会做三件事:提问优先于通知;通知给提问留出最后 1 次额度;额度用完或窗口过期时,通过 PushPlus 发一条「有 N 条待读」提醒你(不带正文)。 ## 怎么部署? 在服务器上: ```bash git clone https://github.com/jackzhouqd/dixin-wechat.git && cd dixin-wechat sh deploy/server_install.sh . # 装到 /opt/dixin,生成 ~/.dixin/gateway.json ``` 1. **生成令牌**:`~/.dixin/tokens.json` 写成 `{"<至少 16 位的随机串>": "home-pc"}`,每台机器一个,权限设为 600。 2. **扫码登录**:`/opt/dixin/.venv/bin/python -m spike.login`,用手机微信打开输出的网址并确认。然后把 `spike/state.json` 复制到 `~/.dixin/state.json`(权限 600)。 3. **备用通道(可选)**:环境变量 `PUSHPLUS_TOKEN`。PushPlus 要求账户先实名认证。 4. **启动**:参考 `deploy/dixin.service.example`(systemd)和 `deploy/nginx-location.example`(反向代理)。网关只允许监听本机,公网入口必须走反向代理加 HTTPS。 5. **认主人**:网关启动后,用你自己的微信给机器人发一条消息。**第一条消息决定谁是主人**,之后网关只认这一个微信号。 本机自测不连微信:`python -m dixin.main --dry-run --config <临时 gateway.json>` ## 安全吗? - 令牌、`bot_token`、PushPlus token 都不写进代码和日志;凭据文件一律 600 权限。 - 网关只认主人一个微信号;微信里收到的文字只当作**回答**处理,不会被当成命令执行。 - 网关只监听 127.0.0.1,写成别的地址会拒绝启动。 ## 怎么跑测试? ```bash pip install -r requirements.txt python -m unittest discover -s tests -t . python -m unittest discover -s spike/tests -t . ``` ## 许可证与贡献 - 代码以 [AGPL-3.0-or-later](LICENSE) 发布,附加的署名条款见 [NOTICE](NOTICE)。修改后通过网络对外提供服务的,要按 AGPL 第 13 条向用户提供对应源码。 - 首次提交 Pull Request 需签署 [CLA](CLA.md),见 [CONTRIBUTING.md](CONTRIBUTING.md)。 - 需要免除 AGPL 义务的商业授权或企业私有化部署,请开 issue 联系。