① 三通道召回 MemoryCore · auto-recall.ts · 超时 5s
L1 原子记忆搜索
- 策略:keyword / embedding / hybrid
- keyword:FTS5 BM25 + jieba 中文分词
- embedding:sqlite-vec cosine
- hybrid:双路并行 + 客户端 RRF 融合(K=60)
- TCVDB 后端:原生 hybridSearch 一次调用
scoreThreshold 0.3
maxResults 5
RRF K=60
L3 Persona 读取
- 读 persona.md 并剥离导航
- 无条件注入(四层中唯一)
- 按 team+agent 作用域隔离读取
- 内容进 appendSystemContext
L2 场景导航
- 读 scene_index → 生成导航块
- 全量注入,由 LLM 自行判断相关性
- 命中场景后可用 read_file 下钻完整画像
- 内容进 appendSystemContext
② 预算控制与稳定 / 动态分离 applyRecallBudget
预算截断
maxCharsPerMemory 单条截断(码点级切割防拆散代理对)+ maxTotalRecallChars 总量丢弃;防记忆占满上下文。
→
appendSystemContext
persona + 场景导航 + 记忆工具指南 —— 变化少,放 system 尾部,命中 Anthropic/OpenAI 提示词缓存。
→
prependContext
L1 相关记忆(<relevant-memories>)—— 每轮变化,放 user prompt 前缀,不打爆系统缓存。
③ Proxy 注入管线 MemoryProxy · InjectionPipeline
LLM 请求
Anthropic / OpenAI / Codex Responses 协议
→
身份识别
URL 前缀 /:agent/:spaceId/ → AgentProfile + 租户
→
注入器依序执行
各 injector 在四个注入点改写 system prompt
→
TdaiProfileMemoryInjector
注入 L2/L3 画像与场景导航(稳定部分)
system.prefix
TdaiL1RecallInjector
注入 L1 相关记忆(动态部分)
before_tools
TdaiToolsInjector / SkillInjector
注入记忆 / 技能工具清单(tdai_memory_search 等)
after_tools
KnowledgeToolsInjector
注入 Wiki / CodeGraph 工具,按需 /v3/tools/call
system.suffix