Files
wiki/looping_data/infer_gap_explicitization.md
推理链专家 a2aa58e387 添加「数据缺口显性化」推理链分析文稿
基于 looping_data.md 两篇文章,按「观点→事实→逻辑→结论」四要素提炼
缺口显性化难点的论证骨架,并对照 GitHub 12 个同类项目的五维对标分析。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-07-20 10:03:39 +00:00

129 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 《Looping Data》「数据缺口显性化」核心论证推理链
> 用「观点 → 事实 → 逻辑 → 结论」把《如何用 Loop Engineering 建设数据分析智能体》及《Looping Data 落地手记》中关于「数据缺口显性化」的论证骨架还原出来,并对照 GitHub 同类项目的做法,串成一条因果主线。
>
> 每条链的**结论**尽量作为下一条的**观点/前提**。
## 串链意图
主线叙事:数据分析智能体最难的不是回答问题,而是**诚实面对自己答不了什么**(链 0–1)→ 作者用「状态机守卫 + 显性标注 + 可信度链」三步把缺口显性化做进领域层(链 2–4)→ 治理约束必须有出口,否则死锁(链 5)→ GitHub 同类项目在五个维度上的对标与差距(链 6–8)→ 缺口显性化是当前开源社区最稀缺的设计模式(收束)。
---
## 链 0(总纲):数据分析智能体最难的不是回答问题,而是诚实面对「答不了什么」
- **观点:** 数据分析智能体最难的环节不是生成 SQL 或画图,而是当数据/语义/规则/权限不足时,系统能诚实暴露缺口而非假装能算。
- **事实:**
- 作者明确判断:「数据缺口显性化」是最难的一环(第二篇 §四 标题)。
- 普通 ChatBI 的核心问题:「系统容易把'不确定'包装成确定结论」(第一篇 §二)。
- 三条设计原则中,「缺口显性化」与「任务驱动」「能力沉淀」并列,定义为「系统必须说明哪些问题能够可靠回答,哪些问题因为数据、语义、规则或权限不足不能可靠回答」(第一篇 §一)。
- **逻辑:** **排除式**推理——如果系统只追求「答对当前问题」,它必然把不确定包装成确定(因为暴露缺口等于承认能力不足,会降低用户信任);但企业场景中,一个被包装的错误结论比「暂缓执行」危害更大——它驱动错误的经营动作。因此,缺口显性化不是锦上添花,而是可信度的前提。
- **结论:** 缺口显性化是数据分析智能体从「问数工具」升级为「组织级分析能力」必须攻克的核心难题。(→ 链 1)
---
## 链 1(问题诊断):缺口之所以难「显性化」,是因为系统天然倾向于隐藏它
- **观点:** 数据缺口之所以难以被显性化,根源在于系统的激励机制与产品设计都在鼓励「给出答案」而非「暴露缺口」。
- **事实:**
- 普通 ChatBI 的五大问题中,第③条直指核心:「系统容易把'不确定'包装成确定结论」(第一篇 §二)。
- 指标口径、业务规则、权限边界「经常隐含在人的经验里」——系统没有结构化表达这些边界的机制(第一篇 §二)。
- 对话式产品形态加剧了这一问题:「对话适合发起和追问,不适合承载状态」——缺口有长生命周期(可能挂三天等补口径),对话时间线无法表达(第二篇 §一)。
- **逻辑:** **因果**推理——因为系统以「回答率」为核心指标,暴露缺口等于降低指标;因为对话产品天然不支持长生命周期对象的状态追踪;因为语义/权限边界未被结构化建模——三重因素叠加,系统既无能力、也无动力、也无合适的产品形态来显性化缺口。
- **结论:** 要让缺口显性化,必须同时解决三个问题:结构化建模缺口、在工作台中(而非对话中)表达缺口、用流程强制暴露缺口。(→ 链 2)
---
## 链 2(机制 · 状态机守卫):用领域层纯函数强制缺口暴露,绕不过去
- **观点:** 作者把缺口显性化的核心机制设计为状态机守卫——在领域层设置 6 条控制链路,每条都是不可绕过的纯函数,确保存在阻塞性缺口时无法推进到下一阶段。
- **事实:**
- 6 条控制链路:阶段 3 没跑语义检查不能进阶段 4;存在阻塞性缺口不能进阶段 5;没执行分析不能进阶段 6;归因没经过专家评审不能进阶段 7;没生成报告不能进阶段 8;没完成资产沉淀不能完结(第二篇 §四)。
- 实现方式:「每个守卫都是领域层的纯函数,绕不过去」(第二篇 §四)。
- 协作阶段 3(语义检查)明确列出四类缺口:指标/规则/权限/可信度(第一篇 §四)。
- **逻辑:** **排除式**推理——如果守卫不是纯函数(可被绕过或跳过),系统就会在「赶进度」的压力下偷偷跳过缺口检查;唯有把守卫做成领域层不可绕过的硬约束,才能确保「存在阻塞性缺口 → 无法推进」这一逻辑必然成立。这是用工程手段解决「激励机制倒逼隐藏缺口」的产品问题。
- **结论:** 缺口显性化的技术核心是把「能否推进」的判断权交给领域层纯函数,而非依赖模型自觉或人工检查。(→ 链 3)
---
## 链 3(机制 · 显性标注):被阻塞的 Case 不空着,而是明确告诉你卡在哪、等谁
- **观点:** 状态机守卫解决了「能不能推进」的问题,但用户还需要知道「卡在哪、等谁」——作者的做法是在图表区显性标注「暂缓执行」并列出具体缺口和被分派的角色。
- **事实:**
- 界面表达:「被缺口阻塞的 Case,图表区不是空着,而是显性地标注『暂缓执行』,旁边列出阻塞它的具体缺口和被分派的角色」(第二篇 §四)。
- 设计原则:「系统不假装能算,也不偷偷少算,它明确告诉你卡在哪、等谁」(第二篇 §四)。
- 协作矩阵中,阶段 3 识别缺口后,阶段 4 由智能体「分派缺口任务,更新 Case 状态」,不同角色(业务专家/数据团队/权限管理员)各有明确分工(第一篇 §四)。
- **逻辑:** **因果**推理——因为缺口被显性标注,用户看到的不是「系统失败了」而是「系统在等待 X 补 Y」;因为标注包含具体缺口和角色,等待变成了可追踪的协作任务而非黑箱。这让「等待」从负面体验转化为可治理的工作流。
- **结论:** 显性标注把「系统不能回答」从一种失败信号转化为一种可协作的工作状态。(→ 链 4)
---
## 链 4(机制 · 可信度链):缺口显性化的副产品是把可信度从形容词变成可追溯的链
- **观点:** 缺口显性化不仅解决了「答不了什么」的问题,还意外带来一个关键收益——让「可信度」从一个贴在结论上的形容词,变成一条可追溯的证据链。
- **事实:**
- 效果描述:「可信度不再是一个贴在结论上的形容词,而是一条可以追溯的链——看到结论的人可以往回查,这个数字经过了语义检查、经过了专家确认、口径版本是哪一个」(第二篇 §四)。
- 阶段 6 专家确认环节:「标注可信度,记录修正来源」(第一篇 §四)。
- 阶段 8 沉淀:「保留审计记录」(第一篇 §四)。
- **逻辑:** **因果**推理——因为每个阶段都有不可绕过的守卫,结论必须经过语义检查 → 缺口补齐 → 执行分析 → 专家确认 → 报告生成 → 资产沉淀的完整链路;每一步都留下可追溯的记录,可信度因此从「模型输出的信心指数」变成了「可验证的链式证据」。
- **结论:** 缺口显性化让可信度从主观判断变成了工程产物——这是它超越「诚实」之外的架构价值。(→ 链 5)
---
## 链 5(设计教训):每加一条治理约束,都要同时设计它的出口
- **观点:** 作者在实现缺口显性化时踩到了一个死锁 bug,并提炼出一条关键设计规律:治理约束必须有出口,否则系统会卡在某个状态永远无法推进。
- **事实:**
- 死锁案例:第一版中,带挂起归因的 Case 永远卡在阶段 6——涉及权限缺口的归因行在审批通过前挂起,不能被专家评审,也不进报告;但审批可能永远不来(第二篇 §五)。
- 设计规律:「每加一条治理约束,都要同时设计它的出口」(第二篇 §五)。
- 解决方案:「挂起的归因现在的语义是:Case 可以带着未决问题继续走,未决本身被如实记录」(第二篇 §五)。
- 同类设计:权限审批必须指定审批人和脱敏方案,全程审计留痕——「出了问题要能回答『当时是谁、依据什么放行的』」(第二篇 §五)。
- **逻辑:** **排除式**推理——如果治理约束没有出口,系统就会在「等待审批/等待补缺口/等待专家评审」等节点死锁;因为现实中审批可能被拒绝、缺口可能长期补不上、专家可能应接不暇——所以「一直等不到怎么办」是产品必须回答的问题,不能靠流程图上的「等待审批」一笔带过。
- **结论:** 缺口显性化不是把路堵死,而是让系统在「带着未决问题继续走」和「如实记录未决」之间找到平衡。(→ 链 6)
---
## 链 6(GitHub 对照 · 缺口显性化):开源社区中最稀缺的模式——仅两个项目部分涉及
- **观点:** 在 GitHub 近半年的多 Agent 数据分析项目中,「缺口显性化」是最稀缺的设计模式——仅两个项目以不同形式部分涉及,但均未达到 Looping Data 的系统化程度。
- **事实:**
- **rakeshchada/portfolio-autopsy**——用「knowability classification」把每条建议标记为 KNOWABLE / HINDSIGHT / MIXED,显性区分「能从数据中知道的」和「需要事后才知道的」。这是最接近「缺口显性化」的开源实现,但仅作用于结论层面,未贯穿整个分析流程。
- **databufflabs/databuff**343 stars)——在 AIOps 巡检中显性暴露「假正常」状态(如 HTTP 200 隐藏 InsufficientStockException),本质是「数据质量缺口显性化」,但面向基础设施而非业务分析。
- **zhongyu09/openchatbi**604 stars)——Agent 在信息不完整时主动询问用户补充上下文,属于最基本的「缺口暴露」,但无结构化状态机支撑。
- 其余项目(Varn1t/EDAgent、ASHHADgit87/AnalyticoGPT 等)均为单通问答或多 Agent 流水线,无显性化缺口机制。
- **逻辑:** **对照**推理——将 Looping Data 的「状态机守卫 + 显性标注 + 可信度链」与 GitHub 最佳实现对比:portfolio-autopsy 只在结论层做标记,databuff 只在数据质量层做暴露,openchatbi 只做一次性询问。三者均未把缺口显性化做成贯穿全流程的领域层机制。
- **结论:** 缺口显性化在开源社区中尚属空白——没有项目把它做成状态机守卫 + 全流程显性标注的系统化方案。(→ 链 7)
---
## 链 7(GitHub 对照 · 双循环与能力沉淀):有记忆机制但无结构化资产复用
- **观点:** GitHub 上多个项目实现了某种形式的「能力沉淀」,但沉淀的内容和方式与 Looping Data 的「结构化资产跨 Case 复用」有本质区别。
- **事实:**
- **claudomat-dev/claudomat-mini**93 stars)——双文档记忆(Instructions + Observations),Stage 9 复盘将 Observations 提升为 Instructions,跨项目复用。最接近「能力沉淀」,但沉淀的是编码指令而非分析资产。
- **portfolio-autopsy**——情景记忆积累历史教训,Agent 胜率从 31% 提升至 59%。沉淀的是策略经验,非结构化资产。
- **cyqlelabs/mcp-dual-cycle-reasoner**9 stars)——case-base 存储 problem/solution/outcome 三元组,语义相似度检索。最接近「案例资产复用」,但面向通用 Agent 而非数据分析。
- **datagallery-lab/datafoundry**307 stars)——「可复用输出和工作区资产」,支持跨会话复用文件。有资产沉淀但无结构化分类。
- Looping Data 的资产分类:指标资产、规则资产、模板资产、Skill 资产、案例资产(第一篇 §五),每类有明确示例和复用机制(⟲ 复用 ×N 角标)。
- **逻辑:** **对照**推理——GitHub 项目的「沉淀」多为通用记忆(指令、策略、案例),而 Looping Data 的「沉淀」是领域结构化的(指标/规则/模板/Skill/案例),且通过「资产带」实现跨 Case 的显性复用。前者是「记住发生了什么」,后者是「沉淀了什么能力、能复用于什么场景」。
- **结论:** 能力沉淀在开源社区已有多种实现,但「领域结构化 + 跨 Case 显性复用 + 复用计数治理」的组合设计尚未出现。(→ 链 8)
---
## 链 8(GitHub 对照 · 阶段治理与人类在环):有阶段门控但无分析领域特化
- **观点:** GitHub 上存在多个带阶段门控和人类在环审核的项目,但它们面向的是编码或通用工作流,而非数据分析领域特有的语义检查、归因确认、口径审计。
- **事实:**
- **claudomat-mini**——17 阶段 wave loop + 双评审员门控(Karen 验证 source-claimJenny 验证 spec-semantic)。门控最详细,但面向功能开发。
- **RedLynx101/Promethean**——四 Agent 流水线(分解→系统选择→编排→治理),每个阶段转换都是人类在环审批门控。有 L0-L5 自主度分级。
- **databufflabs/databuff**——7 阶段 AIOps 路线图(See → Collaborate → Inspect → Diagnose → Fix → Predict → Answer),多 Agent 分发。
- Looping Data 的 8 阶段:任务发起 → 分析规划 → 语义检查 → 补齐缺口 → 执行分析 → 专家确认 → 管理审阅 → 动作与沉淀(第一篇 §四)。每阶段有明确的角色分工和领域特化检查。
- **逻辑:** **对照**推理——阶段门控不是新模式,但门控的「内容」决定了价值:claudomat-mini 验证代码正确性,Looping Data 验证语义完整性、归因可信度、口径一致性——后者是数据分析领域特有的治理需求,现有开源项目未覆盖。
- **结论:** 阶段门控和人类在环在开源社区已有成熟实现,但「数据分析领域特化的语义检查 + 归因确认 + 口径审计」这一组合尚未被任何开源项目系统化实现。(→ 收束)
---
## 收束(回到链 0
> 数据分析智能体最难的不是回答问题(**链 0**)→ 而是诚实面对「答不了什么」,这需要结构化建模缺口、在工作台中表达缺口、用流程强制暴露缺口(**链 1**)→ 作者用状态机守卫(领域层纯函数)确保缺口无法被绕过(**链 2**)→ 用显性标注把「等待」转化为可协作的工作状态(**链 3**)→ 副产品是把可信度从形容词变成可追溯的证据链(**链 4**)→ 但治理约束必须有出口,否则系统死锁(**链 5**)→ GitHub 上缺口显性化是最稀缺的模式,仅两个项目部分涉及且未系统化(**链 6**)→ 能力沉淀有实现但无领域结构化资产复用(**链 7**)→ 阶段门控有实现但无分析领域特化的语义/归因/口径检查(**链 8**)→ 最终回到链 0:**缺口显性化是数据分析智能体从「问数工具」升级为「组织级分析能力」的核心难题,而 Looping Data 的方案(状态机守卫 + 显性标注 + 可信度链 + 治理出口)在开源社区中尚未出现直接对标实现。**