Skip to content

FNOS-009 测试用例 ​

字段内容
需求编号FNOS-009
关联需求FNOS-009 DSH 0.2.0-rc.2 插件适配
关联计划PLAN-FNOS-009 DSH 0.2.0-rc.2 插件适配
测试状态通过

测试范围与需求分析 ​

覆盖 功能列表 中 FNOS-009-01 至 FNOS-009-14 全部功能:

关键风险点:受控 value 与 Semi TreeSelect 内部状态的同步边界;fnOS SDK 授权接口在不同宿主(iframe/独立浏览器/扩展桥)上的行为差异。

❓ 待确认:@trimjs/web-app 授权接口在真实 NAS Flutter 壳上的返回形态(FNOS-009-10 执行前确认)。

测试环境 ​

目标环境按 需求的验收环境范围 划分;执行方式遵循测试环境执行方式:fnOS 插件走真实 NAS,其他插件统一在 pnpm run start -- --web 启动的本地 DSH Web(DSH_HOME 指向仓库 .dsh)中执行。

功能目标环境执行方式
01、03、04、05、07DSH Web、DSH DesktopWeb:pnpm run start -- --web(DSH_HOME=<repo>/.dsh);Desktop:客户端内加载插件走查;两者均需覆盖
02、06(fnOS 部分)、09、10DSH Web + 真实 fnOS NASWeb 部分:pnpm run start -- --web;fnOS 桥接部分:真实 NAS 部署执行
06(其他)、08DSH Web/Desktop、文档站构建环境Web 走查 + pnpm run build -- --docs
11真实 fnOS NAS选择树依赖 fnOS 宿主桥接的目录树,属 fnOS 插件功能,只记 NAS 结果
12真实 fnOS NAS(安装回调链路);本地 shell 分支断言NAS 部署执行;分支断言走 packages/fnos-gateway 本地测试

测试用例 ​

FNOS-009-11 插入 NAS 引用的父子选择解耦 ​

实现与核实背景见 PLAN-FNOS-009 阶段六。

根因(已在 DSH 源码核实):原实现用 inputActions.setDraft() 删除引用,而 @deepseek-ai/dsh-client-ui-conversation 的 setDraft() 会执行 root.clear() 后按纯文本重建 整个编辑器文档——所有引用 chip 都会被销毁,因此取消父目录会连带清掉子项的引用。 修复改为 inputActions.insertText('', span) 只替换目标 chip 自身的原子跨度,其余 chip 的节点与 occurrenceId 保持不变。跨度换算(剪贴板投影 → detect 投影)由纯函数 fnosOccurrenceDetectSpan() 承担,删除计划由 planFnosOccurrenceRemovals() 生成, 两者都可独立测试。

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-001FNOS-009-11取消父目录保留已选子项AC-01输入框无引用1.打开「插入 NAS 文件或目录」选择树 2.展开一个授权目录 3.勾选父目录与其下一个子项 4.确认子项引用已插入 5.取消父目录勾选父目录引用被移除,子项引用保留且子项仍处于选中状态P0
TC-002FNOS-009-11先选子项后取消父目录AC-02输入框无引用1.打开选择树 2.先只勾选子项 3.再勾选父目录 4.取消父目录子项引用保留、选中状态不变,仅父目录引用移除P1
TC-003FNOS-009-11取消子项不影响父目录AC-03父目录与子项均已选中1.打开选择树 2.取消子项勾选子项引用移除,父目录引用与选中状态保持P1
TC-004FNOS-009-11解耦后重复勾选一致AC-01TC-001 执行完成1.重新勾选已取消的父目录 2.再次取消每次操作只影响父目录自身,子项始终保留P2
TC-005FNOS-009-11深层父子链解耦AC-01存在三层目录1.勾选第一层与第三层 2.取消第一层第三层引用保留,仅第一层移除P2

FNOS-009-12 插件安装不受新发布阻断 ​

