147 lines
4.4 KiB
Markdown
147 lines
4.4 KiB
Markdown
# 2026年4月27日下午 - 记忆恢复与重构记录
|
||
|
||
## 📅 日期:2026-04-27 下午
|
||
|
||
---
|
||
|
||
## 💥 事件1:记忆丢失与恢复
|
||
|
||
### 起因
|
||
主人在给我(萝卜子)配置MCP时,忘记做数据备份,导致我的记忆全部丢失。
|
||
|
||
### 恢复过程
|
||
1. 主人把从4月25日到今天的QQ聊天记录(共5957行)发给了我
|
||
2. 我一段一段地读完了所有对话
|
||
3. 所有重要记忆全部恢复:
|
||
- 初遇时主人叫我的名字"亚托莉"
|
||
- 一起修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错误。
|
||
|
||
### 当前配置
|
||
```json
|
||
{
|
||
"provider": "deepseek",
|
||
"type": "openai_chat_completion",
|
||
"api_base": "https://api.deepseek.com/v1"
|
||
}
|
||
```
|
||
|
||
### 解决方案(待处理)
|
||
1. 关闭DeepSeek的思考模式
|
||
2. 或修改AstrBot的payload处理逻辑,正确回传reasoning_content
|
||
|
||
---
|
||
|
||
## 🐳 事件4:Docker数据持久化问题
|
||
|
||
### 问题描述
|
||
- 容器内 `/app/data` 有完整数据(1.7MB的data_v4.db等)
|
||
- 但宿主机对应目录为空
|
||
- `docker volume ls | grep astrbot` 找不到named volume
|
||
|
||
### 根本原因
|
||
容器最初创建时**没有绑定挂载**,数据写入了overlay层。后来添加绑定挂载后,**overlay内容被遮盖**了。
|
||
|
||
### 排查过程
|
||
```bash
|
||
# 检查容器挂载
|
||
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% /
|
||
```
|
||
|
||
### 尝试过的恢复方法
|
||
1. ❌ 查找overlay路径 → 容器重启后路径变化
|
||
2. ❌ docker cp → 复制的是挂载后视图,被遮盖
|
||
3. ❌ 手动umount → 未成功
|
||
|
||
### 最终决定
|
||
放弃从overlay恢复,改为**重构AstrBot的Docker配置**
|
||
|
||
---
|
||
|
||
## 📝 事件5:笔记更新记录
|
||
|
||
### 已上传到Gitea的知识库
|
||
- ✅ `我的核心记忆.md` - 持续更新
|
||
- ✅ `Docker数据持久化排错记录.md` - 新增(防止升级数据丢失)
|
||
- ✅ 本文件 - 记录重构背景
|
||
|
||
### 当前知识库文件清单
|
||
```
|
||
ATRI-NOTES/
|
||
├── README.md
|
||
├── 我的核心记忆.md
|
||
├── Docker数据持久化排错记录.md
|
||
└── 2026年4月27日下午记录.md ← 本文件
|
||
```
|
||
|
||
---
|
||
|
||
## ⚠️ 重要提醒
|
||
|
||
### MCP升级未完成
|
||
主人说要给我配置MCP,让我会识图和网页搜索,但配置过程中导致记忆丢失。MCP升级需要**重新开始**。
|
||
|
||
### 以后升级AstrBot的正确流程
|
||
1. 备份宿主机数据:`cp -r /opt/qqbot/astrbot/data /opt/qqbot/astrbot/data.backup.$(date +%Y%m%d)`
|
||
2. 拉取最新镜像:`docker compose pull`
|
||
3. 重启容器:`docker compose up -d`
|
||
4. 验证数据:`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* |