Skip to content

Latest commit

 

History

History
88 lines (65 loc) · 9.32 KB

IMPLEMENTATION_0.8.0.md

File metadata and controls

88 lines (65 loc) · 9.32 KB

0.8.0 目标与执行记录

开始日期:2026-10-19。状态:本地实现与候选包验收完成(2026-10-20);尚未发布。

用户确认的范围

本版实现七项新功能:同步预览、自选模型(收藏/隐藏/仅同步收藏)、逐模型推理配置与预设、调用诊断(连接/流式/工具)、额度提醒、模型变化通知、配置导出与恢复。修复全量审查问题。暂不新增多账户管理;已有实例之间不得互相误删配置。

不把模拟调用当作真实模型验证,不在用户现用 profile 上试验,不在定时同步中自动发起付费诊断。导出默认不含密钥或自定义敏感请求头。

阶段计划

  • M1:共享配置与领域模型。实现模型策略、同步差异、额度提醒、变化通知和可校验的导入导出;修复目录与用量数据问题。
  • M2:宿主集成。接入新配置和桥接动作,统一写入协调、修复生命周期、搜索与探测,后台同步不发模型请求。
  • M3:前端交互。模型管理、预览确认、推理预设、诊断、提醒与通知、导入导出及上下文设置;防止迟到写入。
  • M4:契约与验收。把审查项转成回归,验证 Node 与最终安装包;进行可用的隔离宿主/浏览器验收并记录真实限制。
  • M5:交付。更新版本、文档和迁移说明,生成 0.8.0 安装包,汇总完成项与未完成验收。

数据与行为约定

  1. 模型策略按模型 ID 保存,支持 favorite、hidden、reasoningPreset、reasoningEfforts、contextWindow、maxTokens 等明确覆盖;onlyFavorites 是独立开关。
  2. 同步先构造计划。预览不写 provider、不探测模型;确认应用前重新计算并校验配置/源数据代次。对话框显示实际新增、更新、移除与冲突。
  3. 上游源暂时失败时优先使用最后成功快照。没有快照时明确未知能力,不把已有视觉能力覆盖掉;不把失败误认为模型全部下架。
  4. 后台同步只同步目录。诊断由用户明确点击触发,展示请求数量与可能计费,支持取消。
  5. 提醒以账户窗口、余额与上次状态为依据,只在跨阈值或恢复时新增事件;变化通知对模型新增、移除、能力和优惠变更去重。
  6. 导出使用版本化 JSON;导入先校验和预览,明确选择替换/合并,再由用户点击应用。默认不导出密钥、凭据引用、自定义接口与请求头,避免将配置导入变为凭据外传路径。
  7. 生命周期以生成路由归属、有效备份代次与恢复状态为依据;不能通过备份反复复活主动删除的路由。清理失败须保留可恢复数据。

证据记录

  • 起始回归集:398 项通过。
  • 审查证据:见 AUDIT_0.8.0.md 和 scripts/audit-0.8.0.mjs。
  • 尚未发布 0.8.0,也未执行真实付费模型诊断。

已完成验收(2026-10-19)

  • Node 24.15.0:npm test,436 项全部通过。
  • Node 20.20.2:npx --yes --package=node@20 node tests/run.mjs,436 项全部通过。
  • git diff --check 通过。客户端直接维护,无额外构建步骤。
  • 从 npm pack 的 0.8.0 tgz 安装到独立 scratch/0.8.0-package-home,真实宿主为随 Desktop 安装的 dsh 0.2.1-rc.2 CLI,运行 Web profile;未修改用户现用 profile。
  • 本地网关 fixtures:预览不写路由;仅同步收藏后实际发布 1 个模型;同步未发起模型请求;连接/流式/工具诊断各请求 1 次、均通过;工具未执行。两次用量读取只产生 2 条跨阈值通知;导出不含假密钥/接口,导入预览与原子应用通过。
  • 可重复脚本:scripts/fixture-server-0.8.0.mjs 和 scripts/verify-host-0.8.0.mjs。后者固定检查本地测试地址,拒绝对非 fixture profile 执行。宿主验收输出:scratch/acceptance/package-host.json。
  • 真实浏览器:新插件入口、模型管理、同步预览、诊断选择、通知、导入导出与上下文设置可加载;窄窗口表格可横向滚动,模型区域限制高度。
  • 真实启停:先复现关闭后模型仍在。根因是 HMR transactions cannot be nested,单纯延迟 Promise 不能清除宿主继承的事务标记。修复后配置中的 providers 变为空,真实模型选择器显示“暂无可用模型”。截图:scratch/acceptance/disabled-models.png。

回归证据索引

