Skip to content

Consolidation 与 Integration

Consolidation 和 Integration 是 Stello 三层记忆流动的两个驱动过程。它们异步执行,不阻塞对话。

Consolidation:L3 → L2

Consolidation 将一个 Session 的原始对话(L3)提炼为 SKILL description(L2)。

typescript
type ConsolidateFn = (
  currentMemory: string | null,  // 当前 L2(首次为 null)
  messages: Message[],            // 完整 L3 记录
) => Promise<string>              // 新的 L2

设计要点

  • 应用层定义格式 — 框架不规定 L2 长什么样。你可以让它是一段摘要、一个 JSON 结构、或任何适合你场景的格式
  • fn 自行选择 LLM tier — ConsolidateFn 通过闭包捕获 LLM 调用能力,可以用便宜的模型做摘要
  • 增量更新currentMemory 参数传入上一次的 L2,fn 可以基于已有摘要增量更新,而非每次从头提炼
  • fire-and-forget — Consolidation 不阻塞当前对话,由调度器在后台触发

默认实现

@stello-ai/core 提供了 createDefaultConsolidateFn,接收一个 prompt 和 LLM 调用函数:

typescript
import { createDefaultConsolidateFn } from '@stello-ai/core'

const consolidateFn = createDefaultConsolidateFn(
  '请将对话提炼为 100-150 字的摘要。',
  llmCall,
)

Integration:所有 L2 → Synthesis + Insights

Integration 是 Main Session 的核心操作:收集所有子 Session 的 L2,生成全局 synthesis 和 per-session insights。

typescript
type IntegrateFn = (
  children: ChildL2Summary[],      // 所有子 Session 的 L2
  currentSynthesis: string | null,  // 当前 synthesis
) => Promise<IntegrateResult>

interface ChildL2Summary {
  sessionId: string
  label: string
  l2: string
}

interface IntegrateResult {
  synthesis: string
  insights: Array<{ sessionId: string; content: string }>
}

设计要点

  • Synthesis — Main Session 对所有子 Session 的综合理解,注入到 Main Session 自己的上下文中
  • Insights — 给各子 Session 的定向建议。每个 insight 替换(不追加)该 Session 之前的 insight——每次 integration 给出最新完整判断
  • 原子写入 — synthesis 和 insights 在同一个事务中写入,确保一致性
  • ConsolidateFn 与 IntegrateFn 配对 — ConsolidateFn 产出某种格式的 L2,IntegrateFn 读取该格式。两者由应用层配对设计

默认实现

typescript
import { createDefaultIntegrateFn } from '@stello-ai/core'

const integrateFn = createDefaultIntegrateFn(
  '综合分析所有子会话,生成全局洞察和定向建议。',
  llmCall,
)

调度时机

Consolidation 和 Integration 的触发由 Scheduler 控制:

Consolidation 触发器

触发器说明
manual仅手动调用
everyNTurns每 N 轮对话后触发
onSwitch切换到其他 Session 时触发
onArchive归档 Session 时触发
onLeave离开 Session 时触发

Integration 触发器

触发器说明
manual仅手动调用
afterConsolidate每次 Consolidation 完成后自动触发
everyNTurns每 N 轮对话后触发
onSwitch切换 Session 时触发
onArchive归档时触发
onLeave离开时触发

配置示例

typescript
import { Scheduler } from '@stello-ai/core'

const scheduler = new Scheduler({
  consolidation: { trigger: 'everyNTurns', everyNTurns: 3 },
  integration: { trigger: 'afterConsolidate' },
})

这是最常见的配置:每 3 轮对话提炼一次 L2,每次提炼后自动做全局整合。

信息流全景

  • 向上汇报:每个子 Session 通过 Consolidation 将 L3 提炼为 L2,Main Session 通过 getAllSessionL2s() 批量收集所有 L2,然后 Integration 生成 synthesis
  • 向下推送:Integration 同时为每个子 Session 生成定向 insight,写入该 Session 的 insight 槽位,下次对话时自动注入上下文
  • 横向隔离:子 Session 之间无直接通信,所有跨分支信息都经由 Main Session 中转