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