Skip to content

新闻来源管理:可选 News Modules 与 RSSHub 密钥隔离 - #1767

Draft
2233admin wants to merge 5 commits into
TraderAlice:devfrom
2233admin:feat/news-source-management
Draft

2233admin wants to merge 5 commits into
TraderAlice:devfrom
2233admin:feat/news-source-management

Conversation

@2233admin

@2233admin 2233admin commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

News Modules 与 RSSHub 密钥隔离

完整验收未完成,继续保持 Draft;不合并、不发布。 本轮接管候选 185053ea67cad0c0f4b1ebda80acf1251850c1ba,修复与证据记录提交 975538b9b936a1d0bec5d0261c0f2826c0b7d467、129fb42031e00cfd8fab135d56d522d592f6290a。已测构建标记 sourceCommit=975538b9、sourceDirty=true,其实际 core/build 字节已绑定最终修复;不是按新提交重新发行的干净制品。

项目进度更新(2026-10-08)

  • 当前 head 仍为 129fb42031e00cfd8fab135d56d522d592f6290a;两轮本范围修复与验收记录已推送。保持 OPEN / Draft,完整验收尚未完成。
  • 该 head 的远端检查已有 5 项 SUCCESS:Dev PR Clean Build 的 clean-build,以及 CLI artifact acceptance 的 linux-x64、darwin-arm64、darwin-x64 和 Linux 最终归档校验。这些检查不是本机全仓测试或未执行形态的替代证据,不据此宣布全部通过。
  • Vercel 状态仍为 FAILURE,其检查链接指向团队 Git 部署授权;未尝试改变团队授权,也不把该预览状态混称为本机源代码测试失败。
  • 今天重新 fetch 官方上游,origin/dev 为 53baaa319716a88e1a56f40dfb6e270ae48d6166。近期已合入 Unify model identity and catalog revalidation #1728 模型标识/目录重校验、Add distinct interface profiles and scoped palette recommendations #1729 界面风格,以及 Route tests and UI tooling through Vite Plus with one Vitest runner #1651/Upgrade Vite Plus to 1.0.0 (stacked on #1651) #1652 Vite Plus 迁移升级和 Restore Linux Longbridge dependencies after Vite Plus upgrade #1768 Linux Longbridge 依赖修复。新闻分支独有 5 个提交、上游独有 22 个提交;这里只同步远端引用,尚未将最新 dev 合入新闻分支。
  • 待推进:同步并核实最新 dev 对新闻页、设置页、工具链及关闭路径的影响后,重新验证实际集成树;此前绑定 975538b9 + dirty 字节的构建和运行记录不能作为该未来集成树的通过证明。本次没有执行 merge/rebase、改源码、推送新提交、重跑测试或部署。
  • 原验收阻塞仍保留:本机完整 pnpm 测试 5 失败/7698 通过/152 跳过(历史最终运行,非本次重跑);Cargo 无清单;标准 Electron 缺 Spectre;当前字面托盘 Quit 未完成;缺明确授权的隔离远程后台。不缩减合同、不称剩余测试为干净 dev 基线。

功能范围

  • 可导入社区 ESM 模块,审阅 manifest/依赖及内容 hash;只有显式批准精确 hash 后才启动。模块通过 worker ABI 采集,由核心校验完整批次、去重并写入既有 JSONL archive。
  • 管理订阅、模块、启停、状态与归档;API、设置页、Demo、四种语言同步。停止或卸载不删除历史。
  • RSSHub 是用户提供的独立服务,不由 Alice 托管,也不动态注入 RSSHub route。服务 key 独立 sealed 存储、绑定实例,仅附加到显式 RSSHub 请求;不交给直连 feed/worker。迁移 0045 与新配置备份脱敏,旧备份不追溯改写。

本轮修复

  • Windows 普通关闭曾强制结束 Alice,留下 news worker owner receipt。Guardian/桌面现在通过父子私有 IPC 请求同一关闭函数;启动初始化期间保留已收到的请求。Guardian 等待子进程退出后释放 owner,保留 10 秒强制后备及未确认归属。没有新增 HTTP 停机接口。
  • 候选激活与旧版本恢复都失败时,旧启用模块不再被误报 disabled;依据持久配置意图、全局开关和真实 loaded/failure 状态投影。
  • 四语言归档文案区分“未选择已安装版本”和“未安装”。
  • 两个串行 HTTP 失败来源各有真实 2 秒重试,单个健康历史回归用例预算由默认 5 秒改为 10 秒;没有改产品重试策略或全局超时。
  • 对不可变修复提交的独立审查进一步发现关闭竞态:await 后晚生成子进程、模块关闭未确认仍释放 Alice 锁、桌面 IPC 错误跳过宽限。第二轮已增加实际 spawn/续执行屏障、关闭后返回 owner 直接释放、正常与启动异常的 collector 确认门禁,并使 Guardian/桌面 Windows IPC 错误等待现有 10 秒宽限。独立静态审查、真实关闭回归和反例检测已完成,当前包的字面 tray Quit 仍未验证。

