核心功能与测试点
本清单覆盖公开版的 74 项要求。 测试入口不代表验收结果。
程序化测试、真实服务和界面操作分开记录。 真实 CLI 对合成服务的请求属于程序回归。 真实授权、费用账单和物理操作需要补验。
| 编号 | 核心要求 | 自动化入口 | 实际操作 |
|---|---|---|---|
| TR01 | Trace 开启后,新 CLI / 桌面新对话确实被捕获;服务、模型、客户端入口和完成状态正确 | 脚本 脚本 脚本 脚本 claude-native-sessions-test.mjs | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR02 | 同一 session 的多轮、工具往返、resume、切 provider 仍归同一 Trace 会话 | 脚本 脚本 脚本 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR03 | 不同原生 ID 即使首句相同也不合并;并发会话不串正文、工具或路由 | 脚本 脚本 脚本 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR04 | 预览保留本次完整原始 request,不自行拼入其他历史;转换、续接恢复和省略字段在实际上游与差异记录中单列 | 脚本 脚本 脚本 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR05 | 真正 compact 后捕获当前压缩请求和摘要;继续及切协议后仍能恢复可用上下文,不伪造前史 | 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR06 | 工具 call ID 与结果匹配、顺序正确;辅助标题、预算、重试、子 Agent 的归属和主辅状态准确 | 脚本 脚本 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR07 | failed、incomplete、取消、断流与完整协议结束正确区分;不因 HTTP EOF 差异误判,不盲目重放已见输出 | 脚本 脚本 脚本 脚本 official-websocket-proxy-test.mjs | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR08 | 列表、详情、原始请求、上游、工具、搜索、过滤、分页、刷新与实时新增互相一致;仪表盘会话单行、不显示 LIVE,长标题和型号不换行,失败主回合同行提示 | 脚本 脚本 脚本 脚本 trace-dashboard-api-test.mjs | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| TR09 | 客户端来源标签含义准确;入口分类不能冒充真实 CLI / Desktop 进程证据 | 脚本 脚本 脚本 脚本 | 开启 Trace 后新建真实客户端会话。核对原生会话 ID、原始请求、上游及仪表盘归属。续接与并发场景沿用原会话。 |
| CO01 | 请求的精确模型与 usage 被捕获,输入/输出/缓存读写口径正确,异常字段不污染可靠字段 | 脚本 | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| CO02 | 按捕获时冻结费率独立复算;服务有效费率优先,参考价来自 models.dev;输入与缓存不重复计费 | 脚本 脚本 脚本 脚本 | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| CO03 | 详情、会话总计、首页、实时汇总、过滤、刷新和重启一致;重试/辅助请求按定义纳入,不因事件重放重复累计;Trace 和仪表盘的已知金额无星号;失败缺项不产生金额;无未计价提示,零值和小额精度一致 | 脚本 脚本 脚本 脚本 脚本 | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| CO04 | 缺模型、必填用量或价格保持未知及可信小计;按标准身份和唯一别名匹配,不用相似型号或 LiteLLM 补造参考价 | 脚本 脚本 脚本 脚本 | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| CO05 | 新费率用于新请求;旧记录保留自己的价格/汇率快照;精确日期后缀不被计价归并改写 | 脚本 脚本 | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| CO06 | 小额金额、零值、未知值、缓存命中率、单位和舍入一致;订阅参考价与真实账户扣款分开 | 脚本 脚本 脚本 脚本 trace-cache-rate-test.mjs | 用真实服务完成普通、缓存和失败请求。逐条核对原始用量与价格快照,再对照服务账单。缺项不得估算。 |
| MO01 | 当前连接读取自己的目录、精确型号和协议;有效服务能力优先,缺失普通能力查 models.dev;旧内建表不补能力,LiteLLM 只补必要协议 | 当前连接读取自己的目录、精确型号和协议;有效服务能力优先,缺失普通能力查 models.dev;旧内建表不补能力,LiteLLM 只补必要协议;普通资料刷新与主动缓存修复分开,迟到目录消费当前资料 | provider-catalog-test.mjs catalog-contract-edges-test.mjs provider-validation-test.mjs protocol-test.mjs models-dev-unification-test.mjs catalog-contract-test.mjs official-catalog-test.mjs provider-presets-test.mjs codex-client-compatibility-test.mjs codex-client-contract-test.mjs model-metadata-consumption-test.mjs |
| MO02 | 每个可测聊天型号至少短生成及两轮记忆;工具、图片、音频、WS 等分别测,不从文字成功推断 | 脚本 脚本 脚本 脚本 reasoning-test.mjs | 连接真实服务并刷新目录。切换模型和协议,核对保存值、回读值、实际 URL 与上游响应。离线后复查选择。 |
| MO03 | 声明的协议与实际 URL 一致。转换行为与“需 Trace”提示一致。 | 声明的协议与实际 URL 一致。转换行为与“需 Trace”提示一致。;并行工具参数双向保留,默认输出预算遵循已知上限 | provider-catalog-test.mjs catalog-contract-edges-test.mjs provider-validation-test.mjs protocol-test.mjs model-metadata-consumption-test.mjs routing-consumption-test.mjs |
| MO04 | 快速切服务、慢目录、切页返回和过期响应不能覆盖新选择;刷新失败保留最后成功快照并能重试 | 脚本 脚本 脚本 脚本 | 连接真实服务并刷新目录。切换模型和协议,核对保存值、回读值、实际 URL 与上游响应。离线后复查选择。 |
| MO05 | 聊天选择器不混入明确的图像/向量等非聊天型号;已有自定义 ID 保留;明确下线与普通 404/额度/无通道区分 | 脚本 | 连接真实服务并刷新目录。切换模型和协议,核对保存值、回读值、实际 URL 与上游响应。离线后复查选择。 |
| MO06 | 模型、能力和价格刷新后实际生效;离线与来源局部失败保留最后成功资料;旧参数缓存不覆盖 models.dev,独立协议缓存仍保留 | 脚本 脚本 脚本 脚本 脚本 脚本 | 连接真实服务并刷新目录。切换模型和协议,核对保存值、回读值、实际 URL 与上游响应。离线后复查选择。 |
| CL01 | 界面、客户端文件、重新读取和实际上游使用相同 provider / 模型 / 授权类型 | 界面、客户端文件、重新读取和实际上游使用相同 provider / 模型 / 授权类型;压缩阈值、有效窗口、搜索和输出详细程度按来源发布,用户明确配置保留 | client-config-merge-test.mjs codex-models-renderer-test.mjs client-models-renderer-test.mjs portability-test.mjs desktop-model-routing-test.mjs regressions.mjs codex-client-compatibility-test.mjs model-metadata-consumption-test.mjs routing-consumption-test.mjs installed-clients-test.mjs |
| CL02 | 已配置服务之间双向续接同一线程;同进程与重开 resume 分开验收。 | portability-test.mjs | 在实际页面切换 A→B→A,续接原线程。核对上下文、账号、实际路由与 Trace 归属。 |
| CL03 | 旧会话可能保留旧绑定;新会话使用新配置;两者不得混作热切换通过 | 脚本 脚本 脚本 脚本 脚本 | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| CL04 | 官方 OAuth 与第三方 Key 不混用;官方客户端正常刷新 token 保留;不暗换账号或服务 | 脚本 脚本 脚本 脚本 脚本 official-test.mjs | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| CL05 | 明确 CLI 模型覆盖、默认模型、Claude Opus/Sonnet/Haiku 映射分别保留并实际一致 | 脚本 脚本 脚本 脚本 脚本 | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| CL06 | Trace OFF 后直连恢复,无遗留 localhost/回退/账本/监听;再开启新会话正常 | 脚本 legacy-helper-test.mjs legacy-direct-test.mjs legacy-recovery-test.mjs | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| CL07 | 客户端目标发现正确;独立 CLI、Desktop 与额外客户端配置不互相覆盖;必要重载有明确入口 | 脚本 脚本 脚本 脚本 脚本 claude-config-path-test.mjs client-management-test.mjs expanded-clients-test.mjs gateway-clients-test.mjs universal-gateway-test.mjs | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| CL08 | Codex / Claude / ChatGPT 桌面聊天与 CLI 分别验收;完整默认工具和轻量工具条件分开 | 脚本 脚本 脚本 脚本 脚本 installed-clients-test.mjs | 新建真实客户端会话。中途切换服务后续接同一会话,检查上下文和上游。停止后核对客户端恢复及监听关闭。 |
| SE01 | 新增/编辑/删除服务准确;失败保留草稿,取消不写入;同名连接不串 Key 和地址 | 脚本 脚本 config-import-test.mjs | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE02 | 最新选择不被后台回读/慢写入覆盖;前台等待符合既定 2 秒要求,到期恢复操作且后台状态真实 | 脚本 脚本 脚本 脚本 脚本 run-bridge-order-regressions.mjs | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE03 | 独立运行目录为 xwx-deck;正常重启保留本版账号、设置和 Trace;损坏配置不静默重置。 | 脚本 脚本 脚本 脚本 脚本 | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE04 | 容量原始字节准确,设置/提示/仪表盘单位一致;阈值、自动清理开关落盘 | 脚本 脚本 trace-usage-only-test.mjs | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE05 | 自动清理只删最旧完整会话,保留活动记录与用量费用;手动删除统计须额外勾选 | 脚本 trace-usage-only-test.mjs | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE06 | 手动索引诊断与修复不改原始 JSONL,备份和结果可核对;失败保留原文件 | 脚本 | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| SE07 | 修改 Trace/日志目录完成暂停→更改→恢复;失败保留明确选择并提供重试 | 脚本 | 在独立数据目录修改设置并重启。制造外部修改与在途请求,检查数据保留、所有权、容量和修复结果。 |
| AC01 | Deck 自有 Key / 主密钥按本地策略稳定保存;正常启动重启不重复读旧钥匙串;原登录保留 | 脚本 脚本 脚本 claude-secure-store-test.mjs credential-os-test.mjs credential-vault-test.mjs grok-secure-store-test.mjs | 使用独立授权账号登录、刷新及退出。核对当前账号、官方原始额度与实际路由。切换时检查会话亲和和凭据隔离。 |
| AC02 | 官方登录、API 授权和订阅账号彼此隔离;添加或移除关联保留其他来源登录。 | credential-private-files-test.mjs official-accounts-test.mjs subscriptions-test.mjs subscription-routing-test.mjs subscription-usage-test.mjs claude-subscriptions-test.mjs copilot-subscriptions-test.mjs credential-validation-test.mjs cursor-subscriptions-test.mjs grok-subscriptions-test.mjs official-chatgpt-renderer-test.mjs official-chatgpt-test.mjs subscription-import-private-files-test.mjs subscription-import-test.mjs | 在专用账号环境执行登录、导入、移除和重新授权。核对原客户端登录、模型选择与其他账号。 |
| AC03 | 额度属于当前账号/服务;401/未知不显示假零;迟到刷新不覆盖新身份 | 脚本 脚本 | 使用独立授权账号登录、刷新及退出。核对当前账号、官方原始额度与实际路由。切换时检查会话亲和和凭据隔离。 |
| AC04 | 固定账号、顺序/平衡/额度策略和会话亲和符合明确选择,不静默回退、不重放已输出请求 | 脚本 | 使用独立授权账号登录、刷新及退出。核对当前账号、官方原始额度与实际路由。切换时检查会话亲和和凭据隔离。 |
| AC06 | 凭据不进普通日志、同步或回传证据;文件权限/原子保存/损坏恢复正确 | 脚本 脚本 脚本 脚本 cli-home-lifecycle-test.mjs credential-validation-test.mjs | 使用独立授权账号登录、刷新及退出。核对当前账号、官方原始额度与实际路由。切换时检查会话亲和和凭据隔离。 |
| HI01 | 开启管理、服务切换与历史分类后,原会话可见且可以 resume,原生 ID 不变 | legacy-codex-test.mjs | 在独立客户端目录创建多轮历史。执行分类、取消和恢复,核对文件差异及客户端历史。外部修改应保留。 |
| HI02 | 迁移前后正文、工具、compact 与账号/服务信息完整,不凭展示标题重建历史 | 在独立客户端目录创建多轮历史。执行分类、取消和恢复,核对文件差异及客户端历史。外部修改应保留。 | |
| HI03 | 关闭管理时,“恢复迁移前分类”选择始终可见;勾选/不勾选/取消结果各自正确 | run-history-confirm-regressions.mjs | 在独立客户端目录创建多轮历史。执行分类、取消和恢复,核对文件差异及客户端历史。外部修改应保留。 |
| HI04 | 文件被占用或外部修改时不丢数据;提示可执行的重试/继续入口 | 在独立客户端目录创建多轮历史。执行分类、取消和恢复,核对文件差异及客户端历史。外部修改应保留。 | |
| UI01 | 欢迎→按实际缺失客户端推荐→检测/导入→四步导览流程正确,返回/跳过不误写配置 | 脚本 脚本 | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI02 | 按钮 hover、焦点、禁用、确认/取消效果统一,不能悬停后透明或不可辨认 | 脚本 脚本 脚本 脚本 脚本 configuration-state-renderer-test.mjs | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI03 | 长账号详情/API 表单能滚到底部;窄窗口操作区不被遮挡,缩放后仍可操作 | 脚本 脚本 脚本 脚本 脚本 | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI04 | 深/浅/跟随系统、主窗/仪表盘/阅读页同步;明确手动选择不被系统变化覆盖 | 脚本 脚本 run-theme-regressions.mjs | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI05 | Trace 外观/动画首次出现、切页恢复和失败回退正确;模块开关不影响记录/路由 | 脚本 脚本 脚本 脚本 | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI06 | Loading/Toast/错误只表述实际完成阶段;重试入口直达对应设置,失败可继续,草稿保留 | 脚本 脚本 toast-layer-renderer-test.mjs run-trace-notice-regressions.mjs | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| UI07 | 语言切换、键盘、焦点和通知完整;沿用无中点、无装饰分隔线的产品要求 | 脚本 脚本 | 用实际系统 WebView 操作引导、表单和弹层。检查键盘焦点、草稿、Toast 遮挡及中英文布局,重启后核对偏好。 |
| LF01 | 开始/暂停/停止并发点击不倒转用户意图;有请求/工具等待时有可执行的继续或取消入口 | 脚本 脚本 toggle-renderer-test.mjs | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| LF02 | 关闭窗口、托盘保留、实际退出区分清楚;退出完成配置恢复、监听关闭和进程结束 | 脚本 脚本 脚本 脚本 脚本 | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| LF03 | 正常默认数据目录两次完整退出重启,授权、选择、历史保留,新对话正常 | 脚本 脚本 | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| LF04 | 崩溃/强制结束后可恢复,不遗留无效 localhost,不用盲目重启掩盖恢复失败 | 脚本 脚本 脚本 脚本 脚本 | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| LF05 | 单实例、启动项、窗口恢复正确,不启动重复 Gateway | 脚本 脚本 脚本 脚本 脚本 | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| LF06 | 重置确认/取消、仅 Deck 与包含核心配置的范围准确;确认后完成清理和重启 | 脚本 脚本 application-reset-private-files-test.mjs | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| RE01 | 源码提交、前端/资源指纹、EXE/app SHA、实际进程路径一致;复制失败或文件占用不误验旧包 | 脚本 public-boundary-test.mjs | 核对候选源码、资源和二进制摘要。更新须在隔离安装副本实测;Windows 替换重启和 macOS 手动 DMG 分开验收。 |
| RE02 | 更新来源、版本、平台、通道和哈希一致,不混源、不擅自选最高版本 | 脚本 脚本 脚本 | 核对候选源码、资源和二进制摘要。更新须在隔离安装副本实测;Windows 替换重启和 macOS 手动 DMG 分开验收。 |
| RE03 | 更新前排空/恢复,替换后新包真正启动;保留授权、设置、历史,真实新对话成功 | 脚本 脚本 脚本 | 核对候选源码、资源和二进制摘要。更新须在隔离安装副本实测;Windows 替换重启和 macOS 手动 DMG 分开验收。 |
| RE04 | 下载/替换/重启失败保留可用文件与明确恢复入口;不因启动确认超时杀掉新版或自动回滚 | 脚本 脚本 脚本 | 核对候选源码、资源和二进制摘要。更新须在隔离安装副本实测;Windows 替换重启和 macOS 手动 DMG 分开验收。 |
| RE05 | Windows 便携与 Mac 安装、升级体验各自验收;完整性、签名、公证、发布分别记录 | 脚本 脚本 | 核对候选源码、资源和二进制摘要。更新须在隔离安装副本实测;Windows 替换重启和 macOS 手动 DMG 分开验收。 |
| SW01 | 默认关闭;关闭隐藏顺序/添加入口但保留配置,开启恢复;Codex/Claude 独立,型号共用模型页 | 脚本 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| SW02 | 只在同服务可用账号全部确定耗尽后按明确备用顺序切换;未知额度/401/普通 429/网络错误不跨服务 | 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| SW03 | 已输出/工具/不确定请求不重放,流内耗尽只影响下一请求;关闭后解除切换亲和 | 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| SW04 | 保存失败保留最新顺序/型号并可重试,旧策略不迁移;通知与实际切换目标一致 | 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| DG01 | HTTP 5xx/传输错误有脱敏链与请求 ID,用户提示中性且有处理入口 | 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| DG02 | 修复仅处理已确认受管且失效路由,保留存活外部代理与外部修改;冲突可继续恢复 | 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| DG03 | 诊断守住 metadata-only,不导出凭据/私人正文;快速修复不被待更新整体阻断 | 脚本 脚本 脚本 | 在隔离配置中执行对应实际操作。核对原始数据、最新选择和最终结果。真实服务需另验。 |
| LF07 | 仪表盘适配屏幕、最小化恢复、全屏关闭真正释放,无空白 Space;主窗托盘独立 | 脚本 | 启动当前候选并创建活动请求与工具等待。操作窗口、托盘、停止和退出,核对恢复账本、监听与实际进程。 |
| WE01 | 首屏价值与主下载入口清楚,详述/预览在下一屏,窄屏无横向溢出 | 脚本 | 在窄屏和桌面浏览器打开本地官网。操作各预览与下载入口,检查焦点、布局、控制台及实际下载反馈。 | | WE02 | 已配置下载指向对应平台真实制品;未配置如实反馈,不伪造已发布/可下载 | 脚本 | 在窄屏和桌面浏览器打开本地官网。操作各预览与下载入口,检查焦点、布局、控制台及实际下载反馈。 | | WE03 | 内嵌 Renderer 与当前共用源码一致,长账号/API 详情可滚动,合成预览不冒充真实授权 | 脚本 | 在窄屏和桌面浏览器打开本地官网。操作各预览与下载入口,检查焦点、布局、控制台及实际下载反馈。 |