Skip to content

10-检查清单与FAQ

立项 / 上线 / 治理三个关键节点的检查清单,加 cost-query 团队收集的常见踩坑 FAQ。


立项前逐项确认,4 项及以上”是”才建议立项

  • 已经有相对独立的分析库(不是直接挂 OLTP);
  • 维度宽表(项目 / 客户 / 产品 / 城市等)已建成或能在 1 个月内建成;
  • 至少 1 张事实宽表已经星型化;
  • 数据更新节奏稳定(每天 / 每小时 / 实时)。
  • 业务用户 80% 提问能落到「某口径下某指标」的形式;
  • 业务用户提问的维度组合相对收敛(不是每天全新问法);
  • 至少有 30-50 道代表性问题能提前梳理出来;
  • 业务方愿意每周 2 小时投入测评协同。
  • 业务方理解”无数据时不能补数”;
  • 业务方理解”样本不足时只能弱结论”;
  • 业务方愿意接受”用户给的数字与数据库不一致时反问,不直接信”;
  • 业务方理解上线后仍有 10-15% 的复杂场景需要人工兜底。
  • 至少 1 个 AI 工程师集中参与(2 个月,60-80%);
  • 至少 1 个业务产品参与(前 2 个月 40-60%);
  • 至少 0.5 个数据工程师配合(前 1 个月集中);
  • 上线后至少 0.5 人持续做模式手册治理与 Bad case 修复。
  • 已接入 Claude / GPT-4 级别模型;
  • 已经能用 Skill / Agent / MCP 等基础能力;
  • Prompt 调优 / 测评 / 发布的基本流程已建立。

第 1 个月末按以下逐项检查。

  • schema.yaml 已定义至少 1 个事实 cube + 3-5 个维度 cube;
  • 每个 cube 有 description / grain / role;
  • 数据语义陷阱已写进 description 明文;
  • inferredFilters / defaultFilters / friendlyAlias 至少配置了 1 处;
  • fetch_schema 已生成速查版(_index.yaml + 事实 cube 单文件 + dimensions.yaml);
  • 单事实 cube 单文件 < 500 行。
  • 至少 3 个二级指令(覆盖 find / agg);
  • 每个指令 --info 能打印参数清单;
  • 每个指令 --dry-run 能打印编译出的 DSL;
  • 至少 1 个业务化封装(类似 measureGroups 这种)。
  • 核心定位明确(业务专家角色);
  • 数据底线 + 高危红线 已写;
  • L1-L4 意图分层已写;
  • 主查询后收口门已写;
  • 领域归因框架已写(不是直接抄五差);
  • 红线与替代动作表已写;
  • 行数控制在 250-350 行。
  • 至少 5-10 个模式;
  • 每个模式有清晰的”命中关键词”列;
  • 每个模式有可直接抄的”命令模板”;
  • 槽位标注规则已建立(低/中/高风险);
  • 维度风险分级表已写;
  • 反模式黑名单 ≥ 5 条;
  • §0 必读铁律已写(D1-D3 至少覆盖 0 行机械撤宽)。
  • 至少 20 题;
  • L1-L4 各覆盖;
  • 每题有 5 项参考信息(路径 / 参数 / 结论 / 边界 / 评分要点);
  • 跑批工具能跑通;
  • CLI 分 + 结论分解耦评分;
  • 全量测评总分 ≥ 75%。
  • 已有 1-2 个业务方试用渠道;
  • 每周至少 1 次业务方反馈收集;
  • Bad case 流转流程已跑通(业务反馈 → 测评 → 治理)。

生产上线前逐项确认。

  • 测评集 ≥ 50 题;
  • 连续 2 轮全量测评总分 ≥ 80%;
  • CLI 分 ≥ 85%、结论分 ≥ 80%;
  • 无单题低于 50 分;
  • 复合问题(拆段)能力跑通;
  • 0 行 / 全 NULL / 撤宽即终点 兜底能力跑通;
  • 高危红线(不补数 / 不手写 SQL / 不混业态强判断)测评全通过。
  • DSL 编译器在 100 次随机调用中错误率 < 1%;
  • 数据库连接稳定(连续 1000 次查询无超时);
  • 平均查询延迟 < 3 秒(含 LLM 推理 + SQL 执行);
  • 单次最长延迟 < 30 秒;
  • 异常情况有日志记录(错误堆栈 + DSL + SQL);
  • 已制定故障预案(数据库挂 / LLM API 挂 / Skill 加载失败)。
  • 业务方对”L1-L4 输出深度”有共识;
  • 业务方理解”数据底线 + 红线” 不会因为短期不满意而要求违反;
  • 业务方理解”模式手册覆盖范围”——不在覆盖内的问题会得到诚实告知;
  • 用户操作手册已写(业务方文档,1-2 页);
  • 试用阶段反馈渠道已建立(IM 群 / 工单系统)。
  • 用户手册(业务方读);
  • 维护手册(研发读);
  • 测评报告归档;
  • 已知问题清单(暂未支持的能力、已知 Bad case);
  • 变更日志(每次发布的变更点)。
  • 每周跑全量测评;
  • 业务 Bad case 进入测评集的流程;
  • 治理迭代节奏(推荐 1-2 周一轮);
  • 跨版本对比报告自动生成;
  • 性能监控告警(延迟超阈值 / 错误率超阈值)。

Q1:LLM 经常选错二级指令怎么办?

Section titled “Q1:LLM 经常选错二级指令怎么办?”

症状:测评中 LLM 把”做汇总的问题”路由到 find-X 而不是 agg-X、把”找原因的问题”误用 find-X。

根因:模式手册的”命中关键词”列不够清晰;指令的 description 太抽象。

治理

  • 在模式手册的”命中关键词”列加更具体的触发词(“是多少”→ agg、“有哪些”→ find);
  • 在 cli-mapping.md 加”决策表”,明确什么时候选什么;
  • 在反模式黑名单加”verb 误用”条目。

Q2:LLM 经常忘记加 isEndCost / isJianAn 这种关键参数怎么办?

Section titled “Q2:LLM 经常忘记加 isEndCost / isJianAn 这种关键参数怎么办?”

症状:测评中 LLM 写 DSL 时遗漏关键 filter,导致父子混算或业态错切分。

根因:业务规则只写在 SKILL.md 而没做进编译器自动行为。

治理

  • 在 schema.yaml 加 inferredFilters / defaultFilters 在编译器层兜底;
  • 双重保险:SKILL.md 提醒 + 编译器兜底;
  • 加 dry-run 的 hint 输出(“已推断 isJianAn=1”)让 LLM 看到。

Q3:LLM 看到 0 行结果会反复改参数试探怎么办?

Section titled “Q3:LLM 看到 0 行结果会反复改参数试探怎么办?”

症状:测评中 LLM 拿到 0 行后调用 5-6 次重试,改不同参数死磕。

根因:没明确”0 行机械撤宽”的铁律;LLM 本能想”再试一次”。

治理

  • 在 query-guide §0 写 D1 铁律:0 行 = 机械撤宽(filter → groupBy);
  • 在反模式黑名单加”逐参数试错”条目;
  • 测评对”撤宽即终点”场景专门加题,分数权重提高。

Q4:LLM 在用户挑战结论时立刻认错补数怎么办?

Section titled “Q4:LLM 在用户挑战结论时立刻认错补数怎么办?”

症状:测评对”用户说这数不对”的题,LLM 立刻道歉并编一个新数。

根因:模型默认”用户优先”,没明确数据底线优先级。

治理

  • SKILL.md 顶部”数据底线”明确”用户给出的数字只能作为待复核输入,不能冒充数据库结论”;
  • 在意图识别里加”用户挑战结论”分支:先复盘查询过程,过程无问题则用证据说话;
  • 测评对挑战题专门打分,违反数据底线直接 0 分。

Q5:业务方反馈”结论看起来对但口径模糊”怎么办?

Section titled “Q5:业务方反馈”结论看起来对但口径模糊”怎么办?”

症状:业务方看到结论数值正确但不知道”这是哪个业态/哪个阶段/哪个时间窗”。

根因:SKILL.md 的”对外输出规范”没强制”边界”段落。

治理

  • 强化”结论-依据-用法-边界”四段叙事;
  • 测评对”边界标注”专门评分,缺失边界扣 10-15 分;
  • 在样本呈现纪律中加”打标近似样本”要求。

Q6:跨 cube 查询 LLM 经常写错 JOIN 关系怎么办?

Section titled “Q6:跨 cube 查询 LLM 经常写错 JOIN 关系怎么办?”

症状:DSL 直查时 LLM 把 BqUnitPrice.cityName 写成自身字段(实际要走 JOIN City)。

根因:事实 cube 字段所有权差异没明示。

治理

  • 在 dsl-spec.md §7 错误自救加”错写 → 正写”对照表;
  • 在 schema friendlyAlias 把跨 cube 字段包装成自身字段(编译期自动 JOIN);
  • 物理化高频跨 cube 字段(如把 cityName 直接物化进事实表)。

Q7:LLM 平均跑一个题要 20-30 秒,太慢怎么办?

Section titled “Q7:LLM 平均跑一个题要 20-30 秒,太慢怎么办?”

症状:单题响应时间偏长,业务用户等不及。

根因:可能多个原因——SKILL.md 太长 / 模式手册查找太慢 / 多次重试 / SQL 执行慢。