实际运行证据

第二轮关闭修复后的 dist/main.js SHA-256 为 77e307cd0621aa3de4e59fdaa97832a7d794641d12dd957430eada8151fc8e10。源码、新编译 Windows CLI、另类桌面包均已运行当前字节;桌面仅 companion Quit 被观察,字面 tray Quit 尚未完成。下表包含第一轮历史记录,不以旧 acdb... 桌面包替代当前验收。

形态/链路 本轮真正跑过 边界
Windows Node 与浏览器 实际 UI 导入/审批/配置/采集/新闻读取,重启持久读、停用/卸载后历史可读;独立 Guardian/HTTP/worker/archive 复验、升级精确重批、非法整批拒绝、全局启停、旧版本恢复失败状态及正常 down 只使用隔离测试 home;不外推远程
真编译 Windows CLI 真解压包,同 EXE Guardian/Alice/news-worker;正向归档、重复/重启去重、三项批准后的坏模块拒绝;模块仍启用时普通 down,以及 8.5 秒采集中 down,预记录 PID/worker/lock 收据均清零 sourceDirty 构建;未诱发真实强制超时分支
另类 Electron 实包 unsigned、npmRebuild=false;最终包 main/worker/UI 指纹与最终输出一致;app:// IPC、批准 worker、一条持久归档、重复/重启新增 0、坏导出/运行 ABI/缺依赖拒绝,真实托盘 Quit 后进程与归属收据为 0 不是标准 native rebuild、签名 installer 或 node-pty 交互验收;首个手动 collect 响应未保留,不声称其 new=1
真实 RSSHub/HTTPS digest-pinned RSSHub、临时自有 key 正误/清除/替换、base 绑定、直接 feed 隔离、重启去重、响应/归档/配置快照无 key;非 loopback HTTPS + 仅进程级临时 CA,错误信任及明文 key 被拒绝 自有 TLS forwarder 到真实服务,不是远程后台;两项策略拒绝仍返回通用 500
公网 Hacker News 真实 topstories/item API、官方示例模块、5 条核心归档、重复新增 0、历史重开与停止 只读公共新闻,不交易
迁移/热切换/POSIX 三个迁移场景各 24 项;在途 drain/配置发布、失败恢复、全局启停;Arch Linux Node/nobody 的显式 stop、协议故障、15 秒超时清理可见后代 突然 crash/SIGKILL 的 detached/reparented 后代不能保证清理,已实测该非 OS containment 边界

第一轮桌面证据纠错(历史制品)

最终桌面代理的原始手写收据含错误 EXE/asar hash、坏制品 hash、去重键与返回字段,已拒绝其整体 PASS。另一个未参与运行的审计者复核原始工具记录;本轮只引用支持的事实及 acceptance-audited.json:

  • packaged main SHA-256 acdb3413bf26bd0a5c65e9cb2e91b5832ba9465d93a9149b8c234bc34f470cd0;实际 EXE d1ca58a749f70038b0112a08338abd87d2a9b62940e842f1e35968f0cce1cf3e,asar 069084f4b038ff24c8817807f795ebe09038006d45f2466f4befddcb38111eca。
  • 实际归档键为 module:["accept.exact","owned-package-20261005"],重复及重启后真实响应 {total:1,new:0};首个手动 collect 的输出/插入归因未保留,不捏造。
  • 原生 Quit 的命令证据检查 EXE/Alice PID 消失,worker/guardian/runtime 收据清零,archive 仍一条。

完整矩阵与本机脱敏证据索引见 Test Plan;不上传含启动 token、密封状态或认证头差异的完整测试 home/原始日志。

第二轮当前字节补验

  • built Node:精确批准真实 worker/HTTP/归档 1、重复 new=0、批准错 ABI 激活 400 且配置/历史不变;两次正常 stop exit 0(1497/1452ms)、owner/PID 清零,重启原 hash/历史不变。真实 Guardian await/restart race 不暂缓 process.exit,无晚 spawn。
  • 新 Windows CLI ZIP e0b0195ca09528f8ad54c26c32ffda181a9fa94bda9999bc9867043cf7d57f27、EXE 34d120a7971105cd7ecef6fbb4eb77100391063a07fedd2da53ffe778bda3b7f、content identity d0e383909925461c,267/267 manifest 文件相符;正向归档 1、重复/重启 new=0、三坏制品 400/failed/unloaded且旧配置不变。8.5s 在途采集普通 down 9844ms/exit 0,预记录 PID/worker/root receipts 清零、归档保留。第一条综合脚本因 status JSON 层级误读 exit 1,后续纠正脚本 exit 0,不称第一条整脚本通过。
  • Node 60s 挂起采集触发强制边界:10074ms/exit 1、保留两 runtime lock/模块收据;恢复前记录的旧 PID 已死,随后同 home 恢复、历史/hash不变、普通 stop 1584ms/exit 0清零。切片的 ≤10s/exit 0 断言是协调者额外加的条件,不是原合同;保留探针失败事实,不改记优雅关闭通过,也不擅自改为取消采集。
  • 当前另类 Electron 实包 INCONCLUSIVE:EXE 8f9ed5dffceaa3e2bd980a880a4f16c15830f015f0d3a1308159616dd89daa1d、asar 48f944db1df3626928575848f192308da66afca4a79f25e42aaa8bb6f0e49f67,包内 Electron main/Alice main/worker/UI 均与当前输出相符。真实 app:// preload/IPC 导入/批准/启用 200、loaded、归档 1、重复/重启 new=0,批准坏 ABI 启用 400且旧配置/历史不变。原生 companion 菜单 Quit 后记录的进程/owner 清零、归档保留;不把 companion Quit 冒充 tray。Dock_64/PickerHost 截获托盘右键且前台接管失败,无法安全操作字面 tray Quit;没有关闭用户其他 app,仍缺该边界以及实际断连宽限分支,不作整体 PASS。自有包/home/端口已清理。

