Repository navigation
Releases: Banan1cee/whale_gril
Release list
鲸鲸 3.9 · 联网交给模型判断 + 消息汇总开关 + 修桥接启动崩溃
3.9:联网交给模型判断 · 消息汇总做成开关 · 砍掉打扰性功能 · 修桥接启动崩溃
联网搜索
- 新增语义路由:每条消息先让模型判断「要不要联网」,并顺手改写检索词;模型不可用时才回退关键词表。以前只按关键词触发,词库外的说法(「小蓝鲸是什么梗」)永远不联网。
- 热榜按站点分流:B站走官方热搜接口、微博走微博热搜,其它仍用头条榜;提到具体视频/事件时不再强行查榜,指定平台失败也不会拿别站榜单冒充。
- 修复补搜路径对
Set调用数组方法的崩溃——它曾把已经搜到的一条结果一起吞掉。 - 联网阶段共享一个总预算:路由最多 2 秒并取消底层模型请求;HTTP 增加墙钟截止、跳转上限、响应体上限和中断处理。
- 检索词清洗不再破坏产品型号/版本号/中文专名,也不再机械塞年份。
- 提示词改用运行日期而不是写死「现在是 2026 年」,区分「查到资料」与「查了但没结果」,并注明外部摘要不可信。
消息汇总(默认关闭的总开关)
- 控制台「功能开关」一行同时提供总开关与「每隔(分钟)」,只在总开关打开时生效,改动自动生效。
- 关闭 = 不采集、不轮询、不推送,接口 404,并清空本轮待汇总内容;重新打开只收新消息。
- 只收微信里未接话的普通消息,排除已回复、重复、系统通知、主人消息、静音会话和网页测试聊天。
- 接收人必须是主人设置里唯一明确的微信内部 ID,不按昵称猜号。
- 发送前后重新校验开关、代次、会话、账号、前台和焦点;已粘贴但取消时隔离该会话草稿,不自动删除也不让普通回复把草稿发出去。
- 一批超过上限时游标只推进到真正发出的最后一条,剩下的留到下一轮(此前会永久丢失)。
- 汇总文本有限长、限会话数并明确标注省略;拉取失败有次数上限,送达不确定的窗口不重发。
砍掉的功能(关掉 = 完全不存在)
- 删除「检测到游戏就进休息模式」「离开/回来打招呼」「忙时排队补发」及对应控制台设置项。
- 删除机器人里「我去玩了 / 我回来了」的命令分支和休息状态文件副作用。
- 删除群成员发言次数排行(「群里常说话的就这些:A(87)…」);群聊上下文仍保留说话人名字,但不再统计次数。
- 旧配置里的
gameWhitelist、awayNotice、returnNotice、queuedMax*、digestMinutes不再起作用,控制台也不再显示。
桥接启动崩溃(有人反馈的控制台 traceback)
- 修复随包三方库
wechatauto/db.py的缺陷:密钥诊断把 PID 列表当三元组解包,只要有一个微信进程读不了内存(微信用管理员运行、多开选错号)就抛TypeError: cannot unpack non-iterable int object,把本该显示的排查提示顶掉,桥接直接退出。 - 读不到数据库时不再甩 traceback,改为输出可照做的步骤:管理员运行桥接、在「启动鲸鱼娘.bat」打开的网页右上角「⚙️ 设置 → 微信账号」里选对账号、确认微信已登录。
- 同步修正另外两处同样含糊的「去网页设置」提示和设置文档。
包
- 自带 Node 22 + Python 3.12 + ffmpeg;不含
config.json/data\/.git,覆盖安装不动记忆和 Key。 - 出包脚本会在暂存树里修掉上述
db.py缺陷(幂等、拒绝未知布局),并从 zip 逐文件校验哈希后才替换本地包。
说明
天气/搜索仍可能受搜索引擎验证码、平台风控和模型误判影响;本版修的是代码缺陷,不宣称任何问题都能搜到。
鲸鲸 3.64 · 表情包三分类 + 私聊/联网/日期修复
3.64:表情包三分类 + 私聊/联网/日期修复
表情包
- 控制台只保留三类:傲娇 / 炸毛 / 其他,其他旁标注「(此为绝大部分情绪,建议多加表情包)」。
- 普通聊天只从「其他」随机,空分类不再跨分类借图;只有明确的骂人/撒娇才用炸毛/傲娇。
- 旧目录(开心/嫌弃/敷衍/撒娇、旧英文目录、通用、根目录图片)首次开启时安全合并:同名不同内容重命名,复制校验成功后才删除原图,失败保留原图仍可预览/删除。
- 预览与删除改用库内相对路径身份,修复旧图 404 和同名误删。
- 修复概率改动不生效、抽完一轮立刻重复同一张、继承属性绕过分类白名单、库根祖先目录联接未检查。
- 修复私聊不发表情包:把微信「设置」窗口误算成第二个账号,导致账号闸拒绝;现在只统计标题为「微信」的主窗。
- 发送失败会给出具体原因(前台 / 会话标题 / 输入框焦点),不再只有一句笼统英文。
联网
- 补「下雨 / 下雪 / 气温 / 多少度」等触发词——以前「北京明天会下雨吗」根本不会联网。
- 新增相关性过滤:剔除跑题结果(搜「最新 iPhone 多少钱」曾返回 Yandex 官网,搜「显卡行情」返回「帮」字字典页)。
- 品牌口语归一 + 官方机型页兜底:「苹果最新机器」现在能答出 iPhone 18 Pro / iPhone Duo。
- 新增日志「联网资料已注入提示词:N 字」,能直接看出资料有没有进提示词。
其他
- 提示词补上完整年月日:问「今天几号」不再答成 4 月 18。
- 删除「消息汇总」:桥接定时线程、
/api/digest接口、采集逻辑和配置项全部移除,并禁止主动汇总群聊。 - 自定义人设同样追加「能发表情包」的能力说明,不再自称「我不会发表情包」。
- 同一会话不再在第 45 秒并排第二张,统一 90 秒期限。
包
- 自带 Node 22 + Python 3.12 + ffmpeg;不含
config.json/data\/.git,覆盖安装不动记忆和 Key。 - 出包脚本从 zip 逐文件校验源码哈希后才替换本地包。
已知未解决
- 天气联网与 0xC0000005 原生崩溃仍需独立复现,本版不宣称已解决。
鲸鲸 3.63 · 表情包不再被卡住的任务堵死
修的是「25% 概率为什么像没生效」
- 一次发送失败/卡住,任务会停在 sending,同一个会话后面 5 分钟内一律不排新表情 —— 这就是实际频率远低于 25% 的原因。
- 现在:卡住超过 45 秒就不再挡住新表情;任务超过 90 秒自动判失败释放。
- 另外 3.62 的修复也都在:不用先选账号、发成文件卡片也能确认、多种「发个表情包」说法必发、切不了会话的上游 bug。
鲸鲸 3.62 · 表情包默认能用(不用先选账号)+ 必发 + 窗口过小/窄栏修复
3.62 全是表情包的坑
1) 不用先去网页选账号了
以前只要机器上存过多个微信账号目录(换过号的人都有),表情包就要求你先去「设置 → 微信账号」选一个,否则一律拒绝:
表情包跳过:这台机器有多个微信账号目录,但没指定用哪一个…
但你只登着一个号,根本不可能发错号。 现在:
- 本机只登着 1 个微信 → 直接发
- 真的同时登着 2 个以上 → 才要求明确选账号
2) 发出去了却报「未确认」
实测:把 gif 粘进输入框,微信有时会把它发成**「文件卡片」**,而确认逻辑只认图片/表情类型 → 明明发出去了还判失败。
现在按 md5 + 文件名 认领:数据库里新消息内容里出现这张图的 md5,就算发出去了。
3) 切不了会话(上游库 bug)
TypeError: WeChatUIA._search_button() takes 1 positional argument but 2 were given
wechatauto 里 _search_button 少了 self,而且被步骤埋点又包了一层 → 一调用就抛异常 → 搜索框打不开 → 换会话失败 → 表情包报「目标会话没打开」。
已改成 staticmethod,并从埋点名单里移除。
4) 「发个表情包」必发
以前只认「发 + 个 + 表情包」这一种说法。现在这些都会直接发一张:
发个表情包 / 发表情包 / 来张表情 / 整个表情包呗 / 表情包
5) 她也知道自己能发了
表情包开关打开时,提示词里会加一段:
【表情包】你能发表情包。聊到情绪点、或对方说「发个表情包」时就直接发一张,不用问要不要、也不用嘴上解释——发完接着正常说话。
以前她会回「我发不了表情」。
其余 3.60/3.61 的东西都在:五分类拖拽、每类概率(默认 25%)、无发送间隔、打开文件夹直接拖/删、缩略图 × 删除、调教台去掉导入、版本号显示、一键诊断UIA、UIA 热激活找主进程、日志不刷屏。
鲸鲸 3.61 · 修 UIA 掉线刷屏 + 分类图标 + 一键诊断
3.61 修的是「能用但很不顺」的那堆事
1) UIA 掉线不再刷屏,也更容易自动恢复
日志里以前会一秒一条:
热激活 UIA 失败:PID 36328 未找到 Weixin.dll
UIA 不可用(启用 OCR 兜底…)
原因:小程序 / 公众号 / 插件容器这些微信辅助进程里没有 Weixin.dll,但热激活拿着它们的 PID 去扫,扫不到就每秒警一次;UIA 一掉,发送就掉进很慢的 OCR。
现在:
- 扫不到就回头找真正加载了
Weixin.dll的微信主进程再激活 - 真找不到时 10 分钟只提示一次
- UIA 不可用先走键盘通道,只有它也失败才用 OCR
- OCR 等待 25 秒 → 8 秒,失败快速返回,不再「发了半天没反应」
2) 新增「一键诊断UIA.bat」
放在文件夹根目录,双击就出人话结论:
结论:UIA 正常,可以发送。
不正常时给排查顺序(退出微信重登 / 用管理员运行 / 别缩托盘 / 再跑一次)。
3) 表情包分类图标不再空白
原来五个分类用 emoji(😄😤🥺🙄😴),Win7 / 精简系统没有彩色 emoji 字体会显示成空白方块。现在改成内联 SVG,任何系统都能显示。
4) 调试台顶部显示当前版本号
用户报 bug 时先看这里:不是最新版就先升级,省得大家排查一款老包。
5) 修预设会改掉她的名字
导入预设会把名字变成预设标题(「鲸鲸 v1:像群友一样聊天」)、并把外形/性格/背景清空。现在只覆盖预设里真正写了的字段。
完整功能(3.60 起)
- 表情包(实验性,默认关):五个中文分类框拖 gif、每类单独概率(默认 25%)、无发送间隔、私聊群聊都发、打开文件夹直接拖/删、缩略图 × 删除
- 人设调教台:去掉「导入」按钮,选到哪版下面立刻变哪版,点保存生效
- 稳定性:升级不丢记忆、
一键更新.bat自动校验回滚、ffmpeg 自带、修 VC++ 误报、积极拒绝、数据库卡死
鲸鲸 3.60 · 表情包(实验性)+ 调教台简化
这一版主要有三件事:表情包、调教台、一个预设 bug
1) 表情包(实验性,默认关闭)
- 调试台顶部一个总开关,关掉 = 这个模式完全不存在(不挑图、回包不带字段、桥接不轮询、接口 404)
- 五个中文分类框:开心 / 炸毛 / 撒娇 / 嫌弃 / 敷衍,gif 拖进哪个框就归到哪一类
- 每个框下方直接显示并调整自动发送概率,默认都是 25%;私聊、群聊都按这个概率发,没有发送间隔
- 「打开表情包文件夹」:直接开资源管理器,往子文件夹拖 gif 或删文件都行,界面 3 秒内自动刷新;缩略图右上角 × 也能在控制台直接删
- 发送规则(fail-closed):
- 只发对应分类的图(或「通用」),绝不拿别的情绪的图冒充
- 对方明确说「发个表情」时才允许从全库随便挑一张
- 微信不在前台会短暂切到前台并在发完后还原;游戏/全屏时不抢焦点
- 输入框里有你自己的草稿就等它自己清空,绝不替你按删除键
- 只有数据库里出现新的本人发送记录才算「已确认」,否则如实显示「未确认」,不自动重发
2) 人设调教台
- 去掉了「导入」按钮:选到哪一版预设,下面的名字 / 性格 / 外貌 / 语气 / 上下文长度会立刻填好,确认后点最下面「保存」即可生效
- 打开页面自动载入「当前正在生效的那一版」;如果现在的人设是手改的,不会强行覆盖,只在旁边提示
- 保存时记住「这一版来自哪个预设」,页面上直接显示当前生效的是哪版
3) 修复
- 导入预设会把她的名字变成预设标题(「鲸鲸 v1:像群友一样聊天」),外形 / 性格 / 背景还会被清空;现在只覆盖预设里真正写了的字段
- 私聊表情包一张也发不出去(微信「空输入框」读出来是换行符,被误判成草稿)
- 「和锁定账号冲突」导致表情包全被拒绝(改为与文字发送同一套账号证据)
- 表情包发送结果写回失败时控制台卡在「尝试发送中」(改为重试)
- 微信不在前台时表情包直接失败(改为短暂切前台并还原)
- 会话标题差一个空格就被判成「目标会话没打开」(改为归一化比较)
- 配置合并改深拷贝,避免一次导入污染默认值
升级
- 双击
一键更新.bat:查最新 → 下载 → 校验 → 备份 → 覆盖代码 → 自检,失败自动回滚 - 或把新包覆盖到原文件夹:包里不含
config.json/data\,记忆和 Key 一个字节不动
鲸鲸 3.55.1 · 去掉表情包,带一键更新
这一版只做两件事
1) 去掉表情包功能
上线前评估风险偏高(群里有人发 NSFW gif、抢前台、误投递),先不带了。桥接相关代码、两个开关、data/stickers 全部移除。
2) 带上「一键更新」(社区 PR @xmuzhou)
不用再手动下载解压:
双击 一键更新.bat → 回车
查最新 release → 下载 → sha256 校验 → 备份 → 只覆盖代码 → 自检 → 失败自动回滚
data\(聊天记忆)和config.json(Key)一个字节不动- 按官方 API 的 sha256 校验,对不上直接中止,不会装半个包
- 覆盖后自检:版本号 / 记忆条数 / config 哈希,任一不过自动回滚
- 官方源不通自动换镜像(ghfast.top / gh-proxy.com / ghproxy.net)
- 离线也行:把 zip 拖到
一键更新.bat上
菜单里还有 [r] 回滚上次更新。
保留的东西
- 微信双开钉账号(PR #1):认不出窗口就不发,不会「用小号读、从大号发」
- 3.54 的全部修复:Server 缺 VC++ 提示、数据库 90 秒超时、积极拒绝三修、群里分清宾语、主动搭话只找主人、引用回复默认关
包体积:116.5 MB(含 ffmpeg)
更新方式:装这一版之后,以后双击 一键更新.bat 就行。
鲸鲸 3.55 · 双开钉账号 + 会发表情包
1) 微信双开不再「用小号读、从大号发」
合并社区 PR(@xmuzhou):wechat.account 钉死账号,建库后断言 db.account 必须等于它;pin_window() 钉住主窗;发送前用「本号库里的最近会话」认窗口,三道闸任一不过就不发并说明原因。
不配 wechat.account 时行为和以前完全一样。
2) 会发表情包了(gif,按情绪挑)
把 gif 丢进 data/stickers/<开心|炸毛|撒娇|嫌弃|敷衍>/,她按当下情绪挑一张发。
| 情绪 | 触发 | 概率 |
|---|---|---|
| 炸毛 | 被骂、被说胖/笨 | 20% |
| 开心 | 被夸、逗笑 | 12% |
| 撒娇 | 主人来、被哄、委屈 | 12% |
| 嫌弃 | 「??」「就这」 | 8% |
| 敷衍 | 深夜、重复话题 | 6% |
- 10 分钟冷却,优先挑最近没发过的
- 「发个表情」= 100% 必发
- 文件夹空 = 自动关闭,放 gif 进去就生效,不用改开关
- 调试台两个开关:发表情包 / 允许抢前台
- 实测:发出去微信记的是
动画表情(不是普通图片气泡),动图会动 - 发图必须微信在前台;抢不到前台就直接放弃,绝不把图粘到别的窗口
3) 顺手修的一堆
- Windows Server 缺 VC++ 不再误导你去 pip
- 打开微信数据库 90 秒超时 + 就绪心跳,不再「重启了但不监听」
- 「积极拒绝」三修:等服务就绪 / 本机请求不走代理 / 服务端口写盘
- 群里分清「你」在说谁,不再自作多情
- 主动搭话默认只找主人,群里绝不主动
- 引用回复默认关(开着每条慢好几秒)
- 群聊/私聊都能用「先点启动鲸鱼娘再点启动桥接」文件夹启动
包体积:116.4 MB(含 ffmpeg)
更新方式:解压到原来那个文件夹选覆盖,data\ 和 config.json 都不动。
鲸鲸 3.54 · 装不上 / 看不了 / 连不上,全修
1) Windows Server 报「需要 pip 装包」→ 其实是缺 VC++ 运行库
以前任何导入异常都附一句 pip install wechatauto-replica。Server 默认不带 MFC/vcruntime,原生模块加载失败却被引导去 pip。
现在按 OSError / DLL load failed / WinError 126 判定,直接给 vc_redist.x64 下载链接。
2) 看图不用自己装 ffmpeg
微信 4.x 图片是 wxgf/HEVC 容器,必须 ffmpeg 转 jpg。现在包里自带 runtime\ffmpeg\bin\ffmpeg.exe(7.1,含 HEVC 解码)。
启动日志会写「找到 ffmpeg:(包里自带…)」,data\bridge-ready.json 里也有 ffmpeg: true/false。
3) 「重启了但不监听」
发送卡住 40 秒 → 看门狗自杀 → 3 秒重启 → 新进程卡在 WeChatDB() 初始化,永远走不到监听。现在:
- 打开数据库 90 秒超时,超时明确说「卡住不是崩溃」,优雅退出
- 起来后写
data\bridge-ready.json,守护脚本启动前先删,据此判断「起来了但没监听」 - 连续 4 次起来就退出 → 停下提示看日志,不再 3 秒刷屏
4) 「由于目标计算机积极拒绝,无法连接」
- 启动顺序:桥接先
wait_for_server(最多 30 秒),等不到会提示先点服务 - 代理残留:Clash 留下的
HTTP_PROXY会让本机请求也走代理 → 本机请求改走trust_env=False - 端口不一致:服务写
data\server-port.txt,桥接优先读 - 连接失败 10 分钟一条,恢复时打「已连上鲸鲸服务」
5) 新增启动文件夹
先点启动鲸鱼娘再点启动桥接\ 里面两个编号启动器,把顺序写进文件夹名。
6) 主动找话题默认只找主人
群里突然来一句「今天累不累啊」很社死。默认只私聊主人,开关在调试台可调(只找主人 / 允许进群 / 找非主人)。
7) 移除全局热键
启动热键.bat 已删除(PageUp 终止 / PageDown 恢复那套)。
包体积:86.7MB → 116.4MB(多出来的就是 ffmpeg)。
更新方式:解压到原来那个文件夹选覆盖,data\ 和 config.json 都不动。
鲸鲸 3.53 · 群里分得清「你」在说谁
这一版主要治「自作多情」:以前群里 A 叫过她,A 转头骂 B「你个傻逼」,她冲 A 开火;别人聊「你吃饭没」,她也插嘴。
群聊分不清宾语(L1 + L3)
- 这条消息 @ 了别人、出现「他/她/楼上」、或提到其他成员 → 判定在跟别人说话,不接话
- 「机器人」不再裸算点名,要带指代(这个 / 那个 / 你 / 破 / 臭 / 傻)
- 群里提示词先判断「在跟谁说话」,判断不出就当别人;被 @ 的名单直接写进提示词
- 没点名却自动开火、又说不清对方骂了啥 → 降级成「?」,不再乱喷
实测:@B 你个傻逼 → 不接;他说你是个傻子 → 不接;鲸鲸你个笨蛋 → 正常接。
功能开关(调试台可见可切)
/debug.html → 「功能开关」卡片,5 个开关,关掉即回到旧行为。
引用回复默认关闭
一开每条多走一遍 UI,实测慢好几秒。要开:"wechat": { "quoteReply": true }。
三件顺手的事
- 日志节流:没配看图 Key 时不再每张图刷一行
- 媒体缓存启动清理(7 天 / 500MB,
storage.*可调) - 搜索时效过滤:问「最新」时不再拿 2010 年的文章当现状
更新方式(重要)
解压到原来那个文件夹选覆盖即可:包里不含 data\ 也不含 config.json,记忆和 Key 都不受影响。