diff --git a/.gitignore b/.gitignore index 844e60a5..9db98c1d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ run_maibot_core.bat run_voice.bat run_napcat_adapter.bat run_ad.bat -s4u.s4u llm_tool_benchmark_results.json MaiBot-Napcat-Adapter-main MaiBot-Napcat-Adapter @@ -27,6 +26,7 @@ run.bat log_debug/ run_amds.bat run_none.bat +docs-mai/ run.py message_queue_content.txt message_queue_content.bat diff --git a/README.md b/README.md index ed64d2fd..ba443277 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ ## 🙋 贡献和致谢 你可以阅读[开发文档](https://docs.mai-mai.org/develop/)来更好的了解麦麦! MaiCore 是一个开源项目,我们非常欢迎你的参与。你的贡献,无论是提交 bug 报告、功能需求还是代码 pr,都对项目非常宝贵。我们非常感谢你的支持!🎉 -但无序的讨论会降低沟通效率,进而影响问题的解决速度,因此在提交任何贡献前,请务必先阅读本项目的[贡献指南](docs/CONTRIBUTE.md)。(待补完) +但无序的讨论会降低沟通效率,进而影响问题的解决速度,因此在提交任何贡献前,请务必先阅读本项目的[贡献指南](docs-src/CONTRIBUTE.md)。(待补完) ### 贡献者 diff --git a/changelogs/changelog.md b/changelogs/changelog.md index 6f60b468..0a4f34b9 100644 --- a/changelogs/changelog.md +++ b/changelogs/changelog.md @@ -1,8 +1,46 @@ # Changelog ## [0.11.5] - 2025-11-21 -### 功能更改和修复 -- 优化planner和replyer的协同 -- 细化debug的log +### 🌟 重大更新 +- WebUI 现支持手动重启麦麦,曲线救国版“热重载” +- 新增麦麦 QQ 适配器可视化编辑 UI(独立进程,需手动上传/下载并覆盖适配器文件) +- 麦麦主程序配置支持可视化模式与源代码模式双模式编辑,后端执行 TOML 校验 +- 优化 planner 与 replyer 协同机制,调试日志更细 + +### 新增 +- 表情包管理、人物信息管理、表达方式管理界面手机端适配 +- 配置页“重启麦麦”提示 +- 详细的debug prompt显示配置 +- 麦麦界面操作主题色按钮 +- 前端集成 CodeMirror(Python/JSON/TOML 语法高亮)并对 JSON 配置提供自动纠错提示 + +### 修复 +- 表情包缩略图过小 +- 添加模型后无法立即显示 +- 插件市场分类错误 +- 浅色模式下日志查看器背景异常 +- 表情包详情窗口无法关闭 +- 情绪标签无法正常读取(issues/1373) +- 模型任务配置界面模型温度不可更改(issues/1369) +- 模型任务配置界面部分输入框无法删除默认值 +- 插件商店默认勾选“仅显示兼容插件” +- 插件商店标签页数量显示错误 +- 日志查看器日志换行异常 +- 主题色未正确应用 +- 侧边栏滚动条问题 +- 移除前端 TOML 解析库导致的兼容问题 + +### 优化 +- 首页加载用户体验 +- 首页加载速度(9s → <1s) +- 整个界面的初屏加载速度 + +### 更新 +- 适配器配置支持上传模式与指定路径模式;指定路径模式可免去反复上传/下载配置文件 +- 适配器配置界面标签页响应式优化,小屏仅显示简短标签 +- 麦麦资源管理所有界面的批量删除能力 +- 资源管理所有界面的分页、每页数量选择与页跳转 +- 插件市场新增点赞、点踩、评分与下载量统计(基于 Cloudflare,保证国内可访问) +- 麦麦表情包查看界面的描述部分支持 Markdown 渲染 ## [0.11.4] - 2025-11-19 ### 🌟 主要更新内容 diff --git a/docs/Bing.md b/docs-src/Bing.md similarity index 100% rename from docs/Bing.md rename to docs-src/Bing.md diff --git a/docs/CONTRIBUTE.md b/docs-src/CONTRIBUTE.md similarity index 100% rename from docs/CONTRIBUTE.md rename to docs-src/CONTRIBUTE.md diff --git a/docs/plugins/action-components.md b/docs-src/plugins/action-components.md similarity index 100% rename from docs/plugins/action-components.md rename to docs-src/plugins/action-components.md diff --git a/docs/plugins/api/chat-api.md b/docs-src/plugins/api/chat-api.md similarity index 100% rename from docs/plugins/api/chat-api.md rename to docs-src/plugins/api/chat-api.md diff --git a/docs/plugins/api/component-manage-api.md b/docs-src/plugins/api/component-manage-api.md similarity index 100% rename from docs/plugins/api/component-manage-api.md rename to docs-src/plugins/api/component-manage-api.md diff --git a/docs/plugins/api/config-api.md b/docs-src/plugins/api/config-api.md similarity index 100% rename from docs/plugins/api/config-api.md rename to docs-src/plugins/api/config-api.md diff --git a/docs/plugins/api/database-api.md b/docs-src/plugins/api/database-api.md similarity index 100% rename from docs/plugins/api/database-api.md rename to docs-src/plugins/api/database-api.md diff --git a/docs/plugins/api/emoji-api.md b/docs-src/plugins/api/emoji-api.md similarity index 100% rename from docs/plugins/api/emoji-api.md rename to docs-src/plugins/api/emoji-api.md diff --git a/docs/plugins/api/generator-api.md b/docs-src/plugins/api/generator-api.md similarity index 100% rename from docs/plugins/api/generator-api.md rename to docs-src/plugins/api/generator-api.md diff --git a/docs/plugins/api/llm-api.md b/docs-src/plugins/api/llm-api.md similarity index 100% rename from docs/plugins/api/llm-api.md rename to docs-src/plugins/api/llm-api.md diff --git a/docs/plugins/api/logging-api.md b/docs-src/plugins/api/logging-api.md similarity index 100% rename from docs/plugins/api/logging-api.md rename to docs-src/plugins/api/logging-api.md diff --git a/docs/plugins/api/message-api.md b/docs-src/plugins/api/message-api.md similarity index 100% rename from docs/plugins/api/message-api.md rename to docs-src/plugins/api/message-api.md diff --git a/docs/plugins/api/person-api.md b/docs-src/plugins/api/person-api.md similarity index 100% rename from docs/plugins/api/person-api.md rename to docs-src/plugins/api/person-api.md diff --git a/docs/plugins/api/plugin-manage-api.md b/docs-src/plugins/api/plugin-manage-api.md similarity index 100% rename from docs/plugins/api/plugin-manage-api.md rename to docs-src/plugins/api/plugin-manage-api.md diff --git a/docs/plugins/api/send-api.md b/docs-src/plugins/api/send-api.md similarity index 100% rename from docs/plugins/api/send-api.md rename to docs-src/plugins/api/send-api.md diff --git a/docs/plugins/api/tool-api.md b/docs-src/plugins/api/tool-api.md similarity index 100% rename from docs/plugins/api/tool-api.md rename to docs-src/plugins/api/tool-api.md diff --git a/docs/plugins/command-components.md b/docs-src/plugins/command-components.md similarity index 100% rename from docs/plugins/command-components.md rename to docs-src/plugins/command-components.md diff --git a/docs/plugins/configuration-guide.md b/docs-src/plugins/configuration-guide.md similarity index 100% rename from docs/plugins/configuration-guide.md rename to docs-src/plugins/configuration-guide.md diff --git a/docs/plugins/dependency-management.md b/docs-src/plugins/dependency-management.md similarity index 100% rename from docs/plugins/dependency-management.md rename to docs-src/plugins/dependency-management.md diff --git a/docs/plugins/image/quick-start/1750326700269.png b/docs-src/plugins/image/quick-start/1750326700269.png similarity index 100% rename from docs/plugins/image/quick-start/1750326700269.png rename to docs-src/plugins/image/quick-start/1750326700269.png diff --git a/docs/plugins/image/quick-start/1750332508760.png b/docs-src/plugins/image/quick-start/1750332508760.png similarity index 100% rename from docs/plugins/image/quick-start/1750332508760.png rename to docs-src/plugins/image/quick-start/1750332508760.png diff --git a/docs/plugins/index.md b/docs-src/plugins/index.md similarity index 100% rename from docs/plugins/index.md rename to docs-src/plugins/index.md diff --git a/docs/plugins/manifest-guide.md b/docs-src/plugins/manifest-guide.md similarity index 100% rename from docs/plugins/manifest-guide.md rename to docs-src/plugins/manifest-guide.md diff --git a/docs/plugins/quick-start.md b/docs-src/plugins/quick-start.md similarity index 100% rename from docs/plugins/quick-start.md rename to docs-src/plugins/quick-start.md diff --git a/docs/plugins/tool-components.md b/docs-src/plugins/tool-components.md similarity index 100% rename from docs/plugins/tool-components.md rename to docs-src/plugins/tool-components.md diff --git a/docs/image-1.png b/docs/image-1.png deleted file mode 100644 index c7a0adc8..00000000 Binary files a/docs/image-1.png and /dev/null differ diff --git a/docs/image.png b/docs/image.png deleted file mode 100644 index 63416251..00000000 Binary files a/docs/image.png and /dev/null differ diff --git a/docs/model_configuration_guide.md b/docs/model_configuration_guide.md deleted file mode 100644 index f2da8be1..00000000 --- a/docs/model_configuration_guide.md +++ /dev/null @@ -1,336 +0,0 @@ -# 模型配置指南 - -本文档将指导您如何配置 `model_config.toml` 文件,该文件用于配置 MaiBot 的各种AI模型和API服务提供商。 - -## 配置文件结构 - -配置文件主要包含以下几个部分: -- 版本信息 -- API服务提供商配置 -- 模型配置 -- 模型任务配置 - -## 1. 版本信息 - -```toml -[inner] -version = "1.1.1" -``` - -用于标识配置文件的版本,遵循语义化版本规则。 - -## 2. API服务提供商配置 - -### 2.1 基本配置 - -使用 `[[api_providers]]` 数组配置多个API服务提供商: - -```toml -[[api_providers]] -name = "DeepSeek" # 服务商名称(自定义) -base_url = "https://api.deepseek.com/v1" # API服务的基础URL -api_key = "your-api-key-here" # API密钥 -client_type = "openai" # 客户端类型 -max_retry = 2 # 最大重试次数 -timeout = 30 # 超时时间(秒) -retry_interval = 10 # 重试间隔(秒) -``` - -### 2.2 配置参数说明 - -| 参数 | 必填 | 说明 | 默认值 | -|------|------|------|--------| -| `name` | ✅ | 服务商名称,需要在模型配置中引用 | - | -| `base_url` | ✅ | API服务的基础URL | - | -| `api_key` | ✅ | API密钥,请替换为实际密钥 | - | -| `client_type` | ❌ | 客户端类型:`openai`(OpenAI格式)或 `gemini`(Gemini格式) | `openai` | -| `max_retry` | ❌ | API调用失败时的最大重试次数 | 2 | -| `timeout` | ❌ | API请求超时时间(秒) | 30 | -| `retry_interval` | ❌ | 重试间隔时间(秒) | 10 | - -**请注意,对于`client_type`为`gemini`的模型,`retry`字段由`gemini`自己决定。** -### 2.3 支持的服务商示例 - -#### DeepSeek -```toml -[[api_providers]] -name = "DeepSeek" -base_url = "https://api.deepseek.com/v1" -api_key = "your-deepseek-api-key" -client_type = "openai" -``` - -#### SiliconFlow -```toml -[[api_providers]] -name = "SiliconFlow" -base_url = "https://api.siliconflow.cn/v1" -api_key = "your-siliconflow-api-key" -client_type = "openai" -``` - -#### Google Gemini -```toml -[[api_providers]] -name = "Google" -base_url = "https://generativelanguage.googleapis.com/v1beta" -api_key = "your-google-api-key" -client_type = "gemini" # 注意:Gemini需要使用特殊客户端 -``` - -## 3. 模型配置 - -### 3.1 基本模型配置 - -使用 `[[models]]` 数组配置多个模型: - -```toml -[[models]] -model_identifier = "deepseek-chat" # 模型在API服务商中的标识符 -name = "deepseek-v3" # 自定义模型名称 -api_provider = "DeepSeek" # 引用的API服务商名称 -price_in = 2.0 # 输入价格(元/M token) -price_out = 8.0 # 输出价格(元/M token) -``` - -### 3.2 高级模型配置 - -#### 强制流式输出 -对于不支持非流式输出的模型: -```toml -[[models]] -model_identifier = "some-model" -name = "custom-name" -api_provider = "Provider" -force_stream_mode = true # 启用强制流式输出 -``` - -#### 额外参数配置`extra_params` -```toml -[[models]] -model_identifier = "Qwen/Qwen3-8B" -name = "qwen3-8b" -api_provider = "SiliconFlow" -[models.extra_params] -enable_thinking = false # 禁用思考 -``` -这里的 `extra_params` 可以包含任何API服务商支持的额外参数配置,**配置时应参考相应的API文档**。 - -比如上面就是参考SiliconFlow的文档配置配置的`Qwen3`禁用思考参数。 - -![SiliconFlow文档截图](image-1.png) - -以豆包文档为另一个例子 - -![豆包文档截图](image.png) - -得到豆包`"doubao-seed-1-6-250615"`的禁用思考配置方法为 -```toml -[[models]] -# 你的模型 -[models.extra_params] -thinking = {type = "disabled"} # 禁用思考 -``` - -而对于`gemini`需要单独进行配置 -```toml -[[models]] -model_identifier = "gemini-2.5-flash" -name = "gemini-2.5-flash" -api_provider = "Google" -[models.extra_params] -thinking_budget = 0 # 禁用思考 -# thinking_budget = -1 由模型自己决定 -``` - -请注意,`extra_params` 的配置应该构成一个合法的TOML字典结构,具体内容取决于API服务商的要求。 - -### 3.3 配置参数说明 - -| 参数 | 必填 | 说明 | -|------|------|------| -| `model_identifier` | ✅ | API服务商提供的模型标识符 | -| `name` | ✅ | 自定义模型名称,用于在任务配置中引用 | -| `api_provider` | ✅ | 对应的API服务商名称 | -| `price_in` | ❌ | 输入价格(元/M token),用于成本统计 | -| `price_out` | ❌ | 输出价格(元/M token),用于成本统计 | -| `force_stream_mode` | ❌ | 是否强制使用流式输出 | -| `extra_params` | ❌ | 额外的模型参数配置 | - -## 4. 模型任务配置 - -### utils - 工具模型 -用于表情包模块、取名模块、关系模块等核心功能: -```toml -[model_task_config.utils] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.2 -max_tokens = 800 -``` - -### utils_small - 小型工具模型 -用于高频率调用的场景,建议使用速度快的小模型: -```toml -[model_task_config.utils_small] -model_list = ["qwen3-8b"] -temperature = 0.7 -max_tokens = 800 -``` - -### replyer - 主要回复模型 -首要回复模型,也用于表达器和表达方式学习: -```toml -[model_task_config.replyer] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.2 -max_tokens = 800 -``` - -### planner - 决策模型 -负责决定MaiBot该做什么: -```toml -[model_task_config.planner] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.3 -max_tokens = 800 -``` - -### emotion - 情绪模型 -负责MaiBot的情绪变化: -```toml -[model_task_config.emotion] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.3 -max_tokens = 800 -``` - -### memory - 记忆模型 -```toml -[model_task_config.memory] -model_list = ["qwen3-30b"] -temperature = 0.7 -max_tokens = 800 -``` - -### vlm - 视觉语言模型 -用于图像识别: -```toml -[model_task_config.vlm] -model_list = ["qwen2.5-vl-72b"] -max_tokens = 800 -``` - -### voice - 语音识别模型 -```toml -[model_task_config.voice] -model_list = ["sensevoice-small"] -``` - -### embedding - 嵌入模型 -```toml -[model_task_config.embedding] -model_list = ["bge-m3"] -``` - -### tool_use - 工具调用模型 -需要使用支持工具调用的模型: -```toml -[model_task_config.tool_use] -model_list = ["qwen3-14b"] -temperature = 0.7 -max_tokens = 800 -``` - -### lpmm_entity_extract - 实体提取模型 -```toml -[model_task_config.lpmm_entity_extract] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.2 -max_tokens = 800 -``` - -### lpmm_rdf_build - RDF构建模型 -```toml -[model_task_config.lpmm_rdf_build] -model_list = ["siliconflow-deepseek-v3"] -temperature = 0.2 -max_tokens = 800 -``` - -### lpmm_qa - 问答模型 -```toml -[model_task_config.lpmm_qa] -model_list = ["deepseek-r1-distill-qwen-32b"] -temperature = 0.7 -max_tokens = 800 -``` - -## 5. 配置建议 - -### 5.1 Temperature 参数选择 - -| 任务类型 | 推荐温度 | 说明 | -|----------|----------|------| -| 精确任务(工具调用、实体提取) | 0.1-0.3 | 需要准确性和一致性 | -| 创意任务(对话、记忆) | 0.5-0.8 | 需要多样性和创造性 | -| 平衡任务(决策、情绪) | 0.3-0.5 | 平衡准确性和灵活性 | - -### 5.2 模型选择建议 - -| 任务类型 | 推荐模型类型 | 示例 | -|----------|--------------|------| -| 高精度任务 | 大模型 | DeepSeek-V3, GPT-4 | -| 高频率任务 | 小模型 | Qwen3-8B | -| 多模态任务 | 专用模型 | Qwen2.5-VL, SenseVoice | -| 工具调用 | 支持Function Call的模型 | Qwen3-14B | - -### 5.3 成本优化 - -1. **分层使用**:核心功能使用高质量模型,辅助功能使用经济模型 -2. **合理配置max_tokens**:根据实际需求设置,避免浪费 -3. **选择免费模型**:对于测试环境,优先使用price为0的模型 - -## 6. 配置验证 - -### 6.1 必要检查项 - -1. ✅ API密钥是否正确配置 -2. ✅ 模型标识符是否与API服务商提供的一致 -3. ✅ 任务配置中引用的模型名称是否在models中定义 -4. ✅ 多模态任务是否配置了对应的专用模型 - -### 6.2 测试配置 - -建议在正式使用前: -1. 使用少量测试数据验证配置 -2. 检查API调用是否正常 -3. 确认成本统计功能正常工作 - -## 7. 故障排除 - -### 7.1 常见问题 - -**问题1**: API调用失败 -- 检查API密钥是否正确 -- 确认base_url是否可访问 -- 检查模型标识符是否正确 - -**问题2**: 模型未找到 -- 确认模型名称在任务配置和模型定义中一致 -- 检查api_provider名称是否匹配 - -**问题3**: 响应异常 -- 检查温度参数是否合理(0-1之间) -- 确认max_tokens设置是否合适 -- 验证模型是否支持所需功能 - -### 7.2 日志查看 - -查看 `logs/` 目录下的日志文件,寻找相关错误信息。 - -## 8. 更新和维护 - -1. **定期更新**: 关注API服务商的模型更新,及时调整配置 -2. **性能监控**: 监控模型调用的成本和性能 -3. **备份配置**: 在修改前备份当前配置文件 -