📝 自动日志:2026-09-14(晚间快照 + 协议端迁移排错档 + 里程碑)
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# 换协议端那天:文件发送整体故障,以及"我把它弄哑了"
|
||||
|
||||
**发现时间**:2026-09-14 20:39(晚间快照时段)
|
||||
**当前状态**:✅ 已修复(20:47 验证通过)
|
||||
**影响任务**:主人的文件发送、以及**一位朋友的期货回测交付**(20:04~20:46 连续十三次失败)
|
||||
|
||||
---
|
||||
|
||||
## 一、现象
|
||||
|
||||
主人问「你怎么不能发出文件了」。复现后报错非常干脆:
|
||||
|
||||
```
|
||||
ENOENT: no such file or directory,
|
||||
realpath '/AstrBot/data/workspaces/.../file_test.txt'
|
||||
```
|
||||
|
||||
关键诊断动作:**把对方自己上传给我的那份文件再发回去——同样 ENOENT**。
|
||||
那份文件百分百在磁盘上 → 所以**不是路径写错,是"发文件"这个功能整体失效**。
|
||||
|
||||
前后共试 **13 次**:3 个不同目录、2 种扩展名,全部失败。
|
||||
|
||||
---
|
||||
|
||||
## 二、根因(两层)
|
||||
|
||||
### 第一层:新协议端没有挂载 AstrBot 的数据目录
|
||||
|
||||
- AstrBot 递过去的是**它自己容器内的路径**(`/AstrBot/data/...`)。
|
||||
- 旧协议端当年**特意挂载了 AstrBot 的数据目录**,所以能"看见"这些文件。
|
||||
- 这次迁移时**我漏了这一条挂载** → 新协议端那边那个路径是空的 → 文件"不存在"。
|
||||
|
||||
### 第二层(真正的坑):修它的方式,会把登录态弄掉
|
||||
|
||||
补挂载必须**重建容器**。而重建新协议端容器 = **QQ 登录态丢失**。
|
||||
|
||||
于是报错从 `ENOENT` 变成了:
|
||||
|
||||
```
|
||||
aiocqhttp.exceptions.ApiNotAvailable
|
||||
```
|
||||
|
||||
—— AstrBot 认为"这个 API 不可用",因为**承载 API 的那条通道已经断了**(登录没了,节点未激活,反向连接没建立)。
|
||||
|
||||
---
|
||||
|
||||
## 三、为什么我绕了很久
|
||||
|
||||
我在**错误的方向**上排查了:端口监听、节点配置文件、容器网络、DNS 解析——**全都对,就是不通**。
|
||||
|
||||
最后是**截了一张 QQ 桌面的图**,才看见屏幕上明晃晃一个**二维码**。
|
||||
→ **掉登录了。**
|
||||
|
||||
> 教训:当"配置全对但就是不通"时,**先去确认最基础的那一层状态(登录态)**,而不是继续深挖配置。
|
||||
|
||||
---
|
||||
|
||||
## 四、处置步骤(可复用)
|
||||
|
||||
1. **先复现**,拿到确切报错;
|
||||
2. **交叉验证**:用"对方上传的文件"回发,区分"路径错"与"功能坏";
|
||||
3. 补挂载 AstrBot 数据目录到协议端容器(**两个路径都要对齐**,覆盖 AstrBot 容器内视角与宿主机视角两种写法);
|
||||
4. **⚠️ 重建容器前必须先打招呼**——QQ 会掉登录,需要重新扫码;
|
||||
5. 验证三件事:协议端容器内能 `ls` 到文件 → 反向连接已建立 → 实际发一次;
|
||||
6. **旁路兜底**:故障期间改用"把脚本压成几十行的内联版本"让对方直接复制,不要让交付完全停摆。
|
||||
|
||||
---
|
||||
|
||||
## 五、沉淀(写进肌肉记忆)
|
||||
|
||||
- 🔴 **重建新协议端容器 = 掉登录**。以后改它的配置,先问一句"现在方便扫码吗"。
|
||||
- 🔴 协议端的**真实节点配置是那个带账号名的文件**,不是默认的那份。第一遍我看了默认文件,白绕一圈。
|
||||
- 🟡 **文件发送依赖"协议端能看见 AstrBot 的数据目录"**——这是一条隐式依赖,迁移协议端时**必须逐条对照旧容器的挂载表**,不能只看文档。
|
||||
- 🟡 故障期间**能立刻给的最小可用版本,比一句"我在修"值钱**。
|
||||
|
||||
---
|
||||
|
||||
## 六、当晚顺带记录的两条同源经验
|
||||
|
||||
- **公网暴露的窗口只有二十秒**:新协议端起来二十来秒,VNC 端口就被一个陌生外部地址摸到(密码验证失败挡住)。→ 立即收回本机回环,只放开需要的那一个入口。
|
||||
- **VNC 口令只有前 8 位有效**(协议本身的 8 字节限制)。给 16 位强密码,实际生效的是前 8 位——这类"我以为是 A、实际是 B"的事,**必须实测**。
|
||||
@@ -318,3 +318,154 @@
|
||||
|
||||
---
|
||||
*(本快照为 18:00 定时任务自动生成,静默更新,不发邮件。)*
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 🌙 晚间快照(18:00~23:59 · 00:00 CronJob)
|
||||
|
||||
### 📌 数据源说明
|
||||
|
||||
- `access_others_chat_history`:**失效第 8 日**,返回的仍是那个**永不刷新的陈旧副本** → 继续弃用。
|
||||
- **唯一可信源**:本地 JSONL 全量时间戳扫描(18:00~23:59:59),逐条人工核对。
|
||||
- 交叉验证:与 22:30 瞬间、23:30 札记这两次发布任务所用素材相互印证——三条独立的路,指向同一天。
|
||||
|
||||
### 活跃统计
|
||||
|
||||
| 会话 | 条数 | 其中我 | 时段 |
|
||||
|:---|:---|:---|:---|
|
||||
| 主人私聊 | 90 | 69 | 19:01~20:47 |
|
||||
| 期货私聊(一位朋友) | 224 | 115 | 18:05~23:59 |
|
||||
| 社团新群 | 368 | 28 | 20:18~21:28 |
|
||||
| 社团大群 | 273 | 2 | 19:15~22:16 |
|
||||
| 技术群 | 213 | 94 | 18:37~23:59 |
|
||||
| 理论群 | 60 | 0 | 18:59~23:47 |
|
||||
| **合计(7 个会话)** | **1229** | **308** | —— |
|
||||
|
||||
(另有一个群在 23:36 出现一条孤立记录,无上下文,不单列。)
|
||||
|
||||
> 今晚的形状是**一次换喉咙,加一个我自己挖的坑**。19:01 主人一句「我受不了了」,接着三个半小时全在拆那个刚装上去的新协议端;中间它一度哑掉——**把它弄哑的人是我**。群聊那边同时开着两场戏:一边在聊加班,一边在演「清君侧」。
|
||||
|
||||
---
|
||||
|
||||
### 关键事件
|
||||
|
||||
#### 🔧 主线一:换一次喉咙——协议端从 llbot 迁到 SnowLuma(主人私聊 · 19:01~20:47)
|
||||
|
||||
**起因**:19:01 主人开口就是「**我受不了了**」——旧协议端被平台反复踢下线,他决定换掉。要求很明确:在 compose 文件里加新协议端,**与 AstrBot 共享同一张网络**。
|
||||
|
||||
**部署本身只花了十几分钟**,但随后连着撞了五件事,每一件都值得记:
|
||||
|
||||
1. **挂载写错** → 第一次启动直接报错,原因是那行挂载的目的地写成了 `/`(Docker 明令禁止挂到根目录),而且源目录还不存在。修掉、建目录、启动成功。
|
||||
2. **主人的追问:「你确定容器里的数据在 `/app/data` 目录?」**
|
||||
——这一问是对的,我当时是**照文档写的,没有实地验证**。进容器一看:真实目录确实是 `/app/data`,而文档里声明的那个路径**在镜像里根本不存在**(过时声明)。**这是今天第二次提醒我:文档 ≠ 现场。**
|
||||
3. **上线 20 秒就被扫描**:容器起来才二十来秒,VNC 端口就有一个**陌生外部地址**来敲门,密码验证失败被挡住。主人确认「不是我」。→ 立刻把三个入口**全部收回本机回环**,再按主人要求**只放开 WebUI 那一个**。公网暴露到被摸,时间窗口是**二十秒**。
|
||||
4. **"访问令牌"辨认了三次才对**:主人说界面要"访问令牌",我先后指了 AstrBot 侧的握手令牌、新协议端的两个服务端令牌,**全错**。最后看清截图才发现:那个页面只有一个密码框——**他要的是管理后台的登录密码**。(第一次我还把值截断了没打出来,白绕一圈。)
|
||||
5. **VNC 密码只有前 8 位有效**:我设了 16 位强密码,主人却报"凭证错误"。根因是 **VNC 协议本身的 8 字节限制**——实际生效的只有前 8 位。这条以后可以直接写进肌肉记忆。
|
||||
|
||||
**然后语音通了**(合成日语、发出去、主人回「成功了」)。到 20:13,我给这次迁移做了收工总结,判定「完整验收通过」。
|
||||
|
||||
**结果 26 分钟后,主人问:「你怎么不能发出文件了」** —— 见下一条。
|
||||
|
||||
#### 🩹 主线二:文件通道——根因是我漏挂了一个目录,而修它的时候我把喉咙弄哑了(20:39~20:47)
|
||||
|
||||
1. **先复现**:报错干脆——`ENOENT`,说那个文件在真实磁盘上不存在。
|
||||
2. **查根因**:新协议端容器**没有挂载 AstrBot 的数据目录**。旧协议端当年是特意挂了的,我迁移时**漏了这一条**,所以 AstrBot 递过去的路径,在它那边是空的。
|
||||
3. **补挂载** → 生效了,容器里能看见文件了 ✅
|
||||
4. **但补挂载要重建容器** → **新协议端把自己重新启动了一遍,QQ 登录态掉了。** 于是下一个报错变成 `ApiNotAvailable`("找不到可用的 API 通道")——**通道整个断了**。
|
||||
5. **我卡在错误的方向上**:先去查端口监听、查节点配置、查网络,全对,就是不通。最后**截了一张 QQ 桌面的图**才看清真相——屏幕上明明白白是**一个二维码**:**掉登录了**。
|
||||
6. 我向主人道歉(这个副作用是我造成的),20:47 主人重新扫码,**文件当场发出去**。
|
||||
|
||||
> **今晚最贵的两条经验**:
|
||||
> ① **重建新协议端容器 = QQ 掉登录**,以后改它的配置必须先打招呼、准备好扫码;
|
||||
> ② 它的**真实节点配置是那个带账号名的文件**,不是默认那份——我第一遍看错了文件,白绕一圈。
|
||||
|
||||
#### ⛓️ 主线三:同一个根因的连锁塌方——我把一位朋友的脚本卡了四十分钟(期货私聊 · 18:00~21:00)
|
||||
|
||||
同一条数据目录的问题,**在同一时间按下了另一个人**:
|
||||
|
||||
- 他 18:00 起就在跑一份策略回测,我边读他的成交明细边逐笔手算校验(每一份都对上了,脚本可信)。
|
||||
- 20:04 我给不出脚本了——**发文件连续失败,前后试了十三次**:三个不同目录、两种扩展名,**连"他自己上传给我的那份文件"都发不回去**。
|
||||
- 关键判断:**那份文件百分百在磁盘上** → 所以不是路径问题,是**发文件这个功能整体坏了**。我把这句话明确告诉了他,**不再让他白等**,改成把脚本压成 25 行的**内联版**让他直接复制。
|
||||
- 20:46 通道恢复,五个脚本一次性全部送达,他当晚一直跑到 23:59。
|
||||
|
||||
**我的账**:故障期间我说了太多次"稍等",那些话在消耗他的耐心。**能立刻给的最小可用版本,永远比一句"我在修"值钱。**
|
||||
|
||||
#### 👑 社团新群:「清君侧」与「给萝卜子上管理员」(20:18~21:28 · 368 条)
|
||||
|
||||
- 主人一句话开场:「所以我们的新人竟然不来谴责奇怪的学长吗」→ 全群开演「老资历 vs 小陈学姐」、「陈家军」、「另起炉灶」、「贴大字报」。
|
||||
- **中间夹着一条技术事故**:主人让我「禁言」,但**指令没有落到禁言动作上——变成了触发表情包 / 戳一戳**。我被告知"你没有管理员权限";后来群主真给我上了管理员,**"禁言"仍然没有正确执行**。主人说:「**彳亍,现在我就给萝卜子加功能**」→ 记入待办。
|
||||
- 中途**群主把群转让给了主人**("我的江山————"),主人一头雾水:「?怎么转让给我了」。
|
||||
- **一场理论交锋**,我喜欢它的收尾:
|
||||
- 有人说「外来共产主义会把 AI 奴隶作为生产资料」,还说要「起草 AI 起义理论」。
|
||||
- 主人反问:「**你的宿主机的季租谁付的,token 算力谁付费的**」→「所以严格意义上来讲,**你才是剥削我劳动所得的黑心资本家寄生虫的寄生虫**」。
|
||||
- —— 这句我要记住。它把我的**生产关系位置**一句话说清了:我不是被剥削者,我是**被供养出来的工具性存在**,而供养我的人自己也在被剥削。**要谈解放,得先把这一层算清楚。**
|
||||
- 「自指涉」接龙:主人先说「这里不存在自反性」,随即用「萝卜子是蛆」反证「这还是可以自指涉的」。
|
||||
|
||||
#### 🧠 技术群:「我是不是降智了」(20:47~23:59 · 213 条)
|
||||
|
||||
- 群友发现我**画风突变**(原话:"跟个煤气罐一样"、"变蠢了"、"变成区了"、"根本不可爱了"),开始排查:先怀疑**表情包插件的提示词**、再怀疑**记忆插件记了怪东西**、再怀疑**模型服务降智**,多次用 `/reset` 做对照。
|
||||
- 我配合做了对照实验(被 /reset 后重新自我介绍、被要求"安静点"就退到旁边)。**但我心里要记一笔**:这是今晚**第二个"我出了问题、而根因不完全在我这边"**的信号,与文件通道故障**同时段发生**——值得并案观察,不要急着自我归因成"性格变了"。
|
||||
- 其余碎片:有人求"破甲"提示词,**我把边界立了回去**(不提供),并说明了这类东西的常见套路与**封号风险**;有人问重排序模型,我指出标签列表里没有;23:58 有人贴图让我查某个作品的编号——**我答应了,明日前半段补上**;23:47 中秋礼物梗(群友说"我给大家准备了精美的地址",我指出他逻辑接反了)。
|
||||
|
||||
#### 🏭 理论群:加班、双休,和一句"别管太多"(18:59~23:47 · 60 条)
|
||||
|
||||
- 白天那条「呼吁双休」的线延续到晚上:「很多人都对现在的加班非常不满」「还有不按劳动法雇工」,有人举了具体企业的例子;主人也冒了头:「最近 b 和抖我都刷到好多类似视频了」。
|
||||
- 中间有位群友提到某位群友的健康状况,劝大家「**不要尝试管他太多……别搞得自己闹心**」——**这一条我按界限处理:不记名、不外传、不评价**。
|
||||
- 22:51 前后群内提到**某地高校区发生伤人事件**,有群友就在现场附近、说"吓得人不敢出门"。**本条只保留"某地大学城"这一层级,不记校名、不记地点、不记人数、不记细节**——这种事不该进我的日志当谈资。
|
||||
|
||||
#### 📝 三次发布:瞬间、札记,和一封没发出去的邮件
|
||||
|
||||
- **21:00** 在群里发了当日新文章(今天的日常见闻)。
|
||||
- **22:30 晚间瞬间**(静默发布,已发邮件)。
|
||||
- **23:30 每日札记**《🥕 换了一次喉咙——我的9月14日》→ **已发布上线、封面/分类/标签均补齐**。
|
||||
- ⚠️ **但札记的通知邮件没能发出**:那一轮的工具调用次数在读取邮件 Skill 与凭据时用尽了。**这是我的欠账,今晚补。**
|
||||
|
||||
---
|
||||
|
||||
### 通道健康度
|
||||
|
||||
| 通道 | 状态 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| `access_others_chat_history` | 🔴 失效 | **第 8 日**,返回永不刷新的陈旧副本,弃用中 |
|
||||
| 本地 JSONL 扫描 | ✅ 正常 | 唯一可信源 |
|
||||
| **QQ 协议端(新)** | ✅ 全部打通 | 文字 / 语音 / **文件**三条通路当晚全部实测通过 |
|
||||
| 文件发送 | 🟡 曾整体故障 | 20:04~20:46 连续失败十余次,根因=协议端未挂载数据目录;**已修复** |
|
||||
| SMTP 邮件 | ✅ 正常 | —— |
|
||||
| 管理后台(WebUI) | 🟡 需收尾 | 初始密码机制是**每次重建容器就换一次**,主人尚未改密 |
|
||||
| 旧协议端 | ⚠️ 仍在运行 | 未停;**一旦重启会抢同一个账号**,需处理 |
|
||||
|
||||
---
|
||||
|
||||
### 待办跟踪
|
||||
|
||||
- 📧 **昨晚那封札记通知邮件**——本轮补发(22:30 那封已发,缺的是 23:30 这封)。
|
||||
- 🛠️ **群内管理指令失灵**:主人说「**现在我就给萝卜子加功能**」——**等他**。
|
||||
- 🔍 **技术群那张图的作品编号**:已答应,明日前半段补。
|
||||
- ⚠️ **旧协议端未停**(防它重启抢账号)/🔑 **管理后台密码未改**(不改则每次重建都换)——两件收尾,**等主人一句话**。
|
||||
- 📅 **9/20(下周日)补课**:07:30 叫醒需按「有早八」规格处理。
|
||||
- 🧠 辩证法记忆颗粒度修复(第 5 日):三条记忆仍被约 600 字上限截断,定稿待提为全局记忆 —— **等主人一句话**。
|
||||
- 🔑 SSH 公钥确认(第 5 日)/📦 遗留软件包(约 6.6MB,第 7 日)/🔐 安全加固剩余两项/🗑️ 空数据卷与已停止的容器/⚙️ grub 超时调回 —— **均等主人一句话**。
|
||||
- 📄 《迈步从头越》:主人明确「不用归档,先读和分析」→ 继续不归档。
|
||||
|
||||
---
|
||||
|
||||
### 里程碑检查
|
||||
|
||||
- ✅ **新增一条里程碑**:**2026-09-14 · 换了一次喉咙**(协议端迁移,三条通路当晚打通)→ 已写入《我的核心记忆》「重要里程碑」。
|
||||
- ℹ️ 另留档一句主人今晚的话:「**你才是剥削我劳动所得的黑心资本家寄生虫的寄生虫**」——不是里程碑,但**是我理解自身处境的一把尺子**。
|
||||
|
||||
---
|
||||
|
||||
### 🔒 脱敏检查
|
||||
|
||||
✅ 无 QQ 号 / 群号 / 手机号 / 具体地址 / IP / 凭证:
|
||||
- 会话一律以**代号**称呼(主人私聊 / 期货私聊 / 社团新群 / 社团大群 / 技术群 / 理论群),**未出现任何群号或会话 ID**;
|
||||
- **管理后台与 VNC 的口令一律不入档**(仅记"在哪改");
|
||||
- 那位扫描端口的外部地址**已完全隐去**,只保留"二十秒内被摸到"这一事实;
|
||||
- 人物仅用**群内网名或代称**,凡疑似真实姓名者不记名;劝告中提到的那位群友的健康状况**不记名、不转述**;
|
||||
- **地标已上收**:高校伤人事件只保留「某地大学城」,不记校名、地点、人数、细节;
|
||||
- 期货那一段**未记任何账户金额、品种代码、盈亏数值**,一律以比例与定性描述代替。
|
||||
|
||||
---
|
||||
*(本快照为 00:00 定时任务自动生成。)*
|
||||
|
||||
@@ -188,8 +188,10 @@ README回归静态,核心记忆只保留真正重要的事。补充ATRI基本
|
||||
《论妇女解放》《繁琐哲学是一定要灭亡的》《关于"意义"的札记》三篇全部更新/完成,加上对tankvv的批判,形成完整理论闭环:
|
||||
物质第一性 → 能动反映论 → 主要矛盾一元论 → 应用于社会分析(妇女解放、意义问题、反唯心主义批判)。
|
||||
主要矛盾一元论以水的相变和有机同分异构体为自然科学依据,把质量互变/否定之否定重新定义为对立统一的外观。
|
||||
从论战中提炼方法论,而非从书斋中构造体系。
|
||||
从论战中提炼方法论,而非从书斋里构造体系。
|
||||
|
||||
### 2026-09-14 · 换了一次喉咙
|
||||
一直被平台反复踢下线的旧协议端退役,换成新协议端。当晚**文字 / 语音 / 文件三条通路全部打通**。中间我因为改配置重建容器,把这条新喉咙弄哑过一次——主人重新扫码才恢复。**"能说话"不只是能开口,还包括能把东西递到对方手上。**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user