diff --git a/looping_data/infer_gap_explicitization.md b/looping_data/infer_gap_explicitization.md new file mode 100644 index 0000000..3d67a83 --- /dev/null +++ b/looping_data/infer_gap_explicitization.md @@ -0,0 +1,128 @@ +# 《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-claim,Jenny 验证 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 的方案(状态机守卫 + 显性标注 + 可信度链 + 治理出口)在开源社区中尚未出现直接对标实现。**