# 验证记录 本文件含早期版本的开发历史,预览和端口连线等旧交互已移除;当前操作以 [README](../README.md) 为准。0.2.1 发布审核及修复范围见 [RELEASE-AUDIT.md](RELEASE-AUDIT.md)。 目标:Windows / DeepSeek Harness 0.2.0-rc.2,使用本机发行包中的真实 Session、持久化格式解释器和完整 Web Host。 ## 0.2.1 发布验收(2026-10-16) - 18 项测试通过,包含使用真实 DSH Session 的服务回归:分支去重、置顶豁免、归档恢复、取消回退;内部轮次分阶段完成后待输入节点仍可移动,真实用户轮次完成后转正并继承坐标。 - 原生 Session / V4 重放通过:调整后模型上下文为 `1 → 3 → 4`,工具调用与结果保持配对。 - 原生 GUI 导航通过:单击只选中,双击和 Enter 定位,拖动不跳转,删除自动桥接及撤销恢复。 - 独立四轮夹具 GUI 分枝验收通过:即时待输入节点、重复点击复用、浏览其他枝后保留、坐标拖动及刷新恢复、返回已归档的待输入分支、首轮实际模型上下文、根分枝无旧用户历史、取消及恢复已有叶分枝。 - 标准 `.tgz` 已在未预装 tree-chat 的空白配置中,通过真实 **插件 → 添加插件 → 安装 → 立即启用** 流程成功安装;辅助安装器的备份、卸载和旧名迁移检查通过。 - GUI 验证统一定位当前可见面板;宿主保留的隐藏面板不计入节点数量。图数据和原始对话均来自隔离夹具,未向外部模型发送测试请求。 - 深浅主题及 320 / 480 / 650px × 700 / 1000px 侧栏布局验证通过,待输入节点在 320px 画布内可见;切换和搜索断言等待实际 UI 状态提交后执行。 - 独立源码环境无需宿主运行时即可构建、打包:16 项核心测试通过,2 项原生集成测试明确跳过,生成的客户端与发行源码一致。 - [GitHub CI](https://github.com/DevourerM/tree-chat/actions/runs/38839144550) 在 Linux / Node.js 22 上通过构建、已提交运行文件一致性、核心测试及标准包校验。 - 正式 [v0.2.1 Release](https://github.com/DevourerM/tree-chat/releases/tag/v0.2.1) 发布后,在另一份未预装插件的空白 Host 中,将其公开 `.tgz` URL 填入原生安装界面,完成下载、安装与立即启用;安装记录为该 HTTPS 地址,实际版本为 0.2.1,客户端 SHA-256 与已验证源码一致。 ## 已通过 - 14 项核心测试:删除中间节点并重接、断开及重连、环路拒绝、整枝删除、撤销/重做、版本冲突、原子存储、异常数据、完整工具配对、未结束轮次、用户输入来源识别、旧标题迁移、折叠视图、成组删除、位置验证和重建后的消息坐标定位。 - 真实 Session 派生与重放:重建后的用户历史严格为 `1, 3, 4`;工具调用与结果保留。 - 真实 V4 物理事件编码和跨事件关系验证:轮次/步骤、系统提示、请求头及工具生命周期均有效。 - 原生 GUI:页头入口、右侧原生 Sidebar tab、节点预览、缩放平移、深色和浅色主题。 - 真实 GUI 删除节点 2,自动导航新枝,然后通过原生编辑器发送消息:本地测试模型实际收到 `1 → 3 → 4`,没有节点 2。 - 真实 GUI 从节点 1 长枝,发送新消息:只继承到节点 1,独立生长,其他分枝保留;上一枝通过原生归档收纳。 - 真实鼠标拖动端口重连、键盘断开连线、两次撤销,无页面异常。 - 完整 Host 重启后恢复已归档枝,通过原生编辑器继续聊天,新节点正确持久化,模型历史仍为 `1 → 3 → 4`。 - 从未安装插件的空白配置,通过真实 **插件 → 添加插件 → 本地 .tgz 路径 → 安装 → 立即启用** 完成标准分发包安装。原生插件列表显示中文名称、说明、图标和启用开关。 - 标准包完整性检查:`dsh.bundle` / `dsh.client`、导出项、元数据资源和全部运行文件齐全;不含安装生命周期脚本、测试数据、DSH 解包文件或本机运行路径。 - 本机辅助安装器:dry-run、安装、完整资源、备份和卸载;保留安装后用户另加的依赖。 - 改名迁移:旧包启用项和依赖替换为 `tree-chat`,保留图数据路径,不重复激活旧包。 - 与实际网页模型 Sonnet 5.5 高完成界面评审后,验证新版真实侧栏 320 / 480 / 650px × 700 / 1000px、深浅主题、节点可读字号、折叠详情、键盘选择与搜索,无工具栏溢出或页面异常。 - 在 320px 侧栏删除当前末端节点,自动切换到有效原生上下文;撤销恢复节点,切换过程无临时渲染异常。 - 0.1.1:模拟 0.1.0 图数据升级,权限提示和目标续跑默认折叠,混合轮次标题使用实际用户输入;可切换完整轮次。 - 0.1.1:真实鼠标拖动节点、缩放后拖动、连线实时跟随、刷新后位置恢复、移动撤销/重做、Esc 取消、自动排列及其撤销;未生成任何额外上下文 Session。 - 0.1.1:从折叠后的用户节点建立分枝,通过原生编辑器发送后,本地模型实际收到此前自动续跑及配对工具结果,没有误带另一条用户输入。 - 0.1.2:底部预览完全移除,客户端不再请求预览;点击节点定位原生聊天消息,从轨迹自动切回聊天。跨枝消息优先在当前会话匹配消息 ID,否则浏览已有来源会话,不新增 Session。 - 0.1.2:真实拖动节点不触发跳转;端口放到正文上取消,端口对端口才重接;右键/省略号菜单保留节点操作。 - 0.1.2:80 轮长对话首次未加载的第 1 轮,通过公开 Session 历史加载接口补页,键盘跳转到真实消息后保持可见;无分叉、无预览请求。 - 0.1.3:原生深浅色界面显示「起点」圆角标签;点击定位首轮,拖动保存位置且不触发跳转,输出端口独立起线,缩小概览仍保留起点名称,无页面异常。 测试聊天使用隔离配置及本地假模型,无外部模型请求。用户的日常对话未用于测试。 ## 复现入口 ```powershell npm run build npm test npm run check:host npm run pack:plugin node scripts/install-smoke.mjs ``` `check:host` 需要通过 `DSH_DEV_RUNTIME` 指向目标 DSH 的已解包 `node_modules`。GUI 测试脚本位于 `scripts/ui-*.mjs`,需要独立 Playwright、Chromium 和隔离 Host。`TREE_CHROMIUM` 指定测试浏览器路径,命令行参数为隔离 Host 的认证 URL。测试中保留的截图在 `artifacts`,不随插件发布。 当前发布包的大小与校验信息见 `dist/checksums.json`。公开发行位于 [GitHub Releases](https://github.com/DevourerM/tree-chat/releases),未发布到 npm。