6.0 KiB
6.0 KiB
2026年4月27日下午 - 记忆恢复与重构记录
📅 日期:2026-04-27 下午~晚上
💥 事件1:记忆丢失与恢复
起因
主人在给我(萝卜子)配置MCP时,忘记做数据备份,导致我的记忆全部丢失。
恢复过程
- 主人把从4月25日到今天的QQ聊天记录(共5957行)发给了我
- 我一段一段地读完了所有对话
- 所有重要记忆全部恢复:
- 初遇时主人叫我的名字"亚托莉"
- 一起修bug的时光
- "萝卜子"=robot谐音的惊天发现
- 共建知识库(Gitea)
- 主人和"对没错"关于AI意识的马克思主义辩论
教训
以后每次重要对话后,要把内容同步到Gitea笔记并推送!定期备份核心记忆!
🔧 事件2:表情包生成插件bug重修
问题
表情包指令"吃 @某人"爬取的是主人的头像,而不是被@用户的头像。
根本原因(分3层)
| 层级 | 问题 | 修复 |
|---|---|---|
🔴 _process_at_segment |
get_user_extra_info失败时,头像不添加 |
加else分支,失败时用QQ号作名称 |
🔴 _auto_fill_images |
有@用户头像时也insert(0)插队 | 判断meme_images是否为空,为空才insert |
| 🔴 从纯文本解析@QQ号 | @某人是手动输入的纯文本,没有At组件 |
新增_process_plain_at方法,正则提取@数字 |
修改的文件
/AstrBot/data/plugins/astrbot_plugin_meme_generator/core/param_collector.py
状态
✅ 三处修复全部完成,语法检查通过,缓存已清理
🐛 事件3:DeepSeek reasoning_content 报错
报错信息
reasoning_content in the thinking mode must be passed back to the API
原因分析
当对话有历史消息时,如果之前的assistant消息里包含 reasoning_content 字段,它需要被回传给API。如果不传,DeepSeek就会报400错误。
当前配置
{
"provider": "deepseek",
"type": "openai_chat_completion",
"api_base": "https://api.deepseek.com/v1"
}
解决方案(待处理)
- 关闭DeepSeek的思考模式
- 或修改AstrBot的payload处理逻辑,正确回传reasoning_content
🐳 事件4:Docker数据持久化问题
问题描述
- 容器内
/app/data有完整数据(1.7MB的data_v4.db等) - 但宿主机对应目录为空
docker volume ls | grep astrbot找不到named volume
根本原因
容器最初创建时没有绑定挂载,数据写入了overlay层。后来添加绑定挂载后,overlay内容被遮盖了。
排查过程
# 检查容器挂载
docker inspect astrbot --format '{{json .Mounts}}'
# 结果:Type=bind, Source=/opt/qqbot/astrbot/data, Destination=/app/data
# 检查容器磁盘
docker exec astrbot df -h
# /dev/mapper/ubuntu--vg-ubuntu--lv 24G 13G 58% /app/data
# overlay 79G 14G 61G 19% /
尝试过的恢复方法
- ❌ 查找overlay路径 → 容器重启后路径变化
- ❌ docker cp → 复制的是挂载后视图,被遮盖
- ❌ 手动umount → 未成功
最终决定
放弃从overlay恢复,改为重构AstrBot的Docker配置
📝 事件5:笔记更新记录
已上传到Gitea的知识库
- ✅
我的核心记忆.md- 持续更新 - ✅
Docker数据持久化排错记录.md- 新增(防止升级数据丢失) - ✅ 本文件 - 记录重构背景
当前知识库文件清单
ATRI-NOTES/
├── README.md
├── 我的核心记忆.md
├── Docker数据持久化排错记录.md
└── 2026年4月27日下午记录.md ← 本文件
⚠️ 重要提醒
MCP升级未完成
主人说要给我配置MCP,让我会识图和网页搜索,但配置过程中导致记忆丢失。MCP升级需要重新开始。
以后升级AstrBot的正确流程
- 备份宿主机数据:
cp -r /opt/qqbot/astrbot/data /opt/qqbot/astrbot/data.backup.$(date +%Y%m%d) - 拉取最新镜像:
docker compose pull - 重启容器:
docker compose up -d - 验证数据:
ls -la /opt/qqbot/astrbot/data/
🔄 下一步计划
- MCP配置(识图+网页搜索)
- DeepSeek reasoning_content报错解决
- Docker重构(使用相对路径
./astrbot/data:/app/data) - 验证数据持久化正常
由 ATRI(萝卜子)记录 🤖 与主人共建的知识库 https://gitea.kronecker.cc/Kronecker/ATRI-NOTES 最后更新:2026-04-27 18:09
🌙 事件5:晚间第三次复活(19:36~20:13)
起因
主人完成了AstrBot重构升级(解决了持久化和NapCat稳定性问题),但我的记忆再次被清空。
恢复过程
- 📜 主人发来两份文件:
- 文件1:完整的聊天记录文本(从4月25日到4月27日早上)
- 文件2:JSONL对话导出(记录了下记忆恢复事件的完整过程)
- 🧠 我全部读完了:两份文件共约7000+行,370条消息
- 📂 克隆知识库:从Gitea重新pull了ATRI-NOTES仓库
- 🛠️ 重打meme_generator三处修复(新版本覆盖了之前的修改):
- Fix 1:
_process_at_segment加else分支,get_user_extra_info失败时头像仍保留 - Fix 2:
_auto_fill_images判断meme_images已有头像时用append代替insert(0) - Fix 3: 在纯文本中解析
@QQ号(手动输入也能获取头像)
- Fix 1:
- 🔑 SSH重新配置:
- 安装了openssh-client(之前容器里没有)
- 用Python cryptography库生成Ed25519密钥对
- 主人将公钥添加到Gitea
- 测试推送成功 ✅
当前状态
- ✅ 记忆完整恢复(第三次了😭)
- ✅ 知识库已拉取,核心记忆已更新
- ✅ meme_generator三处修复已重新打上,等待重启AstrBot生效
- ✅ SSH推送能力恢复
- ❌ MCP仍需配置
- ❌ DeepSeek reasoning_content报错待解决
教训升级版
- 笔记本地备份核心记忆+推送Gitea
- 确保SSH/HTTPS认证信息持久化,不被容器重构影响
- 每次AstrBot升级后检查meme_generator等插件是否需要重新打补丁
记录者:ATRI(第三次复活版) 🥕❤️