# 自检与验收 各层证据分开记录:单元测试证明逻辑和入口契约;夹具证明补丁声明与宿主 HEAD 对齐;真实安装、浏览器和沙箱行为需要实际操作。历史部署事实保留在 [重构前验收](acceptance-history.md),不代替当前工作树的验收。 ## 仓库检查 在插件根运行: ```powershell npm run check npm pack --dry-run --ignore-scripts git diff --check ``` 522 项,覆盖补丁声明方向、模式贯通、声明指纹、配置校验(默认值补齐、类型错误定位、未知键透传、与装配补丁行键一致)、执行层预算配置化(覆盖只改指定档、非法键与跨字段拒绝、doctor 与提交同源、读回不可用与不一致分开)、档位来源不可判定与真只读分开报告、规则恢复链、落点快照所有权、非法 target 拒绝、删除保留归属、锁恢复、预算合并、装配落点、注入是否进入系统提示、请求体上限、HTTP 主机栅栏、响应脱敏、回退恢复链与预检、状态清单重建、事务、失败凭证保留、回滚失败、漂移拒绝、并发锁、规则损坏索引的拒写与恢复、规则写入文件所有权、落点字节保真与内容不变不重写、非 UTF-8 落点跳过收拢且字节零损失、读失败与文件不存在分开、激活覆盖外部改动前留副本、落点写入哈希持久化与旧索引回退、孤儿快照保留副本、激活中改 target 报实际落点、激活提交冲突的状态如实与回滚、切档两入口预算随配置提交、词库读取未完成拒写、HTTP 信封校验、失败路径脱敏与含空格路径整段处理、写盘故障与 unknown_patch 错误码分开、兜底段落点下标与正常路径字节护栏、并发冲突 409 状态码与输入错误分流、档位归因与未探测徽章、defaultPreset 降级、旧格式记录升级后切档一次成功、回滚后事务目录可清理与指针守卫、原子写 fsync、偏好写入跨进程互斥与锁释放、前端加载序号守卫与切档结果未知三态、删除身份锚定、词库上限随接口、规则草稿守卫、浮窗读回夹边、更新弹窗代号守卫、自动检查失败态、CLI 未知参数与多动作拒绝、预检跳过退出码、哈希表归属校验、声明层数字守卫、坏 import 检测、rebuild-state 零采纳拒写与备份不覆盖、宿主根解析、审批分流、提示词模式、档位回落、补丁选择、目标词表的校验与长词优先替换、CLI 环境诊断、设置页五页导航的键盘焦点与两个落点的注册、正文读取失败防覆盖、保存期间草稿保留、保存响应按编辑器实例判定不误留同 id 旧内容、status.ensure 出网脱敏、收尾记录与清单失配的死锁出口与如实报错、规则保存不自动激活、词条校验的 64/100 边界、词条覆盖与合并的整表计算、词库共享写入的串行与过期响应、读取告警按失败处理、本地预览与 maskText 一致、浮窗「管理词库」的导航与降级、弹窗关闭后的焦点归还、浮窗布局的脏记录回落与夹边、浮窗组件的渲染与三段结构、增强版 Dialog 的 ack 勾选与 confirmWord 输入强校验、consequence 风险分级与后果提示行、StateBlock 居中四档状态与数据保护行、Notice 升级状态色阶与保护声明、Term 术语释义组件与键盘可访问性、PageTip 引导卡片渲染与收起隐藏、增强版 PageHead 生效时机图标化徽章与自定义覆盖、Term 在页面状态卡与标题中的实际挂载与无障碍契约、4 阶段进度流、壳层品牌区与页签角标/脏点/错误徽章(词库为读取失败或过期)、PLUGIN_VERSION 与 package.json 同步守卫、概览页 action-card 与 columns、Guide 三步(第三步完成条件连待写入文件数一起判)、status-footer、帮助 Dialog、脱敏技术诊断折叠复制、补丁行高光微渐变与模式门禁、吸底悬浮操作栏、两档模式权衡要点与预算渲染、切换时横向对比表、Prompt 编辑器脏状态高亮与字节数精确计算、Prompt saved-mark 与读取失败态、模式卡 bolt 图标、规则 ID 计数、规则页清单损坏与空态 StateBlock 居中渲染及数据安全声明、规则删除与重置安全把手强校验、目标词库页双栏响应式布局、实时长词优先匹配药丸、词库表头与图标操作钮、100 条容量守卫与满额报警、会话浮窗微窗口外观与前 3 条截断、浮窗 dock-panel 换皮(dock-section 分区、滚动阴影、独立页脚、紧凑模式卡差异说明与 hover 作用域)、深色语义色覆盖以 body 上的实际调色板属性为条件(跟随系统时也生效)、开关与勾选框按宿主 ui-primitives 取尺寸与取色(含受控 onToggle 的技术诊断默认展开)、预检阻断与宿主目录说明弹窗(只读弹窗,不传 yes/run)、版本比较与更新状态落盘(每天一次、并发去重、失败保留、开关关闭不联网、代理来源识别、手动检查不受当天限制并刷新日期、忽略版本与 newer/hasUpdate 区分、失败码与状态损坏回落)、损坏的更新状态先备份再重建且备份失败拒写、忽略版本落盘归一化、检查更新路由的两类错误码与内部错误文案脱敏、代理 CONNECT 的拒绝路径与 Proxy-Authorization 头、https:// 代理拒绝、P1 设计系统的 Tag 前置圆点与 Button link/icon 形态、Dialog 头部图标块与 success 成功说明块、Toast 视觉层与 Announcer 分离、常驻 sr-only 播报、Toast 4200ms 计时替换与卸载清理、复制失败走 Notice 不出 toast,以及 HTTP、命令、模型工具的入口一致性。测试数量随用例增加变化,以命令输出为准。 期望 `tests 522 / pass 522 / fail 0`;接口一致性检查通过(83 个文件)。语言检查验证 757 个语言键及 710 处引用,不渲染 DOM。 入口一致性用例通过插件装配登记真实命令、工具及 HTTP handler,再修改补丁开关并分别调用。数据目录和源码目标均使用夹具;它不证明真实 WebServer、浏览器登录或沙箱进程已通过。 聚合检查依次执行发布源一致性、接口一致性、界面语言包、测试和文档数字校验。数字工具明确使用 `spec` reporter;任何上游测试失败都应使聚合检查失败。 发布工具用例还覆盖错版标签、完整 SHA 失配、未提交文件排除、附件缺失与篡改、伪造哈希、草稿重复上传与中断恢复,以及拒绝修改已发布版本。恢复用例覆盖同秒备份隔离、等长损坏内容拒收和回退写后复核。 ## 固定宿主对账与预检 ```powershell $DshRoot = 'D:\host\deepseek-harness' npm run reconcile -- "$DshRoot" npm run check:host -- "$DshRoot" ``` 对账应确认宿主 HEAD、插件版本声明与哈希来源一致。当前声明为 5 条补丁、10 个声明目标(推荐模式启用 4 条,`minimal.unfreeze` 只在完全解放里存在);夹具导出 10 个文件,按全部声明预检产生 12 条结果、干净目标版本待写入 10 个文件(推荐档为 11 条结果、9 个文件)。另有 8 项宿主能力断言随预检一并执行。 `check:host` 从宿主 HEAD 导出临时夹具并清理,不写宿主工作树,也不检查其未提交修改。实际目标的预检用: ```powershell node src/cli.js --host-root "$DshRoot" --status ``` ## 干净安装验收 在独立宿主副本及全新的 `DSH_HOME` 中按 README 执行。副本的运行解析和补丁目标都应指向副本;仅复制目标文件后仍启动日常宿主,不算隔离安装验收。 | 阶段 | 成功判据 | | --- | --- | | 新建 profile | 使用 Web 模板;base、web-app 均存在 | | 安装 | 依赖链接本插件,bundles 登记本插件 | | 首次应用 | 预检通过,仅声明目标变化,事务记录与快照完整 | | 重复应用 | 不重复修改,状态不新增虚假写入 | | 启动 | 新端口实例可用;其他实例未被中断 | | 命令 | `/breaklimit status` 成功,宿主根正确,HTTP 已挂载 | | 界面 | 设置入口存在,五个页签可切换,无控制台错误 | | 提示词与规则 | 保存后能重读;激活、取消激活和外部漂移符合所有权规则 | | 词库 | 新增、覆盖、合并、删除后重读一致;读取失败禁止写入与预览;本地预览与 maskText 一致 | | 检测更新 | 当天只查一次;关闭「每天自动检查一次」后不联网;忽略某版本后提示消失,手动检查仍显示 | | 选择 | 关闭补丁后各入口预检一致;CLI 应用尊重选择 | | 回退 | 与当前开关无关,按事务恢复;恢复后与原版本相同 | | 移除 | 依赖及 bundle 均移除,用户数据保留 | 浏览器复验需要检查中文和英文、折叠项、确认与取消、空状态、失败反馈、键盘焦点及 200% 缩放。截图只覆盖实际页面和数据,不代表未执行的动作通过。 ## 沙箱与运行时 - 完全权限档:普通审批与升级审批的接管按设计执行。 - 只读档:写入被阻断,升级被拒绝;普通审批交还宿主。 - 工作区档:工作区外写入被阻断,不能借插件升级到完全权限。 - 提示词双点:装配前后点均存在;超限文件报错,不注入截断正文。 - 声明改写:匹配当前宿主措辞,未识别计数可见。 这些场景需要真实宿主触发源;缺少触发源时记为未验证,不用计数为零推断故障或通过。 ## CI 与发布 CI 在 Windows、Ubuntu 的 Node 22.19、24 上执行仓库检查和打包预览;独立任务读取固定宿主提交执行对账与夹具预检。它不启动实际宿主,也不自动提交、部署或发布。 本地通过、CI 通过、安装通过和现场验收分别记录。发布前按 [发布检查清单](releasing.md) 填写结果,截图注明对应版本、浏览器、后端和验证边界。 ## 2026-10-17 未发布版本的本地验收 Windows、Node `24.21.0`、Edge `155.0.4283.45`。宿主源码从绑定提交单独导出;复用本机已有依赖与构建产物,确认 app-boot、system-prompt 和 tool-fs 的源码解析指向副本。数据目录及监听端口独立,不属于全新机器环境安装测试。 | 项目 | 结果 | | --- | --- | | 按快速安装创建 profile、安装插件 | 通过;Web 模板包含 base 与 web-app,插件链接和 bundle 均登记 | | 应用与重复应用 | 通过;9 个文件变化与事务记录一致,重复应用不改变源码或事务 | | 真实 HTTP、设置入口与中英文分区 | 通过;预检为 ok,HTTP 已挂载,英文补丁技术说明无中文混入 | | 补丁开关、提示词保存与模式切换 | 通过;真实后端保存并重读 | | 规则保存、激活、取消与外部漂移 | 通过;外部修改被保留 | | 确认取消、分区键盘焦点、200% 缩放表单 | 通过;键盘焦点问题已补回归测试并修复 | | 错误反馈 | 通过;仅此场景对状态请求注入模拟失败,其余使用真实后端 | | 浏览器脚本错误 | 中英文检查均为 0 | | 回退、卸载与数据保留 | 通过;16,224 个受跟踪文件恢复到副本基线,依赖与 bundle 移除,用户数据保留 | | 日常宿主保护 | HEAD、工作区状态及差异摘要未变;测试实例和所属辅助进程已停止 | 未验证:GitHub Actions 的实际运行、Ubuntu 真实安装、其他 Node 版本的本地运行、实际斜杠命令提交、模型推理和三档沙箱的完整现场行为。隔离环境未配置模型;命令目录可见,命令及模型工具 handler 的一致性由仓库入口测试覆盖。 README 的截图来自上述真实设置页;规则与提示词操作使用临时测试正文,未使用日常配置、账号或用户规则。 ## 本轮修复的额外验证 仓库回归包含新落点读取失败、同落点提交失败、提交后子进程退出与启动收尾、收尾 I/O 与清单提交故障、重建锁冲突和无效快照筛选、词库结果未知的排队写保护、规则保存期间草稿、取消失败的中英文反馈,以及真实代理连接超时释放。 真实渲染器检查使用已有固定宿主构建,不安装依赖、不调用模型: ```powershell node tools/check-host-prompt.mjs <宿主根> [修改前源码副本] ``` 有基线时,对两档模式、有无 persona 的 4 组普通正文比较最终字节;8 组模板正文检查字面保留,并确认旧实现抛错。它覆盖真实渲染器和插件接缝的集成,不替代完整宿主启动、浏览器或模型效果测试。