Skip to content

FNOS-033 测试用例 ​

测试范围与需求分析 ​

被测对象是 OpenCode 与 ZCode 用量胶囊的客户端显隐判定:是否按会话投影 wire view 的 next 取值、切走模型后是否立即隐藏、next 为空时是否退回 lastUsed。执行任务见 PLAN-FNOS-033,覆盖需求功能:

覆盖功能关键风险点
FNOS-033-01 OpenCode 胶囊随选择即时显隐是否仍读 pending;next 为 null 时是否丢失 lastUsed
FNOS-033-02 同类插件口径一致且有回归ZCode 是否已用 next;策略(always/off/未登录)是否被改坏

测试环境 ​

功能目标环境说明
FNOS-033-01包级测试纯显隐判定可断言,不依赖 UI
FNOS-033-02包级测试ZCode 纯函数与策略真值表

包级:pnpm --filter @tnnevol/dsh-opencode run check、pnpm --filter @tnnevol/dsh-zcode run check。

测试用例 ​

FNOS-033-01 OpenCode 胶囊随选择即时显隐 ​

ID覆盖验收步骤预期执行环境
TC-001FNOS-033-01-AC-01next 指向其它供应商、lastUsed 仍是 OpenCode 时调用 readSelectedProvider返回新供应商;auto 判定 false包级
TC-002FNOS-033-01-AC-02next: null、lastUsed 为 OpenCode 时调用读取退回 lastUsed,返回 OpenCode包级
TC-003FNOS-033-01-AC-01、AC-02next 指向 OpenCode go/zen 模型时读取并判定返回 OpenCode;auto 为 true包级

FNOS-033-02 同类插件口径一致且有回归 ​

ID覆盖验收步骤预期执行环境
TC-004FNOS-033-02-AC-01ZCode:next 指向本插件 / 指向其它供应商(lastUsed 为本插件)分别显示 / 立即不显示包级
TC-005FNOS-033-02-AC-01ZCode:next: null 回退、投影缺失、空字段、always/off/未登录与真值表一致包级
TC-006FNOS-033-02-AC-02全仓库搜索用量显隐里的 projection.pending0 处命中包级

测试执行结果 ​

ID结果执行日期证据/备注
TC-001通过2026-10-26opencode usage-visibility.spec.ts「切到其它供应商时立即不显示」
TC-002通过2026-10-26同文件「优先 next,其次 lastUsed」
TC-003通过2026-10-26同文件 go/zen 用例
TC-004通过2026-10-26新增 zcode capsule-visibility.spec.ts
TC-005通过2026-10-26同文件回退、空字段与策略用例
TC-006通过2026-10-26全仓库 grep 确认只有已修复的 opencode 曾命中,现为 0

包级汇总:@tnnevol/dsh-opencode 208 条通过;@tnnevol/dsh-zcode 169 条通过。

运行时汇总:DSH Web 与 DSH Desktop 各两个方向(zcode ↔ opencode)全部即时显隐,均未发送消息。

DSH Web 与 DSH Desktop 运行时验证(2026-10-28) ​

按测试用例文档规范的 DSH Web / DSH Desktop 口径执行。两客户端共用项目 DSH_HOME=<repo>/.dsh(profile 分别为 web / desktop),插件为仓库工作区链接构建(link: 指向 plugins/*,含本轮修复产物)。

项DSH WebDSH Desktop
运行时dsh web,DSH 0.2.1-rc.3,端口 8070(token 地址)上游检出 fork-pj/deepseek-harness 开发态,构建 0.2.1-rc.3-1f81c04,CDP 9333
会话新建「只回复两个字:测试」(GLM-5.3-Flash · zcode)同一 profile 自动可见同一会话
方法模型选择器切换模型,不发送消息,0.6–0.8s 后统计胶囊 DOM(dsh-zcode-usage* / dsh-opencode-usage*)同左,经 CDP 求值
方向切换前胶囊切换后胶囊结论
zcode → opencode(Web)zcode 3 / opencode 0zcode 0 / opencode 3即时切换,无发送依赖
opencode → zcode(Web)opencode 3 / zcode 0opencode 0 / zcode 3即时切换
zcode → opencode(Desktop)zcode 3 / opencode 0zcode 0 / opencode 3即时切换
opencode → zcode(Desktop)opencode 3 / zcode 0opencode 0 / zcode 3即时切换

结论:仓库构建下 OpenCode 与 ZCode 胶囊都在「选择模型」瞬间按新供应商显隐,两个客户端行为一致;OpenCode 读取 next 的修复在运行时生效。ZCode 无需改代码(其 next ?? lastUsed 本就正确)。

清理:开发态 Desktop 以 pkill -f "fork-pj/deepseek-harness" 精确结束;用户安装版 /Applications/DeepSeek Harness.app 未受影响(仍在运行)。

Bug 记录 ​

ID关联用例标题级别状态说明
BUG-01TC-001OpenCode 胶囊切走模型后不立即隐藏P0已修复读取了 wire view 中不存在的 pending,改为 next ?? lastUsed
BUG-02TC-001已发布的 6.0.6 仍带旧客户端构建P0已定位;按决定不发布,本地打包交付@tnnevol/dsh-opencode@6.0.6 发布时未重新构建:lib/index.js 含会话头兜底,但 lib/client.js 仍读 pending。仓库源码已正确,本地重新构建的 tarball 已验证含修复(sha256 86b9e3d8…);线上 6.0.6 保持不变

测试结论 ​

包级验证通过:OpenCode 的字段错误已修复,ZCode 既有正确实现补齐回归;DSH Web 与 DSH Desktop 运行时验证均通过(切换瞬间显隐,无发送依赖)。

线上交付状态(2026-10-28 核查):npm 上已发布的 @tnnevol/dsh-opencode@6.0.6 未包含本修复——其 lib/client.js 仍是旧构建(pending)。根源是发布时未重新构建,产物为磁盘旧 lib/;仓库源码与本地重新构建后的 tarball 均已验证含 next 修复。按 2026-10-28 决定不发布 npm,改为本地打包交付:产物为 tmp/fnos-opencode-local/tnnevol-dsh-opencode-6.0.6-local-capsule-fix.tgz,解包验证 client.js 读 next、index.js 含会话头兜底。后续如需正式发布,按 发布前必须重新构建产物 逐项核对。

变更记录 ​

日期变更说明
2026-10-26建立测试用例文档6 条用例全部包级通过;记录 BUG-01
2026-10-28补记 BUG-02 与线上核查用户更新 6.0.6 后症状仍在;npm pack 取证确认线上包 client.js 为旧构建;按决定不发布 npm,改为本地打包交付并验证产物
2026-10-28补记双客户端运行时验证DSH Web 与 DSH Desktop 各测 zcode ↔ opencode 两个方向:切换瞬间胶囊即按新供应商显隐,均未发送消息;ZCode 实测同样正确

基于 VitePress 构建