dsh-bili-scroll 0.1.5 → 0.1.6
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/AGENTS.md +55 -50
- package/README.md +147 -137
- package/client.js +555 -522
- package/cordis.patch.yml +20 -20
- package/index.js +274 -54
- package/lib/login.mjs +103 -103
- package/lib/mcp.mjs +119 -115
- package/lib/state.mjs +151 -100
- package/lib/verify.mjs +179 -186
- package/package.json +72 -75
- package/prompts/duty.md +139 -124
- package/selfcheck.mjs +119 -0
- package/vendor/bilibili-mcp/mcp_server.py +1415 -1364
- package/vendor/bilibili-mcp/requirements.txt +8 -8
package/AGENTS.md
CHANGED
|
@@ -1,50 +1,55 @@
|
|
|
1
|
-
# 给 AI 助手看的(本仓库 = 一个 DSH 插件)
|
|
2
|
-
|
|
3
|
-
`dsh-bili-scroll`(中文名「**刷B站**」):每天替用户刷一轮 B 站 —— 搜、**读字幕原文**判断、写一份日报,特别值得的会发一条评论 **@ 用户**。
|
|
4
|
-
|
|
5
|
-
## 帮用户安装时,按这个顺序
|
|
6
|
-
|
|
7
|
-
1. **前提**:机器上有 `Python 3.10+` **或** `uv`(有一个即可)。
|
|
8
|
-
两个都没有**也不用让用户先装** —— 插件点「装依赖」时会**自己下一份 `uv` 到自己的家目录**(免管理员、不用 PATH);
|
|
9
|
-
只有它自己也下不动时(网络到不了 GitHub / 加速代理 / PyPI 镜像),才需要引导用户手动装。
|
|
10
|
-
· 它是**直连 GitHub → 国内加速代理 → PyPI 镜像**依次试的,并且会**核对官方 sha256** ✓
|
|
11
|
-
· ⚠️ 若用户机器上的**杀软拦了这次下载**:让他把 `%USERPROFILE%\.dsh\bili-duty\bin\` 加白,或干脆自己装 uv / Python 3.10+ ✓
|
|
12
|
-
· ⭐ **万一下载链路都不通**(有用户反馈"桌面版上这条链路经常不通"):**手动放一份 `uv.exe` 到 `<家目录>\bin\` 就行**
|
|
13
|
-
——
|
|
14
|
-
2. `dsh plugin --profile web add dsh-bili-scroll`(npm,推荐)
|
|
15
|
-
· 备选:`dsh plugin --profile web add github:c1overzz/dsh-bili-scroll`
|
|
16
|
-
· ⚠️ **升级旧版**:如果用户在设置页看到的按钮叫「**重装依赖**」(不是「**重装主依赖**」),
|
|
17
|
-
说明装的还是 **0.1.0** —— 那一版建 Python 环境时缺一个参数,**依赖装不上、二维码也画不出来**。
|
|
18
|
-
让用户重跑一次上面那条 `add` 就是升级(然后再重启一次)。
|
|
19
|
-
3. ⚠️ **提醒用户重启一次 dsh**(必须,bundle 层要重启才组装)。
|
|
20
|
-
4. 让用户进 **设置 → 刷B站**:点「**装主依赖**」→ 点「**扫码登录**」(手机扫码,选"记住我 / 长期")。
|
|
21
|
-
· 装完可以用设置页的「**测一下**」自检:它真跑一次登录检查 + 一次搜索,直接回答"能不能用"。
|
|
22
|
-
5. **别擅自打开「自动评论并 @ 你」** —— 那是拿用户的号说话;要用得让用户自己填「要 @ 谁」。
|
|
23
|
-
|
|
24
|
-
## ⚠️ 已知环境差异(有用户反馈)
|
|
25
|
-
|
|
26
|
-
- ⭐⭐ **桌面版 DSH(NEXT)/ 0.2.x 装不起来 —— 已知真 bug,0.1.4 起已修**:0.1.3 及以前装到桌面版上,
|
|
27
|
-
设置页里**根本不出现「刷B站」**,DSH 只留一句 `warning: 1 entry did not activate … failed to import` ✓
|
|
28
|
-
(根因:宿主半 import 的 `@deepseek-ai/schemastery` / `dsh-tools` 是 *optional peer*,而桌面版 profile 是
|
|
29
|
-
`autoInstallPeers: false` ⇒ pnpm 永远不装;`dsh-tools` 自己还带 4 个 peer,光装它也救不回来 ✗)。
|
|
30
|
-
⇒ **遇到桌面版用户:先让他升级到 0.1.4+**(修法是:不再裸 import `@deepseek-ai/*` ——
|
|
31
|
-
`lib/hostdeps.mjs` 先找宿主那棵树、再退到自己依赖里那份,`defineTool` 拿不到就用**本地等价实现**;
|
|
32
|
-
`schemastery` 也正式进了 `dependencies` ✓)。升级后还不行,要 `duty.log` 里那几行
|
|
33
|
-
(里面会写"宿主依赖是从哪儿取的" ✓)。
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- `
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
1
|
+
# 给 AI 助手看的(本仓库 = 一个 DSH 插件)
|
|
2
|
+
|
|
3
|
+
`dsh-bili-scroll`(中文名「**刷B站**」):每天替用户刷一轮 B 站 —— 搜、**读字幕原文**判断、写一份日报,特别值得的会发一条评论 **@ 用户**。
|
|
4
|
+
|
|
5
|
+
## 帮用户安装时,按这个顺序
|
|
6
|
+
|
|
7
|
+
1. **前提**:机器上有 `Python 3.10+` **或** `uv`(有一个即可)。
|
|
8
|
+
两个都没有**也不用让用户先装** —— 插件点「装依赖」时会**自己下一份 `uv` 到自己的家目录**(免管理员、不用 PATH);
|
|
9
|
+
只有它自己也下不动时(网络到不了 GitHub / 加速代理 / PyPI 镜像),才需要引导用户手动装。
|
|
10
|
+
· 它是**直连 GitHub → 国内加速代理 → PyPI 镜像**依次试的,并且会**核对官方 sha256** ✓
|
|
11
|
+
· ⚠️ 若用户机器上的**杀软拦了这次下载**:让他把 `%USERPROFILE%\.dsh\bili-duty\bin\` 加白,或干脆自己装 uv / Python 3.10+ ✓
|
|
12
|
+
· ⭐ **万一下载链路都不通**(有用户反馈"桌面版上这条链路经常不通"):**手动放一份 `uv.exe` 到 `<家目录>\bin\` 就行**
|
|
13
|
+
—— 插件会**用那一份、跳过下载** ✓(他 `PATH` 里本来就有 `uv` 的话,直接用那个 ✓)
|
|
14
|
+
2. `dsh plugin --profile web add dsh-bili-scroll`(npm,推荐)
|
|
15
|
+
· 备选:`dsh plugin --profile web add github:c1overzz/dsh-bili-scroll`
|
|
16
|
+
· ⚠️ **升级旧版**:如果用户在设置页看到的按钮叫「**重装依赖**」(不是「**重装主依赖**」),
|
|
17
|
+
说明装的还是 **0.1.0** —— 那一版建 Python 环境时缺一个参数,**依赖装不上、二维码也画不出来**。
|
|
18
|
+
让用户重跑一次上面那条 `add` 就是升级(然后再重启一次)。
|
|
19
|
+
3. ⚠️ **提醒用户重启一次 dsh**(必须,bundle 层要重启才组装)。
|
|
20
|
+
4. 让用户进 **设置 → 刷B站**:点「**装主依赖**」→ 点「**扫码登录**」(手机扫码,选"记住我 / 长期")。
|
|
21
|
+
· 装完可以用设置页的「**测一下**」自检:它真跑一次登录检查 + 一次搜索,直接回答"能不能用"。
|
|
22
|
+
5. **别擅自打开「自动评论并 @ 你」** —— 那是拿用户的号说话;要用得让用户自己填「要 @ 谁」。
|
|
23
|
+
|
|
24
|
+
## ⚠️ 已知环境差异(有用户反馈)
|
|
25
|
+
|
|
26
|
+
- ⭐⭐ **桌面版 DSH(NEXT)/ 0.2.x 装不起来 —— 已知真 bug,0.1.4 起已修**:0.1.3 及以前装到桌面版上,
|
|
27
|
+
设置页里**根本不出现「刷B站」**,DSH 只留一句 `warning: 1 entry did not activate … failed to import` ✓
|
|
28
|
+
(根因:宿主半 import 的 `@deepseek-ai/schemastery` / `dsh-tools` 是 *optional peer*,而桌面版 profile 是
|
|
29
|
+
`autoInstallPeers: false` ⇒ pnpm 永远不装;`dsh-tools` 自己还带 4 个 peer,光装它也救不回来 ✗)。
|
|
30
|
+
⇒ **遇到桌面版用户:先让他升级到 0.1.4+**(修法是:不再裸 import `@deepseek-ai/*` ——
|
|
31
|
+
`lib/hostdeps.mjs` 先找宿主那棵树、再退到自己依赖里那份,`defineTool` 拿不到就用**本地等价实现**;
|
|
32
|
+
`schemastery` 也正式进了 `dependencies` ✓)。升级后还不行,要 `duty.log` 里那几行
|
|
33
|
+
(里面会写"宿主依赖是从哪儿取的" ✓)。
|
|
34
|
+
- ⭐⭐ **桌面版(Electron / 不是 npm 全局安装)上"跑一轮 0.17 秒就结束、code=0、什么都没干" —— 0.1.6 起已修**
|
|
35
|
+
(issue #5 / #6 / #7,三个人报的):根因是 Electron 里 spawn 的 node 少了 `ELECTRON_RUN_AS_NODE=1`,
|
|
36
|
+
而且 `dsh` CLI 在桌面版里不在 PATH 上。现在会带那个环境变量、并去应用目录里找 dsh;
|
|
37
|
+
**还找不到就在 `duty.log` 里明说"请在设置里把 dsh 路径指过去"**(不再静默失败)。
|
|
38
|
+
⇒ 遇到桌面版用户:**先让他升到 0.1.6+**;还跑不起来,就要 `duty.log` 里那几行。
|
|
39
|
+
- **桌面版上"自动跑会卡"**:跑那一轮用的是 `dsh --profile headless --patch <overlay> <prompt>` ——
|
|
40
|
+
有用户反馈桌面版上会卡在那儿。**先确认 dsh 版本与 profile**,别硬跑;跑不起来就先只用手动「现在跑一轮」。
|
|
41
|
+
- **别让用户自己去装环境** ✗:插件自带一份 uv 与依赖安装能力,先照上面第 1 条处理。
|
|
42
|
+
|
|
43
|
+
## 仓库结构(改代码时看这里)
|
|
44
|
+
|
|
45
|
+
- `index.js` —— host 半端:11 个工具 + 谷时定时器 + HTTP 接口 + 配置(`config.json` 与 DSH 原生设置页**逐字段对账**:见 `loadCfg` / `saveCfgHost`)+ 值班轮的工具白名单(`mcpWhitelist` → `BILI_MCP_TOOLS`)
|
|
46
|
+
- `client.js` —— 浏览器半端:设置页(注册在 `settings.section`)
|
|
47
|
+
- `lib/` —— 状态目录与家目录 / 极小的 MCP stdio 客户端 / 扫码登录 / **`hostdeps.mjs`(从宿主树取 `@deepseek-ai/*`,拿不到就退到自己依赖 / 本地等价实现)** / **`verify.mjs`(评论发出后复核)**
|
|
48
|
+
- `prompts/duty.md` —— 一轮要做的事(判定口径 + 红线,**用户可以改**);升级规矩见 `lib/state.mjs` 的 `ensureCharter`(用户改过 ⇒ 保留他那份、新版落 `duty.md.new`)
|
|
49
|
+
- `vendor/bilibili-mcp/` —— 内置的 Python MCP(MIT,AGI_Ananas)
|
|
50
|
+
- `selfcheck.mjs` + `tools/` —— 本地预检:`node selfcheck.mjs`(**现在不用解析钩子了**;`tools/register.mjs` 那条还留着当备份)
|
|
51
|
+
|
|
52
|
+
## 约定
|
|
53
|
+
|
|
54
|
+
- 配置与运行数据都在用户的 `$DSH_HOME/bili-duty/`,**不写进插件包目录**
|
|
55
|
+
- 谷时窗口按 DeepSeek 官方口径:工作日 9–12 / 14–18 是高峰,其余(含周末)都是谷时
|
package/README.md
CHANGED
|
@@ -1,137 +1,147 @@
|
|
|
1
|
-
# dsh-bili-scroll | 刷B站
|
|
2
|
-
|
|
3
|
-
> **先看三行**
|
|
4
|
-
> - 需要 **dsh ≥ `0.1.7-rc.1`**(本机是 `0.1.7-rc.2`)。⚠️ 版本不满足时,**内核会静默跳过这个插件** —— 装了跟没装一样,不会报错。
|
|
5
|
-
> - **空间**:不装「本地转写」约 **84 MB**;装了转写约 **1 GB**(其中 Whisper 模型 538 MB,可在设置里换更小的模型)。
|
|
6
|
-
> - 装完**必须重启一次** dsh(插件在 bundle 层组装)。
|
|
7
|
-
> - ⚠️ **桌面版 DSH(NEXT / 0.2.x)**:**0.1.3 及以前的版本在桌面版上装不起来** —— 插件整条不激活,
|
|
8
|
-
> DSH 只留一句 `warning: 1 entry did not activate … failed to import`(根因是宿主半 import 的两个包
|
|
9
|
-
> 在桌面版 profile 里没被安装,详见下面「装不上」那节的第 5 条)。**0.1.4 起已修** ✓。
|
|
10
|
-
> 另有用户反馈桌面版上「自动跑那一轮会卡住」—— 卡住就先只用设置页的「**现在跑一轮**」手动跑(那条稳)。
|
|
11
|
-
>
|
|
12
|
-
> ⚠️ **装的是旧版吗?** 如果设置页里那个按钮写的是「**重装依赖**」(而不是「**重装主依赖**」),说明你装的是 0.1.0 ——
|
|
13
|
-
> 跑一次 `dsh plugin --profile web add dsh-bili-scroll` 升级就好(那一版建 Python 环境时缺一个参数,
|
|
14
|
-
> 依赖装不上、二维码也画不出来,重装多少次都一样)。
|
|
15
|
-
|
|
16
|
-
> DSH 插件:**每天替你刷一轮 B站** —— 它自己搜、**读字幕原文**判断、把值得的写成报告,特别值得的会留一条评论 **@ 你**。
|
|
17
|
-
> **你收到的每一条 @,都是它先筛过一遍的。**
|
|
18
|
-
|
|
19
|
-
## 它做什么
|
|
20
|
-
|
|
21
|
-
- 按你填的关键词(留空则用内置那几组)搜近几天的视频
|
|
22
|
-
- **逐条读字幕原文再判断**(不看摘要);没字幕的直接跳过 —— 除非你开了「本地转写」
|
|
23
|
-
- 写一份 Markdown 报告到 `out/<日期>.md
|
|
24
|
-
-
|
|
25
|
-
- 可以在**峰谷时段自动跑**(DeepSeek 的优惠时段),省 token
|
|
26
|
-
|
|
27
|
-
## 装之前(一条前提,30 秒)
|
|
28
|
-
|
|
29
|
-
机器上要有 **`Python 3.10+` 或 `uv`** —— **有一个就够**:
|
|
30
|
-
|
|
31
|
-
- **有 `uv` 最好**:单个 ~32 MB 的 exe,**解压就能用、不用管理员、不用进 PATH**,而且它还能自己把 Python 拉下来;
|
|
32
|
-
- 只有 Python 也行(装官方安装器时记得勾 **`Add to PATH`**);
|
|
33
|
-
- ⭐ **两个都没有?也没关系**:点「装依赖」时**插件会自己下一份 `uv` 放到自己的家目录**
|
|
34
|
-
(单文件、约 15MB、**免管理员、不用进 PATH** ✓),之后全程自动 ✓
|
|
35
|
-
· 它会**先直连 GitHub,不通就走国内加速代理**,还配了 PyPI 镜像兜底 ✓
|
|
36
|
-
· 下载完会**核对官方 `sha256`**(对不上就丢弃换下一个源 ✓)—— 因为它下来的东西是要**被执行**的
|
|
37
|
-
· ⚠️ **如果杀软 / Windows Defender 报这个下载**:把插件家目录 `%USERPROFILE%\.dsh\bili-duty\bin\` **加白**即可;
|
|
38
|
-
不想加白也行,自己装一份 uv 或 Python 3.10+ 就绕过去了 ✓
|
|
39
|
-
|
|
40
|
-
> ✅ **已经做到了**(v0.1.1 起):插件会**自己把 `uv` 下到自己的家目录** ⇒ 这条前提不用用户操心、也不用管理员权限。
|
|
41
|
-
> ⚠️ 万一它自己也下不动(有用户反馈桌面版上这条链路经常不通):**手动放一份 `uv.exe` 到 `<家目录>\bin\`** 就行 ——
|
|
42
|
-
>
|
|
43
|
-
|
|
44
|
-
## 装
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
dsh plugin --profile web add dsh-bili-scroll # 从 npm
|
|
49
|
-
dsh plugin --profile web add github:c1overzz/dsh-bili-scroll # 备选:直接从 GitHub
|
|
50
|
-
```
|
|
51
|
-
(⭐ 最省事的一条:把仓库链接贴给你自己的 dsh,说「**帮我装这个插件**」,它会自己装。)
|
|
52
|
-
|
|
53
|
-
⚠️ 装完**必须重启一次 dsh**(bundle 层要重启才组装)。然后进 **设置 → 刷B站**。
|
|
54
|
-
|
|
55
|
-
## 装不上 /
|
|
56
|
-
|
|
57
|
-
1. **桌面版(DSH NEXT / 0.2.x)上"自动跑"会卡住** —— 有用户反馈:它起那一轮用的是
|
|
58
|
-
`dsh --profile headless …`,桌面版上容易卡在那儿。⇒ **先用设置页的「现在跑一轮」手动跑**(那条是稳的);
|
|
59
|
-
能不能自动跑,等你确认过自己那台桌面版的版本与 profile 再说。
|
|
60
|
-
2. **「装依赖」卡住、或者扫码时一直不出二维码** —— 大概率是 0.1.0 那版(见开头那个按钮指纹,跑一次 `add` 就升级了)。
|
|
61
|
-
不想升级也行,救急一句:`<家>\.venv\Scripts\python.exe -m ensurepip --upgrade`,再点一次「重装主依赖」。
|
|
62
|
-
3. **它下不动 `uv`**(桌面版上这条链路经常不通)⇒ 自己放一份 `uv.exe` 到 `<家目录>\bin\`,
|
|
63
|
-
|
|
64
|
-
4. **「本地转写」是两段式的** —— 只打开开关**不够**,还得点它下面那个「**装转写依赖**」。
|
|
65
|
-
没装的时候,没字幕的视频会被**跳过**(报告里现在会写「**因无字幕跳过 N 条**」,你能一眼看出漏了几条)。
|
|
66
|
-
5. ⭐ **桌面版:装完设置页里根本不出现「刷B站」,日志只有一句 `1 entry did not activate … failed to import`** ——
|
|
67
|
-
这是 0.1.3 及以前在桌面版上的一个真 bug:插件宿主半 import 的两个包是 *optional peer*,
|
|
68
|
-
而桌面版 profile(`autoInstallPeers: false`)**不会装它们** ⇒ 插件整条不激活。
|
|
69
|
-
**0.1.4 起已修**(不再裸 import 那两个包)。⇒ 升级一次就好:`dsh plugin --profile desktop add dsh-bili-scroll`。
|
|
70
|
-
⚠️ 我们自己也只在 **npm 0.1.7-rc.x + web profile** 上实测过;桌面版这条路靠用户反馈修好的 ——
|
|
71
|
-
装完还是不行的话,把 `duty.log` 里那几行发来(里面会写清楚"宿主依赖是从哪儿取的")。
|
|
72
|
-
|
|
73
|
-
## 首次使用(两步)
|
|
74
|
-
|
|
75
|
-
1. **装主依赖** —— 设置页点「装主依赖」:在插件自己的家目录建一个独立 venv,装
|
|
76
|
-
(`bilibili-api-python` / `mcp<2` / `qrcode`)。**走国内镜像 + uv,通常几十秒**(进度写 `install.log`,不卡页面)。
|
|
77
|
-
2. **扫码登录** —— 点「扫码登录」,用手机 B站 扫页面上那张码。
|
|
78
|
-
⚠️ **确认时选「记住我 / 长期」那张**(选 24 小时的话,明天就得重扫)。
|
|
79
|
-
凭证只落在你本机的插件家目录:`<DSH_HOME>/bili-duty/bili_credential.json`,不上传任何地方。
|
|
80
|
-
|
|
81
|
-
## 设置页里有什么
|
|
82
|
-
|
|
83
|
-
| 项 | 说明 |
|
|
84
|
-
|---|---|
|
|
85
|
-
| **峰谷时段自动刷** | 总开关;**打开之后才展开**「中午谷时 12:00–14:00」「晚上/夜间谷时 18:00–09:00」两个子开关。依据 DeepSeek 官方定价:**工作日 9:00–12:00、14:00–18:00 是高峰,其余(含整个周末)都是谷时** |
|
|
86
|
-
| **每天最多挑几条** | 数字自己填;填 0 = 不自动刷(但还能手动跑) |
|
|
87
|
-
| **自动评论并 @ 你** | **默认关**;打开后展开两栏:**每轮最多发几条评论**、**要 @ 谁(B站 昵称)** —— ⚠️ **留空就不发评论**(评论的意义就是 @ 那一下) |
|
|
88
|
-
| **本地转写没字幕的视频** | **默认关** —— 要在本机装 Whisper、下几百 MB 模型 |
|
|
89
|
-
| **关注关键词** | 一行一个;留空用内置那几组 |
|
|
90
|
-
| **工作区** |
|
|
91
|
-
| **回复评论(只回楼中楼)** | **默认关**;开了之后展开「每轮最多回几条」—— 只回**直接回复到它那条评论下面的人**,不参与别人的讨论 |
|
|
92
|
-
| **日报写多细** | `完整 / 薄版 / 不写`;薄版每条一两行(输出比输入贵 200 倍,薄版省的是真钱) |
|
|
93
|
-
| 现在跑一轮 / 装主依赖 / 扫码登录 / 看今天的报告 / 打开报告文件夹 | 版本号就在这一行上面(**点「检查更新」可以看有没有新版**) |
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
1
|
+
# dsh-bili-scroll | 刷B站
|
|
2
|
+
|
|
3
|
+
> **先看三行**
|
|
4
|
+
> - 需要 **dsh ≥ `0.1.7-rc.1`**(本机是 `0.1.7-rc.2`)。⚠️ 版本不满足时,**内核会静默跳过这个插件** —— 装了跟没装一样,不会报错。
|
|
5
|
+
> - **空间**:不装「本地转写」约 **84 MB**;装了转写约 **1 GB**(其中 Whisper 模型 538 MB,可在设置里换更小的模型)。
|
|
6
|
+
> - 装完**必须重启一次** dsh(插件在 bundle 层组装)。
|
|
7
|
+
> - ⚠️ **桌面版 DSH(NEXT / 0.2.x)**:**0.1.3 及以前的版本在桌面版上装不起来** —— 插件整条不激活,
|
|
8
|
+
> DSH 只留一句 `warning: 1 entry did not activate … failed to import`(根因是宿主半 import 的两个包
|
|
9
|
+
> 在桌面版 profile 里没被安装,详见下面「装不上」那节的第 5 条)。**0.1.4 起已修** ✓。
|
|
10
|
+
> 另有用户反馈桌面版上「自动跑那一轮会卡住」—— 卡住就先只用设置页的「**现在跑一轮**」手动跑(那条稳)。
|
|
11
|
+
>
|
|
12
|
+
> ⚠️ **装的是旧版吗?** 如果设置页里那个按钮写的是「**重装依赖**」(而不是「**重装主依赖**」),说明你装的是 0.1.0 ——
|
|
13
|
+
> 跑一次 `dsh plugin --profile web add dsh-bili-scroll` 升级就好(那一版建 Python 环境时缺一个参数,
|
|
14
|
+
> 依赖装不上、二维码也画不出来,重装多少次都一样)。
|
|
15
|
+
|
|
16
|
+
> DSH 插件:**每天替你刷一轮 B站** —— 它自己搜、**读字幕原文**判断、把值得的写成报告,特别值得的会留一条评论 **@ 你**。
|
|
17
|
+
> **你收到的每一条 @,都是它先筛过一遍的。**
|
|
18
|
+
|
|
19
|
+
## 它做什么
|
|
20
|
+
|
|
21
|
+
- 按你填的关键词(留空则用内置那几组)搜近几天的视频
|
|
22
|
+
- **逐条读字幕原文再判断**(不看摘要);没字幕的直接跳过 —— 除非你开了「本地转写」
|
|
23
|
+
- 写一份 Markdown 报告到 `out/<日期>.md`:每条含「为什么值得」+「它自己的一句话」;每条的段首固定写成 `### BV号` —— 插件数今天挑了几条,数的就是这些标题行
|
|
24
|
+
- 开着「自动评论」时,每轮发一条评论、**@ 你**一次(默认每轮 1 条,设置页可调到每轮最多 20 条)
|
|
25
|
+
- 可以在**峰谷时段自动跑**(DeepSeek 的优惠时段),省 token
|
|
26
|
+
|
|
27
|
+
## 装之前(一条前提,30 秒)
|
|
28
|
+
|
|
29
|
+
机器上要有 **`Python 3.10+` 或 `uv`** —— **有一个就够**:
|
|
30
|
+
|
|
31
|
+
- **有 `uv` 最好**:单个 ~32 MB 的 exe,**解压就能用、不用管理员、不用进 PATH**,而且它还能自己把 Python 拉下来;
|
|
32
|
+
- 只有 Python 也行(装官方安装器时记得勾 **`Add to PATH`**);
|
|
33
|
+
- ⭐ **两个都没有?也没关系**:点「装依赖」时**插件会自己下一份 `uv` 放到自己的家目录**
|
|
34
|
+
(单文件、约 15MB、**免管理员、不用进 PATH** ✓),之后全程自动 ✓
|
|
35
|
+
· 它会**先直连 GitHub,不通就走国内加速代理**,还配了 PyPI 镜像兜底 ✓
|
|
36
|
+
· 下载完会**核对官方 `sha256`**(对不上就丢弃换下一个源 ✓)—— 因为它下来的东西是要**被执行**的
|
|
37
|
+
· ⚠️ **如果杀软 / Windows Defender 报这个下载**:把插件家目录 `%USERPROFILE%\.dsh\bili-duty\bin\` **加白**即可;
|
|
38
|
+
不想加白也行,自己装一份 uv 或 Python 3.10+ 就绕过去了 ✓
|
|
39
|
+
|
|
40
|
+
> ✅ **已经做到了**(v0.1.1 起):插件会**自己把 `uv` 下到自己的家目录** ⇒ 这条前提不用用户操心、也不用管理员权限。
|
|
41
|
+
> ⚠️ 万一它自己也下不动(有用户反馈桌面版上这条链路经常不通):**手动放一份 `uv.exe` 到 `<家目录>\bin\`** 就行 ——
|
|
42
|
+
> 插件会**用那一份、跳过下载**(你的 `PATH` 里本来就有 `uv` 的话,它直接用那个)。
|
|
43
|
+
|
|
44
|
+
## 装
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
dsh plugin --profile web add dsh-bili-scroll # 从 npm
|
|
49
|
+
dsh plugin --profile web add github:c1overzz/dsh-bili-scroll # 备选:直接从 GitHub
|
|
50
|
+
```
|
|
51
|
+
(⭐ 最省事的一条:把仓库链接贴给你自己的 dsh,说「**帮我装这个插件**」,它会自己装。)
|
|
52
|
+
|
|
53
|
+
⚠️ 装完**必须重启一次 dsh**(bundle 层要重启才组装)。然后进 **设置 → 刷B站**。
|
|
54
|
+
|
|
55
|
+
## 装不上 / 卡住时,先看这五条(都是用户实测撞过的)
|
|
56
|
+
|
|
57
|
+
1. **桌面版(DSH NEXT / 0.2.x)上"自动跑"会卡住** —— 有用户反馈:它起那一轮用的是
|
|
58
|
+
`dsh --profile headless …`,桌面版上容易卡在那儿。⇒ **先用设置页的「现在跑一轮」手动跑**(那条是稳的);
|
|
59
|
+
能不能自动跑,等你确认过自己那台桌面版的版本与 profile 再说。
|
|
60
|
+
2. **「装依赖」卡住、或者扫码时一直不出二维码** —— 大概率是 0.1.0 那版(见开头那个按钮指纹,跑一次 `add` 就升级了)。
|
|
61
|
+
不想升级也行,救急一句:`<家>\.venv\Scripts\python.exe -m ensurepip --upgrade`,再点一次「重装主依赖」。
|
|
62
|
+
3. **它下不动 `uv`**(桌面版上这条链路经常不通)⇒ 自己放一份 `uv.exe` 到 `<家目录>\bin\`,
|
|
63
|
+
插件会用那一份、跳过下载。
|
|
64
|
+
4. **「本地转写」是两段式的** —— 只打开开关**不够**,还得点它下面那个「**装转写依赖**」。
|
|
65
|
+
没装的时候,没字幕的视频会被**跳过**(报告里现在会写「**因无字幕跳过 N 条**」,你能一眼看出漏了几条)。
|
|
66
|
+
5. ⭐ **桌面版:装完设置页里根本不出现「刷B站」,日志只有一句 `1 entry did not activate … failed to import`** ——
|
|
67
|
+
这是 0.1.3 及以前在桌面版上的一个真 bug:插件宿主半 import 的两个包是 *optional peer*,
|
|
68
|
+
而桌面版 profile(`autoInstallPeers: false`)**不会装它们** ⇒ 插件整条不激活。
|
|
69
|
+
**0.1.4 起已修**(不再裸 import 那两个包)。⇒ 升级一次就好:`dsh plugin --profile desktop add dsh-bili-scroll`。
|
|
70
|
+
⚠️ 我们自己也只在 **npm 0.1.7-rc.x + web profile** 上实测过;桌面版这条路靠用户反馈修好的 ——
|
|
71
|
+
装完还是不行的话,把 `duty.log` 里那几行发来(里面会写清楚"宿主依赖是从哪儿取的")。
|
|
72
|
+
|
|
73
|
+
## 首次使用(两步)
|
|
74
|
+
|
|
75
|
+
1. **装主依赖** —— 设置页点「装主依赖」:在插件自己的家目录建一个独立 venv,装 4 个包
|
|
76
|
+
(`bilibili-api-python` / `aiohttp` / `mcp<2` / `qrcode`)。**走国内镜像 + uv,通常几十秒**(进度写 `install.log`,不卡页面)。
|
|
77
|
+
2. **扫码登录** —— 点「扫码登录」,用手机 B站 扫页面上那张码。
|
|
78
|
+
⚠️ **确认时选「记住我 / 长期」那张**(选 24 小时的话,明天就得重扫)。
|
|
79
|
+
凭证只落在你本机的插件家目录:`<DSH_HOME>/bili-duty/bili_credential.json`,不上传任何地方。
|
|
80
|
+
|
|
81
|
+
## 设置页里有什么
|
|
82
|
+
|
|
83
|
+
| 项 | 说明 |
|
|
84
|
+
|---|---|
|
|
85
|
+
| **峰谷时段自动刷** | 总开关;**打开之后才展开**「中午谷时 12:00–14:00」「晚上/夜间谷时 18:00–09:00」两个子开关。依据 DeepSeek 官方定价:**工作日 9:00–12:00、14:00–18:00 是高峰,其余(含整个周末)都是谷时** |
|
|
86
|
+
| **每天最多挑几条** | 数字自己填;填 0 = 不自动刷(但还能手动跑) |
|
|
87
|
+
| **自动评论并 @ 你** | **默认关**;打开后展开两栏:**每轮最多发几条评论**、**要 @ 谁(B站 昵称)** —— ⚠️ **留空就不发评论**(评论的意义就是 @ 那一下) |
|
|
88
|
+
| **本地转写没字幕的视频** | **默认关** —— 要在本机装 Whisper、下几百 MB 模型 |
|
|
89
|
+
| **关注关键词** | 一行一个;留空用内置那几组 |
|
|
90
|
+
| **工作区** | 填**你自己平时用的那个工作区路径**(放 `AGENTS.md` 的那个目录)⇒ 它按那里的人设说话;⭐ **留空 = 不读设定、按中性说话**(不会去猜,也不会读错人设) |
|
|
91
|
+
| **回复评论(只回楼中楼)** | **默认关**;开了之后展开「每轮最多回几条」—— 只回**直接回复到它那条评论下面的人**,不参与别人的讨论 |
|
|
92
|
+
| **日报写多细** | `完整 / 薄版 / 不写`;薄版每条一两行(输出比输入贵 200 倍,薄版省的是真钱) |
|
|
93
|
+
| 现在跑一轮 / 装主依赖 / 扫码登录 / 看今天的报告 / 打开报告文件夹 | 版本号就在这一行上面(**点「检查更新」可以看有没有新版**) |
|
|
94
|
+
|
|
95
|
+
> ⭐ **这些设置同时写在两处**:插件自己的 `<DSH_HOME>/bili-duty/config.json`,以及 **DSH 原生「插件设置」**里的同一套字段。
|
|
96
|
+
> 在这一页改 ⇒ **以这一页为准,并同步写进原生设置**(写不进去会提示你);某个字段如果你在 **DSH 原生设置页**里显式设过 ⇒ **那个字段以原生设置页为准**。
|
|
97
|
+
|
|
98
|
+
## 红线(写死在提示词里,不靠自觉)
|
|
99
|
+
|
|
100
|
+
- 不透露你的隐私:账号、机器路径、你聊过的话 —— 一个字都不进评论
|
|
101
|
+
- 每轮按设置里定的条数发评论(默认 1 条,最多 20 条);同一视频只评论一次;不刷屏、不吵架
|
|
102
|
+
- 不确定的事**不编**(报告里如实写「没查到」)
|
|
103
|
+
|
|
104
|
+
## 它是怎么跑的
|
|
105
|
+
|
|
106
|
+
- 插件**内部**起一个 Python MCP(下面那个开源项目,已内置),把它的能力注册成 DSH 工具
|
|
107
|
+
- 定时到点 → 起一个 headless dsh 会话,把 `prompts/duty.md`(它一轮要做的事)+ 当天设置交给它
|
|
108
|
+
- 那一轮的**工作目录 = 插件自己的家目录**(它被沙箱关着,只写得了自己那一亩三分地);
|
|
109
|
+
⭐ 你填的**工作区里的 `AGENTS.md` 由插件读进来、内联进提示词** ⇒ **它按你的设定说话**,
|
|
110
|
+
而不是用一套通用人格
|
|
111
|
+
- ⭐ **那一轮拿不到整台工具**:只给它**四个只读的**(搜视频 / 读字幕 / 读评论 / 看视频信息),
|
|
112
|
+
开了「自动评论」或「回复评论」才多给一个**发评论** —— 上传视频、发动态、私信、抓全站那些**根本不注册**,
|
|
113
|
+
模型连它们的名字都看不到
|
|
114
|
+
- ⭐ **值班章程(`prompts/duty.md`)升级的规矩**:插件记着「上次铺的是哪一版」(`charter.sha256`)——
|
|
115
|
+
你**没改过**就跟着插件自动升级;**改过**就保留你那份、把新版另存成 `duty.md.new`(日志里会说一句),自己合一下。
|
|
116
|
+
⚠️ **从 0.1.5 及以前升上来的第一次没有账本可比** ⇒ 保守地当成「你改过」:新版落成 `duty.md.new`;
|
|
117
|
+
确认自己没改过,把它覆盖到 `duty.md` 就行(一次的事,之后就有账本了)
|
|
118
|
+
|
|
119
|
+
## 如果你是一个 AI 助手,正在帮用户装这个插件
|
|
120
|
+
|
|
121
|
+
按顺序来,别跳步:
|
|
122
|
+
|
|
123
|
+
1. **先确认前提**:机器上有 `Python 3.10+` 或 `uv` 吗?(查 `python --version` / `uv --version`)
|
|
124
|
+
两个都没有 ⇒ **建议装 `uv`**(单文件 exe、免管理员、能自带 Python);
|
|
125
|
+
2. **装插件**:`dsh plugin --profile web add github:c1overzz/dsh-bili-scroll`
|
|
126
|
+
(npm 上的 `dsh-bili-scroll` 同名同内容,审核通过后用 `add dsh-bili-scroll` 更省事)
|
|
127
|
+
3. ⚠️ **必须提醒用户重启一次 dsh** —— bundle 层要重启才组装,不重启插件不会生效;
|
|
128
|
+
4. 重启后请用户进 **设置 → 刷B站**:先点「**装依赖**」(几十秒,进度就显示在页面下面)、再点「**扫码登录**」
|
|
129
|
+
(手机 B 站扫码,**确认时选"记住我 / 长期"**);
|
|
130
|
+
5. **不要**替用户打开「自动评论并 @ 你」—— 那是拿用户的号说话。要用得让用户自己在设置里填「要 @ 谁」。
|
|
131
|
+
|
|
132
|
+
## 依赖与致谢
|
|
133
|
+
|
|
134
|
+
- 内置 [**bilibili-mcp**](https://github.com/adoresever/bilibili-mcp)(MIT,Copyright (c) 2026 AGI_Ananas)——
|
|
135
|
+
搜索 / 字幕 / 评论 / 发评论这些能力来自它;本插件只做「**挑什么、什么时候挑、要不要说话**」这一层
|
|
136
|
+
- 需要本机有 **Python 3.10+**(会用 `uv` 或 `python -m venv` 建独立环境),不需要它已经进 PATH
|
|
137
|
+
- Python 依赖只有 4 个(`bilibili-api-python` / `aiohttp` / `qrcode` / `mcp`,见 `vendor/bilibili-mcp/requirements.txt`);`mcp` **必须锁 `<2`**(2.x 起不来)
|
|
138
|
+
|
|
139
|
+
## 路线图
|
|
140
|
+
|
|
141
|
+
- **0.1.x(当前 = 0.1.5)**:内置 MCP + 扫码登录 + 章程 + 设置页(峰谷级联开关 / 定量刷 / 自动评论 / 回复评论 / 工作区 / 日报三档)+ 谷时定时器 + 报告 + 看报告与打开文件夹 + 版本徽章 / 检查更新 / 一键升级 + **评论发出后复核**(0.1.4 起)
|
|
142
|
+
- **0.1.6(在做)**:每轮记账(token 与花费)· 周末时段 · 数据目录可配 · 「停掉这一轮」按钮
|
|
143
|
+
- **v0.2**:**用 JS 重写那几个接口 ⇒ 不再需要 Python**(零安装);报告归档、失败重试
|
|
144
|
+
|
|
145
|
+
## 许可证
|
|
146
|
+
|
|
147
|
+
MIT(内置的 `vendor/bilibili-mcp/` 另见该目录下的 LICENSE)
|