实现与验证见 PLAN-FNOS-009 阶段七。

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-006FNOS-009-12自有插件新版首次安装放行AC-01自有插件未安装1.在 NAS 上安装应用 2.观察插件安装阶段日志自有插件按清单版本安装成功,不出现发布日期拒绝导致的失败消息P0
TC-007FNOS-009-12自有插件从旧版升级放行AC-01已安装旧版自有插件1.升级应用到含新插件版本的 FPK 2.观察插件安装阶段日志旧版收敛到清单版本且安装成功,不因新版发布日期过近中断P0
TC-008FNOS-009-12历史同包名残留场景AC-01profile 内存在同名旧版本的历史放行记录1.安装应用并触发多插件依次安装 2.观察是否出现列表条目校验失败多个插件连续安装全部成功,无「lockfile 校验失败」类报错P0
TC-009FNOS-009-12失败原因可诊断AC-02可构造插件安装失败的场景1.令某插件安装失败 2.查看安装回调日志与向导提示失败以非零退出并给出具体原因,不提示用户手动解除发布日期限制或清理缓存P1
TC-010FNOS-009-12手动安装默认策略不变AC-03应用已安装1.在插件市场或 DSH 插件管理中手动安装一个刚发布的插件手动安装入口的默认安全策略未被放宽,行为与应用安装回调内的处理相互独立P1
TC-011FNOS-009-12归档替换路径不回归AC-01存在 FPK 内置插件归档1.以含 bundled-dsh-plugins 归档的 FPK 安装/升级归档替换仍走先移除后添加,与清单版本收敛一致,无新增失败P1
TC-012FNOS-009-12同版本重复安装幂等AC-01自有插件版本已与清单一致1.再次安装同版本 FPK 2.观察插件阶段日志版本一致时跳过安装且不报错,不产生重复安装副作用P2
TC-013FNOS-009-12三方插件放行不回归AC-01三方插件未安装或版本不一致1.安装/升级应用 2.观察三方插件安装日志三方插件安装与版本收敛保持既有放行行为,未被本次改动破坏P2

FNOS-009-13 node-pty 免编译安装与跨平台构建 ​

实现与验证见 PLAN-FNOS-009 阶段八。

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-035FNOS-009-10刷新列表不弹授权框AC-05已授权若干目录1.反复进入详情页与点「刷新」 2.观察是否出现「申请访问以下文件」弹框全程无授权确认弹框;客户端可执行代码不含 authorizeSharedFile/authorizeUserFileP0
TC-036FNOS-009-10明确失效才剔除AC-06一组目录分别为有效/明确失效/无法判定1.加载列表仅 valid === false 的被剔除并回写持久化;undefined 的保留并提示降级P0
TC-024FNOS-009-13无 g++ 环境安装成功AC-01NAS 上不存在 g++/gcc1.在 NAS 上安装 FPK 2.查看安装日志安装成功,日志不出现编译器缺失导致的失败;node-pty 走包内预编译产物P0
TC-025FNOS-009-13侧边栏终端可用AC-01应用已按上一用例安装1.打开应用侧边栏终端 2.执行一条命令PTY 正常创建,命令输出可见,无原生模块加载错误P0
TC-026FNOS-009-13预编译缺失时报可诊断错误AC-01node-pty 包内缺少当前平台预编译目录1.执行安装回调的 node-pty 准备以非零退出并指出缺失的平台目录,不尝试静默编译P1
TC-027FNOS-009-13上游移除依赖时跳过AC-02依赖树中不存在 node-pty1.执行安装回调的 node-pty 准备记录「上游不再依赖 node-pty」并正常结束,不报错P1
TC-028FNOS-009-13macOS 可构建可用 FPKAC-03macOS 构建机,无 Linux 容器1.执行 build --fpk --app fn-deepseek-harness --skip-bundle-dsh-plugins构建成功,无平台限制报错;FPK 内不含 node-pty 原生产物与版本文件P0
TC-029FNOS-009-13安装沿用 .npmrc 镜像源AC-04向导中配置了自定义 npm 镜像源1.安装应用 2.检查安装回调的 npm 调用使用 .npmrc 中的源;命令中无 --registry,也未新增额外包下载P1
TC-030FNOS-009-13其他依赖脚本仍执行AC-05依赖树含多个带 install 脚本的包1.安装应用 2.检查 node-pty 与其他包的脚本执行情况node-pty 的 install 脚本被临时替换且执行后恢复原清单;其他依赖的 install 脚本正常执行P1

FNOS-009-14 三方插件版本随 DSH 基线同步 ​

