AM
dsh-auto-memory
Proactive Associative Memory Architecture
Architecture Atlas / 2026-08-19

让记忆在模型没有主动调用时,也能被当前情境唤回。

当前维护链使用原生 systemPrompt.section() 保存稳定规则、systemPrompt.context() 生成易变快照;未来主动联想层才由关联引擎和 Injection Broker 把候选变成 MemoryPacket。

当前:JS Host + Markdown memory + native runtime context设计:SessionRuntime + MemoryPacket增强:Python sidecar + reasoning adapter
筛选只改变视觉强调,不隐藏架构内容。
5
认知记忆类型
2
运行时平面:Host / Agent
3
注入边界等级
0
允许的跨会话泄漏
全局运行时数据流当前 native context 先行;未来主动联想不依赖模型先调用 memory_search
01 / observable events

运行时事件

用户消息、工具参数、工具结果、错误、可见回复、用户纠正、session 生命周期。

02 / context observer

上下文观察器

按 sessionId 收集事件,切成语义片段,推进 contextVersion 和滑动窗口。

03 / associative engine

联想检索器

范围、时间、实体、关键词、embedding、关联图和置信度组成候选排序。

04 / injection broker

注入调度器

冷却、TTL、冲突、风险、预算、能力协商和 MemoryPacket 版本校验。

05 / next request

下一步模型请求

当前在原生 pre-step 边界合并 runtime-context snapshot;未来再合并经过校验的 MemoryPacket。

原生 DSH 当前骨架systemPrompt.section/context → assemble → RuntimeContextProjection → agent/pre-step → next request
可选 Python memory engineJS 负责生命周期和安全决策;Python 负责 embedding、图检索和 reranking。
01 / LAYERS

完整分层:每一层解决一个不同问题

不要把“记忆类型”“持久范围”“运行时状态”和“注入策略”混成一个对象。每层都有自己的所有者、输入、输出和失败回退。

L0 · HOST RUNTIME
DSH Host / Cordis
加载插件、提供 tools / webServer / systemPrompt / subagents,发送 Agent 生命周期事件,拥有共享注册表和权限栈。
当前依据package main + apply(ctx)
lib/index.js:20-33
L1 · AGENT BOUNDARY
Agent preset / step loop
稳定规则使用 section;preset 允许 runtime context 时,动态维护快照使用 context。Minimal 是 complete persona 并抑制 runtime context,未来 packet 需自建 next-step 路径或安全降级。
关键边界session-start · pre-step · turn-stopping
L2 · SESSION STATE
SessionRuntime
按 sessionId 保存 working memory、context ring、contextVersion、pending packets、冷却、最近注入和未解决事项。
不变量会话 A 的上下文不能进入会话 B
L3 · OBSERVATION
ContextObserver
把原始事件转换成拥有类型的语义片段;reasoning 如果可见,只进入短期观察环,不默认持久化。
输出Event + Segment + version
L4 · MEMORY COGNITION
MemoryStore + AssociationEngine
Markdown 可读投影之外,使用 JSONL / SQLite / vector index 保存结构化记录、来源、向量版本、冲突和生命周期。
排序相关性 · 范围 · 置信度 · 近期性 · 显著性
L5 · POLICY
InjectionBroker
未来决定是否唤回、唤回多少、用 soft hint 还是 checklist;处理 budget、TTL、冷却、重复、冲突、风险和 Provider 能力。当前维护快照不经过此层。
输出MemoryPacket → future per-session inbox
L6 · EVIDENCE
EvidenceUpdater / Consolidator
根据工具成功、失败、用户纠正、问题解决和跨会话复用更新置信度;把 episodic candidate 升格为 semantic 或 procedural。
默认候选先观察,未经验证不晋升
02 / DSH PLANES

原生 DSH 的两平面映射

原生 Cordis 配置把跨会话共享的服务放在 Host composition,把单会话的 persona、工具和 prompt 贡献放在 Agent preset。主动记忆应沿用这个边界。

current / host plane

Host composition

负责所有需要跨 session 复用或在 Agent 创建前就存在的能力。

  • MemoryStore、索引、审计、配置和路由
  • ContextObserver、PythonEngineClient、Provider adapter
  • 共享的 DSH tools、webServer、systemPrompt 接入
  • 权限、sandbox、approval 和生命周期清理
current / agent plane

Agent preset / SessionRuntime

负责某一个会话实际看到的工具、动态消息和工作状态。

  • 当前 runtime-context snapshot;未来 pending Agent Inbox packet
  • packet TTL、冷却、contextVersion 和最近注入
  • 当前模型的 capability snapshot
  • Minimal preset 的 includeRuntimeContext:false 与未来 packet fallback
