편집자 노트

Culeot/dsh-agent-memory

Cross-session long-term memory plugin for DeepSeek Harness (DSH)

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-agent-memory

DeepSeek Harness(DSH)的跨会话长期记忆插件。

English

功能

跨会话记住事实、偏好、决策和教训,新会话开局就能用上之前会话积累的信息。数据存在 $DSH_HOME/storages/memory.json(纯 JSON,可直接查看、可进 git)。不需要 MCP 服务器、不需要向量库、不需要 embedding API、无额外运行时依赖。

特性

  • 跨会话持久:A 会话写入,B 会话开局即可检索到,新会话接着旧项目的状态走。
  • 按需注入相关记忆:每轮模型执行前,插件根据你当前说的话自动检索最相关的记忆(通过 DSH 的 agent/pre-step hook),注入最多 injectCount 条短摘要(默认 3)。你说"继续做数学教辅"→ 教辅项目的决策和踩坑自动出现。不再每轮广播固定热集——只在相关时付费。
  • 自我纠错闭环:同一错误(相同 code/消息)重复出现 lessonizeAfter 次(默认 2)时,插件提示 agent 把它固化为 importance=3 的教训;教训入库后会在相关话题上自动注入,防止再犯。用户纠正则由记忆协议覆盖(当场固化)。
  • 中文友好检索:中文按 bigram(双字)索引 + 单字兜底,英文按词,另加整串匹配。不需要分词库或任何 ML 依赖。
  • 原生接入:复用 DSH 的存储 domain(ctx.storageDomain)、工具注册和 agent 生命周期 hook,跟随官方版本保持兼容。

工具

工具用途
memory_remember写入一条持久记忆(content、kind、tags、scope、importance、可选 TTL)。
memory_recall按关键词检索;按相关性、重要性、新鲜度、历史使用频率排序。
memory_index浏览记忆清单,支持 kind/tag/scope 过滤、分页、标题级展示。
memory_forget按 id 或 tags 删除;importance=3 记录需 confirm: true
memory_import从 JSONL/JSON 文件导入记忆,走写链(不直接改存储文件)——安全的批量导入方式。
memory_reload外部修改存储文件后,从磁盘重开并合并,无需重启。

分类:fact | preference | decision | lesson | todo | note。范围:user(所有项目生效)或 project(仅当前项目)。

外部修改防护

存储文件在启动时加载一次,由运行中的进程整体写入(单写者模型)。为防止进程内写入静默抹掉外部改动:

  • 每次写入先校验文件指纹,不一致(其他进程/脚本改过)拒绝写入并报清晰错误,而不是覆盖;
  • 批量导入请用 memory_import(走写链,文件与内存保持同步);
  • 如果仍然手动改了 memory.json 或拷入文件,调用 memory_reload 合并(或重启)。

重复抑制

按需注入在"检索结果与上一轮完全一致"时跳过,连续聊同一话题不会反复注入同一块——「相关记忆」提示在话题变化时出现,而不是每句话都出现。

安装与启用

⚠️ 尚未发布到 npm。用 file: 协议从本地路径安装。

# 1. 给 profile 加依赖
cd ~/.dsh/profiles/<名字>
pnpm add dsh-agent-memory@file:/path/to/dsh-agent-memory
# 2. 在 agent preset 里加一行(~/.dsh/.agent-presets/<preset>/agent.cordis.yml)
- id: memory
  name: 'dsh-agent-memory'
# 3. 重启 DSH,新会话里出现 4 个工具

不用 preset?也可以挂到 profile 的 host 平面(~/.dsh/profiles/<名字>/cordis.patch.yml):

- insert:
    - id: memory
      name: 'dsh-agent-memory'

前置条件:profile 里已挂存储三件套(dsh-storagedsh-storage-jsondsh-storage-domain——web profile 自带)。

配置

全部可选:

配置项默认说明
maxRecords400容量上限,超出自动淘汰低价值记录
maxContentChars2000单条记忆正文长度上限
injectEnabledtrue每轮按当前消息注入相关记忆(agent/pre-step)
injectCount3每轮最多注入条数(0 关闭)
injectMaxChars120每条注入摘要长度上限
lessonizeEnabledtrue同类错误重复时自动提示固化教训
lessonizeAfter2同指纹错误出现几次后提示
recencyHalfLifeDays90新鲜度半衰期(天)
mergeSimilarity0.7近重复合并阈值
protocolSectiontrue注入记忆协议 prompt 段

卸载与排查

  • 卸载:profile 里 pnpm remove dsh-agent-memory,删掉 preset/patch 里的行。数据留在 memory.json,重装自动恢复。
  • 工具没出现:检查行是否存在、依赖是否安装、是否重启过 DSH。
  • 存储报错:memory 插件依赖存储三件套,profile 缺的话在 patch 里补上。
  • memory.json 损坏:纯 JSON,手动修复或直接删除(删除=清空记忆)。

开发

npm install && npm run build && npm test   # 构建 + 31 个单元测试
npm run smoke                              # 真机 headless 往返验证

许可证

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.