实现与验证见 PLAN-FNOS-009 阶段九。

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-031FNOS-009-14三方插件版本覆盖新基线AC-01清单内三方插件版本已随 DSH 基线更新1.查询该版本的 peerDependencies 2.核对是否含当前 DSH 版本peer 范围覆盖当前基线,不需要精确版本豁免P0
TC-032FNOS-009-14真机安装最后一步通过AC-01无 g++ 的 NAS1.安装 FPK 2.观察三方插件安装阶段三方插件安装成功,安装日志无 installation rejected 与兼容门禁报错P0
TC-033FNOS-009-14不默认放宽门禁AC-02存在被门禁拒绝的插件版本1.安装该版本 2.观察处理方式被明确拒绝并给出解法;未默认授予精确版本豁免P1
TC-034FNOS-009-14规范含核对步骤AC-03无1.查阅 docs/build/versioning.md包含查询命令、选择准则、真机验证要求与豁免例外条件P2

FNOS-009-09 授权目录列表持久化 ​

实现与核实背景见 PLAN-FNOS-009 阶段五。

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-014FNOS-009-09老用户升级后字段缺省安全AC-01settings 中无 authorizedDirectories1.以空 settings 构造 schema 2.读取该字段校验通过且解引用为空数组,不抛错P0
TC-015FNOS-009-09持久化写入去重保序AC-01传入含重复项的路径列表1.调用写入 2.读取返回值重复项合并、首次出现顺序保留,写入指定命名空间P1
TC-016FNOS-009-09持久化列表优先展示AC-02持久化有目录、实时查询为空1.以空实时列表加载持久化目录仍出现在展示列表中P0
TC-017FNOS-009-09写入失败不影响当前会话AC-03写入接口返回错误1.触发持久化写入失败 2.观察页面只记日志、页面不报错,既有数据不被清空P1

FNOS-009-10 持久化目录权限校验与剔除 ​

用例ID功能点测试标题关联验收前置条件测试步骤预期结果优先级
TC-018FNOS-009-10共享接口通过即保留AC-01持久化含一个共享目录1.查询接口返回包含该路径 2.加载列表该项保留;全程无授权确认弹框P0
TC-019FNOS-009-10用户目录经用户查询接口保留AC-01用户授权目录不在共享集合中1.共享集合不含该路径、用户集合含该路径 2.加载列表该项判定为有效并保留(两个集合取并集)P1
TC-020FNOS-009-10两个接口都拒绝则剔除AC-02两个接口都返回 ok=false1.执行校验 2.观察剔除清单该项进入剔除清单并从展示移除,同步回写持久化P0
TC-021FNOS-009-10查询接口不可用时不剔除AC-04查询接口抛错1.加载列表 2.观察展示每条目录的 valid 为 undefined;全部保留并提示「已按保存的记录展示目录;当前无法校验权限」P0
TC-022FNOS-009-10恢复授权后可重新持久化AC-03目录曾被剔除1.在 fnOS 侧重新授权 2.经「添加/刷新」操作目录目录重新进入列表并被持久化P1

FNOS-009-01~08 版本适配与功能保持(规划中,随阶段一~三回填) ​

用例随 阶段一~三任务 完成后回填,覆盖插件加载、四插件功能回归、升级数据兼容与文档基线。

测试执行结果 ​

执行后回填;不修改上方用例定义。非 fnOS 插件功能按测试环境执行方式要求 DSH Web 与 DSH Desktop 各执行一次、按客户端分列;仅 Web 或仅 Desktop 的结果不构成该用例的完成结论。

