# MNOTE 全局 AI 面板改版设计(参考 AiChem,按现有工具适配) ## 1. 目标 本次改版目标不是把 `AiChem` 的全局 AI 面板原样搬过来,而是: 1. 参考 `F:\SOFT\AiChem\aichem-frontend\src\components\assistant\AssistantWidget.vue` 的整体视觉气质与布局节奏。 2. 参考 `cankao\image.png` 的暗色面板、顶部工具栏、聊天气泡、底部输入区样式。 3. 结合 MNOTE 当前真实能力,保留并强化: - SSE 流式对话 - 工具调用日志 - 最大步数控制 - 当前全局 AI 默认可用工具集 4. 明确避免照搬 AiChem 中 MNOTE 当前并不存在的能力,例如: - 会话历史抽屉 - 用户资料页入口 - 设置面板 - 会话附件池 - Plan / Act 真切换逻辑 --- ## 2. 当前现状 MNOTE 当前全局 AI 入口: - 组件:`wolai-frontend/src/components/ai-agent/AiAgentPanel.tsx` - 页面:`wolai-frontend/src/app/dev/ai-agent/page.tsx` - 桌面镜像:`desktop-electron/desktop-next/src/components/ai-agent/AiAgentPanel.tsx` 当前问题: 1. 视觉上仍是开发态 demo,缺少“正式全局 AI”界面感。 2. 对话区与工具日志区只是普通双栏卡片,缺少层次。 3. 没有明确呈现“当前全局 AI 能做什么”。 4. 输入区缺少模型/工具/运行状态等辅助信息的组织。 5. 工具日志的可读性较弱,不利于观察一次任务中的调用链。 --- ## 3. 参考来源拆解 ### 3.1 AiChem 借鉴点 从 AiChem 当前实现中,适合借鉴的点: 1. **整体暗色外壳** - 深色背景 - 细边框 - 低对比度分区 2. **顶部栏** - 左侧品牌 + 当前会话标题 - 右侧一排紧凑图标按钮 3. **消息区** - 左右分布的气泡 - AI / 我 的短标签头像 - 空状态时直接展示 AI 欢迎卡片 4. **底部输入区** - 工具/状态信息在输入框上方 - 输入框独立成块 - 发送按钮悬浮在右下角 ### 3.2 本次不能直接照搬的点 AiChem 中以下能力当前 MNOTE 全局 AI 没有,不应伪装成已支持: 1. 会话历史侧栏 2. 会话附件池与附件管理 3. 用户中心入口 4. 设置面板与 provider 切换菜单 5. Plan / Act 实际模式切换 --- ## 4. MNOTE 当前真实工具能力 根据 `wolai-frontend/src/app/api/ai-agent/run/route.ts` 与 `wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts`,当前全局 AI 默认允许: 1. `toolset.readonly` - `search_web` 2. `toolset.rag_read` - `rag_lightrag_query` 3. `toolset.docs_read` - `docs_search` - `docs_read` 4. `toolset.media_read` - `image_read` 5. `toolset.slash_write` - `slash_run` 因此本次 UI 呈现要围绕这些真实能力组织文案与标签: 1. 联网检索 2. LightRAG 检索 3. 跨页面文档搜索/读取 4. 图片 OCR 5. 斜杠命令写入 --- ## 5. 改版方案 ## 5.1 整体布局 由“两个普通 Card 横排”改成“一个暗色 shell + 主对话区 + 右侧活动区”的结构: 1. 最外层:全屏高度暗色容器。 2. 顶部:统一标题栏。 3. 中部: - 左侧:聊天主区域 - 右侧:工具活动面板 4. 底部:输入区 这样既能保留 MNOTE 的“工具日志可观测性”,又能接近 AiChem 的整体观感。 ## 5.2 顶部栏 顶部栏信息改为: 1. 左侧品牌:`MNOTE` 2. 主标题:`全局 AI` 3. 副标题:显示当前运行模式说明,例如“自动工具编排” 4. 右侧操作: - `工具面板显隐` - `恢复示例问题` - `清空对话` - `停止`(仅运行中可用) 说明: 1. 不使用 AiChem 的“历史 / 我的 / 设置”等按钮。 2. 只放当前组件真实可执行的动作。 ## 5.3 空状态 当没有消息时,展示一张 AI 欢迎卡片,文案基于 MNOTE 当前工具能力: 1. 我可以联网查资料并给出来源 2. 我可以调用 LightRAG 进行知识检索 3. 我可以搜索和读取工作区文档 4. 我可以读取图片 OCR 5. 我可以执行受控斜杠命令 这部分会直接替代目前“暂无消息”的空白状态。 ## 5.4 消息气泡 消息区采用更接近参考图的气泡样式: 1. AI 气泡偏中性深灰 2. 用户气泡偏蓝色强调 3. 头像使用短标签: - AI:`AI` - 用户:`我` 4. 消息文本保留 `whitespace-pre-wrap` ## 5.5 工具活动面板 右侧保留工具日志,但增强结构化: 1. 顶部显示“本轮活动” 2. 显示总数、当前状态 3. 日志按卡片区分: - 工具调用 - 工具结果 - 错误 4. 每项显示更明确的标签: - 工具名称 - 请求编号 - 成功/失败 - 耗时 说明: 1. AiChem 的日志多以内联折叠存在于消息中。 2. MNOTE 当前组件已有独立日志流,因此本次保留右侧活动面板,不强行改成内联。 ## 5.6 输入区 底部输入区分三层: 1. 第一层:能力标签区 - 当前启用工具集 pill 2. 第二层:运行控制区 - `最大步数` - 当前状态(待命 / 运行中) 3. 第三层:输入框主体 - 多行输入 - Enter 发送、Shift+Enter 换行 - 右下角发送按钮 - 运行中显示停止按钮 ## 5.7 页面外层 `/dev/ai-agent` 页面同步调整为: 1. 去掉开发态说明块的割裂感 2. 保留必要说明,但收敛成顶部一小行 meta 文案 3. 让主体尽可能接近“正式全局 AI 面板” --- ## 6. 本次不做 以下内容明确不纳入本次改版,避免范围失控: 1. 新增会话持久化 2. 新增模型切换 3. 新增工具手动多选 4. 新增历史记录 5. 改造后端接口结构 6. 把工具日志写回消息气泡 --- ## 7. 验收标准 完成后应满足: 1. 全局 AI 页面整体视觉明显接近参考图的暗色正式面板。 2. 欢迎态能够正确展示 MNOTE 当前真实工具能力。 3. 输入、发送、停止、清空、恢复示例问题均可正常工作。 4. SSE 消息流与工具日志仍按原逻辑工作。 5. 工具日志面板可以显隐,不影响对话主流程。 6. Web 与桌面镜像保持一致。 --- ## 8. 实施顺序 1. 先为 `AiAgentPanel` 补一组针对结构/状态的测试。 2. 再改造 `AiAgentPanel.tsx` 的布局与样式。 3. 同步改造 `desktop-electron/desktop-next` 镜像文件。 4. 最后微调 `app/dev/ai-agent/page.tsx` 外层页面。