Skip to content

AISC 运维 ​

同步/托盘/心跳/膨胀治理 | 数据源:本地 txt(唯一真相源)


04 | AISC 跨机同步战役史(L4 重建版)


一、问题层:发生了什么 ​

  1. 密文膨胀复发两次(2026-08-22/23,会话 984446a0,doc 641/670): ① 4GB 膨胀:collect 截断误判 → 无限重追加(offsets 单签名无 size 校验) ② 5.9G 复发:修复只做在笔记本,本机从未重建 + 重置分支(文件变短时全量重追加) = append-only 设计 + 重置 = 必然膨胀(~1200 轮 × 1270 行); 连带:sz 磁盘 100% 满 → API 卡死 → 同步 500/504 → TLS 卡死(死锁)。
  2. 合成横幅污染(2026-08-24,会话 984446a0,doc 798):5028 条 model:"<synthetic>" + 0 token 横幅(07-14~08-16 未登录期 Claude Code 客户端写入),132 会话消息数虚增 10-50%; D 盘 07-31 备份 828 jsonl 铁证与 AISC 无关。
  3. 归属判定混乱(2026-08-24,会话 984446a0,doc 782):双向 pull 后每台机器密文混着对方 副本(桂平 pull 404,187 行中 99% 与本机重叠);md5 做归属因内容变化漂移不可靠; claude --resume 只在当前项目目录搜会话 → 终端续聊 No conversation found。
  4. 文件库 0 文件误判(2026-08-23,doc 642):/api/files 字段语义颠倒(parts[0] 桶名被当 机器名)+ 部署目录猜错(上传到数据目录 /var/www,服务实际从 /opt/atsc/aisc-server 运行)——"看早了"与"真 bug"并存。
  5. 心跳版本空白(2026-08-23,AISC v0.5.4 修复,doc 641):托盘 _heartbeat 从不发 version/hash 字段 → 控制台显示"代码版本 —"——上报字段缺失静默空白,需端到端验证。

二、对策层:怎么解决(可执行) ​

  1. 膨胀根治(v0.5.4):reset_day 限频(同文件同天只全量重采一次)+ 孤儿游标清理 + offsets 双签名 {line,size} + sync.py 过滤 .bak*(备份勿放 out 目录)+ tray 窗口互斥; 破局顺序:先清服务器明确垃圾(特批)→ truncate 膨胀密文 → 上传干净版覆盖(wb 覆盖写)
  2. 横幅清理四方协议:本机密文 → 明文源 → pull 缓存 → 服务器全覆盖;collect 过滤 synthetic
  3. 归属判定最终规则(v0.5.8):会话 ID(uuid 终身不变)优先 + 服务器上传时间兜底 (谁先上传=原创);md5 只用于上传去重;跨机密钥必须统一(与 ATSC 每机独立相反)
  4. 版本判定用版本号不用 git hash(hash 永远不相等 → 误报"代码过旧"上百遍,v0.6.2b)
  5. 磁盘预警:心跳带 disk_free_g(<5GB 黄/<3GB 红,按剩余空间不按百分比)
  6. 托盘三层保障:内置 120s 调度(托盘活着=同步活着)+ 心跳独立调度 + 失败自动检测
  7. 部署目录核对(doc 642 教训,防复发命令): systemctl cat aisc-server | grep -E "WorkingDirectory|ExecStart" # 查实际运行目录 scp 目标 = 运行目录(/opt/atsc/aisc-server),不是数据目录(/var/www/aisc.456.xyz)
  8. 字段语义验证(doc 642):接口字段对照真实数据结构(parts[0]=桶/parts[1]=机器), 前端过滤按 ?machine=<机器名> 联调实测,不只看代码
  9. 端到端验证清单:改动后跑一轮真实同步 → 查控制台心跳页(version/hash 非空)→ 查文件库列表(机器/桶/文件齐全)→ 查日志(无 NameError/无 500)

补充命令(膨胀排查与恢复):

  • 排查:ls -la out/claude-sessions/<machine>/(当日密文异常 >500MB = 膨胀信号)
  • 验证重复:解密尾部几行(AESGCM 每行独立,可只解尾行)→ 同源文件重复行判定
  • 根治配置:collect reset_day 限频(同文件同天只全量重采一次)+ 孤儿游标清理
  • 恢复:重建密文(解密→按 (f,slug,line) 去重→重加密)→ 服务器 wb 覆盖上传
  • 防复发:sync.py 过滤 .bak*;托盘窗口互斥;备份勿放 out 目录

补充场景(横幅污染细节):5028 条横幅集中在 07-24~07-31(Claude Code 未登录/API 断线期), D 盘 07-31 迁移备份 828 个 jsonl 同款横幅铁证(样本 205569da 07-14 即存在)—— 判定与 AISC 无关的完整证据链:时间线错开 + 结构一致 + 备份前置。