原生实现参照:两条不同通道

当前 dsh-auto-memory 维护链使用 systemPrompt.section() 与 systemPrompt.context();DSH 在 assemble 后由 RuntimeContextProjection 按完整快照去重、替换或清除。dsh-agent-instructions 的 durable user/message inbox 是未来 MemoryPacket 的参考骨架,不是当前 runtime-context 的实现,也不应把两者复制成重复消息。

03 / RUNTIME

当前维护与未来主动联想的时序

当前路径是 native runtime-context projection;下方的检索、Broker 和 MemoryPacket 是后续主动联想路径。Level 3 的流式中断续写不进入默认路径。

  1. T0事件进入 Host用户、工具、可见输出和生命周期事件可被观察;不要求模型调用记忆工具。
  2. T1原生 assemblesection() 提供稳定规则,context() 同步求值易变维护快照。
  3. T2RuntimeContextProjectionassemble 后按完整快照精确去重;变化时替换旧 projection。
  4. T3未来候选检索仅 planned:范围、相关性、版本和安全门形成候选。
  5. T4未来排入 InboxMemoryPacket 带 sessionId、版本、来源、TTL;当前维护快照不复制到 Inbox。
  6. T5pre-step 合并native snapshot 或未来 packet 只在下一请求边界生效,然后继续模型循环。
runtime-contract / native + future pseudo flowDESIGN
onAgentPreStep(agent):
  claimed = agent.inbox.claim(target, turn)
  assembly = await systemPrompt.assemble(agent)
  sections = renderContextSections(assembly)
  snapshot = agent.runtimeContext.project(joinContextSections(sections), sections)
  decision = waterfall({ messages: claimed, turn, step }, () =>
    enter(snapshot ? [...claimed, snapshot] : claimed))
  return { decision, assembly }

// Future active path only:
onObservableEvent(event):
  candidates = association.search(session.contextRing, version)
  packet = broker.decide(candidates, session.runtimeState)
  if (packet): session.pendingInbox.replace(packet)

// Current runtime snapshot and future packet are separate surfaces.
04 / COGNITION

记忆类型、范围与生命周期

理论类型参考 CoALA;持久范围和生命周期是工程维度。它们必须正交建模。

workingsession / volatile

Working Memory

当前目标、上下文片段、未解决事项、最近工具结果和待注入 packet。容量有限,随任务变化淘汰。

TTL: stepring buffer不跨会话
episodicsession → workspace

Episodic Memory

带时间、来源、动作、结果和失败证据的事件。适合复盘和后续抽取,不直接当成稳定事实。

provenanceoutcome时间衰减
semanticworkspace / user

Semantic Memory

去重后的项目事实、决策、环境约束和稳定偏好。冲突双方保留,明确来源和确认状态。

confidenceconflictsconfirmable
proceduralcandidate → active

Procedural Memory

经过多次独立成功和明确验收条件验证的流程、技能或检查清单。高风险动作仍需确认。

evidencerollbackapproval
lexicaluser / project

Lexical Memory

术语、缩写、别名、用户惯用表达。用于改善检索和实体对齐,不应自动等同于用户偏好。

aliasesentity linklow risk
projectionmarkdown

可读投影

现有 MEMORY.md、项目笔记、日志和反思继续作为用户可读、可编辑、可恢复的持久层。

human readableauditbackup
05 / DATA

数据契约:事件、记忆和 MemoryPacket

结构化 sidecar 负责未来主动检索的运行时索引和状态;Markdown 负责可读投影。当前动态维护快照由原生 systemPrompt.context() 提供,任何异步结果都必须带版本,避免旧联想污染新上下文。

ContextWindow / SegmentSCHEMA
{
  "sessionId": "session_x",
  "contextVersion": 42,
  "segments": [
    {
      "role": "user",
      "kind": "request",
      "text": "修复记忆注入逻辑"
    },
    {
      "role": "tool",
      "kind": "error",
      "tool": "test",
      "text": "测试失败:..."
    },
    {
      "role": "assistant",
      "kind": "visible_output",
      "text": "正在检查 pre-step..."
    }
  ]
}
MemoryRecordSCHEMA
{
  "id": "mem_001",
  "type": "episodic",
  "scope": "workspace",
  "content": "某次测试失败后先验证 provider",
  "source": "tool_result",
  "provenance": ["turn_12", "tool:test"],
  "confidence": 0.78,
  "salience": 0.72,
  "ttlMs": 604800000,
  "status": "candidate",
  "embeddingVersion": "v1",
  "conflicts": [],
  "revoked": false
}
RuntimeContextSnapshot / native projectionCURRENT
{
  "source": "systemPrompt.context()",
  "surface": "durable user-role snapshot",
  "state": "retained-on-same-text | replaced-on-change | cleared",
  "dedupe": "full snapshot text",
  "note": "Current runtime context. This snapshot supersedes earlier runtime-context snapshots."
}
MemoryPacket / Agent Inbox next-stepFUTURE INJECTION
{
  "packetId": "packet_042",
  "sessionId": "session_x",
  "contextVersion": 42,
  "reason": "当前工具错误与历史验证流程高度相关",
  "mode": "soft",
  "expiresAfterStep": 44,
  "items": [{
    "memoryId": "procedure_017",
    "content": "先检查 provider 配置,再验证 wire 参数",
    "similarity": 0.87,
    "confidence": 0.91,
    "source": "workspace-procedure"
  }]
}
06 / ACTIVATION

