AIchat:让小鲸鱼同时住进 QQ 和微信
一只叫「小鲸鱼」的 AI 角色,同时在 QQ 和微信里陪你聊天、帮你搜 B 站视频,还会按自己的作息去找视频、认真读完再挑给你。每天三条推荐全部送达后,她会把当天的公开日记发给你。
本文记录这个本地 AI 助手的整体设计:它基于 DeepSeek Harness(DSH),把 dsh-bili-whale、qq-bridge 和 WeChatAgent 三个开源项目融合在一起。
🔒 文章只介绍可以公开的功能与维护思路。账号、白名单、Token、Cookie、聊天记录和本机目录一律用占位符代替。
🌸 1. 她能做什么
| 能力 | 说明 |
|---|---|
| 💬 连续聊天 | QQ、微信私聊都能聊,傲娇、短句、爱玩梗,前后连贯 |
| 🔍 搜视频 | 按要求搜 B 站,返回真实标题 + 完整链接 |
| 🎯 挑视频 | 读字幕、评论、弹幕、抽帧后打分,合格才推荐 |
| 🧭 调整口味 | “多推 AI 工具”“少推带货”会被记住,影响之后所有推荐 |
| 👎 单条反馈 | 引用推荐消息或附上 BV 号,说“不感兴趣”即可 |
| 📔 每日日记 | 三条自动推荐都送达后,发送当天公开日记 |
| 🔗 链接补全 | 消息里的独立 BV 号自动补成完整 B 站链接 |
QQ 和微信是同一只小鲸鱼的两个号,主人也是同一个人。 两边共用聊天记忆、推荐偏好和看视频的经历:在 QQ 说“多推 AI 工具”,微信那边也会照做;在微信说“这条不感兴趣”,QQ 也记得。
🧩 2. 整体结构
1 | |
| 目录 | 职责 |
|---|---|
dsh-bili-whale |
DSH 养鱼插件:自主作息、B 站发现与深读、写日记 |
dsh-bili-recommend |
推荐校验、分流、额度、偏好、回执和每日公开日记 |
qq-bridge |
QQ 聊天、DSH 工具接入、搜索与消息处理 |
SnowLuma |
QQ / OneBot 连接,以及项目自带的 Node 运行时 |
WeChatAgent |
微信消息、白名单与会话工具授权 |
scripts |
一键启动、健康检查、补丁部署和日记检查后台 |
💡 运行时的配置、状态、日志和备份放在单独目录(例如
.qq-run/),不要和公开源码混在一起。
🚀 3. 一键启动
日常只需要以普通 Windows 用户身份双击启动脚本:
- 如果需要登录,先在客户端里完成 QQ、微信登录。
- 等窗口显示 “启动完成”,就可以关掉提示窗口,后台继续运行。
启动脚本会依次检查或拉起:QQ → SnowLuma → DSH → QQ 桥接 → 微信服务 → 日记检查后台。
- 🔁 重复双击是安全的:已经在跑的服务会被复用,不会重复发测试消息。
- ⏱️ QQ 首次登录最多等 90 秒,超时后登录完再双击一次即可。
- 📵 微信没就绪时会显示原因,不影响 QQ 继续工作。
- 🔌 DSH 的接口端口由程序自动发现,不用手填。
⚠️ 不建议以管理员身份长期运行聊天客户端和桥接服务。只在某个明确步骤确实需要权限时单独提升。
🔀 4. 聊天、搜索、推荐是三条路
这是整个项目最重要的设计:“搜到过”“分析过”和“真正推荐过”绝不能混为一谈。
| 想做什么 | 示例 | 实际发生了什么 |
|---|---|---|
| 普通聊天 | “今天怎么样?” | 按人设和近期上下文回复 |
| 搜视频 | “去 B 站搜两个 DeepSeek 教程,把链接给我” | 立即调用搜索,返回真实标题和链接 |
| 点播推荐 | “推荐一个 AI 工具视频” | 登记请求 → 搜索 → 深读 → 筛选 → 发回原聊天 |
| 问推荐内容 | “这个视频讲了什么?”“为什么推荐?” | 只根据实际保存的推荐依据回答 |
| 调整方向 | “多推 AI 工具”“不要推荐猫咪” | 保存为明确偏好,后续搜索和筛选都会用 |
| 评价某条 | 引用推荐说“不感兴趣”,或附上 BV 号 | 定位到具体视频后记录;定位不到会追问 |
| 查看 / 重置 | “我的推荐偏好”“重置推荐偏好” | 查看或清空聊天反馈 |
搜索只代表“找到了这些视频”,不能说成已经看过。推荐会读取可用字幕、评论、弹幕和抽帧,通常要几分钟;证据不够或没有合格视频时,宁可不推,也不硬凑。
🎯 5. 推荐规则与额度
| 类型 | 发到哪里 | 门槛 |
|---|---|---|
| 📮 普通自动推荐 | 主人的 QQ | ≥ 14/20 分,有内容依据,置信度至少 medium |
| 💖 特别喜欢的推荐 | 指定的微信好友 | 小鲸鱼明确标为“特别喜欢”,且 ≥ 16/20 分;只发微信 |
| 🙋 点播推荐 | 发起点播的原私聊 | ≥ 12/20 分,每次最多 3 条,每天最多 10 次请求 |
| 📔 公开日记 | 主人的 QQ | 当天 3 条自动推荐全部确认送达、日记写好之后 |
- 普通 + 特别喜欢的自动推荐合计每天最多 3 条,这是上限不是指标。
- 同一个视频 7 天内去重。
- 点播不占这 3 条额度,但同样要去重和核验内容。
- 特别喜欢的视频只走微信,不会在两边重复推送。
🧠 6. 共用记忆的设计
开启共享身份后,QQ 与微信按同一个人、同一只小鲸鱼处理:
- 两边共用聊天记忆、明确的推荐偏好、点播记录和看视频的经历,可以换个平台接着聊。
- 共同记忆保留最近约 2000 条文字记录;每轮对话会按当前平台和问题,挑选另一端的近期记录来接话。
- 原平台的记录仍然保留,用于引用定位和发送回执。
- 群聊和其他联系人的聊天不进入这份私人记忆。
共用记忆不改变事实标准:
- 搜索结果、只有简介的记录、预演数据,都不能冒充“看过”。
- 只分析了字幕、评论或抽帧,不能说成完整看完了整部视频。
偏好写入遵循 “先保存、再确认”:真实来信先写入共用档案,成功后才回复“记住了”;保存失败会明确提示。同一条消息被重放、或模型重复提交时,通过消息 ID 去重,不会重复累计。
✏️ 修改人设时只维护一份主角色卡,再用同步脚本推到另一端,避免 QQ 和微信的小鲸鱼慢慢“性格分裂”。
📔 7. 每日公开日记
小鲸鱼有三份记录:
| 记录 | 用途 |
|---|---|
| 📖 公开日记 | 看过的视频、当天经历和写给主人的信,每日推送读这一份 |
| 🔐 私人日记 | 自己的感受、评分和偏好校准,不会自动发送 |
| 🧾 事件流水 | 看视频、推荐等活动的结构化简短记录 |
日记检查后台每 15 秒看一次,以下条件全部满足才发送:
- 当天 3 条自动推荐都已确认送达(QQ 普通 + 微信特别喜欢合计,点播不算)。
- 公开日记里已写好当天正文,并包含这 3 条推荐的 BV 号。
- 日记文件在最后一次送达之后有更新,并且稳定了至少 20 秒(防止发出写了一半的内容)。
- 推荐推送没有暂停,“推送日记”开关也没有关闭。
发送细节:
- 只发当天的公开内容,较长时按约 1400 字分段并标段号。
- 每天一份,重启不会重发;没推满三条就继续等,不拿昨天的日记凑数。
- 明确发送失败的段落每 5 分钟重试一次;送达结果未知的段落不自动重发,以免刷屏。
👥 8. 群聊要单独收紧
群聊比私聊更容易打扰别人、甚至和别的机器人互相循环回复,所以单独配置:
- 只在被叫名字、被 @、被引用时唤醒,每小时最多唤醒 4 次。
- 一次最多连发 2 条;回复后 10 秒内会回看,允许自然追问。
- 群里不读取、也不透露主人的私人推荐资料和共用记忆。
- 点播和记忆修改工具只对已授权的私聊开放。
群聊权限和私聊权限必须分开配置,不能因为机器人进了群就默认开放全部能力。
⏸️ 9. 暂停与恢复推送
维护或想安静一阵时,可以只暂停推荐、普通通知和日记推送,QQ 和微信聊天照常:
1 | |
暂停推送不会退出客户端,关闭启动提示窗口也不会停掉后台。目前没有统一的一键停止;需要完全停服时,按实际进程路径逐个核对,避免误关其他 Node.js 程序。
🩺 10. 常用健康检查
下面这些检查都不会发送真实消息:
1 | |
日记检查返回的状态含义:
| 状态 | 含义 |
|---|---|
waiting_recommendations |
今天还没推满三条 |
waiting_today_entry |
当天日记正文还没写好 |
waiting_diary_videos |
日记里缺少对应的 BV 号 |
waiting_diary_write |
文件还在写入,先等一等 |
sent |
已经发送 |
unknown |
送达结果未知,先去聊天里核对,不要盲目重发 |
日志优先看:supervisor.log、bridge.log、bridge-error.log、wechat-start.log、daily-diary.log、daily-diary-error.log。
🛡️ 11. 安全与隐私
这个项目会接触聊天平台、模型接口和个人偏好,公开前必须脱敏。以下内容不得写进公开文章或提交到公开仓库:
- QQ 号、微信 ID、群号和白名单成员标识
- API Key、Access Token、Cookie、登录凭据和二维码缓存
- 私聊记录、日记、用户偏好和推荐状态
- 含有本机用户名的绝对路径
- 真实收件人、机器人账号和内部会话 ID
- 运行日志、发送回执和未清理的配置备份
公开配置示例用环境变量或占位符:
1 | |
运行时文件加入 .gitignore:
1 | |
另外遵循最小权限:私聊、群聊、搜索、推荐、发送和记忆写入分别授权,不让所有会话默认拥有全部工具。
🔧 12. 维护建议
升级组件前(QQ 桥接、微信接入或 DSH):
- 备份本地配置与补丁。
- 对比上游版本差异。
- 恢复必要的消息处理和记忆接入补丁(补丁脚本会核对锚点并保留备份)。
- 运行只读健康检查。
- 用测试账号做小范围消息验证。
- 最后再恢复自动推荐和日记推送。
改了 DSH 插件要重载 DSH;改了微信消息引擎要重启微信聊天后台。
防止误发送:开发阶段保留 dry_run 预演模式,测试通过、接收目标确认后才打开真实发送。测试不伪造真实推荐,也不补发以前的日记。目前这一套的联合回归共 86 项,覆盖推荐分流、反馈、日记门槛与去重、QQ 链接与群回复、微信消息处理。
🌙 13. 总结
一个能长期跑下去的多平台 AI 助手,难点不在“模型能回消息”,而在这些边界:身份与记忆、工具权限、内容依据、推荐门槛、发送回执、幂等去重和隐私保护。
把聊天、搜索、推荐、反馈和日记拆成独立流程以后,系统更好维护,小鲸鱼也不会把“搜到过”说成“看过”,把“看过”说成“推荐给你”。对一个私人助手来说,这份诚实比多加几个功能更重要。
💐 14. 感谢以下开源项目
- dsh-bili-whale:B 站养鱼插件,自主发现、深读与日记
- qq-bridge:QQ 消息桥接
- WeChatAgent:微信接入
