Skip to content

Dev#1613

Merged
SengokuCola merged 9 commits intomainfrom
dev
May 2, 2026
Merged

Dev#1613
SengokuCola merged 9 commits intomainfrom
dev

Conversation

@SengokuCola
Copy link
Copy Markdown
Collaborator

@SengokuCola SengokuCola commented May 2, 2026

  • ✅ 接受:与main直接相关的Bug修复:提交到dev分支
  • 新增功能类pr需要经过issue提前讨论,否则不会被合并
  • 🌐 i18n 提醒:除 bootstrap 或紧急修复外,请不要把非 zh-CN 目标翻译作为常规 GitHub 编辑面;常规翻译以 Crowdin -> l10n_* PR 回流为准,详见 docs/i18n.md

请填写以下内容

(删除掉中括号内的空格,并替换为小写的x

    • main 分支 禁止修改,请确认本次提交的分支 不是 main 分支
    • 我确认我阅读了贡献指南
    • 本次更新类型为:BUG修复
    • 本次更新类型为:功能新增
    • 本次更新是否经过测试
    • 如果本次修改涉及 src/A_memorix,我确认已阅读 src/A_memorix/MODIFICATION_POLICY.md,不涉及则无需勾选
  1. 请填写破坏性更新的具体内容(如有):
  2. 请简要说明本次更新的内容和目的:

其他信息

  • 关联 Issue:Close #
  • 截图/GIF
  • 附加信息:

Summary by CodeRabbit

发布说明

  • 新功能

    • 聊天消息支持@提及和回复引用
    • 知识库管理功能(导入、删除、反馈修正、调优)
    • 私聊模式支持
    • 消息滚动导航功能
  • 改进与优化

    • 增强WebSocket连接稳定性和兼容性
    • 改进聊天UI和消息渲染
    • 优化配置表单处理
    • 版本更新至1.0.1

SengokuCola and others added 9 commits May 1, 2026 14:52
…aging support

- Updated `uni_message_sender.py` to allow for private messaging by removing the mandatory group ID and adding user ID handling.
- Enhanced chat history retrieval and clearing functions in `routes.py` and `service.py` to support both group and private chat scenarios.
- Introduced a new `ChatScrollContext` for managing message scrolling and highlighting in the chat UI.
- Created a `ListItemEditorHookFactory` for rendering a rich UI editor for list items in configuration settings, replacing the previous JSON text display.
- Improved message serialization for consistent display in chat history.
- Added detailed logging for chat history operations and error handling.

Co-authored-by: Copilot <[email protected]>
…functions for memory operations

- Implemented TuningTab component to handle tuning objectives, intensity, sample size, and evaluation settings.
- Added UI elements for creating tuning tasks and displaying current configurations and recent tasks.
- Introduced utility functions for normalizing and formatting memory operation data, including feedback actions and delete operations.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 2, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d5b2efaf-e052-413c-b387-c76e186f1cae

📥 Commits

Reviewing files that changed from the base of the PR and between 8401bc2 and fe231af.

📒 Files selected for processing (46)
  • .github/workflows/docker-image-dev.yml
  • .github/workflows/docker-image-main.yml
  • Dockerfile
  • changelogs/changelog.md
  • changelogs/mai_next_design.md
  • changelogs/mai_next_todo.md
  • dashboard/package.json
  • dashboard/src/components/dynamic-form/DynamicConfigForm.tsx
  • dashboard/src/components/dynamic-form/DynamicField.tsx
  • dashboard/src/components/layout/Sidebar.tsx
  • dashboard/src/components/memory/MemoryMiniTabs.tsx
  • dashboard/src/components/memory/MemoryProgressIndicator.tsx
  • dashboard/src/components/ui/dialog.tsx
  • dashboard/src/components/ui/scroll-area.tsx
  • dashboard/src/index.css
  • dashboard/src/lib/chat-ws-client.ts
  • dashboard/src/lib/config-api.ts
  • dashboard/src/lib/field-hooks.ts
  • dashboard/src/lib/memory-progress-client.ts
  • dashboard/src/lib/version.ts
  • dashboard/src/routes/auth.tsx
  • dashboard/src/routes/chat/ChatScrollContext.tsx
  • dashboard/src/routes/chat/ChatWorkspaceSidebar.tsx
  • dashboard/src/routes/chat/MessageList.tsx
  • dashboard/src/routes/chat/MessageRenderer.tsx
  • dashboard/src/routes/chat/index.tsx
  • dashboard/src/routes/chat/types.ts
  • dashboard/src/routes/config/bot/hooks/JsonFieldHookFactory.tsx
  • dashboard/src/routes/config/bot/hooks/ListItemEditorHookFactory.tsx
  • dashboard/src/routes/config/bot/hooks/complexFieldHooks.tsx
  • dashboard/src/routes/config/modelProvider/ProviderForm.tsx
  • dashboard/src/routes/resource/knowledge-base.tsx
  • dashboard/src/routes/resource/knowledge-base/constants.ts
  • dashboard/src/routes/resource/knowledge-base/tabs/DeleteTab.tsx
  • dashboard/src/routes/resource/knowledge-base/tabs/FeedbackTab.tsx
  • dashboard/src/routes/resource/knowledge-base/tabs/ImportTab.tsx
  • dashboard/src/routes/resource/knowledge-base/tabs/TuningTab.tsx
  • dashboard/src/routes/resource/knowledge-base/utils.ts
  • docker-compose.yml
  • docker-entrypoint.sh
  • pyproject.toml
  • src/chat/message_receive/uni_message_sender.py
  • src/webui/config_schema.py
  • src/webui/routers/chat/routes.py
  • src/webui/routers/chat/service.py
  • src/webui/routers/model.py

高层概览

该PR进行了1.0.1版本发布,包括Docker部署简化、WebUI聊天系统的私聊/虚拟身份/富文本消息支持、Dashboard知识库管理UI完整实现,以及配置和依赖更新。

变更内容

Docker构建和部署简化

层级 / 文件 概述
构建流程
.github/workflows/docker-image-*.yml
移除两个CI工作流中的MaiMBot-LPMM克隆步骤,后续Docker构建、推送和多架构清单创建步骤保持不变。
运行时镜像
Dockerfile
将多阶段构建替换为单一Python 3.13 slim运行时镜像;简化依赖安装,改为通过uv pip安装requirements;新增克隆MaiBot-Napcat-Adapter插件模板,改用docker-entrypoint.sh作为启动入口。
容器启动脚本
docker-entrypoint.sh
新增shell脚本,确保/MaiMBot/plugins目录存在,条件性复制适配器模板,最后执行python bot.py
容器编排
docker-compose.yml
启用EULA_AGREEPRIVACY_AGREE环境变量;移除./docker-config/adapters卷挂载。
依赖管理
pyproject.toml
maibot-dashboard依赖升级至1.0.1.dev2026050251

WebUI聊天系统重构

层级 / 文件 概述
消息类型定义
src/webui/routers/chat/types.ts
扩展了消息段类型,新增atreply段数据结构;支持rich消息、关联会话的bot_qqgroup_id;移除thinking消息类型。
后端消息序列化
src/webui/routers/chat/service.py
重写聊天历史序列化为WebUI rich消息格式;实现回复段数据补全(target_message_content和发送者信息);将group-based广播转为channel-based架构,支持group:<gid>private:<uid>两种路由;新增bot_qq会话信息。
后端API路由
src/webui/routers/chat/routes.py, src/webui/routers/model.py
聊天历史查询改为按group_id或标准化user_id路由;清空历史支持私人对话;移除/info响应中的group_id字段;模型端点新增OpenAI兼容客户端的Authorization头注入。
消息发送
src/chat/message_receive/uni_message_sender.py
WebUI广播不再强制使用默认group_id;支持从additional_config提取目标用户ID用于私聊转发。
配置schema
src/webui/config_schema.py
处理description字段中的_wrap_标记,转换为换行符以支持多行描述展示。

Dashboard前端聊天功能升级

层级 / 文件 概述
聊天数据类型
dashboard/src/routes/chat/types.ts
新增atreply消息段类型及其数据接口;会话信息新增bot_qq字段;支持rich消息的message_typesegments;移除thinking消息类型。
聊天上下文
dashboard/src/routes/chat/ChatScrollContext.tsx
创建新的React Context以支持消息滚动和定位交互。
消息列表和渲染
dashboard/src/routes/chat/MessageList.tsx, dashboard/src/routes/chat/MessageRenderer.tsx
消息列表支持botQq头像获取;实现消息滚动定位和flash动画;消息渲染支持at和reply富文本段;移除thinking气泡;新增ReplySegmentBlock可点击导航。
聊天页面
dashboard/src/routes/chat/index.tsx, dashboard/src/routes/chat/ChatWorkspaceSidebar.tsx
会话信息新增bot_qq;消息历史改为构建完整的ChatMessage对象,包含message_type和segments;移除thinking占位符消息逻辑。
WebSocket客户端
dashboard/src/lib/chat-ws-client.ts
新增per-session打开状态追踪和浅比较,防止React StrictMode下的重复session.open调用;实现重连时的状态恢复。
认证
dashboard/src/routes/auth.tsx
支持从URL query或hash中自动提取access_token进行登录;新增token验证回调函数;移除token后防止泄露。
样式动画
dashboard/src/index.css
新增.chat-message-flash CSS类和@keyframes chat-message-flash动画,用于消息回复高亮效果。

Dashboard基础组件和工具改进

层级 / 文件 概述
UI组件
dashboard/src/components/ui/dialog.tsx, dashboard/src/components/ui/scroll-area.tsx
DialogContent由grid改为flex column布局;DialogBody和ScrollArea改进flex容器配置,支持动态内容尺寸。
表单组件
dashboard/src/components/dynamic-form/DynamicField.tsx, dashboard/src/components/dynamic-form/DynamicConfigForm.tsx
描述文本新增whitespace-pre-line类以保留换行符;嵌套schema hook传递nestedSchema属性。
侧栏布局
dashboard/src/components/layout/Sidebar.tsx
大屏幕上新增lg:z-0 z-index控制;ScrollArea flex容器配置优化。
内存组件
dashboard/src/components/memory/MemoryMiniTabs.tsx, dashboard/src/components/memory/MemoryProgressIndicator.tsx
新增MemoryMiniTabs标签页组件(pill/胶囊样式);新增MemoryProgressIndicator进度指示器(支持busy加载、compact模式、tone语义色彩)。
字段Hook工厂
dashboard/src/routes/config/bot/hooks/ListItemEditorHookFactory.tsx, dashboard/src/routes/config/bot/hooks/complexFieldHooks.tsx, dashboard/src/routes/config/bot/hooks/JsonFieldHookFactory.tsx
新增ListItemEditorHook工厂函数,替代JSON编辑器,提供富列表项编辑UI;ChatTalkValueRulesHook、ExpressionLearningListHook、KeywordRulesHook、RegexRulesHook迁移到列表编辑器并新增per-item标题格式化。
API客户端
dashboard/src/lib/config-api.ts, dashboard/src/lib/field-hooks.ts, dashboard/src/lib/version.ts
fetchProviderModels改进响应解析逻辑处理多种格式;FieldHookComponentProps新增nestedSchema可选属性;版本常数从1.0.0升级至1.0.1。
内存进度客户端
dashboard/src/lib/memory-progress-client.ts
新增MemoryProgressClient,通过统一WebSocket事件桥接监听import/delete/feedback进度,支持异步subscribe/unsubscribe生命周期。
包版本
dashboard/package.json
版本从1.0.0升级至1.0.1。

知识库管理UI实现

层级 / 文件 概述
常量和工具
dashboard/src/routes/resource/knowledge-base/constants.ts, dashboard/src/routes/resource/knowledge-base/utils.ts
新增导入/删除/反馈任务的分页限制、状态映射表、步骤标签、操作类型格式化;导出进度归一化、数值解析、时间格式化、反馈决策/状态/影响描述等40多个工具函数。
删除标签页
dashboard/src/routes/resource/knowledge-base/tabs/DeleteTab.tsx
新增DeleteTab组件,支持来源批量删除卡片(搜索、全选、删除预览)和删除操作恢复卡片(操作搜索、模式/状态过滤、分页列表、详情面板含影响对象表)。
反馈标签页
dashboard/src/routes/resource/knowledge-base/tabs/FeedbackTab.tsx
新增FeedbackTab组件,支持反馈纠正历史搜索、状态/回滚过滤、分页列表、详情面板(任务元数据、回滚动作、影响摘要、JSON展开、动作时间线)。
导入标签页
dashboard/src/routes/resource/knowledge-base/tabs/ImportTab.tsx
新增ImportTab组件(1270行),支持7种导入模式、路径预检、导入队列查看(运行中/排队中/最近完成)、任务详情(状态/进度/重试/文件状态/分块状态表格)。
调优标签页
dashboard/src/routes/resource/knowledge-base/tabs/TuningTab.tsx
新增TuningTab组件,支持调优参数设置、JSON/TOML配置快照查看、任务列表和最佳结果应用。
模型供应商表单
dashboard/src/routes/config/modelProvider/ProviderForm.tsx
表单元素样式微调,新增className="contents"

文档和版本更新

层级 / 文件 概述
变更日志
changelogs/changelog.md
1.0.0版本条目从2026-4-19更新至2026-5-2;新增"核心功能更新"和"完整更新清单"两大结构化分区,覆盖回复系统、长期记忆、插件运行时、MCP工具系统、模型/缓存/配置、WebUI/API、表情包图片、表达方式/黑话学习、日志/部署/工程等细分模块。
设计文档移除
changelogs/mai_next_design.md, changelogs/mai_next_todo.md
移除了mai_next_design.md全部内容(732行)和mai_next_todo.md全部内容(191行),作为0.3.0版本规划的存档清理。

序列图

sequenceDiagram
    participant User as 用户
    participant Frontend as Dashboard<br/>前端
    participant WsClient as WebSocket<br/>客户端
    participant Backend as WebUI<br/>后端服务
    participant DB as 数据库

    rect rgba(100, 150, 200, 0.5)
    Note over User,DB: 私聊消息流程(新增)
    User->>Frontend: 输入消息 (私聊模式)
    Frontend->>WsClient: openSession({user_id, 私聊标志})
    WsClient->>Backend: session.open (channel_key=private:uid)
    Backend->>Backend: 计算channel_key<br/>绑定私聊通道
    User->>Frontend: 发送消息
    Frontend->>Backend: POST /api/chat/send<br/>(user_id)
    Backend->>DB: 保存消息<br/>(group_id=null, user_id)
    Backend->>WsClient: 广播到 channel_key<br/>(private:uid)
    WsClient->>Frontend: 接收消息事件
    Frontend->>Frontend: 序列化为rich消息<br/>(message_type, segments)
    Frontend->>User: 渲染消息 + at/reply段
    end

    rect rgba(150, 100, 200, 0.5)
    Note over User,DB: 消息回复/at交互(新增)
    User->>Frontend: 点击 reply 段
    Frontend->>Frontend: useChatScroll<br/>()查找目标消息
    Frontend->>Frontend: 滚动并高亮<br/>(chat-message-flash)
    User->>Frontend: 悬停 at 段
    Frontend->>Frontend: 显示@用户标识
    end

    rect rgba(200, 150, 100, 0.5)
    Note over Backend,DB: 知识库导入进度<br/>(新增)
    Backend->>Backend: 触发导入任务<br/>(import_progress)
    Backend->>WsClient: 广播进度事件
    WsClient->>Frontend: memory domain<br/>事件到达
    Frontend->>Frontend: MemoryProgressClient<br/>路由事件
    Frontend->>Frontend: 更新ImportTab<br/>进度指示器
    User->>Frontend: 查看导入队列<br/>和分块状态
    end
Loading

预估代码审查工作量

🎯 4 (复杂) | ⏱️ ~50 分钟

该PR涉及多个复杂领域的相互关联改动:WebUI后端的聊天服务重构(300+行)需要理解channel-based路由、消息序列化和私聊支持的交互;Dashboard前端聊天功能升级(150+行)涉及富文本消息段、滚动上下文和虚拟身份同步逻辑;新增知识库管理UI(4个tab组件共2500+行)包含大量列表/分页/状态管理代码;Docker构建流程简化涉及多个CI配置和脚本变更。这些改动虽然分散在多个文件,但在逻辑、类型和API边界上紧密相关,需要逐个理解每个领域的设计意图。

可能相关的PR

  • Dev #1605:两个PR都修改了相同的聊天前端和WebUI聊天文件(MessageList/MessageRenderer/types和chat服务/路由),添加富文本消息段(reply/at)、会话/通道路由和bot身份(bot_qq)处理,存在直接代码级联系。
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

@SengokuCola SengokuCola merged commit 3ab5d83 into main May 2, 2026
2 of 4 checks passed
@github-project-automation github-project-automation Bot moved this to 已完成 in MaiM to the GATE May 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants