@hy-sde-org dsh-memory-extraction
英语| 中文
总结
dsh-memory-extraction 是玛卡自动提取记忆的DSH端口吗
触发:每次之后 compaction/summary 事件(检查点边界)
有界的、失败打开的管道项目 user-authored 的文本
检查点范围,用辅助提出和规范化持久事实
建模调用,并将承认的事实提交到同一个项目内存库中
retain/learn 写。严格来说 添加剂 到DSH的外显记忆
表面: retain/learn/memory_edit 工具保持面向模型的路径
港口有意保留(不保留)马卡的葡萄酒
memory_remember/memory_extract 动词。
这个包裹是一个 host-plane Cordis插件(inject: ['memory', 'llm'],
不发布任何内容):一个进程打开 memory_extraction 控制单元一次
并通过一个无作用域的 ctx.on('session/event')
侦听器(范围筛选器全局允许未限定范围的侦听器)。运行
按会话序列化并且从不阻塞压缩侦听器。
承重规则(从Maka港运)
- 证据仅为用户撰写的文本 - - - - - -项目
user/message事件的source.kind === 'user';辅助文本仅用于解释;工具 调用/结果、推理和插件检查点是不透明的。证据是 (12000个字符JSON /每条记录4000个字符/ 64条记录)和 fail-closed 在溢出。 - 确认入场 -提案→录取(逐字报价检查) 反对有限的证据+秘密拒绝)→规范化→ 最多是重新录取 3辅助模型调用 每个范围60秒 超时;包含故障(在运行时边界处打开故障)。
- 光标只移动到已提交的边界 -空范围仍然存在 预付款(无订单收据,无模型呼叫);一个失败的范围变成一个挂起的范围 记录由下一个触发器重试,然后丢弃。写入顺序为 项目→光标→收据,因此光标和收据之间永远不会崩溃 double-process。
- 幂等是确定的 - operation id =
memory_+ sha256 of{sessionId, trigger, boundarySeq};收据使重播无操作和 委员会侧重复探测修复项目和收据之间的崩溃。 - 子代理除外 -闸门在每次模型调用后重新检查
默认拒绝子会话(
excludeSubagents: true)。 - 跨会议证据厅(E1) ——一个事实只犯一次
minGapEvidence截然不同的 会话(默认为2个;一个会话永远不会计数 两次,甚至在其自身的压缩中,都提出了相同的持久事实。 未经证实的事实变成gaps在账簿上看到的,稍后给大家看 提案被视为悬而未决的事实(该模型引用了agapId而不是 创造释义);标识返回到规范化的内容散列。 当事实被提交或已经在银行中被发现时,事实就会退出(承保)。 更早的目击事件gapLedgerMaxAgeMs(默认90天)过期。延期货 仍然移动光标并结算收据;读/写分类帐 取配置值为0完全关闭(e1之前的行为)。
目录表
使用这个包
这一行属于 主机组成 -它注入主机服务
(memory, llm),每个过程打开一次控制单元,并且必须观察
每个会话的事件。没有代理预设贡献,也没有工具。
# host composition (loaded before any session)
- id: memory-extraction
name: '@hy-sde-org/dsh-memory-extraction'
config:
backend: sqlite # storage backend hosting the control unit (default sqlite)
enabled: true # master switch (default true)
excludeSubagents: true # child-agent compactions never extract (default true)
# provider: <cheap provider id> # optional; unset uses the session's routed model config
# model: <cheap model id> # optional; unset uses the session's routed model config
importance: 0.5 # bank importance for auto-extracted facts (default 0.5)
dedupe: true # probe the bank before committing duplicates (default true)
timeoutMs: 60000 # auxiliary call timeout (default 60000)
minGapEvidence: 2 # distinct sessions before a fact commits (default 2; 0 disables the floor)
gapLedgerMaxAgeMs: 7776000000 # sightings older than this stop counting (default 90 d in ms)
它的存储后端必须公开 kv 面(运来的) sqlite 后端
做; storage-json 不)-上面一行是完整的主机布线。
这个引擎本身是纯粹的,可以测试的,不需要cordis。
import { MemoryExtractionEngine } from '@hy-sde-org/dsh-memory-extraction'
const engine = new MemoryExtractionEngine(ports) // readGate/readEvents/read+write cursor+receipt+failure/commitItems/generate
const result = await engine.execute(snapshot) // never throws; idempotent by operation id
布线
插件异步启动:一个效果通过打开控制单元
storage.backend.<backend>.kv.open(MemoryExtractionControlStore.descriptor)
(memory_extraction,版本1,表 cursors/receipts/failures/gaps
- gap表是附加的,版本保持1,因为storage-sqlite
后端拒绝现有媒体上的版本颠簸; CREATE TABLE IF NOT EXISTS
在升级时实现它)和
注册 session/event 侦听器。丢失的后端记录日志并离开
插件惰性,而不是失败的组合。
理解实现
src/evidence.ts-有限证据投影,覆盖规划 (二进制搜索收缩,失败关闭溢出),同一会话本地化 搜索,报价验证。src/proposal.ts-严格的手动JSON解析器(complete /search_required/cannot_resolve/规范化),提示构建器 将证据诬陷为 不可信的数据,入场(逐字引用,最少4个字符) 秘密拒绝,NFC +注入中和,2000字符含量上限)。src/control.ts-持久游标/收据/故障/缺口存储超过一个KvUnit(单写链;打开后修复;写顺序记录)。src/engine.ts-状态机:幂等接收,门,空范围 提前,一次重试-然后丢弃,三呼叫预算,提交排序。src/events.ts-有损的DSH事件投影(仅限用户/辅助文本); 旋转跟踪定位分组)。src/memory-adapter.ts-提交表面结束ctx.memory:双重探针; 然后save与source: 'memory_extract',加上闸门工厂。src/runtime.ts-主机接线:每个会话顺序队列,生成适配器 (BlockAssembler,AbortSignal.timeout(路由提供商/模型覆盖), 实时服务上的同步/异步端口实现。
进一步的探索
- 这是从Maka源移植的:
memory-extraction.ts. - 发出边界事件的压缩生命周期:
@deepseek-ai/dsh-compaction.
模型经验
管道为每个检查点范围添加了3个辅助模型调用
用户撰写的文本(建议、可选的本地化、规范化)
有界的 timeoutMs。配置 provider/model 给一个廉价的辅助
模型适用于大型部署;当取消设置时,会话被路由
使用了请求头。模型永远不会看到原始日志或工具结果
有限的、用户编写的证据加上简短的本地化上下文。
已知的限制和延迟的工作
- 每个会话有一个挂起的失败 (重试一次,然后丢弃)- Maka保持 更丰富的失败状态(例如证据增长重试),稍后作为单个移植 重试。
- 没有持续的再提取 关于证据增长:一个失败的检查点 重试一次,然后丢弃。
- 间隙标识是模型引用或精确散列的 ——对建议的释义
Pass不链接到一个打开的未决事实通道
gapId又回到 规范化的内容散列并保持挂起,直到字节相同的发现(或 一个明确的引用)证实了这一点。没有完成词法/语义匹配。 - 延迟的事实不是重复探测的 ——已经有人这么做了
retain埃德说,提取建议永远不要通过银行支票退休;它 当第二个会话引用它或它的查看过期时退出。 - Maka facet没有被移植 (/时间/范围/标签);每个提取
事实是
source: 'memory_extract'以及配置的重要性。 - 没有谓词工具:
memory_remember/memory_extract是保留名称; 显式DSH内存工具仍然是面向模型的路径。 - 重复数据删除探测依赖于本地内存库
search看到以前 已提交的行(同进程语义)。