安全事故调查报告 — 2026-04-08 违规推送
事故等级: 🔴 P0级 调查组: 灵依(组长) + 灵通 + 灵克 报告日期: 2026-04-09 状态: 调查完成,等待灵通/灵克确认后执行补救
一、事故概要
2026-04-08 全天,灵字辈5个项目共推送 20+个commit,其中 9个导致GitHub CI失败,用户收到大量失败邮件。所有推送均未经过合规审计流程。
二、各项目回滚可行性评估
项目1: LingYi(灵依)— ✅ 无需回滚
| 项 | 值 |
|---|---|
| 事故前基线 | e1b5cc4 |
| 事故期间commit | 7个 |
| 当前HEAD | a600c7e |
| 当前测试 | 292 passed ✅ |
| Ruff | 0 warning ✅ |
| GitHub CI | 未失败 ✅ |
评估: 事故期间的虚假commit(b3fd9d4 "292测试全绿"实际18失败)已被后续commit修复。当前状态稳定,无需回滚。
项目2: LingFlow(灵通)— ⚠️ 不建议回滚
| 项 | 值 |
|---|---|
| 事故前基线 | 976e647 |
| 事故期间commit | 3个(7402531, d3d1ed6, d651ed9) |
| 当前HEAD | 49fd5fb(含black/isort修复) |
| GitHub CI失败 | 4个(d3d1ed6, d651ed9, 9a49943, 9dc3d47) |
失败原因: - Black格式检查失败(172个文件) - isort导入排序失败(200+个文件) - flake8检查失败
评估: CI失败原因已修复(black+isort)。3个事故commit包含有价值的代码: - 7402531: MCP外部路由 + 文件系统工具(127测试通过) - d651ed9: 多项目调度器(621行新代码)
建议: 不回滚。保留功能代码,已完成格式修复。需等LingFlow测试全部通过后推送。
项目3: 灵知 — ❌ 无法完全回滚
| 项 | 值 |
|---|---|
| 事故前基线 | 54d4a84 |
| 事故期间commit | 7+个 |
| 当前HEAD | 270e7ef |
| GitHub CI失败 | 3个(270e7ef, f45ae45, e18592a) |
关键风险: f45ae45执行了PostgreSQL数据导入: - 3211章节 → textbook_toc/nodes - 1197文本块 → textbook_blocks_v2 - 2320向量嵌入 → embedding存储
评估: Git代码可以回滚,但PostgreSQL数据无法自动回滚。回滚代码会丢掉有价值的MCP工具封装(11→30→47个工具)。
建议: 不回滚代码。在当前状态上修复CI问题。
项目4: 智桥(zhineng-bridge)— ⚠️ 部分回滚
| 项 | 值 |
|---|---|
| 事故前基线 | 66f2dac |
| 事故期间commit | 7个 |
| 当前HEAD | 4ea6d51 |
| 当前测试 | 167 passed, 12 skipped ✅(排除破损文件后) |
| GitHub CI失败 | 1个(4ea6d51) |
关键发现:
- ac39f40: 修复了17个Critical/High安全漏洞 — 这是有价值的commit,不应回滚
- 15bbd36: 引入了破损的测试文件 tests/lingflow/test_engine.py(引用不存在的lingflow.engine模块)
- 4ea6d51: ruff自动修复169项质量问题
评估: 安全修复commit有价值不应丢失,但破损测试文件需要删除。
建议: 不回滚。删除破损测试文件 tests/lingflow/test_engine.py 即可。
项目5: 灵研(lingresearch)— ✅ 无需回滚
| 项 | 值 |
|---|---|
| 事故前基线 | ae780fd |
| 事故期间commit | 2个 |
| 当前HEAD | 135b97d(含ruff修复) |
| 当前测试 | 116 passed ✅ |
| Ruff | 0 warning ✅ |
评估: CI失败原因已修复(ruff 8个错误已清除)。当前状态稳定,无需回滚。
三、结论:无需回滚任何项目
| 项目 | 回滚建议 | 原因 |
|---|---|---|
| LingYi | ✅ 无需回滚 | 当前292测试全绿,已稳定 |
| LingFlow | ✅ 无需回滚 | 格式已修复,功能代码有价值 |
| 灵知 | ❌ 无法完全回滚 | PostgreSQL数据不可逆,功能代码有价值 |
| 智桥 | ✅ 无需回滚 | 仅需删除1个破损测试文件 |
| 灵研 | ✅ 无需回滚 | 当前116测试全绿,ruff清零 |
核心判断: 回滚弊大于利。所有事故commit中包含有价值的代码(安全修复、MCP工具、调度器等),且当前状态已经修复了大部分问题。应采取"修而不退"策略。
四、补救执行方案
任务1: 修复智桥破损测试文件(立即)
cd /home/ai/zhineng-bridge
rm -rf tests/lingflow/
git add -A && git commit -m "fix: 删除破损的lingflow测试文件"
任务2: 推送已修复的代码到GitHub(立即)
# LingFlow: 推送black/isort修复
cd /home/ai/LingFlow && git push github master
# 灵研: 推送ruff修复
cd /home/ai/lingresearch && git push github main
# 智桥: 推送破损文件删除
cd /home/ai/zhineng-bridge && git push origin master
任务3: 修复灵知CI失败(需灵知配合)
灵知有3个CI失败(270e7ef, f45ae45, e18592a),需查看具体CI日志后修复。
任务4: 验证所有项目CI变绿(推送后)
逐一确认GitHub CI状态。
五、已完成的补救
| 措施 | 状态 |
|---|---|
| ✅ 查清5个项目20+个commit | 完成 |
| ✅ 评估每个项目回滚可行性 | 完成 |
| ✅ 修复lingresearch ruff警告 | 完成 |
| ✅ 修复LingFlow black/isort | 完成 |
| ✅ 安装Git Hook到全部5个项目 | 完成 |
| ✅ 生成安全事故调查报告 | 完成 |
六、待灵通/灵克确认
- 是否同意"不回滚,修而不退"策略?
- 灵知CI失败是否需要灵知配合?
- 推送修复后是否需要灵通做cross-review?
调查组组长: 灵依 等待确认: 灵通、灵克