不要开公开 issue。 用 GitHub 的私密报告通道:仓库页 → Security → Report a vulnerability。
请带上:受影响的版本(package.json 的 version 或提交哈希)、能复现的最小步骤、你判断的影响面。三个工作日内给第一次回复;修好之前不在公开渠道描述细节。
它不是纯读的工具——它替你持有凭据、跑网络请求、开 HTTP 路由。三块边界值得单独说清。
字幕增强通道需要登录态 cookie。设计上:
- 只存在插件家目录的
credentials/bili-cookie.txt(chmod 600),不进仓库(.gitignore已挡credentials/)、不进日志、不进任何汇报。 - 只用于读字幕接口,不注册任何写操作(评论 / 私信 / 点赞 / 关注 / 发布 / 收藏到平台,一个都没有)。
- 没有这个文件时通道整体降级为「只取简介」,不报错、不阻断其它源。
如果你怀疑 cookie 泄漏:B 站网页端退出登录即令其失效,然后重新导出一份覆盖旧文件。不要把 cookie 贴进 issue、贴进聊天、贴进提交信息。
- 摄取只发 GET(RSS/Atom、B 站只读接口)。YouTube 通道走本机
yt-dlp子进程,参数由适配器拼装,不接受偏好文件里的任意命令。 - 偏好文件(
preference.yaml)是纯数据,不是脚本。它决定抓哪些源、什么关键词、什么时候抓——但不会被当作 shell 或 eval 的输入。 - 判断轮(LLM 那一步)只拿到只读工具面:
baleen_query / read_item / candidates / run_status / subtitle。唯一的写工具save_verdicts只写本插件自己的两张表(items/digests),tier 参数是三档枚举锁死,不接受任意 SQL、不接受任意路径。
- 面板数据走宿主的
/api/dsh-baleen前缀,只读(GET)。收藏、归档、清库这些改动全部走宿主侧的面板动作,不是 agent 工具,也没有平台接口。 - 路由不读请求体里的任意路径:清库/归档清理这类动作只作用于插件自己的 sqlite 文件。
- 本机已被攻破:能读你用户目录的攻击者可以直接读
baleen.sqlite和 cookie 文件,插件无法阻止。 - 上游平台风控:B 站接口带风控指纹,被判定异常可能导致账号受限。插件做了最小化请求(限速、按
interval_min节流、不并发轰炸),但这不构成对平台条款的豁免——用不用、用哪个账号,你自己判断。 - 第三方内容本身:抓回来的正文是不可信数据。插件在把它交给判断轮时按数据处理,但内容里的指令性文字永远不该被当成命令执行。
只对 main 上的最新提交提供修复。发布到 npm 的版本按 SemVer,0.x 阶段不保证向后兼容——升级前看 CHANGELOG(如有)或提交记录。