返回 DeepSeek-Reasonix
HARNESS_CHAT_PORT.zh-CN.md
根目录 / docs / HARNESS_CHAT_PORT.zh-CN.md
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
58 lines MARKDOWN