联想激活和认知状态分离

语义相似度决定“什么记忆被想起”;认知负荷或运行时异常决定“以多强形式介入”。不能要求模型先表现出困难,记忆才允许出现。

AssociativeActivation = similarity × scopeMatch × confidence × salience × novelty × recency用于候选排序,不等于真实性。高相似、低置信记忆必须保留不确定性。

Associative Activation / 联想激活

当前上下文与某条记忆的关系:语义相似、实体重合、工作区匹配、近期性、显著性、成功复用和新颖性。

Cognitive State / 运行状态

工具错误、重试、重复动作、目标漂移、未解决时长、用户纠正、锚定监控波段。它只调整介入强度。

high + stable

静默预取

缓存候选,等待下一次自然请求边界,避免打断。

high + drift

Soft hint

下一步注入一行相关提示,提醒模型核验。

very high + error

Checklist

注入步骤摘要、验证点和已知失败条件。

low + overload

抑制注入

相关性不够时不增加噪声,宁可等待新事件。

07 / POLYGLOT

JavaScript Host 与 Python Memory Engine

原生 DSH 只加载 JS 插件。Python 作为可选、长期运行、由 JS 管理的 sidecar,不能直接注册 DSH 工具或修改模型上下文。

JS / DSH Host

生命周期与安全决策

apply(ctx)、tools、routes、systemPrompt、pre-step、session 隔离、MemoryPacket、超时、回退、审计和子进程清理。

  • 负责何时注入
  • 负责是否允许注入
  • 负责 DSH 内部对象
Python / sidecar

算法与离线计算

embedding、向量检索、关联图、reranker、衰减、聚类和评测。只收发可序列化 JSON。

  • 负责想起哪些候选
  • 不接触 ctx 或 Agent 对象
  • 失败时回退 JS 关键词检索
DSH 启动注册 client,不阻塞,不静默 pip install。
首次需要Shadow Retrieval 或 embedding 触发 lazy start。
长期复用JSONL stdin/stdout,日志走 stderr。
异常处理超时、有限重启、contextVersion 校验。
安全回退Python 不可用时使用 JS 检索。
JS → Python requestJSONL
{
  "requestId": "req_042",
  "sessionId": "session_x",
  "contextVersion": 42,
  "segments": [{
    "role": "tool",
    "kind": "error",
    "text": "测试失败:..."
  }]
}

// Python response
{
  "requestId": "req_042",
  "contextVersion": 42,
  "candidates": [{
    "memoryId": "procedure_017",
    "similarity": 0.87,
    "confidence": 0.91
  }]
}
08 / PROVIDERS

公开 reasoning 和闭源模型的统一适配

不按模型名称猜能力。每个 Provider / model / version 通过 adapter 声明能力;可见 reasoning 始终是低信任观察信号。

能力Opaque / 闭源SummaryFull-visible记忆系统的处理
reasoningVisibilitynonesummaryfull只作为可选短期片段,不能单独证明事实或意图。
可观测事件用户 / 工具 / 输出同左 + 摘要同左 + trace核心系统必须在没有 reasoning 时仍可工作。
runtimeContextpreset-dependentpreset-dependentpreset-dependent原生 systemPrompt.context() 由 includeRuntimeContext 控制;相同完整快照不重复追加。
packetPatchfuture pre-stepfuture pre-stepfuture pre-step未来 MemoryPacket 才使用 Inbox / user-message;已发请求不能原地改写。
abortAndResume默认 false默认 false实验高阈值、冷却、副作用保护,默认关闭。
ProviderCapabilityADAPTER CONTRACT
{
  "reasoningVisibility": "none | summary | full | unknown",
  "toolEvents": true,
  "streamChunks": true,
  "runtimeContext": "native | none",
  "packetPatch": "pre-step | user-message | none",
  "abortAndResume": false
}
09 / PROCEDURE

