Skip to content

Releases: Banan1cee/whale_gril

鲸鲸 3.9 · 联网交给模型判断 + 消息汇总开关 + 修桥接启动崩溃

Choose a tag to compare

@Banan1cee Banan1cee released this 30 Oct 10:43

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 · 表情包三分类 + 私聊/联网/日期修复

Choose a tag to compare

@Banan1cee Banan1cee released this 29 Oct 08:06

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 · 表情包不再被卡住的任务堵死

Choose a tag to compare

@Banan1cee Banan1cee released this 28 Oct 12:16

修的是「25% 概率为什么像没生效」

  • 一次发送失败/卡住,任务会停在 sending,同一个会话后面 5 分钟内一律不排新表情 —— 这就是实际频率远低于 25% 的原因。
  • 现在:卡住超过 45 秒就不再挡住新表情;任务超过 90 秒自动判失败释放。
  • 另外 3.62 的修复也都在:不用先选账号、发成文件卡片也能确认、多种「发个表情包」说法必发、切不了会话的上游 bug。

⚠️ 微信个人号自动化违反其用户协议,请用小号,风险自负。

鲸鲸 3.62 · 表情包默认能用(不用先选账号)+ 必发 + 窗口过小/窄栏修复

Choose a tag to compare

@Banan1cee Banan1cee released this 28 Oct 11:57

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 掉线刷屏 + 分类图标 + 一键诊断

Choose a tag to compare

@Banan1cee Banan1cee released this 28 Oct 11:32

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 · 表情包(实验性)+ 调教台简化

Choose a tag to compare

@Banan1cee Banan1cee released this 28 Oct 10:00

这一版主要有三件事:表情包、调教台、一个预设 bug

1) 表情包(实验性,默认关闭)

  • 调试台顶部一个总开关,关掉 = 这个模式完全不存在(不挑图、回包不带字段、桥接不轮询、接口 404)
  • 五个中文分类框:开心 / 炸毛 / 撒娇 / 嫌弃 / 敷衍,gif 拖进哪个框就归到哪一类
  • 每个框下方直接显示并调整自动发送概率,默认都是 25%;私聊、群聊都按这个概率发,没有发送间隔
  • 「打开表情包文件夹」:直接开资源管理器,往子文件夹拖 gif 或删文件都行,界面 3 秒内自动刷新;缩略图右上角 × 也能在控制台直接删
  • 发送规则(fail-closed):
    • 只发对应分类的图(或「通用」),绝不拿别的情绪的图冒充
    • 对方明确说「发个表情」时才允许从全库随便挑一张
    • 微信不在前台会短暂切到前台并在发完后还原;游戏/全屏时不抢焦点
    • 输入框里有你自己的草稿就等它自己清空,绝不替你按删除键
    • 只有数据库里出现新的本人发送记录才算「已确认」,否则如实显示「未确认」,不自动重发

2) 人设调教台

  • 去掉了「导入」按钮:选到哪一版预设,下面的名字 / 性格 / 外貌 / 语气 / 上下文长度会立刻填好,确认后点最下面「保存」即可生效
  • 打开页面自动载入「当前正在生效的那一版」;如果现在的人设是手改的,不会强行覆盖,只在旁边提示
  • 保存时记住「这一版来自哪个预设」,页面上直接显示当前生效的是哪版

3) 修复

  • 导入预设会把她的名字变成预设标题(「鲸鲸 v1:像群友一样聊天」),外形 / 性格 / 背景还会被清空;现在只覆盖预设里真正写了的字段
  • 私聊表情包一张也发不出去(微信「空输入框」读出来是换行符,被误判成草稿)
  • 「和锁定账号冲突」导致表情包全被拒绝(改为与文字发送同一套账号证据)
  • 表情包发送结果写回失败时控制台卡在「尝试发送中」(改为重试)
  • 微信不在前台时表情包直接失败(改为短暂切前台并还原)
  • 会话标题差一个空格就被判成「目标会话没打开」(改为归一化比较)
  • 配置合并改深拷贝,避免一次导入污染默认值

升级

  • 双击 一键更新.bat:查最新 → 下载 → 校验 → 备份 → 覆盖代码 → 自检,失败自动回滚
  • 或把新包覆盖到原文件夹:包里不含 config.json / data\,记忆和 Key 一个字节不动

⚠️ 微信个人号自动化违反其用户协议,请用小号,风险自负。

鲸鲸 3.55.1 · 去掉表情包,带一键更新

Choose a tag to compare

@Banan1cee Banan1cee released this 27 Oct 13:28

这一版只做两件事

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 · 双开钉账号 + 会发表情包

Choose a tag to compare

@Banan1cee Banan1cee released this 27 Oct 12:48

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 · 装不上 / 看不了 / 连不上,全修

Choose a tag to compare

@Banan1cee Banan1cee released this 27 Oct 08:26

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 · 群里分得清「你」在说谁

Choose a tag to compare

@Banan1cee Banan1cee released this 27 Oct 04:16

这一版主要治「自作多情」:以前群里 A 叫过她,A 转头骂 B「你个傻逼」,她冲 A 开火;别人聊「你吃饭没」,她也插嘴。

群聊分不清宾语(L1 + L3)

  • 这条消息 @ 了别人、出现「他/她/楼上」、或提到其他成员 → 判定在跟别人说话,不接话
  • 「机器人」不再裸算点名,要带指代(这个 / 那个 / 你 / 破 / 臭 / 傻)
  • 群里提示词先判断「在跟谁说话」,判断不出就当别人;被 @ 的名单直接写进提示词
  • 没点名却自动开火、又说不清对方骂了啥 → 降级成「?」,不再乱喷

实测:@B 你个傻逼 → 不接;他说你是个傻子 → 不接;鲸鲸你个笨蛋 → 正常接。

功能开关(调试台可见可切)

/debug.html → 「功能开关」卡片,5 个开关,关掉即回到旧行为。

引用回复默认关闭

一开每条多走一遍 UI,实测慢好几秒。要开:"wechat": { "quoteReply": true }。

三件顺手的事

  • 日志节流:没配看图 Key 时不再每张图刷一行
  • 媒体缓存启动清理(7 天 / 500MB,storage.* 可调)
  • 搜索时效过滤:问「最新」时不再拿 2010 年的文章当现状

更新方式(重要)

解压到原来那个文件夹选覆盖即可:包里不含 data\ 也不含 config.json,记忆和 Key 都不受影响。

⚠️ 微信个人号自动化违反其用户协议,请用小号,风险自负。