上下文管理(Context Assembly)

wesgine 的上下文组装系统负责在每次 LLM 调用前构建最优的消息序列。


三大组件

组件职责
Assembler组装完整上下文(系统提示词 + 历史 + 工具结果)
Overlays叠加层(记忆、文件卡片、环境信息)
CompressPipeline上下文超限时的压缩管线

上下文组装流程

系统提示词(字节稳定,整个会话不变)
  + SessionState(上一轮 Settlement 产出)
  + 记忆注入(三处自动注入面)
  + 环境信息(L1 宿主感知)
  + 当前轮消息
  → 最终发给 LLM 的 messages 数组

记忆自动注入(三处九臂)

引擎有三处、共 9 个 arm 自动把记忆放到模型面前(INV-MEM-50):

① Eager 系统提示词索引(5 arm)

写入系统提示词,整个会话生命周期有效:

② Lazy 当轮 overlay(3 arm)

每轮动态召回:

③ Cold-start overlay(1 arm)

跨会话摘要重放:


RecallQualityOK 单点

每个 arm 问两半:可见性与质量。

质量收敛成 RecallQualityOK 单点:

显式检索故意不设此门——memory(search) 回答"我存过什么"。


文件卡片上下文(file_card)

file_card 是可重生资源——按需重读(INV-CTX-16)。

当上下文空间不足时:

  1. 标记 file_card 为"可丢弃"
  2. 压缩时优先丢弃
  3. 需要时重新 read 工具读取

上下文压缩

压缩触发

当消息 token 数接近模型 ContextWindow 时触发。

两阶段压缩

  1. MidRunHandoff(认知交班):Run 中间的压缩,产出 SessionState
  2. EndOfRunSettlement:Run 结束时的压缩

两者使用相同 SessionState schema(INV-CTX-45)。

机械压缩 fallback

认知交班失败时的确定性回退:


Plan 状态一致性

INV-CTX-56

工具结果 = 持久化真相。

IsError 的 update 不得被 UI 重放——即时拒绝而非事后回滚。


系统提示词稳定性

系统提示词在会话生命周期内字节稳定,保护 prompt caching。

不在会话中间:


反模式

禁止正确做法
会话中间变更系统提示词保持字节稳定
用辅助模型做上下文压缩主模型 + 机械 fallback
file_card 永久缓存可重生资源,按需重读
跳过 RecallQualityOK 检查9 个 arm 全部经过质量门
显式检索设质量门显式检索不设门