| 1 | # Harness 聊天展示移植 |
| 2 | |
| 3 | 参考版本为 DeepSeek Harness `c291e7961a515f6d7af9304e7fd1d257929aef26`。 |
| 4 | 源码对应关系与许可证见 |
| 5 | [`harness-chat/README.md`](../desktop/frontend/src/components/harness-chat/README.md)。 |
| 6 | |
| 7 | ## 已实现的行为 |
| 8 | |
| 9 | - 使用统一自然文档流,过程为紧凑行,最终回答独立展示。完成后按轮收起,摘要显示 |
| 10 | 工具与消息数量;失败后成功恢复的轮次仍可收起,但摘要保留失败次数。中断与终止 |
| 11 | 故障保持可见。 |
| 12 | - 工具原位展开,使用 Harness 的终端、差异、来源列表或通用输入/输出展示;详情 |
| 13 | 入口打开独立抽屉。超长内容按需加载;损坏的全文响应保留预览并允许重试,不能 |
| 14 | 把预览作为全文复制。 |
| 15 | - 思考运行时显示最新非空行,结束后显示首行;展开后标题不重复正文。 |
| 16 | - 系统与权限记录收起为紧凑摘要,无实质内容的空结果统计省略。Markdown 标题、 |
| 17 | 表格及间距接入移植后的 Harness 样式,解析与安全边界仍由 Reasonix 负责。 |
| 18 | - 保留复制、普通会话分支、用量详情、用时与时间戳;不增加点赞和点踩。缺失的 |
| 19 | 历史用量不编造数值。 |
| 20 | - 删除设置中的“标准/深入”聊天展示选项;新会话默认使用“工作区内修改”。 |
| 21 | 旧持久化字段保留兼容,但不再选择第二套聊天展示。 |
| 22 | |
| 23 | 主题、字体设置、输入框、审批、安全链接、Markdown Worker、历史 API 与后端数据 |
| 24 | 归属仍使用 Reasonix。没有导入 Cordis 或 Harness 服务端。无法可靠映射的工具结果 |
| 25 | 使用通用卡片;这不等于将 Harness 整个应用和每种插件专用渲染器嵌入 Reasonix。 |
| 26 | |
| 27 | ## macOS arm64 验证 |
| 28 | |
| 29 | 前端构建通过 hooks lint、类型检查、CSS/主题检查、单滚动写入约束及原有 bundle |
| 30 | 预算:首屏阻塞 CSS 为 3.8 KiB,上限仍为 4.0 KiB。聊天、设置、流式更新、应用 |
| 31 | 生命周期、远程会话与输入框套件通过;全文竞态测试覆盖损坏响应与重试。 |
| 32 | |
| 33 | 完整生产组件路径的回放结果: |
| 34 | |
| 35 | | 运行环境 | 240 轮输入 P95 | 1,000 轮输入 P95 | 1,000 轮最大长任务 | 切换 P95 | |
| 36 | | --- | ---: | ---: | ---: | ---: | |
| 37 | | Chromium 153 | 56.3 ms | 120.7 ms | 138 ms | 32.8 ms | |
| 38 | | WebKit 26.6 | 46 ms | 103 ms | 不支持采样 | 40 ms | |
| 39 | | Electron 44.2.0 | 58.4 ms | 43.4 ms | 142 ms | 20.3 ms | |
| 40 | |
| 41 | 三种环境均覆盖连续 60 次流式尺寸变化、向上阅读、历史 prepend、过程展开、抽屉 |
| 42 | 焦点恢复和更新队列收敛。流式锚点漂移为 0 px,prepend 漂移约 0.094 px。Chromium |
| 43 | 重复切换 20 次后释放堆增长为 125,396 字节。天气样例验证工具行高 24 px、权限记录 |
| 44 | 默认收起,以及收起的过程不挂载工具子树。WebKit 不提供 Long Tasks API。 |
| 45 | |
| 46 | 原始数据与截图见 [`evidence/harness-chat-port`](evidence/harness-chat-port)。截图中的 |
| 47 | 天气数据是测试样例。另在实际打包应用中打开了用户已有天气记录及设置页,验证了 |
| 48 | 新展示;包身份及原生启动检查见 [`design-qa.md`](../design-qa.md)。 |
| 49 | |
| 50 | 测试版安装于 `~/Applications/Reasonix-Canary/Reasonix.app`,使用独立的 |
| 51 | `Reasonix-Test-ChatRefactor` 数据目录。此次未重跑其他平台原生 WebView、可见系统 |
| 52 | 滚动条拖动、长时间原生输入法以及 1,000 轮全部重内容展开测试;不将其标记为已验证。 |
| 53 | 未发布正式版本、未合并 PR。 |
| 54 | - 右侧轮次刻度条替换顶部下拉导航,移植 Harness 的固定间距、当前轮次高亮、悬停/ |
| 55 | 聚焦预览及独立滚动。点击或键盘激活通过既有 ChatScrollController 定位,退出尾部 |
| 56 | 跟随;“返回最新”仍恢复跟随。仅列已加载历史,分页后增加刻度,不生成空历史标记。 |
| 57 | 预览仅订阅对应的提问和回答节点,不让流式更新刷新整个导航。窄窗口仍保留导航。 |
| 58 |