agent-Specialization/doc/frontend/next_steps_3.md

49 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端重构续办说明next_steps_3
> 接续 `next_steps_2`。本阶段聚焦“聊天/输入域重构 + 资源抽象 + 全局壳层”三大阶段,确保所有逻辑逐步回归 Pinia store 与 composable彻底告别 `app.ts` 的“超级控制器”角色。
## 阶段划分
1. **聊天/输入域重构**
- 拆出 `useChatStore`、`useInputStore`、`useUploadStore` 等,托管所有消息流和输入状态。
-`ChatArea` 的动作块拆成组件Thinking/Text/Tool/Append/Modify/SystemMarkdown/复制/命令等复杂逻辑抽到 composable。
- 完成后 `App` 只负责 socket → store 的分发,不再直接操作 `messages` 或输入框。
2. **业务面板与个性化**
- 为文件树/聚焦/子智能体/个性化等侧栏业务建立独立 store。
- 把轮询、右键菜单及 Personalization Drawer 事件迁出 `app.ts`,组件只消费 store。
3. **全局壳层与 Socket/Overlay**
- 拆出 `AppShell`ToastStack/ConfirmDialog/ContextMenu/EasterEgg`useLegacySocket`、`usePolling`、`useEasterEgg` 等组合式函数。
- 收束 Quick Menu/压缩对话/资源轮询等跨域逻辑,让 `App` 仅担任布局入口。
## 第一阶段(聊天/输入域)拆解
1. **状态迁移**(已完成 ✅)
- `useChatStore`:新增用户/助手消息、thinking/text action 管理、system/append/modify payload、滚动锁等 action。
- `useInputStore`:可设置/清空输入、行数、多行态、焦点;`sendMessage`/autoResize/resetAllStates 均调用 store。
- `useUploadStore`:托管上传中状态,上传逻辑与 Quick Upload 按 store 控制。
2. **Action 组件化 / Markdown composable**(已完成 ✅)
- `ChatArea` 订阅 store 并拆出 `ThinkingAction/TextAction/ToolAction/Modify*Action/ActionSummary`
- 新增 `useMarkdownRenderer`,包含 Markdown parsing、代码高亮、LaTeX 渲染、streaming 兜底App 中不再保留对应方法。
- `append_payload` / `modify_payload` 事件已经接入 `AppendPayloadAction`、`Modify*Action`,旧版占位/警告信息在 Vue 组件中完整还原。
3. **动作按钮逻辑迁移**(已完成 ✅)
- 新增 `useChatActionStore`,集中托管复制/应用/执行命令动作,通过依赖注入与 `quick input` DOM 交互;`ChatArea` 直接调用 store并对 `copy-code-btn` 进行事件委托Markdown 代码块现在可以一键复制。
## 当前进展
- 聊天状态和输入状态的核心逻辑已迁至 Pinia`ChatArea` 子组件化完成大半Markdown 渲染也模块化。
- 资源域 (`useResourceStore`) 负责 Token/Quota/容器/存储轮询,上传域由 `useUploadStore` 托管。
- `App.vue` 仍承担 socket 事件分发、工具/Markdown action 以及少量 DOM 操作,后续阶段可继续拆解。
## 下一步建议
1. **推进第二阶段**
- 建立 `useFileStore/useFocusStore/useSubAgentStore/usePersonalizationStore`,把轮询与 Panel/Drawer 事件迁出。
2. **准备第三阶段**
- 规划 `AppShell` 和 Socket composable 的接口,以便迁移 Toast/Overlay 与全局事件监听。
> 如遇新的拆分点,继续在此文档更新阶段划分与状态,务必同步 `legacy_ui_spec.md` 的要求,保持旧版体验一致。