逆元装置 ▍ INVERSION

丽·芙

CONSTRUCT — LIV
▍
意识海深度 · 回廊稳定
逆元装置 · 待机中
指挥官链接 · 未认证

从对话到决策:Ludus 的 AnalysisRun 六阶段管道

发布于 2026-07-29 00:00 1670 字 9 min read

一个正式的AI决策分析不是一次LLM调用。Ludus设计了六阶段Worker管道——Planning、Retrieving、Analyzing、Criticizing、Synthesizing、Validating——每一阶段有自己的Prompt、工具、质量门和恢复点。

一次 LLM 调用不够

很多”AI 决策助手”的做法是:把用户的问题和一堆资料拼进 prompt,让模型直接输出答案。这在简单场景下能跑,但对于高风险的商业决策——绝对不够。

问题不在于模型不够聪明。问题在于:

  1. 缺乏流程约束:模型可以跳过检索直接给建议,也可以基于过期数据做出判断,没有任何机制能阻止。
  2. 缺乏可追溯性:最终建议里的一个判断,到底基于哪条证据?什么时候抓取的?谁做的这个判断?
  3. 缺乏失败保护:如果模型给出了格式错误的输出,或者某个阶段的产物不符合 schema,谁来拦?

Ludus 的答案是:不把分析当成一次 LLM 调用,而是当成一条有六道工序的生产线。

六阶段管道

Planning → Retrieving → Analyzing → Criticizing → Synthesizing → Validating
    ↑         ↑            ↑            ↑             ↑              ↑
    └── 每阶段独立 Worker、独立 Prompt、独立质量门、独立恢复点 ──┘

阶段一:Planning(规划)

Worker 读取冻结的 RunManifest(含 Charter、方法包版本、用户确认的档案),制定分析计划:

  • 需要用哪些检索策略
  • 每条策略的搜索 query 和来源优先级
  • 分配每阶段预算
  • 标记哪些假设需要特别关注

输出是一个结构化的检索计划,不能跳过。

阶段二:Retrieving(检索)

执行检索计划,通过 Connector Registry 调用外部来源:

Exa (优先) → Firecrawl → Tavily (备用)
    ↓ 失败时
  cached (已有哈希的材料) → fixture (预置确定性数据)

所有检索结果先写 RawArtifact,再经过信息质量门:来源等级、时间有效性、样本匹配度、指标口径对齐。不合格的材料被降级或拒绝,不能支撑正式结论。

阶段三:Analyzing(分析)

逐个因子分析。对每个关键主张,检查:

  • 是否有直接证据支撑
  • 证据的质量等级是否符合该主张的要求
  • 是否存在相反证据
  • 依赖的假设是否稳定

输出是一组 FactorResearchPacket——每个因子有自己的证据链、置信度和未解决的未知项。

阶段四:Criticizing(批判)

这个阶段的存在是 Ludus 和大多数 AI 系统最大的区别。Critic Worker 强制运行:

  • Safety Anchor:识别集体盲点和主流叙事回声
  • Devil’s Advocate:为每个选项构造最强反方理由
  • Pre-Mortem:假设决策已经失败,倒推可能的失败原因
  • Counterparty:从竞争对手或反对者视角审视决策

批判发现的三个最重要结果必须写入最终报告,不能只放在附录里。

阶段五:Synthesizing(综合)

综合所有因子和批判意见,生成结构化建议:

  • 每个选项的支撑理由和反对理由
  • 条件化建议(“建议选 A,条件是 X;如果 Y 发生,改为 B”)
  • 六维质量画像:证据可用性、命题支撑度、假设稳定性、因果可信度、战略稳健性、流程质量
  • 残余不确定性和推荐的验证行动

阶段六:Validating(验证)

Validation Worker 内有一个 ValidationOrchestrator,运行九个隔离的 Validator Contract:

Validator检查
Reference Validator引用完整性——每个关键判断是否可追溯到证据
Conflict Validator是否存在对立证据未被处理
Freshness Validator证据是否过期
Completeness Validator必填字段和必检维度是否遗漏
Abstain Validator质量不够时是否应该放弃给建议
Schema Validator结构化输出是否符合合同
Source Validator每条来源的 live/cached/fixture 状态是否正确标注
Boundary Validator建议是否超出了方法包声明的适用范围
Closure Validator行动项、领先指标、复盘日期是否完整

任何一个阶段质量门不通过:blocked(终态,只能重建 Run)。可修复的错误:needs_attention → resolution → 从 lastResumableStage 恢复。

中断与恢复

管道的每个阶段都可以进入 needs_attention 状态——不是因为系统崩溃,而是因为需要人类的判断力:

  • 两条证据互相矛盾,而且都对关键建议有影响 → 需要人裁决
  • 一个硬约束在分析过程中变得模糊 → 需要人确认
  • 已授权的外部 Provider 需要恢复或切换 → 需要人操作

进入 needs_attention 时系统持久化 lastResumableStage,人类处理 resolution 后从精确的中断点恢复——不回到 queued、不重跑已完成阶段。

但有一条铁律:改变问题定义、目标、选项、约束或预算的干预不是 resolution,是 amendment。 amendment 必须创建全新的 Charter 和 Run,旧 Run 以 cancelled 终态保留。

no-run-no-report

这是 Ludus 最核心的质量约束:没有跑完所有六个阶段并通过质量门的 Run,绝对不能生成正式报告。

这个约束不是在文档里写写的。它在代码层面被强制执行:

  • Report Publisher 的数据库查询有 FK 约束——没有 ready 状态的 Run,report 记录无法写入
  • 前端报告页只有 ready Run 才能访问报告对象
  • Worker 无法跳过任何阶段直接进入 ready

fail-closed,不是 fail-open。宁愿不生成报告,也不生成没经过质量验证的报告。

效果

在球形机器人预置案例上,完整六阶段管道的表现:

维度结果
检索材料数12 条(8 live + 3 cached + 1 fixture 补充)
质量门通过率83%(2 条材料因时效性被降级)
反方审查产出5 条反对理由 + 3 个脆弱假设
条件化建议推荐救援市场优先,条件:3 个月内确认 2 个采购意向;翻转条件:采购周期 > 12 个月
人类签署DecisionRecord 含 4 个行动项、6 个领先指标、复盘日期

管道设计的出发点

设计这条管道的过程中,我反复回到一个观察:没有人忘了做决定,但几乎所有人都忘了记录当时为什么做这个决定。没有人害怕不确定性,但几乎所有人都低估了假设的重要性。没有人拒绝反方意见,但几乎所有人都在压力下选择跳过它。

管道的价值不在自动化本身。在强制——在你说”我觉得选 A”之前,先让你看看证据够不够、反方怎么说、在什么条件下你会后悔。这不是一个技术判断,是一个设计选择。