用文件为本地智能体保存并注入长期记忆
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 31 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
janpauldahlke/dsh-memento
用文件为本地智能体保存并注入长期记忆
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目