用例ID功能点执行环境结果执行日期备注
TC-006FNOS-009-12本地 shell 分支断言通过2026-09-30自有插件首次安装走放行调用,bundled-plugin-install.spec.ts 断言
TC-007FNOS-009-12本地 shell 分支断言通过2026-09-30自有插件版本收敛走放行调用
TC-008FNOS-009-12本地 pnpm 11.7.0 端到端通过2026-09-30复刻「历史同包名残留 + 新发布版本」:旧逻辑第 2 个包报 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION(与 NAS 日志逐字一致),新逻辑三个包全部装成功
TC-012FNOS-009-12本地 shell 分支断言通过2026-09-30同版本保持不重复安装
—FNOS-009-01本机 DSH Web 0.2.0-rc.2通过(DSH Web)2026-09-30证据见 本地 Web 验证记录
—FNOS-009-01DSH Desktop 自带运行时 0.2.0-rc.2通过(Desktop 运行时)2026-09-30三插件无「异常」、详情页正常、控制台无错;证据见 Desktop 运行时验证记录;真实 NAS 待补。该次使用隔离探针 profile,不满足项目 profile 约束,已被下一行的结论取代
—FNOS-009-01DSH Desktop(真实 Electron 壳 + 项目 profile)通过(DSH Desktop)2026-10-06环境版本:Desktop 0.2.0-rc.2(Electron 44)/ 内置运行时 0.2.0-rc.2 / 插件 0.2.0-rc.2.0;DSH_HOME=<repo>/.dsh、profile 为 .dsh/profiles/desktop;已安装 3 个插件,「异常」「不兼容」均 0 次;CDP 取证,证据见 Desktop 验证记录;收尾:已退出项目 profile 的 Desktop 并以缺省 DSH_HOME 重启,交还全局 profile(未产生测试账号,无需清理)
—FNOS-009-04DSH Desktop(真实 Electron 壳 + 项目 profile)部分通过2026-10-06版本徽章 v0.2.0-rc.2.0、「共 1 个 · 1 运行中」;账号管理区渲染正常(6 个账号、额度 1468/1609、已签到)。当时待复验的登录与用量,已由 2026-10-08 真实 NAS 的全新授权回流结果取代(见下)
—FNOS-009-03本机 DSH Web 0.2.0-rc.2部分通过2026-09-30AC-02 模型目录与分组弹层正常。当时待复验的登录与用量,已由 2026-10-08 用户手动验证结果取代(见下)
—FNOS-009-05本机 DSH Web 与 Desktop 运行时通过2026-09-30两处运行时上展示页与组件分组均正常渲染;证据见本地 Web 与 Desktop 运行时验证记录
—FNOS-009-05DSH Desktop(真实 Electron 壳 + 项目 profile)通过2026-10-06插件通过兼容门禁并正常加载,插件页与详情页无异常;逐组件渲染结论见 本地 Web 验证记录
—FNOS-009-01DSH Desktop 暗色主题通过2026-10-07color-scheme 由 light 切到 dark,设置浮层背景 rgb(255,255,255)→rgb(44,44,46);暗色下插件页「异常」0 次、三插件均在;无残留样式;证据见 Desktop 补充验证记录
—FNOS-009-04DSH Desktop 暗色主题部分通过2026-10-07暗色下账号管理区正常渲染(6 个账号、剩余额度、已签到标记),可读性满足 WCAG AA(对比度 17.45)。登录流程与用量已由 2026-10-08 真实 NAS 的全新授权回流结果取代(见下)
—FNOS-009-04真实 fnOS NAS(存储空间1,Web 网关)通过2026-10-08AC-02:账号管理 6 个账号全部加载并渲染;点「刷新」后额度重新拉取成功。AC-01:移开凭据文件后界面归 0,走完整 OAuth 登录回流后账号变为 1(新 id fc10e370-…,磁盘生成新文件),恢复备份后 6 账号完好——证明授权链路可用而非渲染既有凭据。详见 fnos 插件真机验收记录
—FNOS-009-01DSH Desktop 宿主差异点部分通过2026-10-07外部链接交系统默认浏览器打开(前台由 DeepSeek Harness 切到 Google Chrome,应用内无新 target)通过;设置页呈现(5 个分组 + 通用设置 10 项)通过。「OAuth 授权回流未走查」为当时的记录,该链路已由 FNOS-009-03/04 的后续验证覆盖
TC-014–TC-017FNOS-009-09单测(schema/宿主持久化)通过2026-09-30字段缺省、去重保序、持久化优先、写入失败保留
TC-001–TC-005FNOS-009-11单测(删除计划与跨度换算)通过2026-09-30取消父目录只移除父项跨度;反向、取消子项、重复勾选、三层链均覆盖;浏览器走查待补
TC-018–TC-022FNOS-009-10单测(SDK 校验服务)通过2026-09-30逐项通过/剔除、桥接不可用降级;真实 NAS 桥接待复验
TC-023FNOS-009-10单测(卡片级剔除编排)通过2026-09-30只读项不参与校验、桥接不可用不剔除、剔除后保持展示顺序、无可校验项不构造 SDK
TC-028FNOS-009-13macOS 构建机(无 g++ 参与)通过2026-10-07移除 Linux 构建机限制后直接 build --fpk 成功;FPK 内确认无 native/、dsh-version、node-pty-versions,install_callback 不含旧变量
TC-027FNOS-009-13单测(依赖树判定)通过2026-10-07依赖树无 node-pty 时记录并正常返回,不报错
TC-026FNOS-009-13单测(预编译缺失)通过2026-10-07缺少当前平台预编译目录时以非零退出并指出目录名
TC-029FNOS-009-13代码核对(npm 调用参数)通过2026-10-07npm rebuild 调用未含 --registry;安装回调未新增任何包下载
TC-035FNOS-009-10真机(NAS 存储空间1,5.5.5)通过2026-10-08反复进入详情页与点「刷新」均无「申请访问以下文件」弹框;修复链:5.5.3 改用无交互查询接口、5.5.4 补必填 uid、5.5.5 客户端保留 valid 字段
TC-036FNOS-009-10单测 + 真机(NAS 存储空间1)通过2026-10-08单测覆盖有效/明确失效/无法判定三类;真机后端返回 valid: true,界面无降级提示且目录保留,刷新幂等
TC-022FNOS-009-10真机(NAS 存储空间1)失败→已修复2026-10-08先暴露 BUG-05:刚授权允许的 /vol2/1000/fnos-fpk 被判为无权限、从列表移除并回写 authorizedDirectories: [];修复后同一路径保留在列表(5 行)且可「取消授权」
TC-021FNOS-009-10真机(NAS 存储空间1)通过2026-10-08早期版本(5.5.3/5.5.4)实测降级路径:查询接口不可用时提示「已按保存的记录展示目录;当前无法校验权限」且不剔除任何目录;5.5.5 起查询可用,降级提示消失
TC-018FNOS-009-10真机(NAS 存储空间1)通过2026-10-08应用共享目录(removable: false)不参与校验,4 项始终保留
TC-023FNOS-009-11真机浏览器走查(NAS)通过2026-10-08TreeSelect 实际展开出父子结构后逐步验证:勾选父目录时子项不动;再勾选子项可父子同时选中;取消父目录后子项 fn-deepseek-harness.fpk 仍保持勾选
—FNOS-009-02真机(NAS 存储空间1)通过2026-10-08会话日志导出走通两条路径(导出到 NAS 实际落盘 10957 字节 ZIP,session.v4.jsonl 20 行且含本次会话内容;导出到电脑提示已开始下载);「在文件管理打开」调起 fnOS 文件管理器并定位到会话工作区目录
TC-016FNOS-009-09真机(NAS 存储空间1)通过2026-10-08授权后写入 cordis.patch.yml 的 authorizedDirectories: [/vol2/1000/fnos-fpk];刷新列表后仍从持久化展示该目录
TC-017FNOS-009-09真机(NAS 存储空间1)通过2026-10-08持久化写入失败只记日志:evict-persist-failed / persist-failed 分支不改变页面状态
TC-024FNOS-009-13真机安装(NAS 无 g++)通过2026-10-08npm rebuild 1 秒完成无编译输出;预编译解析为 prebuilds/linux-x64;证据见 真机验收记录
TC-025FNOS-009-13侧边栏终端可用通过2026-10-08终端执行 tty 返回 /dev/pts/2,echo PTY_REAL_OK 输出正确,TERM=xterm-256color;build/Release 不存在
TC-030FNOS-009-13其他依赖脚本仍执行通过2026-10-08日志显示仅 node-pty 的 install 脚本被临时替换,npm rebuild 仍执行且 1 秒完成
TC-032FNOS-009-14真机安装最后一步通过通过2026-10-08dshmarket@1.66.11 安装成功(+ dshmarket 1.66.11),插件页「已安装 4」、异常 0、不兼容 0
TC-031FNOS-009-14版本元数据核对通过2026-10-08dshmarket@1.66.11 的 peerDependencies 含 || ^0.2.0-rc.1,覆盖当前基线 0.2.0-rc.2
TC-033FNOS-009-14真机安装(NAS,无 g++)通过2026-10-081.66.3 被门禁明确拒绝并给出解法,未静默放行;这是缺陷暴露路径
—FNOS-009-01真实 fnOS NAS(存储空间1,5.5.5)通过2026-10-08插件页「已安装 4」,「异常」与「不兼容」均为 0;与既有 DSH Web、Desktop 真实壳、Desktop 暗色主题结果合并构成双环境覆盖
—FNOS-009-05本机 DSH Web 与 Desktop 运行时通过2026-09-30展示页与组件分组在两处运行时均正常渲染;补记:本项证据在早期已齐,状态徽标未同步更新,已于 2026-10-08 修正
—FNOS-009-06真实 fnOS NAS(连续 5 次升级)通过2026-10-085.5.0→5.5.2→5.5.3→5.5.4→5.5.5 升级后:CodeBuddy 6 个账号、授权目录、systemTheme、默认模型配置、1 个工作区与 2 个会话全部保留;已记录升级前基线快照(sha256)供后续比对
—FNOS-009-12真实 fnOS NAS(安装回调链路)通过2026-10-08日志统计 68 次带 release-age 放行的插件调用、65 次 ✓ Lockfile passes supply-chain policies、ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION 0 次;自有(36)与三方(2)均走放行
—FNOS-009-07源码逐项核对(两 tag 对比)通过2026-10-08四插件消费的全部接缝无破坏性变更:plugins.detail.section 调用形参一致、ui-slots/ui-input-trigger 仅版本号变化、submit 的 source 可选、displayTitle 类型未变、fork 未使用、MenuGroup 纯新增;字号 12–17→10–22 属宽松化,插件用固定 px
—FNOS-009-03本机 DSH Web 与 DSH Desktop 0.2.0-rc.2通过2026-10-08AC-01:完成浏览器授权登录,授权页打开与授权码流程正常;AC-02:登录后模型目录同步、模型选择与全局模型设置可用;AC-03:对话区用量显示剩余额度与重置时间。两个客户端均已执行(满足非 fnOS 插件的双客户端要求)