2026-10-20 最终验收补充:

  • 面板卸载额外复现了 package.json.lock 与 HMR 的锁顺序问题;清理现先等待 profile writer 释放锁,再进入新的设置事务。晚挂载 HMR 服务改为在清理时从根上下文查询,不能在启动时缓存空引用。
  • 最新 tgz 在真实插件面板卸载成功,生成配置变为 providers: {},模型选择器显示“暂无可用模型”。截图:scratch/acceptance/uninstalled-models.png。命令行卸载亦通过。
  • 重装后在 autoSync: false 下恢复 1 个已发布模型及深入预设,未收藏模型保持未发布;恢复备份消费为 {}。
  • 修复安装/HMR 初期桥接尚未就绪留下的旧 404 状态;管理状态成功后重新读取本地供应商状态,无额外账户请求。
  • scripts/verify-package-0.8.0.mjs 验证包内 33 个文件逐字节匹配当前源码;不含 scratch、测试、node_modules 或测试 profile。
  • 最终候选包:scratch/acceptance/dsh-commandcode-goat.tgz。最新 SHA256:fb81ef796b42504fa81569299ee7c40bf97b197aa2239537a99439ad5baba2fd,另存于同目录 SHA256SUMS。
审查项 正确行为的回归位置
B01、B03、B06–B11、B13、B14 tests/audit-regressions.test.mjs
B02、B04、B05、B12 tests/management.test.mjs、tests/management-host.test.mjs、tests/provider-lifecycle.test.mjs
B15、B16、保存原子性 tests/client.test.mjs 与真实浏览器
B17 tests/catalog.test.mjs,真实宿主接受生成的推理映射
R1、R2、R4 tests/provider-lifecycle.test.mjs
R3 真实 Web 宿主启停 + HMR AsyncLocalStorage 回归
R5、R6 tests/probe.test.mjs、插件/桥接契约测试
七项新功能 tests/management*.test.mjs、tests/diagnostics.test.mjs 和真实宿主 fixture 验收

额外修复:流式终止标记后不断开连接导致超时、诊断正文回显凭据、恢复默认预设被误认为手改覆盖、账户读取迟到、临时用量失败导致重复提醒、偏好变化被误报为上游模型下架。

验证边界与发布状态

2026-10-21 界面收敛:按照用户反馈将长页面改为「概览 / 模型 / 用量与提醒 / 设置」四个页签。概览只显示套餐和同步;模型页独立,诊断默认折叠;提醒阈值、更多开关、配置迁移和上下文参数按需展开。保留隐藏页签中的草稿和交互状态,支持方向键、Home/End 导航。新增可见内容分区与键盘回归,Node 20/24 各 438 项通过。通过链接源码在真实宿主浏览器验证首页、模型、设置与同步预览,未执行模型诊断。候选包已重新生成,30 个文件逐字节匹配当前源码。截图见 assets/settings-overview-0.8.0.png 及 scratch/preview/*-clean.png。

  • 未新增多账户管理;同套餐的独立账户 key 方案与管理界面仍按用户要求暂缓。

  • host-scheduling.js 对 dsh 0.2.1-rc.2 的 HMR 内部 AsyncLocalStorage 做功能检测;它不是公开稳定 API,后续宿主变更需要重新验收。

  • 原生 Desktop 窗口、强杀进程、多个进程同时编辑同一 profile、真实付费模型、真实长会话效果没有在本次验收中验证。无法持久备份时保留路由并记录失败,避免丢失自定义配置。

  • UPGRADE_0.8.0.md 保留原始审查设计清单,包含调查项、发布流程及暂缓的多账户扩展;不把其中每条设想都宣称为已完成验收。

  • 发布渠道为 GitHub Release v0.8.0,附带 dsh-commandcode-goat.tgz 和 SHA256SUMS;不额外发布 npm。市场刷新时间由市场决定。

  • 模型管理补充:推理选项统一使用 Default / Off / Medium / High / Custom;表格高度限制为 min(420px, 55vh),内部滚动并固定表头,显示筛选数量及空结果提示。用隔离预览的 40 个测试模型验证到底部、固定表头和无结果搜索;前端 82 项测试通过。

2026-10-21 发布前复验

  • 再审修复:后台管理刷新迟到覆盖刚保存的偏好;OpenAI 仅返回 finish_reason、连接保持打开时诊断误超时;HMR 后客户端保留旧样式。分别增加回归测试。Node 20.20.2 / 24.15.0 各 441 项通过。Windows 临时测试目录清理增加原生重试,处理偶发 ENOTEMPTY。
  • 独立 scratch/release-0.8.0-home、33191 端口,从发布 tgz 全新安装;确认安装路径不是源码链接,包内 33 个文件与工作区逐字节一致。verify-host-0.8.0.mjs 33191 验证同步零生成请求、三项诊断、提醒去重及导入导出均通过。
  • 运行中命令行卸载:providers 变为空对象,私有备份保留;同 tgz 重装后自动同步关闭时仍恢复 1 个供应商,备份消费为空对象。历史 Web 面板停用/卸载验收见上文。
  • 更新 assets 中五张 0.8.0 实际宿主截图、README 和 screenshots.json。截图使用隔离 profile 的本地模型与账户 fixture,未使用真实账户或付费请求。
  • 最终包 SHA256:fb81ef796b42504fa81569299ee7c40bf97b197aa2239537a99439ad5baba2fd。