dsh-archived-digest:把归档会话提炼成记忆与技能

前言

在 DeepSeek Harness(DSH)里,归档只是把会话从列表里收起来,原始日志仍完整保存在 $DSH_HOME/sessions/ 下。时间一长,归档条目变多、体积变大,列表里多是重复的流式 chunk、工具结果和每轮重复注入的环境说明——对后续对话几乎没用,却持续占磁盘并在界面里形成噪音。

常见做法是手动翻旧日志、自己抄结论,或干脆不管。下面介绍的 dsh-archived-digest(维护者 LLL-lyh0,npm 包名 dsh-archived-digest,当前版本 0.5.0,MIT 许可证)走另一条路:逐个读归档会话,用模型留下值得保留的部分,写成 markdown 记忆和可复用技能,并可选地把日志删掉;提炼在前、删除在后,顺序在实现里是强制的。

这是什么

一句话:已归档(以及可选的实时)会话 → 记忆、事实台账、技能 → 统一目录管理,并可回收日志空间。

插件在 DSH 左侧栏增加「归档会话提炼」入口(order: 12),并提供 archived_digest Agent 工具。社区目录页:SkillHub - dsh-archived-digest;源码与说明:GitHub - LLL-lyh0/dsh-archived-digest。

核心功能

逐会话提炼与产出目录

每个成功提炼的归档会话对应 $DSH_HOME/archived-digest/memories/<slug>.md,可复用做法写入 skills/<name>/SKILL.md,并同步发布一份到 $DSH_HOME/skills/<name>/SKILL.md(供技能中心与 agent 扫描;同名已存在的手写技能不会被覆盖,面板会提示未覆盖)。

典型目录结构如下:

$DSH_HOME/archived-digest/
├── memories/          # 逐会话记忆 + index.json
├── skills/            # 技能 + index.json
├── facts.json         # 事实台账与聚合主题
├── trash/             # cleanupMode=trash 时的回收站
├── state.json         # 提炼 / 失败 / 清理状态
└── settings.json      # 面板设置(唯一真相源)

记忆层:事实、时效、主题

除逐会话摘要外,插件把结论拆成事实行,并参考社区已有做法做合并与聚合:

  • 事实级写入:对每条结论做 ADD / UPDATE / NOOP;同一话题换说法为 UPDATE(旧结论标 validUntil 退役),完全重复为 NOOP,新话题才 ADD。
  • 时效而非覆盖:被取代的事实保留 validUntil、supersededBy,历史仍可追溯。
  • 主题聚合:事实按主题聚块,条目带 ^f00012 类出处指回来源会话;整合幂等。聚类使用混合字面相似度(拉丁词 Dice + 中文单字 Dice),并配合会话标题作为 subject,避免跨会话同义表述无法合并的问题。
  • 可选导出:检测到本机已挂载 OpenViking / Mnemon 等记忆插件时可推送聚合结果;本地台账始终是真相源,推送失败只记原因,不回写。

面板提供「主题记忆」「事实」等标签页,支持重新整合、检索、手动「忘记」单条事实(会二次确认)。

面板与九个标签页

总览、归档会话(可勾选手动提炼)、进行中(实时会话水位线)、主题记忆、事实、记忆、技能、自检、设置。自动提炼默认关闭(耗 token);cleanupMode 默认 off,提炼成功也不会自动删日志,直到你在设置里显式选择 off / logs / dir / trash 之一。

实时会话与增量提炼(可选)

默认只处理已归档会话。打开 captureLiveSessions 后,会对已静默(默认 90 秒无新日志)的未归档会话提炼;清理仍仅作用于归档会话,实时通道只写记忆、不删日志。

incrementalLiveCapture 可对进行中的会话做只读增量提炼:用事件 seq 作水位线,游标存在插件自己的 live-cursors.json,不改会话日志;部分提炼的记忆带 partial: true,且不能被 cleanup 删掉完整日志。

自检精简

记忆与技能会随时间变「脏」。自检先测量再可选执行:重复事实合并、弱 open 事实失效、重复技能合并(默认关,风险最高)。除用户手动「忘记」外,自检对事实只做 supersede,不硬删行。后台 selfCheckEnabled 默认关。

Agent 工具 archived_digest

在对话里可直接调用,例如:

action: status       # 库存与进度
action: digest       # 提炼(可带 sessionIds)
action: cleanup      # 清理已提炼的归档会话
action: recall       # 检索记忆(query=...)
action: consolidate  # 重算主题
action: live-digest  # 进行中会话只读增量提炼
action: selfcheck    # 测量或执行记忆精简

完整 action 列表见 GitHub README。

安装与启用

从 GitHub 安装(README 推荐方式):

dsh plugin add github:LLL-lyh0/dsh-archived-digest

装完后重启 DSH 宿主(bundles 只在启动时读一次)。

依赖宿主自带的 @deepseek-ai/dsh-llm(peerDependencies,optional)。懒加载:没有 LLM 后端时插件仍可加载,但退化为不调模型的本地路径;要完整提炼需在设置里配置 provider / model,或依赖宿主 provider 注册顺序兜底。

典型用法

  1. 安装并重启宿主,在左侧打开「归档会话提炼」。
  2. 在「设置」中按需打开 autoEnabled、选择 cleanupMode;首次使用建议保持自动提炼与清理均为默认关,先手动验证记忆质量。
  3. 在「归档会话」勾选待提炼条目,点「提炼所选」;或在对话中让 agent 调用 archived_digest,action: digest 并传入 sessionIds。
  4. 在「记忆」「技能」「主题记忆」中检索结果;若需省磁盘且确认记忆已落盘,再执行 cleanup(面板或 action: cleanup)。
  5. 需要边聊边记时,再考虑打开 captureLiveSessions 或 incrementalLiveCapture,并注意每轮上限(如 liveMaxPerRun 默认 2)。

常用设置默认值(节选,完整表见 README):

键 默认 含义
autoEnabled false 后台自动提炼
cleanupMode 'off' 提炼后是否删日志
extractSkills / extractFacts true 是否提炼技能 / 事实
captureLiveSessions false 是否提炼未归档实时会话
maxSourceChars 14000 送模型的转录上限(从尾部截)
maxTokens 2400 模型输出上限

适用场景与注意

适合谁: 长期用 DSH、归档较多、希望把历史对话收成可检索记忆与技能、并可控释放 $DSH_HOME/sessions/ 磁盘的人;也适合需要事实台账与主题聚合、并可选对接 Mnemon / OpenViking 的 workflow。

务必注意:

  • 插件以当前 DSH 进程权限读写 $DSH_HOME;安装前请阅读源码与 MIT 许可证,确认清理策略(尤其 cleanupMode 为 dir 或 trash)符合你的备份习惯。
  • 提炼与自检会消耗 LLM token;自动跑批默认关,且每次自动最多处理少量会话(autoMaxPerRun 默认 3)。
  • SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;安装来源以你信任的 GitHub 仓库为准。
  • README 中「本机实测」数据(例如归档条数与体积)来自维护者环境,仅说明问题规模,不是你的机器上的 guaranteed 结果。

结尾

dsh-archived-digest 把 DSH 归档从「藏起来但仍占空间」变成「可管理的记忆、事实与技能」,并在你明确选择后再回收日志。若你在用 DSH 做长期 agent 开发,值得在手动试跑提炼与 cleanup 策略后再开自动化。

  • 目录页:https://www.skillhub.cn/plugins/LLL-lyh0/dsh-archived-digest
  • GitHub:https://github.com/LLL-lyh0/dsh-archived-digest
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