From 7c5cdb82bc475449a02ffedbf91bf5e23ccbcef9 Mon Sep 17 00:00:00 2001 From: enKl03b Date: Thu, 20 Mar 2025 23:10:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86doc=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=EF=BC=8C=E6=B7=BB=E5=8A=A0macos=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/fast_q_a.md | 8 +- docs/linux_deploy_guide_for_beginners.md | 220 +++++--------------- docs/manual_deploy_linux.md | 48 +++-- docs/manual_deploy_macos.md | 201 ++++++++++++++++++ docs/{ => pic}/API_KEY.png | Bin docs/{ => pic}/MONGO_DB_0.png | Bin docs/{ => pic}/MONGO_DB_1.png | Bin docs/{ => pic}/MONGO_DB_2.png | Bin docs/pic/MongoDB_Ubuntu_guide.png | Bin 0 -> 14733 bytes docs/pic/QQ_Download_guide_Linux.png | Bin 0 -> 37847 bytes docs/pic/linux_beginner_downloadguide.png | Bin 0 -> 10333 bytes docs/{ => pic}/synology_.env.prod.png | Bin docs/{ => pic}/synology_create_project.png | Bin docs/{ => pic}/synology_docker-compose.png | Bin docs/{ => pic}/synology_how_to_download.png | Bin docs/{ => pic}/video.png | Bin docs/synology_deploy.md | 8 +- 18 files changed, 297 insertions(+), 190 deletions(-) create mode 100644 docs/manual_deploy_macos.md rename docs/{ => pic}/API_KEY.png (100%) rename docs/{ => pic}/MONGO_DB_0.png (100%) rename docs/{ => pic}/MONGO_DB_1.png (100%) rename docs/{ => pic}/MONGO_DB_2.png (100%) create mode 100644 docs/pic/MongoDB_Ubuntu_guide.png create mode 100644 docs/pic/QQ_Download_guide_Linux.png create mode 100644 docs/pic/linux_beginner_downloadguide.png rename docs/{ => pic}/synology_.env.prod.png (100%) rename docs/{ => pic}/synology_create_project.png (100%) rename docs/{ => pic}/synology_docker-compose.png (100%) rename docs/{ => pic}/synology_how_to_download.png (100%) rename docs/{ => pic}/video.png (100%) diff --git a/README.md b/README.md index 8dea5bc15..b016a2569 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@
- 麦麦演示视频 + 麦麦演示视频
👆 点击观看麦麦演示视频 👆 diff --git a/docs/fast_q_a.md b/docs/fast_q_a.md index 1f015565d..92800bad2 100644 --- a/docs/fast_q_a.md +++ b/docs/fast_q_a.md @@ -10,7 +10,7 @@ - 为什么显示:"缺失必要的API KEY" ❓ - + >你需要在 [Silicon Flow Api](https://cloud.siliconflow.cn/account/ak) 网站上注册一个账号,然后点击这个链接打开API KEY获取页面。 > @@ -41,19 +41,19 @@ >打开你的MongoDB Compass软件,你会在左上角看到这样的一个界面: > -> +> > >
> >点击 "CONNECT" 之后,点击展开 MegBot 标签栏 > -> +> > >
> >点进 "emoji" 再点击 "DELETE" 删掉所有条目,如图所示 > -> +> > >
> diff --git a/docs/linux_deploy_guide_for_beginners.md b/docs/linux_deploy_guide_for_beginners.md index 04601923f..ece0a3334 100644 --- a/docs/linux_deploy_guide_for_beginners.md +++ b/docs/linux_deploy_guide_for_beginners.md @@ -1,48 +1,51 @@ # 面向纯新手的Linux服务器麦麦部署指南 -## 你得先有一个服务器 -为了能使麦麦在你的电脑关机之后还能运行,你需要一台不间断开机的主机,也就是我们常说的服务器。 +## 事前准备 +为了能使麦麦不间断的运行,你需要一台一直开着的主机。 +### 如果你想购买服务器 华为云、阿里云、腾讯云等等都是在国内可以选择的选择。 -你可以去租一台最低配置的就足敷需要了,按月租大概十几块钱就能租到了。 +租一台最低配置的就足敷需要了,按月租大概十几块钱就能租到了。 -我们假设你已经租好了一台Linux架构的云服务器。我用的是阿里云ubuntu24.04,其他的原理相似。 +### 如果你不想购买服务器 +你可以准备一台可以一直开着的电脑/主机,只需要保证能够正常访问互联网即可 + +我们假设你已经有了一台Linux架构的服务器。举例使用的是Ubuntu24.04,其他的原理相似。 ## 0.我们就从零开始吧 ### 网络问题 -为访问github相关界面,推荐去下一款加速器,新手可以试试watttoolkit。 +为访问Github相关界面,推荐去下一款加速器,新手可以试试[Watt Toolkit](https://gitee.com/rmbgame/SteamTools/releases/latest)。 ### 安装包下载 #### MongoDB +进入[MongoDB下载页](https://www.mongodb.com/try/download/community-kubernetes-operator),并选择版本 -对于ubuntu24.04 x86来说是这个: +以Ubuntu24.04 x86为例,保持如图所示选项,点击`Download`即可,如果是其他系统,请在`Platform`中自行选择: -https://repo.mongodb.org/apt/ubuntu/dists/noble/mongodb-org/8.0/multiverse/binary-amd64/mongodb-org-server_8.0.5_amd64.deb +![](./pic/MongoDB_Ubuntu_guide.png) -如果不是就在这里自行选择对应版本 -https://www.mongodb.com/try/download/community-kubernetes-operator +不想使用上述方式?你也可以参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux)进行安装,进入后选择自己的系统版本即可 -#### Napcat - -在这里选择对应版本。 - -https://github.com/NapNeko/NapCatQQ/releases/tag/v4.6.7 - -对于ubuntu24.04 x86来说是这个: - -https://dldir1.qq.com/qqfile/qq/QQNT/ee4bd910/linuxqq_3.2.16-32793_amd64.deb +#### QQ(可选)/Napcat +*如果你使用Napcat的脚本安装,可以忽略此步* +访问https://github.com/NapNeko/NapCatQQ/releases/latest +在图中所示区域可以找到QQ的下载链接,选择对应版本下载即可 +从这里下载,可以保证你下载到的QQ版本兼容最新版Napcat +![](./pic/QQ_Download_guide_Linux.png) +如果你不想使用Napcat的脚本安装,还需参考[Napcat-Linux手动安装](https://www.napcat.wiki/guide/boot/Shell-Linux-SemiAuto) #### 麦麦 -https://github.com/SengokuCola/MaiMBot/archive/refs/tags/0.5.8-alpha.zip - -下载这个官方压缩包。 +先打开https://github.com/MaiM-with-u/MaiBot/releases +往下滑找到这个 +![下载指引](./pic/linux_beginner_downloadguide.png "") +下载箭头所指这个压缩包。 ### 路径 @@ -53,10 +56,10 @@ https://github.com/SengokuCola/MaiMBot/archive/refs/tags/0.5.8-alpha.zip ``` moi └─ mai - ├─ linuxqq_3.2.16-32793_amd64.deb - ├─ mongodb-org-server_8.0.5_amd64.deb + ├─ linuxqq_3.2.16-32793_amd64.deb # linuxqq安装包 + ├─ mongodb-org-server_8.0.5_amd64.deb # MongoDB的安装包 └─ bot - └─ MaiMBot-0.5.8-alpha.zip + └─ MaiMBot-0.5.8-alpha.zip # 麦麦的压缩包 ``` ### 网络 @@ -69,7 +72,7 @@ moi ## 2. Python的安装 -- 导入 Python 的稳定版 PPA: +- 导入 Python 的稳定版 PPA(Ubuntu需执行此步,Debian可忽略): ```bash sudo add-apt-repository ppa:deadsnakes/ppa @@ -92,6 +95,11 @@ sudo apt install python3.12 ```bash python3.12 --version ``` +- (可选)更新替代方案,设置 python3.12 为默认的 python3 版本: +```bash +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 +sudo update-alternatives --config python3 +``` - 在「终端」中,执行以下命令安装 pip: @@ -141,23 +149,17 @@ systemctl status mongod #通过这条指令检查运行状态 sudo systemctl enable mongod ``` -## 5.napcat的安装 +## 5.Napcat的安装 ``` bash +# 该脚本适用于支持Ubuntu 20+/Debian 10+/Centos9 curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh ``` - -上面的不行试试下面的 - -``` bash -dpkg -i linuxqq_3.2.16-32793_amd64.deb -apt-get install -f -dpkg -i linuxqq_3.2.16-32793_amd64.deb -``` +执行后,脚本会自动帮你部署好QQ及Napcat 成功的标志是输入``` napcat ```出来炫酷的彩虹色界面 -## 6.napcat的运行 +## 6.Napcat的运行 此时你就可以根据提示在```napcat```里面登录你的QQ号了。 @@ -170,6 +172,13 @@ napcat status #检查运行状态 ```http://<你服务器的公网IP>:6099/webui?token=napcat``` +如果你部署在自己的电脑上: +```http://127.0.0.1:6099/webui?token=napcat``` + +> [!WARNING] +> 如果你的麦麦部署在公网,请**务必**修改Napcat的默认密码 + + 第一次是这个,后续改了密码之后token就会对应修改。你也可以使用```napcat log <你的QQ号>```来查看webui地址。把里面的```127.0.0.1```改成<你服务器的公网IP>即可。 登录上之后在网络配置界面添加websocket客户端,名称随便输一个,url改成`ws://127.0.0.1:8080/onebot/v11/ws`保存之后点启用,就大功告成了。 @@ -178,7 +187,7 @@ napcat status #检查运行状态 ### step 1 安装解压软件 -``` +```bash sudo apt-get install unzip ``` @@ -229,138 +238,11 @@ bot 你可以注册一个硅基流动的账号,通过邀请码注册有14块钱的免费额度:https://cloud.siliconflow.cn/i/7Yld7cfg。 -#### 在.env.prod中定义API凭证: +#### 修改配置文件 +请参考 +- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程,适合初次使用的猫娘 +- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明,适合有经验的用户 -``` -# API凭证配置 -SILICONFLOW_KEY=your_key # 硅基流动API密钥 -SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/ # 硅基流动API地址 - -DEEP_SEEK_KEY=your_key # DeepSeek API密钥 -DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1 # DeepSeek API地址 - -CHAT_ANY_WHERE_KEY=your_key # ChatAnyWhere API密钥 -CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere API地址 -``` - -#### 在bot_config.toml中引用API凭证: - -``` -[model.llm_reasoning] -name = "Pro/deepseek-ai/DeepSeek-R1" -base_url = "SILICONFLOW_BASE_URL" # 引用.env.prod中定义的地址 -key = "SILICONFLOW_KEY" # 引用.env.prod中定义的密钥 -``` - -如需切换到其他API服务,只需修改引用: - -``` -[model.llm_reasoning] -name = "Pro/deepseek-ai/DeepSeek-R1" -base_url = "DEEP_SEEK_BASE_URL" # 切换为DeepSeek服务 -key = "DEEP_SEEK_KEY" # 使用DeepSeek密钥 -``` - -#### 配置文件详解 - -##### 环境配置文件 (.env.prod) - -``` -# API配置 -SILICONFLOW_KEY=your_key -SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/ -DEEP_SEEK_KEY=your_key -DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1 -CHAT_ANY_WHERE_KEY=your_key -CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 - -# 服务配置 -HOST=127.0.0.1 # 如果使用Docker部署,需要改成0.0.0.0,否则QQ消息无法传入 -PORT=8080 - -# 数据库配置 -MONGODB_HOST=127.0.0.1 # 如果使用Docker部署,需要改成数据库容器的名字,默认是mongodb -MONGODB_PORT=27017 -DATABASE_NAME=MegBot -MONGODB_USERNAME = "" # 数据库用户名 -MONGODB_PASSWORD = "" # 数据库密码 -MONGODB_AUTH_SOURCE = "" # 认证数据库 - -# 插件配置 -PLUGINS=["src2.plugins.chat"] -``` - -##### 机器人配置文件 (bot_config.toml) - -``` -[bot] -qq = "机器人QQ号" # 必填 -nickname = "麦麦" # 机器人昵称(你希望机器人怎么称呼它自己) - -[personality] -prompt_personality = [ - "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", - "是一个女大学生,你有黑色头发,你会刷小红书" -] -prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" - -[message] -min_text_length = 2 # 最小回复长度 -max_context_size = 15 # 上下文记忆条数 -emoji_chance = 0.2 # 表情使用概率 -ban_words = [] # 禁用词列表 - -[emoji] -auto_save = true # 自动保存表情 -enable_check = false # 启用表情审核 -check_prompt = "符合公序良俗" - -[groups] -talk_allowed = [] # 允许对话的群号 -talk_frequency_down = [] # 降低回复频率的群号 -ban_user_id = [] # 禁止回复的用户QQ号 - -[others] -enable_advance_output = true # 启用详细日志 -enable_kuuki_read = true # 启用场景理解 - -# 模型配置 -[model.llm_reasoning] # 推理模型 -name = "Pro/deepseek-ai/DeepSeek-R1" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - -[model.llm_reasoning_minor] # 轻量推理模型 -name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - -[model.llm_normal] # 对话模型 -name = "Pro/deepseek-ai/DeepSeek-V3" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - -[model.llm_normal_minor] # 备用对话模型 -name = "deepseek-ai/DeepSeek-V2.5" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - -[model.vlm] # 图像识别模型 -name = "deepseek-ai/deepseek-vl2" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - -[model.embedding] # 文本向量模型 -name = "BAAI/bge-m3" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" - - -[topic.llm_topic] -name = "Pro/deepseek-ai/DeepSeek-V3" -base_url = "SILICONFLOW_BASE_URL" -key = "SILICONFLOW_KEY" -``` **step # 6** 运行 @@ -438,7 +320,7 @@ sudo systemctl enable bot.service # 启动bot服务 sudo systemctl status bot.service # 检查bot服务状态 ``` -``` -python bot.py +```python +python bot.py # 运行麦麦 ``` diff --git a/docs/manual_deploy_linux.md b/docs/manual_deploy_linux.md index a5c91d6e2..653284bf5 100644 --- a/docs/manual_deploy_linux.md +++ b/docs/manual_deploy_linux.md @@ -6,7 +6,7 @@ - QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号) - 可用的大模型API - 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题 -- 以下内容假设你对Linux系统有一定的了解,如果觉得难以理解,请直接用Windows系统部署[Windows系统部署指南](./manual_deploy_windows.md) +- 以下内容假设你对Linux系统有一定的了解,如果觉得难以理解,请直接用Windows系统部署[Windows系统部署指南](./manual_deploy_windows.md)或[使用Windows一键包部署](https://github.com/MaiM-with-u/MaiBot/releases/tag/EasyInstall-windows) ## 你需要知道什么? @@ -24,6 +24,9 @@ --- +## 一键部署 +请下载并运行项目根目录中的run.sh并按照提示安装,部署完成后请参照后续配置指南进行配置 + ## 环境配置 ### 1️⃣ **确认Python版本** @@ -36,17 +39,26 @@ python --version python3 --version ``` -如果版本低于3.9,请更新Python版本。 +如果版本低于3.9,请更新Python版本,目前建议使用python3.12 ```bash -# Ubuntu/Debian +# Debian sudo apt update -sudo apt install python3.9 -# 如执行了这一步,建议在执行时将python3指向python3.9 -# 更新替代方案,设置 python3.9 为默认的 python3 版本: -sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 +sudo apt install python3.12 +# Ubuntu +sudo add-apt-repository ppa:deadsnakes/ppa +sudo apt update +sudo apt install python3.12 + +# 执行完以上命令后,建议在执行时将python3指向python3.12 +# 更新替代方案,设置 python3.12 为默认的 python3 版本: +sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 sudo update-alternatives --config python3 ``` +建议再执行以下命令,使后续运行命令中的`python3`等同于`python` +```bash +sudo apt install python-is-python3 +``` ### 2️⃣ **创建虚拟环境** @@ -73,7 +85,7 @@ pip install -r requirements.txt ### 3️⃣ **安装并启动MongoDB** -- 安装与启动:Debian参考[官方文档](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/),Ubuntu参考[官方文档](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/) +- 安装与启动:请参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux),进入后选择自己的系统版本即可 - 默认连接本地27017端口 --- @@ -82,7 +94,11 @@ pip install -r requirements.txt ### 4️⃣ **安装NapCat框架** -- 参考[NapCat官方文档](https://www.napcat.wiki/guide/boot/Shell#napcat-installer-linux%E4%B8%80%E9%94%AE%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC-%E6%94%AF%E6%8C%81ubuntu-20-debian-10-centos9)安装 +- 执行NapCat的Linux一键使用脚本(支持Ubuntu 20+/Debian 10+/Centos9) +```bash +curl -o napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh && sudo bash napcat.sh +``` +- 如果你不想使用Napcat的脚本安装,可参考[Napcat-Linux手动安装](https://www.napcat.wiki/guide/boot/Shell-Linux-SemiAuto) - 使用QQ小号登录,添加反向WS地址: `ws://127.0.0.1:8080/onebot/v11/ws` @@ -91,9 +107,17 @@ pip install -r requirements.txt ## 配置文件设置 ### 5️⃣ **配置文件设置,让麦麦Bot正常工作** - -- 修改环境配置文件:`.env.prod` -- 修改机器人配置文件:`bot_config.toml` +可先运行一次 +```bash +# 在项目目录下操作 +nb run +# 或 +python3 bot.py +``` +之后你就可以找到`.env.prod`和`bot_config.toml`这两个文件了 +关于文件内容的配置请参考: +- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程,适合初次使用的猫娘 +- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明,适合有经验的用户 --- diff --git a/docs/manual_deploy_macos.md b/docs/manual_deploy_macos.md new file mode 100644 index 000000000..00e2686b3 --- /dev/null +++ b/docs/manual_deploy_macos.md @@ -0,0 +1,201 @@ +# 📦 macOS系统手动部署MaiMbot麦麦指南 + +## 准备工作 + +- 一台搭载了macOS系统的设备(macOS 12.0 或以上) +- QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号) +- Homebrew包管理器 + - 如未安装,你可以在https://github.com/Homebrew/brew/releases/latest 找到.pkg格式的安装包 +- 可用的大模型API +- 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题 +- 以下内容假设你对macOS系统有一定的了解,如果觉得难以理解,请直接用Windows系统部署[Windows系统部署指南](./manual_deploy_windows.md)或[使用Windows一键包部署](https://github.com/MaiM-with-u/MaiBot/releases/tag/EasyInstall-windows) +- 终端应用(iTerm2等) + +--- + +## 环境配置 + +### 1️⃣ **Python环境配置** + +```bash +# 检查Python版本(macOS自带python可能为2.7) +python3 --version + +# 通过Homebrew安装Python +brew install python@3.12 + +# 设置环境变量(如使用zsh) +echo 'export PATH="/usr/local/opt/python@3.12/bin:$PATH"' >> ~/.zshrc +source ~/.zshrc + +# 验证安装 +python3 --version # 应显示3.12.x +pip3 --version # 应关联3.12版本 +``` + +### 2️⃣ **创建虚拟环境** + +```bash +# 方法1:使用venv(推荐) +python3 -m venv maimbot-venv +source maimbot-venv/bin/activate # 激活虚拟环境 + +# 方法2:使用conda +brew install --cask miniconda +conda create -n maimbot python=3.9 +conda activate maimbot # 激活虚拟环境 + +# 安装项目依赖 +# 请确保已经进入虚拟环境再执行 +pip install -r requirements.txt +``` + +--- + +## 数据库配置 + +### 3️⃣ **安装MongoDB** + +请参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-os-x/#install-mongodb-community-edition) + +--- + +## NapCat + +### 4️⃣ **安装与配置Napcat** +- 安装 +可以使用Napcat官方提供的[macOS安装工具](https://github.com/NapNeko/NapCat-Mac-Installer/releases/) +由于权限问题,补丁过程需要手动替换 package.json,请注意备份原文件~ +- 配置 +使用QQ小号登录,添加反向WS地址: `ws://127.0.0.1:8080/onebot/v11/ws` + +--- + +## 配置文件设置 + +### 5️⃣ **生成配置文件** +可先运行一次 +```bash +# 在项目目录下操作 +nb run +# 或 +python3 bot.py +``` + +之后你就可以找到`.env.prod`和`bot_config.toml`这两个文件了 + +关于文件内容的配置请参考: +- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程,适合初次使用的猫娘 +- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明,适合有经验的用户 + + +--- + +## 启动机器人 + +### 6️⃣ **启动麦麦机器人** + +```bash +# 在项目目录下操作 +nb run +# 或 +python3 bot.py +``` + +## 启动管理 + +### 7️⃣ **通过launchd管理服务** + +创建plist文件: + +```bash +nano ~/Library/LaunchAgents/com.maimbot.plist +``` + +内容示例(需替换实际路径): + +```xml + + + + + Label + com.maimbot + + ProgramArguments + + /path/to/maimbot-venv/bin/python + /path/to/MaiMbot/bot.py + + + WorkingDirectory + /path/to/MaiMbot + + StandardOutPath + /tmp/maimbot.log + StandardErrorPath + /tmp/maimbot.err + + RunAtLoad + + KeepAlive + + + +``` + +加载服务: + +```bash +launchctl load ~/Library/LaunchAgents/com.maimbot.plist +launchctl start com.maimbot +``` + +查看日志: + +```bash +tail -f /tmp/maimbot.log +``` + +--- + +## 常见问题处理 + +1. **权限问题** +```bash +# 遇到文件权限错误时 +chmod -R 755 ~/Documents/MaiMbot +``` + +2. **Python模块缺失** +```bash +# 确保在虚拟环境中 +source maimbot-venv/bin/activate # 或 conda 激活 +pip install --force-reinstall -r requirements.txt +``` + +3. **MongoDB连接失败** +```bash +# 检查服务状态 +brew services list +# 重置数据库权限 +mongosh --eval "db.adminCommand({setFeatureCompatibilityVersion: '5.0'})" +``` + +--- + +## 系统优化建议 + +1. **关闭App Nap** +```bash +# 防止系统休眠NapCat进程 +defaults write NSGlobalDomain NSAppSleepDisabled -bool YES +``` + +2. **电源管理设置** +```bash +# 防止睡眠影响机器人运行 +sudo systemsetup -setcomputersleep Never +``` + +--- diff --git a/docs/API_KEY.png b/docs/pic/API_KEY.png similarity index 100% rename from docs/API_KEY.png rename to docs/pic/API_KEY.png diff --git a/docs/MONGO_DB_0.png b/docs/pic/MONGO_DB_0.png similarity index 100% rename from docs/MONGO_DB_0.png rename to docs/pic/MONGO_DB_0.png diff --git a/docs/MONGO_DB_1.png b/docs/pic/MONGO_DB_1.png similarity index 100% rename from docs/MONGO_DB_1.png rename to docs/pic/MONGO_DB_1.png diff --git a/docs/MONGO_DB_2.png b/docs/pic/MONGO_DB_2.png similarity index 100% rename from docs/MONGO_DB_2.png rename to docs/pic/MONGO_DB_2.png diff --git a/docs/pic/MongoDB_Ubuntu_guide.png b/docs/pic/MongoDB_Ubuntu_guide.png new file mode 100644 index 0000000000000000000000000000000000000000..abd47c2834a27794808fb7a82d7c0164a92c1e90 GIT binary patch literal 14733 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 E29!Ydd;kCd literal 0 HcmV?d00001 diff --git a/docs/pic/QQ_Download_guide_Linux.png b/docs/pic/QQ_Download_guide_Linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1d47e9d27f92c6d751fdc14e96dfd1bbe0d355fb GIT binary patch literal 37847 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