mai-bridge:将麦麦塞到koishi里(¦3[▓▓] 使用koishi时也可以获得maimai的回复风格和能力

koishi-plugin-mai-bridge

mai-bridge 是一个 Koishi 插件,他让 maibot 作为 Docker 托管的消息回复后端运行。并桥接koishi和maibot,支持启动maibot的webui

插件本身不重写 maibot 的对话链、记忆系统和插件机制。它负责在 Koishi 侧启动 maibot 容器、桥接消息收发,并把运行状态和必要日志接入 Koishi 控制台。

适合已经在用 Koishi,同时希望复用 maibot 对话能力的场景。

功能

  • 自动拉取 Mai-with-u/MaiBot 源码。
  • 自动应用 Koishi 适配补丁。
  • 自动构建并启动 maimai-ko Docker 容器。
  • 将 Koishi 收到的私聊、群聊消息转发给 maibot。
  • 将 maibot 回复发回原 Koishi 会话。
  • 支持 maibot WebUI 独立端口访问。
  • 支持在 Koishi 控制台查看 mai-bridge 状态、WebUI 入口和 maibot 日志。
  • 支持重连、重启、手动准备和 Docker 容器控制命令。

效果演示

安装

在 Koishi 插件市场搜索:

mai-bridge

插件包名:

koishi-plugin-mai-bridge

也可以在 Koishi 项目目录中手动安装:

npm install koishi-plugin-mai-bridge

本插件依赖 Koishi 的 HTTP 服务,请同时启用:

@koishijs/plugin-http

运行要求

默认运行模式是 Docker。

Koishi 所在环境需要满足:

  • 可以执行 docker 命令。
  • 可以访问 Docker socket:/var/run/docker.sock
  • 可以执行 gitpatch
  • Koishi 容器需要能通过 Docker 网络访问 maimai-ko 容器。

如果 Koishi 本身也运行在 Docker 内,需要把 Docker socket 挂载进 Koishi 容器,并确保容器内有 dockergitpatch 命令。

基础配置

插件市场安装后,进入插件配置页。

常用配置示例:

processMode: docker
autoPrepareMaibot: true
acceptMaibotAgreements: true
dockerContainerName: maimai-ko
dockerImageName: maimai-ko:latest
apiHost: maimai-ko
apiPort: 8090
webuiEnabled: true
webuiHost: 0.0.0.0
webuiPort: 8002
messageMode: coexist

说明:

  • processMode 保持 docker,插件会自动准备 MaiBot 并启动容器。
  • autoPrepareMaibot 开启后,首次启动会 clone MaiBot、应用补丁、构建镜像。
  • acceptMaibotAgreements 默认关闭。确认接受 MaiBot 的 EULA 和隐私条款后再开启。
  • apiKey 可以留空。插件会生成并复用运行期密钥。
  • dockerNetwork 需要按实际 Koishi Docker 网络填写。
  • webuiPublicUrl 可以填写反代或宿主机映射后的 WebUI 地址,用于 Koishi 控制台显示入口。

消息模式

messageMode: coexist

可选值:

  • coexist:消息转发给 maibot 后,继续交给其他 Koishi 插件处理。
  • exclusive:消息转发给 maibot 后,不再交给后续插件。
  • command:只有命中指定前缀时才转发。

常用命令

mai.ko.status
mai.ko.prepare
mai.ko.docker.start
mai.ko.docker.stop
mai.ko.docker.restart
mai.ko.reconnect

首次启动时会做什么

启用插件后,默认流程是:

clone MaiBot 源码
应用 bundled patch
构建 maimai-ko:latest 镜像
启动 maimai-ko 容器
连接 maibot API WebSocket
开始桥接 Koishi 消息

如果补丁因为 MaiBot 上游更新而无法应用,插件会进入 blocked 状态,并在 Koishi 日志和状态页给出原因。并在issue页反馈

注意事项

  • 插件只桥接和托管 maibot,不提供模型服务
  • maibot 的模型、人格、记忆、插件等配置仍按 maibot 自身方式处理。
  • 默认 messageMode: coexist,消息转发给 maibot 后仍会继续交给其他 Koishi 插件处理,不会接管或阻断其他插件运行
  • WebUI 不走 Koishi 反代,默认通过独立端口访问
  • Docker 模式下建议固定容器名为 maimai-ko
  • 如果 Koishi 控制台无法连接 WebUI,请检查端口映射、反代地址和 webuiPublicUrl

链接

2 个赞

现在修复了部分bug:Fix:修复 Docker 网络与 WebUI 路径 · Jelly10086/mai-bridge@ca252a8 · GitHub
若遇到docker容器堵塞无法启动需在插件配置页确认同意MaiBot的 EULA/Privacy

2 个赞

添加了自动化CI构建,当远端有提交时将会构建并发布npm

1 个赞

为。。。为什么不直接手动建maimai项目,通过其他协议转接到koishi里…

因为其他协议转的话maibot部分功能有问题:thinking:,还有就是我对maibot会做些修改

1 个赞

具体是什么协议的哪些功能?

这样maibot那边官方会同步更改吗

我是用patch文件给maibot源码打上koishi适配补丁:thinking:具体可以看我上面介绍

1 个赞

协议单纯转发没法对maibot做修改,这插件主要为了我自己修改maimai功能而写的

1 个赞

使用此插件的用户需更新插件到0.1.11版本,这包含了重要修复


Commit:Commits · Jelly10086/mai-bridge · GitHub

1 个赞

新的修复
修复回复机器人机器人无法读取回复内容的问题
修复表情包maimai无法识别而不添加的问题
具体commit:

可直接在依赖管理内更新

1 个赞

修复了比较重要的bug:
当在私聊内触发maibot回复同时在其他群内同时触发不会再将消息错误发送

优化:
npm包体积从83KB—>51KB↓

可直接在插件市场更新到0.1.18

1 个赞