08 - 版本演进 + 教训

问题 → 方案 → 教训 写, 不是 feature flow. 让你看懂为什么系统长成现在这样.

阶段 1: ES 接通 + 安全边界 (Phase 3-17, 2026-04)

问题

运维不会写 ES DSL, 想用自然语言查 DNS/DHCP 异常.

方案

  • Backend 封装 4 个聚合 query API (DNS failure summary / DHCP message summary / 失败 drilldown / top X)
  • 安全三旗物理禁止 (raw_log_scan=false / preview_only=true / execution_enabled=false)
  • 真后端 ES 用聚合不读 raw 文档

教训

  • 没有, 这阶段真凶链路简单, 0 出口补丁

阶段 2: AI 加层 (Phase 32-37, 2026-05)

问题

聚合数字给运维但他还要解释 (“失败率 35.73% 说明啥?”), 想 LLM 把数字翻成自然语言.

方案

  • Phase 32: DNS hypothesis reasoner — LLM 真给根因排序 + confidence_delta
  • Phase 33: Multi-round planner — LLM 决定第 2/3 round 跑哪几个工具
  • Phase 34: Local LLM 主 + DeepSeek 云端 fallback (双源)
  • Phase 35: 对话追问 (follow-up API)
  • Phase 36: Business impact + auto asset extraction (12 业务系统)
  • Phase 37: Cross-alert correlation (跨告警关联)

教训

  • LLM 会编 (e.g. 输出 upstream_missing 为 0 但 tool_trace 真值 7338)
  • 必须加 schema validation 拦 LLM 真乱输出 (Phase 32 hypothesis_reasoner_schema)
  • 这阶段还没真凶根, 真凶在 silent 0 吞 — 留 R10-R28 19 轮后才挖出

阶段 3: 真后端验证 (Phase 49-67, 2026-05 末 → 2026-06 早)

问题

单测 1500+ 过了, 真后端跑出来还是错. 评估时凭印象, 没有真后端真值基础.

方案

  • Phase 49: 按线索路径基础 (15 步 deterministic plan + LLM enrich + narrative)
  • Phase 56-66: 滚动告警 → AI 报告主路径完整 ship
  • Phase 67.A.1-A.6: 真后端 capture/replay pipeline (但被打散成 6 个小切片)
  • Phase 67.{H,H’,E,P,P2,Q,R,S}: 8 件出口字面 caveat 补丁

教训 (R10-R28 19 轮血泪)

真凶 R10-R28 真发生
修出口字面不修源头 8 件 phase67 补丁, P0 总数 19 轮持平
Evaluator query 设计漂移 R25/R26/R27 三轮 3 种 4 endpoint 布局, P0 比较空间不同
真后端 fixture 0 入库 R10-R28 19 轮全靠人工 curl + 肉眼对比, 0 累积
Planning agent 局部最优偏置 优先选可闭环小切片, 拖延需打破红线的源头 phase
LLM 真凶判定凭印象 没有 venv 实测 + 源码 grep, 真凶推断错 ≥ 3 次

Meta-lesson: 道德约束 (MEMORY 文字) 没用, 必须用 plugin 物理屏障 (Check 4 ≥3 BLOCK) + workflow 脚本 (run_round_evaluation.sh 强制 fixture 入 git).

详见 feedback_bitter_lessons_r10_r37.md 10 条 + phase-archive/phase67-exit-patch-lineage/README.md.

阶段 4: 改源头 vs 出口补丁 (Phase 67 vs Phase 68, 2026-06-11 → 2026-06-12)

问题

R10-R28 19 轮 phase67 8 件出口补丁堆积, 总分 50/80 不涨. 真凶不在 LLM 出口字面.

方案 — 6 件 source-fix lineage

Phase 真凶 修法
68.A (commit 6933937) _safe_int(None)=0 silent fallback 不区分字段缺失 vs 真零 _safe_int_required helper (None 返 None + logger.warning), 老 helper 物理保留
68.B (commit 9983001) capture script 默认 IP 192.168.202.100 vs 真 asset_registry 注册 172.16.1.42 不对齐 4 文件字面同步对齐 + 67.A.6 红线 22 钉死
68.C (commit 8623c4e) _context_window 不识别 incident_window 字段 (只查 window/time_range) 1 函数 +6/-1 加 incident_window OR fallback
68.D (commit 78c0b33) round-loop reasoner 调用早于 hypothesis builder, partial_report.hypotheses=[] fallback post-build retry hook (final 真有 hypothesis 再调一次)
68.E (commit e72cde8) _HOSTNAME_RE lookbehind/lookahead 含中文 word char 漏脱真生产域名 (安全 P0) 2 行 regex 双 ASCII-only + filter-repo 洗 R31 history + 重 capture R34 验真
68.F (commit 531541e) _dhcp_asset_context 硬编 matched=False + _IP_FINDING_LABELS 字面缺 “失败次数 " 前缀变体 2 处真改 (asset_registry lookup 接入 + label 字面同步)

累积真效果 (R28→R37)

指标 R28 起点 R37 终点
baseline 测试 1768 1809 (+41)
8 维总分 50 80 (历史最高)
P0 总数 3 2
真新 P0 退步 R10-R28 19 轮 19 件涌入 R28-R37 9 轮仅 1 件
安全 P0 真泄漏 未审计 0 处真清 (filter-repo + 修源头)

教训

Source-fix 真比 exit-patch 有效. phase67 8 件每件平均贡献 = 0, phase68 6 件每件 = -0.17 P0 + +3.3 总分.

Plugin v0.1.2 source-fix whitelist 真有效: 让 phase68.X ≥3 不被 Check 4 误判 BLOCK.

详见 active-discovery-closeout.md + phase-archive/phase68-source-fix-lineage/README.md.

阶段 5: 按线索能力收口 (Phase 69 A-F, 2026-06-12)

问题

主动告警之外, 运维想自由文本提问 (“上周三 OA 慢”). phase49 后 0 改源真累积 1 年真凶.

方案 — 6 件 source-fix lineage (clue 路径)

Phase commit 真凶
69.A 78a6601 _auto_protocols DNS hint 4 个 + DHCP hint 5 个真窄 (AI 听不懂运维口语)
69.A.1 66427e5 clue 路径 0 fixture 入库 真没回归基础
69.B c65f078 _report 顶层不告知 silent fallback open_dataset 真发生
69.C 39f3034 ENV LIVE_MAX_WINDOW=6h 卡死 + execute_*_tool try/except 吞 Exception
69.D 2850420 ES query timeout 10s + 24h 仍卡老师 “>24h” 真问
69.E 7df58ee Frontend data_freshness_warning critical banner 真不渲染 (backend 真返但 UI 不消费)
69.F 2a4df23 Frontend BusinessImpactCard.vue slice(0, 5) 真截了 backend 真返的 12 业务系统

真效果 (老师 case 1 5/28 huawei-wlan-controller 真凶判定)

维度 phase49 后 phase69 收口后
真凶域名 “WPAD 4989 次” (完全错位) “huawei-wlan-controller 7,160,845 次 NOERROR” (与老师 openclaw 真凶 100% 匹配)
真数据 100 sample (silent fallback 2012) 39,760,343 真 24h 全量
真返时间 87s + 6 个 ES_TIMEOUT 52s, 0 timeout
data_freshness_warning critical 真告知 silent fallback None 真精准 (真 ES live)

教训 (lesson 11 新增)

.pyc cache 陷阱: phase69.A R1 二审真踩坑 — 改 .py 后 backend ts > src mtime, 但进程仍跑 stale .pyc. 必三步:

  1. kill backend
  2. rm -rf __pycache__
  3. 重启 backend

补强 lesson 6 (改 backend 必重启验 mtime). 详见 MEMORY feedback_pyc_cache_trap_after_src_edit.md.

Planning agent 局部最优偏置真复现: 我 (前轮 planning agent) 真停在 phase69.B 出口透明度 (告知 silent fallback), 老板真质疑 “为什么不能给真答案” → 真凶根 ENV 6h / ES timeout 才真深入. phase69.C/D 修后 case 1 真凶判定从 “WPAD” 改成真 huawei-wlan-controller. 教训 4 真到位: 不能停在最浅修法, 真凶层级深一层就再深入一层.

详见 clue-discovery-closeout.md + phase-archive/phase69-clue-source-fix-lineage/README.md.

阶段 6 (当前): 运维试用决策窗口

状态

两条主线技术阶段全收口:

  • 主动发现问题 R37 verdict READY 80/100
  • 按线索发现问题 R1 verdict NOT_OVERFIT 79/100

Frontend 高价值字段全消费 (data_freshness_warning 真渲染 + 12 业务系统全展示).

运维试用包就绪 (operator-trial-pack/ 5 文件 + README).

等什么

  • 老师 3 天日志真示例 (性能验证 168h 真聚合)
  • 真运维 2 周试用反馈 (UI 体验 / 误报率 / 是否每天用)

决策

试用反馈来后:

  • useful 率 > 60% → ticket/IM 集成 (Phase 28)
  • 集中"DHCP 业务影响看不到” → 起 phase69.G (DHCP business_impact.asset_context)
  • 集中"UI 看不懂" → UI 简化轮
  • 集中"AI 误报多" → 调阈值 + 改 LLM prompt

Plugin / Workflow 工具链演进

时间 工具 解决问题
R29 (2026-06-11) run_round_evaluation.sh v1 (R29 一键) 替代人工 curl 4 endpoint, 强制 fixture 入 git
R30 (2026-06-11) run_round_evaluation.sh v2 通用化 (phase auto-discover from git) 任意 R(N) 复用
R30 评估 agent prompt 模板 (YAML schema) R10-R27 free-form Markdown 评估时漂移 lesson
R30+ Planning agent 二审制度 (3 件亲核) R30/R31 真凶判定 3 次修正
R28 plugin v0.1.0 bootstrap 5 检查骨架
R30 plugin v0.1.1 — Check 5 self-contained + Check 2 mode-aware self-contained prompt 必长, 老 ≤150 限制误伤
R31 plugin v0.1.2 — Check 4 source-fix whitelist (区分 phase67 blacklist vs phase68 whitelist) phase68.X ≥3 误 BLOCK 救活
R37 收口 harness 增强 3 件 (MEMORY bitter-lessons + CLAUDE.md + .claude/settings.json SessionStart hook) 下个 planning agent SessionStart 强制看 lesson

R10-R37 历史 trend (verbatim)

R Phase P0 总数 真新 P0 退步 总分
R10 phase64 起 8 未量化
R13 phase66ab 7
R15 phase66d2 5
R17 phase67a2 5
R19 phase67b 3
R20 phase67d 2
R21 phase67e 3 1 (历史唯一直到 R27)
R22 phase67g 1 0
R23 phase67h 0 0
R24 phase67h' 0 0 55
R25 phase67f 5 (evaluator query 漂移真触发) 0 49
R26 phase67p 4 0 58
R27 phase67p2 5 3 (历史第 2 次 ≥3) 51
R28 phase67.S 3 0 50
R29 (phase68.B 字面对齐前) 1 (P0-4 67.A.2 ban list 当场抓) 0 unittest 基准 79
R30 phase68.B 后 3 0 54
R31 phase68.C 后 3 1 (B 0 hypothesis + ai_reasoning MISSING) 60
R32 phase68.D 后 (ES 抖) 3 0 63
R34 phase68.E 后 1 0 70 (历史最高)
R37 phase68.F 后 2 0 80 (历史最高)
R1 (clue 路径) phase69.A 后 4 (P0-a/b/c/d) 79/100 NOT_OVERFIT

详见 phase-archive/round-evaluations/ 各 R(N) doc.

已知遗留 (按优先级)

高 (运维试用反馈决定起不起)

真现状 候选 phase
DHCP business_impact.asset_context.matched=False 持续 R10-R37 28 轮 phase68.F 接通了 ai_reasoning.asset_context.matched=True, 但 business_impact 段是另一层装配 phase69.G (~15 行 backend)
asset_registry yaml 业务清单不够全 172.16.1.42 在 resolvers 但不在 business_systems[].server_ips phase69.H (~yaml 数据修, 非代码)
Frontend 反馈表 (Phase 38 反馈按钮) 实物打印 已就位 backend, frontend 部分场景未渲染 试用第 1 周必做, 不算 phase

中 (技术值得做, 但优先级低)

真现状
D dhcp_multiround 1 round early stop (R10-R37 17+ 轮持续) dhcp_multiround _should_stop 阈值过松, model planner round 2 永远不触发. 留 phase70.X (大切片 ~200-300 行新 dhcp_round_planner)
168h (7 天) 真聚合性能未真验 Phase 69.D 加 168h hard cap, 但老师真问 7 天可能超 frontend axios 180s timeout. 留试用反馈决 phase70.X (DSL 优化 / 分块聚合 / 14 tool 并发)
反馈通道 backend 已就位 (phase38), frontend 真渲染未全做 AlertFeedbackButtons.vue 部分页面 ok, 但 clue 路径不显示反馈按钮. 留 phase70.X

低 (本质局限, 不该修)

真现状
LLM 非确定性 — C endpoint rank1 R30-R37 7 轮 5 翻 (71% 翻车率) LLM 本质问题. 修需引入集成投票 (跑 N 次 LLM 投票最高), 留 R40+ 评估
LLM 真返字面偶发漂移 (narrative 段) LLM 本质问题. 试用前明示运维 “narrative 是参考不是确定”

历史 (已收口, 不要再起 phase)

状态
phase67.{H,H’,E,P,P2,Q,R,S} 8 件出口字面 caveat 永久停手. plugin v0.1.2 Check 4 BLOCK
R31 真泄漏 prod.authentication.deepinstinctweb.com 3 处 filter-repo 已洗 git history, 0 处真留, force push 远程已盖

转交清单 (毕业 / 责任转交时)

学生 → 接手人 必交付

类别 真清单
代码访问 GitLab repo 真权限 + branch 真权限
.env.local 真值 单独安全渠道 (微信不算, U 盘 OK), 含 DeepSeek key + asset_registry 真业务字典
backend / frontend 真部署机 SSH 真机 root 或 sudo 权限
ES 真访问 VPN 真账号 + ES 真 url + 真 cluster 健康检查命令
本地 LLM 真访问 真 url + 真 model 名 + 真联系人 (本地 LLM 部署管理员)
文档全套 docs/agent-handoff/** + docs/whitepaper/** + CLAUDE.md + MEMORY
真历史决策 本 doc (08-version-history) + feedback_bitter_lessons_r10_r37.md
Plugin 维护权 .claude-plugins/monitor-phase-workflow/ 真改 + 验 SOP
真后端 fixture test_backup/fixtures_real_backend*/ 40+ 个 R 轮真值

转交流程建议

  1. 接手人陪跑 1 个真完整 phase (按 07-extension-guide §改 backend 6 步): 1-2 周
  2. 接手人单独跑 1 轮 R(N) 评估: 1 天
  3. 接手人单独排 1 个真生产故障 (用 06-troubleshooting): 1 次
  4. 学生在场旁观, 不干预: 1 周
  5. 接手人通过 → 学生退场, 仍保留 24 小时 on-call 答疑 (建议 1 个月)

致谢 (项目内部价值标注, 非排序)

  • R10-R28 期间 19 轮 phase67 出口补丁堆积 — 真血泪教训, 反例归档
  • R28-R37 期间 6 件 phase68 source-fix — 真改源头, 总分 50→80
  • R1 期间 6 件 phase69 — 按线索能力收口
  • Plugin v0.1.2 设计 — 物理屏障 vs 道德约束的真胜利
  • 老师 case 1/2 真示例 — 让 phase69 真凶判定有真验证
  • 评估 agent 制度 + planning 二审 — 3 次真凶判定修正救命

本白皮书 8 章 (whitepaper README 入口) R37 收口写于 2026-06-12.

作者: [学生姓名] (项目作者) 未来维护: 见 README.md §维护责任表 最后更新: 2026-06-12 phase69.F + operator-trial-pack 收口后

如有任何不清楚的, 直接 grep 关键词到对应章节, 或问 planning agent.