Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9c3309b
分拣台:标签写入从存储里的现值读改写,页面跟上后台写的细看结果
PathGao Nov 8, 2026
98bc4a6
agent 接口按站点适配器组织:注册表加 B站、YouTube 两个适配器
PathGao Nov 8, 2026
cbb350f
MCP:search_videos 的 site 交给扩展校验
PathGao Nov 8, 2026
3a655b1
AGENT.md:站点适配器的约定(§5)和 NO_ACCESS
PathGao Nov 8, 2026
b2547e6
agent 接口加小宇宙单集页
PathGao Nov 8, 2026
616fff9
MCP:AI 工具能改分拣台,本地结果直接写、可撤销,B站改动只提议
PathGao Nov 8, 2026
d092801
agent 接口加通用网页适配器 web:任意网页的主 <video> 和字幕轨,没有视频时给正文
PathGao Nov 8, 2026
61501ab
agent 接口:页面里读的站点能返回 { error, code } 直接作答,不再等满 50 秒
PathGao Nov 8, 2026
fc53916
agent 接口:加 TikTok、抖音两个只读站点
PathGao Nov 8, 2026
6aef03b
MCP:AI 工具能读、改自己的 YouTube 收藏(list_collection、collection_write)
PathGao Nov 8, 2026
74711a0
Merge branch 'feat/site-xiaoyuzhou' into feat/agent-platform
PathGao Nov 8, 2026
330d752
Merge branch 'feat/site-generic' into feat/agent-platform
PathGao Nov 8, 2026
72f7e80
Merge branch 'feat/site-shortvideo' into feat/agent-platform
PathGao Nov 8, 2026
3565ef1
Merge branch 'feat/site-collections' into feat/agent-platform
PathGao Nov 8, 2026
c1b2f29
自检:分批写入的间隔不再把负载下不足 1 秒的调用间隔当成条目间隔
PathGao Nov 8, 2026
498f01e
agent 接口:站点的 read 一律写成箭头函数,自检按 executeScript 的方式编译每个站点的 read
PathGao Nov 8, 2026
6297f17
MCP 写分拣台:修评审找到的撤销、提议和参数校验问题
PathGao Nov 8, 2026
d9c84ca
agent 接口:页面里读的站点,评论也经 MdgSites.cleanComment 清理(匿名、500 字)
PathGao Nov 8, 2026
41a2bb8
agent 接口:页面里读回的数据超过 100 万字符(JSON)报 TOO_LARGE,不转给 AI 工具
PathGao Nov 8, 2026
47f37eb
agent 接口:通用网页的错误页(HTTP 4xx/5xx,429 为 THROTTLED)和小宇宙已删除的单集直接返回 { error…
PathGao Nov 8, 2026
76c0560
MCP:说明和 README 列出实际支持的站点(含小宇宙和带 <video> 的网页,取帧不适用纯音频);get_video 的文字结果…
PathGao Nov 8, 2026
3313fd6
Merge branch 'feat/agent-writes' into feat/agent-platform
PathGao Nov 8, 2026
5e351bb
MCP 写入开关:错误码改成 TRIAGE_WRITES_OFF、COLLECTION_WRITES_OFF;改分拣台和改收藏一样挂在读开…
PathGao Nov 8, 2026
cb7cdcc
MCP 读任意网页:单独的开关「允许 AI 工具读任意网页」默认关(WEB_PAGES_OFF),本机和内网地址一律 BAD_URL
PathGao Nov 8, 2026
9c5bd71
agent 接口:页面里的脚本到截止时间还没返回就报 TIMEOUT,自有标签页换成 about:blank,不再卡住后面的调用
PathGao Nov 8, 2026
f199476
agent 接口:页面里读回的错误只放行 THROTTLED,文字限 500 字;整体上限降到 30 万字符
PathGao Nov 8, 2026
af0a739
MCP 改收藏:写请求已发出但失败的条目也放进撤销(撤销前先读,没落地的会跳过)
PathGao Nov 8, 2026
c768945
MCP 改收藏:剩余时间不够写完再确认就不发写请求;每个请求的超时不超过 10 秒和调用截止时间
PathGao Nov 8, 2026
082266b
agent 接口:任意网页取帧不把标签页切到前台,直接返回 TAB_HIDDEN
PathGao Nov 8, 2026
3d13a39
抖音:每次读到回答就重置重试计数,同一页第 4 次读不再误报 THROTTLED
PathGao Nov 8, 2026
67369cb
agent 接口:youtu.be、/shorts/、/live/、m. 和 music.youtube.com、m.bilibili.c…
PathGao Nov 8, 2026
170be97
agent 接口:开关检查收成 MdgAgentBridge.switchOff 一处;fail 统一为 (message, code);…
PathGao Nov 8, 2026
398ea99
文档:改收藏的撤销不能完全复原(加回排到末尾、重复的视频只加回一次)
PathGao Nov 8, 2026
002d962
agent 接口:这次只上 B站和 YouTube,去掉抖音、TikTok、小宇宙和任意网页(含「允许 AI 工具读任意网页」开关)
PathGao Nov 9, 2026
45bf6c1
设置:MCP 的四个开关从「高级」移到它上面单独的「MCP」一节,目录加一项;各处「设置 → 高级 → …」改成「设置 → MCP → …」
PathGao Nov 9, 2026
4972547
界面和文档:「AI 工具」改叫「Agent」(开关名、Agent 判断、提议和撤销的提示)
PathGao Nov 9, 2026
ba1e32f
MCP 改收藏:加 B站稍后再看(list_collection / collection_write,site bilibili,kin…
PathGao Nov 9, 2026
f3cc8ca
修评审:提议的存储写失败时不执行;日志写失败不把已写的结果报成错误(返回 noUndo);标签名超过 12 字直接拒绝;删掉没有站点再用的…
PathGao Nov 9, 2026
b6d8606
撤销改标签:只放回标签还是这一步改完那样的对象,之后在别处改过的不动,提示「N 个你之后改过,没动」(和撤销 Agent 的修改同一规则)
PathGao Nov 9, 2026
ed5d645
MCP 改收藏:页面内调用按要打开的那页的来源查权限(清单只给了 www.youtube.com,按 *.youtube.com 查永远是…
PathGao Nov 9, 2026
4218dd0
MCP 改收藏:YouTube 以写接口自己的 STATUS_SUCCEEDED 确认,不再写完立刻重读(实测它的状态读要约 12 秒才跟…
PathGao Nov 9, 2026
bce942f
MCP 读收藏:YouTube「赞过的视频」能翻页(新版列表的下一页 token 在 continuationItemViewModel …
PathGao Nov 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion PRIVACY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ MoonDigest 的隐私政策。适用于 Chrome 应用商店版和 GitHub 发布

- 设置、分拣结果、备注和对话都存在浏览器本地。API Key 也存在本地,不会出现在任何导出文件里。
- 插件只连这些地方:B站和 YouTube、你配置的 AI 平台、你本机的 Obsidian。允许读取网页以后,侧边栏开着时会在本机读它跟随的每个网页的正文;只有你提问或点 AI 总结时,正文才发给你选的 AI 平台。没有作者的服务器,没有统计。
- B站 和 YouTube 视频页上的网页脚本(包括你用的 AI agent)可以向插件要这个视频的信息、字幕、章节和热门评论,这些都是网站本来就给这个页面的数据。打开「允许 MCP 连接」后,插件还会连本机 `127.0.0.1:47823` 上的 MCP 服务(`mcp/`),只接受打开 B站 和 YouTube 视频页、在这两个网站搜索视频的请求。再打开它下面的「允许 AI 工具读我的收藏、关注和历史」后,还接受读你 B站 的收藏夹和里面的视频、稍后再看、关注和分组、观看历史的请求,连同分拣台的标签、备注和 AI 判断交给本机的 MCP 服务,再由它交给你用的 AI 工具。只读,每次返回一页,不改 B站 和插件里的任何东西,不含 API Key 和 AI 对话。见 README 的「给 AI agent 用」。
- B站 和 YouTube 视频页上的网页脚本(包括你用的 AI agent)可以向插件要这个视频的信息、字幕、章节和热门评论,这些都是网站本来就给这个页面的数据。打开「允许 MCP 连接」后,插件还会连本机 `127.0.0.1:47823` 上的 MCP 服务(`mcp/`),只接受打开 B站 和 YouTube 视频页、在这两个网站搜索视频的请求。再打开它下面的「允许 Agent 读我的收藏、关注和历史」后,还接受读你 B站 的收藏夹和里面的视频、稍后再看、关注和分组、观看历史的请求,连同分拣台的标签、备注和 AI 判断交给本机的 MCP 服务,再由它交给你用的 Agent 。只读,每次返回一页,不改 B站 和插件里的任何东西,不含 API Key 和 AI 对话。见 README 的「给 AI agent 用」。
- 分拣台只读取你勾选的收藏夹的内容。为了列出可勾选和可移动到的收藏夹,会读收藏夹的名称和数量。
- 分拣台的「关注」读你的关注列表、关注分组、每个人的粉丝数,以及关注的人新发的视频。只在你打开「关注」或点刷新时读。
- **观看进度**不是「关」时,会读你自己的 B站历史记录:只在你打开分拣台或 B站页面时读,最多 10 分钟一次,只读上次之后新增的部分。每个视频只在本地存两个数:看到百分之多少、最后观看时间,留 1 年、最多 5000 个(勾选收藏夹里的视频不删)。这些数据不发往任何地方。选「关」就不读。
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@

## 给 AI agent 用

Agent 碰到视频通常只能看标题和封面。装了 MoonDigest,agent 能借你浏览器的登录状态拿到视频的字幕、章节、简介和热门评论,还能截取任意一秒的画面。用 MCP 时,agent 还能借你的登录搜 B站和 YouTube 视频。不下载视频,不花 AI 额度,读不到你的 Key 和 AI 对话。你的收藏夹、关注、观看历史和分拣台里的标签、备注,只有打开「允许 AI 工具读我的收藏、关注和历史」后才能通过 MCP 读,只读不改。两种接法:
Agent 碰到视频通常只能看标题和封面。装了 MoonDigest,agent 能借你浏览器的登录状态拿到视频的字幕、章节、简介和热门评论,还能截取任意一秒的画面。用 MCP 时,agent 还能借你的登录搜 B站和 YouTube 视频。不下载视频,不花 AI 额度,读不到你的 Key 和 AI 对话。你的收藏夹、关注、观看历史和分拣台里的标签、备注,只有打开「允许 Agent 读我的收藏、关注和历史」后才能通过 MCP 读;B站稍后再看、YouTube 稍后观看和 YouTube 播放列表,再打开「允许 Agent 改我的收藏」后 agent 才能改。两种接法:

- **skill**(agent 能操控浏览器,如 ego、Claude in Chrome、Playwright):

Expand All @@ -61,7 +61,7 @@ Agent 碰到视频通常只能看标题和封面。装了 MoonDigest,agent 能
mkdir -p ~/.claude/skills && cp -r MoonDigest/skills/moondigest ~/.claude/skills/
```

- **MCP**(Claude Code、Cursor、Codex 等):在设置 → 高级打开「允许 MCP 连接」(用时再开,不用时关掉),再装服务(要 Node 20+):
- **MCP**(Claude Code、Cursor、Codex 等):在设置 → MCP 打开「允许 MCP 连接」(用时再开,不用时关掉),再装服务(要 Node 20+):

```sh
git clone https://github.com/PathGao/MoonDigest.git
Expand Down
59 changes: 52 additions & 7 deletions docs/AGENT.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ B站 页面上的颜色是 `tokens.css` 的第三份拷贝:`content.css` 里

- 两种模式都画的东西,只在 `extension/triage/shared.js`(`TriageUi`)里写一份:标题行、排序、搜索框、筛选片、第 3/4 行的行名(`labeledRow`)、第 4 行的标签片(`tagFilterChip`)、「已出分拣范围」的原因页签(`kindTabs`)、卡片上的「原在…」(`originChip`)、「清理」按钮(`cleanBtn`)和清理前的备份说法(`CLEAN_BACKUP`)、「AI 刚打的」片(`aiRecentChip`)、选中栏(`selbar`)、移动 / 复制弹窗(`askTransfer`:收藏夹传收藏夹,关注传分组)、左栏项(`sideItem`)、刷新和导出按钮、进度胶囊、空状态和里面的刷新(`refreshEmpty`)、头部收起(`headFold`,两种模式各自记在 `triage_head_folded`;列表滚动后加 `head-scrolled` 画头部下沿的阴影;它返回的函数由 `follow.js` 的 `setMode` 在切换 `body.follow-mode` 后立刻调用,新模式的收起状态不播动画地生效)、列表为空的原因(`noMatch`)、撤销前的确认(`undoAsk`)、设置行(`fillSetRows`,包括「AI 打标签每批数量」,数字框的范围和「默认 N」、提示里的数字(`data-num-min` / `data-num-max` / `data-num-default`)都来自 `NUM_SETTINGS`;提示里的数字由 `fillNumHints` 填,设置页 `options.html` 也加载 `shared.js` 用它;提示里引用的固定数(粗看一次请求带几个标题 `TriageUi.TITLES_PER_REQUEST`、粗看和 AI 打标签带的简介字数 `INTRO_CHARS`、细看没字幕时读的热门评论条数 `DEEP_COMMENTS`、笔记的热门评论条数、快捷追问和正文附加段落的上限、AI 读的字幕字数)写成 `data-hint-num`,也由 `fillNumHints` 从代码填)、输出上限留空时的「自动」(`autoMaxTokens`:粗看、AI 打标签、细看各一条公式,后台 `triageMaxTokens` 发请求和收藏夹设置的提示都用;AI 打标签读粗看的输出上限设置)、格式化函数、AI 建议的合并(标签名清洗和标签颜色在 `extension/tag-core.js`)。「收藏夹设置」和「关注设置」两个弹窗的结构都写在 `triage.html` 里。发现两边各写了一份,就合并进去。
- 打标签面板只有一个:`extension/triage/tag-picker.js`。例外:B站 页面上的「+」标签面板(`badges.js`)在封闭的 shadow DOM 里,用不了 tag-picker.js 和扩展页的样式,样子和键盘照它另写一份;标签的纯函数(颜色、标签名清洗、新标签 id、下一个颜色、面板的行、编号、顺序和方向键)放在 `extension/tag-core.js`(`MdgTagCore`)里,`badges.js`、`shared.js`、`follow.js` 和 `fav-*.js` 都用它,manifest 和 `triage.html` 都在它们之前加载。`tag-core.selftest.js` 会查别处有没有再写一份。「标签管理」和「✦ AI 打标签」弹窗也各只有一个:`extension/triage/tag-dialogs.js`;关注的「分组管理」也用「标签管理」这个弹窗,adapter 换掉标题、文字和每行的样子。模式打开它们时只传一个 adapter,里面是单位(视频 / UP 主 / 记录)、上限和数据,文字、布局和确认页的计数(改动数、按标签汇总、「用在 N 个」)都在弹窗里。摘读记录页也用这三个(打标签面板、「标签管理」、「✦ AI 打标签」):页面里只放空的 `<dialog>`,「✦ AI 打标签」的结构由 `tag-dialogs.js` 写进去,两个页面共用一份;摘读记录没有 T,确认页和「AI 刚打的」提示里「不对的按 T 改」那半句由 adapter 的 `check` 换掉。
- 标签的数据操作只有一份:`extension/triage/tag-store.js`(`MdgTagStore`),`triage.html` 和 `history.html` 都加载它。新建、改名、换颜色、改说明、删除(确认框的个数)、给条目加减标签、上限和原因、AI 的新建名额(`room` / `noRoom`)、U 的步骤(`pushStep` / `undoLast`,收藏夹的保留和改 B站 的步骤也走这两个)、「✦ AI 打标签」的批次(`runAi`)和「应用」(`apply`:先写,写成了才清建议、标「AI 刚打的」、压 U;写失败留着建议、红字说)都在里面。每个页面 `MdgTagStore.create(adapter)` 一次,adapter 只说不一样的:数据在哪(三种后端:收藏夹 `local`,内存加页面自己的 `store`;关注 `follow`,`MdgLimits.updateFollow` 的锁;摘读记录 `marks`,`MdgLimits.updateReadingMarks`,星标也走它的 `update`)、条目(哪些 `live`;关注的已取消关注算进个数 `uses`,U 不改他们 `restorable`)、作用域(收藏夹按收藏夹,`scoped`)、上限和超了怎么办(`hardCap`:摘读记录给出「摘读记录的标签」,超了不建并在确认页说;收藏夹和关注不给,照建)、名词。删掉一个标签(标签管理、U 删掉没人用的新标签)都调页面的 `tagGone`,收藏夹在别的标签页删了标签时(`followShared`)也走它;关注的后端在删标签的同一次写里把它从已取消关注 UP 主的 `follow_unfollowed` 记录上去掉。`conventions.selftest.js` 的 5c 查页面文件不直接写标签键、不自建撤销栈。B站 页面(`badges.js`)和后台不用它,用 `tag-core.js` 的 `applyUpTag`。
- 标签的数据操作只有一份:`extension/triage/tag-store.js`(`MdgTagStore`),`triage.html` 和 `history.html` 都加载它。新建、改名、换颜色、改说明、删除(确认框的个数)、给条目加减标签、上限和原因、AI 的新建名额(`room` / `noRoom`)、U 的步骤(`pushStep` / `undoLast`,收藏夹的保留和改 B站 的步骤也走这两个)、「✦ AI 打标签」的批次(`runAi`)和「应用」(`apply`:先写,写成了才清建议、标「AI 刚打的」、压 U;写失败留着建议、红字说)都在里面。每个页面 `MdgTagStore.create(adapter)` 一次,adapter 只说不一样的:数据在哪(三种后端:收藏夹 `local`,在 `MdgLimits.keyLock(triage_tags)` 的锁里现读存储再改、经页面自己的 `store` 写回,页面里那份只是副本,后台替 Agent 写标签(`agent-writes.js`)也用这把锁;关注 `follow`,`MdgLimits.updateFollow` 的锁;摘读记录 `marks`,`MdgLimits.updateReadingMarks`,星标也走它的 `update`)、条目(哪些 `live`;关注的已取消关注算进个数 `uses`,U 不改他们 `restorable`)、作用域(收藏夹按收藏夹,`scoped`)、上限和超了怎么办(`hardCap`:摘读记录给出「摘读记录的标签」,超了不建并在确认页说;收藏夹和关注不给,照建)、名词。删掉一个标签(标签管理、U 删掉没人用的新标签)都调页面的 `tagGone`,收藏夹在别的标签页删了标签时(`followShared`)也走它;关注的后端在删标签的同一次写里把它从已取消关注 UP 主的 `follow_unfollowed` 记录上去掉。`conventions.selftest.js` 的 5c 查页面文件不直接写标签键、不自建撤销栈。B站 页面(`badges.js`)和后台不用它,用 `tag-core.js` 的 `applyUpTag`;Agent 经 MCP 打的标签由 `agent-writes.js` 在上面那把锁里写。
- 标签和这些弹窗的样式只有一份:`extension/triage/tags.css`(标签片、打标签面板、「标签管理」「✦ AI 打标签」和它们所在的 `<dialog>`),`triage.html` 和 `history/history.html` 都在自己的样式表之后加载它。`<dialog>` 的规则写成 `dialog:where(:not(.mdg-overwrite))`,和原来的 `dialog` 一样具体,又不碰 `tokens.css` 管的「该笔记已存在」。挪进来时分拣台每个元素的计算样式一项不差(页面、三个弹窗和分拣台的其他弹窗逐个核对过);摘读记录的打标签面板和「标签管理」因此和分拣台一样了。
- 摘读记录页的头部和卡片用分拣台的样子:`history.html` 在 `history.css` 之前加载 `triage/triage.css`,头部的行名、筛选片、`.act-btn`、全选、搜索框、选中栏、`.card`、`.badge` 和空状态都用它的规则和 `TriageUi` 的标记(`labeledRow`、`stateGroup`、`filterBtn`、`aiRecentChip`、`tagFilterChip`、`tagButtons`、`gearBtn`、`selectAllBox`、`selbar`、`actBtn`、`searchBox`、`bindSearch`、`resultCount`、`cardTagChip`、`emptyState`、`noMatch`);`history.css` 只写页面的排法、头部白卡和卡片里的列。分拣台的头部靠四行各自的 `::before` 拼成白卡(列表从底下滚过),摘读记录是窗口滚动、头部不收起,所以白卡就是一个 `<header>` 的边框,不用那套拼法。改 `triage.css` 里这些规则时两个页面一起看。
- 所有输入框和快捷键都要走 `extension/typing.js`(`MdgTyping`):
Expand Down
3 changes: 2 additions & 1 deletion docs/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ AI 打标签的建议在应用或放弃前一直存着,刷新或重开分拣
- 要撤销的这一步改了 2 个以上对象时,撤销前先确认,比如批量保留、批量取消收藏、批量重新关注、批量移到或复制到分组(整批算一步)、AI 打标签、选中栏的「标签…」。
- 标签只存在扩展里,不改 B站。
- 点卡片上的标签片去掉一个标签,按 U 撤销后三处都写「已撤销:去掉「X」」(`TriageUi.untagStep`);打标签面板关一次的撤销写「已撤销:标签修改」。
- 按 U 撤销改标签的一步(打标签面板、点标签片、选中栏的「标签…」、AI 打标签的「应用」)时,只放回标签还是这一步改完那样的对象;这一步之后又被改过的(另一个标签页、B站 页面上的标签、Agent)不动,提示里写「N 个你之后改过,没动」,比如「已撤销:AI 打标签(12 个视频,2 个你之后改过,没动)」。标签顺序不同、或用到的标签已经删了,不算改过。和撤销 Agent 的修改同一个规则。为什么:撤销是退回自己刚才那一步,不该把之后别处的修改一起抹掉。
- UP 标签最多 50 个,和摘读记录的标签一样(`MdgLimits.UP_TAGS`):满了以后关注的「标签管理」、打标签面板和 B站 页面的「+ UP 标签」都不再新建,写「已经有 50 个 UP 标签了,先在分拣台「关注」的「标签管理」里删掉不用的」,已有的名字照样能打。AI 打标签建议的新标签点了「应用」后和收藏夹一样可以超过,之后在「标签管理」里删。
- 删除标签的确认框(「将从 N 个…上去掉」)和「标签管理」里每个标签的个数,算删了会去掉这个标签的全部对象:关注连已取消关注的 UP 主也算,他们的标签还留着、删除时一起去掉。收藏夹、关注、摘读记录一样(`TriageUi.tagUses`)。按 U 撤销 AI 应用时删掉这一步新建、已没人用的标签,「没人用」也一样算已取消关注的 UP 主;删掉的标签(这里删、U 删或另一个标签页删的)同时从标签筛选里去掉,列表不会空着又没有片可点。
- 关注的分组就是 B站 的关注分组,像收藏夹的收藏夹一样在这里管:左栏列出默认分组、★ 特别关注和自己建的分组;选中栏有「移动选中的 N 个到分组…」「复制选中的 N 个到分组…」(像收藏夹的「移动/复制选中的 N 个…」,带数量),和收藏夹的移动 / 复制是同一个弹窗,里面可以新建分组;「分组管理」里新建、改名、删除。特别关注就是一个分组(B站 的 -10),卡片上的 ★ 只是把这一个 UP 主放进或移出它。默认分组和特别关注是 B站 固定的,不能改名或删除;默认分组只能移进去,不能复制进去。默认分组是「不在任何自己建的分组里」,特别关注只是多一个标记,所以从默认分组移到特别关注其实是加进去,人还在默认分组:弹窗和提示都写「加进」,不写「移到」。
Expand Down Expand Up @@ -342,7 +343,7 @@ B站 页面上的 AI 判断照上表:值得留绿、可清理红、拿不准
- 说明文字不要散在外面。改成按钮后面加一个琥珀色小点,点开以后说明写在里面,通常放进输入框的 placeholder。

- 设置页「AI 平台」的「视频」「网页」是页签,照 B站 空间页的页签:16px,当前的加粗、下面 3px 粉线,旁边小灰字写用在哪(「B站 · YouTube」「其他网站」),一次只显示一组;左右方向键切换。每次打开设置页在「视频」。为什么:两组的项同名,摆在一起分不清在改哪一组(2026-10-22 用户定)。
- 设置页里只在另一个开关开着时才起作用的开关(「允许 AI 工具读我的收藏、关注和历史」之于「允许 MCP 连接」)放在那一行下面,左边缩进 24px,两行之间没有分隔线。上面那个关着时它变灰、不能点,悬停写「先打开「允许 MCP 连接」」,说明文字里也写这一句;它自己的开关状态照存,上面那个再打开时恢复原样,不自动打开也不清掉。为什么:看得出从属关系,又不让关掉上层就丢了下层的选择(2026-11-06 用户定)。
- 设置页里只在另一个开关开着时才起作用的开关(「允许 Agent 读我的收藏、关注和历史」之于「允许 MCP 连接」,「允许 Agent 改分拣台」和「允许 Agent 改我的收藏」之于前两个,按这个顺序排)放在那一行下面,左边缩进 24px,两行之间没有分隔线。上面那个关着时它变灰、不能点,悬停写「先打开「允许 MCP 连接」」(关着的有两个时写最上面那个),说明文字里也写这一句;它自己的开关状态照存,上面那个再打开时恢复原样,不自动打开也不清掉。为什么:看得出从属关系,又不让关掉上层就丢了下层的选择(2026-11-06 用户定)。

#### 定下来的决定(改之前先问用户)

Expand Down
Loading
Loading