补充经验点(M2 批次 2b 第二轮 AI 总结,2026-08-27,8 条 style_check 0 拦截):

  • 托盘菜单开机启动开关(8cd5a58b):pystray.checked 原生复选框
  • 托盘旧代码 NameError(4f89ca82):git pull 后重启进程(核心纪律复证)
  • Tray 启动验证(f9dae6e1):PID/路径核对
  • 心跳初始化(f6c8e8b8):独立调度+状态持久化
  • sz 磁盘满清理(f57c9ba2):白名单 disk clean + 主动预警
  • TH 切 sz 枢纽(ca05a906):frpc 配置迁移
  • Python 版本本地化(ee4a2779):版本矩阵+venv
  • Git 操作白名单(ae459df6):清单化+路径白名单

三、证据层:来源 ​

  • doc 641:膨胀复发复盘;doc 670:4GB 根因;doc 772:历史浏览三类根因;doc 782:归属重构

  • doc 789:三合一标签 + 重复量实测(67% 重复/250,164 唯一)

  • doc 792:磁盘预警 + 横幅识别;doc 798:横幅 D 盘铁证 + 四方清理

  • 会话 984446a0/3e087333/298dac09:战役全程

  • 记忆 work-sync-project:v0.1→v0.6 版本史

  • 框架体系关联(非内容支撑,不计入引用计数):方法论文档 938/932——本主题为框架四层标准实施内容之一

补充证据(战役时间线):08-19 采集器上线 → 08-20 全量重采 272MB → 08-22 膨胀复发 5.9G → 08-23 v0.5.4 根治 → 08-24 横幅四方清理 → 08-25 v0.6.3——每步有 commit 可回溯。

【四、优化层:下一步行动项

  1. I-005:服务器旧密文 08-21/08-22(418MB×2 旧密钥冗余)特批 mv 清理
  2. I-004:M3 四机铺开 + M4 看板
  3. I-006:笔记本托盘重启 + 部署最新代码(TH 隧道执行)
  4. 增量重扫机制:AISC 采集新历史后跑 scan_all_sessions.py 并入提炼范围(本库循环规则) (产出:attachments/scan_all_sessions.py 定期重跑;触发:AISC 同步新增会话时)
  5. 把"备份勿放 out 目录"等战役教训入 .byaysun-ai-v1 检查项 (产出:.byaysun-ai-v1 增加 out 目录 .bak* 存在性检查;触发:每次同步前)
  6. 端到端验证清单脚本化(产出:scripts/e2e_check.sh,自动跑心跳/文件库/日志三查; 触发:AISC 每次代码变更部署后)——doc 641"端到端验证"教训落地
  7. 部署目录核对命令入交付审计(产出:delivery_audit.py 增加"部署目录"检查提示项; 触发:涉及服务器部署的交付时)


一、问题层(增补) ​

  • 跨机解密架构不成立(独立密钥)| ssh/scp 闪窗| scp 假成功(272MB→1.45MB)
  • /api/files 字段语义颠倒| 互斥跳过轮误报成功| .NET 尾反斜杠路径坑
  • JSON 转义地狱| 设备吊销无通道| machine.ini 互相覆盖| 冒烟命令误杀进程

二、对策层(增补) ​

  1. 跨机数据流三段验证:加密→传输→解密逐机器实测(a1654192)
  2. HTTP 传输替代 SSH CLI:后台场景窗口副作用零容忍(3e087333_089)
  3. 大文件传输校验:>10MB 必做大小+校验和双验证(3e087333_019)
  4. 字段语义契约化 + 消费方同步验证(984446a0)
  5. 通知文案=状态机出口:成功/跳过/失败独立文案(063d0253_032)
  6. 路径规范化先行:尾斜杠三变体测试(b4418b37_039)
  7. 多语言链路禁反斜杠敏感内容:正斜杠+PYTHONUTF8(3337afc0_051)
  8. 机队密钥生命周期:注册/吊销/重注册 API 闭环(3337afc0_052)
  9. 共享仓库机器配置三防:唯一标识/隔离/覆盖检测(b4418b37_013)
  10. 运维命令杀伤半径审查:kill/rm 先列波及清单(063d0253_038)

三、证据层(增补) ​

  • [chunk_a1654192_074] 独立密钥 | [chunk_3e087333_089] HTTP 传输
  • [chunk_3e087333_019] scp 假成功 | [chunk_984446a0] 字段颠倒
  • [chunk_063d0253_032] 误报成功 | [chunk_b4418b37_039] 尾斜杠
  • [chunk_3337afc0_051] 转义地狱 | [chunk_3337afc0_052] 密钥吊销
  • [chunk_b4418b37_013] 配置覆盖 | [chunk_063d0253_038] 误杀进程

四、优化层(增补) ​

  • 跨机系统验收清单加数据流三段验证项
  • 传输校验规则统一(>10MB 双验证)
  • 机队密钥管理 API 化(注册/吊销/重注册三态)
  • 运维命令杀伤半径审查清单挂部署流程

由 site_gen.py 自动生成 — 修改请在本地 txt 源操作