跳到主要内容

第 10 章:Memory 与 Continuous Learning

记忆不是“把所有历史塞回 prompt”

ECC 的 memory 设计更像一个有界控制面:在 session start 读取有限上下文,在 pre-compact 保存关键状态,在 session end 写入摘要;需要跨 harness 传递时,通过 ecc memory 的 init、handoff、search 等子命令显式操作。

会话活动 / transcript / tool result

observation

bounded context

SessionStart 恢复 / PreCompact 保存 / SessionEnd 持久化

ECC_SESSION_START_MAX_CHARSECC_SESSION_START_CONTEXT=off 说明 ECC 把上下文预算当作一等资源,而不是无限追求“记得越多越好”。

v1 与 v2 的差异

skills/continuous-learning-v2/SKILL.md 将演进总结为:

维度v1v2.1
观察时机Stop/session endPreToolUse + PostToolUse
知识粒度直接生成完整 skill原子 instinct
置信度无显式分数0.3–0.9 confidence
作用域全局project-scoped + global
演进直接写能力instinct → cluster → skill/command/agent

project-scoped 是关键修复:一个项目里的框架偏好、用户纠正和工作流不应未经证据就污染所有仓库。项目识别依赖 git remote 或 repo path,instinct 记录 evidence,再通过重复出现和 promote 才能升级为全局能力。

Memory CLI 与持久化层

scripts/memory.js 是用户入口,scripts/lib/memory-vault.jsmemory-vault-format.js 等负责存储格式和边界。CLI 还通过 --stdin 支持把上下文从一个 harness 传给另一个:

ecc memory handoff \
--from codex --target claude \
--title "Continue migration" --stdin

这比隐式复制整个 transcript 更可控:操作者选择要交接的内容,系统记录 source/target/title,接收方只加载一份小而明确的 handoff。

ECC2 控制面

当前源码还包含 sessions、work-items、status、control-pane、operator dashboard 等 ECC2 面。它们共同构成一个轻量 state store:会话、工作项、observability readiness 和运行状态不再只存在于模型上下文里。scripts/ecc.js 的命令表把这些能力暴露为 ecc statusecc sessionsecc work-items 等可审计入口。

记忆设计的三个护栏

  1. 有界:启动时限制字符数,避免恢复历史压垮新任务。
  2. 显式:handoff、search、promote 都需要明确命令或 skill,不自动上传所有对话。
  3. 分域:项目 instinct 与全局 instinct 分开,只有足够证据才提升作用域。

源码定位