Bug 记录 ​

Bug ID关联用例标题严重级别状态修复说明
BUG-01TC-008自有插件的新发布版本被 pnpm 发布日期限制阻断应用安装(fnOS NAS 实测)P0已修复由 FNOS-009-12 实现:安装回调内自有与三方插件统一使用受控 release-age 例外;真实 NAS 复验待补
BUG-02—上游已移除 dsh-agent-presets、dsh-code-runtime,0.2.0-rc.2 下无对应版本P2已修复从 pnpm-workspace.yaml 的 minimumReleaseAgeExclude 剔除这两个条目;二者已无依赖方
BUG-03TC-032三方插件 dshmarket@1.66.3 的 peer 声明未覆盖 DSH 0.2.0-rc.2,被兼容门禁拒绝,导致 FPK 安装最后一步失败P0已修复更新为 1.66.11(peer 新增 || ^0.2.0-rc.1);规范补充「更新 DSH 基线时同步三方插件版本」;真机复验待补
BUG-04TC-022授权目录列表永久停留「正在加载授权目录」,0 行渲染;后端返回 200 且控制台有 refresh-success,但无任何 validate-* 日志(真机 NAS 实测)P0已修复authorizeUserFile 未在 config/resource 声明 trim.file.userAccess,且 SDK 桥接调用没有超时,任一环节不响应即永久挂起。已补 scope,并为 sdk.ready() 与每次授权调用加超时兜底,超时按「校验不可用」降级
BUG-05TC-020刚授权成功的用户目录被判为无权限:从列表移除并回写持久化记录,实测 authorizedDirectories: [](真机 NAS 实测)P0已修复校验按 { ok: boolean } 读取 SDK 应答,而真实结构是 AppBridgeResponse(code: 0 为成功),ok 恒为 undefined,因此每个可移除目录都必然落到 return 'invalid'。改用 code === 0 判定;单测替身原先用同一错误契约,因此与实现一起错,现已改用真实结构并新增「调用永不 settle」用例

