# 更新日志 这个文件记的是**每个版本改了什么**,用人话写 —— 面向使用者,不是开发笔记。 --- ## 0.2.7 — 2026-10-18 **修「自动续刷时把历史上所有推荐都塞进稍后再看」** - 根因:收尾里那句 `want = pickBvids.length ? … : doc.items` —— 这一轮如果**一条推荐都没有**, 它就退化成"当天全部条目",于是把所有历史推荐重新加了一遍。 - 现在只认这一轮真的标了推荐的(空就是空)。 **修「同一轮分开发了两封邮件」** - 笔记是分批写出来的(模型边搜边写),每批 ingest 都触发一次收尾 ⇒ 一封"1 条"、一封"2 条"。 - 现在只登记到 `pendingMail`,**90 秒没有新条目**才渲染并发出**一封**;定时器 + 每分钟 tick 双保险。 **轮次文件夹默认收起** - 两个根(推荐列表 / 不推荐)展开;「第 N 轮」默认折叠,点一下再展开。 **删笔记文件 = 从列表里消失** - 对账时发现 `notePath` 指向的文件不在了,就把这条从今日表里去掉(以磁盘为准)。 --- ## 0.2.6 — 2026-10-18 **修「一直循环刷」** - 上一轮一条推荐都没加进待看时,待看当然是空的 —— 但旧逻辑把这判成"看完了",于是又开新一轮, 模型偶尔一轮 0 推荐就会无限空转。 - 现在记下每轮**实际加进待看的条数**;为 0 就明确说「没东西可看,先不续刷」。 - 续刷间隔默认从 1 分钟改成 **5 分钟**(1 分钟太密)。 --- ## 0.2.5 — 2026-10-18 **修「第二轮以后不发报告、不进文件夹、不加待看,然后一直循环」** - 根因:0.2.3 给今日页加了 15 秒自动刷新,而「读今日列表」这个接口会顺手把新笔记并进今日表 (对账),它用的是 `mail:false`。于是**面板轮询先把笔记吞了**,等定时器那一轮再对账时 `新增 = 0`,收尾(发信 / 归文件夹 / 加稍后再看)就永远不触发。 - 表现完全对得上:笔记产出了、信没发、视频挂在根目录、稍后再看里没有 ⇒ 待看一直"空" ⇒ 自动续刷一直判"看完了"⇒ 无限开新一轮。 - 修法:面板那条对账也走 `mail:true`(重复发信由 `mailedKey` 挡住); 另外只有真的收进今日表才算"新增"(BV 号不合法的不再虚报)。 **修屏幕中间那条提示一直挡着** - 「上一轮还在跑…」这类 toast 之前偶发不消失(定时器被重渲染吃掉)。 - 现在加了一道兜底:任何 toast **最多留 7 秒**自动消失。 --- ## 0.2.4 — 2026-10-18 **修「正在后台运行」一直不结束(真凶:同时起了三份)** - 现场:16:49、16:51、16:51 各起了一个 dsh 子进程,三个模型同时往同一份产物目录和今日表里写, 面板那个绿标就一直挂着。 - 根因:`runDuty()` 和「自动续刷」都没有检查"上一轮还在跑"。自动续刷每 2 分钟判一次, 上一轮没结束时它又起新一轮,越堆越多。 - 修法: - `dutyRunning` 单轮闸:已经在跑就直接拒掉,日志写 `刷B站跳过:上一轮还没跑完`; - 自动续刷先看这个闸,在跑就不判; - 单轮超过 **45 分钟**自动收掉(不会再出现"永远在跑")。 **面板上的反馈更清楚了** - 点「现在跑一轮」时如果上一轮还没完,会直接说 `上一轮还在跑 —— 等它跑完,别两个同时跑`, 不再显示"已经在后台跑一轮了"骗人。 - 绿标旁边多一个 `N 分钟`,一眼看出是刚起还是卡住了。 --- ## 0.2.3 — 2026-10-18 **面板自动刷新(后台跑完那一轮现在自己就上来了)** - 症状:后台跑完一轮、笔记也写了,但「今日」页的推荐/不推荐列表不动,要手动切一下才更新。 - 修法:今日页每 15 秒静默重取一次;页面切回来立刻补一次(在后台时跳过,不乱轮询)。 **自动续刷:默认不限轮数** - 原来写死「今天最多续刷 3 轮」,日志里天天是 `自动续刷跳过:今天已经续刷 3 轮(上限 3)` —— 看着就像功能不работает(实际是到了上限就停)。 - 现在 `autoNextMaxRounds` 默认 **0 = 不限**(想限制就设 1~50)。等一分钟的间隔也默认改成 1 分钟。 **自动点赞:核实过了** - 日志证据:`已点赞:BV1iLaX6REba / BV1NXH661EpG / BV1x2Jq6NEbT`(那一轮的 3 条推荐全部点上了, 判"不推荐"的没点)。功能是好的,之前只是被上一版的崩溃挡住。 --- ## 0.2.2 — 2026-10-18 **修一个把整轮收尾吞掉的致命错误(三个症状同一个根因)** - 症状:第二次点「现在跑一轮」收不到报告、推荐视频没进「第 N 轮」文件夹、自动点赞没动静。 - 根因:0.2.1 加「自动点赞」时,把代码写在了 `const roundItems` **声明之前**。 `autoLike` 一开就抛 `ReferenceError: Cannot access 'roundItems' before initialization`, 而这句后面的「归文件夹 → 发信 → 写 Obsidian → 记 rounds」全在同一个函数里,**整段被跳过**, 而且异常没人接(对账那边只 catch 了自己)。 - 修法:把 `roundItems` 提到最前面;对账里调收尾也加了 try/catch + 日志(以后再出错能在日志里看到,不会再静默吞掉一整轮)。 **修:不推荐的视频「拖不进轮次文件夹」** - 根因:0.2.1 的迁移规则没区分 parent,把「不推荐 → 第 N 轮」里的视频又搬回了「不推荐」根目录, 表现就是拖过去又弹回来;拖进自己新建的文件夹没事(那不是 kind=round)。 - 现在只搬「推荐列表下面」的轮次文件夹里的漏网条目。 **修:每轮都会发信** - 去掉「10 分钟内发过就不再发」的时间窗(它把手动再跑一轮的信吃掉了)。 - 重复跑同一份笔记仍由 `mailedKey` 防住,不会重复发。 **自动续刷加了日志** - 开没开、为什么没触发(待看读不到 / 今天没加过待看 / 上限到了)现在都会写一行日志, 下次"没发挥作用"能直接看出卡在哪一步。 **点「放入」真的进推荐列表** - 原来在不推荐里的视频点「放入」只改状态、人还留在不推荐下,看着像没生效。现在会挪到推荐列表。 --- ## 0.2.1 — 2026-10-18 **两个根的顺序与分层** - 「推荐列表」固定在最上面,「不推荐」在下面。 - **不推荐也能分层**了:不推荐的视频按轮次进「不推荐 → 第 N 轮 HH:MM」,跟推荐列表一个结构。 **修:不推荐还是会跑到推荐列表里** - 根因:0.2.0 迁移老数据时,只给"没有归属"的条目分了类,而判成「不推荐」的那些**已经待在第 N 轮文件夹里**(旧版把两者混在一起建目录),迁移没动它们。 - 现在每次打开面板都会检查一遍:判「不推荐」的如果待在轮次文件夹里,自动挪回「不推荐」。你昨天那批已经归位。 **新:推荐的自动点赞** - 「功能设置」里多了一个开关:**推荐的自动点赞**(默认关)。 - 只点赞,不投币、不收藏、不关注;判「不推荐」的不点。 - 每条只点一次(记在今日表里),重复跑一轮不会再点。 --- ## 0.2.0 — 2026-10-18 **今日列表改成分级文件夹** - 最外层固定两个:**推荐列表** / **不推荐**。不推荐的视频不再混进推荐列表里。 - 推荐列表下面按轮次分:**推荐列表 → 第 N 轮 HH:MM → 视频**(三层)。 - **每一层都有「新建」**:点一下就地出现输入框,回车即建(不再弹系统对话框)。 - 视频可以直接拖进任意一层;删文件夹时里面的东西回到上一层,不会变成"未分组"。 **修三个点了没反应的按钮** - 「新建文件夹」没反应 —— 根因:这个面板在侧栏槽位里,`window.prompt` 弹不出来。改成就地输入框。 - 「一起清掉」清完又回来 —— 根因:面板一刷新就重新对账,把 `_skip-*.txt` 和判重表里的记录又导了一遍。 现在删/清空会记进黑名单(`meta.skipIgnored`),清空时还会把当天的 `_skip-*.txt` 改名,不再回头。 - 单条删除后数字不变 —— 同上,也是被对账加回来了。 **邮件「总结」分行** - 原来是一大段挤在一起。现在是项目符号:看了几条 / 最该先看哪条 / 其余值得看 / 不推荐的几条。 **「待看空了自动续刷」修好** - 根因一:`sawNonEmpty`(见过待看非空)只存在内存里,重启就清零 ⇒ 永远认为"没见过非空",不续刷。 现在落盘到 `today/<日期>.json`。 - 根因二:提示词里还留着「今天最多挑 N 条」,而 N 就是每轮条数 —— 第一轮挑满后,续刷的每一轮都"超额度"。 这句话删了,改成"别拿今天已经刷过当理由少刷"。 - 轮询从 5 分钟缩到 2 分钟,"连续两次确认空"改成一次(空就是看完)。 --- ## 0.1.9 — 2026-10-18 **照着你最爱的那封旧日报,把版式重做了一遍** - ⭐ **标题变大了**(一级标题一行大字),不会再糊在正文里。 - ⭐ **每个字段单独一行**:UP / 链接 / 播放量 / 时长 / 评分 / 推荐 / 为什么值得 / 我的一句话, 都改成项目符号分行 —— 上一版全挤成一段,读起来太累。 - ⭐ **每条都有「我的一句话」**,缺了会补一句默认的,不会再整行消失。 - ⭐ 「为什么值得」压到 **80~120 字**(上一版写到两三百字),说清楚"给谁看 / 能拿走什么 / 有什么坑"就停。 - ⭐ 末尾「总结」照旧:哪几条值得看、先看哪条。 **面板「今日」按文件夹分级** - 每轮自动生成一个文件夹(第 N 轮 HH:MM),也可以「新建文件夹」自己命名; **视频可以直接拖进任意文件夹**,拖错了删掉文件夹就回到「未分组」。 - 每条视频多了「删除」按钮。 **「本次跳过」修好** - 标题不再是清一色「(无标题)」—— 提示词要求模型写跳过时必须带标题,旧记录宿主会去补。 - 每行加了「删除」,顶部加了「一起清掉」一键清空。 **自动续刷** - 修一个真 bug:重启后第一分钟会立刻又续刷一轮(12:53 刷完、12:54 又来一次)。 现在任何一轮跑完都会盖时间戳,间隔由「自动续刷间隔」控制。 - 搜到的视频多数已在判重表里时,允许换 1~2 组词补足,不再"一次白搜就收工"。 --- ## 0.1.8 — 2026-10-18 **改口径(这版最重要的一条,别再改回去)** - ⭐⭐ **「每轮刷几个视频」= 这轮看几条,就写几条结论**。不再"只留好的": 每一条视频都会进信里,带 **✅ 值得看 / ❌ 不值得看** 和各自理由;末尾「总结」说哪几条值得、先看哪条。 以前你会看到"4 条推荐 + 10 条跳过"——那是把没碰过的视频也算进跳过了,现在不会再有。 - ⭐ **不推荐的也写一份短笔记**(`## 为什么不推荐` + `## 我的一句话`),推荐的那份 「为什么值得看」写到 **100~250 字**(6~10 句),不再两三句糊过去。 - ⭐ 面板「今日」页:每条前面直接标 **✅ 推荐 / ❌ 不推荐**;不推荐的没有「深挖」按钮。 **修** - Obsidian 输出配置会被面板保存冲掉(`obsidianEnabled/obsidianDir` 变空 ⇒ 静默不写)。 已恢复本机设置,并在信里注明路径没配好。 - 邮件抬头的数字改成「上限 N 条,这轮看了 N 条:M 推荐 / K 不推荐」,跟真实情况对得上。 --- ## 0.1.7 — 2026-10-18 **修(都是实测踩出来的)** - ⭐⭐ **「每轮刷几个视频」现在真的是"几个视频"**。上一版那个数只管"读几条字幕", 模型照旧换 5 组词去搜、搜回 25 条,最后成了"4 条推荐 + 10 条跳过"—— 你会以为它刷了 14 条。现在:搜 1~2 组,**跨组去重后只接触这么几条**,看完就停。 - ⭐ **跳过表只记"真的看过"的**。搜出来根本没碰的视频不再往跳过表里塞,报告不再虚高。 - ⭐ 邮件抬头补回**日期(周几)**和「上限 N 条、实收 N 条」,跟旧版一样一眼看懂这轮刷了几条。 --- ## 0.1.6 — 2026-10-18 **新** - ⭐⭐ 面板上**只留一个数**:**「每轮刷几个视频」**。原来那三个框(搜回几条 / 每天最多记几条 / 每轮读几条候选)合并成这一个 —— 一个数同时管"搜回几条、读几条字幕、这一轮最多推荐几条"。 - ⭐⭐ 邮件的版式换成**旧日报那种**:每条 = 标题 / UP / 链接 / 播放量 / 时长 / 评分 / **为什么值得** / **我的一句话**;末尾再来一段「一句话总结」,说清哪条最该先看。 内容全部从那条视频自己的笔记里摘(**不重复生成,不多花一分钱**)。 **修** - 一轮跑完 10 分钟内又跑了一轮(典型:自动续刷刚结束、人又手动点了一下)时,**不再补发第二封信**, 免得同一个"刷一轮"收到两封。内容照旧写进 Obsidian 和「今日」。 - 「待看」必须**亲眼见过里面有东西**,之后读到的空才算"看完了"。 以前刚装好 / 刚重置时列表本来就是空的,会被当成看完直接续刷一轮。 - 「自动探测 Obsidian 库」保存时 `save is not defined` 的报错。 ## 0.1.5 — 2026-10-18 **新** - ⭐⭐「**今日**」页:每轮推荐的视频都在这儿,**按评分排序**;可直接「深挖」生成详细笔记、或打开 B站。 跳过的收在折叠区,点「也放入」能捞回来。 - ⭐⭐ **每轮发的只是一封总结**:标题 / UP / 评分 / 一句理由 / 链接 —— **不叠加上一轮**,也不再塞笔记全文。 想细看哪一条,在「今日」里点它的「深挖」,会**单独发一封**那条视频的笔记。 - ⭐ **每轮读几条候选**(默认 5):读到字幕的量,**值得看的才推荐,不凑数**;这轮 0 条也如实说。 - ⭐ **Obsidian 连接(可选)**:每轮写 `B站日报/<日期>/round-HHmm.md`,深挖笔记写 `note-BV….md`。 面板里「自动探测」找库、「试写一个」验证;**没装就关着,以后装了再补**,不用重装插件。 - ⭐ **邮箱配置**进了面板:发件邮箱 + 授权码 + 收件人,保存后授权码入力框即清空;带「发一封测试」。 - ⭐ **待看联动**:推荐可自动加进 B站「稍后再看」;等它被清空(你看了)就再刷一轮(开关 + 间隔 + 轮数上限)。 - ⭐ 自动续刷修了两个真 bug:`bili_toview_list` 返回的是 `videos` 字段(以前读 `list` ⇒ 永远空 ⇒ 误触发); `state.json` 的当日计数从来没累加。 **改** - 深挖 / 总结的产物分目录:`out/<日期>/round-HHmm.md`,不再往同一个文件里追。 - 后台那轮的工具集里没有 `bili_pick` / `bili_seen`:现在宿主会**自己记账**,模型只需写 `_skip-YYMMDD.txt` 留痕。 ## 0.1.4 — 2026-10-17 **新** - ⭐⭐「**回复评论**」真的能用了。上一版只是加了个开关,实际**几乎不可能触发** (它得在"翻某个视频的热门评论"时刚好撞见有人回它 —— 而回复都在楼中楼里,热门列表根本不显示)。 这版换了做法:**直接去问 B站「谁回复了我」**,然后**只回"回复插件自己那条评论"的人**。 - 🔴 **它不会回你人工发的评论** —— 这个筛选是**写死在代码里**的,不靠它自觉; - 每轮回过的**不会重复回**(单独一个账本记着)。 - ⭐「**每轮最多几条**」现在是**硬上限**:超了会**直接打回**,并且明确告诉你"已用几条 / 上限几条"。 **发新评论**和**回评论**是**两个独立额度**(跟面板上两个输入框一一对应)。 ⚠️ 数字改成**你想填多少就多少**(上一版悄悄限制在 1~10)。 - ⭐「**正在后台运行…**」**绿标**:后台跑的时候顶栏会出现它,**跑完自己消失**。 点一下会告诉你**日志在哪**(想知道它跑到哪一步了就看那个文件)。 - ⭐ 面板按类别分成三个标签页:**功能设置 / 提示词 / 环境与账号**(样式跟会话上方「对话 / 轨迹」那排一致)。 - ⭐ **提示词页**新增「**回复评论的细则**」:**你能改**、也**能一键恢复默认**(恢复前会弹确认)。 **改** - 「回复评论」的规则**从章程里搬出来**单独成一份(家目录的 `reply.md`), **开着回复时才会整份给模型看** —— 关着的时候一个字都不占。 - 面板修了几处不齐:第一个标题上方的留白、标题与标签的左对齐、下拉箭头的右边距。 - 修了几处**写着 `out/` 的过时文案**(产物早就统一到 `reports/` 了)。 - 「写份日报」这类说法改成「每条各写一份笔记」(汇总日报在 0.1.3 就没了)。 **一个提醒** - **后台跑的时候没有那两道硬上限**(后台用的是另一个工具通道,插件管不到)—— 那种情况下它只能靠"看设置里的数字自己守规矩"。**前台跑则完全受硬上限约束。** ## 0.1.3 — 2026-10-16 **新** - ⭐ 设置页顶部显示**版本号**,一眼就知道自己装的是哪版。 - ⭐「**检查更新**」按钮:点一下就知道有没有新版(**只在点的时候联网**,结果缓存一天)。 - ⭐「**一键升级**」:发现真有新版时出现,点一下它自己升级 —— 之后**重启一次 dsh** 才生效。 - ⭐「**回复评论**」开关(**默认关**):开了之后它只回「**直接回复到你那条评论下面的人**」, 每轮最多回几条可以自己填;回复内容会写进报告,你能看到它说了什么。 **改** - 版本比较改成"比大小"(本地版本比线上新时,不会误报"有新版")。 **两个提醒** - 升级是"一键 + 重启",不是全自动 —— 最后那步重启只能你点。 - 如果你是**改过代码的本地版**(`link:` 装的),**别点「一键升级」** —— 它会把你的本地版换成发布版。 ## 0.1.2 — 2026-10-15 **修** - ⭐ **「就绪」不再骗人**:以前只要建过目录就显示"就绪" —— **装失败也显示就绪**(有用户被它骗着白折腾)。 现在会真的去检查依赖装上了没有;日志最后那行也改成真话。 - 只有依赖**装成功**才把 pythonPath 指过去(以前失败了也指,后面每一步都会连带失败)。 - 修了一个会崩的隐患:检查依赖时用到的一个函数没被 import。 **新** - ⭐ 设置页底部加了「**看今天的报告**」—— 在页面里直接展开看,不用再去找文件。 还有「**打开报告文件夹**」「**打开家目录**」两个一键按钮。 - ⭐「**日报写多细**」三档:**完整 / 薄(每条一两行)/ 不写(只发评论)** —— 改了立刻生效。 **改** - README 加了一句救急:**按钮叫「重装依赖」的就是旧版**,跑一次 add 升级。 - 包信息里补上仓库 / 主页 / issue 地址(npm 页面右侧会多一个 Repository 入口)。 ## 0.1.1 — 2026-10-15 **修** - 两轮同时转写会互相覆盖:每段音频改用各自的文件名(以前都叫 `audio.m4a`,会串台) - 章程加两条纪律:「看够了就下结论」「工具失败两次就记为跳过」—— 实测能省下近一半的 token **新** - 设置页加「**测一下**」按钮:真跑一次登录检查 + 一次搜索,直接告诉你"能不能用" - 徽章改成说人话:`环境已就绪` / `环境未装`(以前写 `venv 就绪`) **改** - 装依赖的按钮旁边会告诉你**下一步做什么**(装好了 → 去扫码登录) - README 补上两件最要紧的:**需要 dsh ≥ 0.1.7-rc.1**(版本不满足会被内核静默跳过)、以及**占多少空间**(不装转写约 84MB) --- ## 0.1.0 — 2026-10-14 第一个版本:按谷时自动刷一轮 B站、**读字幕原文**判断、写一份日报,特别值得的留一条评论 **@ 你**。 设置页里可以配:峰谷时段 / 每天挑几条 / 关注关键词 / 工作区 / 要不要自动评论;账号走**扫码登录**。