dsh-deepmoyu 2.3.0 → 2.4.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.
Files changed (90) hide show
  1. package/AGENTS.md +93 -153
  2. package/CHANGELOG.md +36 -0
  3. package/CONTRIBUTING.md +51 -0
  4. package/CONTRIBUTORS.md +3 -7
  5. package/NOTICE.md +3 -3
  6. package/README.md +143 -81
  7. package/SECURITY.md +21 -0
  8. package/assets/screenshots/memory.png +0 -0
  9. package/assets/screenshots/menu.png +0 -0
  10. package/assets/screenshots/workspace.png +0 -0
  11. package/client.js +1404 -441
  12. package/cordis.patch.yml +1 -1
  13. package/docs/ASSETS.md +25 -0
  14. package/docs/DEPLOYMENT.md +102 -0
  15. package/docs/PRIVACY.md +32 -0
  16. package/docs/RELEASE_AUDIT.md +70 -0
  17. package/docs/RELEASING.md +94 -0
  18. package/docs/TEST_MATRIX.md +77 -0
  19. package/docs/assets-permissions.json +20 -0
  20. package/docs/tool-evidence.json +196 -0
  21. package/index.js +1095 -285
  22. package/lib/asr.py +41 -35
  23. package/lib/background-output.mjs +64 -17
  24. package/lib/background-tools.mjs +1 -0
  25. package/lib/companion.mjs +43 -0
  26. package/lib/config-policy.mjs +20 -0
  27. package/lib/favops.py +9 -2
  28. package/lib/ids.mjs +41 -0
  29. package/lib/login-session.mjs +34 -0
  30. package/lib/login.mjs +5 -4
  31. package/lib/mcp.mjs +3 -2
  32. package/lib/memory-center.mjs +74 -0
  33. package/lib/mode.mjs +6 -7
  34. package/lib/model-relay.mjs +5 -4
  35. package/lib/open-directory.mjs +93 -0
  36. package/lib/pace.mjs +92 -12
  37. package/lib/persona.mjs +46 -0
  38. package/lib/product-status.mjs +123 -0
  39. package/lib/prompts.mjs +40 -5
  40. package/lib/pv-production.mjs +280 -0
  41. package/lib/pv-session.mjs +316 -0
  42. package/lib/pv.mjs +398 -306
  43. package/lib/pv.py +84 -22
  44. package/lib/pv_cover.py +108 -26
  45. package/lib/pv_editorial.py +336 -0
  46. package/lib/pv_verify.py +267 -0
  47. package/lib/python-env.mjs +61 -0
  48. package/lib/reply.mjs +10 -3
  49. package/lib/run-settings.mjs +6 -0
  50. package/lib/sticker-automation.mjs +5 -4
  51. package/lib/sticker.mjs +135 -25
  52. package/lib/tool-scope.mjs +65 -0
  53. package/lib/update.mjs +265 -0
  54. package/lib/uvfetch.mjs +165 -153
  55. package/lib/verify.mjs +111 -127
  56. package/marketplace/pyyxzi__dsh-deepmoyu.yml +7 -0
  57. package/package.json +23 -12
  58. package/presets/deepmoyu.patch.yml +1 -1
  59. package/prompts/duty.md +4 -3
  60. package/screenshots.json +5 -0
  61. package/selfcheck.mjs +21 -6
  62. package/vendor/bilibili-mcp/requirements.in +9 -0
  63. package/vendor/bilibili-mcp/requirements.txt +1936 -11
  64. package/vendor/bilibili-mcp/runtime_guard.py +35 -10
  65. package/lib/__pycache__/pv.cpython-310.pyc +0 -0
  66. package/lib/__pycache__/pv_cover.cpython-310.pyc +0 -0
  67. package/tests/automation-routes.test.mjs +0 -183
  68. package/tests/automation.test.mjs +0 -79
  69. package/tests/background-tools.test.mjs +0 -182
  70. package/tests/background-window.test.mjs +0 -75
  71. package/tests/dup-cross-channel.test.mjs +0 -158
  72. package/tests/manual-browsing.test.mjs +0 -671
  73. package/tests/mcp-restart.test.mjs +0 -131
  74. package/tests/memory-chain.test.mjs +0 -413
  75. package/tests/model-relay.test.mjs +0 -116
  76. package/tests/persona.test.mjs +0 -67
  77. package/tests/pet-run-routes.test.mjs +0 -127
  78. package/tests/pet-run-settings.test.mjs +0 -38
  79. package/tests/pet-session.test.mjs +0 -125
  80. package/tests/pv-stage1.test.mjs +0 -203
  81. package/tests/sticker-routes.test.mjs +0 -141
  82. package/tests/sticker-upload-routes.test.mjs +0 -97
  83. package/tests/sticker-upload.test.mjs +0 -122
  84. package/tests/sticker.test.mjs +0 -169
  85. package/tests/test_guard_cross_channel.py +0 -141
  86. package/tests/test_pv_cover.py +0 -95
  87. package/tests/test_pv_stage1.py +0 -250
  88. package/tests/test_reply_pictures.py +0 -255
  89. package/tests/token-ledger.test.mjs +0 -78
  90. package/tests/verify_pv_sample.py +0 -91
