Merge branch 'debug' into main
This commit is contained in:
20
docs/Jonathan R.md
Normal file
20
docs/Jonathan R.md
Normal file
@@ -0,0 +1,20 @@
|
||||
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 还强调时空关联性联想。如果两个事物在时间或空间上经常同时出现,它们也会在记忆中形成关联。比如,每次在公园里看到花的时候,都能听到鸟儿的叫声,那么花和鸟儿叫声的形态特征(花的视觉形态和鸟叫的听觉形态)就会在记忆中形成关联,以后听到鸟叫可能就会联想到公园里的花。
|
||||
48
docs/doc1.md
48
docs/doc1.md
@@ -1,6 +1,7 @@
|
||||
# 📂 文件及功能介绍 (2025年更新)
|
||||
|
||||
## 根目录
|
||||
|
||||
- **README.md**: 项目的概述和使用说明。
|
||||
- **requirements.txt**: 项目所需的Python依赖包列表。
|
||||
- **bot.py**: 主启动文件,负责环境配置加载和NoneBot初始化。
|
||||
@@ -10,6 +11,7 @@
|
||||
- **run_*.bat**: 各种启动脚本,包括数据库、maimai和thinking功能。
|
||||
|
||||
## `src/` 目录结构
|
||||
|
||||
- **`plugins/` 目录**: 存放不同功能模块的插件。
|
||||
- **chat/**: 处理聊天相关的功能,如消息发送和接收。
|
||||
- **memory_system/**: 处理机器人的记忆功能。
|
||||
@@ -22,94 +24,96 @@
|
||||
|
||||
- **`common/` 目录**: 存放通用的工具和库。
|
||||
- **database.py**: 处理与数据库的交互,负责数据的存储和检索。
|
||||
- **__init__.py**: 初始化模块。
|
||||
- ****init**.py**: 初始化模块。
|
||||
|
||||
## `config/` 目录
|
||||
|
||||
- **bot_config_template.toml**: 机器人配置模板。
|
||||
- **auto_format.py**: 自动格式化工具。
|
||||
|
||||
### `src/plugins/chat/` 目录文件详细介绍
|
||||
|
||||
1. **`__init__.py`**:
|
||||
1. **`__init__.py`**:
|
||||
- 初始化 `chat` 模块,使其可以作为一个包被导入。
|
||||
|
||||
2. **`bot.py`**:
|
||||
2. **`bot.py`**:
|
||||
- 主要的聊天机器人逻辑实现,处理消息的接收、思考和回复。
|
||||
- 包含 `ChatBot` 类,负责消息处理流程控制。
|
||||
- 集成记忆系统和意愿管理。
|
||||
|
||||
3. **`config.py`**:
|
||||
3. **`config.py`**:
|
||||
- 配置文件,定义了聊天机器人的各种参数和设置。
|
||||
- 包含 `BotConfig` 和全局配置对象 `global_config`。
|
||||
|
||||
4. **`cq_code.py`**:
|
||||
4. **`cq_code.py`**:
|
||||
- 处理 CQ 码(CoolQ 码),用于发送和接收特定格式的消息。
|
||||
|
||||
5. **`emoji_manager.py`**:
|
||||
5. **`emoji_manager.py`**:
|
||||
- 管理表情包的发送和接收,根据情感选择合适的表情。
|
||||
- 提供根据情绪获取表情的方法。
|
||||
|
||||
6. **`llm_generator.py`**:
|
||||
6. **`llm_generator.py`**:
|
||||
- 生成基于大语言模型的回复,处理用户输入并生成相应的文本。
|
||||
- 通过 `ResponseGenerator` 类实现回复生成。
|
||||
|
||||
7. **`message.py`**:
|
||||
7. **`message.py`**:
|
||||
- 定义消息的结构和处理逻辑,包含多种消息类型:
|
||||
- `Message`: 基础消息类
|
||||
- `MessageSet`: 消息集合
|
||||
- `Message_Sending`: 发送中的消息
|
||||
- `Message_Thinking`: 思考状态的消息
|
||||
|
||||
8. **`message_sender.py`**:
|
||||
8. **`message_sender.py`**:
|
||||
- 控制消息的发送逻辑,确保消息按照特定规则发送。
|
||||
- 包含 `message_manager` 对象,用于管理消息队列。
|
||||
|
||||
9. **`prompt_builder.py`**:
|
||||
9. **`prompt_builder.py`**:
|
||||
- 构建用于生成回复的提示,优化机器人的响应质量。
|
||||
|
||||
10. **`relationship_manager.py`**:
|
||||
10. **`relationship_manager.py`**:
|
||||
- 管理用户之间的关系,记录用户的互动和偏好。
|
||||
- 提供更新关系和关系值的方法。
|
||||
|
||||
11. **`Segment_builder.py`**:
|
||||
11. **`Segment_builder.py`**:
|
||||
- 构建消息片段的工具。
|
||||
|
||||
12. **`storage.py`**:
|
||||
12. **`storage.py`**:
|
||||
- 处理数据存储,负责将聊天记录和用户信息保存到数据库。
|
||||
- 实现 `MessageStorage` 类管理消息存储。
|
||||
|
||||
13. **`thinking_idea.py`**:
|
||||
13. **`thinking_idea.py`**:
|
||||
- 实现机器人的思考机制。
|
||||
|
||||
14. **`topic_identifier.py`**:
|
||||
14. **`topic_identifier.py`**:
|
||||
- 识别消息中的主题,帮助机器人理解用户的意图。
|
||||
|
||||
15. **`utils.py`** 和 **`utils_*.py`** 系列文件:
|
||||
15. **`utils.py`** 和 **`utils_*.py`** 系列文件:
|
||||
- 存放各种工具函数,提供辅助功能以支持其他模块。
|
||||
- 包括 `utils_cq.py`、`utils_image.py`、`utils_user.py` 等专门工具。
|
||||
|
||||
16. **`willing_manager.py`**:
|
||||
16. **`willing_manager.py`**:
|
||||
- 管理机器人的回复意愿,动态调整回复概率。
|
||||
- 通过多种因素(如被提及、话题兴趣度)影响回复决策。
|
||||
|
||||
### `src/plugins/memory_system/` 目录文件介绍
|
||||
|
||||
1. **`memory.py`**:
|
||||
1. **`memory.py`**:
|
||||
- 实现记忆管理核心功能,包含 `memory_graph` 对象。
|
||||
- 提供相关项目检索,支持多层次记忆关联。
|
||||
|
||||
2. **`draw_memory.py`**:
|
||||
2. **`draw_memory.py`**:
|
||||
- 记忆可视化工具。
|
||||
|
||||
3. **`memory_manual_build.py`**:
|
||||
3. **`memory_manual_build.py`**:
|
||||
- 手动构建记忆的工具。
|
||||
|
||||
4. **`offline_llm.py`**:
|
||||
4. **`offline_llm.py`**:
|
||||
- 离线大语言模型处理功能。
|
||||
|
||||
## 消息处理流程
|
||||
|
||||
### 1. 消息接收与预处理
|
||||
|
||||
- 通过 `ChatBot.handle_message()` 接收群消息。
|
||||
- 进行用户和群组的权限检查。
|
||||
- 更新用户关系信息。
|
||||
@@ -117,12 +121,14 @@
|
||||
- 对消息进行过滤和敏感词检测。
|
||||
|
||||
### 2. 主题识别与决策
|
||||
|
||||
- 使用 `topic_identifier` 识别消息主题。
|
||||
- 通过记忆系统检查对主题的兴趣度。
|
||||
- `willing_manager` 动态计算回复概率。
|
||||
- 根据概率决定是否回复消息。
|
||||
|
||||
### 3. 回复生成与发送
|
||||
|
||||
- 如需回复,首先创建 `Message_Thinking` 对象表示思考状态。
|
||||
- 调用 `ResponseGenerator.generate_response()` 生成回复内容和情感状态。
|
||||
- 删除思考消息,创建 `MessageSet` 准备发送回复。
|
||||
|
||||
@@ -1,67 +1,93 @@
|
||||
# 🐳 Docker 部署指南
|
||||
|
||||
## 部署步骤(推荐,但不一定是最新)
|
||||
## 部署步骤 (推荐,但不一定是最新)
|
||||
|
||||
**"更新镜像与容器"部分在本文档 [Part 6](#6-更新镜像与容器)**
|
||||
|
||||
### 0. 前提说明
|
||||
|
||||
**本文假设读者已具备一定的 Docker 基础知识。若您对 Docker 不熟悉,建议先参考相关教程或文档进行学习,或选择使用 [📦Linux手动部署指南](./manual_deploy_linux.md) 或 [📦Windows手动部署指南](./manual_deploy_windows.md) 。**
|
||||
|
||||
|
||||
### 1. 获取Docker配置文件:
|
||||
### 1. 获取Docker配置文件
|
||||
|
||||
- 建议先单独创建好一个文件夹并进入,作为工作目录
|
||||
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/SengokuCola/MaiMBot/main/docker-compose.yml -O docker-compose.yml
|
||||
```
|
||||
|
||||
- 若需要启用MongoDB数据库的用户名和密码,可进入docker-compose.yml,取消MongoDB处的注释并修改变量`=`后方的值为你的用户名和密码\
|
||||
修改后请注意在之后配置`.env.prod`文件时指定MongoDB数据库的用户名密码
|
||||
- 若需要启用MongoDB数据库的用户名和密码,可进入docker-compose.yml,取消MongoDB处的注释并修改变量旁 `=` 后方的值为你的用户名和密码\
|
||||
修改后请注意在之后配置 `.env.prod` 文件时指定MongoDB数据库的用户名密码
|
||||
|
||||
### 2. 启动服务
|
||||
|
||||
### 2. 启动服务:
|
||||
|
||||
- **!!! 请在第一次启动前确保当前工作目录下`.env.prod`与`bot_config.toml`文件存在 !!!**\
|
||||
- **!!! 请在第一次启动前确保当前工作目录下 `.env.prod` 与 `bot_config.toml` 文件存在 !!!**\
|
||||
由于Docker文件映射行为的特殊性,若宿主机的映射路径不存在,可能导致意外的目录创建,而不会创建文件,由于此处需要文件映射到文件,需提前确保文件存在且路径正确,可使用如下命令:
|
||||
|
||||
```bash
|
||||
touch .env.prod
|
||||
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
|
||||
```
|
||||
|
||||
- 旧版Docker中可能找不到docker compose,请使用docker-compose工具替代
|
||||
|
||||
|
||||
### 3. 修改配置并重启Docker:
|
||||
### 3. 修改配置并重启Docker
|
||||
|
||||
- 请前往 [🎀 新手配置指南](docs/installation_cute.md) 或 [⚙️ 标准配置指南](docs/installation_standard.md) 完成`.env.prod`与`bot_config.toml`配置文件的编写\
|
||||
**需要注意`.env.prod`中HOST处IP的填写,Docker中部署和系统中直接安装的配置会有所不同**
|
||||
|
||||
- 重启Docker容器:
|
||||
|
||||
```bash
|
||||
docker restart maimbot # 若修改过容器名称则替换maimbot为你自定的名臣
|
||||
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
|
||||
```
|
||||
|
||||
- 旧版Docker中可能找不到docker compose,请使用docker-compose工具替代
|
||||
|
||||
|
||||
### 4. 登入NapCat管理页添加反向WebSocket
|
||||
|
||||
- 在浏览器地址栏输入`http://<宿主机IP>:6099/`进入NapCat的管理Web页,添加一个Websocket客户端
|
||||
- 在浏览器地址栏输入 `http://<宿主机IP>:6099/` 进入NapCat的管理Web页,添加一个Websocket客户端
|
||||
|
||||
> 网络配置 -> 新建 -> Websocket客户端
|
||||
|
||||
- Websocket客户端的名称自定,URL栏填入`ws://maimbot:8080/onebot/v11/ws`,启用并保存即可\
|
||||
- Websocket客户端的名称自定,URL栏填入 `ws://maimbot:8080/onebot/v11/ws`,启用并保存即可\
|
||||
(若修改过容器名称则替换maimbot为你自定的名称)
|
||||
|
||||
### 5. 部署完成,愉快地和麦麦对话吧!
|
||||
|
||||
### 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密钥请妥善保管,不要泄露
|
||||
- 建议先在测试环境中运行,确认无误后再部署到生产环境
|
||||
- 建议先在测试环境中运行,确认无误后再部署到生产环境
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# 🔧 配置指南 喵~
|
||||
|
||||
## 👋 你好呀!
|
||||
## 👋 你好呀
|
||||
|
||||
让咱来告诉你我们要做什么喵:
|
||||
|
||||
1. 我们要一起设置一个可爱的AI机器人
|
||||
2. 这个机器人可以在QQ上陪你聊天玩耍哦
|
||||
3. 需要设置两个文件才能让机器人工作呢
|
||||
@@ -10,16 +11,19 @@
|
||||
## 📝 需要设置的文件喵
|
||||
|
||||
要设置这两个文件才能让机器人跑起来哦:
|
||||
|
||||
1. `.env.prod` - 这个文件告诉机器人要用哪些AI服务呢
|
||||
2. `bot_config.toml` - 这个文件教机器人怎么和你聊天喵
|
||||
|
||||
## 🔑 密钥和域名的对应关系
|
||||
|
||||
想象一下,你要进入一个游乐园,需要:
|
||||
|
||||
1. 知道游乐园的地址(这就是域名 base_url)
|
||||
2. 有入场的门票(这就是密钥 key)
|
||||
|
||||
在 `.env.prod` 文件里,我们定义了三个游乐园的地址和门票喵:
|
||||
|
||||
```ini
|
||||
# 硅基流动游乐园
|
||||
SILICONFLOW_KEY=your_key # 硅基流动的门票
|
||||
@@ -35,6 +39,7 @@ CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere的地
|
||||
```
|
||||
|
||||
然后在 `bot_config.toml` 里,机器人会用这些门票和地址去游乐园玩耍:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
@@ -47,22 +52,24 @@ base_url = "SILICONFLOW_BASE_URL" # 还是去硅基流动游乐园
|
||||
key = "SILICONFLOW_KEY" # 用同一张门票就可以啦
|
||||
```
|
||||
|
||||
### 🎪 举个例子喵:
|
||||
### 🎪 举个例子喵
|
||||
|
||||
如果你想用DeepSeek官方的服务,就要这样改:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
name = "deepseek-reasoner" # 改成对应的模型名称,这里为DeepseekR1
|
||||
base_url = "DEEP_SEEK_BASE_URL" # 改成去DeepSeek游乐园
|
||||
key = "DEEP_SEEK_KEY" # 用DeepSeek的门票
|
||||
|
||||
[model.llm_normal]
|
||||
name = "Pro/deepseek-ai/DeepSeek-V3"
|
||||
name = "deepseek-chat" # 改成对应的模型名称,这里为DeepseekV3
|
||||
base_url = "DEEP_SEEK_BASE_URL" # 也去DeepSeek游乐园
|
||||
key = "DEEP_SEEK_KEY" # 用同一张DeepSeek门票
|
||||
```
|
||||
|
||||
### 🎯 简单来说:
|
||||
### 🎯 简单来说
|
||||
|
||||
- `.env.prod` 文件就像是你的票夹,存放着各个游乐园的门票和地址
|
||||
- `bot_config.toml` 就是告诉机器人:用哪张票去哪个游乐园玩
|
||||
- 所有模型都可以用同一个游乐园的票,也可以去不同的游乐园玩耍
|
||||
@@ -88,19 +95,25 @@ 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喵,不然听不见群友讲话了喵
|
||||
# 如果使用Docker部署,需要改成0.0.0.0喵,不然听不见群友讲话了喵
|
||||
HOST=127.0.0.1
|
||||
PORT=8080
|
||||
|
||||
# 这些是数据库设置,一般也不用改呢
|
||||
MONGODB_HOST=127.0.0.1 # 如果使用Docker部署,需要改成数据库容器的名字喵,默认是mongodb喵
|
||||
# 如果使用Docker部署,需要把MONGODB_HOST改成数据库容器的名字喵,默认是mongodb喵
|
||||
MONGODB_HOST=127.0.0.1
|
||||
MONGODB_PORT=27017
|
||||
DATABASE_NAME=MegBot
|
||||
MONGODB_USERNAME = "" # 如果数据库需要用户名,就在这里填写喵
|
||||
MONGODB_PASSWORD = "" # 如果数据库需要密码,就在这里填写呢
|
||||
MONGODB_AUTH_SOURCE = "" # 数据库认证源,一般不用改哦
|
||||
# 数据库认证信息,如果需要认证就取消注释并填写下面三行喵
|
||||
# MONGODB_USERNAME = ""
|
||||
# MONGODB_PASSWORD = ""
|
||||
# MONGODB_AUTH_SOURCE = ""
|
||||
|
||||
# 插件设置喵
|
||||
PLUGINS=["src2.plugins.chat"] # 这里是机器人的插件列表呢
|
||||
# 也可以使用URI连接数据库,取消注释填写在下面这行喵(URI的优先级比上面的高)
|
||||
# MONGODB_URI=mongodb://127.0.0.1:27017/MegBot
|
||||
|
||||
# 这里是机器人的插件列表呢
|
||||
PLUGINS=["src2.plugins.chat"]
|
||||
```
|
||||
|
||||
### 第二个文件:机器人配置 (bot_config.toml)
|
||||
@@ -110,7 +123,8 @@ PLUGINS=["src2.plugins.chat"] # 这里是机器人的插件列表呢
|
||||
```toml
|
||||
[bot]
|
||||
qq = "把这里改成你的机器人QQ号喵" # 填写你的机器人QQ号
|
||||
nickname = "麦麦" # 机器人的名字,你可以改成你喜欢的任何名字哦
|
||||
nickname = "麦麦" # 机器人的名字,你可以改成你喜欢的任何名字哦,建议和机器人QQ名称/群昵称一样哦
|
||||
alias_names = ["小麦", "阿麦"] # 也可以用这个招呼机器人,可以不设置呢
|
||||
|
||||
[personality]
|
||||
# 这里可以设置机器人的性格呢,让它更有趣一些喵
|
||||
@@ -198,10 +212,12 @@ key = "SILICONFLOW_KEY"
|
||||
- `topic`: 负责理解对话主题的能力呢
|
||||
|
||||
## 🌟 小提示
|
||||
|
||||
- 如果你刚开始使用,建议保持默认配置呢
|
||||
- 不同的模型有不同的特长,可以根据需要调整它们的使用比例哦
|
||||
|
||||
## 🌟 小贴士喵
|
||||
|
||||
- 记得要好好保管密钥(key)哦,不要告诉别人呢
|
||||
- 配置文件要小心修改,改错了机器人可能就不能和你玩了喵
|
||||
- 如果想让机器人更聪明,可以调整 personality 里的设置呢
|
||||
@@ -209,7 +225,8 @@ key = "SILICONFLOW_KEY"
|
||||
- QQ群号和QQ号都要用数字填写,不要加引号哦(除了机器人自己的QQ号)
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
- 这个机器人还在测试中呢,可能会有一些小问题喵
|
||||
- 如果不知道怎么改某个设置,就保持原样不要动它哦~
|
||||
- 记得要先有AI服务的密钥,不然机器人就不能和你说话了呢
|
||||
- 修改完配置后要重启机器人才能生效喵~
|
||||
- 修改完配置后要重启机器人才能生效喵~
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
## 简介
|
||||
|
||||
本项目需要配置两个主要文件:
|
||||
|
||||
1. `.env.prod` - 配置API服务和系统环境
|
||||
2. `bot_config.toml` - 配置机器人行为和模型
|
||||
|
||||
## API配置说明
|
||||
|
||||
`.env.prod`和`bot_config.toml`中的API配置关系如下:
|
||||
`.env.prod` 和 `bot_config.toml` 中的API配置关系如下:
|
||||
|
||||
### 在.env.prod中定义API凭证
|
||||
|
||||
### 在.env.prod中定义API凭证:
|
||||
```ini
|
||||
# API凭证配置
|
||||
SILICONFLOW_KEY=your_key # 硅基流动API密钥
|
||||
@@ -23,7 +25,8 @@ CHAT_ANY_WHERE_KEY=your_key # ChatAnyWhere API密钥
|
||||
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere API地址
|
||||
```
|
||||
|
||||
### 在bot_config.toml中引用API凭证:
|
||||
### 在bot_config.toml中引用API凭证
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
@@ -32,9 +35,10 @@ key = "SILICONFLOW_KEY" # 引用.env.prod中定义的密钥
|
||||
```
|
||||
|
||||
如需切换到其他API服务,只需修改引用:
|
||||
|
||||
```toml
|
||||
[model.llm_reasoning]
|
||||
name = "Pro/deepseek-ai/DeepSeek-R1"
|
||||
name = "deepseek-reasoner" # 改成对应的模型名称,这里为DeepseekR1
|
||||
base_url = "DEEP_SEEK_BASE_URL" # 切换为DeepSeek服务
|
||||
key = "DEEP_SEEK_KEY" # 使用DeepSeek密钥
|
||||
```
|
||||
@@ -42,6 +46,7 @@ key = "DEEP_SEEK_KEY" # 使用DeepSeek密钥
|
||||
## 配置文件详解
|
||||
|
||||
### 环境配置文件 (.env.prod)
|
||||
|
||||
```ini
|
||||
# API配置
|
||||
SILICONFLOW_KEY=your_key
|
||||
@@ -52,26 +57,36 @@ 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
|
||||
PORT=8080 # 与反向端口相同
|
||||
|
||||
# 数据库配置
|
||||
MONGODB_HOST=127.0.0.1 # 如果使用Docker部署,需要改成数据库容器的名字,默认是mongodb
|
||||
MONGODB_PORT=27017
|
||||
MONGODB_PORT=27017 # MongoDB端口
|
||||
|
||||
DATABASE_NAME=MegBot
|
||||
MONGODB_USERNAME = "" # 数据库用户名
|
||||
MONGODB_PASSWORD = "" # 数据库密码
|
||||
MONGODB_AUTH_SOURCE = "" # 认证数据库
|
||||
# 数据库认证信息,如果需要认证就取消注释并填写下面三行
|
||||
# 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号" # 必填
|
||||
nickname = "麦麦" # 机器人昵称
|
||||
# alias_names: 配置机器人可使用的别名。当机器人在群聊或对话中被调用时,别名可以作为直接命令或提及机器人的关键字使用。
|
||||
# 该配置项为字符串数组。例如: ["小麦", "阿麦"]
|
||||
alias_names = ["小麦", "阿麦"] # 机器人别名
|
||||
|
||||
[personality]
|
||||
prompt_personality = [
|
||||
@@ -151,4 +166,4 @@ key = "SILICONFLOW_KEY"
|
||||
|
||||
3. 其他说明:
|
||||
- 项目处于测试阶段,可能存在未知问题
|
||||
- 建议初次使用保持默认配置
|
||||
- 建议初次使用保持默认配置
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# 📦 Linux系统如何手动部署MaiMbot麦麦?
|
||||
|
||||
## 准备工作
|
||||
|
||||
- 一台联网的Linux设备(本教程以Ubuntu/Debian系为例)
|
||||
- QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号)
|
||||
- 可用的大模型API
|
||||
@@ -20,6 +21,7 @@
|
||||
- 数据库是什么?如何安装并启动MongoDB
|
||||
|
||||
- 如何运行一个QQ机器人,以及NapCat框架是什么
|
||||
|
||||
---
|
||||
|
||||
## 环境配置
|
||||
@@ -33,7 +35,9 @@ python --version
|
||||
# 或
|
||||
python3 --version
|
||||
```
|
||||
|
||||
如果版本低于3.9,请更新Python版本。
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt update
|
||||
@@ -45,6 +49,7 @@ sudo update-alternatives --config python3
|
||||
```
|
||||
|
||||
### 2️⃣ **创建虚拟环境**
|
||||
|
||||
```bash
|
||||
# 方法1:使用venv(推荐)
|
||||
python3 -m venv maimbot
|
||||
@@ -65,32 +70,37 @@ 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/)
|
||||
|
||||
### 3️⃣ **安装并启动MongoDB**
|
||||
|
||||
- 安装与启动:Debian参考[官方文档](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/),Ubuntu参考[官方文档](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)
|
||||
- 默认连接本地27017端口
|
||||
|
||||
---
|
||||
|
||||
## NapCat配置
|
||||
|
||||
### 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)安装
|
||||
|
||||
- 使用QQ小号登录,添加反向WS地址:
|
||||
`ws://127.0.0.1:8080/onebot/v11/ws`
|
||||
- 使用QQ小号登录,添加反向WS地址: `ws://127.0.0.1:8080/onebot/v11/ws`
|
||||
|
||||
---
|
||||
|
||||
## 配置文件设置
|
||||
|
||||
### 5️⃣ **配置文件设置,让麦麦Bot正常工作**
|
||||
|
||||
- 修改环境配置文件:`.env.prod`
|
||||
- 修改机器人配置文件:`bot_config.toml`
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 启动机器人
|
||||
|
||||
### 6️⃣ **启动麦麦机器人**
|
||||
|
||||
```bash
|
||||
# 在项目目录下操作
|
||||
nb run
|
||||
@@ -100,17 +110,70 @@ python3 bot.py
|
||||
|
||||
---
|
||||
|
||||
## **其他组件(可选)**
|
||||
- 直接运行 knowledge.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
|
||||
```
|
||||
```
|
||||
|
||||
@@ -30,12 +30,13 @@
|
||||
|
||||
在创建虚拟环境之前,请确保你的电脑上安装了Python 3.9及以上版本。如果没有,可以按以下步骤安装:
|
||||
|
||||
1. 访问Python官网下载页面:https://www.python.org/downloads/release/python-3913/
|
||||
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"
|
||||
@@ -46,7 +47,7 @@ Start-Process -Wait -FilePath $pythonInstaller -ArgumentList "/quiet", "InstallA
|
||||
|
||||
### 2️⃣ **创建Python虚拟环境来运行程序**
|
||||
|
||||
你可以选择使用以下两种方法之一来创建Python环境:
|
||||
> 你可以选择使用以下两种方法之一来创建Python环境:
|
||||
|
||||
```bash
|
||||
# ---方法1:使用venv(Python自带)
|
||||
@@ -60,6 +61,7 @@ maimbot\\Scripts\\activate
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
```bash
|
||||
# ---方法2:使用conda
|
||||
# 创建一个新的conda环境(环境名为maimbot)
|
||||
@@ -74,27 +76,35 @@ pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 2️⃣ **然后你需要启动MongoDB数据库,来存储信息**
|
||||
|
||||
- 安装并启动MongoDB服务
|
||||
- 默认连接本地27017端口
|
||||
|
||||
### 3️⃣ **配置NapCat,让麦麦bot与qq取得联系**
|
||||
|
||||
- 安装并登录NapCat(用你的qq小号)
|
||||
- 添加反向WS:`ws://127.0.0.1:8080/onebot/v11/ws`
|
||||
- 添加反向WS: `ws://127.0.0.1:8080/onebot/v11/ws`
|
||||
|
||||
### 4️⃣ **配置文件设置,让麦麦Bot正常工作**
|
||||
|
||||
- 修改环境配置文件:`.env.prod`
|
||||
- 修改机器人配置文件:`bot_config.toml`
|
||||
|
||||
### 5️⃣ **启动麦麦机器人**
|
||||
|
||||
- 打开命令行,cd到对应路径
|
||||
|
||||
```bash
|
||||
nb run
|
||||
```
|
||||
|
||||
- 或者cd到对应路径后
|
||||
|
||||
```bash
|
||||
python bot.py
|
||||
```
|
||||
|
||||
### 6️⃣ **其他组件(可选)**
|
||||
|
||||
- `run_thingking.bat`: 启动可视化推理界面(未完善)
|
||||
- 直接运行 knowledge.py生成知识库
|
||||
|
||||
Reference in New Issue
Block a user