refactor: 删除和项目无关的文件
@@ -1,20 +0,0 @@
|
||||
Jonathan R. Wolpaw 在 “Memory in neuroscience: rhetoric versus reality.” 一文中提到,从神经科学的感觉运动假设出发,整个神经系统的功能是将经验与适当的行为联系起来,而不是单纯的信息存储。
|
||||
Jonathan R,Wolpaw. (2019). Memory in neuroscience: rhetoric versus reality.. Behavioral and cognitive neuroscience reviews(2).
|
||||
|
||||
1. **单一过程理论**
|
||||
- 单一过程理论认为,识别记忆主要是基于熟悉性这一单一因素的影响。熟悉性是指对刺激的一种自动的、无意识的感知,它可以使我们在没有回忆起具体细节的情况下,判断一个刺激是否曾经出现过。
|
||||
- 例如,在一些实验中,研究者发现被试可以在没有回忆起具体学习情境的情况下,对曾经出现过的刺激做出正确的判断,这被认为是熟悉性在起作用1。
|
||||
2. **双重过程理论**
|
||||
- 双重过程理论则认为,识别记忆是基于两个过程:回忆和熟悉性。回忆是指对过去经验的有意识的回忆,它可以使我们回忆起具体的细节和情境;熟悉性则是一种自动的、无意识的感知。
|
||||
- 该理论认为,在识别记忆中,回忆和熟悉性共同作用,使我们能够判断一个刺激是否曾经出现过。例如,在 “记得 / 知道” 范式中,被试被要求判断他们对一个刺激的记忆是基于回忆还是熟悉性。研究发现,被试可以区分这两种不同的记忆过程,这为双重过程理论提供了支持1。
|
||||
|
||||
|
||||
|
||||
1. **神经元节点与连接**:借鉴神经网络原理,将每个记忆单元视为一个神经元节点。节点之间通过连接相互关联,连接的强度代表记忆之间的关联程度。在形态学联想记忆中,具有相似形态特征的记忆节点连接强度较高。例如,苹果和橘子的记忆节点,由于在形状、都是水果等形态语义特征上相似,它们之间的连接强度大于苹果与汽车记忆节点间的连接强度。
|
||||
2. **记忆聚类与层次结构**:依据形态特征的相似性对记忆进行聚类,形成不同的记忆簇。每个记忆簇内部的记忆具有较高的相似性,而不同记忆簇之间的记忆相似性较低。同时,构建记忆的层次结构,高层次的记忆节点代表更抽象、概括的概念,低层次的记忆节点对应具体的实例。比如,“水果” 作为高层次记忆节点,连接着 “苹果”“橘子”“香蕉” 等低层次具体水果的记忆节点。
|
||||
3. **网络的动态更新**:随着新记忆的不断加入,记忆网络动态调整。新记忆节点根据其形态特征与现有网络中的节点建立连接,同时影响相关连接的强度。若新记忆与某个记忆簇的特征高度相似,则被纳入该记忆簇;若具有独特特征,则可能引发新的记忆簇的形成。例如,当系统学习到一种新的水果 “番石榴”,它会根据番石榴的形态、语义等特征,在记忆网络中找到与之最相似的区域(如水果记忆簇),并建立相应连接,同时调整周围节点连接强度以适应这一新记忆。
|
||||
|
||||
|
||||
|
||||
- **相似性联想**:该理论认为,当两个或多个事物在形态上具有相似性时,它们在记忆中会形成关联。例如,梨和苹果在形状和都是水果这一属性上有相似性,所以当我们看到梨时,很容易通过形态学联想记忆联想到苹果。这种相似性联想有助于我们对新事物进行分类和理解,当遇到一个新的类似水果时,我们可以通过与已有的水果记忆进行相似性匹配,来推测它的一些特征。
|
||||
- **时空关联性联想**:除了相似性联想,MAM 还强调时空关联性联想。如果两个事物在时间或空间上经常同时出现,它们也会在记忆中形成关联。比如,每次在公园里看到花的时候,都能听到鸟儿的叫声,那么花和鸟儿叫声的形态特征(花的视觉形态和鸟叫的听觉形态)就会在记忆中形成关联,以后听到鸟叫可能就会联想到公园里的花。
|
||||
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 36 KiB |
@@ -1 +0,0 @@
|
||||
gource gource.log --user-image-dir docs/avatars/ --default-user-image docs/avatars/default.png
|
||||
175
docs/doc1.md
@@ -1,175 +0,0 @@
|
||||
# 📂 文件及功能介绍 (2025年更新)
|
||||
|
||||
## 根目录
|
||||
|
||||
- **README.md**: 项目的概述和使用说明。
|
||||
- **requirements.txt**: 项目所需的Python依赖包列表。
|
||||
- **bot.py**: 主启动文件,负责环境配置加载和NoneBot初始化。
|
||||
- **template.env**: 环境变量模板文件。
|
||||
- **pyproject.toml**: Python项目配置文件。
|
||||
- **docker-compose.yml** 和 **Dockerfile**: Docker配置文件,用于容器化部署。
|
||||
- **run_*.bat**: 各种启动脚本,包括数据库、maimai和thinking功能。
|
||||
|
||||
## `src/` 目录结构
|
||||
|
||||
- **`plugins/` 目录**: 存放不同功能模块的插件。
|
||||
- **chat/**: 处理聊天相关的功能,如消息发送和接收。
|
||||
- **memory_system/**: 处理机器人的记忆功能。
|
||||
- **knowledege/**: 知识库相关功能。
|
||||
- **models/**: 模型相关工具。
|
||||
- **schedule/**: 处理日程管理的功能。
|
||||
|
||||
- **`gui/` 目录**: 存放图形用户界面相关的代码。
|
||||
- **reasoning_gui.py**: 负责推理界面的实现,提供用户交互。
|
||||
|
||||
- **`common/` 目录**: 存放通用的工具和库。
|
||||
- **database.py**: 处理与数据库的交互,负责数据的存储和检索。
|
||||
- ****init**.py**: 初始化模块。
|
||||
|
||||
## `config/` 目录
|
||||
|
||||
- **bot_config_template.toml**: 机器人配置模板。
|
||||
- **auto_format.py**: 自动格式化工具。
|
||||
|
||||
### `src/plugins/chat/` 目录文件详细介绍
|
||||
|
||||
1. **`__init__.py`**:
|
||||
- 初始化 `chat` 模块,使其可以作为一个包被导入。
|
||||
|
||||
2. **`bot.py`**:
|
||||
- 主要的聊天机器人逻辑实现,处理消息的接收、思考和回复。
|
||||
- 包含 `ChatBot` 类,负责消息处理流程控制。
|
||||
- 集成记忆系统和意愿管理。
|
||||
|
||||
3. **`config.py`**:
|
||||
- 配置文件,定义了聊天机器人的各种参数和设置。
|
||||
- 包含 `BotConfig` 和全局配置对象 `global_config`。
|
||||
|
||||
4. **`cq_code.py`**:
|
||||
- 处理 CQ 码(CoolQ 码),用于发送和接收特定格式的消息。
|
||||
|
||||
5. **`emoji_manager.py`**:
|
||||
- 管理表情包的发送和接收,根据情感选择合适的表情。
|
||||
- 提供根据情绪获取表情的方法。
|
||||
|
||||
6. **`llm_generator.py`**:
|
||||
- 生成基于大语言模型的回复,处理用户输入并生成相应的文本。
|
||||
- 通过 `ResponseGenerator` 类实现回复生成。
|
||||
|
||||
7. **`message.py`**:
|
||||
- 定义消息的结构和处理逻辑,包含多种消息类型:
|
||||
- `Message`: 基础消息类
|
||||
- `MessageSet`: 消息集合
|
||||
- `Message_Sending`: 发送中的消息
|
||||
- `Message_Thinking`: 思考状态的消息
|
||||
|
||||
8. **`message_sender.py`**:
|
||||
- 控制消息的发送逻辑,确保消息按照特定规则发送。
|
||||
- 包含 `message_manager` 对象,用于管理消息队列。
|
||||
|
||||
9. **`prompt_builder.py`**:
|
||||
- 构建用于生成回复的提示,优化机器人的响应质量。
|
||||
|
||||
10. **`relationship_manager.py`**:
|
||||
- 管理用户之间的关系,记录用户的互动和偏好。
|
||||
- 提供更新关系和关系值的方法。
|
||||
|
||||
11. **`Segment_builder.py`**:
|
||||
- 构建消息片段的工具。
|
||||
|
||||
12. **`storage.py`**:
|
||||
- 处理数据存储,负责将聊天记录和用户信息保存到数据库。
|
||||
- 实现 `MessageStorage` 类管理消息存储。
|
||||
|
||||
13. **`thinking_idea.py`**:
|
||||
- 实现机器人的思考机制。
|
||||
|
||||
14. **`topic_identifier.py`**:
|
||||
- 识别消息中的主题,帮助机器人理解用户的意图。
|
||||
|
||||
15. **`utils.py`** 和 **`utils_*.py`** 系列文件:
|
||||
- 存放各种工具函数,提供辅助功能以支持其他模块。
|
||||
- 包括 `utils_cq.py`、`utils_image.py`、`utils_user.py` 等专门工具。
|
||||
|
||||
16. **`willing_manager.py`**:
|
||||
- 管理机器人的回复意愿,动态调整回复概率。
|
||||
- 通过多种因素(如被提及、话题兴趣度)影响回复决策。
|
||||
|
||||
### `src/plugins/memory_system/` 目录文件介绍
|
||||
|
||||
1. **`memory.py`**:
|
||||
- 实现记忆管理核心功能,包含 `memory_graph` 对象。
|
||||
- 提供相关项目检索,支持多层次记忆关联。
|
||||
|
||||
2. **`draw_memory.py`**:
|
||||
- 记忆可视化工具。
|
||||
|
||||
3. **`memory_manual_build.py`**:
|
||||
- 手动构建记忆的工具。
|
||||
|
||||
4. **`offline_llm.py`**:
|
||||
- 离线大语言模型处理功能。
|
||||
|
||||
## 消息处理流程
|
||||
|
||||
### 1. 消息接收与预处理
|
||||
|
||||
- 通过 `ChatBot.handle_message()` 接收群消息。
|
||||
- 进行用户和群组的权限检查。
|
||||
- 更新用户关系信息。
|
||||
- 创建标准化的 `Message` 对象。
|
||||
- 对消息进行过滤和敏感词检测。
|
||||
|
||||
### 2. 主题识别与决策
|
||||
|
||||
- 使用 `topic_identifier` 识别消息主题。
|
||||
- 通过记忆系统检查对主题的兴趣度。
|
||||
- `willing_manager` 动态计算回复概率。
|
||||
- 根据概率决定是否回复消息。
|
||||
|
||||
### 3. 回复生成与发送
|
||||
|
||||
- 如需回复,首先创建 `Message_Thinking` 对象表示思考状态。
|
||||
- 调用 `ResponseGenerator.generate_response()` 生成回复内容和情感状态。
|
||||
- 删除思考消息,创建 `MessageSet` 准备发送回复。
|
||||
- 计算模拟打字时间,设置消息发送时间点。
|
||||
- 可能附加情感相关的表情包。
|
||||
- 通过 `message_manager` 将消息加入发送队列。
|
||||
|
||||
### 消息发送控制系统
|
||||
|
||||
`message_sender.py` 中实现了消息发送控制系统,采用三层结构:
|
||||
|
||||
1. **消息管理**:
|
||||
- 支持单条消息和消息集合的发送。
|
||||
- 处理思考状态消息,控制思考时间。
|
||||
- 模拟人类打字速度,添加自然发送延迟。
|
||||
|
||||
2. **情感表达**:
|
||||
- 根据生成回复的情感状态选择匹配的表情包。
|
||||
- 通过 `emoji_manager` 管理表情资源。
|
||||
|
||||
3. **记忆交互**:
|
||||
- 通过 `memory_graph` 检索相关记忆。
|
||||
- 根据记忆内容影响回复意愿和内容。
|
||||
|
||||
## 系统特色功能
|
||||
|
||||
1. **智能回复意愿系统**:
|
||||
- 动态调整回复概率,模拟真实人类交流特性。
|
||||
- 考虑多种因素:被提及、话题兴趣度、用户关系等。
|
||||
|
||||
2. **记忆系统集成**:
|
||||
- 支持多层次记忆关联和检索。
|
||||
- 影响机器人的兴趣和回复内容。
|
||||
|
||||
3. **自然交流模拟**:
|
||||
- 模拟思考和打字过程,添加合理延迟。
|
||||
- 情感表达与表情包结合。
|
||||
|
||||
4. **多环境配置支持**:
|
||||
- 支持开发环境和生产环境的不同配置。
|
||||
- 通过环境变量和配置文件灵活管理设置。
|
||||
|
||||
5. **Docker部署支持**:
|
||||
- 提供容器化部署方案,简化安装和运行。
|
||||
@@ -1,93 +0,0 @@
|
||||
# 🐳 Docker 部署指南
|
||||
|
||||
## 部署步骤 (不一定是最新)
|
||||
|
||||
**"更新镜像与容器"部分在本文档 [Part 6](#6-更新镜像与容器)**
|
||||
|
||||
### 0. 前提说明
|
||||
|
||||
**本文假设读者已具备一定的 Docker 基础知识。若您对 Docker 不熟悉,建议先参考相关教程或文档进行学习,或选择使用 [📦Linux手动部署指南](./manual_deploy_linux.md) 或 [📦Windows手动部署指南](./manual_deploy_windows.md) 。**
|
||||
|
||||
|
||||
### 1. 获取Docker配置文件
|
||||
|
||||
- 建议先单独创建好一个文件夹并进入,作为工作目录
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/SengokuCola/MaiMBot/main/docker-compose.yml -O docker-compose.yml
|
||||
```
|
||||
|
||||
- 若需要启用MongoDB数据库的用户名和密码,可进入docker-compose.yml,取消MongoDB处的注释并修改变量旁 `=` 后方的值为你的用户名和密码\
|
||||
修改后请注意在之后配置 `.env` 文件时指定MongoDB数据库的用户名密码
|
||||
|
||||
### 2. 启动服务
|
||||
|
||||
- **!!! 请在第一次启动前确保当前工作目录下 `.env` 与 `bot_config.toml` 文件存在 !!!**\
|
||||
由于Docker文件映射行为的特殊性,若宿主机的映射路径不存在,可能导致意外的目录创建,而不会创建文件,由于此处需要文件映射到文件,需提前确保文件存在且路径正确,可使用如下命令:
|
||||
|
||||
```bash
|
||||
touch .env
|
||||
touch bot_config.toml
|
||||
```
|
||||
|
||||
- 启动Docker容器:
|
||||
|
||||
```bash
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose up -d
|
||||
# 旧版Docker中可能找不到docker compose,请使用docker-compose工具替代
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d
|
||||
```
|
||||
|
||||
|
||||
### 3. 修改配置并重启Docker
|
||||
|
||||
- 请前往 [🎀 新手配置指南](./installation_cute.md) 或 [⚙️ 标准配置指南](./installation_standard.md) 完成`.env`与`bot_config.toml`配置文件的编写\
|
||||
**需要注意`.env`中HOST处IP的填写,Docker中部署和系统中直接安装的配置会有所不同**
|
||||
|
||||
- 重启Docker容器:
|
||||
|
||||
```bash
|
||||
docker restart maimbot # 若修改过容器名称则替换maimbot为你自定的名称
|
||||
```
|
||||
|
||||
- 下方命令可以但不推荐,只是同时重启NapCat、MongoDB、MaiMBot三个服务
|
||||
|
||||
```bash
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose restart
|
||||
# 旧版Docker中可能找不到docker compose,请使用docker-compose工具替代
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose restart
|
||||
```
|
||||
|
||||
### 4. 登入NapCat管理页添加反向WebSocket
|
||||
|
||||
- 在浏览器地址栏输入 `http://<宿主机IP>:6099/` 进入NapCat的管理Web页,添加一个Websocket客户端
|
||||
|
||||
> 网络配置 -> 新建 -> Websocket客户端
|
||||
|
||||
- Websocket客户端的名称自定,URL栏填入 `ws://maimbot:8080/onebot/v11/ws`,启用并保存即可\
|
||||
(若修改过容器名称则替换maimbot为你自定的名称)
|
||||
|
||||
### 5. 部署完成,愉快地和麦麦对话吧!
|
||||
|
||||
|
||||
### 6. 更新镜像与容器
|
||||
|
||||
- 拉取最新镜像
|
||||
|
||||
```bash
|
||||
docker-compose pull
|
||||
```
|
||||
|
||||
- 执行启动容器指令,该指令会自动重建镜像有更新的容器并启动
|
||||
|
||||
```bash
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose up -d
|
||||
# 旧版Docker中可能找不到docker compose,请使用docker-compose工具替代
|
||||
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
- 目前部署方案仍在测试中,可能存在未知问题
|
||||
- 配置文件中的API密钥请妥善保管,不要泄露
|
||||
- 建议先在测试环境中运行,确认无误后再部署到生产环境
|
||||
289
docs/fast_q_a.md
@@ -1,289 +0,0 @@
|
||||
## 快速更新Q&A❓
|
||||
|
||||
- 这个文件用来记录一些常见的新手问题。
|
||||
|
||||
### 完整安装教程
|
||||
|
||||
[MaiMbot简易配置教程](https://www.bilibili.com/video/BV1zsQ5YCEE6)
|
||||
|
||||
### Api相关问题
|
||||
|
||||
- 为什么显示:"缺失必要的API KEY" ❓
|
||||
|
||||
<img src="./pic/API_KEY.png" width=650>
|
||||
|
||||
>你需要在 [Silicon Flow Api](https://cloud.siliconflow.cn/account/ak) 网站上注册一个账号,然后点击这个链接打开API KEY获取页面。
|
||||
>
|
||||
>点击 "新建API密钥" 按钮新建一个给MaiMBot使用的API KEY。不要忘了点击复制。
|
||||
>
|
||||
>之后打开MaiMBot在你电脑上的文件根目录,使用记事本或者其他文本编辑器打开 [.env](../.env)
|
||||
>这个文件。把你刚才复制的API KEY填入到 `SILICONFLOW_KEY=` 这个等号的右边。
|
||||
>
|
||||
>在默认情况下,MaiMBot使用的默认Api都是硅基流动的。
|
||||
|
||||
---
|
||||
|
||||
- 我想使用硅基流动之外的Api网站,我应该怎么做 ❓
|
||||
|
||||
>你需要使用记事本或者其他文本编辑器打开config目录下的 [bot_config.toml](../config/bot_config.toml)
|
||||
>
|
||||
>然后修改其中的 `provider = ` 字段。同时不要忘记模仿 [.env](../.env) 文件的写法添加 Api Key 和 Base URL。
|
||||
>
|
||||
>举个例子,如果你写了 `provider = "ABC"`,那你需要相应的在 [.env](../.env) 文件里添加形如 `ABC_BASE_URL = https://api.abc.com/v1` 和 `ABC_KEY = sk-1145141919810` 的字段。
|
||||
>
|
||||
>**如果你对AI模型没有较深的了解,修改识图模型和嵌入模型的provider字段可能会产生bug,因为你从Api网站调用了一个并不存在的模型**
|
||||
>
|
||||
>这个时候,你需要把字段的值改回 `provider = "SILICONFLOW"` 以此解决此问题。
|
||||
|
||||
### MongoDB相关问题
|
||||
|
||||
- 我应该怎么清空bot内存储的表情包 ❓
|
||||
>需要先安装`MongoDB Compass`,[下载链接](https://www.mongodb.com/try/download/compass),软件支持`macOS、Windows、Ubuntu、Redhat`系统
|
||||
>以Windows为例,保持如图所示选项,点击`Download`即可,如果是其他系统,请在`Platform`中自行选择:
|
||||
><img src="./pic/compass_downloadguide.png" width=400>
|
||||
|
||||
>打开你的MongoDB Compass软件,你会在左上角看到这样的一个界面:
|
||||
>
|
||||
><img src="./pic/MONGO_DB_0.png" width=250>
|
||||
>
|
||||
><br>
|
||||
>
|
||||
>点击 "CONNECT" 之后,点击展开 MegBot 标签栏
|
||||
>
|
||||
><img src="./pic/MONGO_DB_1.png" width=250>
|
||||
>
|
||||
><br>
|
||||
>
|
||||
>点进 "emoji" 再点击 "DELETE" 删掉所有条目,如图所示
|
||||
>
|
||||
><img src="./pic/MONGO_DB_2.png" width=450>
|
||||
>
|
||||
><br>
|
||||
>
|
||||
>你可以用类似的方式手动清空MaiMBot的所有服务器数据。
|
||||
>
|
||||
>MaiMBot的所有图片均储存在 [data](../data) 文件夹内,按类型分为 [emoji](../data/emoji) 和 [image](../data/image)
|
||||
>
|
||||
>在删除服务器数据时不要忘记清空这些图片。
|
||||
|
||||
---
|
||||
|
||||
- 为什么我连接不上MongoDB服务器 ❓
|
||||
|
||||
>这个问题比较复杂,但是你可以按照下面的步骤检查,看看具体是什么问题
|
||||
|
||||
|
||||
>#### Windows
|
||||
> 1. 检查有没有把 mongod.exe 所在的目录添加到 path。 具体可参照
|
||||
>
|
||||
>  [CSDN-windows10设置环境变量Path详细步骤](https://blog.csdn.net/flame_007/article/details/106401215)
|
||||
>
|
||||
>  **需要往path里填入的是 exe 所在的完整目录!不带 exe 本体**
|
||||
>
|
||||
><br>
|
||||
>
|
||||
> 2. 环境变量添加完之后,可以按下`WIN+R`,在弹出的小框中输入`powershell`,回车,进入到powershell界面后,输入`mongod --version`如果有输出信息,就说明你的环境变量添加成功了。
|
||||
> 接下来,直接输入`mongod --port 27017`命令(`--port`指定了端口,方便在可视化界面中连接),如果连不上,很大可能会出现
|
||||
>```shell
|
||||
>"error":"NonExistentPath: Data directory \\data\\db not found. Create the missing directory or specify another path using (1) the --dbpath command line option, or (2) by adding the 'storage.dbPath' option in the configuration file."
|
||||
>```
|
||||
>这是因为你的C盘下没有`data\db`文件夹,mongo不知道将数据库文件存放在哪,不过不建议在C盘中添加,因为这样你的C盘负担会很大,可以通过`mongod --dbpath=PATH --port 27017`来执行,将`PATH`替换成你的自定义文件夹,但是不要放在mongodb的bin文件夹下!例如,你可以在D盘中创建一个mongodata文件夹,然后命令这样写
|
||||
>```shell
|
||||
>mongod --dbpath=D:\mongodata --port 27017
|
||||
>```
|
||||
>
|
||||
>如果还是不行,有可能是因为你的27017端口被占用了
|
||||
>通过命令
|
||||
>```shell
|
||||
> netstat -ano | findstr :27017
|
||||
>```
|
||||
>可以查看当前端口是否被占用,如果有输出,其一般的格式是这样的
|
||||
>```shell
|
||||
> TCP 127.0.0.1:27017 0.0.0.0:0 LISTENING 5764
|
||||
> TCP 127.0.0.1:27017 127.0.0.1:63387 ESTABLISHED 5764
|
||||
> TCP 127.0.0.1:27017 127.0.0.1:63388 ESTABLISHED 5764
|
||||
> TCP 127.0.0.1:27017 127.0.0.1:63389 ESTABLISHED 5764
|
||||
>```
|
||||
>最后那个数字就是PID,通过以下命令查看是哪些进程正在占用
|
||||
>```shell
|
||||
>tasklist /FI "PID eq 5764"
|
||||
>```
|
||||
>如果是无关紧要的进程,可以通过`taskkill`命令关闭掉它,例如`Taskkill /F /PID 5764`
|
||||
>
|
||||
>如果你对命令行实在不熟悉,可以通过`Ctrl+Shift+Esc`调出任务管理器,在搜索框中输入PID,也可以找到相应的进程。
|
||||
>
|
||||
>如果你害怕关掉重要进程,可以修改`.env.dev`中的`MONGODB_PORT`为其它值,并在启动时同时修改`--port`参数为一样的值
|
||||
>```ini
|
||||
>MONGODB_HOST=127.0.0.1
|
||||
>MONGODB_PORT=27017 #修改这里
|
||||
>DATABASE_NAME=MegBot
|
||||
>```
|
||||
|
||||
<details>
|
||||
<summary>Linux(点击展开)</summary>
|
||||
|
||||
#### **1. 检查 MongoDB 服务是否运行**
|
||||
- **命令**:
|
||||
```bash
|
||||
systemctl status mongod # 检查服务状态(Ubuntu/Debian/CentOS 7+)
|
||||
service mongod status # 旧版系统(如 CentOS 6)
|
||||
```
|
||||
- **可能结果**:
|
||||
- 如果显示 `active (running)`,服务已启动。
|
||||
- 如果未运行,启动服务:
|
||||
```bash
|
||||
sudo systemctl start mongod # 启动服务
|
||||
sudo systemctl enable mongod # 设置开机自启
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### **2. 检查 MongoDB 端口监听**
|
||||
MongoDB 默认使用 **27017** 端口。
|
||||
- **检查端口是否被监听**:
|
||||
```bash
|
||||
sudo ss -tulnp | grep 27017
|
||||
或
|
||||
sudo netstat -tulnp | grep 27017
|
||||
```
|
||||
- **预期结果**:
|
||||
```bash
|
||||
tcp LISTEN 0 128 0.0.0.0:27017 0.0.0.0:* users:(("mongod",pid=123,fd=11))
|
||||
```
|
||||
- 如果无输出,说明 MongoDB 未监听端口。
|
||||
|
||||
|
||||
---
|
||||
#### **3. 检查防火墙设置**
|
||||
- **Ubuntu/Debian(UFW 防火墙)**:
|
||||
```bash
|
||||
sudo ufw status # 查看防火墙状态
|
||||
sudo ufw allow 27017/tcp # 开放 27017 端口
|
||||
sudo ufw reload # 重新加载规则
|
||||
```
|
||||
- **CentOS/RHEL(firewalld)**:
|
||||
```bash
|
||||
sudo firewall-cmd --list-ports # 查看已开放端口
|
||||
sudo firewall-cmd --add-port=27017/tcp --permanent # 永久开放端口
|
||||
sudo firewall-cmd --reload # 重新加载
|
||||
```
|
||||
- **云服务器用户注意**:检查云平台安全组规则,确保放行 27017 端口。
|
||||
|
||||
---
|
||||
|
||||
#### **4. 检查端口占用**
|
||||
如果 MongoDB 服务无法监听端口,可能是其他进程占用了 `27017` 端口。
|
||||
- **检查端口占用进程**:
|
||||
```bash
|
||||
sudo lsof -i :27017 # 查看占用 27017 端口的进程
|
||||
或
|
||||
sudo ss -ltnp 'sport = :27017' # 使用 ss 过滤端口
|
||||
```
|
||||
- **结果示例**:
|
||||
```bash
|
||||
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
|
||||
java 1234 root 12u IPv4 123456 0t0 TCP *:27017 (LISTEN)
|
||||
```
|
||||
- 输出会显示占用端口的 **进程名** 和 **PID**(此处 `PID=1234`)。
|
||||
|
||||
- **解决方案**:
|
||||
1. **终止占用进程**(谨慎操作!确保进程非关键):
|
||||
```bash
|
||||
sudo kill 1234 # 正常终止进程
|
||||
sudo kill -9 1234 # 强制终止(若正常终止无效)
|
||||
```
|
||||
2. **修改端口**:
|
||||
编辑麦麦目录里的`.env.dev`文件,修改端口号:
|
||||
```ini
|
||||
MONGODB_HOST=127.0.0.1
|
||||
MONGODB_PORT=27017 #修改这里
|
||||
DATABASE_NAME=MegBot
|
||||
```
|
||||
|
||||
|
||||
##### **注意事项**
|
||||
- 终止进程前,务必确认该进程非系统关键服务(如未知进程占用,建议先排查来源),如果你不知道这个进程是否关键,请更改端口使用。
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>macOS(点击展开)</summary>
|
||||
|
||||
### **1. 检查 MongoDB 服务状态**
|
||||
**问题原因**:MongoDB 服务未启动
|
||||
**操作步骤**:
|
||||
```bash
|
||||
# 查看 MongoDB 是否正在运行(Homebrew 安装的默认服务名)
|
||||
brew services list | grep mongodb
|
||||
|
||||
# 如果状态为 "stopped" 或 "error",手动启动
|
||||
brew services start mongodb-community@8.0
|
||||
```
|
||||
✅ **预期结果**:输出显示 `started` 或 `running`
|
||||
❌ **失败处理**:
|
||||
- 若报错 `unrecognized service`,可能未正确安装 MongoDB,建议[重新安装](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-os-x/#install-mongodb-community-edition)。
|
||||
|
||||
---
|
||||
|
||||
### **2. 检查端口是否被占用**
|
||||
**问题原因**:其他程序占用了 MongoDB 的默认端口(`27017`),导致服务无法启动或连接
|
||||
**操作步骤**:
|
||||
```bash
|
||||
# 检查 27017 端口占用情况(需 sudo 权限查看完整信息)
|
||||
sudo lsof -i :27017
|
||||
|
||||
# 或使用 netstat 快速检测
|
||||
netstat -an | grep 27017
|
||||
```
|
||||
✅ **预期结果**:
|
||||
- 若无 MongoDB 运行,应无输出
|
||||
- 若 MongoDB 已启动,应显示 `mongod` 进程
|
||||
|
||||
❌ **发现端口被占用**:
|
||||
#### **解决方案1:终止占用进程**
|
||||
1. 从 `lsof` 输出中找到占用端口的 **PID**(进程号)
|
||||
2. 强制终止该进程(谨慎操作!确保进程非关键):
|
||||
```bash
|
||||
kill -9 PID # 替换 PID 为实际数字(例如 kill -9 12345)
|
||||
```
|
||||
3. 重新启动 MongoDB 服务:
|
||||
```bash
|
||||
brew services start mongodb-community@8.0
|
||||
```
|
||||
|
||||
#### **解决方案2:修改端口**
|
||||
编辑麦麦目录里的`.env.dev`文件,修改端口号:
|
||||
```ini
|
||||
MONGODB_HOST=127.0.0.1
|
||||
MONGODB_PORT=27017 #修改这里
|
||||
DATABASE_NAME=MegBot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **3. 检查防火墙设置**
|
||||
**问题原因**:macOS 防火墙阻止连接
|
||||
**操作步骤**:
|
||||
1. 打开 **系统设置 > 隐私与安全性 > 防火墙**
|
||||
2. 临时关闭防火墙测试连接
|
||||
3. 若需长期开放,添加 MongoDB 到防火墙允许列表(通过终端或 GUI)。
|
||||
|
||||
|
||||
---
|
||||
### **4. 重置 MongoDB 环境**
|
||||
***仅在以上步骤都无效时使用***
|
||||
**适用场景**:配置混乱导致无法修复
|
||||
```bash
|
||||
# 停止服务并删除数据
|
||||
brew services stop mongodb-community@8.0
|
||||
rm -rf /usr/local/var/mongodb
|
||||
|
||||
# 重新初始化(确保目录权限)
|
||||
sudo mkdir -p /usr/local/var/mongodb
|
||||
sudo chown -R $(whoami) /usr/local/var/mongodb
|
||||
|
||||
# 重新启动
|
||||
brew services start mongodb-community@8.0
|
||||
```
|
||||
|
||||
</details>
|
||||
@@ -1,226 +0,0 @@
|
||||
# 🔧 配置指南 喵~
|
||||
|
||||
## 👋 你好呀
|
||||
|
||||
让咱来告诉你我们要做什么喵:
|
||||
|
||||
1. 我们要一起设置一个可爱的AI机器人
|
||||
2. 这个机器人可以在QQ上陪你聊天玩耍哦
|
||||
3. 需要设置两个文件才能让机器人工作呢
|
||||
|
||||
## 📝 需要设置的文件喵
|
||||
|
||||
要设置这两个文件才能让机器人跑起来哦:
|
||||
|
||||
1. `.env` - 这个文件告诉机器人要用哪些AI服务呢
|
||||
2. `bot_config.toml` - 这个文件教机器人怎么和你聊天喵
|
||||
|
||||
## 🔑 密钥和域名的对应关系
|
||||
|
||||
想象一下,你要进入一个游乐园,需要:
|
||||
|
||||
1. 知道游乐园的地址(这就是域名 base_url)
|
||||
2. 有入场的门票(这就是密钥 key)
|
||||
|
||||
在 `.env` 文件里,我们定义了三个游乐园的地址和门票喵:
|
||||
|
||||
```ini
|
||||
# 硅基流动游乐园
|
||||
SILICONFLOW_KEY=your_key # 硅基流动的门票
|
||||
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/ # 硅基流动的地址
|
||||
|
||||
# DeepSeek游乐园
|
||||
DEEP_SEEK_KEY=your_key # DeepSeek的门票
|
||||
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1 # DeepSeek的地址
|
||||
|
||||
# ChatAnyWhere游乐园
|
||||
CHAT_ANY_WHERE_KEY=your_key # ChatAnyWhere的门票
|
||||
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere的地址
|
||||
```
|
||||
|
||||
然后在 `bot_config.toml` 里,机器人会用这些门票和地址去游乐园玩耍:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
provider = "SILICONFLOW" # 告诉机器人:去硅基流动游乐园玩,机器人会自动用硅基流动的门票进去
|
||||
|
||||
[model.llm_normal]
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
provider = "SILICONFLOW" # 还是去硅基流动游乐园
|
||||
```
|
||||
|
||||
### 🎪 举个例子喵
|
||||
|
||||
如果你想用DeepSeek官方的服务,就要这样改:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "deepseek-reasoner" # 改成对应的模型名称,这里为DeepseekR1
|
||||
provider = "DEEP_SEEK" # 改成去DeepSeek游乐园
|
||||
|
||||
[model.llm_normal]
|
||||
name = "deepseek-chat" # 改成对应的模型名称,这里为DeepseekV3
|
||||
provider = "DEEP_SEEK" # 也去DeepSeek游乐园
|
||||
```
|
||||
|
||||
### 🎯 简单来说
|
||||
|
||||
- `.env` 文件就像是你的票夹,存放着各个游乐园的门票和地址
|
||||
- `bot_config.toml` 就是告诉机器人:用哪张票去哪个游乐园玩
|
||||
- 所有模型都可以用同一个游乐园的票,也可以去不同的游乐园玩耍
|
||||
- 如果用硅基流动的服务,就保持默认配置不用改呢~
|
||||
|
||||
记住:门票(key)要保管好,不能给别人看哦,不然别人就可以用你的票去玩了喵!
|
||||
|
||||
## ---让我们开始吧---
|
||||
|
||||
### 第一个文件:环境配置 (.env)
|
||||
|
||||
这个文件就像是机器人的"身份证"呢,告诉它要用哪些AI服务喵~
|
||||
|
||||
```ini
|
||||
# 这些是AI服务的密钥,就像是魔法钥匙一样呢
|
||||
# 要把 your_key 换成真正的密钥才行喵
|
||||
# 比如说:SILICONFLOW_KEY=sk-123456789abcdef
|
||||
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
|
||||
|
||||
# 如果你不知道这是什么,那么下面这些不用改,保持原样就好啦
|
||||
# 如果使用Docker部署,需要改成0.0.0.0喵,不然听不见群友讲话了喵
|
||||
HOST=127.0.0.1
|
||||
PORT=8080
|
||||
|
||||
# 这些是数据库设置,一般也不用改呢
|
||||
# 如果使用Docker部署,需要把MONGODB_HOST改成数据库容器的名字喵,默认是mongodb喵
|
||||
MONGODB_HOST=127.0.0.1
|
||||
MONGODB_PORT=27017
|
||||
DATABASE_NAME=MegBot
|
||||
# 数据库认证信息,如果需要认证就取消注释并填写下面三行喵
|
||||
# MONGODB_USERNAME = ""
|
||||
# MONGODB_PASSWORD = ""
|
||||
# MONGODB_AUTH_SOURCE = ""
|
||||
|
||||
# 也可以使用URI连接数据库,取消注释填写在下面这行喵(URI的优先级比上面的高)
|
||||
# MONGODB_URI=mongodb://127.0.0.1:27017/MegBot
|
||||
|
||||
# 这里是机器人的插件列表呢
|
||||
PLUGINS=["src2.plugins.chat"]
|
||||
```
|
||||
|
||||
### 第二个文件:机器人配置 (bot_config.toml)
|
||||
|
||||
这个文件就像是教机器人"如何说话"的魔法书呢!
|
||||
|
||||
```toml
|
||||
[bot]
|
||||
qq = "把这里改成你的机器人QQ号喵" # 填写你的机器人QQ号
|
||||
nickname = "麦麦" # 机器人的名字,你可以改成你喜欢的任何名字哦,建议和机器人QQ名称/群昵称一样哦
|
||||
alias_names = ["小麦", "阿麦"] # 也可以用这个招呼机器人,可以不设置呢
|
||||
|
||||
[personality]
|
||||
# 这里可以设置机器人的性格呢,让它更有趣一些喵
|
||||
prompt_personality = [
|
||||
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧风格的性格
|
||||
"是一个女大学生,你有黑色头发,你会刷小红书" # 小红书风格的性格
|
||||
]
|
||||
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" # 用来提示机器人每天干什么的提示词喵
|
||||
|
||||
[message]
|
||||
min_text_length = 2 # 机器人每次至少要说几个字呢
|
||||
max_context_size = 15 # 机器人能记住多少条消息喵
|
||||
emoji_chance = 0.2 # 机器人使用表情的概率哦(0.2就是20%的机会呢)
|
||||
thinking_timeout = 120 # 机器人思考时间,时间越长能思考的时间越多,但是不要太长喵
|
||||
|
||||
response_willing_amplifier = 1 # 机器人回复意愿放大系数,增大会让他更愿意聊天喵
|
||||
response_interested_rate_amplifier = 1 # 机器人回复兴趣度放大系数,听到记忆里的内容时意愿的放大系数喵
|
||||
down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数
|
||||
ban_words = ["脏话", "不文明用语"] # 在这里填写不让机器人说的词,要用英文逗号隔开,每个词都要用英文双引号括起来喵
|
||||
|
||||
[emoji]
|
||||
auto_save = true # 是否自动保存看到的表情包呢
|
||||
enable_check = false # 是否要检查表情包是不是合适的喵
|
||||
check_prompt = "符合公序良俗" # 检查表情包的标准呢
|
||||
|
||||
[others]
|
||||
enable_kuuki_read = true # 让机器人能够"察言观色"喵
|
||||
enable_friend_chat = false # 是否启用好友聊天喵
|
||||
|
||||
[groups]
|
||||
talk_allowed = [123456, 789012] # 比如:让机器人在群123456和789012里说话
|
||||
talk_frequency_down = [345678] # 比如:在群345678里少说点话
|
||||
ban_user_id = [111222] # 比如:不回复QQ号为111222的人的消息
|
||||
|
||||
# 模型配置部分的详细说明喵~
|
||||
|
||||
|
||||
#下面的模型若使用硅基流动则不需要更改,使用ds官方则改成在.env自己指定的密钥和域名,使用自定义模型则选择定位相似的模型自己填写
|
||||
|
||||
[model.llm_reasoning] #推理模型R1,用来理解和思考的喵
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1" # 模型名字
|
||||
# name = "Qwen/QwQ-32B" # 如果想用千问模型,可以把上面那行注释掉,用这个呢
|
||||
provider = "SILICONFLOW" # 使用在.env里设置的宏,也就是去掉"_BASE_URL"留下来的字喵
|
||||
|
||||
[model.llm_reasoning_minor] #R1蒸馏模型,是个轻量版的推理模型喵
|
||||
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.llm_normal] #V3模型,用来日常聊天的喵
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.llm_normal_minor] #V2.5模型,是V3的前代版本呢
|
||||
name = "deepseek-ai/DeepSeek-V2.5"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.vlm] #图像识别模型,让机器人能看懂图片喵
|
||||
name = "deepseek-ai/deepseek-vl2"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.embedding] #嵌入模型,帮助机器人理解文本的相似度呢
|
||||
name = "BAAI/bge-m3"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
# 如果选择了llm方式提取主题,就用这个模型配置喵
|
||||
[topic.llm_topic]
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
provider = "SILICONFLOW"
|
||||
```
|
||||
|
||||
## 💡 模型配置说明喵
|
||||
|
||||
1. **关于模型服务**:
|
||||
- 如果你用硅基流动的服务,这些配置都不用改呢
|
||||
- 如果用DeepSeek官方API,要把provider改成你在.env里设置的宏喵
|
||||
- 如果要用自定义模型,选择一个相似功能的模型配置来改呢
|
||||
|
||||
2. **主要模型功能**:
|
||||
- `llm_reasoning`: 负责思考和推理的大脑喵
|
||||
- `llm_normal`: 负责日常聊天的嘴巴呢
|
||||
- `vlm`: 负责看图片的眼睛哦
|
||||
- `embedding`: 负责理解文字含义的理解力喵
|
||||
- `topic`: 负责理解对话主题的能力呢
|
||||
|
||||
## 🌟 小提示
|
||||
|
||||
- 如果你刚开始使用,建议保持默认配置呢
|
||||
- 不同的模型有不同的特长,可以根据需要调整它们的使用比例哦
|
||||
|
||||
## 🌟 小贴士喵
|
||||
|
||||
- 记得要好好保管密钥(key)哦,不要告诉别人呢
|
||||
- 配置文件要小心修改,改错了机器人可能就不能和你玩了喵
|
||||
- 如果想让机器人更聪明,可以调整 personality 里的设置呢
|
||||
- 不想让机器人说某些话,就把那些词放在 ban_words 里面喵
|
||||
- QQ群号和QQ号都要用数字填写,不要加引号哦(除了机器人自己的QQ号)
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
- 这个机器人还在测试中呢,可能会有一些小问题喵
|
||||
- 如果不知道怎么改某个设置,就保持原样不要动它哦~
|
||||
- 记得要先有AI服务的密钥,不然机器人就不能和你说话了呢
|
||||
- 修改完配置后要重启机器人才能生效喵~
|
||||
@@ -1,165 +0,0 @@
|
||||
# 🔧 配置指南
|
||||
|
||||
## 简介
|
||||
|
||||
本项目需要配置两个主要文件:
|
||||
|
||||
1. `.env` - 配置API服务和系统环境
|
||||
2. `bot_config.toml` - 配置机器人行为和模型
|
||||
|
||||
## API配置说明
|
||||
|
||||
`.env` 和 `bot_config.toml` 中的API配置关系如下:
|
||||
|
||||
### 在.env中定义API凭证
|
||||
|
||||
```ini
|
||||
# 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凭证
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
provider = "SILICONFLOW" # 引用.env中定义的宏
|
||||
```
|
||||
|
||||
如需切换到其他API服务,只需修改引用:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "deepseek-reasoner" # 改成对应的模型名称,这里为DeepseekR1
|
||||
provider = "DEEP_SEEK" # 使用DeepSeek密钥
|
||||
```
|
||||
|
||||
## 配置文件详解
|
||||
|
||||
### 环境配置文件 (.env)
|
||||
|
||||
```ini
|
||||
# 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 # MongoDB端口
|
||||
|
||||
DATABASE_NAME=MegBot
|
||||
# 数据库认证信息,如果需要认证就取消注释并填写下面三行
|
||||
# MONGODB_USERNAME = ""
|
||||
# MONGODB_PASSWORD = ""
|
||||
# MONGODB_AUTH_SOURCE = ""
|
||||
|
||||
# 也可以使用URI连接数据库,取消注释填写在下面这行(URI的优先级比上面的高)
|
||||
# MONGODB_URI=mongodb://127.0.0.1:27017/MegBot
|
||||
|
||||
# 插件配置
|
||||
PLUGINS=["src2.plugins.chat"]
|
||||
```
|
||||
|
||||
### 机器人配置文件 (bot_config.toml)
|
||||
|
||||
```toml
|
||||
[bot]
|
||||
qq = "机器人QQ号" # 机器人的QQ号,必填
|
||||
nickname = "麦麦" # 机器人昵称
|
||||
# alias_names: 配置机器人可使用的别名。当机器人在群聊或对话中被调用时,别名可以作为直接命令或提及机器人的关键字使用。
|
||||
# 该配置项为字符串数组。例如: ["小麦", "阿麦"]
|
||||
alias_names = ["小麦", "阿麦"] # 机器人别名
|
||||
|
||||
[personality]
|
||||
prompt_personality = [
|
||||
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧",
|
||||
"是一个女大学生,你有黑色头发,你会刷小红书"
|
||||
] # 人格提示词
|
||||
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书" # 日程生成提示词
|
||||
|
||||
[message]
|
||||
min_text_length = 2 # 最小回复长度
|
||||
max_context_size = 15 # 上下文记忆条数
|
||||
emoji_chance = 0.2 # 表情使用概率
|
||||
thinking_timeout = 120 # 机器人思考时间,时间越长能思考的时间越多,但是不要太长
|
||||
|
||||
response_willing_amplifier = 1 # 机器人回复意愿放大系数,增大会更愿意聊天
|
||||
response_interested_rate_amplifier = 1 # 机器人回复兴趣度放大系数,听到记忆里的内容时意愿的放大系数
|
||||
down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数
|
||||
ban_words = [] # 禁用词列表
|
||||
|
||||
[emoji]
|
||||
auto_save = true # 自动保存表情
|
||||
enable_check = false # 启用表情审核
|
||||
check_prompt = "符合公序良俗"
|
||||
|
||||
[groups]
|
||||
talk_allowed = [] # 允许对话的群号
|
||||
talk_frequency_down = [] # 降低回复频率的群号
|
||||
ban_user_id = [] # 禁止回复的用户QQ号
|
||||
|
||||
[others]
|
||||
enable_kuuki_read = true # 是否启用读空气功能
|
||||
enable_friend_chat = false # 是否启用好友聊天
|
||||
|
||||
# 模型配置
|
||||
[model.llm_reasoning] # 推理模型
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.llm_reasoning_minor] # 轻量推理模型
|
||||
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.llm_normal] # 对话模型
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.llm_normal_minor] # 备用对话模型
|
||||
name = "deepseek-ai/DeepSeek-V2.5"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.vlm] # 图像识别模型
|
||||
name = "deepseek-ai/deepseek-vl2"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
[model.embedding] # 文本向量模型
|
||||
name = "BAAI/bge-m3"
|
||||
provider = "SILICONFLOW"
|
||||
|
||||
|
||||
[topic.llm_topic]
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
provider = "SILICONFLOW"
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. API密钥安全:
|
||||
- 妥善保管API密钥
|
||||
- 不要将含有密钥的配置文件上传至公开仓库
|
||||
|
||||
2. 配置修改:
|
||||
- 修改配置后需重启服务
|
||||
- 使用默认服务(硅基流动)时无需修改模型配置
|
||||
- QQ号和群号使用数字格式(机器人QQ号除外)
|
||||
|
||||
3. 其他说明:
|
||||
- 项目处于测试阶段,可能存在未知问题
|
||||
- 建议初次使用保持默认配置
|
||||
@@ -1,331 +0,0 @@
|
||||
# 面向纯新手的Linux服务器麦麦部署指南
|
||||
|
||||
|
||||
## 事前准备
|
||||
为了能使麦麦不间断的运行,你需要一台一直开着的服务器。
|
||||
|
||||
### 如果你想购买服务器
|
||||
华为云、阿里云、腾讯云等等都是在国内可以选择的选择。
|
||||
|
||||
租一台最低配置的就足敷需要了,按月租大概十几块钱就能租到了。
|
||||
|
||||
### 如果你不想购买服务器
|
||||
你可以准备一台可以一直开着的电脑/主机,只需要保证能够正常访问互联网即可
|
||||
|
||||
**下文将统称它们为`服务器`**
|
||||
|
||||
我们假设你已经有了一台Linux架构的服务器。举例使用的是Ubuntu24.04,其他的原理相似。
|
||||
|
||||
## 0.我们就从零开始吧
|
||||
|
||||
### 网络问题
|
||||
|
||||
为访问Github相关界面,推荐去下一款加速器,新手可以试试[Watt Toolkit](https://gitee.com/rmbgame/SteamTools/releases/latest)。
|
||||
|
||||
### 安装包下载
|
||||
|
||||
#### MongoDB
|
||||
进入[MongoDB下载页](https://www.mongodb.com/try/download/community-kubernetes-operator),并选择版本
|
||||
|
||||
以Ubuntu24.04 x86为例,保持如图所示选项,点击`Download`即可,如果是其他系统,请在`Platform`中自行选择:
|
||||
|
||||

|
||||
|
||||
|
||||
不想使用上述方式?你也可以参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux)进行安装,进入后选择自己的系统版本即可
|
||||
|
||||
#### QQ(可选)/Napcat
|
||||
*如果你使用Napcat的脚本安装,可以忽略此步*
|
||||
访问https://github.com/NapNeko/NapCatQQ/releases/latest
|
||||
在图中所示区域可以找到QQ的下载链接,选择对应版本下载即可
|
||||
从这里下载,可以保证你下载到的QQ版本兼容最新版Napcat
|
||||

|
||||
如果你不想使用Napcat的脚本安装,还需参考[Napcat-Linux手动安装](https://www.napcat.wiki/guide/boot/Shell-Linux-SemiAuto)
|
||||
|
||||
#### 麦麦
|
||||
|
||||
先打开https://github.com/MaiM-with-u/MaiBot/releases
|
||||
往下滑找到这个
|
||||

|
||||
下载箭头所指这个压缩包。
|
||||
|
||||
### 路径
|
||||
|
||||
我把麦麦相关文件放在了/moi/mai里面,你可以凭喜好更改,记得适当调整下面涉及到的部分即可。
|
||||
|
||||
文件结构:
|
||||
|
||||
```
|
||||
moi
|
||||
└─ mai
|
||||
├─ linuxqq_3.2.16-32793_amd64.deb # linuxqq安装包
|
||||
├─ mongodb-org-server_8.0.5_amd64.deb # MongoDB的安装包
|
||||
└─ bot
|
||||
└─ MaiMBot-0.5.8-alpha.zip # 麦麦的压缩包
|
||||
```
|
||||
|
||||
### 网络
|
||||
|
||||
你可以在你的服务器控制台网页更改防火墙规则,允许6099,8080,27017这几个端口的出入。
|
||||
|
||||
## 1.正式开始!
|
||||
|
||||
远程连接你的服务器,你会看到一个黑框框闪着白方格,这就是我们要进行设置的场所——终端了。以下的bash命令都是在这里输入。
|
||||
|
||||
## 2. Python的安装
|
||||
|
||||
- 导入 Python 的稳定版 PPA(Ubuntu需执行此步,Debian可忽略):
|
||||
|
||||
```bash
|
||||
sudo add-apt-repository ppa:deadsnakes/ppa
|
||||
```
|
||||
|
||||
- 导入 PPA 后,更新 APT 缓存:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
```
|
||||
|
||||
- 在「终端」中执行以下命令来安装 Python 3.12:
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
sudo apt install python3-pip
|
||||
```
|
||||
|
||||
- 检查Pip是否安装成功:
|
||||
|
||||
```bash
|
||||
pip --version
|
||||
```
|
||||
|
||||
- 安装必要组件
|
||||
|
||||
``` bash
|
||||
sudo apt install python-is-python3
|
||||
```
|
||||
|
||||
## 3.MongoDB的安装
|
||||
*如果你是参考[官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-on-linux/#std-label-install-mdb-community-edition-linux)进行安装的,可跳过此步*
|
||||
|
||||
``` bash
|
||||
cd /moi/mai
|
||||
```
|
||||
|
||||
``` bash
|
||||
dpkg -i mongodb-org-server_8.0.5_amd64.deb
|
||||
```
|
||||
|
||||
``` bash
|
||||
mkdir -p /root/data/mongodb/{data,log}
|
||||
```
|
||||
|
||||
## 4.MongoDB的运行
|
||||
|
||||
```bash
|
||||
service mongod start
|
||||
```
|
||||
|
||||
```bash
|
||||
systemctl status mongod #通过这条指令检查运行状态
|
||||
```
|
||||
|
||||
有需要的话可以把这个服务注册成开机自启
|
||||
|
||||
```bash
|
||||
sudo systemctl enable mongod
|
||||
```
|
||||
|
||||
## 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
|
||||
```
|
||||
执行后,脚本会自动帮你部署好QQ及Napcat
|
||||
*注:如果你已经手动安装了Napcat和QQ,可忽略此步*
|
||||
|
||||
成功的标志是输入``` napcat ```出来炫酷的彩虹色界面
|
||||
|
||||
## 6.Napcat的运行
|
||||
|
||||
此时你就可以根据提示在```napcat```里面登录你的QQ号了。
|
||||
|
||||
```bash
|
||||
napcat start <你的QQ号>
|
||||
napcat status #检查运行状态
|
||||
```
|
||||
|
||||
然后你就可以登录napcat的webui进行设置了:
|
||||
|
||||
```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`保存之后点启用,就大功告成了。
|
||||
|
||||
## 7.麦麦的安装
|
||||
|
||||
### step 1 安装解压软件
|
||||
|
||||
```bash
|
||||
sudo apt-get install unzip
|
||||
```
|
||||
|
||||
### step 2 解压文件
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot # 注意:要切换到压缩包的目录中去
|
||||
unzip MaiMBot-0.5.8-alpha.zip
|
||||
```
|
||||
|
||||
### step 3 进入虚拟环境安装库
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### step 4 试运行
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
python bot.py
|
||||
```
|
||||
|
||||
肯定运行不成功,不过你会发现结束之后多了一些文件
|
||||
|
||||
```
|
||||
bot
|
||||
├─ .env
|
||||
└─ config
|
||||
└─ bot_config.toml
|
||||
```
|
||||
|
||||
你可以使用vim、nano等编辑器直接在终端里修改这些配置文件,但如果你不熟悉它们的操作,也可以使用带图形界面的编辑器。
|
||||
如果你的麦麦部署在远程服务器,也可以把它们下载到本地改好再传上去
|
||||
|
||||
### step 5 文件配置
|
||||
|
||||
本项目需要配置两个主要文件:
|
||||
|
||||
1. `.env` - 配置API服务和系统环境
|
||||
2. `bot_config.toml` - 配置机器人行为和模型
|
||||
|
||||
#### API
|
||||
|
||||
你可以注册一个硅基流动的账号,通过邀请码注册有14块钱的免费额度:https://cloud.siliconflow.cn/i/7Yld7cfg。
|
||||
|
||||
#### 修改配置文件
|
||||
请参考
|
||||
- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程,适合初次使用的猫娘
|
||||
- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明,适合有经验的用户
|
||||
|
||||
|
||||
### step 6 运行
|
||||
|
||||
现在再运行
|
||||
|
||||
```bash
|
||||
cd /moi/mai/bot
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
python bot.py
|
||||
```
|
||||
|
||||
应该就能运行成功了。
|
||||
|
||||
## 8.事后配置
|
||||
|
||||
可是现在还有个问题:只要你一关闭终端,bot.py就会停止运行。那该怎么办呢?我们可以把bot.py注册成服务。
|
||||
|
||||
重启服务器,打开MongoDB和napcat服务。
|
||||
|
||||
新建一个文件,名为`bot.service`,内容如下
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=maimai bot
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/moi/mai/bot
|
||||
ExecStart=/moi/mai/bot/venv/bin/python /moi/mai/bot/bot.py
|
||||
Restart=on-failure
|
||||
User=root
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
里面的路径视自己的情况更改。
|
||||
|
||||
把它放到`/etc/systemd/system`里面。
|
||||
|
||||
重新加载 `systemd` 配置:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
启动服务:
|
||||
|
||||
```bash
|
||||
sudo systemctl start bot.service # 启动服务
|
||||
sudo systemctl restart bot.service # 或者重启服务
|
||||
```
|
||||
|
||||
检查服务状态:
|
||||
|
||||
```bash
|
||||
sudo systemctl status bot.service
|
||||
```
|
||||
|
||||
现在再关闭终端,检查麦麦能不能正常回复QQ信息。如果可以的话就大功告成了!
|
||||
|
||||
## 9.命令速查
|
||||
|
||||
```bash
|
||||
service mongod start # 启动mongod服务
|
||||
napcat start <你的QQ号> # 登录napcat
|
||||
cd /moi/mai/bot # 切换路径
|
||||
python -m venv venv # 创建虚拟环境
|
||||
source venv/bin/activate # 激活虚拟环境
|
||||
|
||||
sudo systemctl daemon-reload # 重新加载systemd配置
|
||||
sudo systemctl start bot.service # 启动bot服务
|
||||
sudo systemctl enable bot.service # 启动bot服务
|
||||
|
||||
sudo systemctl status bot.service # 检查bot服务状态
|
||||
```
|
||||
|
||||
```bash
|
||||
python bot.py # 运行麦麦
|
||||
```
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
# 📦 Linux系统如何手动部署MaiMbot麦麦?
|
||||
|
||||
## 准备工作
|
||||
|
||||
- 一台联网的Linux设备(本教程以Ubuntu/Debian系为例)
|
||||
- QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号)
|
||||
- 可用的大模型API
|
||||
- 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题
|
||||
- 以下内容假设你对Linux系统有一定的了解,如果觉得难以理解,请直接用Windows系统部署[Windows系统部署指南](./manual_deploy_windows.md)或[使用Windows一键包部署](https://github.com/MaiM-with-u/MaiBot/releases/tag/EasyInstall-windows)
|
||||
|
||||
## 你需要知道什么?
|
||||
|
||||
- 如何正确向AI助手提问,来学习新知识
|
||||
|
||||
- Python是什么
|
||||
|
||||
- Python的虚拟环境是什么?如何创建虚拟环境
|
||||
|
||||
- 命令行是什么
|
||||
|
||||
- 数据库是什么?如何安装并启动MongoDB
|
||||
|
||||
- 如何运行一个QQ机器人,以及NapCat框架是什么
|
||||
|
||||
---
|
||||
|
||||
## 环境配置
|
||||
|
||||
### 1️⃣ **确认Python版本**
|
||||
|
||||
需确保Python版本为3.9及以上
|
||||
|
||||
```bash
|
||||
python --version
|
||||
# 或
|
||||
python3 --version
|
||||
```
|
||||
|
||||
如果版本低于3.9,请更新Python版本,目前建议使用python3.12
|
||||
|
||||
```bash
|
||||
# Debian
|
||||
sudo apt update
|
||||
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️⃣ **创建虚拟环境**
|
||||
|
||||
```bash
|
||||
# 方法1:使用venv(推荐)
|
||||
python3 -m venv maimbot
|
||||
source maimbot/bin/activate # 激活环境
|
||||
|
||||
# 方法2:使用conda(需先安装Miniconda)
|
||||
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
|
||||
bash Miniconda3-latest-Linux-x86_64.sh
|
||||
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/administration/install-on-linux/#std-label-install-mdb-community-edition-linux),进入后选择自己的系统版本即可
|
||||
- 默认连接本地27017端口
|
||||
|
||||
---
|
||||
|
||||
## NapCat配置
|
||||
|
||||
### 4️⃣ **安装NapCat框架**
|
||||
|
||||
- 执行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`
|
||||
|
||||
---
|
||||
|
||||
## 配置文件设置
|
||||
|
||||
### 5️⃣ **配置文件设置,让麦麦Bot正常工作**
|
||||
可先运行一次
|
||||
```bash
|
||||
# 在项目目录下操作
|
||||
nb run
|
||||
# 或
|
||||
python3 bot.py
|
||||
```
|
||||
之后你就可以找到`.env`和`bot_config.toml`这两个文件了
|
||||
关于文件内容的配置请参考:
|
||||
- [🎀 新手配置指南](./installation_cute.md) - 通俗易懂的配置教程,适合初次使用的猫娘
|
||||
- [⚙️ 标准配置指南](./installation_standard.md) - 简明专业的配置说明,适合有经验的用户
|
||||
|
||||
---
|
||||
|
||||
## 启动机器人
|
||||
|
||||
### 6️⃣ **启动麦麦机器人**
|
||||
|
||||
```bash
|
||||
# 在项目目录下操作
|
||||
nb run
|
||||
# 或
|
||||
python3 bot.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 7️⃣ **使用systemctl管理maimbot**
|
||||
|
||||
使用以下命令添加服务文件:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/systemd/system/maimbot.service
|
||||
```
|
||||
|
||||
输入以下内容:
|
||||
|
||||
`<maimbot_directory>`:你的maimbot目录
|
||||
|
||||
`<venv_directory>`:你的venv环境(就是上文创建环境后,执行的代码`source maimbot/bin/activate`中source后面的路径的绝对路径)
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=MaiMbot 麦麦
|
||||
After=network.target mongod.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=<maimbot_directory>
|
||||
ExecStart=<venv_directory>/python3 bot.py
|
||||
ExecStop=/bin/kill -2 $MAINPID
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
输入以下命令重新加载systemd:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
启动并设置开机自启:
|
||||
|
||||
```bash
|
||||
sudo systemctl start maimbot
|
||||
sudo systemctl enable maimbot
|
||||
```
|
||||
|
||||
输入以下命令查看日志:
|
||||
|
||||
```bash
|
||||
sudo journalctl -xeu maimbot
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **其他组件(可选)**
|
||||
|
||||
- 直接运行 knowledge.py生成知识库
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
🔧 权限问题:在命令前加`sudo`
|
||||
🔌 端口占用:使用`sudo lsof -i :8080`查看端口占用
|
||||
🛡️ 防火墙:确保8080/27017端口开放
|
||||
|
||||
```bash
|
||||
sudo ufw allow 8080/tcp
|
||||
sudo ufw allow 27017/tcp
|
||||
```
|
||||
@@ -1,201 +0,0 @@
|
||||
# 📦 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`和`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
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>com.maimbot</string>
|
||||
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/path/to/maimbot-venv/bin/python</string>
|
||||
<string>/path/to/MaiMbot/bot.py</string>
|
||||
</array>
|
||||
|
||||
<key>WorkingDirectory</key>
|
||||
<string>/path/to/MaiMbot</string>
|
||||
|
||||
<key>StandardOutPath</key>
|
||||
<string>/tmp/maimbot.log</string>
|
||||
<key>StandardErrorPath</key>
|
||||
<string>/tmp/maimbot.err</string>
|
||||
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
```
|
||||
|
||||
加载服务:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
@@ -1,110 +0,0 @@
|
||||
# 📦 Windows系统如何手动部署MaiMbot麦麦?
|
||||
|
||||
## 你需要什么?
|
||||
|
||||
- 一台电脑,能够上网的那种
|
||||
|
||||
- 一个QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号)
|
||||
|
||||
- 可用的大模型API
|
||||
|
||||
- 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题
|
||||
|
||||
## 你需要知道什么?
|
||||
|
||||
- 如何正确向AI助手提问,来学习新知识
|
||||
|
||||
- Python是什么
|
||||
|
||||
- Python的虚拟环境是什么?如何创建虚拟环境
|
||||
|
||||
- 命令行是什么
|
||||
|
||||
- 数据库是什么?如何安装并启动MongoDB
|
||||
|
||||
- 如何运行一个QQ机器人,以及NapCat框架是什么
|
||||
|
||||
## 如果准备好了,就可以开始部署了
|
||||
|
||||
### 1️⃣ **首先,我们需要安装正确版本的Python**
|
||||
|
||||
在创建虚拟环境之前,请确保你的电脑上安装了Python 3.9及以上版本。如果没有,可以按以下步骤安装:
|
||||
|
||||
1. 访问Python官网下载页面:<https://www.python.org/downloads/release/python-3913/>
|
||||
2. 下载Windows安装程序 (64-bit): `python-3.9.13-amd64.exe`
|
||||
3. 运行安装程序,并确保勾选"Add Python 3.9 to PATH"选项
|
||||
4. 点击"Install Now"开始安装
|
||||
|
||||
或者使用PowerShell自动下载安装(需要管理员权限):
|
||||
|
||||
```powershell
|
||||
# 下载并安装Python 3.9.13
|
||||
$pythonUrl = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe"
|
||||
$pythonInstaller = "$env:TEMP\python-3.9.13-amd64.exe"
|
||||
Invoke-WebRequest -Uri $pythonUrl -OutFile $pythonInstaller
|
||||
Start-Process -Wait -FilePath $pythonInstaller -ArgumentList "/quiet", "InstallAllUsers=0", "PrependPath=1" -Verb RunAs
|
||||
```
|
||||
|
||||
### 2️⃣ **创建Python虚拟环境来运行程序**
|
||||
|
||||
> 你可以选择使用以下两种方法之一来创建Python环境:
|
||||
|
||||
```bash
|
||||
# ---方法1:使用venv(Python自带)
|
||||
# 在命令行中创建虚拟环境(环境名为maimbot)
|
||||
# 这会让你在运行命令的目录下创建一个虚拟环境
|
||||
# 请确保你已通过cd命令前往到了对应路径,不然之后你可能找不到你的python环境
|
||||
python -m venv maimbot
|
||||
|
||||
maimbot\\Scripts\\activate
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
```bash
|
||||
# ---方法2:使用conda
|
||||
# 创建一个新的conda环境(环境名为maimbot)
|
||||
# Python版本为3.9
|
||||
conda create -n maimbot python=3.9
|
||||
|
||||
# 激活环境
|
||||
conda activate maimbot
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3️⃣ **然后你需要启动MongoDB数据库,来存储信息**
|
||||
|
||||
- 安装并启动MongoDB服务
|
||||
- 默认连接本地27017端口
|
||||
|
||||
### 4️⃣ **配置NapCat,让麦麦bot与qq取得联系**
|
||||
|
||||
- 安装并登录NapCat(用你的qq小号)
|
||||
- 添加反向WS: `ws://127.0.0.1:8080/onebot/v11/ws`
|
||||
|
||||
### 5️⃣ **配置文件设置,让麦麦Bot正常工作**
|
||||
|
||||
- 修改环境配置文件:`.env`
|
||||
- 修改机器人配置文件:`bot_config.toml`
|
||||
|
||||
### 6️⃣ **启动麦麦机器人**
|
||||
|
||||
- 打开命令行,cd到对应路径
|
||||
|
||||
```bash
|
||||
nb run
|
||||
```
|
||||
|
||||
- 或者cd到对应路径后
|
||||
|
||||
```bash
|
||||
python bot.py
|
||||
```
|
||||
|
||||
### 7️⃣ **其他组件(可选)**
|
||||
|
||||
- `run_thingking.bat`: 启动可视化推理界面(未完善)
|
||||
- 直接运行 knowledge.py生成知识库
|
||||
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 208 KiB |
|
Before Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 27 KiB |
@@ -1,68 +0,0 @@
|
||||
# 群晖 NAS 部署指南
|
||||
|
||||
**笔者使用的是 DSM 7.2.2,其他 DSM 版本的操作可能不完全一样**
|
||||
**需要使用 Container Manager,群晖的部分部分入门级 NAS 可能不支持**
|
||||
|
||||
## 部署步骤
|
||||
|
||||
### 创建配置文件目录
|
||||
|
||||
打开 `DSM ➡️ 控制面板 ➡️ 共享文件夹`,点击 `新增` ,创建一个共享文件夹
|
||||
只需要设置名称,其他设置均保持默认即可。如果你已经有 docker 专用的共享文件夹了,就跳过这一步
|
||||
|
||||
打开 `DSM ➡️ FileStation`, 在共享文件夹中创建一个 `MaiMBot` 文件夹
|
||||
|
||||
### 准备配置文件
|
||||
|
||||
docker-compose.yml: https://github.com/SengokuCola/MaiMBot/blob/main/docker-compose.yml
|
||||
下载后打开,将 `services-mongodb-image` 修改为 `mongo:4.4.24`。这是因为最新的 MongoDB 强制要求 AVX 指令集,而群晖似乎不支持这个指令集
|
||||

|
||||
|
||||
bot_config.toml: https://github.com/SengokuCola/MaiMBot/blob/main/template/bot_config_template.toml
|
||||
下载后,重命名为 `bot_config.toml`
|
||||
打开它,按自己的需求填写配置文件
|
||||
|
||||
.env: https://github.com/SengokuCola/MaiMBot/blob/main/template.env
|
||||
下载后,重命名为 `.env`
|
||||
将 `HOST` 修改为 `0.0.0.0`,确保 maimbot 能被 napcat 访问
|
||||
按下图修改 mongodb 设置,使用 `MONGODB_URI`
|
||||

|
||||
|
||||
把 `bot_config.toml` 和 `.env` 放入之前创建的 `MaiMBot`文件夹
|
||||
|
||||
#### 如何下载?
|
||||
|
||||
点这里!
|
||||
|
||||
### 创建项目
|
||||
|
||||
打开 `DSM ➡️ ContainerManager ➡️ 项目`,点击 `新增` 创建项目,填写以下内容:
|
||||
|
||||
- 项目名称: `maimbot`
|
||||
- 路径:之前创建的 `MaiMBot` 文件夹
|
||||
- 来源: `上传 docker-compose.yml`
|
||||
- 文件:之前下载的 `docker-compose.yml` 文件
|
||||
|
||||
图例:
|
||||
|
||||

|
||||
|
||||
一路点下一步,等待项目创建完成
|
||||
|
||||
### 设置 Napcat
|
||||
|
||||
1. 登陆 napcat
|
||||
打开 napcat: `http://<你的nas地址>:6099` ,输入token登陆
|
||||
token可以打开 `DSM ➡️ ContainerManager ➡️ 项目 ➡️ MaiMBot ➡️ 容器 ➡️ Napcat ➡️ 日志`,找到类似 `[WebUi] WebUi Local Panel Url: http://127.0.0.1:6099/webui?token=xxxx` 的日志
|
||||
这个 `token=` 后面的就是你的 napcat token
|
||||
|
||||
2. 按提示,登陆你给麦麦准备的QQ小号
|
||||
|
||||
3. 设置 websocket 客户端
|
||||
`网络配置 -> 新建 -> Websocket客户端`,名称自定,URL栏填入 `ws://maimbot:8080/onebot/v11/ws`,启用并保存即可。
|
||||
若修改过容器名称,则替换 `maimbot` 为你自定的名称
|
||||
|
||||
### 部署完成
|
||||
|
||||
找个群,发送 `麦麦,你在吗` 之类的
|
||||
如果一切正常,应该能正常回复了
|
||||