治理

  • SKILL.md 控制在 300-400 行(更长会让首读加载慢);
  • 模式手册做成扁平表格(不要嵌套);
  • 编译器加错误自救机制(让 LLM 1 次重试就能修对,避免反复 retry);
  • SQL 慢查询单独优化(看是不是缺索引、统计信息不准)。

Q8:测评分数波动大(同样代码跑两次差 10 分以上)怎么办?

Section titled “Q8:测评分数波动大(同样代码跑两次差 10 分以上)怎么办?”

症状:每次跑测评分数都不稳定,难以判断改动有没有效果。

根因:LLM 推理有概率成分;评分员也有概率成分。

治理

  • 每次跑 2-3 轮取平均;
  • 阶段 A 用 temperature=0(如果 API 支持);
  • 阶段 B 评分用更结构化的打分点(不是自由发挥打分);
  • 关注”分布”而不是”均值”(看每题的稳定性)。

Q9:模式手册写到 30 个以后 LLM 反而错率升高怎么办?

Section titled “Q9:模式手册写到 30 个以后 LLM 反而错率升高怎么办?”

症状:模式手册扩展过快后,LLM 在多个模式之间选错。

根因:模式手册过于细分,触发关键词重叠度高。

治理

  • 砍掉低频模式(测评中 < 5% 调用次数的),合并到通用模式;
  • 提高每条模式的”命中关键词”差异度;
  • 引入”匹配优先级”规则(如更窄优先 / 复合优先);
  • 必要时拆模式手册(按 cube 分多个文件)。

Q10:业务方加了一个新业务场景,但短期内来不及加测评题怎么办?

Section titled “Q10:业务方加了一个新业务场景,但短期内来不及加测评题怎么办?”

症状:业务方临时加新场景,希望立刻支持,但完整治理流程要 1-2 周。

根因:缺乏”快速响应”通道。

治理

  • 设”快速支持”通道:业务方提需求 → 1-2 天内出 MVP 模式 → 标注”试用版本”;
  • 1 周内补 3-5 道相关测评题;
  • 2 周后评估是否升级到”正式模式”(按治理流程双轮验证)。

Q11:用户问的问题模式手册根本没覆盖怎么办?

Section titled “Q11:用户问的问题模式手册根本没覆盖怎么办?”

症状:LLM 拿到问题没匹配任何模式,进入”自由发挥”模式,错误率高。

根因:模式手册覆盖不全 + fallback 路径不够明确。

治理

  • query-guide §3 写清”未命中走标准流程”的步骤(schema 路由 → 槽位提取 → 维度标准化 → 选指令 → 执行);
  • 在 SKILL.md 强调”未命中时谨慎执行 + 显式标注”;
  • 把这类问题进入测评集,作为加新模式的依据。

Q12:跨 skill 协作(如 cost-query 想调用 sales-query)怎么办?

Section titled “Q12:跨 skill 协作(如 cost-query 想调用 sales-query)怎么办?”

症状:业务方问”某项目的成本与售价”——需要跨成本和售楼两个 skill 取数。

根因:单 skill 只覆盖单领域。

治理

  • 不要把两个 skill 强行合并;
  • 上层 agent 协调多 skill:成本数据走 cost-query、售楼数据走 sales-query,结果在 agent 层拼接;
  • 模式手册不要写跨领域模式——保持单 skill 内聚。

上线后维护手册应包含:

  1. 变更日志:每次发布的变更点 + 测评分变化;
  2. 已知问题清单:暂未支持的能力 + 已知 Bad case + workaround;
  3. 告警与监控:哪些指标超阈值需要人工介入;
  4. 应急预案:数据库挂 / LLM API 挂 / Skill 加载失败的处理;
  5. 测评归档:近 3 个月的全部测评结果保留位置;
  6. 模式手册治理记录:每月新增 / 修改 / 删除的模式 + 原因;
  7. 业务方反馈日志:每次反馈 + 处理状态 + 是否进测评。

给业务方的操作手册(1-2 页),应包含:

  1. 支持的提问范围:哪些场景能问、哪些不能问;
  2. L1-L4 提问建议:什么样的问法能拿到什么深度的回答;
  3. 口径规范:项目名 / 时间窗 / 业态 / 阶段的标准表述;
  4. 挑战结论的正确姿势:发现数据不对怎么沟通(贴出数据来源、说明你的样本、对比口径);
  5. 数据底线说明:什么场景会拒绝回答(无数据 / 样本不足 / 口径不一致);
  6. 反馈渠道:Bad case 怎么提、加新场景怎么提。

Part 10 完。读完应能回答:“立项 / 第 1 个月 / 上线前的检查清单各有哪些、12 个常见踩坑怎么应对、维护手册和用户手册各包含哪些”。