# 肥鱼电台 FishFM — 开发路线 更新:2026-10-02。状态:**网易云 P3 首条真实闭环通过:已有会话恢复、近期导入 100/300 首、点播、暂停/恢复、下一首、离开面板续播、停用与重新启用暂停恢复已实测,用户确认声音正常。** 见 [P3](spikes/P3-real-loop.md)。QQ、备用来源、真实多 Session 与两小时运行仍未完成;当前是开发预览。 最新修复和社区取舍见 [U6](spikes/U6-qr-login-repair.md):type 3 社区扫码、严格状态/凭据校验、先验证后保存、原始错误保留与同二维码的有界重试。以下 U5/PHL 记录为此前阶段,不能据此把当前桌面账号再当作未登录。 当前优先在官方桌面版推进,见 [U5](spikes/U5-official-desktop.md)。修复默认内存库、Gateway 路由冲突、root hook selector、slot 位置边界和设置容器布局;后端修复经正常重启生效。下方 PHL 记录为此前验证范围,其旧会话过期和 Web 服务未启动不再是本机 desktop UI 的阻塞。 本轮增量:固定接入 `@neteasecloudmusicapienhanced/api@4.40.1`,补 UID 读取、加密来源调用、曲目元数据和阶段错误;在 DSH `shell.overlay` 注册与设置页共享 Core 的悬浮状态条,含收起抽屉、三点菜单、拖动吸附和本地显示偏好。没有新增模型工具或模型请求。离线证据见 [U3](spikes/U3-dsh-settings.md) 与 [U4](spikes/U4-quick-login.md)。真实 PHL 会话已判为过期,需用户重新扫码;QQ 仍未接入。 依赖增量:新增精确版本 `@neteasecloudmusicapienhanced/api@4.40.1`(MIT)。它带来较大的传递依赖树,版本和许可见 [第三方声明](../THIRD_PARTY_NOTICES.md)。`qrcode@1.5.4` 仍用于 Core 本地生成登录二维码 PNG Data URL。 本文件是任务顺序、状态和跨设备交接的唯一入口。产品规则见 [MVP](MVP.md),技术设计见 [架构](ARCHITECTURE.md),验证细节见 [Phase 0](PHASE_0.md),来源和取舍见 [决策记录](DECISIONS.md)。 推进原则:尽早做出一个可运行的真实播放闭环,再扩大能力。不要先把完整人格引擎写完,才第一次接入真实 DSH 和平台。技术样例先消除不确定性,正式实现再补足可靠性与交付要求。 ## 交付顺序 | 阶段 | 交付物 | 完成条件 | 状态 | |---|---|---|---| | 0 技术验证 | DSH、网易云、QQ、独立播放及 DSH 内音乐控制浮层 | 明确可用接口、失败路径、进程边界和必要降级 | 部分完成:官方桌面 DSH、独立播放、本地存储与网易云近期/音频已有实测;QQ、备用来源与完整运行边界仍待验 | | 1 最小控制核心 | 项目工具链、契约、SQLite、队列、用户命令与播放状态 | 不依赖真实账号也能验证暂停保持、旧请求取消、事件去重和恢复 | **完成**:离线核心与真实宿主 I1 均已验证 | | 2 真实播放闭环 | 网易云+DSH 真实登录与导入,再 QQ 与双平台候选 | 每个平台真实完成登录、导入、搜索、播放、暂停、恢复、下一首 | 进行中:P1/P3 网易云已通过,100 首近期歌曲与平台音频实测成功;QQ 与双平台候选仍待验,A01 未通过 | | 3 人格与 DSH 体验 | 本地偏好、探索、DSH 上下文、音乐控制 UI | 自主选歌与成长可解释;悬浮控制与主面板共用 Core | 进行中:**T1/T2/T3 离线完成**;I1 保持原宿主验证范围;U2 主面板与悬浮条代码完成、离线交互测试通过,真实 PHL 视觉验收待实例启动 | | 4 验收与交付 | 本地安装产物、使用说明、已知限制、验收记录 | MVP 所有验收项完成,包括两小时零新增 LLM 请求 | **进行中**:R1 离线完成;R2 测量工具就绪(P3 前置已通过,两小时真跑待计数接线);R3 `npm ci` 与全部离线命令实测;R4 [交付说明](DELIVERY.md) 已写。**10 条验收中 0 条完全通过** | Phase 0 的样例用于验证关键路径;后续阶段将已经验证的路径整理为正式实现。单个样例成功不等于该模块完成。 ## 任务拆分与依赖 表中的 A01~A10 对应 [MVP 验收清单](MVP.md)。完成后在本表标注状态和证据链接,不另建一份重复进度表。 ### Phase 0:先确认可以怎么实现 执行顺序:P0-01 DSH → P0-04 播放宿主基础 → P0-02 网易云 → P0-03 QQ → 补齐 P0-04 真实平台生命周期实验 → P0-05 DSH Web UI → P0-06 数据 → P0-07 运行边界。 P0-04 先用自有或可合法使用的短音频测试进程生命周期,再用平台音频复测;避免“等 Provider 才能测播放器、等播放器才能测 Provider”的循环依赖。P0-02/03 可以先记录接口结果,真实声音验证仍依赖播放宿主。 每个实验只回答 [Phase 0 清单](PHASE_0.md) 中的问题。近期记录接口一轮验证失败后,先证明收藏/歌单 fallback 可用;除非新证据表明可行,不重复投入同一路径。登录、真实播放或 DSH 接入失败则保留阻塞状态。 阶段结论必须明确:实际 DSH 版本、事件与命令入口、Core/Playback 的宿主、静音进度方案、IPC、凭据存储、数据库、语言/包管理器及必要原生工具链。原型能证明接口后,才固化这些选择。 ### Phase 1:建立可验证的最小控制核心 | 任务 | 前置条件 | 交付物与完成条件 | 验收关联 | 状态 | |---|---|---|---|---| | F1 工程基础 | Phase 0 的宿主与工具链结论 | 只创建需要的包;锁定依赖;提供真实可执行的安装、检查、测试和构建命令;CI 不需要音乐账号 | 后续共同基础 | 进行中:`package-lock.json`、[CI](../.github/workflows/core.yml) 与命令已实跑;隔离 DSH/Core、可重连播放进程、桌面宿主版本/运行时/子进程约定/事件与命令入口/安装路径已实测,见 [P0-01 桌面核对](spikes/P0-01-dsh.md);`check`/`test`/`build` 已在宿主 payload Node 24.21.0 与 Electron-as-node 24.18.1 上跑通(各 14 项通过);CI 在 `f17a5da` 上运行 `#36307587300` 成功;`check` 已改为递归遍历以覆盖后续子目录;desktop 实时激活与平台音频未验 | | F2 内部契约与替身 | F1 | Track key、账号/能力状态、命令、快照、错误、播放事件;可控时钟与假 Provider/Playback 能模拟慢请求、失败和重复事件 | A03/A04/A08/A10 | 离线完成:[契约](CORE_CONTRACT.md)、[替身](../src/fakes.mjs)、[测试](../test/core.test.mjs);真实适配待验 | | F3 持久化 | F2、P0-06 | 首版迁移、设置/约束/历史存储、凭据引用;重启恢复为暂停;历史去重与更新采用事务 | A06/A10 | 离线完成:[存储](../src/storage.mjs)、[P0-06 局部证据](spikes/P0-06-local-data.md);合成与真实网易云 DPAPI/账号已测,见 U6/P3 | | F4 播放协调与命令 | F2/F3 | 单一队列、两个开关、模式、暂停保持、命令版本、取消与有限重试;晚到结果不能覆盖用户命令 | A03/A04/A08/A10 | 离线完成:[Core](../src/core.mjs)、[14 项测试](../test/core.test.mjs);真实播放待验 | 离线证据(2026-09-27):实现提交 [`87761e2`](https://github.com/A7m0spHere/dsh-feiyuFM/commit/87761e22ccd0ed96bf6094c62b8aac289a53974c) 已推送 `codex/phase1-core`;本机 `npm ci --ignore-scripts --no-audit --no-fund`、`npm run check`、`npm test`(14 项通过)、`npm run build` 均通过;[Windows CI](https://github.com/A7m0spHere/dsh-feiyuFM/actions/runs/36297664836) 完成且成功。仍不能把这些离线结果当成真实 DSH、平台或音频验收。 这一阶段只做最小顺序选歌或固定候选,不实现完整 Taste 算法。提供调试入口和状态输出即可,不投入桌面 UI 壳。 ### Phase 2:尽早让真实音乐跑起来 | 任务 | 前置条件 | 交付物与完成条件 | 验收关联 | 状态 | |---|---|---|---|---| | P1 独立 Playback | F4、P0-04 | 真实音频后端接入统一契约;暂停/静音/结束/错误可观察;退出 UI 后继续播放;插件停用后停止 | A03/A07/A08/A10 | **离线与真实音频均通过**:`src/playback/`(协议 v1 + 命名管道 + WPF 宿主 + 契约适配);`npm test` 27 项全过(含 13 项播放),`npm run smoke:playback` 真实 WAV 14/14,见 [P1 证据](spikes/P1-playback.md);平台音频资源仍待 P2/P4 | | P2 网易云适配器 | F2/F3、P0-02 | 登录/恢复/退出、带来源导入、搜索、资源解析、过期与推荐能力状态;通过同一契约检查 | A01/A02 | 离线实现完成 + 社区 Node API `4.40.1` 已接入;UID 恢复、三来源回退、曲目转换和 DPAPI 隔离有专项测试。真实 `login_status` 已请求并确认 PHL“2”旧会话过期;近期/搜索/音频已有 P3 实测;喜欢/歌单备用来源与推荐仍待验 | | P3 首条真实闭环 | P1/P2、F4、P0-01 | 通过真实 DSH 控制入口完成“登录→导入→点歌→暂停→恢复→下一首→停用”;记录无 UI 下的可复现操作 | A01/A03/A04/A08 | **通过(网易云)**:10-02 已有会话恢复、近期导入 100/300 首、界面点播/暂停/恢复/换曲、离开面板续播、停用清理和重新启用暂停恢复;用户确认真实声音,见 [P3](spikes/P3-real-loop.md) | | P4 QQ 适配器 | P3、P0-03 | 使用相同 Core/Playback 完成 QQ 闭环;明确近期/fallback 来源,验证账号过期和权限失败 | A01/A02 | 离线部分完成:[共享状态机](../src/providers/platform.mjs) + [QQ 适配器](../src/providers/qq.mjs),9 项测试含"近期失败只降级来源、不撤销 QQ";**未与真实 QQ 通信过**,见 [P4/P5 证据](spikes/P4-P5-platforms.md) | | P5 双平台协调 | P4 | 切换平台不会混用账号或曲目 ID;单个平台失败不破坏另一个;错误、空结果与数量不足有明确展示 | A01/A02/A04 | 离线完成:[协调器](../src/providers/coordinator.mjs),9 项测试(按本平台解析、空池必附原因、部分降级);真实双平台待 QQ P4 | **第一个可运行成果是 P3:** 用户能在自己的 DSH 环境中导入并控制网易云真实播放。当前真实账号会话失效,尚无可用曲目;P4 完成前不把单平台成果称为双平台 MVP。 P2 和 P4 都必须使用同一组规范化契约检查;真实账号检查与离线 CI 分开,不让 CI 依赖私人 Cookie、短期播放地址或平台在线状态。 ### Phase 3:补齐音乐人格与桌面体验 | 任务 | 前置条件 | 交付物与完成条件 | 验收关联 | 状态 | |---|---|---|---|---| | T1 环境与初始人格 | P5、F3 | 导入批次、来源与去重;独立用户环境/Agent 偏好;固定种子初始化;重启不重新随机生成 | A02/A06 | 离线完成:[迁移 v2](../src/storage.mjs)、[环境](../src/environment.mjs)、[人格](../src/taste.mjs)、12 项测试,见 [T1 证据](spikes/T1-environment.md);真实账号导入数据待 P2/P4 | | T2 选歌与决策门控 | T1、F4 | 探索率、禁播过滤、重复惩罚、候选回退、冷却和暂时不听;无候选时等待而非循环请求 | A04/A05 | 离线完成:[选歌](../src/selection.mjs)、[Core 装配](../src/core.mjs)、12 项选歌测试(含固定种子序列),见 [T2 证据](spikes/T2-selection.md);发现池待 P2/P4 才有内容 | | T3 经历与成长 | T2、P1 | 明确有效进度阈值与有界更新参数;静音/可听/手动播放区分;受控轨迹证明非复制且不会无限自我强化 | A06/A10 | 离线完成:[成长策略](../src/growth.mjs)、Core `onListened` 钩子、9 项测试(含 200 次收听收敛与双种子轨迹),见 [T3 证据](spikes/T3-growth.md);真实时长与衰减调度未接 | | I1 DSH 完整适配 | P3、T2 | 真实事件映射、用户音乐工具/命令、活动 Session 与退出清理;不增加背景模型请求或逐轮状态注入 | A04/A08/A09 | 进行中:旧隔离宿主工具/命令已验;官方 desktop rc.2 安装、激活、Core 进程与停用清理已验,见 [U5](spikes/U5-official-desktop.md)。该版本真实工具/斜杠命令、会话事件与优先级仍待验 | | U1 UI 状态桥接与窗口契约 | P5、P0-05 | IPC 快照/版本/重连、窗口/面板显示状态;桥接故障不改变 Core 状态 | A07/A08 | **离线部分完成**:[桥接](../src/ui/bridge.mjs) + [窗口位置](../src/ui/window-state.mjs) + [真实 IPC 传输](../src/ui/ipc.mjs)(回环限定、令牌认证、退出通知,26 项测试含真 socket 端到端),见 [U1 证据](spikes/U1-bridge.md);独立原生桌面窗不在当前 UI 方案内 | | U2 DSH 内悬浮音乐条与设置面板 | U1、T3、I1 | 显示曲目状态与播放控制;隐藏、重显、拖动、吸边;模式/设置共用 Core;错误与登录状态可操作 | A02/A03/A05/A07 | **代码、离线及桌面基础交互完成**:官方 desktop rc.2 主面板/设置窗口、RPC 设置保存/恢复、浮层抽屉/菜单/隐藏恢复和吸边已验,见 [U5](spikes/U5-official-desktop.md);主题/窄窗口/完整键盘和平台播放中状态未验 | 人格与窗口可以在契约稳定后分别推进;共享的 Core 状态定义由同一工作流维护。此处是任务依赖安排,不要求创建多个 Agent。 U2 只在 DSH 页面实现状态浮层,不创建独立桌面窗、桌宠角色或宠物包。浮层和面板走同一 Core;当前以本机官方 desktop rc.2 继续真实验收,PHL 可单独复测。 ### Phase 4:稳定性与可安装交付 | 任务 | 前置条件 | 交付物与完成条件 | 验收关联 | 状态 | |---|---|---|---|---| | R1 故障与资源检查 | Phase 3 | 网络断开、登录过期、URL 过期、播放失败、重复结束通知、暂停、睡眠/恢复、UI/Playback 异常、多 Session;记录空闲/播放/隐藏时资源基线并处理持续增长 | A03/A04/A07/A08/A10 | **离线完成 9 项**:[故障测试](../test/faults.test.mjs),见 [R1 证据](spikes/R1-faults.md);抓到 3 个真实缺陷(坏歌永久卡死、过期重解析可无限重试、未知过期被当已过期);真实断网/睡眠与进程资源曲线待 R2/R3 | | R2 两小时运行 | R1 | 正常 DSH 工作与自动听歌连续两小时;分别记录 DSH 正常模型请求和音乐额外请求,后者为 0;验证无持续音乐上下文注入 | A09,并复核 A05/A06/A10 | **测量与加速跑就绪**:`npm run soak`(`src/runtime/recorder.mjs` 请求计数 + 提示面注册计数 + 资源采样 + 趋势判定,8 项测试),见 [R2 证据](spikes/R2-soak.md);**两小时真实运行与 DSH 侧请求对照未做**(P3 前置已通过,待 DSH 侧计数接线) | | R3 安装与跨设备复现 | R1 | 在干净的 Windows 环境安装本地构建产物;验证依赖、路径、启动、停用、重新登录与数据保留/清理;另一设备能按文档构建 | A01/A07/A08 | **部分完成**:`npm run verify:lifecycle` **14/14**;本轮 `npm ci` 从锁文件安装 287 包,check/test/build 全部实跑,见 [交付说明](DELIVERY.md);**干净系统安装与第二台设备构建未做**(需真机) | | R4 v0.1 交付 | R2/R3、A01~A10 全部有结果 | 使用说明、构建产物、版本/支持范围、已知限制、代码与素材归属说明;仓库文档与实际命令一致 | 全部 | **部分完成**:[交付说明](DELIVERY.md) 已写(支持范围、命令实测结果、已知限制、归属);README 状态已按现实更正;`.gitignore` 补上音频/凭据/登录产物;`npm run audit:acceptance` **10/10** 验收项证据齐备、0 处失效链接(含反向自测);**v0.1 交付前提不满足**(R2/R3 未完成、A01–A10 无一完全通过) | 发布许可证、npm 包名和公开 Release 的方式在准备发布时确定;当前路线不选择许可证,也不提前发布空插件。跨设备协同开发同步源码和文档,不同步账号凭据或个人音乐数据库。 ## 关键依赖与推进边界 ```text Phase 0 关键结论 → F1 → F2 → F3 → F4 → P1/P2 → P3 网易云首条真实闭环 → P4 QQ → P5 双平台协调 → T1 → T2 → T3 人格成长 └→ I1 DSH 完整适配 P5 → U1 → U2 完整桌面体验(同时依赖 T3/I1) → R1 → R2/R3 → R4 ``` 可以在部分实验等待账号授权时推进无依赖的契约或离线样例,但阶段仍保留未完成状态。任何生产实现所依赖的关键技术结论未通过时,不先写死对应 SDK、IPC 或播放后端。 不按未经验证的工期承诺完成日期。Phase 0 结束后根据实际接口和打包结果再估算;每个任务控制为一个可独立验证、可审查的改动,过大时拆子任务而不扩大范围。 ## 验证策略 | 层次 | 要验证的风险 | 执行时机 | |---|---|---| | 本地规则测试 | 暂停被撤销、旧请求覆盖、重复累计、探索/禁播失效 | F2 起;修改相关行为时执行 | | 契约与存储集成 | 平台结果不一致、事务/迁移失效、IPC 重连状态倒退 | 对应适配器、持久化和桥接实现时 | | 真实账号与音频检查 | 可登录但不能播放、权限/URL 失效、降级来源误报 | P3/P4 及对应接口变动时 | | 桌面与宿主检查 | UI 退出带走音频、DPI/多屏位置丢失、DSH 阻塞 | U1/U2、R1/R3 | | 持续运行 | 音乐新增 LLM 请求、资源持续增长、历史失真 | R2;影响上述结果的后续修复需要重新验证 | 不为静态文档或简单可逆改动堆测试。固定种子可验证选择轨迹,不能用少量抽样结果要求探索比例恰好等于设置值。文档中的参数仍待调,首次实现时记录数值、理由和验证数据。 ## 跨设备交接与任务完成定义 每次接续先看本文件的任务状态和前置条件,再读取关联规格。2026-10-02 用户指定后续日常开发直接在 `main` 进行;同一任务在两台设备之间串行交接。 每项任务完成时:更新状态,附实现 commit/PR、实际运行命令、结果和剩余限制;如有行为或接口变更,同步 MVP/架构/决策记录。形成独立提交并推送 `main` 后,另一设备才能接续。保持 `main` 可检查、可复现;未完成的产品验收继续明确列为未完成。 当前交接信息: | 项目 | 当前值 | |---|---| | 已完成(离线实现 + 离线验证) | 命名、公开仓库、MVP 与路线文档;Phase 1 契约/存储/命令/替身与 Core;**P1 独立 Playback(离线 13 项 + 真实音频 14/14)**;**I1 DSH 适配层(真实宿主激活、拥有 Core 进程、停用即停)**;**T1 环境与初始人格**;**T2 选歌与决策门控**;**T3 经历与成长**;**P2 网易云适配器(离线)**;**P4 QQ 适配器(离线)**;**P5 双平台协调**;**真实 HTTP transport 与 Provider 接入 Core/Host** | | 进行中实现 | 无(可离线完成的实现任务已做完,见下方完成度总表) | | 下一项 | **P4 QQ 真实接口与闭环**;同时补网易云喜欢/歌单 fallback、UI 与真实会话验证 | | 首个可运行目标 | **已达成**:网易云 P3,见 [实测](spikes/P3-real-loop.md) | | 当前未验证 | QQ、网易云备用来源/推荐/权限与 URL 过期;主题/窄窗口/完整键盘;真实工具/斜杠命令、多 Session 与两小时运行 | | 需要用户参与的节点 | QQ 真实授权与后续声音核对;网易云本轮无需重扫 | ## 完成度总表 三轮收尾(Phase 2/3/4)后的真实状态。**"离线完成"不等于"可用"**:凡未经真实账号、真实音频或真实桌面验证的,一律单列。 | 任务 | 离线实现 | 离线验证 | 真实环境验证 | 说明 | |---|---|---|---|---| | F1 DSH 接口探测 | ✅ | ✅ | ✅ 隔离宿主 | desktop profile 的 Plugin Manager 安装仍需用户操作 | | F2 内部契约与替身 | ✅ | ✅ 测试 | — | — | | F3 SQLite 存储与迁移 | ✅ | ✅ 测试(含 v1→v2 真实升级) | ✅ 真实文件库 | — | | F4 播放协调与命令 | ✅ | ✅ 测试 | ⚠️ 部分 | 真实音频由 P1 覆盖;多 Session 并发未验 | | **P1 独立 Playback** | ✅ | ✅ 13 项测试 | ✅ **真实音频 14/14** | 用本地 WAV,非平台音频 | | P2 网易云适配器 | ✅ | ✅ 离线契约 + 社区 API 调用夹具 | ⚠️ 部分通过 | 登录/恢复、近期导入、搜索、真实音频已验;喜欢/歌单 fallback、推荐与权限失败仍待验,见 P3 | | **P3 首条真实闭环** | ✅ | ✅ | ✅ 网易云 | 真实近期导入 100 首、点播/暂停/恢复/下一首/停用及重启恢复通过;用户确认声音,见 [P3](spikes/P3-real-loop.md)。双平台 A01 仍未通过 | | P4 QQ 适配器 | ✅ | ✅ 9 项测试 | ❌ **从未通信** | 接口形状未确认 | | P5 双平台协调 | ✅ | ✅ 9 项测试 | ❌ | 网易云 P3 已通过,等待 QQ P4 | | T1 环境与初始人格 | ✅ | ✅ 12 项测试 | ⚠️ 部分 | P3 真正导入 100 首并生成 184 条偏好行,重启保留;完整成长对照仍待验 | | T2 选歌与决策门控 | ✅ | ✅ 12 项测试 | ❌ | 发现池在接入前恒为空 | | T3 经历与成长 | ✅ | ✅ 9 项测试 | ❌ | 真实时长/进度未验;衰减已接入宿主定时维护;会话加权与上限见 A08 | | I1 DSH 完整适配 | ✅ | ✅ 离线测试 | ⚠️ 部分 | 官方 desktop rc.2 安装/激活/Core/停用清理已实测;真实工具/斜杠命令与会话事件仍未验,见 [U5](spikes/U5-official-desktop.md) | | P0-05 DSH UI 宿主 | ✅ 页面宿主 | ✅ overlay API 与组件 | ⚠️ 部分 | 官方 desktop 主面板/设置窗口与浮层基础交互已验;主题、窄窗口、完整键盘未验;没有独立原生窗范围 | | U1 状态桥接 | ⚠️ 桥接/位置/IPC 传输离线完成 | ✅ 26 项测试 | ❌ | Core/UI 故障隔离已测;不再以多屏 DPI 原生窗作为 A07 前置 | | U2 DSH 内悬浮音乐条 | ✅ | ✅ overlay/命令/菜单/错误状态离线测试 | ⚠️ 基础通过 | 官方 desktop rc.2 主面板/设置窗口、图片、抽屉/菜单、隐藏恢复、拖动吸边和位置恢复已验,见 U5;播放中状态/主题/窄窗口/完整键盘未验 | | **R1 故障与资源** | ✅ | ✅ 9 项测试 | ❌ | 真实断网/睡眠与进程资源曲线待 R2 | | R2 两小时运行 | ⚠️ 工具就绪 | ✅ 8 项测试 + 加速跑 | ❌ | P3 已通过,可准备两小时真跑与 DSH 侧请求对照 | | R3 安装与跨设备 | ⚠️ 部分 | ✅ 生命周期 14/14 + 离线命令实测 | ❌ | 干净系统与第二台设备未验 | | R4 v0.1 交付 | ⚠️ 部分 | — | ❌ | 交付说明已写;v0.1 前提(R2/R3、A01–A10)不满足 | 当前测试合计:**243 项**。2026-10-02 Node 24.14.0 限制并发后全量通过;69 模块检查、构建与调试冒烟通过;证据审计 10/10、0 失效链接。本轮未重新安装依赖。此前 10-01 桌面 Electron-as-node 240/240 为历史基线。 ## 验收清单状态(A01–A10,对应 [MVP 第 6 节](MVP.md)) | 条目 | 状态 | 依据与缺口 | |---|---|---| | A01 两平台登录/搜索/真实播放 | **未通过** | 网易云 P3 通过,搜索由独立生产 Provider 探针验证;QQ 未真实接入,因此完整双平台 A01 仍未通过,见 [P3](spikes/P3-real-loop.md) | | A02 导入数量与降级如实展示 | **离线通过 + 网易云局部实测** | 近期来源 100/300 首数量不足已如实展示;备用来源、空结果与 QQ 仍待实测,见 P3 | | A03 两开关四组合/四模式/暂停保持/到期约束 | **离线通过** | Core 测试覆盖;真实设备行为未验 | | A04 用户优先、禁播与暂停不被覆盖 | **离线通过** | 含慢请求、重复事件、命令冲突轨迹;真实会话事件未验 | | A05 熟悉池/探索率 0-20-100/候选为空/重复惩罚 | **离线通过** | 固定种子选择序列在两条独立库上一致;发现池内容待 P2/P4 推荐接口 | | A06 环境与偏好分离、重启保留、Session 不覆盖长期偏好 | **离线通过** | 固定种子 + 重启逐条比对;**Session 影响已实现为加权 + 每会话上限**(自记于 `session_influence`,经重启有效,见 [A08 证据](spikes/A08-sessions.md)) | | A07 DSH 内音乐控制悬浮条 | **部分完成** | U5 主面板/设置窗口、浮层基础交互通过;P3 点播/暂停/恢复/换曲与离开面板(浮层隐藏)继续音频通过;深色/窄窗口/完整键盘与播放中浮层控制仍待验 | | A08 多 Session 不抢占播放 | **部分通过** | 插件停用停止音乐、宿主继续服务已在真实宿主验证;**多 Session 判定已实现**(三道闸门 + 活动会话 + 有界注册表,8 项测试,见 [A08 证据](spikes/A08-sessions.md));真实多会话并发与真实 session 标识字段未验 | | A09 两小时自动听歌、新增 LLM 请求为 0 | **未通过** | 事件门控与零注入已实现;**请求计数与提示面计数已可测**(加速跑实测 0 模型请求 / 1 次提示面注册);**两小时真实运行与 DSH 侧对照未做** | | A10 静音/暂停/失败/重启不伪增 | **离线通过** | 播放侧与成长侧均有专门测试;真实进程重启的长时间行为未验 | **结论:10 条验收中 0 条完全通过。** 离线通过 6 条(A02–A06、A10),部分通过 2 条(A07、A08),未通过 2 条(A01、A09)。任何一条都不会因为文档补齐而变成通过。 ## 解锁剩余工作所需的输入 | 剩余任务 | 需要什么 | 谁来做 | |---|---|---| | P4 QQ 首条真实闭环 | 核实端点后准备扫码,核对真实音频 | Codex 准备具体入口,再由用户授权与声音核对 | | P2 备用来源与权限验证 | 已有网易云会话,实际备用来源响应 | Codex 按真实响应校正;会话失效时才需要用户重扫 | | P0-05 / U2 | 官方桌面版已运行并完成基础交互;补充主题、窄窗口、键盘及播放中状态 | Codex 继续验证,真实账号由用户确认 | | R2 两小时运行 | 一个长驻运行环境 + 真实播放 + DSH 侧请求计数入口 | P3 前置已满足,Codex 准备计数与运行方案 | | R3/R4 安装与跨设备 | 真实安装路径与第二台设备 | 用户参与 | ## 紧接着要做的工作 1. **P4 QQ 真实接入**:核实登录/音乐读取/音频解析,再走与网易云相同的闭环;不删除 QQ 范围。 2. 网易云近期来源与音频已通过,补充喜欢/歌单 fallback、推荐、版权限制及 URL 过期验证。 3. 本机桌面版基础鼠标交互已验证,补充深色主题、窄窗口、键盘焦点及播放中的状态同步。 4. 补齐 A08 的多 Session 抢占判定与 A09 的请求计数实测(R2)。 当前没有需要用户重新决定的产品范围。账号授权等验证所需输入,在实验准备就绪时再提出;不得把未登录或未执行的项目标成通过。 ## 阶段内降级与发布边界 - 近期记录不足:使用平台收藏、用户歌单或插件已有历史补足,展示真实来源与数量;不足 200 首仍可运行,不伪造记录。 - 某平台的推荐不可用:退回熟悉池,记录本次没有发生探索。 - UI 暂时不可用:允许继续验证 Core 和播放服务;不代表 DSH 内悬浮条的 A07 已通过。 - QQ 登录/搜索/真实播放无法通过:可以交付技术进展,不能称为双平台 MVP 完成。 - Windows 为首轮验证环境;其他系统尚未承诺兼容,待验证后再记录支持范围。