cortico-world-mosey 1.3.2 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,114 @@
1
1
  # 更新日志
2
2
 
3
+ ## 1.5.2
4
+
5
+ - **修掉「@ 两次」**:动态里出现 `@小月月 … @小月月还在玩` 不是延迟,是正文本身已经写了一段 `@昵称`,发的时候又按 `mention_owner` 前置了一个真 @。现在真 @ 之前会先把正文里自带的 `@昵称` 剥掉(B站动态、B站评论、抖音评论三处都修);正文如果只有 `@昵称`、剥完为空,就不前置,靠 B站的 `at_name_to_mid` 把正文里那个变成真 @。提示词里也写死了:正文不要自己写 @,开关用 `mention_owner`。
6
+ - **三项固定等待压到安全下限**(其余一律不动,打字、发布回执、评论状态确认、@ 面板轮询都保持原样):
7
+ - 私信去抖 120ms → **40ms**:这个窗口是压「一条消息触发的多次 DOM 抖动」,不是压人手连发的间隔,40ms 够合成一次,再低容易出现同一句叫两次。
8
+ - 发送后查输入框 60ms → **25ms**:平均省 35ms,最坏上限仍约 600ms。
9
+ - 回主人私信的节奏闸 4 秒 → **0.5 秒**:只盖住一次发送本身的耗时,纯粹防重发。
10
+ - 私信端到端「消息到 DOM → 推给她」从 318ms 降到 **约 240ms**;发出去仍然在 1 秒内。再往下就只剩模型自己的 3~8 秒和抖音页面加载,插件这边没有余量了。
11
+
12
+ ## 1.5.1
13
+
14
+ - **评论从「一两分钟」降到「几秒」,根因是一个 90 秒的节奏闸算漏了「主人点单」**
15
+ - 以前 `stroll_act` 走的是「她自己出门」的节奏:任何一次写操作之后 **90 秒**内不许再动。而她回你一句私信也算一次写操作——于是「你说话 → 她回一句 → 你说去评论」必然撞上 `TOO_FAST`,只能干等一分半再试。这就是「每次让她评论都要等一两分钟」的真正原因,跟抖音本身没关系。
16
+ - 现在分三档:回主人私信 4 秒(只看私信那条线)、主人当场点单 1.5 秒(只防连点)、她自己出门 20 秒。主人近 3 分钟说过话、或者不在自己出门的窗口里,都算「主人点单」。
17
+ - 私信不再占公开动作的节奏位,两个平台也各算各的(抖音限流不会连带卡住 B站)。
18
+ - **抖音评论走接口直发:8 秒 → 1.3 秒**
19
+ - 实测抖音页面自己的发布接口(`/aweme/v1/web/comment/publish`)在站内 `fetch` 不需要额外签名。现在不带 @ 的评论直接调它:打开视频页 **0.93s** + 接口往返 **0.32s**,出 cid 就走。
20
+ - 以前那条「点开评论框 → 等抖音 hydrate → 打字 → 点发送」的路还在,但降级成兜底(接口报错才走)。带 `mention_owner` 的评论仍然走它——@ 是编辑器插的 chip,接口拼 `text_extra` 拼错了会变成一条纯文本「@昵称」,看起来提到了、其实没通知人。
21
+ - 顺带把评论状态确认从 4.1 秒压到 1.1 秒(回执里已经是确定状态就不再查)。
22
+ - **风控不再挡人**(`设置 → 摸鱼 → 风控拦截力度`,默认「不拦」)
23
+ - 以前撞上 `-509 操作频繁` 会全局暂停 30 分钟~48 小时,连你当场让它做的事一起停——你看到的「评论发不出去」「私信也不回了」有一半是它造成的。
24
+ - 现在默认 **off**:只记一笔,不暂停任何动作。平台真发不出去会当场报错,她如实告诉你,还能立刻重试。
25
+ - `light`:只有出现短信验证码/封禁这种「再试也没用」的才停 30 分钟。`strict`:保留旧的长冷却。你自己拉的「手刹」(`stroll policy pause`)始终有效。
26
+ - **私信再快 0.3 秒**:合并窗口 250ms → 120ms,打字 24ms/字 → 8ms/字,发送后按 60ms 轮询输入框是否清空。
27
+ - 提速踩过的坑记一笔:把整页文本检查从 `innerText` 换成 `textContent` 会读到 `<script>` 里的打包代码,里面本来就有 `verify`/`captcha` 字样——实测每一条正常视频都会被误判成「弹验证」。已改回 `innerText`,并且合并成一次调用。
28
+
29
+ ## 1.5.0
30
+
31
+ - **私信从「一两分钟」压到「几秒」:抖音改成事件驱动,不再轮询**。以前是每 30 秒查一次会话列表,最坏要等 30 秒才知道你发了消息。现在单独开一个后台标签页停在**你那个会话**上,页面里的 `MutationObserver` 盯着消息列表——抖音自己的长连接一更新 DOM,这边就回调:
32
+ - 实测「DOM 变化 → 页面回调」**124ms**;加 250ms 合并窗口(连发两句只叫一次),从新消息进 DOM 到推给她**424ms**,读一次消息 **4ms**(以前要点头像进会话,光固定停顿就 2.4 秒)
33
+ - 这条路**零点击、零接口请求**,所以比以前更不容易招 -509(点击会话正是限流的来源)
34
+ - 回私信也走这条已经打开的会话:不跳转、不点会话,打字 24ms/字,发出去 1 秒内
35
+ - 轮询退化成兜底(默认 5 秒,观察器在线时只做 60 秒一次的对账),观察器掉了会自动重挂
36
+ - 第一次建这个页要 5 秒左右(开页 + 点进你的会话),之后一直热着;登录窗/一起看期间不建,避免多出一个可见标签页
37
+ - **评论快了一截**:`goto` 之后的固定 2.2-3.6 秒 + 3.8 秒(共 6-7 秒)换成「等评论区骨架 / 等编辑器挂载」的真事件;打字从 70-120ms/字降到 22-32ms/字(23 个字 0.75 秒);发送后不再死等 1.2 + 2.4 + 2.5 秒,改成轮询「输入框清空 / 发布回执」;评论状态确认从「睡 2.5 秒 + 还在审核就再睡 7 秒」改成 0.6/0.5/1/2 秒递进查询。一条评论的准备时间从 **~17 秒降到 ~10 秒**,已经在看的视频只要 2-3 秒
38
+ - **修:视频页「评论框点不开」**。实测视频页的 `#comment-input-container` 有尺寸、也点了,但编辑器就是不挂载——**必须真的点在那行「留下你的精彩评论吧」上**,而且页面 hydrate 完(4-5 秒)之前点它没反应。现在不设固定 sleep:点一下 → 看编辑器上来没有 → 没有就再点,谁快谁慢都自适应(图文页的两段式展开也并进同一个循环)
39
+ - **修:登录提示浮层挡住会话点击**。「是否保存登录信息?」这类浮层盖在会话列表上会把点击吃掉,现在建私信页时先清掉;会话列表是「先骨架后填名字」,改成等**这一条**出现名字再点,不再误报 `NO_THREAD`
40
+ - 私信推送的文案也改了:明确要求「一两句、十几个字、别先查 status/feed」,先发出去再细说
41
+
42
+ ## 1.4.3
43
+
44
+ - **修:图文(note)动态「显示不出评论框」**。图文页的评论是两段惰性的:`#comment-input-container` 在 note 页里 rect 全 0(不是真输入框),要先点评论图标展开侧栏,再点「留下你的精彩评论吧」提示条,真正的 Draft 编辑器才挂载。另外 note 页的发送按钮不在 `#comment-input-container` 里(容器只有 class),之前既找不到输入框也点不到发送。现在 `openCommentEditor` 走「点图标 → 点提示条 → 找编辑器」两段式展开,发送改成 **Enter 优先**(两个页面都实测有效),没发出去再退回点发送图标;`ensureVideo` 同时认 `/video/` 和 `/note/`,不再在 note 页反复误判重新跳转。实测图文评论发出去 `status=1` 公开可见
45
+ - **修:一次 -509 就把整个世界停 48 小时,连主人的私信都不回**。`-509 请求过于频繁` 是最常见的软限流,平台几分钟到半小时就恢复,但旧逻辑按 `riskPauseHours`(默认 48)一刀切,而且暂停期间**私信监听直接 `return`**——表现就是「她看得到私信但半天不回」。现在:
46
+ - 频率类(-509/429/频繁)单独分级:30 分钟 → 连击 2 小时 → 6 小时封顶;验证码/封禁类才用 12/24/48 小时
47
+ - 给主人的私信(`free`)**不受风险暂停拦截**:冷却挡的是她自己出门互动,不该连主人的话都不回
48
+ - 私信监听按软/硬风险区分:软限流期间照常监听(读页面不写东西),只有验证码/封禁才全停
49
+ - **修:私信监听太「用力」,自己招来 -509**。以前每 20 秒都点开会话读全文。现在先读会话列表那一行预览(**零点击**),预览没变直接返回缓存,变了才点开——实测第二次起每次 **0.0 秒**。回私信也不再每次整页重开:已经开着这个会话就直接输入,热态回复 **2.4 秒**(原来十几秒)。轮询默认从 20 秒放宽到 30 秒(设置里可调)
50
+ - **新增:你在抖音/B站发私信,她会马上回**。以前只有她「自己出门」时才看得到私信,表现就是发了好几句、半天没动静,最后只回一条。现在后台按 `设置 → 私信 → 多久看一次私信`(默认 30 秒)轮询两边的会话,一出现主人说的新话就推一条 **interrupt** 事件把她叫起来(宿主不认这个值会依次退到 `flush` / `debounce`),并在推送里带上**连着的那几句原文 + 分享卡链接**
51
+ - B站走 HTTP(几十毫秒);抖音要读聊天页 DOM,所以监听期间**后台页面保持常驻**(`keepWarm`),不再反复冷启动浏览器——冷启动一次要十几秒,那段时间的消息就接不住
52
+ - 私信主人**不再排队等批准**:本来就只有主人能收到,等批准的话「一发就回」等于空话(`dry_run` 模式下仍然只出草稿)
53
+ - 回私信走「聊天页直接回」的快路径,比去对方主页点「私信」快十几秒;没有会话才回退到主页
54
+ - **修:连发好几条只收到一条**。原因是只读了会话列表里那一行预览(就是最后一句)。现在 `inbox` 的 `recent` 读最近十几句,并额外给 `pending`(末尾连着几句是主人说的)和 `said`(这几句拼起来);B站私信也改成用 `fetch_session_msgs` 把末尾连着几句一起读
55
+ - **修:私信里分享的图文/视频「链接取不出来」**。抖音会话里的分享卡 (`MessageItemShareAweme`) 在 DOM 里只有封面图和作者名,没有链接。现在从消息节点的 React props 里取 `parsedContent`(原始消息体),拿到 `itemId` 和标题,拼成规范地址:图集用 `/note/`、视频用 `/video/`。名片分享拼成 `/user/<sec_uid>`。实测主人的分享卡读出来是 `https://www.douyin.com/note/7267081258470034751`
56
+ - **修:读不到「谁说的」**。方向判断改成看祖先有没有 `isFromMe`(DOM 自带),不再按左右位置猜;图片消息以前是空文本被过滤掉,现在记成 `[图片×N]`
57
+ - **修:抖音评论 @ 人点在「候选」上但不算数**。实测面板固定是 `.atBox-outside-container`,每项 `.QLIVVPgY`(头像 + `span.lgAE_oZa` 昵称),只有插成 `douyin_mention_word` chip 才会通知对方。现在的做法:一次敲「@+完整昵称」把候选搜窄 → 精确对上昵称才动手(第一项按回车,其余用真实鼠标点)→ 校验 chip。**对不上人就退化成纯文本并清干净,绝不按回车**(面板没开时回车 = 直接把半句话发出去)
58
+ - **新增:评论发没发出去、@ 到底成没成,都有实据**。发布评论的接口会把刚发的这条原样返回(`cid` / `status` / `text_extra`),现在直接截这个响应;再用 `insert_ids=<cid>` 查一次最终状态:`1` 公开、`2` 只有自己看得见、`7` 审核中。回执里新增 `cid` / `status` / `visible` / `note`
59
+ - 实测踩到的坑:同一条视频、同一个号,评论里 @ 别人 → 正常公开;@ 主人 → `status=2`,游客视角看不到、也收不到通知。这是对方「谁可以 @ 我」设成了「只有关注的人」之类的隐私限制,不是代码问题——所以现在会把原因写进 `note`,让她改成私信发链接,而不是嘴硬说「我 @ 你了」
60
+ - **修:抖音私信「只能发、看不到回复」**。两个原因叠在一起:
61
+ - 会话卡片按行号取内容,但实测第三行是 **「2小时内在线」** 这个在线状态,不是最后一句。所以 `text` 一直是「2小时内在线」,等于看不见主人回了什么。现在按 class 取真正的预览(`ConversationItemDesc` 里非 `onlineStatus` 的那个),并把未读角标从预览里剥掉
62
+ - 读对话时取了**最旧**的几条:抖音消息列表 DOM 是最新在前(index 0 = 最后一句),`slice(-n)` 拿到的是「你们已互相关注」这种开场白。现在取前 N 条再翻回时间顺序,并滚到底把最新消息挂上来
63
+ - 新增 `recent`(最近 6 句,带 `from: them/me`)和 `lastFromThem`:她能分清最后一句是主人说的还是自己说的,不会再「看不到回复」
64
+ - 顺带:会话标题的 class 在有未读时会连时间一起包进来(`小月月一直在玩 刚刚`),现在昵称只取第一行
65
+ - **修:B站评论 @ 不了人**。以前只在正文里拼一个 `@昵称`,那只是**纯文本**——B站不会真的提到人、也不会发通知(`members` 一直是空)。现在随请求带上 `at_name_to_mid`(`{"昵称": mid}`),实测发布后 `members` 里有对方、`mentioned: true`。判断也改成发布后回查一次评论列表(add 接口的响应不一定带 members)
66
+ - **修:「网页经常退出或中断」**。查到四个来源,都会让正在用的页面被关掉:
67
+ - **自动收窗的定时器会打断正在进行的操作**。`scheduleClose(60)` 排下去之后,下一次操作进来不会取消它;只要这轮操作超过剩余时间,页面就在中途被关,表现就是「网页突然退出/操作中断」。现在所有操作都走一个 `busy` 计数,操作期间定时器到点只顺延、不关页
68
+ - **浏览器进程用完不退出**:`closePage()` 只关当前标签页,`launchPersistentContext` 自带那个 `about:blank` 永远没人关,于是 msedge 常驻(实测挂了一个多小时、十几个进程),下次启动还要抢 profile。现在后台模式用完直接关整个 context,空页也复用不另开
69
+ - **扫码登录窗会被误关**:`launch()` 内部的 `close()` 会把 `holdOpen` 清掉,登录窗开着时只要来一次 inbox/feed,60 秒后就被自动关掉(看起来就是「网页闪一下没了」)。现在 launch 之后重新挂住;五分钟没扫完主动收窗,不留一个窗口在桌面上
70
+ - **一起看时窗口会被关**:`watchStart` 没挂 `holdOpen`,期间任何动作排的定时器都会把主人正在看的页面关掉。现在一起看期间一律不自动收窗
71
+ - **profile 被残留进程占住时自动清理**:启动失败会先杀掉命令行里带自己 `--user-data-dir` 的残留进程再重试一次(只认自己的 profile,不碰主人的浏览器)
72
+ - **修:面板里回抖音私信一点就说「这条消息已经刷新掉了」**。`inboxCache` 只存了 B站那份,抖音消息没进缓存,按 id 回查当然找不到。现在两边都进缓存,互不覆盖
73
+ - **修:`npm run deploy:local` 可能把安装目录清空**。脚本原来先 `rmSync` 旧目录再 `cpSync`;Node 22 在 Windows 上遇到中文路径时 `cpSync` 会**直接让进程退出(exit 127、没有任何报错)**,结果安装目录只剩一个空的 `src/`。现在改成逐文件复制,并且先拷到临时目录、校验文件数、成功了再 `rename` 换上去——中途失败只会报错,不会破坏已装版本
74
+
75
+ ## 1.4.2
76
+
77
+ - **两个私信按钮分平台命名**:「谁找你」右上角从「让她私信我」改成 **「B站私信我」**,和旁边的「抖音私信我」对齐,不用再猜点的是哪个平台
78
+ - **「看现在登的号」改名「查登录号」**:它只读不写——读出桌宠此刻登录的抖音号(昵称 + 抖音号),再和主人绑的号对比。作用只有一个:判断抖音私信能不能发(同一个号就发不了自己)。标签和悬停说明都写清楚了
79
+ - **修:把「未登录」当昵称存下来**。页面没渲染完时 `h1` 是「未登录」这类占位,之前会原样存着,面板就显示「已登录 · 后台待命 · 未登录」。现在占位词会过滤掉,没有有效昵称就不显示
80
+
81
+ - **修:抖音私信点「私信」一直卡到超时**。主页上那个「私信」在 DOM 里有两份,一份是隐藏模板(宽高 0);`getByText().first()` 正好挑中隐藏那份,于是每次都在等它变可见,等到 6 秒超时——她说的「按钮一直当它是隐藏的,两次都卡死」就是这个。现在改成逐个挑**可见且有点击区域**的那个,再等聊天框真正挂上来才输入
82
+ - **修:私信失败后浏览器不关**。以前抛错就直接退出,`scheduleClose` 没跑到,后台会堆一堆 Chrome 进程。现在 `finally` 里兜底收窗口
83
+ - **修:读「当前登录的抖音号」会读成别人**。`/user/self` 实测不会跳到 `/user/<sec_uid>`;页面里的 `<a>` 又基本是推荐位和广告(实测点开是「乐游宝宝亲子游泳」「仁青汽车」)。现在改成:先从页面读出「抖音号:xxx」,再把 HTML 里出现的 sec_uid 逐个打开核对,抖音号对上的那个才算自己——实测读到 `穹 / 90374343836`
84
+ - **私信发没发出去能判断了**:回车后看输入框有没有清空(contenteditable 清空后会剩一个零宽字符,`trim()` 去不掉,得单独剥),没清空就报 `NOT_SENT`;回车只是换行的版本会自动改点发送按钮,不再假装成功
85
+ - **面板里回私信走同一条发送逻辑**:`replyDm` 也换成「等可见输入框 + 发送 + 校验」,失败同样收窗口
86
+ - **抖音号解析说实话**:实测抖音的搜索页在后台是空壳(只有导航、没有结果,换 UA 也一样),所以「抖音号 → sec_uid」这条路基本走不通。现在会直接说清原因,并给两个能用的办法:主页分享链接、或 sec_uid
87
+ - **抖音号填的就是她自己**时当场识破:拿她登录号的「抖音号」比对,命中就直说「自己不能给自己发私信」,不用等点发送才失败
88
+
89
+ ## 1.4.1
90
+
91
+ - **主人抖音可以填抖音号了**。以前只认 `MS4w` 开头的 sec_uid——那串东西在 App 里根本看不到,只能从主页分享链接里抠。现在 `主人抖音` 三种都收:sec_uid、主页链接(整段分享文案也行)、抖音号;填了抖音号/链接,面板会显示「待解析」并多一个 **「绑定这个号」** 按钮,点一下解析成 sec_uid 存回配置(第一次发私信时也会自动解析)
92
+ - **解析会核对身份**:按抖音号搜到候选后,会打开主页读「抖音号:xxx」比对,不会随手把第一个同名用户当成主人——绑错人比绑不上更糟;核不到会明说「按同名绑的,发私信前对一眼」
93
+ - **消息卡标明平台**:`谁找你` 里每条都带 `B站` / `抖音` 小标签(私信、回复、@ 都有),不用靠头像猜是哪个平台来的
94
+ - **新增「查登录号」**:面板「账号 → 抖音」多一个按钮,读出桌宠此刻登录的抖音号昵称,并和主人绑的号对比
95
+ - **说清抖音私信的硬限制**:抖音不允许给自己发私信。如果桌宠登录的号就是你绑的主人号,那这条路永远发不出去(B站不受影响)。现在面板会标「(就是现在登录的号)」,发私信时会直接说明原因,而不是丢一句「没有私信按钮」
96
+ - **修:她一直说「抖音主人是空的」**。配置早存好了,但 `stroll.owner` 是**每次对话开始**渲染进系统提示的,改完设置当前这轮对话仍是旧值——1.4.0 让工具读到新值,却没管提示词里的那份。现在提示词里明写「这一行是对话开始时读的,别拿旧值下结论,先看 `stroll_policy`」,绑定状态也改成现读
97
+ - **面板文案对齐**:两个账号卡都写「B站主人已绑 · UID …」「抖音主人已绑 · 昵称」,没绑就写「没绑」,待解析写「待解析」;顶部徽章同一句式
98
+ - **「B站私信我」分平台**:绑了抖音主人后,多一个「抖音私信我」,用来单独验证抖音这条链路
99
+
100
+ ## 1.4.0
101
+
102
+ - **私信终于能收到了**。原来 `inbox` 只读「回复」和「@」,私信一条都没读,所以主人发过去她永远说「收不到」。现在 B站走 `session_svr/get_sessions` + `fetch_session_msgs`,抖音走 `/chat` 页面;两边都会出现在「谁找你」里,带未读条数
103
+ - **面板能直接回私信**:不用跳网页,写完就发;B站回完顺手把对方会话标为已读,红点会消
104
+ - **抖音收件箱原来读错了地址**:代码里用的是 `/user/self`,那页只有导航壳,什么都读不到;正确的是 `/chat`。顺手把昵称、时间、最后一句、未读数分开解析,相对时间(「11分钟前」「周四」)也换成了近似时间戳用于排序
105
+ - **新按钮「B站私信我」**:在「谁找你」右上角,一键让她给你发条私信,用来验证投递通不通
106
+ - **修:抖音主人「绑定不成功」**。设置里其实已经存下了 sec_uid,但面板和给她的提示词里只写了 B站主人,她看不到抖音那份,就以为没绑。现在两边分开显示,格式不对会说格式不对(`MS4w` 开头)
107
+ - **修:私信设备号每次重启都换**。B站私信要稳定的 `dev_id`,以前是进程内随机生成、从不落盘,重启换一个设备号容易被当成陌生设备。现在生成一次就存进 `state.json`
108
+ - **给主人的私信改成不限量**:不进每日额度、不做「同一个对象一天一次」去重,只保留 5 秒防连点。面板的额度条也从 6 格变 5 格(私信那格撤掉),设置里的「每天最多私信」一并隐藏
109
+ - **修:改了设置她不认**。抖音 sec_uid 明明填了,她却说「抖音没绑」——因为运行中的实例还拿着启动时那份配置。现在读主人 ID 时会先看一眼磁盘上的 `config.json`(两秒缓存),改完设置不用重启
110
+ - **顶部两个主人标签对齐**:`B站主人 已绑 / 没绑`、`抖音主人 已绑 / 没绑`,两边同一句式
111
+
3
112
  ## 1.3.2
4
113
 
5
114
  - **修:点登录,窗口闪一下就没了**。`getPage()` 里隐式调了一次 `launch()`,没带窗口模式,于是它拿「后台模式」的默认值和当前的有头窗口一比,认定「模式不一致」,当场把刚开的登录窗关掉、重开成无头。B站和抖音都中招。现在 `getPage()` 沿用当前模式,不再偷偷换