修复取关回复后,私信模块可能继续回复同一会话历史消息的问题
🔧 优化
- 保留“只回复每个会话最新消息”的策略,不按 1 小时或更短时间强制丢弃历史消息。
🐛 修复
- 私信自动回复现在会按 B 站消息时间和消息 ID 判断每个会话真正最新的一条消息,不再依赖接口返回顺序。
- 当同一会话里最新消息已经是软件自己发出的取关/关注等自动消息时,更早的用户历史私信会被标记为已合并,不再触发默认回复。
💡 升级提示
- 该版本用于避免长时间未登录或接口返回顺序异常时,对已经被后续自动消息覆盖的历史私信再次发送默认回复。
修复 Windows 桌面快捷方式名称显示为乱码的问题
🔧 优化
- 修正客户端安装包元数据描述,避免后续打包继续写入乱码中文。
🐛 修复
- 修复安装器配置里的中文编码异常,新安装或升级后桌面快捷方式将显示为「哔哩哔哩自动回复」。
💡 升级提示
- 已安装旧版的用户升级后如仍看到旧快捷方式,可删除旧快捷方式或重新安装新版。
修复手机扫码确认页提示「API校验密匙错误」的问题
🔧 优化
- 扫码登录模块 User-Agent 同步更新到 Chrome/131
🐛 修复
- 二维码生成接口补充
source=main-fe-header,确保 B 站返回的扫码 URL 带 from=main-fe-header,避免手机端确认页因为 from= 空值触发 API 校验错误
💡 升级提示
- 该问题发生在账号添加前,因此诊断包中会显示 accounts 为空;升级后重新生成二维码再扫码即可
参考 BiliGo 开源实现,对齐反风控核心策略——修复缺少 buvid Cookie、共享 dev_id 被拉黑等根因
🆕 新增
- Session 预热:首次使用前自动访问 bilibili.com / message.bilibili.com / single_unread,获取 B 站下发的 buvid3、buvid4、b_nut 等风控 Cookie 并合并到后续请求
- 每账号独立 dev_id:为每个 B 站账号生成唯一 UUID 并持久化。旧版全用户共享固定 dev_id 已被 B 站风控标记
🔧 优化
msg[new_face_version] 从 0 改为 1,对齐 BiliGo- User-Agent 从 Chrome/124 更新到 Chrome/131
- Electron 浏览器兜底通道同步使用持久化 dev_id
💡 升级提示
- 对比 BiliGo 源码发现:缺少 buvid 风控 Cookie 是被识别为机器人的核心原因;固定 dev_id 会导致全用户连坐 412
- 升级后旧账号的 dev_id 会自动迁移,无需手动操作
修复 request was banned (code=-412) 未触发浏览器兜底和长退避的问题
🐛 修复
- 识别 JSON -412 风控:
send_msg 返回 request was banned (code=-412) 时,现在会和 HTML 风控一样触发浏览器发送兜底 - 浏览器通道失败后立即长退避:如果 Chromium 发送仍返回 -412,会进入 60-120 分钟持久化退避并中断当前批次,避免持续刷失败
- 关注欢迎消息同步修复:欢迎、告别、重关消息命中 -412 时也会立即中断当前 tick
💡 升级提示
- 诊断包显示用户手动能发,但软件发送返回 -412;该版本补齐 -412 与 HTML 风控之间的处理差异
- 如果账号已被 B 站临时限制,仍建议暂停自动私信一段时间后再恢复
发送通道升级:账号手动能发但软件 API 被 412 拦截时,自动切换 Electron 浏览器发送兜底
🆕 新增
- 浏览器发送自动兜底:客户端仍优先使用原 Web API 发送私信;如果 B 站返回
status=412 HTML 风控页,会自动切换到隐藏 Chromium 窗口发送,模拟真实浏览器页面环境 - 隐藏 Chromium 会话发送器:主进程注入账号 cookie,加载
message.bilibili.com,在浏览器上下文中调用私信接口,复用浏览器网络栈、cookie session 和页面来源环境 - 稳定浏览器 dev_id:浏览器通道保存随机设备 ID,避免继续使用固定假设备号
🔧 优化
- Node API 请求头更接近真实浏览器:补充 Origin、Accept、Accept-Language、Sec-Fetch 等请求头,降低直接 API 请求被网关识别的概率
💡 升级提示
- 这个版本解决的是“手动私信能发,但软件 API 请求被 B 站拦截”的兼容问题,不是鼓励发送外链或引流话术
- 如果模板仍包含外链、拆字域名、谐音规避、诱导跳转等高风险内容,浏览器通道也可能继续被 B 站限制
防御性补丁:B 站私信 HTML 风控退避会持久保存,重启客户端也不会继续补发撞风控
🆕 新增
- 风控退避持久化:账号命中 B 站私信 HTML 风控页后,暂停到期时间会保存到本地状态文件。即使用户重启客户端,也会继续保持 60-120 分钟冷却,不再一启动就继续补发历史消息
- 关注事件同步保护:关注欢迎、告别、回访遇到 HTML 风控后同样持久暂停,避免高速轮询期间反复触发 B 站网关拦截
🐛 修复
- 命中风控后立即中断当前批次:之前同一轮里第一条私信已经返回
status=412 HTML,客户端仍可能继续尝试后续会话。新版会立刻停止该账号本轮剩余发送,保号优先 - 重启后不再立刻撞风控:解决用户反复重启客户端后,退避状态丢失、又连续触发多条失败日志的问题
💡 升级提示
- 本版本不是解除 B 站风控的工具。账号已经被拦截时,请先停用自动私信 24-48 小时,并删除外链、拆字域名、谐音规避、诱导跳转等高风险话术
- 如果你只是把规则临时改成「1」或「122223」,但账号仍在风控冷却期,B 站仍可能继续拦截,这是账号/环境状态问题,不是这条测试消息本身的问题
防御性补丁:识别 B 站返回 HTML 风控/网关页,不再每 5 秒重复撞墙,并提示检查外推/敏感引流话术
🆕 新增
- 识别 HTML 风控/网关拦截:当 B 站接口返回
<!DOCTYPE html>、<html> 或非 JSON 网关文本时,客户端会把它识别为「B站风控/网关拦截」,不再显示难懂的 Unexpected token '<' JSON 解析错误 - 新增更明确的风险提示:错误信息会提醒检查回复模板是否含外推链接、拆字域名、谐音规避、诱导跳转等敏感引流话术
🐛 修复
- 私信发送遇到 HTML 拦截后立即长退避(60-120 分钟):之前命中 B 站风控页后客户端仍会每 5 秒继续请求,持续刷失败日志、加重账号风控分;新版第一次识别后立即暂停该账号,保号优先
- 关注欢迎 / 告别 / 回访同步保护:关注事件拉粉丝列表和发送欢迎、告别、回访消息时,如果遇到 HTML 拦截,也会进入 60-120 分钟退避,避免高速轮询继续撞风控
💡 升级提示
- 本补丁不能让已被 B 站风控的账号自动恢复,它只修复「失败后客户端继续高频撞墙」的问题。账号恢复仍需要用户停止违规模板、等待冷却,必要时重新扫码登录
- 如果模板包含站外链接、拆字域名、谐音规避、诱导跳转等内容,请先下线或改写;否则退避到期后仍可能继续失败
防御性补丁:账号被 B 站强制下线时不再每 5 秒疯狂刷错误日志,自动退避 30 分钟保号优先
🐛 修复
- 账号 cookie 失效后立刻退避,不再加重风控(重要保号修复):之前账号被 B 站强制下线 / 异地登录踢出后,客户端会**每 5 秒一次**继续往
session_svr 接口打无效请求,控制台疯狂刷 code=-101 账号未登录,浪费 B 站接口配额、加重该账号风控分。新版第一次失败立刻账号级 30+15 分钟随机退避,期间静默跳过;用户**重新扫码登录后下次 cycle 自动恢复**,无需重启客户端 - 关注事件监控同步退避(30-60 分钟):上一版的 30 秒高速轮询模式下,cookie 失效后关注 watcher 也会高频打粉丝列表接口;新版同步加 cookie 失效检测,比私信更长的退避(因为关注 watcher 重新登录后才能真正恢复,自然冷却无意义)
💡 升级提示
- 本补丁针对的是"客户端在账号失效后的行为",不是"防止账号失效"。如果你的账号是 3 个连号矩阵小号同 IP 同设备同时跑、或 PC 客户端 + 手机 B 站 App 同时登同一账号,那 B 站风控判定异常的根因还在你这边,需要分散设备 / IP / 不要多端同账号在线
- 已被风控强制实名的账号需要:(1) 手机 B 站 App 完成实名认证;(2) 客户端按红色横幅「点此重新扫码登录」重新扫码;(3) 重新扫码后 30 分钟内客户端自动恢复轮询,无需手动重启
关注欢迎/告别/重关响应速度大幅提升(从 2.5 分钟 → 15 秒平均、最快 1-3 秒)+ 服务端修复多设备冲突横幅误报
🆕 新增
- 关注事件接口风控自动退避(与评论 watcher 同款保护):粉丝列表 / 欢迎私信发送触发 B 站风控(-352 / -509 / -799 等)时,账号级 5-30 分钟随机退避,期间静默跳过,到期自动恢复——给高速轮询上"安全网",保号优先
🔧 优化
- 关注事件高速轮询:默认轮询间隔从 5 分钟 → 30 秒,欢迎前随机延迟从 30-120 秒 → 1-3 秒。新粉丝从关注到收到欢迎私信,平均延迟从 2.5 分钟 降到 15 秒,最快 1-3 秒。无需任何配置改动,升级后立即生效
- 多事件批量场景间隔收紧:5 个粉丝同时来时,每条欢迎之间间隔从 30-90 秒 → 5-15 秒;只有 1 条欢迎时跳过间隔。单轮事件上限 5 条 → 10 条,避免大批量关注被拖到下一轮
🐛 修复
- 多设备冲突活跃窗口 30 分钟 → 2 分钟(服务端,全员受益):之前单机用户也常被"在其他设备上同时运行"红色横幅骚扰,原因是历史崩溃/升级/重装造成的旧设备记录在 30 分钟窗口内被算成"还在跑"。客户端心跳间隔 60 秒,2 分钟窗口足以覆盖 1 次心跳抖动,又能让"实际已离线"的旧记录在 2 分钟后自动判死、不再推冲突横幅。所有现役客户端无需升级即可受益
💡 升级提示
- 用户图 2 的 5 分钟轮询配置无需手动改:v0.4.6 启动时自动识别"≤5 分钟"为"想要快",切到 30 秒高速轮询;如果你**显式想要慢轮询**(例如 15 分钟),那个设置仍然被尊重不变
- 取关告别仍保持原有 1 小时容错延迟(防 B 站接口偶发漏返回误判取关,反向骚扰风险高),未变
紧急修复:换电脑后同一人被多次回复 + 多设备冲突横幅按钮重排(新增「让此处接管」)
🆕 新增
- 「让此处接管,停掉其他设备」按钮(红色横幅新增主操作):符合"我在新电脑发起接管"直觉。点击后服务端把同 mid 在其他设备的活跃记录标记 takenOver,那些设备下次心跳(60s 内)自动禁用本机该账号;本机本地立即清掉冲突缓存,回复秒级恢复运行
- 服务端新增
POST /api/v1/account-usage/takeover 接口;heartbeat 响应新增 takenOver: string[] 字段,让客户端知道哪些 mid 被其他设备接管了
🔧 优化
- 红色横幅按钮重排:从原先「禁用本机 / 我已知晓」两按钮 → 改为「🚀 让此处接管 / 禁用此处 / 我已知晓」三按钮,主推接管。文案补充「已为你自动暂停本机回复」提示让用户明白 P0 兜底已生效
🐛 修复
- 多设备冲突时本机自动暂停回复(关键兜底):换电脑后两台同时跑会导致 A 设备 follower 表为空发 welcome、B 设备标记 lost 发 refollow,同一粉丝双重收到不同话术骚扰。新版在 ReplyScheduler 和 FollowerWatcher 入口检查冲突列表,发现冲突立即跳过本轮、不发任何消息。即便用户没及时点横幅按钮也不再发重复消息
💡 升级提示
- 建议两台都升级到 v0.4.5:v0.4.5 ↔ v0.4.5 设备间接管 + 自动禁用一气呵成(约 60-90s);v0.4.5 ↔ v0.4.4 跨版本时旧版机不识别 takenOver 仍会跑,需要手动到旧机关闭。OTA 4 小时内自动升级,重启客户端可立即检查
- 老用户无破坏:服务端响应新字段老客户端会自动忽略;不需要任何配置变更
防风控 v2 上线:话术多变体随机 + 开工 / 暂停时长抖动,降低 B 站机器人特征
🆕 新增
- 整条话术多变体:规则回复 / 默认兜底回复支持用
||(两个英文竖线)分隔多条整句话术,运行时随机挑一条。例:你好~||嗨,收到||您好,已查看。强烈建议每条规则配 3-5 条变体(同一规则连发相同话术是被风控的最常见原因) - 工作时段开工抖动:每天首次进入工作时段时再随机延迟 0-15 分钟才开始回复,破解"每天 09:00:00 准点开始"机器特征
🔧 优化
- 风控暂停时长随机化:原先固定暂停 30 分钟,现改为 30-45 分钟随机,避免"30 分钟整点恢复"机器特征
- Dashboard 规则表单新增「整条变体:||」快捷插入按钮 + 防风控提示标语;默认兜底回复同样支持
|| 变体
💡 升级提示
- 完全向后兼容:单条话术(不含
||)行为完全不变;老规则不需任何改动 - 建议升级后把现有规则一一改为多变体形式,**这是抗风控收益最大的一步**
- 与 v0.4.3 已有的会话冷却抖动 / 风控错误自动暂停 / 拉黑硬失败会话 / 仅粉丝过滤共同构成「防风控 5 件套」
自动更新连接瞬时故障自动重试(修复 net::ERR_HTTP2_PROTOCOL_ERROR)
🆕 新增
- 购买即自动开通账号(云端身份铺路):支付成功后系统会用购买邮箱自动开通客户中心账号,激活码天生绑定 userId。换机 / 拉取授权码 / 未来云端挂机都不需要再单独「注册」,邮箱验证码登录即可
🐛 修复
- 检查更新瞬时失败自动重试:HTTP/2 stale 连接、网络超时、DNS 抖动等瞬时错误会在 30s 后静默重试 1 次,不再立即弹「检查更新失败」通知打扰用户
💡 升级提示
- 配套服务端 nginx 已注入
keepalive_timeout 75s + keepalive_requests 1000,缩短 stale HTTP/2 连接窗口 - 老用户无影响:未购买过的用户不会创建账号;已激活但未绑账号的老用户首次邮箱登录时会自动反绑(沿用 v0.4.2 的 upsertUserOnLogin 路径)
账号为主身份重构(ADR-001):取消设备数限制,授权码登录账号即用
🆕 新增
- 实例运行锁:账号粒度互斥,同账号同时只能 1 处运行回复任务(防止双开导致消息重复回复);冲突时 dashboard 顶部显示警告横幅 + 「切换到本机」按钮
- 实例锁心跳每 5min 续约,进程退出主动释放,30min 无心跳自动回收
🔧 优化
- 不限设备数:取消所有套餐的「最多激活 N 台」限制。一个授权码可在任意多台设备上激活使用
- 激活时可关联账号:dashboard 邮箱登录后激活授权码会自动绑定账号,token 内含账号信息
- 跨账号防御:授权码已绑邮箱后,他人无法用别的账号激活同一授权码
- dashboard 顶部账号入口:右上角新增账号入口,未登录显示「📧 登录账号」,已登录显示邮箱 + 拉取 / 退出
- 套餐对比表删「设备数」列:月 / 季 / 年三档付费权益完全一致,差异化退化为「订阅时长折扣」(包月模式)
💡 升级提示
- v0.4.1 老客户端无破坏:服务端
/license/activate 等接口仍向后兼容,不传 userToken 也能正常激活 - 升级到 v0.4.2 后老 deviceToken 继续可用,无需重新激活;首次「邮箱登录拉取授权码」后系统会自动把当前授权码绑定到账号
配合客户端 v0.4.2 上线 ADR-001 账号为主身份重构:取消设备数限制 + 激活接入 userToken
🆕 新增
- 新增
/api/v1/instance/acquire-lock /heartbeat /release-lock /status 四个路由(用户账号粒度互斥锁,TTL 30min) /license/activate 接受可选 userToken:传则反查 license.userId 所有权 + 在 token payload 加 userId / email claim- B 站账号已绑邮箱时,他人拿同一授权码激活返回 403 LICENSE_NOT_YOURS
🔧 优化
LicenseRecord.maxActivations 字段废弃(保留历史数据兼容回滚),PLAN_QUOTA 不再含 maxActivationsActivation 设备激活表停用,相关方法退化为 no-op 兼容 shim(v0.4.1 老客户端激活仍正常)/license/heartbeat 退化为 license 健康检查(不再跟踪设备状态)- 销售页
/buy 套餐卡片改「不限设备数 · 账号登录即用」
💡 升级提示
- 架构决策记录:
docs/ADR-001-账号为主身份重构.md - v0.4.1 老客户端激活 / 心跳 / 解绑等接口全部继续工作,无需用户操作
新增「支付宝」付款通道(PC 扫码 + 手机唤起 APP),手机端用户终于可以直接下单
🆕 新增
- 支付宝付款:购买页弹窗新增「支付宝」按钮,与「微信支付」并列。手机端默认推荐支付宝(自动唤起 APP 完成付款)
- 手机端体验补齐:之前只有微信扫码(手机用户基本无法付款),现在手机浏览器打开
/buy → 选套餐 → 一键唤起支付宝完成付款 - 同步回跳:付款成功后自动跳回订单页,可立即看到授权码
💡 升级提示
- 微信付款仍可用(PC 扫码)。两种支付方式可由用户自选
- 后台对账数据:订单
channel 字段标记付款来源(wechat / alipay)
付费档「最大激活设备数」按 SKU 阶梯化 — 月卡 2 / 季卡 3 / 年卡 5(仅影响新购订单,存量授权码不变)
🔧 优化
- 月卡(monthly):默认最大激活设备数 3 → 2
- 季卡(seasonal):保持 3 台不变
- 年卡(yearly):默认最大激活设备数 3 → 5
- 定制版:保持 10 台不变;试用版:保持 1 台不变
- 官网首页 FAQ、购买页套餐卡片与「可以换电脑吗?」FAQ 同步更新文案
💡 升级提示
- 存量授权码不受影响:本次只改新签发时的默认值;已签发的授权码
maxActivations 保持原值(多数为 3) - 客户已购的月卡仍享 3 台原承诺;如需调整,管理员可在后台
/admin → 详情 → 「最大激活设备数」单独修改 - 调整理由:月卡到年卡价差近 10 倍,原先共用 3 台无差异,已升级月→年用户得不到设备增益;阶梯化后年卡多设备价值更明确
- 后续将在客户端配套「在线槽位模型」:5 分钟心跳 + 30 分钟离线视为不占名额 + 激活超额时弹窗「踢下旧设备」,让换机体验更顺滑
私信回复速度优化 + Dashboard 体验优化:5 秒轮询、卡密明细、昵称显示、日志管理和授权页更清晰
🔧 优化
- 私信响应更快:账号轮询下限从 10 秒放宽到 5 秒,新扫码账号默认 5 秒轮询、1-2 秒随机回复延迟
- 私信拉取更快:最近会话消息由串行拉取改为有限并发拉取,缩短单轮轮询耗时
- 卡密池详情更清晰:查看 / 导入页面新增卡密明细,可看到卡密、状态、导入时间、领取人和领取时间
- 昵称显示更友好:卡密领取记录优先显示账号昵称;私信模板
{sender_name} 会优先解析 B 站昵称,不再把长 mid 发给用户 - 控制台更易懂:套餐名、规则场景、适用对象、匹配类型等内部值改为中文展示;规则变量改成可点击插入按钮
- 授权页更清晰:套餐配额展示所有套餐,当前套餐高亮;授权服务地址和原始数据移入「高级 / 排障」区域
- 日志更好管理:回复日志新增分页、关键词 / 状态 / 场景筛选、保留天数设置和清除历史日志入口
- 评论配置更省心:评论区指定视频支持直接粘贴 B 站链接、BV 号、av 号或纯数字 AID,保存时自动识别
🐛 修复
- 修复
dispenseCardKey 派发规则创建时 reply 为空被错误拦截的问题 - 修复账号设置弹窗仍提示轮询间隔 ≥10 的旧文案,已同步为 ≥5
- 修复「仅粉丝」规则只依赖本地粉丝快照的问题:用户刚取关后再发粉丝专属暗号时,会即时校验当前关注状态;未关注会回复「请先关注UP,然后再发一次暗号」,关注后再次发送才发放粉丝专属内容
- 修复规则列表、免费试用申请等位置在窄列下文字被挤成竖排的问题
💡 升级提示
- 老账号不会被强制改参数;如需更快响应,可在「账号 → 设置」中把轮询设为 5 秒、回复延迟设为 1-2 秒
- 仍保留会话冷却、随机延迟、每日上限、防骚扰和风控退避,不提供主动群发或绕风控能力
v0.4.0 涨粉营销工具包 Phase 2 — 卡密 / 激活码自动分发器;与 0.3.6 的 audience 组合形成「关注后领激活码」完整涨粉链路
🆕 新增
- 卡密池管理(全新 Tab):创建池、粘贴或 .txt 上传批量导入卡密(自动去重)、实时查看「可用 / 已用 / 总数」、按用户聚合的领取记录、清理已用卡密、导出 CSV
- 派发卡密规则:规则新增「动作类型」字段。选择「派发卡密」后可配置:绑定的卡密池、同一用户最多领取次数(默认 1,0=不限)、派发文案模板(支持
{code} 占位符 + 已有的 {sender_name} 等变量)、池空话术、超限话术 - 事务性派发(保证卡密资产不丢):占卡 → 发信 → 成功 commit 绑定 + 递增计数;发送失败(含风控 / 拉黑 / 网络错误等任意原因)自动 release 把卡密退回池内可用状态
- 完整 API:池 CRUD / 批量上传 / 列卡密 / 列领取记录 / 清理已用 / 导出 CSV
💡 升级提示
- 典型涨粉链路(建议组合):规则 A(仅陌生人 + 普通回复,关键词「领激活码」→ "请先关注我哦~关注后回复"领激活码"即可领取")+ 规则 B(仅粉丝 + 派发卡密,同关键词,模板 "你的激活码是 {code}")。陌生人发关键词走规则 A 引导关注,关注后再发同样关键词命中规则 B 自动派发
- 「派发卡密」规则强制场景为「私信」(保存时自动锁定),不支持评论场景
- 推荐搭配「防骚扰回复次数限制」+
cardKeyMaxPerUser=1 防同人薅羊毛 - 0.3.x 老规则无影响:actionType 默认 reply,行为完全一致;新建派发卡密规则前请先在「卡密池」Tab 创建并导入至少一个池
私信规则新增「适用对象」:全部 / 仅粉丝 / 仅陌生人,为涨粉营销链路(先关注再领资源)打基础
🆕 新增
- 规则新增「适用对象」字段:每条私信规则可单独设为「全部」(默认,向后兼容)/「仅粉丝」(已关注 UP)/「仅陌生人」(未关注 UP)
- Dashboard 规则表单、规则列表、规则调试器都已同步更新;调试器新增「测试身份」下拉,可本地模拟粉丝 / 陌生人两种身份分别演练命中路径
- 评论区规则不受影响,「适用对象」字段仅在私信场景生效
💡 升级提示
- 典型用法:规则 A(仅陌生人,"领卡密" → "请先关注我哦~关注后再发")+ 规则 B(仅粉丝,"领卡密" → 发激活码)组合起来就是经典的涨粉营销链路
- 本版为即将到来的 v0.4.0「涨粉营销工具包」 的第一阶段;下一版将加入「卡密 / 激活码分发器」,用 `actionType=dispenseCardKey` 自动从卡密池取码发送、每人限领次数、池空话术、超限话术等完整能力
- 身份判定依赖客户端 FollowerWatcher 维护的粉丝表:刚启用时如果粉丝表尚未冷启动刷入,`仅粉丝` 规则可能暂时无法命中,建议等一轮 FollowerWatcher 轮询完成再小流量验收
修复规则「适用场景」(私信 / 评论区 / 私信+评论)在重启后被还原为「私信」
🐛 修复
- 修复规则场景丢失:将规则改为「评论区」或「私信 + 评论」并保存后,重启客户端
scene 字段不再被静默丢弃 - 根因与 0.3.3 同一家族:配置加载阶段的校验 schema 缺
scene 字段,导致 zod 自动 strip - 同步追加回归测试覆盖
dm / comment / both / 未填 四种规则场景的加载行为
💡 升级提示
- 如果你之前把规则改成「评论区」或「私信 + 评论」却发现重启后丢失,升级到 0.3.5 后重新保存一次即可
- 至此评论区自动回复 MVP 端到端可用:不被空间稿件接口风控(0.3.2)→ 配置不丢(0.3.3)→ 规则场景不丢(0.3.5)→ 回复嵌套在目标评论下(0.3.4)
修复评论区自动回复被发成顶层评论:回复现在会正确嵌套在被回复的评论下方
🐛 修复
- 修复评论区回复没有嵌套:之前 0.3.2/0.3.3 演练时自动回复实际被 B 站当成了视频的新顶层评论;现在同时传
root 和 parent,回复会正确显示在目标评论底下 - 配合 0.3.2(指定视频 AID 不再触发风控)与 0.3.3(配置不再被重启清空),评论回复 MVP 完整可用
💡 升级提示
- 升级后建议手动删除 0.3.2/0.3.3 演练时被错误发成顶层评论的机器人回复,再做一次完整验证
- 强烈建议所有已尝试「评论区回复(MVP)」的用户升级到 0.3.4
修复评论区回复设置「重启后被清空」:启用与「指定视频 AID」等设置现在能正确持久化
🐛 修复
- 修复评论区回复配置丢失:保存「评论区回复(MVP)」的「启用」「指定视频 AID」等设置后,重启客户端不再回到默认值
- 同步加入回归测试,覆盖配置写入 + 加载链路,避免后续版本再次回退
💡 升级提示
- 升级后请重新打开「规则」-「评论区回复(MVP)」卡片确认设置仍是你预期的值;如果重启前已经被默认掉过,请重新保存一次
- 建议与 0.3.2 一起升级,否则「指定视频 AID」即使设置成功也会在重启后被丢弃
指定视频测试模式优化:评论回复设置「指定视频 AID」时不再列空间稿件,少一道接口少一道风控
🔧 优化
- 评论回复在设置「指定视频 AID」时,直接通过单视频信息接口拿目标视频,跳过 UP 主空间稿件接口
- 评论指定视频测试场景下,触发 B 站
-799 请求过于频繁 风控的概率明显降低
💡 升级提示
- 只想用一个视频做评论回复演练时,建议升级后填写「指定视频 AID(可选)」
- 若上一次轮询正处于风控退避中,请等待自动恢复,不要频繁切换开关
评论区回复调试与指定视频验收补丁:可定向监控单个视频,并在控制台查看最近一轮评论拉取结果
🆕 新增
- 评论回复指定视频:评论区回复配置新增「指定视频 AID(可选)」,可只对一个视频做评论回复测试,避免影响其他视频
- 最近轮询调试状态:控制台「评论区回复(MVP)」卡片直接展示上一轮拉取的视频、评论数量,以及每条评论的命中 / 跳过 / 限速 / 风控原因
- 同一信息也通过
/api/config/comment-reply 暴露给二次开发使用
🐛 修复
- 修复评论区回复测试时难以判断未回复原因的问题,便于区分视频未被监控、规则未命中、重复回复、限速和风控退避
💡 升级提示
- 正在验收评论区回复时,建议升级后填写目标视频 AID,再观察「最近轮询」状态定位问题
- 评论回复仍建议保持保守参数,避免频繁轮询或连续回复触发风控
评论区关键字回复(MVP):把私信回复能力扩展到视频评论区,规则支持「评论区 / 私信 / 私信 + 评论」三种场景
🆕 新增
- 评论区自动回复(MVP):客户端可轮询当前账号最近视频评论,按规则回复评论;默认关闭
- 规则适用场景:每条规则可选择仅私信、仅评论区或同时生效;旧规则默认仍按私信处理,保持兼容
- 控制台配置入口:规则表单新增「适用场景」选择,规则列表展示场景,规则页新增「评论区回复(MVP)」配置卡片
- 规则调试器多场景:dry-run 支持选择「私信 / 评论区」场景;回复日志新增「私信 / 评论」标签
🔧 优化
- 评论回复默认参数收紧为:最近 1 个视频 / 每视频 10 条评论 / 每视频每小时最多 1 条 / 延迟 180-300 秒
- 回归测试体系:新增
npm test(场景隔离 + 评论去重 / 限速 smoke)和 npm run check(typecheck + 测试 + 完整构建)
💡 升级提示
- 评论区回复功能默认关闭,升级后不会影响现有私信自动回复
- 评论区接口比私信更敏感,建议先用小号或低流量视频测试,并保持默认保守参数
- 若控制台显示「评论接口退避中」,说明 B 站接口已提示请求过频或风控,请等待系统自动恢复,不建议手动频繁重试
同一 B 站账号多客户端风险提示:发现同号多端同时挂机时,控制台顶部红色提示重复回复与封号风险
🆕 新增
- 同一 B 站账号多客户端使用提醒:客户端启动后定期上报当前启用账号;如果同一个 B 站账号正在另一台电脑或另一个授权客户端中同时使用,控制台顶部会显示红色风险提示
- 风险提示明确说明“同一私信可能被重复回复,存在 B 站降权或封号风险”,并提供「禁用此处账号」按钮,一键停用本机该账号
🐛 修复
- 修复同一台电脑使用两个不同授权码挂同一个 B 站账号时可能漏提示的问题
- 禁用或删除账号时主动释放占用状态,避免另一端继续看到过期冲突
💡 升级提示
- 建议所有正在多电脑、多授权码使用同一个 B 站账号的用户尽快升级
- 升级后请重启客户端,并等待 5-60 秒让风险检测完成首次心跳
- 该功能是软提醒,不会强制踢下另一端;如看到风险提示,建议只保留一台客户端继续挂机
关键词规则支持 | 分隔多关键词:一条规则覆盖多种说法,告别"为每个词单独建规则"
🆕 新增
- 关键词模式支持
| 分隔多关键词任一命中:「匹配内容」字段写 链接|哪买|多少钱|哪款 就能覆盖 4 种说法,OR 语义;原来需要为每个关键词单独建一条规则,现在一条搞定 - 控制台「规则」表单的占位符 + 帮助文字同步更新,新增规则时直接能看到
| 用法示例
💡 升级提示
- 老用户覆盖安装即可,已有规则不需要改动;想合并多条规则可手动把多个 pattern 用
| 拼起来留一条 - pattern 不含
| 时行为与旧版完全一致,向后兼容
用户服务入口完善:Dashboard 一键加 QQ 群 + 三处导航补齐
🆕 新增
- 帮助与反馈卡片(运行概览页):付费用户专属 QQ 群(1075614896 苏悦工具站)+ 邮件客服 + 在线文档三个入口并列,「一键加群」点击直跳官方 QQ 加群页
- 官网首页顶部导航 / Hero CTA / 页脚三处统一加入「博客」入口,新写的 SEO 长文「B 站私信自动回复会封号吗?」从首页一跳可达
🔧 优化
- 官网首页 Hero「7×24 客服」改为「付费用户专属 QQ 群」,与购买页 FAQ 的「工作日 12 小时响应」表述统一,避免页面间自相矛盾
🐛 修复
- 官网删除虚假评分结构化数据(aggregateRating 4.8/127),避免 Google 判定 review spam 触发整站降权
💡 升级提示
- 老用户覆盖安装即可,无配置变更
- 部分用户客户端中升级安装会保留旧 dashboard 缓存,按 Ctrl+Shift+R 强制刷新一次即可看到新「帮助与反馈」卡片
v3.1 防风控 + 关注互动:补齐对单粉丝刷屏防护和粉丝事件自动响应两块关键能力
🆕 新增
- 防骚扰 / 同用户回复次数限制:同一对方用户在指定时间窗口内累计回复达到上限后自动跳过,与会话冷却 / 每日配额 / 失败退避独立叠加,构成第 5 重防风控保护
- 关注事件消息:周期轮询粉丝列表,自动检测三类事件并发对应私信 —— 新关注(欢迎)/ 取消关注(告别)/ 重新关注(回访),消息支持 {nickname} 占位符替换为粉丝昵称
- 冷启动静默铺底:首次启动把当前所有粉丝写入数据库但不发欢迎,避免老粉被群发触发风控
- 取关 1 小时容错:粉丝从列表消失后先标记,连续 1 小时仍未回来才视为真取关,规避接口抖动与翻页边界误判
- 控制台 UI 面板:上述两套功能的所有开关 / 文案 / 阈值都可在控制台「规则」标签页底部直接配置,保存即热生效,无需重启
🔧 优化
- 关注事件单轮限速:最多发 5 条 + 条间随机 30-90 秒间隔 + 启动延迟 30 秒,最大限度规避风控
- `rules.example.yaml` 加入 `antiSpam` / `followEvent` 完整示例配置和注释
💡 升级提示
- 老用户覆盖安装即可,已有数据 / 配置不丢
- 两个新功能默认 未开启,需要主动到控制台「规则」标签页底部勾选启用
- 强烈建议在测试账号上验证欢迎消息文案和发送效果,确认无误再上主号
- 取关告别建议保持关闭(避免反向骚扰已离开的用户)
微信支付扫码闭环 + 价目表精简
🆕 新增
- 微信支付 Native 扫码全流程接入:选套餐 → 下单 → 扫码 → 自动发邮件
- 订单状态客户端轮询 + 1 分钟后主动反查微信容灾
- 服务端权威价目表,所有金额校验以服务端为准
🔧 优化
- 套餐结构精简为 试用版(免费)+ 正式版 + 定制版 三档
🔧 优化
- AI 兜底默认超时 15s → 45s
- AI 兜底失败自动重试 1 次(仅对 timeout / 5xx / 429 / 网络抖动重试,业务错误不重试)
- 授权服务收到 latest.yml 时自动清理旧版本,默认保留 2 个版本作回退
🐛 修复
- AI 兜底高峰期偶发超时:DeepSeek 单次响应可能 20-30s,原 15s 超时频繁触发失败