收起左侧

【全 AI 开发】给微信clawbot做了个双号消息中继,AI 还能按人格陪聊

0
回复
62
查看
[ 复制链接 ]

1

主题

0

回帖

0

牛值

江湖小虾

最近用 AI 从需求、架构、写代码、测试到部署,做了一个运行在飞牛 NAS 上的微信消息中继管理系统:Couple Relay Web

起因很简单:家里两个人各自绑定一个微信 ClawBot 账号,消息由 NAS 自动双向转发;如果一方没有及时回复,也可以按设定的人格、世界书和上下文,让 AI 生成一段更像真人的回复。

整个系统跑在家里的 NAS 上,管理、绑定、日志、队列都在网页后台完成,不需要额外装 App。

项目地址:

text

https://github.com/ankiller8709-stack/couple-relay

先说清楚:这是什么,不是什么

这是一个基于 iLink Bot API / 微信 ClawBot 的双账号消息中继系统。

它不是让两个真实微信号直接登录在 NAS 上,而是每一侧各绑定一个 Bot 账号:

  • 账号 A:你的消息入口,程序也通过 A 向你发消息;
  • 账号 B:对象的消息入口,程序也通过 B 向对象发消息;
  • NAS 上的 Couple Relay Web 负责在 A 和 B 之间中继消息。

消息到底怎么走?

你发给对象

text

你的微信
  ↓ 发消息给 Bot 账号 A
微信 / iLink 服务器
  ↓
账号 A 收到消息
  ↓
Couple Relay Web(飞牛 NAS)
  ↓
账号 B 发送消息
  ↓
对象的微信

对象回给你

text

对象的微信
  ↓ 发消息给 Bot 账号 B
微信 / iLink 服务器
  ↓
账号 B 收到消息
  ↓
Couple Relay Web(飞牛 NAS)
  ↓
账号 A 发送消息
  ↓
你的微信

所以 A/B 不是“你和对象”的真实微信,而是两个各自对应一侧的 Bot 账号


AI 自动回复怎么用?

程序支持设置 AI 延迟,例如对象发来消息后:

text

对象 → 账号 B → NAS
              ↓
         等待 4 秒
              ↓
      你没有人工接手
              ↓
      AI 根据人格和上下文生成回复
              ↓
      账号 B 发给对象

AI 可以配置:

  • DeepSeek、OpenAI、通义、Kimi、智谱以及自定义兼容接口;
  • 人格卡、角色设定、示例对话;
  • 世界书和关键词背景;
  • 历史消息上下文与 RAG 检索;
  • 静默时段、触发侧、回复延迟;
  • 分条发送、情绪感知和关键词自动回复。

如果需要,也可以把 AI 回复同步副本给自己;不过这属于额外投递,会单独占用发送额度。


目前能做什么?

  • 网页扫码绑定两侧微信 ClawBot 账号;
  • 多套配对独立运行,不止限于情侣,也能给其他人分别配置;
  • A → B、B → A、双向中继;
  • AI 自动回复与人格化配置;
  • 人格卡、世界书、示例对话、关键词自动回复;
  • 多模型配置、连通性测试与参数管理;
  • 消息记录查看、手动发送;
  • 消息记录支持全部、仅 AI、A 发出、B 发出筛选;
  • 图片和常见音频格式在线预览;
  • 媒体归档与下载;
  • 配对可设置为 NAS 服务重启后自动恢复启动;
  • 发送失败队列可视化查看;
  • 联网搜索、新闻、天气等工具可转交给 NAS 上的 OpenClaw 处理,普通聊天仍走当前配置的 AI 模型。

有个很重要的限制:连续下行约 10 条

实际使用中发现,iLink 对同一 Bot 向同一用户的连续下行消息存在窗口限制。

简单说:

text

某一侧持续收到 Bot 消息
但这位用户一直没有向 Bot 发新消息
             ↓
连续发送约超过 10 条后
可能返回 ret=-2 / prepare failed

这不是账号失效,也不是删了聊天窗口导致 Token 一定失效,而是单方向连续下行的限制。

目前程序的策略是:

  1. 安全起见,每一侧默认连续发送最多 8 条
  2. 达到上限后,后续消息进入发送队列;
  3. 不会每 5 秒盲目重试刷失败日志;
  4. 该侧用户一旦发来新消息,对应窗口刷新,队列自动继续;
  5. 也可以发送精确命令:

text

,,

来刷新当前这一侧的发送窗口。

怎么用 ,,

哪一侧卡住 谁发送 发给谁 效果
你这边收不到后续消息 账号 A 刷新“发给你”的窗口,冲刷你的待发送队列
对象那边收不到后续消息 对象 账号 B 刷新“发给对象”的窗口,冲刷对象的待发送队列

这个命令本身不会:

  • 转发给另一边;
  • 写入普通消息记录;
  • 触发 AI;
  • 作为聊天内容处理。

在飞牛 NAS 上怎么跑?

项目使用 Docker Compose 部署,默认访问地址:

text

http://你的NAS局域网IP:8080

例如 NAS IP 是 192.168.2.22

text

http://192.168.2.22:8080

首次使用流程:

  1. 在飞牛 NAS 安装 Docker;
  2. 下载或克隆项目;
  3. 修改 docker-compose.yml 中的后台密码;
  4. 启动容器;
  5. 浏览器进入后台;
  6. 创建配对;
  7. 分别扫码绑定 A、B 两个 Bot 账号;
  8. 配置 AI、人格卡和世界书;
  9. 启动配对开始中继。

基础启动命令:

bash

git clone https://github.com/ankiller8709-stack/couple-relay.git
cd couple-relay
docker compose up -d --build

查看日志:

bash

docker compose logs -f

默认端口是:

text

TCP 8080:管理后台、扫码、消息记录、媒体预览

如果改端口,要同步检查 NAS 防火墙和外部端口映射。


数据和隐私怎么处理?

运行数据放在 NAS Docker 数据卷内,包括:

  • SQLite 数据库;
  • 消息日志;
  • 媒体归档;
  • 配对配置;
  • 登录会话。

项目仓库不会上传:

text

.env
数据库
媒体文件
登录会话
API Key
OpenClaw Token

建议只在自己信任的 NAS 和网络环境使用,后台密码务必改掉,也不建议直接把管理后台暴露到公网。


后续计划

目前源码已经放在 GitHub,Docker 镜像自动发布流程也在补:

text

ghcr.io/ankiller8709-stack/couple-relay

后面计划通过 GitHub Actions 自动构建镜像并发布到 GHCR。这样 NAS 可以直接拉取镜像更新,不必每次本地重新构建。

也欢迎有飞牛 NAS、微信 ClawBot 或家庭 AI 自动化需求的朋友交流。

收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则