程序性记忆:从重复过程到可验证技能

一次成功不是技能,三次重复也不是技能。技能必须拥有成功标准、工具证据、风险等级和回滚路径。

P0Observed观察到事件序列,不改变长期记忆。
P1Candidate抽取触发条件、前置条件和草稿步骤。
P2Validated跨会话成功、明确检查、保留反例。
P3Active可作为 checklist 参与注入。
P4Deprecated过期、冲突或失败率升高后降级。
must

必须有证据

跨独立 session 的成功结果、测试结果或用户确认。

defer

候选不执行

候选技能只能作为建议,不能自动调用危险工具。

rollback

可回滚

技能变更保留旧版本、失败记录和撤销入口。

scope

范围明确

项目技能不能无条件升级为用户级行为。

10 / ROADMAP

分阶段实施路线与验收门

每阶段都可独立关闭和回滚。先保证 session 边界,再让语义算法进入注入链路。

P0
基线与开关

固定当前行为,验证 systemPrompt.section() / systemPrompt.context() projection、会话隔离和 prompt budget;MemoryPacket schema 仍只作未来设计基线。

已维护 回归测试
P1
SessionRuntime

Map<sessionId, runtime>,隔离 working、ring、队列、冷却。

验收 无串线
P2
ContextObserver

统一接收用户、工具、可见输出和生命周期事件,推进版本。

验收 可回放
P3
Shadow Retrieval

关键词、实体、范围、时间衰减排序,暂不影响模型行为。

验收 命中日志
P4
InjectionBroker

MemoryPacket、预算、TTL、冷却、重复抑制和审计。

验收 可解释
P5
未来 packet Soft Injection

复用 durable Inbox / pre-step merge,把经过版本、预算和安全门校验的高置信短提示送入下一步;当前维护快照不走此阶段。

默认关 A/B
P6
Python sidecar

embedding、向量检索、关联图;JS 保留超时和关键词回退。

可选 lazy start
P7
Semantic / Profile

自动抽取先进入 candidate,事实、偏好、术语分开。

需确认 冲突集
P8
Procedure Memory

Observed → Candidate → Validated → Active → Deprecated。

高风险 不自动执行
P9
Reasoning adapter

公开 trace 和锚定信号只作为低信任辅助;闭源模型正常退化。

实验 校准
P10
流式中断续写

只有在取消、重放和副作用保护可靠时评估,默认关闭。

最后 实验开关
11 / INVARIANTS

长期不变量:系统必须始终守住的门

isolation

跨会话泄漏为零

Working Memory、packet 和上下文 ring 不跨 session。

authority

记忆不是指令

注入内容是参考资料,不能覆盖 system、developer 或当前用户指令。

freshness

过期结果丢弃

contextVersion 不匹配、TTL 超时、冲突或撤销后不能注入。

fallback

算法故障可降级

Python、embedding、图检索失败不影响 DSH 基础对话和关键词回退。

12 / EVIDENCE

论文、项目与原生实现依据

这些来源解决的是不同问题。它们是可借鉴的积木,不应被误写成已经实现了本项目的完整 Host 主动能力。

memory types

CoALA

Working / episodic / semantic / procedural 的认知架构骨架。

association

Generative Agents

Memory stream、relevance、recency、importance、reflection。

decay

MemoryBank

长期对话记忆、衰减、强化与巩固。

paging

MemGPT / Letta

主上下文、core、recall、archival 与状态化运行时。

graph

A-MEM / HippoRAG

动态链接记忆节点、图关系和扩散式关联检索。

procedure

Reflexion / Voyager

结果驱动的情景经验和经过环境验证的技能库。

control plane

MemOS / MIRIX

独立于模型的 Memory OS 和多类型 Memory Manager。

evaluation

LongMemEval / LoCoMo

长期交互记忆、时间推理、知识更新和长会话基准。

native DSH

DSH Host / Agent preset

Host composition、Minimal 双工具 preset、原生生命周期和工具注册。

native DSH

dsh-agent-instructions

结构化 fs touch、digest 去重、per-agent inbox、pre-step merge。

target

dsh-auto-memory

把原生动态注入骨架扩展为 Host 主动联想记忆中间件。

研究声明:本页面是 dsh-auto-memory 的设计蓝图,不代表所有 proposed / research 模块已经实现。研究空白表示在当前检索范围内没有发现同时满足 Host 持续观察、无调用预取、下一请求注入、Provider 协商和可撤销治理的成熟端到端系统。正式实现前应重新核验论文版本、项目 API、许可证和 DSH 当前运行时版本。