# 验证记录 ## 0.3.5 通用组件布局保护与极限回归 修复由标签白名单扩展为根据实际 display 判断的可逆运行时处理,覆盖内置卡片、提示、指标和决策组件。保留作者后续的 hidden/flex/contents 切换;正常流固定高度、多层受限中间层和浮动溢出按证据扩容;狭窄单元格缩减装饰性内边距;极长数值完整换行。加入 answer-inline-note 与 answer-cell-detail 明确用途。控件、受控折叠、滚动区域及 SVG 子树和定位图形不参与普通卡片修复。 测量与修改分批执行,并在自身修改期间暂停 MutationObserver、finally 恢复。7000 个短卡片约 217KB 的独立探针从 22.6 秒降至约 0.29–0.43 秒,完整 AnswerView 终验 229ms 就绪。 60 项 Node 测试全部通过(无跳过),34 组组件浏览器测试、5 组极限压力测试全部通过;原有交互与布局回归、原始矩阵和真实历史柱状图在 1100/390/263px 及窄宽恢复下通过。极限覆盖 256KiB、7000 密集卡片、24 层嵌套、1000 节点动态增删、6000px 以上长文与稳定后的持续重排检查。详细设计与支持边界见 test/COMPONENT_LAYOUT.md。仅在本机 Chromium 验证,不声称任意 CSS 或所有浏览器均不会出错。 ## 0.3.4 表格内提示遮挡价格修复 用户保存的估值矩阵使用 `价格
涨跌幅`。原来的行内提示带有上下 10px 内边距,却不参与行高计算,16 个单元格均出现约 4.53px 的重叠。已让 span/small 提示使用 inline-block 参与排版,并将表格内的行内提示收紧为无背景、无内边距的次要文字。段落提示仍保留原有块状样式。生成提示补充了表格次要数值的用法。 回归测试直接使用该矩阵 HTML:1100、390、320、263px 四种外层宽度,浅色/深色两种主题,检查价格与涨跌幅无重叠、标签完整、内容不越出单元格、页面无横向溢出,同时检查段落提示和普通行内提示。修复前测试因 16 格全部重叠而失败;修复后通过。60 项 Node 测试(无跳过)及完整浏览器回归通过。 ## 0.3.1 实际窄屏图表与真实回答验收 真实桌面聊天窗口宽 390px 时,iframe 实际仅有 263px。复核历史柱状图样例发现,按 `scrollWidth` 直接重排网格会把标签较长的一行单独改成上下布局,导致不同年份绘图区宽度不同;三个指标的数字也被拆在小数点或百分号处。 修复区分网格列本身溢出与绝对定位图表标签溢出。数值外侧空间不足时移入足够宽的柱内,使用对比色;放宽后恢复外置位置与原色。指标数值保持完整,空间不足时调整整个指标网格。独立 Chrome 复核真实 HTML 在 691→263→691px 下,所有年份轨道始终等宽,柱长比例保持正确,标签完整,高度正常恢复;没有改写保存的 HTML 或历史消息。 60 项 Node 测试通过,无跳过;完整浏览器回归 12 组通过。新增真实 263px 检查覆盖上述图表比例、数值完整性及放宽恢复;原有 CSS 折叠面板、原生 details、隐藏内容、SVG 裁剪、自然增高收缩与真实滚轮回归继续通过。 真实默认模型在不含网页、图表、卡片提示词的费用比较与四周实施问题中,主动创建两个独立块。最终答复顺序为计费口径说明、成本比较、关于试用量预测的衔接、四周时间线。检查全部成本与临界点正确,时间线逐周包含目标、负责人角色及通过条件;新增建议门槛有明确说明。三列费用表适合逐项查值,未强加装饰图。正文没有重复完整表格或计划。 实际桌面后端的浏览器显示两个 iframe、零末尾重复块,1360/780/390px 及窄屏暗色均无可见横向裁切、内部滚动或脚本错误。窄屏两个块分别自然展开为 586/1390px;较长时间线保留完整要求,通过外层聊天滚动阅读。检查时先将每个 iframe 滚入视口,再等待尺寸更新,以免把 Chrome 对离屏 iframe 的动画帧节流误判为裁切。 三个反向案例均由真实默认模型完成:简单乘法、同事消息错别字的普通建议、明确要求一段纯文字的费用比较。均未调用 `render_answer`,实际打开聊天也没有 iframe。测试会话归档保存,未改写原有用户会话。 第二个普通提问使用六周假设注册、首任务及 D7 数据,模型主动创建趋势图与两周验证安排两个块。正文保留候选原因及其验证依据,不重列图中数字。三组比例、人数增幅、百分点变化和 SVG 坐标逐项核对正确;图表共用 0–60% 刻度,分母与包含关系有说明,未将相关现象当成已证实原因。真实窄屏预览的标签虽较小,仍可辨认且没有碰撞或裁切。 初始批次遇到共享连接瞬时断流,失败请求未计入行为验证。两个复杂请求在约 204ms 内同时 `terminated`,重试才显示 `fetch failed`;它们不是固定 60 秒超时,也没有产生可验收回答。连接恢复后串行测试成功,未更换默认模型、账号、代理或超时设置。 ## 0.3.0 卡片质量与自然滚动 重新检查桌面版实际安装状态,确认此前为 0.2.1。一个历史图表回答在桌面聊天中出现 iframe 高度约 719px、内部文档滚动区域约 841px 的不一致;窄屏也有同类情况。该记录用于只读回归,未修改原消息、存储页面或其中的数据。原始会话、页面数据及认证信息不包含在仓库中。 展示指令改为以视觉价值决定是否生成卡片,明确普通说明、简单事实、寒暄和纯文字要求无需卡片。新增 `answer-*` 样式供指标、比较图、时间线、决策与交互控件复用,避免污染旧回答常见的自定义类名。320/760px 的明暗主题样式检查无横向溢出或内部滚动;旧 `.metric`、`.note`、`.legend` 不会因新增样式获得背景、留白或文字颜色覆盖。 内嵌 iframe 按内容自然伸缩,移除 1600/2400px 限制;测量包含 body 留白、可见定位内容,并排除隐藏、折叠和被裁剪的部分。常见整页高度与说明滚动面板适配为正文布局;原生输入控件保留自己的交互。独立审查使用真实 Chrome 重现并验证修复了:CSS 折叠面板无法收起、关闭的原生 details 占用大块空白、裁剪 SVG 的不可见图形撑高 iframe。折叠→展开→收起均能恢复原高度。 60 项 Node 测试通过,无跳过,使用桌面真实 SDK。覆盖新增的无旧高度上限及重新收缩,并保留多块位置、历史恢复、状态持久化、版本冲突、错误回退和 iframe 隔离验证。 完整浏览器回归 12 组通过,包含历史图表 HTML 的桌面和窄屏复现。实际鼠标操作验证内容增加、收起以及滚轮跨 iframe 滚动外层聊天,参数在伸缩后保持;宽表格和固定列布局能在窄屏重排。两个旧版演示中的 Chrome 156 鼠标命中不稳定操作改用原生键盘聚焦加 Enter,新增滚动与内容伸缩检查仍使用真实鼠标输入。 ## 0.2.1 默认按主题生成多个块 0.2.0 具备多个位置标记和独立内容块的渲染能力,但默认指令没有明确要求分别调用工具,上次真实模型验证也只有一个图文块,不能据此声称默认已会拆分。 0.2.1 明确区分「一个 HTML 内有很多卡片」与「多个独立的正文嵌入块」:多个适合可视化的主题应分别创建,通常为 2–4 块,并以有用的文字衔接;紧密相关的单个视觉主题仍可使用一个块。此为模型行为指导,不是强制语义分割器。 59 项 Node 测试通过,无跳过,使用真实桌面 SDK。新增客户端回归覆盖「文字 → A 块 → 文字 → B 块 → 文字」,即使工具回执顺序相反仍按正文位置展示,末尾不重复显示。真实 assembler 回归覆盖两个独立块及其中一个的更新,验证完整历史、冷启动、补载历史和实时追加一致。 通过桌面插件管理器安装 0.2.1 后,以默认模型创建临时会话,普通提问同时要求比较假设收费方案和安排四周实施计划;问题未提到网页、卡片、图表或拆分方式。模型主动生成两个具有不同 ID 的 `render_answer` 结果,最终回复依次为费用口径说明、成本比较块、转向实施条件的文字、四周安排块。两个标记都有效,正文未重复成本表或实施计划。本次真实模型生成约用时 6 分钟。 重新打开测试会话并连接真实桌面后端,浏览器确认两个 iframe 按正文位置显示,中间有解释文字,末尾没有重复回退块,没有页面或组件运行错误。截图检查确认表格内容显示;较宽的实施安排表提供有名称且可聚焦的横向滚动区域。测试会话已重新归档,未改写原有用户对话。此例证明多块自动生成及显示链路实际通过,不保证所有模型在任意提问下都完全遵从该规则;旧回答也不会被自动拆分。 ## 0.2.0 默认图文与正文内嵌 新增默认展示指导:适合趋势、比较和解释的回答主动生成紧凑内容块;简单问答及用户指定格式保留普通文字。生成成功后按返回的位置标记嵌入最终答复,禁止在 Markdown 中重复图文块的完整内容。 58 项 Node 测试通过,无跳过,启用了桌面版真实 assembler 和过程分组器。新增覆盖位置标记、流式半成品、代码示例排除、同轮成功回执绑定、重试、被折叠中间步骤的回退、原生渲染器复用和注册失败时保留页面。嵌入组件的 7 组浏览器流程通过,覆盖紧凑外观、自然高度、选项、错误显示及追问确认。 在连接实际桌面后端的认证 Chrome 中,用客户端内存里的合成答复检查相同已保存页面:同一助手节点内顺序为文字、iframe、后续文字;仅一个 iframe,末尾没有重复页面,且没有脚本错误。这项测试未修改持久化消息。真实模型是否自动遵循默认策略,需另用普通提问验证,不能仅靠这些合成事件测试证明。 安装到桌面 profile 后,另以临时会话向用户默认模型提出两个假设收费方案的成本比较问题,提问没有出现网页、图表或工具名称。模型主动调用 `render_answer`,最终回复仅含引入、一个有效嵌入标记和补充说明,没有再列一遍成本数字和对比分析。生成的内容包含成本表、两条曲线及试算器。 重新打开该真实测试会话,认证浏览器确认同一回答内有且仅有一个可见 iframe,末尾回退区域没有重复 iframe,没有页面脚本错误。第一次观察实时完成的浏览器检查与自动归档清理发生竞争,因此不把那次等待算作通过;重新打开后的验证通过。测试会话已重新归档,未改写任何原有对话。这里的一次真实模型验证证明本例自动触发成功,不保证模型在所有问题上都完全遵循格式规则。 ## 0.1.3 桌面版兼容修复 2026-10-28 在 DeepSeek Harness 桌面版 `0.2.1-rc.3` 的真实对话中定位到:模型已经主动调用 `render_answer`,API 能读回保存的 HTML,但聊天中没有网页节点。原因是桌面版工具消息使用平铺的 `role: tool` 结构,0.1.1 解析器仍强制要求旧版嵌套 `tool-result` 块,因而忽略了成功回执。 0.1.3 同时解析两种结构,先校验错误和调用标识,再读取回执;并通过 `groupTree: turn` 将网页声明为回答内容,防止桌面新版将自定义节点默认归入折叠的执行过程。后一个问题在实际浏览器中复现:iframe 已加载,却被父级 `hidden=until-found` 隐藏。 41 项 Node 测试通过,无跳过;其中使用桌面版真实 assembler 和分组器,覆盖平铺结果的实时显示、历史恢复、JSON 回退、失败结果过滤和避免过程折叠。分组测试包含去掉声明后重新归入过程组的负对照。回归 fixture 使用虚构数据,不包含实际对话内容。 通过桌面应用自身插件管理器安装 0.1.3 后,确认插件已启用且处于 active 状态。在连接同一桌面后端的认证 Chrome 客户端中检查原对话:网页节点和 iframe 可见,位于折叠过程外;点击图表时间范围会改变选中按钮和 SVG 路径;重新打开对话后仍然可见,未出现页面脚本错误。验证未重新调用模型,未修改原对话或生成的 HTML。此检查验证显示与交互,不校验页面中的金融数据。 下列早期 0.1.5 集成测试使用合成事件,因此未发现这一桌面版结果格式差异。安装成功和工具注册成功并不等同于真实对话完整显示成功。 ## 早期 CLI/Web 验证 验证日期:2026-10-28。目标宿主:本机安装的 DeepSeek Harness `0.1.5-rc.3`。 ## 已验证 - 38 项 Node 测试通过,其中会话组装测试加载了本机 DSH 的真实 assembler,覆盖完整历史、冷启动、补入历史和实时追加。 - Chrome 浏览器流程通过:滑块计算、选中阶段、展开高度、服务重启后恢复、更新页面保留参数、历史版本拒绝保存、鼠标点击准备追问、宿主确认发送、深色主题、390px 手机布局、脚本故障的文字回退。 - 继承页面的只读检查通过:显示提示、保存操作在发出 API 请求前被拒绝、原会话状态保持不变,追问改为要求新建当前会话的页面。 - 真实 DSH 的独立 profile 中,`render_answer`、`update_answer`、`get_answer` 均成功注册;客户端模块成功加载。 - 在真实聊天流中,折叠执行过程后网页回答仍然可见;iframe 参数能够写入持久化存储,浏览器刷新后恢复。 - 真实 DSH 中鼠标点击追问可以显示宿主确认区域;测试选择取消,没有触发模型调用。 - 未认证 HTTP 请求返回 401;认证请求可读取页面;用其他会话 ID 访问页面返回 404。 DSH 集成使用显式启用的 `scripts/dsh-smoke.mjs` 创建合成工具事件,并调用真实插件工具、会话持久化、API 和前端。没有配置或调用真实模型,因此这些测试不证明模型每次都会生成正确、美观的网页。 ## 自动化环境说明 本机使用 Google Chrome `156.0.8078.73`。无头自动化在 1000px 高视口下,靠近底部的 sandbox iframe 按钮出现命中测试异常;一个没有插件代码的普通静态 iframe 也能复现。浏览器回归使用 900px 高的桌面视口,保留真实鼠标点击。真实 DSH 的鼠标追问流程也通过。 ## 重跑 普通测试命令见 README。真实 DSH 集成脚本为 `test/dsh-integration.mjs`,需要已启动的独立测试 profile 以及显式挂载的 smoke 插件。通过 `DSH_SMOKE_URL_FILE` 提供包含本地登录 URL 的文件,避免把临时凭证写进命令或文档;可用 `DSH_SMOKE_OUTPUT_DIR` 保存截图与检查记录。 Smoke 插件不在生产 `cordis.patch.yml` 中,不应挂载到日常使用的 profile。此次验证只修改新建的独立配置目录,未修改原有模型配置或凭证。