Files
mnote/recycle/design/全局AI面板改版设计_20260307.md
T
2026-04-13 19:21:42 +08:00

6.2 KiB
Raw Blame History

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.tswolai-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. 头像使用短标签:
    • AIAI
    • 用户:
  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 外层页面。