# 界隙 React 交互重构 · 0.5.0-rift.2

此版回应“只有背景变化，侧栏、选中、展开和对话缺少特色”的反馈，不替换或复制 DSH 的业务组件。React Bits 的局部光感、分层入场和边缘能量作为交互参考；没有复制其源码，也没有宣称使用其商业许可。

## 视觉与联动

| 表面 | 静态身份 | 交互与关联 |
| --- | --- | --- |
| 左栏 | 斜向银纹、领域边界、斜切新会话入口 | 项目悬停光感；展开态边缘；展开时局部碎片 |
| 会话行 | 斜切选中边界、持续可见的裂隙定位 | 切换局部脉冲；当前会话执行时边线流动 |
| 首页印记 | 分裂的金属几何 | 输入聚焦时分开，失焦时合拢 |
| 输入框 | 双层金属边缘、异形圆角、独立工具栏 | 聚焦外缘聚光，开始执行时释放，完成时短暂回落 |
| 消息 | 用户为右侧重边界，助手为左侧裂隙与阅读层 | 原生消息、草稿、发送回显同族设计；空节点不产生幽灵空白 |
| 工具与代码 | 收纳在独立的低层级执行面板 | 保留原生 running / ok / error，错误不染成成功色 |
| 右栏 | 反向边缘、展开面与活动标签 | 保留文件、预览、操作与宿主布局；局部展开反馈 |
| 菜单与弹窗 | 斜切圆角、角部光照、统一输入与按钮边界 | 原生焦点/ESC/确认流程不变 |
| 背景 | 原有新制白发人形场景 | 聚焦和导航触发裂隙脉冲，执行增强能量，不再独自循环 |

## 结构

- `field.tsx`：React 局部反馈挂到官方 `shell.overlay`。侧栏内仅保留 `RiftResonance` 状态仪表，收起侧栏不会卸载交互桥。
- `interaction.ts`：委托 click / focus / pointer 事件；只有当前悬停行在一个 RAF 内写入坐标。只观察根节点的语义状态属性，不按流式文本扫描整棵 DOM。
- `ui-styles.ts`：以官方 data-slot、data-row-key、ARIA 为主，少量 rc.2 class 后缀仅用于无公开 hook 的原生结构。
- `runtime.ts`：接收仅在内存里的 `xiaohei/rift-signal`。不通过 gateway、不追加 session 日志、不生成任何新工具调用。
- `@deepseek-ai/dsh-client-ui-layout` 只作为开发期类型依赖，实际 React 与 slots 由宿主提供。

不移动鼠标指针，不拦截点击/拖拽，不向宿主固定弹窗祖先添加 transform/filter。装饰均 pointer-events:none。操作正确性不依赖 animationend；快速连续操作覆盖前一次动效，卸载时取消计时器、帧和监听。

## 验收

遵循 ui-ux-pro-max 的状态可辨识、可取消动画、可访问性与帧预算检查，不采用其与本工作台不匹配的营销页推荐。

自动化覆盖输入聚焦、导航与展开、开始/完成状态去重、暂停/隐藏抑制、pointer 更新合并与完整卸载。浏览器验证真实 DSH 的原生项目、新会话选中、未发送草稿、收起侧栏后的聚焦联动、设置弹窗、深浅色及窄屏。消息与工具使用 rc.2 渲染结构的本地 DOM 契约样例验证，样例不提交给服务器；不将其称为实际模型生成验收。

仍需真实 macOS / Windows Desktop 显卡和各用户的历史会话验收。此版不是 Live2D，也不提供角色完整骨骼动画。
