模块 6 · 数据分析 Agent

数据不变量
在 sql_guard 不在 prompt

结构:独立 analyst_agent(非 chat StateGraph)。 特征:仅 SELECT、域隔离、deny 可审计。 ADR:2026-09-11-query-interpret-split-design.md(问数 vs interpret 拆分)。

Least worst:不追求万能 NL2SQL

模板 + 白名单 16 表 + guard 探针 = 可答辩的最小可靠组合;自由 SQL 靠 prompt 是软设计。

数据推论(书): 最重要决策常跟「谁能看哪张表、哪一行」有关——TEST-AN-001 修的就是这个。
guard
sql_guard.validate(sql, role, domain)
  → 表白名单
  → ROW_SCOPED 归属 WHERE
deny/clarify → 不调 LLM 解读
白话

指挥 AI 加表:同时改 guard、模板、MEMORY 白名单说明、探针。

「inject_ownership 定义了但零调用」= 决策写了 enforcement 未接——典型 vitality 债。

假阀门长什么样?