前言¶
在 DeepSeek Harness(DSH)里做长期协作时,常见做法是依赖会话原文或外部向量库:上下文变长、检索噪声多,模型也容易把「说过的话」和「该长期遵守的约定」混在一起。社区插件 dsh-selfnote(维护者 xyzOvO)把记忆拆成几层:模型用第一人称写给自己看的自述、经你确认的事实与习惯、以及按需检索的历史对话原文。自述与事实分开存、分开注入,每回合最多约 800 字进入系统提示。下面介绍它是什么、怎么装、怎么用设置页把关。
这是什么¶
一句话:把「记忆」从「检索一堆聊天记录」变成「几句它自己写的自述 + 几条你点头过的事实」。
| 层 | 谁写 | 存在哪 | 会不会忘 |
|---|---|---|---|
| 自述 | 模型(工具 self_note) |
~/.dsh/selfnote/notes.md |
不删,写满进归档 |
| 事实 | 你采纳后生效(memory_stage → 设置页) |
~/.dsh/memory/facts.jsonl |
冷下去只降排序,不删 |
| 画像 | 由已采纳事实派生 | 内存,不落盘 | 每回合重算 |
| 原文 | DSH 会话机制 | ~/.dsh/sessions/* |
随会话增长 |
约定:自述里第一人称「我」指 agent;记忆条目、事实的主语是用户。插件分类为「记忆」,当前包版本见仓库 package.json(资料中为 0.13.2),许可证 MIT,运行环境 Node.js >= 20.13.0,依赖 DSH 的 Cordis 插件体系(@deepseek-ai/cordis)。
社区目录页:skillhub.cn/plugins/xyzOvO/dsh-selfnote。DSH 生态是「一切皆插件」;该目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
三个工具¶
| 工具 | 作用 | 关键约束 |
|---|---|---|
self_note |
写一条第一人称自述 | 一句话到三句话;有硬触发与可选自定义时机 |
memory_recall |
按关键词查历史对话原文 | 只收正文,剔除 reasoning / 工具输出 / 注入内容 |
memory_stage |
把查到的一句连出处放进候选区 | 无出处直接拒绝 |
何时应写自述(工具说明中的默认判据,命中任一条就该写):用户说「记住这个」一类话;用户连续两次纠正同一件事;一段合作收尾(任务交付、方向定了);或模型发现「这次不对、下次换做法」。设置页可另加一条 80 字以内的自定义时机,填后通过注入生效(改工具注册描述需重启 DSH,故自定义走注入)。设置页还显示 notes.md 的上次写入时间。自述明文在本机且每回合进上下文,密码、密钥、验证码等凭据不应写入;用户姓名、习惯等更适合经 memory_stage 进事实库。
自动采集与人工闸门¶
默认开启的采集只发现长期约定类表述(如「以后…」「不要…」「我更喜欢…」),产出一律是候选,不会自动变成已采纳事实。只收用户亲手输入的 user/message;委派会话(origin === 'subagent' 或 delegationDepth > 0)整场跳过。候选 → 已采纳、已采纳 → 退役都必须人在设置页点击;模型没有这两个开关。
注入与遗忘¶
每回合系统提示中会拼一段记忆(总预算约 800 字),分段包括自述、画像、环境、结论、习惯等;「注入」页可查看 composeInjection() 拼出的原文及各段字数,被预算挤掉的条目会列出(整条跳过,不截半句)。热度随使用与时间衰减,半衰期默认 30 天(设置页可调 1–365);只有真的进入注入才算使用,检索到但未进上下文的不记。冷下去只影响排序,不会自动删除事实。
设置页(五页)¶
装好后在「知识库」下多一节「人格(自述)」:概览(注入开关、抬头、存储上限、索引与七个记忆相关文件)、自述(列表可就地改删,删的进归档)、记忆(候选 / 已采纳 / 习惯)、画像、注入(本回合实际贴进提示词的内容与注入归属表)。有待审候选时默认打开「记忆」页。
索引与检索方面:历史对话索引在过期时会标明状态;落后少量会话时可就地补索引再查;会话文件支持增量 zstd 帧解析以降低长会话查询成本。细节以 README 为准。
安装与启用¶
插件以当前 DSH 进程权限读写 ~/.dsh/ 下文件,安装前应自行查看 GitHub 源码 与 MIT 许可证。
官方 README 给出的装法分两步:先取得插件目录的绝对路径(例如从 GitHub 下载源码包并解压),再通过 DSH 的插件管理安装 bundle:
plugin_manager { action: "install_bundle", target: "<该目录的绝对路径>" }
装完重启 DSH 后应出现:上述三个工具、设置页「人格(自述)」、以及每回合系统提示中的记忆段。也可以直接对 agent 说:「帮我装一个 DSH 插件,目录是 <绝对路径>」。
典型用法¶
1、让系统发现一条长期约定(尚未生效)
在普通聊天中说:
以后回答先给结论,细节等我问。
插件可能将其识别为长期约定并放入候选区,但不会自动生效。
2、在设置页审核
打开 设置 → 人格(自述)→「记忆」,在候选卡上查看来源与会话出处,点击「采纳」后下一回合进入系统提示;点「退役」则仅保留在库中备案。
3、让模型写一条自述
例如:
你写一条自述,说说你做这类插件时的习惯。
模型调用 self_note 写入 notes.md,之后各会话都会携带(在注入预算内)。
诊断自动采集是否在工作时,可使用带 x-selfnote 头的 GET /api/selfnote/capture(令牌见 ~/.dsh/selfnote/auth-token),返回事件统计与候选数量等,详见 README。
适用场景与注意¶
适合:希望 agent 有稳定的「自我叙述」、又要把用户侧事实与习惯经人工确认后再注入的长期协作;需要看清每回合到底贴了哪些记忆、哪些条目被预算挤掉。
注意:记忆文件在本机明文;插件逻辑与数据路径以仓库文档为准。版本与测试规模以仓库 badge / package.json 为准(资料中 README 徽章曾标 0.11.1,与 package.json 的 0.13.2 并存时,以你本地安装包为准)。不要假设与官方产品捆绑;星标与社区热度以目录页为准(线索中为 1 star)。
结尾¶
dsh-selfnote 把跨会话记忆拆成自述、可审核事实与可检索原文,并用注入预算和热度控制「占上下文的位置」,而不是无限堆聊天记录。进一步了解设计与「遗忘」思路见仓库 docs/想法.md。