agent-Specialization/doc/frontend/next_steps_3.md

3.2 KiB
Raw Blame History

前端重构续办说明next_steps_3

接续 next_steps_2。本阶段聚焦“聊天/输入域重构 + 资源抽象 + 全局壳层”三大阶段,确保所有逻辑逐步回归 Pinia store 与 composable彻底告别 app.ts 的“超级控制器”角色。

阶段划分

  1. 聊天/输入域重构

    • 拆出 useChatStoreuseInputStoreuseUploadStore 等,托管所有消息流和输入状态。
    • ChatArea 的动作块拆成组件Thinking/Text/Tool/Append/Modify/SystemMarkdown/复制/命令等复杂逻辑抽到 composable。
    • 完成后 App 只负责 socket → store 的分发,不再直接操作 messages 或输入框。
  2. 业务面板与个性化

    • 为文件树/聚焦/子智能体/个性化等侧栏业务建立独立 store。
    • 把轮询、右键菜单及 Personalization Drawer 事件迁出 app.ts,组件只消费 store。
  3. 全局壳层与 Socket/Overlay

    • 拆出 AppShellToastStack/ConfirmDialog/ContextMenu/EasterEgguseLegacySocketusePollinguseEasterEgg 等组合式函数。
    • 收束 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 事件已经接入 AppendPayloadActionModify*Action,旧版占位/警告信息在 Vue 组件中完整还原。
  3. 动作按钮逻辑迁移(已完成

    • 新增 useChatActionStore,集中托管复制/应用/执行命令动作,通过依赖注入与 quick input DOM 交互;ChatArea 直接调用 store并对 copy-code-btn 进行事件委托Markdown 代码块现在可以一键复制。

当前进展

  • 聊天状态和输入状态的核心逻辑已迁至 PiniaChatArea 子组件化完成大半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 的要求,保持旧版体验一致。