🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

记忆库 janpauldahlke/dsh-memento

DeepSeek Harness
janpauldahlke31 天前有提交已提供中文文档扫描:含敏感能力

用文件为本地智能体保存并注入长期记忆

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add janpauldahlke/dsh-memento
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · chat
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 31 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 69 处,展示前 49 条)
  • 写入本地文件
    lib/index.js:85
    mkdirSync(paths.root, { recursive: true });
  • 写入本地文件
    lib/index.js:86
    mkdirSync(paths.projectsDir, { recursive: true });
  • 读取本地文件
    lib/index.js:88
    if (!existsSync(paths.me)) {
  • 写入本地文件
    lib/index.js:89
    writeFileSync(paths.me, templateText, "utf8");
  • 读取本地文件
    lib/index.js:98
    text = readFileSync(path, "utf8");
  • 读取本地文件
    lib/index.js:99
    mtimeMs = statSync(path).mtimeMs;
  • 写入本地文件
    lib/index.js:164
    mkdirSync2(dir, { recursive: true });
  • 写入本地文件
    lib/index.js:173
    renameSync(temp, path);
  • 删除本地文件
    lib/index.js:182
    unlinkSync(temp);
  • 写入本地文件
    lib/index.js:244
    mkdirSync3(dirname2(this.inboxFile), { recursive: true });
  • 读取本地文件
    lib/index.js:245
    const startOffset = statSync2(this.inboxFile, { throwIfNoEntry: false })?.size ?? 0;
  • 读取本地文件
    lib/index.js:263
    current = readFileSync3(top.path);
  • 读取本地文件
    lib/index.js:289
    raw = readFileSync3(path, "utf8");
  • 删除本地文件
    lib/index.js:520
    unlinkSync2(path);
  • 执行外部命令来自配置/变量
    lib/index.js:747
    child = spawn(zstdBin, ["-dc", entry.file], { stdio: ["ignore", "pipe", "pipe"] });
  • 发起网络请求
    lib/client.js:159
    const response = await fetch(url, { cache: "no-store", ...init });
  • 发起网络请求
    lib/client.js:783
    if (ok) promoteBus.request(req);
  • 发起网络请求
    lib/client.js:787
    promoteBus.request(req);
  • 读取本地文件
    lib/compliance.js:136
    raw = readFileSync(complianceLogPath(dshHome), "utf8");
  • 读取本地文件
    lib/compliance.js:161
    lines = readFileSync(path, "utf8").split("\n").filter((line) => line.length > 0);
  • 写入本地文件
    lib/compliance.js:167
    writeFileSync(path, lines.join("\n") + "\n", "utf8");
  • 读取本地文件
    lib/enabled.js:10
    return !existsSync(offPath(dshHome));
  • 删除本地文件
    lib/enabled.js:19
    unlinkSync(path);
  • 写入本地文件
    lib/enabled.js:26
    mkdirSync(join(dshHome, "memory"), { recursive: true });
  • 写入本地文件
    lib/enabled.js:27
    writeFileSync(path, "", "utf8");
  • 读取本地文件
    lib/history.js:75
    st = statSync(root);
  • 读取本地文件
    lib/history.js:86
    keys = readdirSync(root);
  • 读取本地文件
    lib/history.js:103
    sessionDirs = readdirSync(keyDir);
  • 读取本地文件
    lib/history.js:112
    files = readdirSync(sessionPath);
  • 读取本地文件
    lib/history.js:126
    const fst = statSync(entry.file);
  • 执行外部命令来自配置/变量
    lib/history.js:146
    child = spawn(zstdBin, ["-dc", entry.file], { stdio: ["ignore", "pipe", "pipe"] });
  • 写入本地文件
    lib/inbox.js:11
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/inbox.js:20
    renameSync(temp, path);
  • 删除本地文件
    lib/inbox.js:29
    unlinkSync(temp);
  • 写入本地文件
    lib/inbox.js:92
    mkdirSync2(dirname2(this.inboxFile), { recursive: true });
  • 读取本地文件
    lib/inbox.js:93
    const startOffset = statSync(this.inboxFile, { throwIfNoEntry: false })?.size ?? 0;
  • 写入本地文件
    lib/inbox.js:96
    appendFileSync(this.inboxFile, bytes);
  • 读取本地文件
    lib/inbox.js:111
    current = readFileSync2(top.path);
  • 写入本地文件
    lib/inbox.js:121
    writeFileSync(top.path, current.subarray(0, top.startOffset));
  • 读取本地文件
    lib/inbox.js:144
    raw = readFileSync2(path, "utf8");
  • 读取本地文件
    lib/inbox.js:158
    raw = readFileSync2(path, "utf8");
  • 读取本地文件
    lib/inbox.js:173
    raw = readFileSync2(path, "utf8");
  • 写入本地文件
    lib/inbox.js:183
    mkdirSync2(dirname2(path), { recursive: true });
  • 写入本地文件
    lib/vault.js:67
    mkdirSync(paths.root, { recursive: true });
  • 写入本地文件
    lib/vault.js:68
    mkdirSync(paths.projectsDir, { recursive: true });
  • 读取本地文件
    lib/vault.js:70
    if (!existsSync(paths.me)) {
  • 写入本地文件
    lib/vault.js:71
    writeFileSync(paths.me, templateText, "utf8");
  • 读取本地文件
    lib/vault.js:80
    text = readFileSync(path, "utf8");
  • 读取本地文件
    lib/vault.js:81
    mtimeMs = statSync(path).mtimeMs;
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 文件保存长期记忆
  • 缓存稳定注入
  • 纯文本行收件箱

DeepSeek Harness 插件:给本地智能体用的有界文件记忆。ME.md + 项目 MEMORY.md 仓库,缓存稳定注入,纯文本行收件箱,Memory 右侧栏。不用向量,不调 LLM。

README

由 DeepSeek 最新模型翻译生成
dsh-local-memento 为 DeepSeek Harness web UI 里的本地编码智能体提供有界文件的记忆。 npm 包名是 dsh-local-memento(dsh-memento 在 registry 上已被占用)。 GitHub 仓库仍是 janpauldahlke/dsh-memento。 新会话会从一份简短的 ME.md 配置档和可选的项目 MEMORY.md 获得热启动。捕获是免费的(Remember this: → 收件箱)。要晋升到注入层,得在 Memory 右侧栏手动编辑——绝不自动写入。没有 embedding,没有向量库,插件内部也不调用 LLM。 相关插件(同样是 web 右侧栏的双面 dsh.bundle 形态): | 插件 | 仓库 | | 进程与端口生命周期 | dsh-agent-processes | | 长周期任务状态 | dsh-local-long-horizon | | NVIDIA GPU 利用率 / 显存 / 功耗 | dsh-gpu-monitor-nvml | | 本地 LLM 端点 / slot 健康 | dsh-slot-health | 本包:dsh-local-memento · 源码 janpauldahlke/dsh-memento。
展开完整文档(README 剩余 1 节)
dsh-local-memento

为 DeepSeek Harness web UI 里的本地编码智能体提供有界文件的记忆。

npm 包名是 dsh-local-memento(dsh-memento 在 registry 上已被占用)。
GitHub 仓库仍是 janpauldahlke/dsh-memento。

新会话会从一份简短的 ME.md 配置档和可选的项目 MEMORY.md 获得热启动。捕获是免费的(Remember this: → 收件箱)。要晋升到注入层,得在 Memory 右侧栏手动编辑——绝不自动写入。没有 embedding,没有向量库,插件内部也不调用 LLM。

相关插件(同样是 web 右侧栏的双面 dsh.bundle 形态):

| 插件 | 仓库 |
| 进程与端口生命周期 | dsh-agent-processes |
| 长周期任务状态 | dsh-local-long-horizon |
| NVIDIA GPU 利用率 / 显存 / 功耗 | dsh-gpu-monitor-nvml |
| 本地 LLM 端点 / slot 健康 | dsh-slot-health |

本包:dsh-local-memento
· 源码 janpauldahlke/dsh-memento。

已在 DeepSeek Harness 0.1.7-rc.2(dsh web)上验证。

环境要求

- DeepSeek Harness web 配置档(dsh web)。
- 构建需要 Node.js ≥ 20。

截图

浅色主题,与 DSH 默认一致。

| 面板 + 聊天 | Memory 面板(全屏) |
| Memory pane open | Memory fullscreen |

| 开始指南(Memory 书本图标) |
| Memory in the Start guide |

你会看到什么

- Memory 右侧栏 —— 编辑 ME.md 和项目文件,晋升或删除收件箱里的行,预览注入了什么,开关插件。
- 标签标题上的状态着色 —— 开启时绿色,关闭时灰色,轮询/写入出错时黄色。
- 收件箱 —— 来自 Remember this: / memory_remember 的草稿列表。不会被注入;智能体只有在 ~/.dsh/memory/ 下翻找时才会读到它。
- ↑ promote —— 往 ME 或项目的草稿(未保存)追加一行。保存后它就从收件箱移出(可撤销)。

安装

从 npm 安装(推荐)

dsh plugin --profile web add dsh-local-memento
restart dsh web (or rely on live patch reload), then hard-refresh the browser

从 GitHub 安装

dsh plugin --profile web add github:janpauldahlke/dsh-memento

从 git checkout 安装(开发者)

git clone https://github.com/janpauldahlke/dsh-memento.git
cd dsh-memento
npm install && npm run build
dsh plugin --profile web add "$(pwd)"

重启(或启动)dsh web,让 host + client 两面加载:

env -u DSH_WEB_URL -u DSH_SHELL -u DSH_SESSION_ID dsh web --no-open

卸载:

bash
dsh plugin --profile web remove dsh-local-memento

restart the web instance that had the plugin

首次运行 —— 写下你自己的 ME.md

插件首次启动时,会从一个通用模板生成 ~/.dsh/memory/ME.md(只有规则和注释掉的示例行)。它不会附带任何别人的配置档。

1. 打开右侧栏的 Memory。
2. 把注释掉的示例换成对你长期成立的事实。
3. 保存。新会话会原样注入这个文件。

已存在的 ME.md 不会被安装或升级覆盖 —— 只在文件缺失时创建。

项目记忆存放在 ~/.dsh/memory/projects/<key>/MEMORY.md(需要时从面板创建)。收件箱是 ~/.dsh/memory/inbox.md。

智能体工具

| 工具 | 用途 |
| memory_remember | 往收件箱追加一行(逃生通道;绝不碰 ME / 项目记忆) |
| memory_history_search | 对已结束会话日志做只读考古(失败即放行) |

聊天中的触发词(同样只进收件箱):Remember this:、Remember:、Note this:。

界面入口

| 入口 | 路径 / 名称 |
| 仓库 | ~/.dsh/memory/(ME.md、inbox.md、projects/…/MEMORY.md) |
| 总开关 | ~/.dsh/memory/.off(面板 On/Off) |
| HTTP | GET /api/dsh-memento/health、/state、/compliance、… |
| UI | 右侧栏 Memory |

设计要点,五句话

1. ME.md(约 30 行)和可选的项目 MEMORY.md(约 45 行)是唯一始终注入的层级。
2. 上限是压力,不是拦截 —— 超出上限的保存照样接受,由你来整理。
3. inbox.md 只追加,永不注入。
4. 智能体永远不写注入层 —— 晋升靠人在面板里编辑。
5. 仪式优先于判断 —— 第一次改文件前先读项目记忆;合规只观察,从不拦截。

刻意不做:embeddings、Qdrant、FTS、晋升阶梯、frontmatter schema,以及插件内部的 LLM 调用。

架构

双面包(与其他 web 右侧栏插件同一标准):

- Host(lib/index.js,ESM)—— 仓库、注入、收件箱、合规、HTTP、工具。
- Client(lib/client.js,CJS ModuleLoader 工厂)—— Memory 右侧栏。
- Glue —— cordis.patch.yml + package.json 里的 dsh.bundle / dsh.client。

assets/ 下的模板在构建时内联;运行时不会从磁盘读取。

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓janpauldahlke/dsh-memento
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-memento

用文件为本地智能体保存并注入长期记忆

这是你的仓库?认领条目

回到顶部