# Sketch Graph 验证记录(2026-10-15) 被测版本:v0.7.0-alpha.1 开发快照;Windows,Excalidraw 0.18.1,@xyflow/react 12.12.0。保留现有用户宿主,在独立 `sketch-graph-acceptance` profile 安装本地插件运行 DSH Web 0.2.1-alpha.2。未发布 Release。 ## 首次开发快照的自动化与实机记录 | 证据 | 已验证 | 边界 | | --- | --- | --- | | `pnpm test` | 22 文件、209 测试通过;图约束、独立版本、隔离、CAS、幂等、删除清理、重点限制、分页、指定节点图片参数 | 单元测试不代表真实模型效果 | | `pnpm typecheck`、`pnpm bundle` | 类型与生产包构建通过 | Vite 现有大块提示保留 | | `pnpm test:browser:graph` | 实际 React Flow/Excalidraw 和 RPC:5 张独立草图、元素/区域关联、取消重绑后换图、备份中断恢复、离线重试、双窗冲突、重载、30 节点可见范围渲染、390px 无横向溢出 | 隔离内存 KV;这里的重载不等于进程重启 | | `pnpm test:browser:fullscreen` | 实际已安装 alpha.1 与 alpha.2:原分屏、全屏、同一原生 composer/iframe、草稿、拖动、收起展开、390px 约束、恢复分屏及关闭 | 自动化浏览器操作,不调用模型 | | Windows Edge 实际宿主 | 4 张草图、3 条关系、编辑与全屏;专用宿主停止重启后图、文档和关联仍恢复 | 人工准备的可编辑测试草图;不是模型自动画图 | 30 节点自动化记录本次从重载到可见节点出现约 163ms,仅为单次本机观测,不是性能承诺。完整日志及原始截图留在本机忽略目录 `test-results/graph*`。按本机维护规则未运行 CodeRabbit CLI,进行了代码差异审阅。 ## PR #32 合并前修复验证 仅修复本次审查的六个问题;未重复真实模型实验、全屏实装实验或制作新 GIF,上节实机及后文真实模型证据对应首次开发快照。 | 修复 | 新增验证 | | --- | --- | | pending/import 按标签页隔离;清理前核对 mutationId;兼容旧共享记录 | 交错确认不会删除另一窗口记录;版本冲突及刷新后保留本窗口副本;旧 mutation 清理不能删除新任务;保存中后续布局刷新后按原 mutation 重试 | | 图保存前后比较节点 ID 集合,仅删除触发 prune;缓存成员集合,清理失败保留补偿 | 同数量替换节点仍清理;移动、命名、连线和无变化写入不清理;失败后普通保存重试;重启扫除孤立数据,启动清理失败继续可用并重试 | | 扫描所有编辑器 JS(含嵌套、延迟加载 chunk)真实导入语法,保留原发行检查 | 故意注入 `@xyflow/react`、`@excalidraw/*`、React 的静态/动态/重导出/require 裸导入均拒绝;注释与普通示例字符串不误报 | | 300ms 防抖加串行合并队列,保留请求和后续最新状态 | 单元测试合并 30 次连续更新;浏览器延迟 RPC 时拖动、平移和缩放合并为 2 次串行写入,最终持久视角与实际界面一致,刷新仍保留 | | 导入任务先以 IndexedDB 事务持久化,再调用恢复 RPC | 实际浏览器保存并读取 7,334,039 字节任务,未写入 localStorage;数据库不可用/写入事务中止时无服务器恢复写入;部分恢复中断后刷新继续 | | 追加前明确检查节点/连线剩余容量 | 100 节点合法备份在有根图的会话提前拒绝,说明当前/剩余/所需容量,服务器图与根草图不变;未新增覆盖恢复模式 | 本次通过 24 个测试文件/220 项测试、类型检查、生产构建、扩展浏览器回归和发行包检查。浏览器测试运行实际构建的 React Flow/Excalidraw 与 RPC,服务器 KV 为隔离内存夹具,不能替代真实模型或进程重启实装证据。原始日志与报告保存在本机 `test-results/graph-review-*` 和 `test-results/graph/report.json`。按本机规则未运行 CodeRabbit CLI。 ## 真实原生 AI 对话开发 DSH alpha.2 原生聊天,界面显示 DeepSeek-V4.1-Flash / High。使用实际模型连接和工具回路,没有固定回答、工具响应替换或模拟模型。测试工作区与草图专用,没有修改用户已有项目。 输入是首页、登录页、商品详情三个页面,以及 Banner 细节;两条 navigation 来自首页登录按钮/商品卡片,一条 detail 来自 Banner 区域。任务要求先读图,再按节点读草图,在隔离目录生成 HTML/CSS/JS。实际 Agent 读取图摘要和四份结构,识别 Banner 是首页补充,没有单独建路由;通过真实工作区工具生成三份网页文件。最终源码见 [agent-site](assets/v0.7.0/agent-site/),仅为浏览器演示,无真实身份验证、支付或订单后端。 不能省略的失败和纠正: 1. 前两轮模型读取 Banner 图片遗漏 nodeId,按根图读取被 revision 检查拒绝;没有退回错误图片。补充可复制的 `imageReadArguments` 与工具说明后,首次服务代码仍旧驻留内存;专用宿主重启加载新工具,第三轮明确复制参数,一次成功返回该节点 724×334 PNG(50672 字节)。模型实际描述了左侧文字/按钮和右侧“自然图形”占位框,并区分灰度图片与 purpose 的浅绿文字要求。 2. 模型首次自行多加两件商品,后续真实对话移除,最终只保留草图两件。首次自建 DOM 桩测试失败并反复扩展,经明确反馈停止并清理;这些桩结果不作为验收依据。 3. 模型第二轮仅检查 JS 的 hidden 切换就声称登录入口会隐藏;真实 Edge 仍显示两个控件。第四轮反馈后,模型在 CSS 增加 `[hidden] { display: none !important; }`。旧端口样式缓存未刷新,改用新本地预览端口确认新规则载入后复验通过。 我们实际在最终 Edge 网页确认:首页登录入口 → 登录页;空表单错误;体验账号登录 → 首页且登录入口隐藏;商品卡片 → 详情;数量改为 2,加入购物车,合计 ¥598;退出后登录入口恢复。Banner 留在首页。指定节点的 [实际图片工具参数与输出](assets/v0.7.0/image-tool.json) 来自展开的原生工具调用面板。没有验证真实后端或支付,也没有做模型质量、费用或速度比较。一次真实多轮案例不能证明所有模型或任意复杂图都可靠。 GIF 分别展示实际插件 UI 和最终模型网页,按浏览器截图采样,自动化输入,剪掉工具调用间隔与等待;不是连续录屏,也不是真人手动操作。没有伪造模型回复或合成界面。[帧哈希和剪辑来源](assets/v0.7.0/README.md) ## 待完成边界 alpha.1 另使用项目锁定的官方 CLI 和独立 `sketch-graph-alpha1` profile 实装通过上述全屏/编辑保存回归;首次测试被中文“预览版说明”遮罩挡住,补充测试夹具的中文继续按钮处理后通过,未修改产品代码。全图真实模型开发与进程重启恢复案例只在 alpha.2 完成;不把 alpha.1 的基础交互回归外推成完整模型验收。正式发布和合并由维护者执行。