Skip to content

Dev#1651

Merged
SengokuCola merged 7 commits into
mainfrom
dev
May 7, 2026
Merged

Dev#1651
SengokuCola merged 7 commits into
mainfrom
dev

Conversation

@SengokuCola
Copy link
Copy Markdown
Collaborator

@SengokuCola SengokuCola commented May 7, 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

v1.0.7 发行说明

  • 新功能

    • 添加仪表板自动更新检测与升级功能
    • 支持自定义提示词文件追踪与重置功能
    • 添加高级设置可见性切换选项
  • 问题修复

    • 修复响应式布局中的溢出问题
    • 改进对话框与嵌套编辑器的状态同步
    • 优化导出菜单和工具栏渲染逻辑
  • 样式改进

    • 增强响应式间距与布局约束
    • 改进标题栏对齐与按钮样式

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 7, 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: b83ff5dc-d5b2-4d23-85ee-f5feb91c5547

📥 Commits

Reviewing files that changed from the base of the PR and between 16b560e and 16ece26.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (57)
  • dashboard/package.json
  • dashboard/src/components/dynamic-form/DynamicConfigForm.tsx
  • dashboard/src/components/dynamic-form/DynamicField.tsx
  • dashboard/src/components/layout/Header.tsx
  • dashboard/src/components/layout/Layout.tsx
  • dashboard/src/components/layout/LogoArea.tsx
  • dashboard/src/components/ui/extra-params-dialog.tsx
  • dashboard/src/components/ui/nested-key-value-editor.tsx
  • dashboard/src/i18n/locales/zh.json
  • dashboard/src/index.css
  • dashboard/src/lib/prompt-api.ts
  • dashboard/src/lib/system-api.ts
  • dashboard/src/lib/version.ts
  • dashboard/src/routes/config/bot.tsx
  • dashboard/src/routes/config/bot/hooks/ListItemEditorHookFactory.tsx
  • dashboard/src/routes/config/bot/hooks/complexFieldHooks.tsx
  • dashboard/src/routes/config/bot/hooks/index.ts
  • dashboard/src/routes/config/bot/sections/ExpressionSection.tsx
  • dashboard/src/routes/config/model.tsx
  • dashboard/src/routes/config/modelProvider/ProviderList.tsx
  • dashboard/src/routes/config/modelProvider/index.tsx
  • dashboard/src/routes/config/prompts.tsx
  • dashboard/src/routes/index.tsx
  • dashboard/src/routes/resource/__tests__/knowledge-base.test.tsx
  • dashboard/src/routes/resource/knowledge-base/tabs/ImportTab.tsx
  • pytests/A_memorix_test/test_metadata_store_sources.py
  • pytests/A_memorix_test/test_summary_importer_model_config.py
  • pytests/A_memorix_test/test_web_import_manager_payloads.py
  • pytests/prompt_test/test_prompt_manager.py
  • pytests/utils_test/statistic_test.py
  • pytests/webui/test_memory_routes.py
  • pytests/webui/test_statistics_service.py
  • pytests/webui/test_system_routes.py
  • src/A_memorix/core/runtime/sdk_memory_kernel.py
  • src/A_memorix/core/storage/metadata_store.py
  • src/A_memorix/core/utils/summary_importer.py
  • src/A_memorix/core/utils/web_import_manager.py
  • src/A_memorix/host_service.py
  • src/chat/utils/statistic.py
  • src/common/prompt_i18n.py
  • src/config/config.py
  • src/config/official_configs.py
  • src/core/tooling.py
  • src/emoji_system/emoji_manager.py
  • src/main.py
  • src/plugin_runtime/host/message_utils.py
  • src/prompt/prompt_manager.py
  • src/services/memory_flow_service.py
  • src/services/memory_service.py
  • src/services/statistics_service.py
  • src/webui/dashboard_update.py
  • src/webui/routers/chat/service.py
  • src/webui/routers/config.py
  • src/webui/routers/statistics.py
  • src/webui/routers/system.py
  • src/webui/routers/websocket/manager.py
  • src/webui/routers/websocket/unified.py

总体概况

该PR包含多个独立但相关的功能增强和改进:Dashboard版本更新(1.0.6→1.0.7)、UI响应式设计改进、提示词管理系统、WebUI自动更新机制、统计数据服务重构和A_memorix导入规范化。

变更内容

Dashboard界面和提示词管理系统

