Amadeus?
Amaidesu!
聊天机器人麦麦的 VTubeStudio 适配器。 其聊天核心为 麦麦Bot,一款专注于群组聊天的赛博网友 QQ BOT。
架构状态:✅ 核心架构重构已完成,采用 3域架构 + Provider 系统
如需了解重构前后的架构差异,可查看 重构文档。
为什么叫"域"(Domain)而不是"层"(Layer)?
传统"层"(Layer)代表不同的抽象层级,如表现层→业务层→数据层,每层都有不同的抽象级别。而"域"(Domain)强调的是平等的业务边界划分:
- 层(Layer):有高低之分,上层调用下层,下层不知道上层存在
- 域(Domain):平等边界,各自包含完整的抽象层次(自己的数据模型、Provider、处理逻辑)
每个域都有自己的:
- 数据模型:Input → NormalizedMessage → Intent → RenderParameters
- 核心抽象:InputProvider / DecisionProvider / OutputProvider
- 处理逻辑:数据采集 / 决策生成 / 渲染输出
域之间通过 EventBus 进行松耦合通信,而非直接的层级调用。这种划分允许各域独立演进,例如可以替换决策引擎(从 MaiCore 换成 LLM)而不影响输入输出。
flowchart LR
subgraph Input["Input Domain"]
IP[InputProvider] --> |NormalizedMessage| PIP[Pipelines]
end
EB(EventBus)
subgraph Decision["Decision Domain"]
DP[DecisionProvider] --> |Intent| OPIP[OutputPipelines]
end
subgraph Output["Output Domain"]
OPM[OutputProviderManager] --> OP[OutputProviders]
end
Input --> |data.message| EB
EB --> |data.message| Decision
Decision --> |decision.intent| EB
EB --> |decision.intent| Output
数据流:
- Input Domain:外部数据(弹幕、语音、控制台)→ NormalizedMessage → Pipelines 过滤
- Decision Domain:NormalizedMessage → Intent(MaiCore / LLM / 规则引擎)
- Output Domain:Intent → 渲染输出(TTS、字幕、VTS、表情等)
| 组件 | 说明 |
|---|---|
| EventBus | 事件总线,跨域通信 |
| Provider | 功能封装:InputProvider / DecisionProvider / OutputProvider |
| ProviderManager | Provider 生命周期管理 |
| Pipeline | 消息预处理(限流、过滤等) |
| LLMManager | LLM 调用统一接口 |
| AudioStreamChannel | 音频流专用通道(TTS → VTS) |
- InputProvider (8个):控制台、弹幕、语音识别等
- DecisionProvider (4个):MaiCore、LLM、Maicraft、回放
- OutputProvider (12个):TTS、字幕、VTS、OBS等
详见 3域架构总览
# 1. 安装 uv
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# 2. 克隆仓库
git clone https://github.com/ChangingSelf/Amaidesu.git
cd Amaidesu
# 3. 同步依赖
uv sync
# 4. 首次运行(自动生成配置)
uv run python main.py
# 5. 编辑 config.toml 填入必要配置
# 6. 再次运行
uv run python main.py# 调试模式
uv run python main.py --debug
# 过滤日志(只显示指定模块)
uv run python main.py --filter EdgeTTSProvider SubtitleProvider项目内置 Web 管理界面,有两种访问方式:
| 端口 | 模式 | 说明 |
|---|---|---|
| 60214 | 生产模式 | 后端直接服务打包后的前端,适合最终测试 |
| 5173 | 开发模式 | Vite 开发服务器,支持热更新,适合前端开发 |
# 方式一:生产模式(后端自动启动)
# 访问 http://127.0.0.1:60214
uv run python main.py
# 方式二:开发模式(需要两个终端)
# 终端1:启动后端
uv run python main.py
# 终端2:启动前端开发服务器
cd dashboard
npm install # 首次需要
npm run dev # 访问 http://localhost:5173开发模式说明:
- Vite 会自动代理
/api和/ws请求到后端 - 修改 Vue 文件后浏览器自动热更新(无需刷新)
详见 快速开始
- 主分支:
main - 提交规范:使用 Conventional Commits(feat/fix/docs/refactor 等)