门禁与未完成项

  • pnpm build,root/tests/UI/desktop/guardian TypeScript:实际 exit 0。HTTP 回归 8 项、IPC 清理/断连后备 2 项、RSS 配置 8 项通过。
  • 第一轮恢复 Electron 后的完整 pnpm test exit 1:914 文件,5 失败/900 通过/9 跳过;7844 测试,5 失败/7687 通过/152 跳过。随后不可变 975538b9 独立全仓门禁 exit 1:914 文件,6 失败/899 通过/9 跳过;7844 测试,6 失败/7686 通过/152 跳过。新增 port-probe 为 63ms 的“no free port in range 55375..55378”,不是超时(原代理将相邻 headless 超时错归,已由独立原日志分诊纠正);测试直接导入未改动 probe,无直接新闻关闭调用路径,仍不能排除并发端口争用或称基线。其余五失败涉及 CLI Windows 路径、Anthropic bearer 多认证头、client-update discovery null、headless watchdog、Workspace 模型发现 Windows 路径。未做干净 dev 对照,不称全绿,不扩大范围外修复。
  • 第二轮先前冻结 gate exit 1 的 20 失败中,14 项 suite 注册错误由本轮引入并修复,选择器四文件 34 项通过。最终独立 pnpm test exit 1:917 文件 5 失败/903 通过/9 跳过;7855 测试 5 失败/7698 通过/152 跳过。新增关闭测试无失败;剩余五类与第一轮对应,但未对照干净 dev,不能称基线/全绿。本次没有此前 installer/port-probe 报错,不称已经修复。五项 tsc/diff checks 通过;所有 core/tests/build fingerprints 前后相同。
  • 本地 Electron installer 在已安装 Node 26 的 ZIP 流上曾 exit 0 但没有 binary/path.txt;用已有 Node 24 运行同一 pinned 官方 installer 恢复,独立消费者 3 项通过。未改全局 Node、版本、锁文件或系统工具链。
  • 要求的 cargo test --workspace --no-fail-fast 已实际运行:不可变提交 gate exit 101,根目录没有 Cargo.toml,不记为通过。
  • 远程后台仍未验证:缺明确授权的隔离 Machine/home/后台入口;未连接生产路径或读取生产 secret。
  • 标准 Electron builder 仍阻塞:MSB8040,缺 Spectre 库;没有自动安装/更改本机 Visual Studio 工具链。另类实包通过不能替代标准构建。
  • worker 不是恶意代码 OS 沙箱,没有硬内存/累计磁盘配额。强制结束仍可保留 news worker 收据;CLI down 的 Guardian absent 不单独证明所有 worker 已清理。
  • 第二轮 pnpm build 与五项类型检查 exit 0;新关闭行为回归和独立实际源码/编译包/另类原生包已有上述范围证据,不再等待代理结果。完整门禁、标准包、远程及当前字面 tray 验收仍未完成。
  • 第二轮静态审查未发现所列生产路径反例,但拒绝原 Windows Desktop IPC 两项空泛证明;已替换为真实合作 IPC child 的清理/自然退出与两项 9999ms/10000ms 后备状态检查。未参与实现者独立在隔离树移除实际 IPC 请求,真实 child 3s 未退出使测试失败;grace 改 0 后两项在存活断言失败;恢复原字节三项通过。Alice close 故障注入覆盖真实进程/root lock,但无实际 worker 收据且未诱发 collector 分配后的 startup 异常,不能外推。

仅非 force 更新原 fork head 与本 Draft;不新建 PR、不合并、不发布。

@vercel

vercel Bot commented Oct 4, 2026

Copy link
Copy Markdown

@2233admin is attempting to deploy a commit to the luokerenx4's Team Team on Vercel.

A member of the Team first needs to authorize it.

@2233admin 2233admin changed the title 新闻来源管理:统一订阅编辑、RSSHub 实例配置与采集状态 新闻来源管理:可选 News Modules 与 RSSHub 密钥隔离 Oct 5, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant