<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>项目 on kkLullaby&#39;s Blog</title>
    <link>https://kklullaby.github.io/categories/%E9%A1%B9%E7%9B%AE/</link>
    <description>Recent content in 项目 on kkLullaby&#39;s Blog</description>
    <generator>Hugo -- 0.154.5</generator>
    <language>zh-cn</language>
    <lastBuildDate>Tue, 20 Jan 2026 10:00:00 +0800</lastBuildDate>
    <atom:link href="https://kklullaby.github.io/categories/%E9%A1%B9%E7%9B%AE/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Log Assitant 00: README</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/readme/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/readme/</guid>
      <description>&lt;h1 id=&#34;校园网络日志助手--技术白皮书&#34;&gt;校园网络日志助手 — 技术白皮书&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;给&lt;strong&gt;专业网络运营人员&lt;/strong&gt;看 — 让你能维护、能排障、能升级、能加新功能.
不是给老板的营销话术. 不是给运维试用员的速查表.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;你是谁-你为什么看这份-doc&#34;&gt;你是谁? 你为什么看这份 doc?&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;你的角色&lt;/th&gt;
          &lt;th&gt;推荐读法&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;首次接手项目&lt;/strong&gt; (从学生手里接)&lt;/td&gt;
          &lt;td&gt;顺序 01 → 02 → 04 → 05, 1 周内通读, 边读边按 SOP 跑一遍&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;日常运营维护&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;收藏 05 (operations) + 06 (troubleshooting), 出问题 grep 关键词翻&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;加新功能 / 改 backend&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;必读 07 (extension) + 08 (version-history), 不读教训 = 重蹈 R10-R28 覆辙&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;领导 / 评标方需要 overview&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;看 01 (~150 行, 15 分钟) 就够&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;debug 某个真字面 / error code&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;直接 grep 06 (troubleshooting) 关键词&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-章导航&#34;&gt;8 章导航&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;#&lt;/th&gt;
          &lt;th&gt;章节&lt;/th&gt;
          &lt;th&gt;关键问题&lt;/th&gt;
          &lt;th&gt;大小&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./01-overview.md&#34;&gt;01-overview.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;这是什么? 跟 ELK/Grafana 有啥区别?&lt;/td&gt;
          &lt;td&gt;~150 行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./02-architecture.md&#34;&gt;02-architecture.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;组件怎么搭? 哪个端口? 谁连谁?&lt;/td&gt;
          &lt;td&gt;~300 行 (含 ASCII 部署图)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./03-data-flow.md&#34;&gt;03-data-flow.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI 真在做什么? 数据怎么流?&lt;/td&gt;
          &lt;td&gt;~400 行 (含 4 endpoint × 3 段输出详)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./04-deployment.md&#34;&gt;04-deployment.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;如何装机? 配置项怎么填?&lt;/td&gt;
          &lt;td&gt;~300 行 (含全 ENV 表)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./05-operations-manual.md&#34;&gt;05-operations-manual.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;日常运维 SOP (启停 / 看 log / 健康检查 / 备份)&lt;/td&gt;
          &lt;td&gt;~400 行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./06-troubleshooting.md&#34;&gt;06-troubleshooting.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;出问题怎么排? error code 真表&lt;/td&gt;
          &lt;td&gt;~500 行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;7&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./07-extension-guide.md&#34;&gt;07-extension-guide.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;加新功能怎么做? 改 backend 必做 SOP&lt;/td&gt;
          &lt;td&gt;~300 行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;./08-version-history.md&#34;&gt;08-version-history.md&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;系统怎么演进到现在? 教训是什么?&lt;/td&gt;
          &lt;td&gt;~400 行&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;总 ~2750 行, ~70 页 A4. 不期待你按顺序读完, 按需查.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 01: Overview</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/01-overview/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/01-overview/</guid>
      <description>&lt;h1 id=&#34;01---系统概览&#34;&gt;01 - 系统概览&lt;/h1&gt;
&lt;h2 id=&#34;一句话定位&#34;&gt;一句话定位&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;校园网络日志助手&lt;/strong&gt; = ES 之上的&amp;quot;聚合查询编排 + LLM 解释 + 业务影响识别&amp;quot;中间层. 让运维不写 ES DSL, 用自然语言诊断 DNS/DHCP 故障.&lt;/p&gt;
&lt;h2 id=&#34;不是什么&#34;&gt;不是什么&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;误解&lt;/th&gt;
          &lt;th&gt;真值&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;替代 ELK&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;❌. ES 必须在底层, 本系统不存日志&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;替代 Grafana&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;❌. 本系统不画 metric 时序图, 只做&amp;quot;问题诊断&amp;quot;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;ChatGPT 套壳问答&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;❌. 真接你的 ES, 真用 14 个白名单 ES 聚合 query, LLM 只编排不直接读 raw&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;AI 自动修网络&amp;rdquo;&lt;/td&gt;
          &lt;td&gt;❌. 安全三旗物理禁止 (&lt;code&gt;execution_enabled=false&lt;/code&gt;). AI 只给建议, 运维手动改&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;是什么&#34;&gt;是什么&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;真能力&lt;/th&gt;
          &lt;th&gt;真做法&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;主动发现问题&lt;/td&gt;
          &lt;td&gt;滚动告警扫描 (10 分钟/次, 看过去 15 分钟 DNS/DHCP 失败率), 越阈值出告警进队列, 运维点告警出 AI 报告&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;按线索发现问题&lt;/td&gt;
          &lt;td&gt;运维输入自由文本 &amp;ldquo;教学区今天 DNS 慢&amp;rdquo;, LLM 抽时间窗+真凶域名+IP, 跑 14 工具真聚合, 出诊断报告&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;业务影响识别&lt;/td&gt;
          &lt;td&gt;asset_registry yaml 维护 12 个业务系统 IP 映射, 报告里直接说&amp;quot;影响统一认证 / 校园门户 / 教务系统 &amp;hellip;&amp;quot; 而非 &amp;ldquo;172.16.x.x&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全边界&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;raw_log_scan=false&lt;/code&gt; (不直读 raw 日志), &lt;code&gt;preview_only=true&lt;/code&gt; (建议预览不执行), &lt;code&gt;execution_enabled=false&lt;/code&gt; (禁运维变更)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;跟-elk--grafana--prometheus-对比&#34;&gt;跟 ELK / Grafana / Prometheus 对比&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;系统&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
          &lt;th&gt;跟本系统关系&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Elasticsearch&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;存日志 + 提供 DSL 查询&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;本系统必依赖&lt;/strong&gt;. 跑在 ES 上层. ES 挂了本系统 fallback 到 2012 历史样本数据 (会显红色 banner)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Logstash / Filebeat&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;日志采集进 ES&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;本系统不管&lt;/strong&gt;. 假设 ES 里 &lt;code&gt;dns-dnstap-*&lt;/code&gt; &lt;code&gt;syslog-bras-*&lt;/code&gt; &lt;code&gt;iaaa_app_baseinfo&lt;/code&gt; index 已 ready&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Kibana&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;ES 探索性查询 + 仪表盘&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;平行存在&lt;/strong&gt;. 运维想直接看 raw 日志去 Kibana, 想出诊断报告来本系统&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;时序 metric 图 (CPU/QPS/latency)&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;不冲突&lt;/strong&gt;. Grafana 看趋势, 本系统看故障根因. 后续可能加 Grafana datasource 把本系统报告嵌进面板&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Prometheus&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;metric 采集 + 告警规则&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;平行&lt;/strong&gt;. 本系统的滚动告警是基于 ES 聚合不是 Prometheus rule&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Sentry / 自建告警&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;应用层错误告警&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;不重叠&lt;/strong&gt;. 本系统是网络层 (DNS/DHCP) 不是应用层&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;何时该用--不该用&#34;&gt;何时该用 / 不该用&lt;/h2&gt;
&lt;h3 id=&#34;-该用本系统&#34;&gt;✅ 该用本系统&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;学生反映 &amp;ldquo;网慢&amp;rdquo;, 想 10 分钟内定位是 DNS / DHCP / 上游 / 业务系统&lt;/li&gt;
&lt;li&gt;告警平台报了一堆&amp;quot;DNS 失败 N 次&amp;quot;, 想 AI 帮把同根因的合并 + 给业务影响&lt;/li&gt;
&lt;li&gt;新员工不会写 ES DSL, 想用中文问 &amp;ldquo;上周三晚上 OA 打不开&amp;rdquo;&lt;/li&gt;
&lt;li&gt;想审计 AI 真凶判定准确度 (跑 R(N) 真后端评估)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;-不该用本系统&#34;&gt;❌ 不该用本系统&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;想看 CPU / 内存 / 带宽时序图 → 用 Grafana&lt;/li&gt;
&lt;li&gt;想 grep 某条原始 syslog → 用 Kibana&lt;/li&gt;
&lt;li&gt;想自动修复某个故障 (重启 nginx) → 用 Ansible / 自建脚本, 本系统物理禁止变更&lt;/li&gt;
&lt;li&gt;想做 SIEM 安全审计 → 用 Splunk / ELK + SIEM 插件, 本系统只看 DNS/DHCP 不看安全事件&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;核心能力清单-4-endpoint--3-段输出&#34;&gt;核心能力清单 (4 endpoint × 3 段输出)&lt;/h2&gt;
&lt;h3 id=&#34;4-个真后端-endpoint&#34;&gt;4 个真后端 endpoint&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;端&lt;/th&gt;
          &lt;th&gt;URL&lt;/th&gt;
          &lt;th&gt;用法&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;A&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;POST /api/v1/log-assistant/dns/resolver-chain-triage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;DNS 单端深度诊断 (给定 resolver_ip + 时间窗, 出报告)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;B&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;POST /api/v1/log-assistant/ai/multiround-triage&lt;/code&gt; (&lt;code&gt;protocol=dns&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;DNS 多轮排障 (AI 自己决定跑哪几个工具)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;C&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;POST /api/v1/log-assistant/dhcp/ai-tool-triage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;DHCP 单工具诊断 (5 个 DHCP 聚合查询并跑)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;D&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;POST /api/v1/log-assistant/ai/multiround-triage&lt;/code&gt; (&lt;code&gt;protocol=dhcp&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;DHCP 多轮排障&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;加按线索路径 &lt;code&gt;POST /api/v1/log-assistant/clue/diagnose&lt;/code&gt; (自由文本输入).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 02: Architecture</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/02-architecture/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/02-architecture/</guid>
      <description>&lt;h1 id=&#34;02---部署架构&#34;&gt;02 - 部署架构&lt;/h1&gt;
&lt;h2 id=&#34;部署拓扑-ascii-图&#34;&gt;部署拓扑 (ASCII 图)&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────────┐
│                        校内 GBU 网络环境                              │
│                                                                       │
│  ┌──────────────┐       ┌────────────────┐                           │
│  │ 运维浏览器     │──HTTP─→│  Frontend       │                           │
│  │ (admin role) │  3002 │  Vite dev /     │                           │
│  └──────────────┘       │  Vue 3 SPA      │                           │
│        ↑                └────────┬───────┘                           │
│        │ HMR/static reload       │                                    │
│        │                         │ axios POST /api/v1/log-assistant/* │
│        │                         ↓                                    │
│  ┌─────┴────────────────────────────────────────────────────┐       │
│  │  Backend Flask (port 5000)                                │       │
│  │  ┌────────────────────────────────────────────────────┐  │       │
│  │  │ 51 API routes / log_assistant_api.py 主入口         │  │       │
│  │  │   - /dns/resolver-chain-triage  (A)                │  │       │
│  │  │   - /ai/multiround-triage       (B, D)             │  │       │
│  │  │   - /dhcp/ai-tool-triage        (C)                │  │       │
│  │  │   - /clue/diagnose              (按线索)            │  │       │
│  │  │   - /alerts /feedback /audit / ...                 │  │       │
│  │  └────────────────────────────────────────────────────┘  │       │
│  │  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐ │       │
│  │  │ tool_        │   │ hypothesis_  │   │ business_    │ │       │
│  │  │ orchestrator │──→│ reasoner +   │──→│ impact_      │ │       │
│  │  │ (14 工具)     │   │ dhcp variant │   │ estimator    │ │       │
│  │  └──────┬───────┘   └──────┬───────┘   └──────┬───────┘ │       │
│  │         │                  │                  │          │       │
│  │         ↓                  ↓                  ↓          │       │
│  │  ┌──────────────────────────────────────────────────┐    │       │
│  │  │  invariants / sanitizers / safety guards         │    │       │
│  │  │  - report_status_invariants (15+ 守门)            │    │       │
│  │  │  - sanitize (输出禁敏感字面)                       │    │       │
│  │  │  - safety_flags 三旗物理禁                        │    │       │
│  │  └──────────────────────────────────────────────────┘    │       │
│  └────┬────────────────┬───────────────────────┬───────────┘       │
│       │                │                       │                    │
│       ↓ ES DSL         ↓ HTTP                  ↓ 读 yaml             │
│  ┌─────────┐    ┌──────────────────┐    ┌────────────────────┐     │
│  │ ES 集群  │    │ 本地 LLM (主)     │    │ asset_registry.yaml│     │
│  │ :9200   │    │ Qwen 等 校内部署 │←┐  │ 12 业务系统真值     │     │
│  │ via VPN │    │                  │ │  │ servers.demo.json  │     │
│  │         │    └──────────────────┘ │  │ topology.json       │     │
│  │ index:  │                          │  └────────────────────┘     │
│  │ dns-    │                          │ fallback                    │
│  │ dnstap* │    ┌──────────────────┐ │                              │
│  │ syslog- │    │ DeepSeek API     │─┘                              │
│  │ bras*   │    │ v4-flash/v4-pro  │                                │
│  │ iaaa_*  │    │ (云端 fallback)   │                                │
│  └─────────┘    └──────────────────┘                                │
└─────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;组件清单&#34;&gt;组件清单&lt;/h2&gt;
&lt;h3 id=&#34;backend-python-310-flask&#34;&gt;Backend (Python 3.10+ Flask)&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;组件&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;行数&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;API 入口&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/backend/api/log_assistant_api.py&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;2600+&lt;/td&gt;
          &lt;td&gt;51 个 HTTP route + dispatch 各 endpoint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Assistant 业务模块&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/backend/assistant/*.py&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~60 文件&lt;/td&gt;
          &lt;td&gt;14 工具 + 2 reasoner + clue_diagnostics + invariants + sanitizers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tool orchestrator&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/backend/assistant/tool_orchestrator/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~10 文件&lt;/td&gt;
          &lt;td&gt;multiround agent + plan validator + tool registry (DNS/DHCP)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Asset registry&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/backend/assistant/asset_registry*.py&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~3 文件&lt;/td&gt;
          &lt;td&gt;yaml + ES 多源 merge 出 12 业务系统 + 21 subnet + 21 resolvers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sanitizer&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/scripts/sanitize_fixture.py&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~250 行&lt;/td&gt;
          &lt;td&gt;真后端 fixture 入库前脱敏真生产域名/IP/MAC&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Plugin (元工程)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;.claude-plugins/monitor-phase-workflow/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~180 行&lt;/td&gt;
          &lt;td&gt;phase-prompt-guard 5 检查 (本项目专用, 不入全局)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;frontend-node-18-vue-3-vite&#34;&gt;Frontend (Node 18+ Vue 3 Vite)&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;组件&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;数&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Vue 3 SPA&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/frontend/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;58 文件&lt;/td&gt;
          &lt;td&gt;用户 UI, 单页应用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主组件 LogAssistant&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;frontend/src/components/logAssistant/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~30 .vue&lt;/td&gt;
          &lt;td&gt;告警队列, 报告卡, 反馈按钮, 按线索输入&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;API client&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;frontend/src/api/index.js&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;~1200 行&lt;/td&gt;
          &lt;td&gt;axios 包装 51 个 backend API&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vite&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;npm run dev&lt;/code&gt; (port 3002)&lt;/td&gt;
          &lt;td&gt;&amp;ndash;&lt;/td&gt;
          &lt;td&gt;dev server HMR&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vite build&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&amp;ndash;&lt;/td&gt;
          &lt;td&gt;生产打包 (chunk-size warning 已知, 不阻塞)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;database-sqlite-本地&#34;&gt;Database (SQLite, 本地)&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;DB&lt;/th&gt;
          &lt;th&gt;路径&lt;/th&gt;
          &lt;th&gt;真用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;主 DB&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/backend/diagnose/database/monitor.db&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;告警队列 / 反馈记录 / audit log / 网络设备表&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;临时 DB&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;/tmp/claude-1000/tmpXXXX/monitor.db&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;单测真跑 (mtime 后即清)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;真后端-fixture-历史回归基础&#34;&gt;真后端 fixture (历史回归基础)&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;目录&lt;/th&gt;
          &lt;th&gt;真值&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/test_backup/fixtures_real_backend/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;35 个 R29-R37 JSON&lt;/td&gt;
          &lt;td&gt;主动发现路径回归&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;workspace/system_monitor/test_backup/fixtures_real_backend_clue/&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;10 个 R1-R5 clue JSON&lt;/td&gt;
          &lt;td&gt;按线索路径回归&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;raw_*&lt;/code&gt; 前缀&lt;/td&gt;
          &lt;td&gt;gitignored&lt;/td&gt;
          &lt;td&gt;脱敏前真值, 入库前删&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;端口表-生产部署必填&#34;&gt;端口表 (生产部署必填)&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;服务&lt;/th&gt;
          &lt;th&gt;默认端口&lt;/th&gt;
          &lt;th&gt;真用 ENV 改&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Backend Flask&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;5000&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;(硬码, 改要动 &lt;code&gt;backend/app.py&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;HTTP API&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Frontend Vite (dev)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;3002&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;frontend/vite.config.js&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;开发用 SPA, 生产改 nginx 静态托管&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Elasticsearch&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;9200&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OPENCLAW_ES_URL&lt;/code&gt; (default &lt;code&gt;http://10.10.1.147:9200&lt;/code&gt;)&lt;/td&gt;
          &lt;td&gt;ES DSL 查询&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;本地 LLM (Qwen 等)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;[本地部署 url, e.g. http://10.10.x.x:8000]&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OPENCLAW_LOCAL_URL&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;LLM 主推理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek API&lt;/td&gt;
          &lt;td&gt;HTTPS 443&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OPENCLAW_DEEPSEEK_URL=https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;LLM fallback&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;网络要求&#34;&gt;网络要求&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;流量方向&lt;/th&gt;
          &lt;th&gt;端口&lt;/th&gt;
          &lt;th&gt;协议&lt;/th&gt;
          &lt;th&gt;必须放通&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;运维浏览器 → Frontend&lt;/td&gt;
          &lt;td&gt;3002&lt;/td&gt;
          &lt;td&gt;HTTP&lt;/td&gt;
          &lt;td&gt;校内&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Frontend → Backend&lt;/td&gt;
          &lt;td&gt;5000&lt;/td&gt;
          &lt;td&gt;HTTP&lt;/td&gt;
          &lt;td&gt;同机 / 校内&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Backend → ES&lt;/td&gt;
          &lt;td&gt;9200&lt;/td&gt;
          &lt;td&gt;HTTP&lt;/td&gt;
          &lt;td&gt;跨校内 VPN, 见下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Backend → 本地 LLM&lt;/td&gt;
          &lt;td&gt;[本地端口]&lt;/td&gt;
          &lt;td&gt;HTTP&lt;/td&gt;
          &lt;td&gt;校内, 同机房&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Backend → DeepSeek API&lt;/td&gt;
          &lt;td&gt;443&lt;/td&gt;
          &lt;td&gt;HTTPS&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;必须出公网&lt;/strong&gt; (本地 LLM 挂时 fallback 救命)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;ES 跨 VPN 真值&lt;/strong&gt;: 一些校内部署 ES 在另一个网段, 需 &lt;code&gt;vpn.gbu.edu.cn&lt;/code&gt; SSL VPN. 测试时 &lt;code&gt;curl http://10.10.1.147:9200/_cluster/health&lt;/code&gt; 真过才证明 backend 能连通.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 03: Data-flow</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/03-data-flow/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/03-data-flow/</guid>
      <description>&lt;h1 id=&#34;03---数据流详解&#34;&gt;03 - 数据流详解&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;AI 真在做什么? 怎么从 &amp;ldquo;运维点告警&amp;rdquo; 走到 &amp;ldquo;出诊断报告&amp;rdquo;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;总览数据流&#34;&gt;总览数据流&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;运维操作                  Backend 真做                       数据真去向
─────────                ──────────                       ─────────
[选告警 / 自由文本] ──→ alert envelope 或 clue parser ──→ context (resolver_ip + window)
                              │
                              ↓
                         [_context_window 验时间窗合法]
                              │
                              ↓
                    ┌─────────┴──────────┐
                    │ deterministic seed │ ← Phase 68.C: incident_window fallback
                    │ plan (round 1)     │
                    └────────┬───────────┘
                             │
                             ↓
                    [tool_plan_validator 校 args]
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ 跑 ES 聚合 (8 DNS / 6 DHCP) │ → ES :9200 真返聚合数字
              │ tool_orchestrator           │
              └──────────────┬─────────────┘
                             │
                             ↓
                    [tool_trace 记录]
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ multiround: round 2 / 3    │
              │ model planner (LLM) 决定    │ ← LLM 真调
              │ 下一步跑哪几个工具          │
              └──────────────┬─────────────┘
                             │
                             ↓
                    [agent_stop_policy 早停判定]
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ build_multiround_report     │ ← Phase 68.D 真凶: 这里生成 hypothesis
              │ (生成 root_cause_hypotheses)│
              └──────────────┬─────────────┘
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ reasoner_factory 装回      │ ← Phase 68.D 加 post-build retry hook
              │ ai_reasoning 字段          │
              └──────────────┬─────────────┘
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ asset_registry lookup      │ ← Phase 68.B/F: asset_context.matched
              │ → business_impact           │   12 业务系统真识别
              └──────────────┬─────────────┘
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ recommended_actions builder │
              │ (3 tier: emergency/        │
              │  mitigation/long_term)      │
              └──────────────┬─────────────┘
                             │
                             ↓
              ┌──────────────┴─────────────┐
              │ report_status_invariants    │ ← 15+ 守门, 出口前最后验
              │ + sanitizers + safety_flags │   (phase68.E sanitize CJK regex)
              └──────────────┬─────────────┘
                             │
                             ↓ JSON
                    [Frontend Vue 真渲染]
                             │
                             ↓
                    [运维看 3 段输出]
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;4-endpoint--3-段输出真值&#34;&gt;4 endpoint × 3 段输出真值&lt;/h2&gt;
&lt;h3 id=&#34;endpoint-a-dns-resolver-chain-triage-单端&#34;&gt;Endpoint A: DNS Resolver-Chain Triage (单端)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;真请求&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 04: Deployment</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/04-deployment/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/04-deployment/</guid>
      <description>&lt;h1 id=&#34;04---装机-sop&#34;&gt;04 - 装机 SOP&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;从 git clone 到运维真能用, 30-60 分钟. 出问题对照 &lt;a href=&#34;./06-troubleshooting.md&#34;&gt;06-troubleshooting.md&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;系统要求&#34;&gt;系统要求&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;项&lt;/th&gt;
          &lt;th&gt;要求&lt;/th&gt;
          &lt;th&gt;真验&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;OS&lt;/td&gt;
          &lt;td&gt;Linux Ubuntu 22.04+ (本项目真用), 其他 distro 理论可&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;lsb_release -a&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;3.10+ (本项目真用 3.10, 不用更老)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;python3 --version&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Node.js&lt;/td&gt;
          &lt;td&gt;18.x+ (Vue 3 + Vite 8 真需要)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;node --version&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;npm&lt;/td&gt;
          &lt;td&gt;9.x+&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;npm --version&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Git&lt;/td&gt;
          &lt;td&gt;2.30+ (filter-repo 真需要)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;git --version&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;磁盘&lt;/td&gt;
          &lt;td&gt;5 GB+ (含 node_modules 127M + venv 55M + logs 累积)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;df -h&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAM&lt;/td&gt;
          &lt;td&gt;2 GB+ (backend Flask 500MB + frontend Vite 200MB)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;free -m&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;网络&lt;/td&gt;
          &lt;td&gt;校内 + 出公网 (DeepSeek API fallback 救命)&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;curl -I https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;4-步装机&#34;&gt;4 步装机&lt;/h2&gt;
&lt;h3 id=&#34;步骤-1-clone-代码--venv&#34;&gt;步骤 1: clone 代码 + venv&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. clone&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/code/project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone &amp;lt;repo-url&amp;gt; cs-26spring-final-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; cs-26spring-final-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 建 venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m venv backend/.venv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; backend/.venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install --upgrade pip
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -r backend/requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;backend/.venv/bin/python -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;import flask; print(flask.__version__)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 3.1.3+ (本项目真用 3.1.3)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;步骤-2-frontend-依赖&#34;&gt;步骤 2: frontend 依赖&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor/frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 真返时间: ~30s (校内镜像) / 5 min (官方源)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 验&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: ✓ built in N.NNs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;步骤-3-配置-envlocal-机密-不入-git&#34;&gt;步骤 3: 配置 &lt;code&gt;.env.local&lt;/code&gt; (机密, 不入 git)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.local.example .env.local
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim .env.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;必填项&lt;/strong&gt; (无这些 backend &lt;code&gt;sys.exit(1)&lt;/code&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 05: Operations-manual</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/05-operations-manual/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/05-operations-manual/</guid>
      <description>&lt;h1 id=&#34;05---日常运维-sop&#34;&gt;05 - 日常运维 SOP&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;出问题翻 &lt;a href=&#34;./06-troubleshooting.md&#34;&gt;06-troubleshooting.md&lt;/a&gt;. 本文是预防性日常.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;每天做的事-5-分钟&#34;&gt;每天做的事 (~5 分钟)&lt;/h2&gt;
&lt;h3 id=&#34;1-health-check&#34;&gt;1. Health check&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /home/kk/code/project/cs-26spring-final-project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Backend 还在跑?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pgrep -af &lt;span class=&#34;s2&#34;&gt;&amp;#34;backend/app.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;bash -c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 1 行真返 (PID + cmd)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Frontend dev (试用阶段) 还在跑?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pgrep -af &lt;span class=&#34;s2&#34;&gt;&amp;#34;vite&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;bash -c&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 1 行真返 (Vite dev server)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 生产 nginx 用 sudo systemctl status nginx 看&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Backend HTTP 响应&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s -o /dev/null -w &lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP %{http_code}\n&amp;#34;&lt;/span&gt; --max-time &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; http://127.0.0.1:5000/api/v1/healthz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 200 / 401 / 404 (都算在跑); 000 = 死了重启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Backend log tail (有无 OPENCLAW timeout / ES 5xx)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -50 workspace/system_monitor/logs/backend-verify.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -E &lt;span class=&#34;s2&#34;&gt;&amp;#34;ERROR|Traceback|timeout|5xx&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 0 行或少量 retry warning 即可&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-安全-grep-audit-真生产数据&#34;&gt;2. 安全 grep (audit 真生产数据)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 真生产域名 grep (Phase 68.E sanitize 修源头后应 0)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -500 workspace/system_monitor/logs/backend-verify.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -cE &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepinstinctweb|gbu\.edu&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: 0 (backend log 可能含真上游 ES 数据, 累积 0-5 行不算严重, &amp;gt; 50 行说明 sanitize 漏)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 真 MAC grep (RFC 1918/5737 占位 ✓ 真 MAC ❌)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -500 workspace/system_monitor/logs/backend-verify.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -cE &lt;span class=&#34;s2&#34;&gt;&amp;#34;[0-9a-f]{2}(:[0-9a-f]{2}){5}&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 0 = 无真 MAC; &amp;gt; 0 需看是不是 02:00:00:* 占位 (Phase 67.A.1 sanitize 生成的, 合法)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-反馈表汇总-试用阶段&#34;&gt;3. 反馈表汇总 (试用阶段)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 看运维填了多少&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s --max-time &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt; http://127.0.0.1:5000/api/v1/log-assistant/feedback/summary &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization: Bearer &amp;lt;admin_token&amp;gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; python3 -m json.tool
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望真返: {&amp;#34;useful&amp;#34;: N, &amp;#34;needs_more&amp;#34;: M, &amp;#34;false_positive&amp;#34;: K, ...}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 试用第 1 周末看是否 N+M+K &amp;gt; 0 (有真反馈)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;每周做的事-30-分钟&#34;&gt;每周做的事 (~30 分钟)&lt;/h2&gt;
&lt;h3 id=&#34;1-跑-unittest-baseline-验真&#34;&gt;1. 跑 unittest baseline 验真&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTHONPATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;. ./backend/.venv/bin/python -m unittest discover test_backup 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 期望: Ran 1850 tests in NN.NNs OK (skipped=1)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 真退 = 真有 phase 改源破回归, 立即:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. git log --oneline 最近 5 commit 看改了啥&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 还原到上一个 PASS 的 commit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 起 phase 修真凶&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-跑-rn-评估轮-验真后端真稳定&#34;&gt;2. 跑 R(N) 评估轮 (验真后端真稳定)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/run_round_evaluation.sh r-week&amp;lt;N&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;6 步 pipeline 真跑:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 06: Teoubleshooting</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/06-troubleshooting/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/06-troubleshooting/</guid>
      <description>&lt;h1 id=&#34;06---真排障手册&#34;&gt;06 - 真排障手册&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;直接 Ctrl+F 搜你看到的真字面 (error code / log 关键词). 5 类紧急情况 + 全 degraded_reason 真表 + 真后端 trace 看法.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;紧急程度-4-档&#34;&gt;紧急程度 4 档&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;档&lt;/th&gt;
          &lt;th&gt;真症状&lt;/th&gt;
          &lt;th&gt;响应时间&lt;/th&gt;
          &lt;th&gt;升级&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;🚨 P0 紧急&lt;/td&gt;
          &lt;td&gt;系统完全死 / 真泄漏发现 / 真安全事件&lt;/td&gt;
          &lt;td&gt;&amp;lt; 5 min&lt;/td&gt;
          &lt;td&gt;立即 SSH 上去, 见下 §5 类紧急&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;⚠ P1 重要&lt;/td&gt;
          &lt;td&gt;AI 报告字面错 / 关键 endpoint degraded&lt;/td&gt;
          &lt;td&gt;&amp;lt; 30 min&lt;/td&gt;
          &lt;td&gt;看 backend log + grep degraded_reason&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;📝 P2 一般&lt;/td&gt;
          &lt;td&gt;某场景偶发 false_positive / UI 体验差&lt;/td&gt;
          &lt;td&gt;&amp;lt; 1 day&lt;/td&gt;
          &lt;td&gt;收集反馈, 起 phase&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;💡 P3 改进&lt;/td&gt;
          &lt;td&gt;运维建议加新功能&lt;/td&gt;
          &lt;td&gt;试用结束汇总&lt;/td&gt;
          &lt;td&gt;起 preliminary doc&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;5-类紧急情况-p0&#34;&gt;5 类紧急情况 (P0)&lt;/h2&gt;
&lt;h3 id=&#34;紧急-1-backend-完全不响应&#34;&gt;紧急 1: backend 完全不响应&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;真症状&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 07: Extension-guide</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/07-extension-guide/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/07-extension-guide/</guid>
      <description>&lt;h1 id=&#34;07---扩展指南&#34;&gt;07 - 扩展指南&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;加新功能 / 改 backend / 加新检测家族. 必读 — 不读会重蹈 R10-R28 19 轮覆辙.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;改-backend-必做-sop&#34;&gt;改 backend 必做 SOP&lt;/h2&gt;
&lt;p&gt;任何 backend &lt;code&gt;.py&lt;/code&gt; 改动 (新加功能 / 修 bug / 改 LLM prompt) 走以下 6 步:&lt;/p&gt;
&lt;h3 id=&#34;step-1-起-phase-前先调查-不允许直接动手&#34;&gt;Step 1: 起 phase 前先调查 (不允许直接动手)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;找真凶 - &lt;strong&gt;不靠猜, 靠 venv 实测 + 真后端 fixture 复现&lt;/strong&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; workspace/system_monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 跑某真后端 fixture 验真凶现状&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTHONPATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;. ./backend/.venv/bin/python -c &lt;span class=&#34;s2&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;import json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;d = json.load(open(&amp;#39;test_backup/fixtures_real_backend/r37_b_dns_multi.json&amp;#39;))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# 真验你怀疑的字段...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;grep 同源 lineage 件数&lt;/strong&gt; - 决定该改源头还是出口补丁:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Assitant 08: Version-history</title>
      <link>https://kklullaby.github.io/posts/log_assitant_whitepaper/08-version-history/</link>
      <pubDate>Tue, 20 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://kklullaby.github.io/posts/log_assitant_whitepaper/08-version-history/</guid>
      <description>&lt;h1 id=&#34;08---版本演进--教训&#34;&gt;08 - 版本演进 + 教训&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;按&lt;strong&gt;问题 → 方案 → 教训&lt;/strong&gt; 写, 不是 feature flow. 让你看懂为什么系统长成现在这样.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;阶段-1-es-接通--安全边界-phase-3-17-2026-04&#34;&gt;阶段 1: ES 接通 + 安全边界 (Phase 3-17, 2026-04)&lt;/h2&gt;
&lt;h3 id=&#34;问题&#34;&gt;问题&lt;/h3&gt;
&lt;p&gt;运维不会写 ES DSL, 想用自然语言查 DNS/DHCP 异常.&lt;/p&gt;
&lt;h3 id=&#34;方案&#34;&gt;方案&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Backend 封装 4 个聚合 query API (DNS failure summary / DHCP message summary / 失败 drilldown / top X)&lt;/li&gt;
&lt;li&gt;安全三旗物理禁止 (&lt;code&gt;raw_log_scan=false&lt;/code&gt; / &lt;code&gt;preview_only=true&lt;/code&gt; / &lt;code&gt;execution_enabled=false&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;真后端 ES 用聚合不读 raw 文档&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;教训&#34;&gt;教训&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;没有, 这阶段真凶链路简单, 0 出口补丁&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;阶段-2-ai-加层-phase-32-37-2026-05&#34;&gt;阶段 2: AI 加层 (Phase 32-37, 2026-05)&lt;/h2&gt;
&lt;h3 id=&#34;问题-1&#34;&gt;问题&lt;/h3&gt;
&lt;p&gt;聚合数字给运维但他还要解释 (&amp;ldquo;失败率 35.73% 说明啥?&amp;rdquo;), 想 LLM 把数字翻成自然语言.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
