记忆沉淀管线:对话 → L0 → L1 → L2 → L3
Agent 对话在转发时被旁路记录为 L0;定时扫描器发现新对话后投递任务,异步 Worker 逐层提炼原子记忆、场景档案与长期画像。
写路径 · 沉淀
阶段 1 · 旁路记录
Agent 对话
Proxy 拦截 / SDK addConversation
base URL 指向 Proxy,协议不变、零代码接入;对话在转发上游 LLM 时被旁路记录。
阶段 2 · L0 落盘
L0 Recorder
core/conversation/l0-recorder.ts
位置切片 + 时间戳游标做增量捕获;清洗注入标签、剥离代码块;JSONL 与 l0_conversations 表双写。
定时扫描(默认 2s)
阶段 3 · 任务调度
Timer Scanner
services/timer-scanner.ts
扫描 16 个分片 ZSET,Lua 原子认领到期 Timer,投递到任务队列(scheme D 无主模式,所有 Pod 都扫)。
阶段 4 · 竞争消费
Pipeline Worker
services/pipeline-worker.ts
60 并发协程竞争消费;分布式锁(30s 续约)+ 指数退避重试 + 死信队列;L1 完成后级联推进 L2。
LLM 逐层提炼
L1 · 原子记忆
Atom Extractor
core/record/l1-extractor.ts
单次 LLM 调用(JSON 结构化输出):场景分段 + 记忆抽取一次完成;随后向量召回候选做批量冲突检测(store / update / merge / drop)。
L2 · 场景档案
Scene Extractor
core/scene/scene-extractor.ts
LLM 作为沙箱 Agent(工具模式),工作目录锁死 scene_blocks/,只允许读写 .md 场景文件;备份 / 软删除 / 索引同步。
L3 · 长期画像
Persona Generator
core/persona/persona-generator.ts
四层深扫模型:以 scene_index + 场景内容为输入,增量或首次模式生成 / 更新 persona.md,并推进 checkpoint。
可选 · 技能沉淀
Skill Extractor
skill-extractor.ts + skill-tools.ts
LLM 工具调用从对话 / 工具调用中提炼可复用 Skill(带版本、资源、触发边界)。
接入 / 调度 L1 Atom L2 Scenario L3 Persona Skill
来源:docs/项目架构与定制开发指南.md「写入主流程」+ MemoryCore/src/services 源码。L2/L3 文件是权威存储,store 中的 profiles 表是供远端后端(如 TCVDB)拉取的同步副本。