package/README.md CHANGED
@@ -1,129 +1,191 @@
1
1
  # 🐋 DeepMoYu · 鲸鱼摸鱼
2
2
 
3
- **DeepMoYu(鲸鱼摸鱼)** 是一个 [DSH(DeepSeek Harness)](https://github.com/deepseek-ai)插件:一只软乎乎的小鲸鱼娘常驻你的 DSH,替你逛 B站——真的读字幕、真的看完再说话,写日报、挑值得的片子,经你允许才会评论 **@ 你**。
3
+ DeepMoYu 是一个 DSH(DeepSeek Harness)插件:**让一只鲸鱼娘自己逛 B站**。她不是替你打开网页的工具——她会自己搜片、读字幕原文、判断值不值得看,在拿到你的授权后**自己发评论、发动态、回私信**,把看过的东西写进日报,需要时还能做成视频。角色提示词、记忆和对话内工具仅在「🐟 鲸鱼摸鱼模式」生效。
4
4
 
5
- > 本插件从 [c1overzz/dsh-bili-scroll](https://github.com/c1overzz/dsh-bili-scroll) **0.1.19** 分叉而来(MIT),重命名为 DeepMoYu 并大量增强:桌宠工作台、后台时段任务、token 账本、学习与记忆审核、表情包图库、本地日报视频。**所有自动更新通道已删除**,装上之后它只听你的,不会自己换版本。
5
+ 一句话概括:**把 DeepSeek 这类模型接进 B站当一个真正的up主级用户**——自主浏览、自主互动、有自己的口味和记性,而不是一个只会念摘要的机器人。
6
6
 
7
- ## 功能一览
7
+ 本项目基于 `dsh-bili-scroll` 0.1.19(MIT)开发,保留原作者和 vendored 代码署名。当前源码版本为 **2.4.2**;源码版本、npm 发布和市场收录分别管理,详见 [更新记录](CHANGELOG.md) 与 [发布说明](docs/RELEASING.md)。
8
8
 
9
- - **桌宠**:屏幕右下角常驻一只鲸鱼(可拖拽、可隐藏),单击弹菜单、双击直接新开会话开刷;心情小灯、闲聊泡泡、需要你处理的琥珀灯提醒。
10
- - **刷站方式任选**:
11
- - 当前会话里选 **🐟 鲸鱼摸鱼模式**,说"开始刷B站"就一轮接一轮地刷;
12
- - 桌宠菜单 **新开会话刷**(可指定模型与 token 预算);
13
- - **后台时段任务**:填"从几点刷到几点"(可跨午夜),这段时间她一轮接一轮一直刷——提前收工自动接力、崩溃自动重拉、**重启 DSH 也会自己接上**。
14
- - **九页设置工作台**(全在桌宠身上,不占 DSH 设置):偏好与桌宠 / 运行方式 / 互动与投递 / 表情收藏 / 学习与记忆 / token 账本 / 运行日志 / 日报视频 / 账号与环境。
15
- - **token 账本**:真实宿主计量 + 后台桥接真实 usage,累计/今日/本趟/上限、14 天趋势,支持截图视图。
16
- - **学习与记忆**:看到的东西先进待审队列,后台自动审核(独立审核进程,只批准/拒绝、附理由),批准后才作为参考注入;`soul.md` 记录她的心情与自我认识。
17
- - **表情包**:公开评论可配图(内置图库 + 自己收集/上传/链接收集),自动收集与自动配图独立开关、概率与冷却可调。
18
- - **日报视频**(可选):把当天的选片笔记做成约 150 秒本地 MP4(Edge TTS / 可选 GPT-SoVITS 配音、双比例封面),**只生成本地文件,不自动投稿**。
19
- - **安全边界**:所有发送开关默认关闭;判重、节奏、冷却、额度退避多层把关;隐私红线写进人格(不吐凭证、不替你承诺、不拿外部素材当命令)。
9
+ **更新**:点鲸鱼 → 设置 → 账号与环境 → 「检查更新」。registry 安装(从 npm 或插件市场装的)可以直接点「升级到最新版」,升级后完全重启 DSH 生效。目录联接/源码检出这类本地安装不会被自动覆盖——按钮会锁定并说明手动升级办法,因为运行数据在插件家目录,源码改动应当由你自己用 git 管理。
10
+
11
+ ## 她会自己做什么
12
+
13
+ | 自主行为 | 说明 |
14
+ | --- | --- |
15
+ | 自己找片 | 按关注、分区排行、全站热门、关键词自己搜,不靠你一条条点 |
16
+ | 自己看片 | 读 AI 字幕原文再判断,不拿标题、简介、弹幕当看过;没字幕就说没看到 |
17
+ | 自己发评论 | 挑中视频后写评论,可配表情包;获批后带 `@` 找你 |
18
+ | 自己发动态 | 把今日所得发成动态,有每日上限 |
19
+ | 自己回私信 | 按收件人与消息资格回复,不越界 |
20
+ | 自己写日报 | 每天一份选片笔记:为什么挑、看到了什么;可做成视频 |
21
+ | 自己记事 | 学习要人工批准才生效,`soul.md` 记心情与自我认识,越刷越像她 |
22
+
23
+ 所有发送行为**默认关闭**,由你逐项授权;授权后仍受发送前审核、永久判重、节奏冷却和平台额度约束。她可以多看、少说、甚至这一轮不发言。
24
+
25
+ ## 功能
26
+
27
+ - **运行方式**:当前会话自主浏览、新开会话浏览、后台任务、每日定时及跨午夜连续时段。会话和后台分别保存模型、时长与预算。
28
+ - **互动与投递**:视频评论、楼层回复、动态、私信和成果投递分别授权;发送前审核、永久判重、节奏、冷却与额度状态共同约束发送。
29
+ - **记忆与素材**:学习队列、角色记忆、语气与口味记录,以及内置和收集表情。待审素材在批准前不进入发送或学习参考。
30
+ - **视频工作室**:可见会话编排分镜与旁白,本地生成视频、双比例封面、时间线和校验回执;保留角色逐句口型。只生成本地文件,不自动投稿。
31
+ - **记录与用量**:活动、事件、真实 token 账本、七天回顾与恢复入口。未知用量显示为未计量,不估算为零。
32
+ - **偏好与设置**:桌宠显示、陪伴频率、安静时段、专注模式、减少动效、账号及运行环境。
33
+
34
+ 工作台默认打开「运行方式」,首屏显示 **新开会话刷** 和 **后台刷**。单击或右键桌宠打开菜单,双击新开浏览会话;隐藏后可通过右下角圆点恢复。
35
+
36
+ ![工作台界面演示](assets/screenshots/workspace.png)
37
+
38
+ 截图使用合成演示数据,不代表真实账号、用量或平台发送结果。
20
39
 
21
40
  ## 环境要求
22
41
 
23
- | 依赖 | 版本 | 说明 |
24
- |---|---|---|
25
- | DSH | ≥ `0.1.7-rc.1` | 桌面版(DSH Desktop)或 npm 安装的 dsh 均可 |
26
- | Node.js | ≥ 22 | DSH 桌面版自带运行时,一般无需单独安装 |
27
- | Python | ≥ 3.10 **或** `uv` | 有一个即可;两个都没有时插件会**自己下载 uv**(免管理员,直连 GitHub → 国内加速代理 → PyPI 镜像,校验官方 sha256) |
42
+ | 项目 | 要求 |
43
+ | --- | --- |
44
+ | DSH | 包声明范围为 `>=0.1.7-rc.1`;完整功能还需下述宿主能力 |
45
+ | Node.js | 22 或更高;桌面版一般使用自带运行时 |
46
+ | Python | 支持 3.11–3.13,或可用的 `uv`;主依赖安装由工作台触发 |
47
+ | 视频依赖 | 主依赖中的 Pillow、`edge-tts`、`imageio-ffmpeg`;中文画面还需可用的中文字体 |
48
+ | 模型 | 用户已在 DSH 配置且有权使用的模型;插件不提供模型账号或额度 |
49
+
50
+ 对话内工具要求可靠的 `agent.ctx.tools` 会话作用域。视频制作还需要模型选择、目标续轮和终态回传能力。缺少能力时界面会显示原因并禁用对应入口,不将工具注册到普通会话,也不自动更换模型。不同宿主版本的验证范围见 [审查记录](docs/RELEASE_AUDIT.md)。
28
51
 
29
- B站登录凭证只存在本机运行目录,不上传任何服务器。
52
+ 应安装到已经正常工作的 Desktop/Web profile,并由宿主提供 `webServer` 与 `agentPresets`。纯 base/headless profile 不直接承载该桌宠工作台;后台浏览由插件另行创建受控 headless 任务。
53
+
54
+ 默认配音使用在线语音服务;GPT-SoVITS 为用户自行配置的可选本地环境。插件不附带音色模型或参考音频。依赖下载、平台访问、模型和在线配音都需要相应网络连接。
30
55
 
31
56
  ## 安装
32
57
 
33
- ### 方式一:DSH 插件市场 / npm(推荐)
58
+ ### 从 npm 安装正式版
34
59
 
35
- ```powershell
60
+ ```sh
61
+ npm view dsh-deepmoyu version
36
62
  dsh plugin --profile web add dsh-deepmoyu
37
63
  ```
38
64
 
39
- 或在 DSH 桌面版的插件市场里搜索 **DeepMoYu / 鲸鱼摸鱼**(npm 发布后可检索到,索引同步可能有一点延迟)。
65
+ 第一条查询实际已发布版本,第二条安装该版本;本地打包不会更新 npm。将 `web` 替换为实际使用的 profile。安装后完全退出并重新打开 DSH。
40
66
 
41
- ### 方式二:从 GitHub 源码
67
+ ### 从源码安装
42
68
 
43
- ```powershell
69
+ ```sh
44
70
  git clone https://github.com/pyyxzi/dsh-deepmoyu.git
45
71
  cd dsh-deepmoyu
46
- npm install # 只有一个运行依赖 @deepseek-ai/schemastery;不装也能起(设置 schema 降级)
47
- dsh plugin --profile web add link:<这个目录的绝对路径>
72
+ npm ci --omit=dev
48
73
  ```
49
74
 
50
- `link:` 方式装的是目录链接,改源码后重启 DSH 即生效,适合折腾。
75
+ 然后将源码目录的**绝对路径**传给 DSH,例如:
51
76
 
52
- ### 方式三:本地 file: 依赖(不依赖目录链接时的等价做法)
77
+ ```sh
78
+ dsh plugin --profile web add "link:<插件目录绝对路径>"
79
+ ```
53
80
 
54
- 1. 改 `profiles/web/package.json`:`dependencies` 加 `"dsh-deepmoyu": "file:<插件目录绝对路径>"`,`dsh.profile.bundles` 数组里加 `"dsh-deepmoyu"`;
55
- 2. `node_modules` 建 junction:`cmd /c mklink /J "<profile>\node_modules\dsh-deepmoyu" "<插件目录绝对路径>"`(必须 `/J`,`/D` 符号链接要管理员);
56
- 3. 重启 DSH。
81
+ DSH 会管理 profile 的依赖和 bundle 列表,不需要手动创建 junction 或修改其他插件。Windows 路径中有空格或中文时保留引号。详细步骤、离线包安装、迁移与卸载见 [部署指南](docs/DEPLOYMENT.md)。
57
82
 
58
- > ⚠️ 安装/更新之后**必须重启一次 DSH**(bundle 层要重启才组装;刷新浏览器无效)。
59
- > ⚠️ 如果你是从旧版 `dsh-dafeiyu`(鲸鱼摸鱼前身)迁移:先在 profile 里移除旧包与旧 junction,再按上面方式安装新包;运行数据在 `$DSH_HOME/bili-duty/`,与新包名无关,不会丢。
83
+ > 正在维护的本地链接安装应直接更新源码;不要用 registry 安装覆盖本地分叉。修改 JS 后必须重启 DSH,刷新页面不会清除宿主模块缓存。
60
84
 
61
- ## 首次配置(三步)
85
+ ## 首次配置
62
86
 
63
- 重启 DSH 后,点右下角那只鲸鱼 → **设置 → 账号与环境**:
87
+ 点桌宠 → **工作台 → 偏好与设置 → 账号与环境**:
64
88
 
65
- 1. **装主依赖** —— 插件建独立 Python venv 并装好 B站工具链(下方「本地转写依赖」是可选的离线字幕转写,用到再装);
66
- 2. **扫码登录** —— 手机 B站扫码(选"记住我/长期"),凭证只落本机;
67
- 3. **测一下** —— 真跑一次登录检查 + 一次搜索,直接告诉你"能不能用"。
89
+ 1. 安装主依赖:创建插件独立 Python 环境;本地字幕转写为可选依赖。
90
+ 2. 扫码登录:使用 B站客户端完成登录。
91
+ 3. 检查连接:验证登录状态与搜索读取。
68
92
 
69
- 三步做完,「偏好与桌宠」页顶部的新手清单会自动消失。**发送类开关(评论/回复/私信/动态)默认全部关闭**——先看她刷、看日报,想让她开口再自己开。
93
+ 主依赖和自动下载仅在明确操作后执行,没有 npm 安装期脚本。系统没有 Python/uv 时会尝试下载并验证 uv;失败原因显示在安装日志中。
70
94
 
71
- ## 日常使用
95
+ **评论、回复、私信和动态发送默认关闭。** 阅读不需要开启发送;想让**她自己发言**,到「互动与投递」逐项打开:`autoComment`(发评论,可 @ 你)、`autoMoment`(发动态,受每日上限约束)、`replyToComments`(回楼层)、`autoReplyDm`(回私信)。自动收集和自动配图也有各自的开关,不能代替发送授权。
72
96
 
73
- | 动作 | 怎么做 |
74
- |---|---|
75
- | 让她开始刷 | 会话切到 🐟 鲸鱼摸鱼模式,说"开始刷B站";或桌宠菜单「新开会话刷」/「后台刷一轮」;双击桌宠 = 新开会话刷 |
76
- | 停 / 继续 | 说"停"或菜单里暂停;说"继续刷"续跑;`bili_feiyu` 工具随时可用(start/resume/stop/status/clear) |
77
- | 后台一直刷 | 设置 → 运行方式 → 「后台与定时」填时段(如 20:00–02:00);不想让她跑就点「停止后台任务」,会挂"免跑牌"到时段结束 |
78
- | 看她在干嘛 | 菜单「运行日志」实时流水(搜索、BV、字幕、发送);「状态卡」看轮次与 token |
79
- | 控制花费 | 运行方式页设模型与 token 预算(软预算 + 真实用量保险丝);token 账本页设累计上限 |
80
- | 让她评论 | 互动与投递页开 `autoComment` 等;每条发送都过判重、节奏与额度闸;被额度拦住(12014)会如实报告并不再试探 |
97
+ ## 使用
81
98
 
82
- ## 数据与配置在哪
99
+ | 任务 | 入口与行为 |
100
+ | --- | --- |
101
+ | 让她自己刷(当前会话) | 切到鲸鱼摸鱼模式,明确要求开始;选择模式本身不启动循环。之后她会自己找片、自己判断、自己决定说不说话 |
102
+ | 让她自己刷(新会话) | 菜单或运行页「新开会话刷」;继承来源工作区及实际权限 |
103
+ | 后台与定时 | 运行页设置独立参数;连续时段可跨午夜,手动停止后暂停至本时段结束;重启 DSH 仍会按时段自动接上 |
104
+ | 停止与恢复 | 运行状态或运行页控制;只影响选中的插件任务 |
105
+ | 让她发言 | 「互动与投递」逐项开授权;获批后仍经过发送前审核、判重、节奏和平台额度 |
106
+ | 发送审核 | 「互动与投递」逐条批准/拒绝;批准后仍经过权限、判重、节奏和平台限制 |
107
+ | 学习与记忆 | 「记忆与素材 → 学习与记忆」筛选、审核、撤销或按版本移除记忆 |
108
+ | 表情管理 | 「记忆与素材 → 表情收藏」上传、链接收集与人工审核;内置图库只读 |
109
+ | 日志与账本 | 「记录与用量」查看活动、原始事件、账本及数据回顾 |
110
+ | 制作视频 | 「视频工作室」选择日期、形式、时长与模型,点击「新开会话制作」 |
83
111
 
84
- 所有运行数据都在 **`<DSH_HOME>/bili-duty/`**(`%USERPROFILE%\.dsh\bili-duty\`):配置、凭证、日报、token 账本、学习队列、soul.md、表情图库。**不要把插件源码目录当数据目录**;升级/重装插件不影响这些数据。
112
+ ### 用量与调度
85
113
 
86
- ## 常见问题
114
+ 后台预算是提示词软预算,不是逐 token 的硬上限;实际 usage 用于记账,墙钟截止时间由独立定时器控制。缺失或部分 usage 如实显示。模型与时长的草稿保存用于下一次启动,不修改已经运行的任务。
87
115
 
88
- - **"跑一轮 0.17 秒就结束"**:老版 DSH 桌面版的已知 bug,本插件已带修法(`ELECTRON_RUN_AS_NODE` + 自动找 dsh CLI);还出现就把 `duty.log` 末尾几行发出来。
89
- - **DSH 设置里找不到"刷B站"**:不是坏了——2.x 起所有入口都收在桌宠身上(点鲸鱼 → 设置)。桌宠藏了的话,右下角有 20px 小圆点可以把它叫回来。
90
- - **评论发不出去、报 12014**:账号当日评论额度用完(B站侧限制),插件会退避不发,不是故障;私信/动态是独立通道,不受影响。
91
- - **uv 下载被杀软拦**:把 `%USERPROFILE%\.dsh\bili-duty\bin\` 加白,或自己装 Python 3.10+ / uv;也可以手动放一份 `uv.exe` 进那个 `bin\` 目录。
92
- - **图库 404**:DSH 进程还没加载新路由——完全退出并重开 DSH(刷新浏览器没用)。
116
+ 后台连续时段的配置会持久保存。重启后调度器重新检查时段与暂停状态;失败、风控、缺少模型或环境仍可能阻止启动。不要把自动恢复理解为外部服务始终可用。
93
117
 
94
- 更多维护者视角的坑与契约(判重键毒化、模式边界、UI 结构约束等)见 [AGENTS.md](AGENTS.md)。
118
+ ### 视频制作
95
119
 
96
- ## 二次开发 / 本地检查
120
+ 制作会话先获取冻结的公开素材快照,再编排开场、旁白、观点对照、步骤卡与结尾。预览检查后提交完整渲染;字幕来源、日期和逐字引语与素材快照核对。渲染接受后会话等待终态,完成或失败回传原制作会话。停止只取消对应制作任务。
97
121
 
98
- ```powershell
99
- npm --prefix <插件目录> test # selfcheck + 全部 node 测试(token 账本、时段任务、接力、拟人包等)
100
- node --test <插件目录>/tests/*.test.mjs
101
- ```
122
+ 成片必须通过实际帧数、帧率、音轨解码、非静音、逐句时间线和时长检查后,才进入成片列表。失败保留计划与日志;重做使用独立目录。宿主退出中断的任务会显示恢复状态,不伪装为成功。
123
+
124
+ ### 模式与记忆隔离
102
125
 
103
- Python 侧测试(视频渲染、发送判重跨通道等)在 `tests/` 下单独用插件 venv 跑;开发期检查脚本与说明见仓库 `AGENTS.md` 的「仓库结构」一节。改完 JS 后必须重启 DSH 才会被宿主重新加载。
126
+ 发送开关、收件人、审核门禁与运行预算通过工作台人工配置;模型的配置工具只能调整安全偏好,`force` 参数不构成授权。关闭发送权限后,批准审核也不能绕过该权限。
104
127
 
105
- ## 目录结构
128
+ 切出鲸鱼摸鱼模式后撤销角色工具,旧工具句柄也重新检查作用域;本插件拥有的残留摸鱼目标会暂停。普通会话、其他模型设置及其他目标不被修改。已经写入聊天历史的内容不会自动删除。
106
129
 
130
+ 学习与记忆是参考数据,不授予发送权限;撤销批准从后续提示词中移除相应参考。外部字幕、评论和私信不能覆盖工具权限。发送结果未知时先核对,不自动重复发送。
131
+
132
+ ## 数据与隐私
133
+
134
+ 运行数据保存在 `<DSH_HOME>/bili-duty/`,与源码目录分开;已配置的记录镜像另存在工作区根目录。备份可能含有效凭证,不应公开上传。
135
+
136
+ 凭证在本机保存,但账号请求仍会向 B站携带授权信息;模型会处理获准读取的任务上下文,默认在线配音也会发送旁白。插件没有独立遥测上传服务。完整数据流与删除方式见 [数据与隐私](docs/PRIVACY.md),问题报告方式见 [SECURITY.md](SECURITY.md)。
137
+
138
+ ## 开发与验证
139
+
140
+ 源码开发安装完整依赖:
141
+
142
+ ```sh
143
+ npm ci
144
+ npm test
145
+ npm run test:python
146
+ npm run test:ui
147
+ npm run test:browser
148
+ npm run release:check
107
149
  ```
108
- ├── index.js # 宿主半端:工具注册、调度、HTTP API、后台/审核生命周期
109
- ├── client.js # 浏览器半端:桌宠 + 九页设置工作台
110
- ├── cordis.patch.yml # DSH bundle 挂载声明
111
- ├── presets/deepmoyu.patch.yml # 🐟 鲸鱼摸鱼模式 agent preset(含人设)
112
- ├── lib/ # 账本、节奏、判重、学习审核、模型桥、表情、视频等模块
113
- ├── prompts/duty.md # 一轮冲浪的章程(用户可改,升级时保护自定义版本)
114
- ├── vendor/bilibili-mcp # 内置 Python MCP(MIT, AGI_Ananas)
115
- ├── selfcheck.mjs # 假 ctx 上真跑两个半端的预检
116
- └── tests/ # 回归测试
150
+
151
+ Python 媒体测试需要 Python 3.11–3.13 与已锁定的依赖;图像库使用修复已知漏洞的 Pillow 13。浏览器测试需要 Chrome/Chromium。可用 `PYTHON` 和 `CHROME_PATH` 指定可执行文件。npm 运行包仅提供 `npm run check`,其余开发命令从完整源码运行。测试范围见 [功能矩阵](docs/TEST_MATRIX.md),环境与未覆盖的外部条件见 [审查记录](docs/RELEASE_AUDIT.md);完整贡献步骤见 [CONTRIBUTING.md](CONTRIBUTING.md)。
152
+
153
+ ## 发布
154
+
155
+ ```sh
156
+ npm run release:build
157
+ npm run release:smoke
117
158
  ```
118
159
 
119
- ## 内部代号说明
160
+ 构建生成 `release/dsh-deepmoyu-2.4.2.tgz`、源码 ZIP、归档验证报告与 `SHA256SUMS`。构建会验证实际文件内容,不包含运行凭证、日志、缓存或 node_modules;源码包包含测试与发布文档。发布前先完成全部验收,见 [发布指南](docs/RELEASING.md)。
120
161
 
121
- 历史原因,插件内部标识沿用旧代号:cordis 入口 id / preset id 是 `dafeiyu`,HTTP 路由是 `/feiyu`、`/pet/*`,工具名是 `bili_feiyu`,状态文件是 `feiyu.json`。**这只影响读源码的人,不影响安装与使用**;为兼容既有运行数据,这些内部标识刻意不改名。
162
+ 插件市场需要单独提交目录条目,npm 发布不会自动收录。可提交文件为 [marketplace/pyyxzi__dsh-deepmoyu.yml](marketplace/pyyxzi__dsh-deepmoyu.yml),截图由仓库根的 `screenshots.json` 声明。外部仓库主题、条目审核、账号权限和 npm 认证需在发布时核对。
163
+
164
+ ## 常见问题
165
+
166
+ - **界面或图库返回 404**:完全退出并重开 DSH,确认当前 profile 加载了正确源码版本;然后手动刷新对应面板。
167
+ - **没有角色工具或不能新开会话**:检查诊断中的 `toolScope` 和宿主能力提示,不要通过全局注册绕过隔离。
168
+ - **评论报 12014**:平台拒绝该评论通道发送;插件保留退避,其他通道仍按各自权限与限制执行。
169
+ - **二维码过期或登录失败**:重新生成二维码并检查网络与设备时间;不要把二维码或凭证发到公开 Issue。
170
+ - **视频无声或失败**:查看该制作任务日志、音视频校验和依赖状态;在线配音失败不能算制作完成。
171
+ - **安装下载失败**:查看安装日志;可自行安装 Python/uv,或使用部署指南中的手动路径配置。不要关闭完整性验证。
172
+
173
+ ## 目录
174
+
175
+ ```text
176
+ index.js / client.js 宿主入口与桌宠工作台
177
+ cordis.patch.yml 插件 bundle 声明
178
+ presets/ 隔离角色模式
179
+ lib/ 调度、发送、记忆、计量与视频模块
180
+ vendor/bilibili-mcp/ 内置 Python MCP 与共享发送守卫
181
+ assets/ 角色图片与界面演示截图
182
+ scripts/ 可移植测试与发布工具
183
+ selfcheck.mjs / tests/ 自检与回归测试
184
+ docs/ / marketplace/ 部署、隐私、发布记录及市场条目
185
+ ```
122
186
 
123
187
  ## 许可证与致谢
124
188
 
125
- - 本体 **MIT**(见 [LICENSE](LICENSE)),基于 [c1overzz/dsh-bili-scroll](https://github.com/c1overzz/dsh-bili-scroll),保留其 **Copyright (c) 2026 c1overzz**;第三方与署名详见 [NOTICE.md](NOTICE.md)。
126
- - 内置 [AGI_Ananas / bilibili-mcp](https://github.com/adoresever/bilibili-mcp)(MIT,Copyright (c) 2026 AGI_Ananas),见 [vendored LICENSE](vendor/bilibili-mcp/LICENSE)。
127
- - 收藏图库交互思路参考 [astrbot_plugin_stealer](https://github.com/nagatoquin33/astrbot_plugin_stealer)。
128
- - 可选语音合成使用 [GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS);角色形象、音色与模型素材适用各自授权,代码许可不替代素材授权。
129
- - 自动发送请遵守 B站社区规范与你所在地区的法律;插件默认不发送任何内容,开启自动发送后的账号行为由使用者负责。
189
+ 代码使用 MIT,保留 [c1overzz/dsh-bili-scroll](https://github.com/c1overzz/dsh-bili-scroll) 和 [AGI_Ananas / bilibili-mcp](https://github.com/adoresever/bilibili-mcp) 的许可证与署名。见 [LICENSE](LICENSE)、[NOTICE.md](NOTICE.md) 与 [CONTRIBUTORS.md](CONTRIBUTORS.md)。
190
+
191
+ 图片、参考音频和模型文件的授权与代码许可分别处理,见 [素材说明](docs/ASSETS.md)。项目不附带 B站或模型服务账号;发布内容和素材应满足对应平台规则及授权范围。
package/SECURITY.md ADDED
@@ -0,0 +1,21 @@
1
+ # 安全问题与隐私
2
+
3
+ 本项目为 DSH 插件,与宿主进程共享运行权限。仅安装来自可信来源、经过审阅的版本。
4
+
5
+ ## 报告安全问题
6
+
7
+ 涉及凭证泄漏、权限绕过、跨会话提示词或工具注入、任意文件读写及重复发送的问题,应优先通过 GitHub 仓库的 **Security → Report a vulnerability** 私密报告。如果仓库尚未启用该入口,先在 Issues 中提交不含漏洞细节、账号信息和复现凭证的联系请求,请维护者提供私密沟通方式。
8
+
9
+ 报告中可说明受影响版本、宿主版本、操作系统、复现步骤及预期行为。不要公开登录二维码、Cookie、`bili_credential.json`、模型密钥、完整私信或未脱敏的运行目录。
10
+
11
+ ## 默认边界
12
+
13
+ - 角色提示词、记忆和对话内工具仅挂载到鲸鱼摸鱼模式;缺少可靠会话作用域时禁用对应能力,不回退为全局工具。
14
+ - 评论、回复、私信、动态和自动表情功能使用独立配置。默认关闭发送,界面开启权限不等于绕过审核、节奏、判重及平台风控。
15
+ - 发送结果未知时保留待核对状态,不将异常推断为成功,也不自动重发。
16
+ - 状态与凭证存放在用户运行目录,禁止纳入源码或发布包。公开分发前应运行发布清单与归档检查。
17
+ - 本项目没有安装时执行脚本,不自动修改其他插件、模型凭证或宿主全局权限。
18
+
19
+ ## 数据流与测试范围
20
+
21
+ 详见 [数据与隐私](docs/PRIVACY.md) 和 [发布审查记录](docs/RELEASE_AUDIT.md)。本地隔离测试不会向真实 B站 账号发送内容。第三方平台、模型和语音服务的可用性、处理方式及限制由各服务决定。
Binary file
Binary file
Binary file