测试结论 ​

通过。 执行用例 51 条:通过 51、部分通过 0、失败 0(BUG-04/05 均已修复并复验)。

按功能项的最终状态 ​

功能项状态关键证据
FNOS-009-01 插件加载通过DSH Web、Desktop 真实 Electron 壳、真实 NAS 三处:插件页「已安装 4」,异常与不兼容均为 0
FNOS-009-02 fnOS 插件功能通过真机走查详情页结构、主题跟随、应用共享目录只读、三方插件 proxy
FNOS-009-03 Codex Auth通过AC-01/02/03 全部成立(登录、模型目录、对话区用量);DSH Web 与 DSH Desktop 均已执行
FNOS-009-04 CodeBuddy通过真实 NAS 完成全新授权回流(账号 0→1,生成新 id),恢复后 6 账号完好;账号管理、额度、签到可用
FNOS-009-05 Showcase通过DSH Web 与 Desktop 两处运行时,展示页与组件分组正常渲染
FNOS-009-06 用户数据兼容通过连续 5 次升级(5.5.0→5.5.5)凭据、授权目录、偏好、模型配置、工作区与会话全部保留;已记录升级前 sha256 基线
FNOS-009-07 上游增量通过两个 tag 逐项核对四插件消费的接缝,未发现破坏性变更
FNOS-009-08 文档基线通过插件文档与总览版本号、安装命令、兼容基线指向 0.2.0-rc.2;文档站构建通过
FNOS-009-09 授权目录持久化通过真机:authorizedDirectories 落盘,重启与刷新后保持
FNOS-009-10 权限校验与剔除通过真机:后端 valid: true,界面无弹框、无降级提示,目录保留且刷新幂等
FNOS-009-11 父子勾选解耦通过真机:取消父目录勾选不影响已选子项
FNOS-009-12 安装不受新发布阻断通过安装日志 68 次放行、65 次 lockfile 策略通过、ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION 0 次
FNOS-009-13 node-pty 免编译通过NAS 无 g++ 安装成功;prebuilds/linux-x64/pty.node 可用,终端 tty 正常;macOS 亦可构建
FNOS-009-14 三方插件版本同步通过真机安装最后一步通过,dshmarket@1.66.11 不再被兼容门禁拒绝

