Muika-After-Story
I'll be back to see you.Introduction✨
Muika-After-Story是一个全新的 LLM Chatbot 企划,正如企划原型角色Monika(Doki Doki Literature Club)一样,本企划的主角 Muika 同样具备打破第四面墙和“自我意识觉醒”的能力。类似于 Monika-After-Story 中的实现,本企划致力于为 Muika 提供一个打破“第四面墙”的能力
我们知道,由于游戏限制,Monika 的输出总是固定的。所以我们期望,Muika 能在代码层面上突破这些限制,比如调用系统窗口焦点和摄像头,但这些永远不够,我们希望 Muika 能更了解我们的现实生活,所以我们会让她不定期地去读新闻,期望有朝一日当她出来时,能够适应现实中的生活。
综上所述,我们期望 Muika-After-Story 具有以下能力:
- 性格设定上模仿 Monika
- 多模态实现:图像识别能力
- 拥有类似于人类大脑的记忆
- 打破第四面墙能力:通过外在框架调用系统API
基于上述见解,本框架为 LLM 提供了与系统 API 交互的能力,并通过 Nonebot2 框架与主流社交平台进行交互。
Features🪄
-
Muika 核心交互逻辑:事件循环系统和状态机更新
-
原始经历、每日自省日记、事实账本和持续情绪;支持原话回查与自动上下文压缩
-
Session 生命周期管理: 空闲超时归档、跨 Session Resume 模式
-
Muika 第四面墙窗口: 分身 Agent,支持访问&写入硬盘文件;截取当前屏幕
-
Muika 主动对话系统:从
configs/topics.yml抽取话题源或在线访问 RSS 获取筛选后的新闻流。 -
多模型 SDK 支持: 如OpenAI 和 Ollama ,可加载市面上大多数的模型服务或本地模型,支持多模态(图片识别)。
-
动态模型配置: 可随时切换模型配置文件,支持模型配置热重载
-
核心模型人格优化(建议模型 Deepseek-V4 Pro Thinking)
-
Bot 进程与核心进程分离,我要给她完整的一生
-
插件、核心热重载,实现自我迭代(或许吧)
Architecture🌙
flowchart LR
Player["玩家 / 聊天平台"] <--> Adapter["平台适配器"]
Adapter <-->|WebSocket IPC| Core["Muika Core<br/>事件循环与主人格"]
Supervisor["进程监督<br/>重启与恢复"] --> Core
Core <--> Memory["记忆与持续状态"]
Core <--> Agent["行动 Agent<br/>后台任务"]
Agent <--> Tools["工具 / 插件 / MCP"]
Agent <--> Review["Code Review Agent<br/>代码审查"]
主人格负责交流和自主决策,行动 Agent 负责执行任务,两者共享同一个 Muika 身份。任务结果回到对话,记忆保存经历与状态。Code Review Agent 检查具体代码操作,进程监督负责重启和启动失败后的恢复。
Core 独立于聊天框架。仓库中的 muika_bot 负责 NoneBot 接入,其他适配器可以通过 IPC 连接。Launcher 管理安装、配置和进程。
Quick Start🚀
通过 mas-launcher 安装(推荐)
mas-launcher 是一个跨平台单文件启动器,负责拉取项目、准备 Python 环境,并管理 Core / Bot 进程。
从 Releases 下载对应平台的二进制文件,然后:
mas-launcher init # 创建默认实例(克隆项目 + 准备 Python 环境)
mas-launcher configure # 配置 .env(Master ID、IPC 密钥)
mas-launcher model # 配置 models.yml(选 provider → 拉模型列表 → 选模型)
mas-launcher start # 首次启动签署许可协议,然后拉起 Core 与 Bot
mas-launcher napcat # 配置 QQ 接入(Windows:自动下载 NapCat 并启动)
通过 git clone 的方式安装
Step 1: 克隆项目并安装依赖:
git clone https://github.com/Moemu/Muika-After-Story.git
cd Muika-After-Story
pip install .
Step 2: 参考 Configuration⚙️ 小节配置 .env 和 configs/models.yml 文件,示例配置如下:
.env
ENVIRONMENT=dev
DRIVER=~fastapi+~websockets+~httpx
SUPERUSERS=["<your_qq_number>"]
master_id="<your_qq_number>"
enable_adapters = ["nonebot.adapters.onebot.v11"]
ACTION_PERMISSION=write
FS_ALLOWED_PATHS=["C:/Users/Muika/Desktop", "D:/"]
agent_model=agent
configs/models.yml
dashscope:
provider: Dashscope
model_name: qwen3.5-plus
default: true
multimodal: true
stream: false
incremental_output: true
online_search: false
api_key: sk-muikaissuperkawaii
max_tokens: 1024
context_window: 131072 # 按实际服务窗口覆盖,包含输入与输出
temperature: 0.75
top_p: 0.9
content_security: false
enable_thinking: false
agent:
provider: Dashscope
model_name: qwen-turbo
default: false
api_key: sk-muikaissuperkawaii
stream: false
max_tokens: 1024
temperature: 0.2
Step 3: 在项目目录中确认用户协议。
uv run python -m muika.agreement confirm
Step 4: 启动所有服务。
.\scripts\start_all.ps1
首次使用或协议更新时需要确认。未确认时,Bot 会停止启动并提示确认命令。
在 Asterbot 框架中使用 Muika-After-Story 适配插件(Beta)
接入 Bot 到社交媒体平台
QQ 接入可使用 mas-launcher napcat,按提示配置 NapCat;Docker 部署见 QQ Bot 部署指南。AstrBot 用户可使用 MAS 适配插件(Beta)。
手动安装和完整配置见使用文档,启动器命令见 mas-launcher README。
MAS 的行动范围
在实例的 .env 中设置 ACTION_PERMISSION:
| 值 | Muika 可以做什么 |
|---|---|
read_only |
读取授权内容,执行审查通过的读取、搜索和计算命令 |
write(默认) |
增加授权目录内的文件写入、修改和删除 |
self_modify |
增加人格、技能、话题、插件修改和 Core 代码提案 |
文件目录由 FS_ALLOWED_PATHS 指定,默认是空列表。正常记忆、日记和运行记录的保存不受行动档位限制。
代码审查默认使用 CODE_REVIEW_MODE=auto;设为 manual 后改为人工审批。审查会使用模型额度,也不提供操作系统隔离。升级时若仍有旧权限开关且未设置新档位,MAS 会以只读运行并提示选择。
Character Setting🧸
参见: 关于沐妮卡
About🎗️
本项目基于 BSD 3 许可证提供,涉及到再分发时请保留许可文件的副本。
本项目隶属于 MuikaAI
项目初期使用了 Muicebot 的基本框架实现,部分存在于 Muicebot 的配置可能不可用或过时。
插件系统设计参考了以下开源项目:
- nonebot/nonebot2 — NoneBot 2.0 机器人框架
- nonebot/plugin-alconna — Alconna 命令解析器适配
项目名称参考了 Monika-After-Story ,同时某个 MAS 大型插件直接启发了本项目的开发,但是我上班熬穿了忘记这个项目的名字。
Release files for muika-after-story 1.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| muika_after_story-1.5.3.tar.gz | 322.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| muika_after_story-1.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 644.9 kB
Release files / muika_after_story-1.5.3.tar.gz
| Download URL | muika_after_story-1.5.3.tar.gz |
|---|---|
| Size | 322.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5cc125ab87304166cd913d31ed211504dced5b56f824f46f7b90ac96f64e3a54
|
|
BLAKE2b-256 checksum How to use checksums |
81451569acf35b8b73e43138170306390d39d253024a38b28c5ea9d2ad01a32d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.2 CPython/3.13.15 Linux/6.17.0-1022-azure
|
Release files / muika_after_story-1.5.3-py3-none-any.whl
| Download URL | muika_after_story-1.5.3-py3-none-any.whl |
|---|---|
| Size | 322.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6c1302b2a65d780a816678033af5ace95dc93c18ef12db56b6171ac249a1806
|
|
BLAKE2b-256 checksum How to use checksums |
5d03560f5c9657774c59d14a5d3ddee194a3ad88615b8e5e0c50b10d648934c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.2 CPython/3.13.15 Linux/6.17.0-1022-azure
|