层 / 文件 摘要
版本和配置
dashboard/package.json, dashboard/src/lib/version.ts, src/config/config.py, src/config/official_configs.py
Dashboard版本从1.0.6更新到1.0.7;新增WebUIConfig.auto_update_dashboard配置字段;MMC_VERSION和CONFIG_VERSION版本号更新。
核心动态表单功能
dashboard/src/components/dynamic-form/DynamicConfigForm.tsx
高级可见性处理从本地状态重构为单一解析标志resolvedAdvancedVisible;新增schemaHasVisibleContent回调检查模式树可见内容;AdvancedSettingsButton导出;嵌套部分可见性判断逻辑增强。
字段级UI改进
dashboard/src/components/dynamic-form/DynamicField.tsx
添加min-w-0宽度约束;调整标签颜色样式为text-sky-*;更新布尔开关和滑块容器布局;支持文本换行。
布局响应式调整
dashboard/src/components/layout/Header.tsx, dashboard/src/components/layout/Layout.tsx, dashboard/src/components/layout/LogoArea.tsx
Header垂直分隔线隐藏/显示响应式调整;按钮响应式padding;main容器添加min-w-0防溢出;LogoArea高度h-16→h-20;版本显示结构重构。
提示词管理API
dashboard/src/lib/prompt-api.ts
PromptFileInfoPromptFileContent添加customized布尔字段;新增getDefaultPromptFile()resetPromptFile()函数。
WebUI提示词路由实现
src/webui/routers/config.py
新增CUSTOM_PROMPTS_DIR用于存储用户覆盖;提示词列表/读取/更新/删除端点添加customized标记;新增/default端点读取内置提示词;实现覆盖文件读写逻辑。
提示词管理器locale支持
src/prompt/prompt_manager.ts
添加locale感知的保存/加载逻辑;add_prompt()/replace_prompt()接受prompt_locale参数;自定义提示词按locale目录组织;扫描active locale目录加载用户覆盖。
Bot配置页面增强
dashboard/src/routes/config/bot.tsx, dashboard/src/routes/config/bot/hooks/
新增AliasNamesHook和MultipleReplyStyleHook;ListItemEditorHookFactory支持collapseButtonDisplay选项;tab栏添加高级设置切换按钮和更多/收起按钮;传入advancedVisible和sectionColumns。
模型配置页面改进
dashboard/src/routes/config/model.tsx, dashboard/src/routes/config/modelProvider/
ProviderList新增toolbarActions属性;工具栏操作从页面头移至ProviderList组件;模型编辑对话框调整价格字段layout;移动端操作行独立渲染。
界面动画
dashboard/src/index.css
添加config-tab-enter和config-tab-content-enter关键帧动画。
国际化更新
dashboard/src/i18n/locales/zh.json
modelManagement标签更新为"模型管理"。
其他UI组件
dashboard/src/components/ui/extra-params-dialog.tsx, dashboard/src/components/ui/nested-key-value-editor.tsx
extra-params-dialog添加useEffect同步editingValue;nested-key-value-editor添加lastEmittedValueRef避免冗余同步。
测试和文档
dashboard/src/routes/config/bot/sections/ExpressionSection.tsx
学习规则删除按钮改为icon-only按钮,添加aria-label和sr-only文本。

WebUI版本检查和自动更新系统

层 / 文件 摘要
版本检查基础设施
src/webui/dashboard_update.py
新增模块实现Dashboard版本检查和自动更新;包含get_installed_dashboard_version()、normalize_version()、is_newer_version();从PyPI异步查询最新版本(含TTL缓存);get_dashboard_version_info()聚合版本信息。
包运行检测
src/webui/dashboard_update.py
实现detect_package_runner()检测uv/pip/unknown;支持Windows(wmic)和Linux(/proc)不同OS下的进程检测;_build_update_command()构造升级命令。
自动更新执行
src/webui/dashboard_update.py
auto_update_dashboard_if_needed()异步执行升级子进程;处理subprocess启动和非零返回码错误;返回结构化DashboardUpdateResult。
系统路由集成
src/webui/routers/system.py
新增GET /system/dashboard-version端点;引入DashboardVersionResponse Pydantic模型;返回当前版本、最新版本、更新标记和运行器信息。
启动流程集成
src/main.py
添加_auto_update_webui_dashboard()异步方法检查配置并触发更新;initialize()中在WebUI服务器设置前执行自动更新;改为顺序await而非并发执行初始化和任务调度。
版本信息展示
dashboard/src/components/layout/LogoArea.tsx, dashboard/src/routes/index.tsx
LogoArea添加getDashboardVersionStatus()调用显示更新提示链接;IndexPage新增useEffect获取stable/test release和dashboard版本状态;版本卡片展示bot、WebUI、外部项目链接。

统计数据服务和仪表板

层 / 文件 摘要
统计服务核心
src/services/statistics_service.py
新增模块提供异步统计计算;get_dashboard_statistics()支持缓存;compute_dashboard_statistics()编排summary/model/hourly/daily/recent统计。
缓存机制
src/services/statistics_service.py
get_cached_dashboard_statistics()读取本地快照;store/update_dashboard_statistics_cache_entry()持久化;_compact_dashboard_cache_entry()移除零值时段实现稀疏存储;_expand_dashboard_cache_entry()重构完整时间序列。
数据计算函数
src/services/statistics_service.py
get_summary_statistics()聚合请求/成本/tokens/online时间;get_model_statistics()按模型分组top-10;get_hourly/daily_statistics()时间序列分组;get_recent_activity()最近使用;fetch_*_since()原始数据查询;get_earliest_statistics_time()计算最早时间戳。
路由简化
src/webui/routers/statistics.py
从本地多步骤聚合重构为委托给statistics_service;/dashboard、/summary、/models端点调用对应service函数;移除本地aggregation逻辑。
数据访问重构
src/chat/utils/statistic.py
移除直接SQLModel查询,使用service层的fetch_*_since()函数;StatisticOutputTask.run()和AsyncStatisticOutputTask.run()添加refresh_dashboard_statistics_cache()调用;移除_get_all_time_start_time()改用get_earliest_statistics_time()。

