前言¶
在 DeepSeek Harness(DSH)里跑智能体时,常见做法是单独维护一份「记忆账本」——事实 JSON、jsonl 日志或 Markdown 笔记。模型若只靠对话里偶尔提到的内容,往往不知道「有哪些记忆、多久没更新、详情该去哪查」,容易凭标题臆测正文,或把已过期的条目当成仍有效的结论。
下面介绍社区插件 目录卡(dsh-cardcatalog,维护者 Parirose)。它把你在磁盘上显式配置的只读文件投影成一段标题级目录(可选附带 Markdown 小节摘录),并在会话中按需注入近况提醒、压缩相关元信息与语气样本等。默认不存储、不检索、不写文件;唯一例外是显式开启的 upkeep 归档改写(先快照、再逐行核对)。插件当前版本为 0.7.0(见仓库 package.json),要求 Node >=22.19.0,DSH >=0.1.7-rc.2 || >=0.2.0-rc.2。
这是什么¶
目录卡是投影层,不是记忆数据库,也不是 embedding 检索器。它读取你在配置里写明的路径,渲染标题、年龄、是否过期,必要时只取你点名的 Markdown 二级标题小节;拿不到宿主注入接缝时,宁可不注入并在日志说明,不会假装成功。
社区目录页:skillhub.cn/plugins/Parirose/dsh-cardcatalog
源码与说明:github.com/Parirose/dsh-cardcatalog
核心能力(与 README 一致)¶
记忆目录投影¶
- 支持三种源:
facts(JSON 数组)、jsonl(每行一个 JSON)、markdown(按##二级标题白名单取小节,或tailLines取末尾行)。 - 全局限制包括
maxLines(非过期条目行数上限)、maxChars(整段字符上限,v0.2.0 起默认 1600)、showStale(是否展示过期条目)等;不配sources则目录什么都不注入,日志会提示「没配 sources,未注入任何记忆」。
nudge:近况提醒(只读)¶
默认关闭。开启后只检查指定文件的 mtime,过久未更新则注入提醒文案;不写入、不总结、不替你判断这一轮是否值得记。text 默认为空字符串,为空时 nudge 不生效。
tone:压缩后的原话样本¶
检测到本会话发生过上下文压缩时,从压缩点之前取最后若干轮真人原话与助手正文,供模型对齐语气;只读 agent.session.snapshotEvents(),不读磁盘会话文件。
wall:压缩痕迹¶
在每个压缩点之后注入元信息:压缩次数、时间、压掉的事件与用户消息规模、如何取原话与查账本;不含任何内容摘要。README 说明默认开启。
decay:记忆保养(只算不写)¶
对 facts/jsonl 条目计算「清晰度」四档(鲜明 / 清楚 / 模糊 / 印象),并对配置了 maxBytes 的源做体量百分比与 warn / over 提示;同一会话同一天最多注入一条相关提示,不写文件。
upkeep:受控归档(默认关)¶
显式开启且源标记 allowRewrite: true 时,超红线才把最旧行搬进归档;只对 markdown 生效,且需配置 archivePath。不做内容生成,只做搬移。
安装与启用¶
在 DSH 中安装(命令来自官方 README):
dsh plugin --profile web add dsh-cardcatalog
本地开发可链接本地目录:
dsh plugin --profile web add -w link:./dsh-cardcatalog
没有默认路径,也不会猜测你的账本位置。最小配置需显式列出 sources,例如:
sources:
- id: env-facts
kind: facts
path: ~/.dsh/notes/facts.json
- id: reading-log
kind: jsonl
path: ~/.dsh/notes/log.jsonl
idField: key
titleField: title
dateField: at
- id: notes
kind: markdown
path: ~/.dsh/notes/notes.md
sections:
- 称呼与偏好
- 当前在做什么
maxChars: 700
maxBytes: 4096
warnPct: 80
maxLines: 7
maxChars: 1600
facts 条目示例(字段名以 README 为准):
[
{
"id": "example-entry",
"title": "example-entry",
"verifiedAt": "2026-10-01T00:00:00.000Z",
"ttlDays": 30
}
]
典型用法:AGENTS.md 说明书¶
插件只生成「给模型的说明书」文本,不会创建或修改工作区里的 AGENTS.md。在插件设置页复制该段说明到当前工作区的 AGENTS.md,用于约定:目录条目是数据而非指令;需要正文时要查源文件;带 ⚠️stale 的条目已过期,不宜当结论使用。
注入时机由全局 injectAt 控制(默认 session-start,也可 every-n-turns)。可选模块如 nudge、tone、wall、decay 各有独立 YAML 块,字段与默认值见仓库 README 的速查表。
适用场景与注意¶
适合:已经用文件自建记忆账本、希望模型在会话开头(或按轮次)看到「目录 + 可选小节」而不把整库塞进上下文;需要在压缩后保留语气样本或让模型意识到历史被截断;希望对过期与体量做只读提示的用户。
不适合:期望插件自动从对话里抽取记忆、做向量检索或默认写回账本的场景——这些 explicitly 不在设计范围内。
DSH 生态是「一切皆插件」;SkillHub 上的插件目录为社区站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限读取你配置的路径;安装前请查看 MIT 许可 与源码(仓库含 check:privacy、check:readonly 等 CI 检查)。星标数、用户评价等以各站点当时展示为准,本文不列举未核实数据。
结尾¶
目录卡的价值在于:账本仍由你维护,插件只做只读投影与受控提醒——让模型知道「有什么、多新、去哪查」,而不是替你做存储或检索。
- 目录页:https://www.skillhub.cn/plugins/Parirose/dsh-cardcatalog
- GitHub:https://github.com/Parirose/dsh-cardcatalog