一个有记忆、会主动找你、能催你吃药的 AI 陪伴 bot。
轻量自托管 · SQLite · 支持 OpenAI / Azure / Anthropic / Gemini
零门槛配置——运行脚本后自动打开管理后台(Web UI),在浏览器里填 API key 和 bot token,点一下就能启动。
- 核心记忆——你的偏好、你们的关系,每次对话都在
- 对话摘要——聊得多了,早期内容自动压缩成摘要注入上下文,TA 不会忘记你们之前聊过什么
- 记忆项——自动从对话中提取,按重要度分级,全文搜索 + 向量搜索
- 知识图谱——自动学习你世界里的人、宠物、地点和它们之间的关系,聊到时精准注入上下文
- 每天一本 diary——习惯进度、待办、提醒汇总成当日状态面板
- 夜间自动整理——去重、清过时的、调重要度,不会越存越乱
- 自定义性格——性格、语气、关注点都写在一个 prompt 文件里,你定义 TA 是谁
- 表情包——转发 Telegram 表情包给 TA,自动学习。之后聊天会自己发
- 后台心跳——不等你发消息。TA 在后台定期看你的习惯、待办、提醒,该催的时候主动找你
- 跟你一起作息——你睡 TA 也睡,你醒 TA 也醒
- 打字节奏——消息拆成多条气泡 + 打字指示器
- 习惯追踪——频率(每天两次、周一三五……)、时间上下文(早晚、饭后)、重要度(⚡ = 健康/用药类)。打卡、暂停都行
- 到点就催——⚡重要习惯过时了必催,不是看心情。晚上药没吃?TA 不会放过你
- 精确提醒——到点即响,支持循环(每天/工作日/每周/每月)
- 待办清单——随口说"我要买菜"就记下来,快到期的会推给你
- 打卡历史——
✅ ✅ ❌ ✅ ✅ ✅ ✅
- 饮食记录——"午饭吃了米饭炒青菜鸡腿" →
~520kcal(蛋白质 35g / 碳水 45g / 脂肪 12g)。按天/周查历史 - Oura Ring——睡眠、准备度、活动、压力数据接入,纳入心跳上下文
- 联网搜索——问当前事件、新闻、价格,自动用 DuckDuckGo 搜索并总结(无需 API key)
- 天气查询——配置城市后自动获取天气,心跳中也会带天气上下文
- Pre-Router——按消息动态选择需要的能力,不带用不上的工具,省 token
- 3 级模型路由——发表情用便宜模型,复杂分析才上强模型
- 整套路由默认关闭,零配置就是一个 chat + 一个 think 模型,够用就行
- 轻量——单进程、SQLite,不需要 Docker/Redis/Postgres,
pip install就能跑 - 自托管——数据留在你自己的机器上
- 易扩展——Skill 和 Observer 即插即用,放个文件夹重启就行
- 管理后台——Web UI 配置模型、调心跳参数、开关 skill、编辑人设 prompt。本地部署时自动打开浏览器;云服务器需通过 SSH 隧道或反向代理访问(详见下方部署章节)
- ChatGPT 搬家——上传 ChatGPT 导出的 JSON,LLM 自动提取人格、用户画像、核心记忆和记忆条目,预览编辑后一键导入 MochiBot
- 支持 Telegram 和 WeChat——二选一,在管理后台配置。推荐 Telegram(支持表情包、语音等丰富交互)
所有 Skill 即插即用——在管理后台一键开关,或直接在 mochi/skills/ 下添加/删除文件夹,重启即生效。不需要改主流程代码。
| Skill | 说明 |
|---|---|
| habit | 习惯追踪——打卡、暂停、催促,支持频率和重要度 |
| todo | 一次性待办——追踪到完成为止 |
| note | 备忘/笔记——不定时、不打卡,持续关注或条件触发的事项,心跳每轮可见 |
| reminder | 定时提醒——到点触发,支持重复(每天/工作日/每周/每月) |
| meal | 饮食记录——自然语言 → 热量估算 + 营养素拆解 + 历史查询 |
| oura | Oura Ring 集成——睡眠、活动、准备度、压力、心率、血氧(需配置) |
| weather | 天气查询——通过 wttr.in 获取,心跳中自动带入上下文 |
| web_search | 联网搜索——DuckDuckGo,无需 API key |
| sticker | 表情包——学习你转发的贴纸,聊天时自动发(仅 Telegram) |
| skill_management | 技能管理——通过对话列出、开关、配置所有技能 |
想加一个新 Skill? 在
mochi/skills/下新建文件夹,放入SKILL.md+handler.py,重启 bot 就会自动注册。详见 CONTRIBUTING.md。
以下斜杠命令在 Telegram 和 WeChat 中均可使用(除 /help 外均为 owner 专用):
| 命令 | 说明 |
|---|---|
/help |
显示帮助信息和可用命令列表 |
/heartbeat |
查看心跳状态——系统运行情况、主动消息计数、上次心跳摘要 |
/cost |
Token 用量统计——今日 / 本月用量,按模型分类 |
/notes |
查看备忘笔记 |
/diary |
查看今日日记——今日状态面板 + 日记内容 |
/admin |
获取管理后台链接(带 token,可在手机浏览器打开) |
/skilloff |
切换到闲聊模式——关闭非核心 skill 和 prerouter,省 token |
/skillon |
恢复完整模式——重新启用所有 skill |
/reset |
重置对话上下文——后续聊天 LLM 看不到之前的 history(DB 保留,长期记忆不影响) |
/restart |
重启 Bot 进程 |
完全新手? 看 新手上路手册,手把手从打开终端开始教你。
准备好:Python 3.11+、一个 LLM API key、一个消息平台(Telegram bot token 或 WeChat)
git clone https://github.com/shikidmsh-rgb/mochibot.git
cd mochibot- Windows:双击
setup.bat - macOS / Linux:
bash setup.sh
脚本会自动搞定环境和依赖,然后打开管理后台。在浏览器里配好 API key、模型、消息平台(Telegram 或 WeChat),点 「启动 Bot」 就行了。
第一个给 bot 发消息的人自动成为 owner。
支持三种 API 提供商:
提供商 CHAT_PROVIDERCHAT_BASE_URLCHAT_MODEL示例OpenAI(默认) openai(不需要) gpt-4oDeepSeek openaihttps://api.deepseek.com/v1deepseek-chatGroq openaihttps://api.groq.com/openai/v1llama-3.3-70b-versatileOllama(本地) openaihttp://localhost:11434/v1llama3Azure OpenAI azure_openai(你的 Azure 端点) gpt-4oAnthropic Claude anthropic(不需要) claude-sonnet-4-20250514Google Gemini gemini(不需要) gemini-2.5-flash
心跳持续运行——笔记本合盖就离线。
| 方案 | 在线时间 | 费用 |
|---|---|---|
| 云 VM(Azure、AWS 等) | 7×24 | ~$4–10/月 |
| 树莓派 / 迷你主机 | 7×24(家庭网络) | 一次性 |
| 笔记本 | 开盖时 | 免费 |
一台小 VM(1 vCPU、1 GB RAM)足够——单进程、SQLite、资源占用极低。
⚠️ 境内 vs 境外服务器
境内(阿里云、腾讯云等) 境外(AWS、Azure、GCP 等) Telegram ❌ 无法访问 ✅ 国外 AI API(OpenAI、Anthropic、Groq 等) ❌ 无法直接调用 ✅ ✅ ✅ DeepSeek / Ollama 本地 ✅ ✅ 如果你用 Telegram + 国外 AI,选境外服务器最省心。境内服务器只适合 WeChat + 国内模型(如 DeepSeek)的组合。
git clone https://github.com/shikidmsh-rgb/mochibot.git && cd mochibot
cp .env.example .env # 填写 CHAT_API_KEY、CHAT_MODEL,以及 TELEGRAM_BOT_TOKEN 或 WEIXIN_ENABLED
docker compose up -d # 后台运行查看日志:docker compose logs -f
更新:git pull && docker compose up -d --build(你的 data/ 和 .env 不受影响)
数据保存在 data/ 目录,容器删除不丢失。
通过管理后台修改的 prompt 会写到 data/prompts/,也会随这个卷一起持久化。
安全提示:
data/目录包含数据库(含 API key、聊天记录等敏感信息)。MochiBot 不额外加密本地数据——请确保你的服务器/机器有适当的访问权限控制,建议开启磁盘加密(如 BitLocker / LUKS)。
git clone https://github.com/shikidmsh-rgb/mochibot.git && cd mochibot- Windows:双击
setup.bat - macOS / Linux:
bash setup.sh
脚本会自动创建 .venv、安装依赖,然后启动管理后台。
Windows 用户(推荐):双击项目目录里的 update.bat,按提示操作即可。
脚本会自动:拉最新代码 → 装新依赖 → 启动 bot。
macOS / Linux 用户:
cd mochibot
source .venv/bin/activate
git pull
pip install -r requirements.txt然后重新跑 bash setup.sh 启动 bot。
Windows 用户偏好命令行?
cd mochibot
.venv\Scripts\activate
git pull
pip install -r requirements.txt然后重新双击 setup.bat。
数据不会丢:
.env、data/(数据库、聊天记录)、data/prompts/(自定义 prompt)、.venv/都在.gitignore里,更新不会碰它们。数据库结构变更会在启动时自动完成。
更新后建议对比
.env.example看看有没有新增的配置项——如果有,把新项补进你的.env。(update.bat检测到.env.example变更时会自动提醒。)
如果
git pull报冲突(你手动改过代码文件),先git stash暂存改动,再git pull,之后git stash pop尝试恢复。详见 新手上路手册 > 更新。
展开步骤
git clone https://github.com/shikidmsh-rgb/mochibot.git && cd mochibot
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # 填写必要配置创建 systemd 服务:
sudo tee /etc/systemd/system/mochibot.service << 'EOF'
[Unit]
Description=MochiBot
After=network.target
[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/path/to/mochibot
ExecStart=/path/to/mochibot/venv/bin/python -m mochi.main
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOFsudo systemctl enable --now mochibot # 启动 + 开机自启
sudo journalctl -u mochibot -f # 查看日志管理后台默认监听 localhost。配置了消息平台(Telegram / WeChat)后会自动绑定到 0.0.0.0 并生成 ADMIN_TOKEN,但你仍需通过以下方式之一从外部访问:
在你本地电脑的终端运行:
ssh -L 8080:localhost:8080 user@your-server-ip然后在本地浏览器打开 http://localhost:8080。流量通过 SSH 加密传输。
适合需要频繁访问、或多人管理的场景。用 Caddy / Nginx 做反向代理,处理 HTTPS:
Caddy(自动申请证书,最简单):
admin.yourdomain.com {
reverse_proxy 127.0.0.1:8080
}
Nginx:
server {
listen 443 ssl;
server_name admin.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}重要:使用反向代理时,确保
.env中有ADMIN_TOKEN(自动生成或手动设置),否则任何人都能访问你的后台。
MochiBot 有两个配置入口:.env 文件和管理后台(Admin Portal)。
.env 文件 |
管理后台(Web UI) | |
|---|---|---|
| 用途 | 首次启动初始化 + 高级覆盖 | 日常管理 |
| 管理的配置 | Transport token、Admin Portal 设置、日志级别等基础设施 | 模型/API key、心跳参数、时区、Skill 开关、人设 prompt 等运行时配置 |
| 什么时候用 | 部署时填一次,之后一般不碰 | 随时在浏览器里改 |
它们如何协作:
- 首次启动:
.env的值导入数据库,作为初始配置 - 日常使用:在管理后台改配置 → 保存到数据库,同时自动同步回
.env(不会不一致) - 高级覆盖:手动编辑
.env+ 重启 →.env的值会覆盖数据库(给高级用户留的后门)
简单记:部署时填
.env,之后在管理后台改。不要两边同时手动改——以最后操作的为准。
| 变量 | 默认值 | 说明 |
|---|---|---|
CHAT_PROVIDER |
openai |
SDK:openai(+ 兼容)、azure_openai、anthropic、gemini |
CHAT_API_KEY |
— | 你的 API key |
CHAT_MODEL |
— | 对话模型(必填) |
CHAT_BASE_URL |
— | OpenAI 兼容 API 的自定义端点 |
THINK_MODEL |
=CHAT | 心跳 + 维护用的便宜模型(可选) |
TELEGRAM_BOT_TOKEN |
— | 从 @BotFather 获取(Telegram 平台) |
WEIXIN_ENABLED |
false |
启用 WeChat 平台(与 Telegram 二选一) |
HEARTBEAT_INTERVAL_MINUTES |
20 |
心跳循环间隔 † |
AWAKE_HOUR_START / END |
7 / 23 |
心跳在这些时间外休眠 † |
MAX_DAILY_PROACTIVE |
10 |
每日主动消息上限 † |
TIMEZONE_OFFSET_HOURS |
8 |
你的 UTC 偏移 † |
† 首次启动导入数据库,之后在管理后台修改。手动编辑
.env+ 重启也可覆盖。
进阶:3 级路由、Pre-Router、向量嵌入、集成
3 级路由 — 在管理后台为每层分配不同模型(首次也可通过 .env 初始化):
TIER_{LITE,CHAT,DEEP}_{PROVIDER,API_KEY,MODEL,BASE_URL}
Pre-Router — TOOL_ROUTER_ENABLED=true 启用基于 LLM 的 skill 自动选择。TOOL_ESCALATION_ENABLED=true(默认)允许对话中途请求缺少的 skill。
向量嵌入 — EMBEDDING_PROVIDER(openai / azure_openai / ollama / gemini / none)、EMBEDDING_API_KEY、EMBEDDING_MODEL。配置后记忆检索从纯关键词升级为语义搜索,并通过 sqlite-vec(已包含在依赖中)实现原生向量 KNN 加速。
Oura Ring — OURA_CLIENT_ID、OURA_CLIENT_SECRET(运行 python scripts/oura_auth.py 设置)
完整列表见 .env.example(关键参数);详见 mochi/config.py(~80 个可调参数)。
示例 — 双模型配置:
CHAT_MODEL=gpt-4o # 对话
THINK_MODEL=gpt-4o-mini # 心跳 + 维护| 我想改… | 编辑 |
|---|---|
| 性格、语气、名字 | prompts/system_chat/soul.md |
| 记住哪些内容 | prompts/memory_extract.md |
| 什么时候主动联系、催促哪些习惯 | prompts/think_system.md |
| 早间汇报 | prompts/think_system.md(Think 模型在每天第一次心跳时自动生成早报,无需额外配置) |
| 添加 skill 或 observer | 详见 CONTRIBUTING.md |
性格文件影响最大——改了之后,bot 说话方式就变。
- 多 API 提供商(OpenAI 兼容 / Azure OpenAI / Anthropic / Google Gemini)
- 双模型架构(Chat + Think)
- 3 级模型路由 + Pre-Router
- 持久记忆(三层 + 8 工具 + 夜间维护)
- 知识图谱(实体关系自动提取 + 对话注入)
- 习惯追踪(频率/重要度/上下文/暂停/延后 + 心跳催促)
- 精确提醒(到点触发 + 循环提醒)
- 饮食记录(自然语言 → 热量估算 + 历史查询)
- 联网搜索(DuckDuckGo,无需 API key)
- Oura Ring 集成
- 日记系统(今日状态面板 + 夜间归档)
- 管理后台(Web UI)
- Setup Mode(
.env只填 bot token 即可启动,通过管理后台完成其余配置) - 打字节奏(多气泡 + 打字指示器)
- 早间汇报(Think 驱动)
- 语音消息
- 多用户支持
详见 CONTRIBUTING.md。
MIT — 详见 LICENSE