A_memorix导入和数据规范化

层 / 文件 摘要
LLM输出规范化
src/A_memorix/core/utils/summary_importer.py
新增_normalize_entity_items()去重字符串实体;_normalize_relation_items()验证relation字典;_message_timestamp()提取多属性路径时间戳;import_from_stream()使用规范化器验证LLM输出。
导入数据验证
src/A_memorix/core/utils/web_import_manager.py
新增_coerce_import_data_dict()强制JSON对象验证;_normalize_import_relation/entity_list()安全转换列表;_persist_processed_chunk()使用规范化器处理extraction输出;_llm_call()和chat时间提取均通过dict强制转换。
进度跟踪改进
src/A_memorix/core/utils/web_import_manager.py
_refresh_maibot_progress_from_state()改用_recompute_file_progress();set_chunk*()完成/失败/取消后调用_recompute_file_progress();添加_recompute_file_progress()辅助计算进度比例。
查询过滤
src/A_memorix/core/storage/metadata_store.py
get_all_sources()添加is_deleted过滤排除软删除段落;_run_runtime_auto_migration()日志改为f-string。
导入进度显示
dashboard/src/routes/resource/knowledge-base/tabs/ImportTab.tsx
新增formatChunkSummary()生成块统计文本;MemoryProgressIndicator使用formatChunkSummary()显示done/total/failed/cancelled;文件卡进度副文本使用新格式;completed_with_errors状态映射到warning。
测试覆盖
pytests/A_memorix_test/, dashboard/src/routes/resource/__tests__/
test_metadata_store_sources.py验证软删除过滤;test_summary_importer_model_config.py测试规范化;test_web_import_manager_payloads.py全面覆盖进度语义和数据验证;knowledge-base.test.tsx测试错误状态显示。

通用改进和日志格式化

层 / 文件 摘要
日志格式化统一
src/A_memorix/core/runtime/sdk_memory_kernel.py, src/A_memorix/host_service.py, src/core/tooling.py, src/emoji_system/emoji_manager.py, src/common/prompt_i18n.py, src/services/memory_flow_service.py, src/services/memory_service.py, src/webui/routers/chat/service.py, src/webui/routers/websocket/manager.py, src/webui/routers/websocket/unified.py, src/plugin_runtime/host/message_utils.py
统一日志消息从%-格式化改为f-string;保持日志级别、异常信息、返回值逻辑不变。
配置版本更新
src/config/config.py
MMC_VERSION更新1.0.0-pre.11→pre.13;CONFIG_VERSION更新8.10.9→8.10.10;新增A_memorix legacy迁移逻辑(web.import→web.import_config);load_config_from_file()应用A_memorix归一化并条件化配置重写。
提示词测试更新
pytests/prompt_test/test_prompt_manager.py
添加DEFAULT_LOCALE导入;调整路径期望使用locale目录。
统计测试重构
pytests/utils_test/statistic_test.py
test_statistic_read_queries_disable_auto_commit改为补丁fetch函数并验证db_session不被调用。
WebUI端点测试
pytests/webui/test_memory_routes.py, pytests/webui/test_statistics_service.py, pytests/webui/test_system_routes.py
test_memory_routes.py验证profile/episode列表和search端点person_name/person_id处理;test_statistics_service.py全面覆盖fetch/cache/compute逻辑;test_system_routes.py测试_is_newer_version()版本比较。

序列图

当前变更不符合序列图生成条件——主要为新功能模块化实现和UI改进,而非多组件间复杂交互的控制流重构。

代码审查工作量估算

🎯 4 (Complex) | ⏱️ ~60 分钟

变更涉及多个独立但相互关联的功能模块(Dashboard更新、提示词管理、统计服务、A_memorix规范化),包含新增大量代码(statistics_service.py 491行、dashboard_update.py 283行)和对现有多个文件的修改。虽然单个模块改动相对直接,但需要理解各模块间的协作关系、缓存策略、locale处理和进度跟踪逻辑,涉及异构变更、新数据流和配置迁移。

可能相关的PR

  • Mai-with-u/MaiBot#1628:修改Dashboard和WebUI提示词端点,与本PR的提示词管理系统改动相关。
  • Mai-with-u/MaiBot#1640:修改同一动态表单组件(DynamicConfigForm.tsx、DynamicField.tsx),代码级直接相关。
  • Mai-with-u/MaiBot#1650:修改A_memorix导入规范化和ImportTab显示,与本PR数据验证和进度改进相关。
✨ 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 d3cd5a4 into main May 7, 2026
3 of 6 checks passed
@github-project-automation github-project-automation Bot moved this to 已完成 in MaiM to the GATE May 7, 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