---
title: maibot
canonical_url: "https://www.modelscope.ai/studios/hajimi/maibot"
md_url: "https://www.modelscope.ai/studios/hajimi/maibot.md"
repository: hajimi/maibot
chinese_name: MaiBot
last_updated: 2026-09-24
sdk_type: docker
downloads: 0
stars: 0
---

# maibot

> maibot - An interactive demo by hajimi on ModelScope. MaiBot with persistent data and plugins, Cloudflare Tunnel and r2sync GitHub backups

hajimi/maibot is an interactive demo (Studio) on ModelScope. built with docker. also known as 「MaiBot」.

- **Repository**: hajimi/maibot
- **SDK**: docker
- **Downloads**: 0
- **Stars**: 0
- **Last updated**: 2026-09-24

Source: https://www.modelscope.ai/studios/hajimi/maibot

---

# MaiBot · ModelScope 国际站

- **WebUI：https://maibot.moyang1.top/**
- 创空间：https://modelscope.ai/studios/hajimi/maibot
- 主服务监听 `0.0.0.0:7860`，Cloudflare Tunnel 指向 `http://127.0.0.1:7860`。

本仓库仅存部署代码；MaiBot、官方 NapCat 适配器、r2sync 均在云端 Docker
构建时获取。Dockerfile 固定上游提交，MaiBot 当前版本为 1.2.5。

## 持久化与备份范围

持久化根目录：`/mnt/workspace/maibot/live`，软链接到 `/MaiMBot`：

| 目录 | 内容 | GitHub 备份 |
| --- | --- | --- |
| `config/` | 机器人、模型和插件配置 | 是 |
| `data/` | 数据库、记忆、表情、WebUI 凭证、`data/plugins/` 插件持久数据 | 是 |
| `plugins/` | 已安装插件完整源码和 Git 元数据 | 是 |
| `prompts/` | 提示词 | 是 |
| `depends-data/` | 运行资源 | 是 |
| `logs/` | 日志 | 是 |

可重建的 `__pycache__`、`.venv`、`node_modules`、`data/playwright-browsers`
不进入 GitHub 快照。插件 Python 依赖由 MaiBot 按插件 manifest 自动补装。
插件源码和插件数据不共用目录。恢复时保留备份中的插件集合，避免重新安装用户已删除的插件。

二级备份使用 r2sync GitHub 模式，写入 **私有仓库 `MoYangking/maibot-data` 的 main 分支**。
WebUI 就绪约 60 秒后首次备份，之后每 30 分钟一次，失败每 60 秒重试。
普通停止会尝试最终备份；强制终止依赖持久化盘和最近成功快照。

创建快照时短暂暂停主程序与插件进程组，复制数据库和 WAL 后立即继续运行，
压缩、48 MiB 分块和上传在运行期间完成。清单包含 SHA-256，且发布新清单前保留旧分块。
本地数据存在时优先使用；持久化盘为空时先恢复 GitHub，再启动。
损坏的快照会阻止空数据启动。Git 历史会随数据变化增长，默认当前快照上限 4 GiB。

## 首次配置

1. 使用部署时提供的 WebUI Token 登录。
2. 在模型设置中填写模型服务商、API Key 和模型分配。
3. 在插件页面配置预装的 `Napcat_Adapter`。默认未启用 QQ 连接。
   现有 `napcat.moyang1.top` 的 7860 是管理端口，不能直接作为 OneBot WebSocket 使用；
   跨空间连接需配置可达的 OneBot WebSocket 地址。
4. 在插件市场安装的新插件及其配置、运行数据均进入上述持久化与备份目录。

## 平台 Secrets

- `TUNNEL_TOKEN`：CF Tunnel 运行令牌。
- `R2SYNC_GITHUB_PAT`：数据仓库写入凭据。
- `WEBUI_TOKEN`：首次初始化登录凭据；初始化后保留 WebUI 修改的 Token。
- `R2SYNC_ADMIN_PASSWORD`：r2sync 初始化凭据。
- `MAIBOT_AGREEMENTS_ACCEPTED=1`：用户已确认所固定版本的 EULA 和隐私条款。

可选变量：`BACKUP_INTERVAL_SECONDS=1800`、`R2SYNC_STORAGE_CAP_BYTES=4294967296`。
数据备份含 API Key、登录凭据与聊天内容，因此数据仓库保持私有。
密钥仅运行时注入，不写入公开部署文件或构建参数。

## 图片与表情包兼容补丁

Docker 构建在检出固定的 `MAIBOT_REF` 后应用 `deploy/maibot-image-compat.patch`：

- 图片读写允许 `/MaiMBot/data` 所指向的真实持久化目录，数据库仍保存
  `data/emoji/...` 等逻辑相对路径；其它外部目录和越界软链接仍被拒绝。
- 启动时的图片路径整理复用同一套校验，避免误删合法的持久化图片记录。
- GIF 在帧差异计算前统一尺寸并转换为浮点数组，修复不同帧尺寸和整数溢出问题。

无需搬迁数据或清空数据库。补丁随镜像构建生效，单纯重启旧镜像不会应用修复。
更新上游提交时必须重新验证补丁；补丁不匹配会直接使构建失败，不会静默跳过。

回归验证使用上游锁定依赖环境，`MAIBOT_SOURCE` 指向固定提交的上游源码根目录。
测试仅操作临时目录、真实软链接、生成的 GIF 和临时 SQLite 数据库，不连接模型 API：

```bash
# 已应用补丁的源码跳过下一行，不要重复应用。
git -C "$MAIBOT_SOURCE" apply /path/to/maibot/deploy/maibot-image-compat.patch
MAIBOT_SOURCE="$MAIBOT_SOURCE" "$MAIBOT_SOURCE/.venv/bin/python" \
  -m unittest discover -s maibot/tests -v
```

未设置 `MAIBOT_SOURCE` 时跳过图片兼容回归，原有备份测试仍可独立运行。

更新主程序请修改 Dockerfile 固定提交并重新部署。
上游：https://github.com/Mai-with-u/MaiBot · https://github.com/MoYangking/r2sync