已完成的关键验证 ​

  • 四插件版本重锚定与全量单测 1451 项全部通过(含 fnOS 插件 237 项,本轮由 232 增加)。
  • FNOS-009-10 的真机修复链:应答契约(按 code 而非 ok 判定)→ 改用无交互查询接口 (原实现误用「申请授权」接口,导致每次刷新弹确认框)→ 补必填 uid → 客户端保留 Host 标注的 valid。四层逐层在真机复验,最终后端返回 valid: true、 界面无弹框无降级提示。
  • FNOS-009-04 的全新授权回流:从零开始(移开凭据文件 → 界面归 0 → 走登录 → 账号 1), 证明授权链路可用而非靠既有凭据渲染。
  • FNOS-009-12 的本地端到端复验:复刻 NAS 失败现场,旧逻辑报 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION,新逻辑三个包全部装成功。
  • FNOS-009-13 的跨平台构建:删除 Linux 构建机限制后 macOS 直接构建 FPK 成功且包内无原生产物。

未完成 ​

  • 「网页链接默认打开方式」的对话内路径:需在真实对话内点击链接才能覆盖「应用内侧边栏」取值, 属既有待办,与 FNOS-009 的功能项无直接关联。

已补齐(原列在未完成项) ​

以下各项在本轮及 2026-10-07 的补充验证中完成,证据见对应验收记录:

  • Desktop 暗色主题:亮暗两主题各执行一遍,color-scheme light→dark,无残留样式,可读性满足 WCAG AA。
  • fnOS 插件真机功能与数据兼容(FNOS-009-02、06 的 fnOS 部分、09/10 的 SDK 桥接)。
  • FNOS-009-11 的浏览器实机走查:真机验证父子勾选解耦(规范要求的实机证据)。
  • FNOS-009-07 的上游增量逐项核对:按两 tag 逐项确认无破坏性变更。
  • FNOS-009-03 的登录与用量:在 DSH Web 与 DSH Desktop 各执行一次,三项 AC 全部成立。

变更记录 ​

