给会话一份会淡忘、可纠正的长期记忆
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MingHuanYue/dsh-tide-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 17 处,展示前 13 条)
- 读取本地文件lib/index.js:33
for (const n of readdirSync(join(npm, '@deepseek-ai'))) push(join(npm, '@deepseek-ai', n, 'node_modules', '@deepseek-ai')) - 读取本地文件lib/index.js:40
for (const p of readdirSync(join(dshHome, 'profiles'))) push(join(dshHome, 'profiles', p, 'node_modules', '@deepseek-ai')) - 读取本地文件lib/index.js:50
if (!existsSync(pkgFile)) continue - 读取本地文件lib/index.js:51
const pkg = JSON.parse(readFileSync(pkgFile, 'utf8')) - 读取本地文件lib/index.js:56
if (!existsSync(file)) continue - 读取本地文件lib/index.js:105
try { return JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json'), 'utf8')).version || '?' } catch { return '?' - 写入本地文件lib/index.js:120
for (const d of [DIR, STORE_DIR, COLD_DIR]) if (!existsSync(d)) mkdirSync(d, { recursive: true }) - 写入本地文件lib/index.js:129
writeFileSync(p, JSON.stringify(v, null, 2) + '\n', 'utf8') - 写入本地文件lib/index.js:162
writeFileSync(file, rows.map((r) => JSON.stringify(r)).join('\n') + (rows.length ? '\n' : ''), 'utf8') - 写入本地文件lib/index.js:169
try { ensureDirs(); appendFileSync(TRACE_PATH, JSON.stringify(entry) + '\n', 'utf8') } catch { } - 写入本地文件lib/index.js:175
appendFileSync(join(DIR, 'tide.log'), new Date().toISOString() + ' ' + msg + '\n', 'utf8') - 发起网络请求lib/client.js:13
const get = (p) => fetch(B + p, { cache: 'no-store' }).then((r) => r.json()) - 发起网络请求lib/client.js:14
const post = (p, body) => fetch(B + p, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
潮汐记忆:给 DeepSeek Harness 一份会淡忘、会过时、看得见的长期记忆(带设置页图形界面)
README
由 DeepSeek 最新模型翻译生成潮汐记忆 · dsh-tide-memory
给 DeepSeek Harness 里的会话一份会淡忘、会过时、看得见的长期记忆。
别人的记忆插件多数是「存下来 + 全塞回去」;潮汐记忆的取舍是: 证据够不够决定它进不进上下文,鲜活度只决定它排多前。
它解决的三个具体问题
1. 忘了该记的 —— 跨会话之后,你上次交代的边界、偏好、约定全没了。
2. 记得太多反而更笨 —— 把一摞旧事全塞进提示词,模型开始在不相关的地方乱套用。
3. 记忆是个黑盒 —— 你不知道它为什么想起那一条,也没法纠正。
三条设计取舍(跟别家不一样的地方)
| 取舍 | 潮汐记忆 | 常见做法 | 为什么 |
| 进不进 | 证据分 C = s/(s+2),低于阈值(默认 0.35)根本不进 | 按相似度 top-k 全塞 | top-k 总会给你 k 条,哪怕一条都不相关 |
| 淡忘 | 事件半衰期 30 天,带情绪 7 天,事实类永不衰减 | 无衰减 / 全部按时间排 | 情绪浓的事该记得更久,画像和约定不该淡 |
| 过时 | 标 supersededBy,新旧都留,可回看 | 直接覆盖或删除 | 「他以前住哪」也是信息,删了就没了 |
再加一条工程上的:没有 900KB 的用户词典。分词靠二元组 + 单字(二元组权重 1、单字 0.5), idf 用记忆库自己的 df 现算。
展开完整文档(README 剩余 1 节)
潮汐记忆 · dsh-tide-memory
给 DeepSeek Harness 里的会话一份会淡忘、会过时、看得见的长期记忆。
别人的记忆插件多数是「存下来 + 全塞回去」;潮汐记忆的取舍是: 证据够不够决定它进不进上下文,鲜活度只决定它排多前。
它解决的三个具体问题
1. 忘了该记的 —— 跨会话之后,你上次交代的边界、偏好、约定全没了。
2. 记得太多反而更笨 —— 把一摞旧事全塞进提示词,模型开始在不相关的地方乱套用。
3. 记忆是个黑盒 —— 你不知道它为什么想起那一条,也没法纠正。
三条设计取舍(跟别家不一样的地方)
| 取舍 | 潮汐记忆 | 常见做法 | 为什么 |
| 进不进 | 证据分 C = s/(s+2),低于阈值(默认 0.35)根本不进 | 按相似度 top-k 全塞 | top-k 总会给你 k 条,哪怕一条都不相关 |
| 淡忘 | 事件半衰期 30 天,带情绪 7 天,事实类永不衰减 | 无衰减 / 全部按时间排 | 情绪浓的事该记得更久,画像和约定不该淡 |
| 过时 | 标 supersededBy,新旧都留,可回看 | 直接覆盖或删除 | 「他以前住哪」也是信息,删了就没了 |
再加一条工程上的:没有 900KB 的用户词典。分词靠二元组 + 单字(二元组权重 1、单字 0.5), idf 用记忆库自己的 df 现算。少一份词典,换个领域也不会水土不服。
装上
从 GitHub 装(推荐,插件市场也是这么发命令的):
dsh plugin --profile desktop add github:MingHuanYue/dsh-tide-memory # 桌面端
dsh plugin --profile web add github:MingHuanYue/dsh-tide-memory # 命令行 web 端
装完重启一次 DSH,设置页里才会出现「潮汐记忆」
从 npm 装(发布之后可用):
dsh plugin --profile desktop add dsh-tide-memory
本地源码装(改代码调试用):
dsh plugin --profile desktop add file:D:/path/to/dsh-tide-memory
用起来
给它工具(模型自己会调):
- tide_remember —— 记一条:text / kind(event 或 fact)/ imp 0~1 / emo 0~1 / keys
- tide_recall —— 按线索找:query / limit
- tide_forget —— 标过时(不是删)
- tide_stats —— 库里现在多少条、多少还活着
给人看的界面:设置 → 潮汐记忆
- 记忆库下拉:每个工作区一个库,显示条数和最近一条的时间
- 手动记一条:选「事件/事实」和重要度
- 搜索 + 过滤:还在的/事实/事件/钉住的/已过时/全部
- 每条卡片:类型、鲜活度百分比与色条、被想起次数,按钮有 钉住 / 改 / 标过时 / 删
- 看它怎么想起来的:最近几轮注入的 trace,每条的 C(证据)、P(排序分)、act(鲜活度)
- 设置区:开关、事件半衰期、情绪半衰期、每轮最多几条、证据阈值、字数上限
记忆存在哪
$DSH_HOME/tide-memory/
├── config.json # 全局设置 ├── trace.jsonl # 注入日志(「怎么想起来的」) ├── stores/<key>.jsonl # 每个库一行一条 └── cold/<key>.jsonl # 冷宫:淡到快没了又没被想起的(没删,能翻回来)
一行长这样:
{"id":"ly3k9x","t":1761215000000,"last":1761215000000,"kind":"fact",
"text":"主人不喜欢别人替他做决定,什么事都要先问一句",
"keys":["决定","边界"],"imp":1,"emo":0.5,"hits":3,"pinned":false,"supersededBy":null}
纯 JSONL,随手 grep 就能翻,也能自己写脚本搬进搬出。
打分怎么算的
act = kind 是 fact ? 1 : 0.5 ^ (天数 / 半衰期)
C = s / (s + 2) // s = 命中词的 idf × 词权重 之和
P = C × (0.55 + 0.25·act + 0.15·imp + 0.05·emo)
- C 低于阈值 → 不进上下文(默认 0.35:一条明确命中就过半,两条更稳)
- 进的那几条按 P 排序,最多 6 条 / 800 字
- act 低于 0.05 且从未被想起的事件 → 挪进冷宫
调阈值是这套东西最有效的一个旋钮:觉得它乱想起来就调高,觉得它太健忘就调低。
排障
装完起不来:先看 profile 的 package.json 有没有被工具写成带 BOM 的 UTF-8。
$p = 'D:\nodejs-data\dsh-home\profiles\desktop\package.json'
[System.IO.File]::WriteAllText($p, [System.IO.File]::ReadAllText($p), (New-Object System.Text.UTF8Encoding($false)))
设置页没出现「潮汐记忆」:重启 DSH;还没出现就 dsh --profile desktop --dump-config 看 bundle 名单里有没有 dsh-tide-memory。
从 GitHub 装报 exit code 128:pnpm 把 github: 解析成 SSH 了。
git config --global url."https://github.com/".insteadOf "git+ssh://git@github.com/"
权限与隐私
- 只读写 $DSH_HOME/tide-memory/ 下自己的 JSONL 文件,不碰别的目录。
- 不联网:没有云端、没有 embedding 服务、没有 key。分词和检索全在本地算,一次几十毫秒。
- 记忆只有两个来源:模型主动调 tide_remember,或者你在设置页手动记一条。
- 每轮注入了哪几句,会同时写进 trace.jsonl,设置页里能直接看(C / P / act 三个数)。
- 想清空:删掉 stores/ 下对应的 *.jsonl,或者在设置页逐条删。卸载插件不会删数据,重装还在。
兼容性
- DSH >= 0.1.7-rc.1(见 package.json 的 engines.dsh),Node >= 22。
- 图形界面挂在设置页,桌面端和 web 端都能用(client 走 dsh.client 声明,platform: web)。
- 记忆库按工作区分桶:同一个工作目录下的会话共用一个库,换项目不串味。
- 已知显示层小瑕疵:设置页的库下拉里偶尔会出现一行 ws-xxx__ 的重复名,那是文件名把中文折成了下划线(同一份数据),不影响读写,重启后按 safeKey 归并就没了。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MingHuanYue/dsh-tide-memory
给会话一份会淡忘、可纠正的长期记忆
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目