Files
Mofox-Core/docs/installation.md
2025-03-08 00:30:46 +08:00

243 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔧 安装与配置指南
## 部署方式
**如果你不知道Docker是什么建议寻找相关教程或使用手动部署**
### 🐳 Docker部署推荐但不一定是最新
1. 获取配置文件:
```bash
wget https://raw.githubusercontent.com/SengokuCola/MaiMBot/main/docker-compose.yml
```
2. 启动服务:
```bash
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose up -d
```
3. 修改配置后重启:
```bash
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose restart
```
### 📦 手动部署
([这里](https://www.bilibili.com/opus/1041609335464001545)有一份由社区大佬编写的适用于Windows的部署教程可供参考)
1. **环境准备**
下载Releases中的`Source code(zip)`并将其解压到一个文件夹里(**路径不要有中文**)
2. **安装Python**
要求Python 3.9+
Linux用户可在终端输入`python3 --version`确认Python版本Windows用户可在命令行输入`python --version`确认Python版本
Windows用户需要安装[Python](https://www.python.org/downloads/windows/)并在安装时勾选“Add Python to PATH”选项如访问速度慢[这里](https://www.123912.com/s/ydQuVv-TMKBd)提供Python 3.12的安装包网盘链接)
Linux由于不同发行版安装Python的方式不同请自行查阅相关教程(问AI、用搜索引擎搜一下都行)
```bash
# 创建虚拟环境(推荐)
# 在机器人的目录内打开终端/命令行,执行
python -m venv venv
# 激活虚拟环境
venv\\Scripts\\activate # Windows
source venv/bin/activate # Linux
# 安装依赖
pip install -r requirements.txt
```
3. **配置MongoDB**
- 安装并启动MongoDB服务
- 参考[MongoDB官方文档](https://www.mongodb.com/zh-cn/docs/manual/administration/install-community/#std-label-install-mdb-community-edition)
- 建议使其开机自启(教程中有提及,称为“在系统重新启动后启动”)
- 默认连接本地27017端口
4. **配置NapCat**
- 安装并登录NapCat
- 参考[NapCat官方文档](https://www.napcat.wiki/guide/install)
- 添加反向WS`ws://localhost:8080/onebot/v11/ws`
*该项目基于 nonebot2 框架开发,理论上也支持对接其他平台,如有需求请自行寻找教程*
5. **首次启动麦麦机器人**
```bash
# 在机器人的目录内打开终端/命令行,执行
nb run
```
程序会创建基本配置文件,然后退出
6. **配置文件设置**
参照“配置说明”一节进行配置
- 修改环境配置文件:`.env.prod`(位于机器人文件夹根目录)
- 修改机器人配置文件:`config/bot_config.toml`(位于机器人文件夹根目录/config文件夹内)
7. **启动麦麦机器人**
- 打开命令行cd到对应路径
```bash
nb run
```
6. **其他组件**
- `run_thingking.bat`: 启动可视化推理界面(未完善)
- ~~`knowledge.bat`: 将`/data/raw_info`下的文本文档载入数据库~~
- 直接运行 knowledge.py生成知识库
## ⚙️ 配置说明
### 环境配置 (.env.prod)
```ini
HOST=127.0.0.1
PORT=8080 # 端口号,有需求可改
# 插件配置
PLUGINS=["src2.plugins.chat"]
# 数据库配置
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017
DATABASE_NAME=MegBot
MONGODB_USERNAME = "" # 默认空值
MONGODB_PASSWORD = "" # 默认空值
MONGODB_AUTH_SOURCE = "" # 默认空值
# 以上内容如看不懂,保持默认即可
# 以下为API配置,你可以在这里定义你的密钥和base_url
# 你可以选择定义其他服务商提供的KEY完全可以自定义
#key and url
# 定义你要用的api的base_url
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1
# 你也可以自定义所需平台的base_url
# 举例:
# MODEL_NAME_BASE_URL=https://api.example.com/v1
#定义你要用的api的API-KEY
DEEP_SEEK_KEY=
CHAT_ANY_WHERE_KEY=
SILICONFLOW_KEY=
# 你也可以自定义所需平台的API-KEY
# 举例:
# MODEL_NAME_KEY=
```
### 机器人配置 (bot_config.toml)
```toml
[bot]
qq = 123
nickname = "麦麦" # 可自定义
[personality]
prompt_personality = [
]
prompt_schedule =
[message]
min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
max_context_size = 15 # 麦麦获得的上文数量
emoji_chance = 0.2 # 麦麦使用表情包的概率
ban_words = [
# "403","张三"
]
[emoji]
check_interval = 120 # 检查表情包的时间间隔
register_interval = 10 # 注册表情包的时间间隔
[cq_code]
enable_pic_translate = false
[response]
model_r1_probability = 0.8 # 麦麦回答时选择R1模型(即[model.llm_reasoning]指定的模型)的概率
model_v3_probability = 0.1 # 麦麦回答时选择V3模型(即[model.llm_normal]指定的模型)的概率
model_r1_distill_probability = 0.1 # 麦麦回答时选择R1蒸馏模型(即[model.llm_reasoning_minor]指定的模型)的概率
[memory]
build_memory_interval = 300 # 记忆构建间隔 单位秒
forget_memory_interval = 300 # 记忆遗忘间隔 单位秒
[others]
enable_advance_output = true # 是否启用高级输出
enable_kuuki_read = true # 是否启用读空气功能
[groups]
talk_allowed = [
123,
123,
] #可以回复消息的群
talk_frequency_down = [] #降低回复频率的群
ban_user_id = [] #禁止回复消息的QQ号
#V3
#name = "deepseek-chat"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"
#R1
#name = "deepseek-reasoner"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"
#下面的模型若使用硅基流动则不需要更改使用ds官方则改成.env.prod自定义的宏使用自定义模型则选择定位相似的模型自己填写
[model.llm_reasoning] #R1
name = "Pro/deepseek-ai/DeepSeek-R1"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_reasoning_minor] #R1蒸馏
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_normal] #V3
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_normal_minor] #V2.5
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"
# 主题提取jieba和snownlp不用apillm需要api
[topic]
topic_extract='snownlp' # 只支持jieba,snownlp,llm三种选项
[topic.llm_topic]
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
```
## ⚠️ 注意事项
- 目前部署方案仍在测试中,可能存在未知问题
- 配置文件中的API密钥请妥善保管不要泄露如需截图描述问题请将截图中的API密钥打码(它们通常以`sk-`开头)
- 建议先在测试环境中运行,确认无误后再部署到生产环境