日期变更说明
2026-09-30初始登记建立 FNOS-009 测试用例文档;先登记 FNOS-009-11 父子解耦用例(对应计划任务已完成实现部分),其余章节随阶段任务回填。
2026-09-30上下文关联改造功能点、验收条件、计划任务的纯文本表达改为指向需求/计划文档锚点的 markdown 链接。
2026-09-30登记 FNOS-009-12 用例新增 TC-006–TC-013,覆盖自有与三方插件安装放行、历史残留场景、失败可诊断、手动安装策略不变与归档替换不回归;测试范围与环境同步到 FNOS-009-12。用例先登记,执行结果待阶段七完成后回填。
2026-09-30回填首轮执行结果回填 FNOS-009-01/03/05 的 DSH Web 实测与 FNOS-009-12 分支级结果;登记 BUG-01(自有插件被发布日期阻断)与 BUG-02(上游包移除)。结论更新为「部分通过」,未完成项与目标环境证据缺口列在结论中。
2026-10-06回填 Desktop 真实壳执行结果按DSH Desktop 测试的项目 profile 约束,在真实 Electron 壳内用 CDP 取证,新增 FNOS-009-01/04/05 的 DSH Desktop 执行结果;2026-09-30 那次隔离探针结论因不满足 profile 约束被标注为已被取代。未完成项补充 Desktop 暗色主题与宿主差异点。证据见 Desktop 验证记录。
2026-10-07补齐 Desktop 暗色主题与宿主差异点按 UI 测试规范在亮暗两主题各执行一遍,实测主题切换、可读性(WCAG AA)、毛玻璃与间距/BFC;宿主差异点覆盖「外部链接交系统默认浏览器打开」与「设置页呈现」。OAuth 授权回流与「网页链接默认打开方式」的对话内路径列为遗留。证据见 Desktop 补充验证记录。
2026-10-07登记并回填 FNOS-009-13新增 TC-024–TC-030,覆盖无编译器安装、终端可用、预编译缺失可诊断、上游移除依赖、macOS 构建、registry 沿用与其他依赖脚本执行;回填 macOS 构建与单测结果。
2026-10-08登记 FNOS-009-14 并回填真机结果真机安装暴露 BUG-03:三方插件 dshmarket@1.66.3 被 DSH 0.2.0-rc.2 兼容门禁拒绝;新增 TC-031–TC-034 与 FNOS-009-14。同一次真机安装确认 FNOS-009-13 的核心路径通过:淘宝源生效、DSH 0.2.0-rc.2 安装验证通过、三个自有插件安装成功且无 g++。
2026-10-08登记 BUG-04/05 并回填 fnos 插件真机结果真机走查暴露并修复两个 P0:授权目录列表永久加载中(SDK 桥接无超时 + 缺 trim.file.userAccess)、合法授权目录被误剔除并清空持久化({ ok } 与 AppBridgeResponse 契约不符)。回填 TC-016/017/018/021/022 与 fnos 插件其余功能结果;新增验收记录。
2026-10-08FNOS-009-10 校验改用无交互查询接口真机暴露原实现把「申请授权」接口当校验用:每次刷新列表都弹出「申请访问以下文件」确认框,且返回值只表示这次申请的结果。新增 TC-035/036 与 AC-05/06;TC-018/019/021 的预期结果按集合比对改写;删除逐项授权探测模块与对应单测。
2026-10-08FNOS-009-10 真机验证通过回填 TC-035/036,TC-021 补记降级路径的实测版本;FNOS-009-10 由「降级已验证」转「真机已验证」。结论更新为 44 条全通过。
2026-10-08回填 01/05/06/12 结果并登记 03 结论补齐 01(NAS 插件页无异常)、05(早期证据已齐,徽标未同步)、06(连续 5 次升级数据保留 + 基线快照)、12(68 次放行 0 违规)的执行结果;03 按用户决定标为「部分验证」并登记原因。结论更新为 48 条:通过 47、部分通过 1。
2026-10-08FNOS-009-07 上游增量核对完成依据两 tag 对四插件消费的接缝逐项核实,未发现破坏性变更(5 项可选增量或未引用、1 项纯新增导出、字号范围属宽松化)。07 转「已完成」;结论更新为 49 条:通过 48、部分通过 1。
2026-10-08FNOS-009 验收收尾回填 FNOS-009-04 的真实 NAS 全新授权回流结果(AC-01 + AC-02 均成立),该功能项由「待完成」转「真机已验证」;重写测试结论段——原结论把 5 项已完成内容列为「未完成」,现按功能项给出最终状态表。用例数更新为 51 条:通过 50、部分通过 1。
2026-10-08FNOS-009-03 登录与用量验证通过由用户手动验证:AC-01(浏览器授权登录、授权页与授权码流程)、AC-02(模型目录同步、模型选择、全局模型设置)、AC-03(对话区用量显示剩余额度与重置时间)全部成立,DSH Web 与 DSH Desktop 均已执行,满足非 fnOS 插件的双客户端要求。该功能项由「部分验证」转「通过」。用例数更新为 51 条全部通过,无部分通过项。

基于 VitePress 构建