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

分层任务记忆 RaganaBloodedge/dsh-lmmarr

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

让任务进度与关系图谱常驻上下文,按需只读相关记忆

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · chat
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/16) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    src/memory/nodefs.ts:11
    return existsSync(path) ? readFileSync(path, 'utf8') : undefined;
  • 读取本地文件
    src/memory/nodefs.ts:11
    return existsSync(path) ? readFileSync(path, 'utf8') : undefined;
  • 读取本地文件
    src/memory/nodefs.ts:16
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/memory/nodefs.ts:16
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/memory/nodefs.ts:17
    writeFileSync(path, content, 'utf8');
  • 读取本地文件
    src/memory/nodefs.ts:21
    if (!existsSync(dir)) return [];
  • 读取本地文件
    src/memory/nodefs.ts:22
    return readdirSync(dir, { withFileTypes: true })
  • 删除本地文件
    src/memory/nodefs.ts:30
    rmSync(path, { force: true });
扫描于 2026/11/2(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 长期记忆插件:分层任务记忆 + 关系图谱 + 索引常驻稳定前缀;零运行时依赖,另附同源的 Agent skill 形态

README

由 DeepSeek 最新模型翻译生成
dsh-lmmarr DeepSeek Harness 的长期记忆插件。lmmArr = long-memory, as a task graph。 一句话定位:让「我在做什么、做到哪、和什么有关」零成本常驻,并且按任务只读那一块记忆。 它解决什么 上下文压缩会丢细节,RAG 只能「再找回来」,而每开一个新会话,模型都得重新被告知你是谁、在做什么。 本插件的做法不是压缩,而是换一种组织方式: | 层 | 文件 | 谁在维护 | 成本 | | 原始 | YYYY-MM-DD.md | 人手工写,append-only | 零(不进上下文) | | 任务 | MEMORY_<任务ID>.md | 模型按需读写 | 只在召回该任务时进上下文 | | 索引 | MEMORY.md | 工具自动重写 | 常驻(投影进系统提示,确定性、有预算) | 关键在最后一行:索引被逐字放进了稳定前缀,所以它是「免费」的 —— 引擎的前缀缓存第一次算完就留住了。 索引里不含时间戳,同一份记忆投影出的文本逐字相同;这是缓存能否命中的充要条件,也是本仓 docs/design.md 里那条论证的落地。
展开完整文档(README 剩余 1 节)
dsh-lmmarr

DeepSeek Harness 的长期记忆插件。lmmArr = long-memory, as a task graph。

一句话定位:让「我在做什么、做到哪、和什么有关」零成本常驻,并且按任务只读那一块记忆。

它解决什么

上下文压缩会丢细节,RAG 只能「再找回来」,而每开一个新会话,模型都得重新被告知你是谁、在做什么。
本插件的做法不是压缩,而是换一种组织方式:

| 层 | 文件 | 谁在维护 | 成本 |
| 原始 | YYYY-MM-DD.md | 人手工写,append-only | 零(不进上下文) |
| 任务 | MEMORY_<任务ID>.md | 模型按需读写 | 只在召回该任务时进上下文 |
| 索引 | MEMORY.md | 工具自动重写 | 常驻(投影进系统提示,确定性、有预算) |

关键在最后一行:索引被逐字放进了稳定前缀,所以它是「免费」的 —— 引擎的前缀缓存第一次算完就留住了。
索引里不含时间戳,同一份记忆投影出的文本逐字相同;这是缓存能否命中的充要条件,也是本仓 docs/design.md 里那条论证的落地。

安装

从源码直接挂载(免构建,当前可用):

dsh web --patch ./cordis.yml

从 npm 安装(包尚未发布,发布后可用):

dsh plugin --profile web add dsh-lmmarr

自检(改配置后务必看一眼,dsh 对配置错误是静默忽略而不是报错):

dsh --profile web --dump-config | grep -A8 "id: lmmarr"

配置

| 字段 | 默认 | 说明 |
| dir | <cwd>/.dsh-memory | 记忆目录 |
| depth | 1 | lmmarr_context 的默认邻域跳数 |
| writeEnabled | true | 设 false 整插件只读;写工具会明确拒绝并说明原因,而不是静默无效 |
| guidance | true | 是否注入记忆协议到系统提示 |
| hotMemory | true | 是否把索引投影进上下文 |
| maxProjectionCharacters | 2000 | 投影的字符预算;超出先丢关系、再裁任务,且显式说明截断 |
| bodySoftLimit | 16000 | 单个任务正文的软上限;超出只在索引里提示「该拆了」,不自动改写 |
| timeoutMs | 10000 | 工具执行超时 |

工具

| 工具 | 作用 |
| lmmarr_index | 读完整索引(任务表 + 关系图 + 一致性问题)。索引已在上下文里,只在需要全表或要报告问题时调用 |
| lmmarr_context | 读一个任务 + 其直接邻域,其余文件一个不碰。这是读记忆的正道 |
| lmmarr_upsert | 建/改一个任务记忆文件。同 id 复用即更新,未传的字段一律保留 |
| lmmarr_link | 声明 child(拆解)/ depends(前置)/ relates(弱关联);child/depends 必须无环,成环的边会被拒绝且什么都不改 |
| lmmarr_forget | 删一个任务文件并带走它的关系。破坏性操作,只在用户明确要求或条目确实错了时用 |

架构

src/
index.ts 插件入口:只做「按 dsh 规范挂载」这一件事 guidance.ts 记忆协议 → systemPrompt.section(告诉模型何时该用、何时绝不该写) project.ts 热记忆投影 → systemPrompt.section(确定性、有预算、无时间戳) service.ts Cordis 服务 lmmarrMemory(工具只是它的一层视图) memory/ 记忆内核:graph(图谱)/ store(存储)/ nodefs / cli index/ 未接入的检索路线探索(embedding / 一致性哈希 / 任务归纳),论证见 docs/design.md

三条设计约束,都写进了测试:

1. 内核对外零依赖。graph.ts / store.ts 只认一个 FsPort 接口,所以能完全离线单测。
2. 写路径唯一。「采集问题 → 重写索引 → 返回快照」收敛在 service.refresh() 一处。顺序不可换:重写索引会把悬空边自愈掉,先写再查就永远报不出问题。
3. 引导与工具分离。工具的 description 只说「能做什么」;「什么时候用、什么时候绝不该写回」必须常驻系统提示,模型才会形成纪律。

开发

npm run verify # 类型检查 + 全部测试 + 构建
npm test # 只跑测试(node --test,无需构建)
npm run build # tsc → lib/
npm pack # prepack 会自动构建;产物只含 lib/ + cordis.patch.yml + 文档
npm run verify:name # 发布前包名闸门
npm run verify:mount # 挂载探针:真实 boot 一次,确认 5 个工具与两段引导真进了模型可见面(不花模型调用)

发布流程与坑清单见仓库内的 docs/publishing.md(维护者文档,不随 npm 包发布)。

同一套记忆,装成 Agent skill

skill/ 是同一份记忆内核的 skill 形态(SKILL.md + references/ + 零依赖脚本),供按 skill 机制加载的宿主使用。它与 dsh 插件同源——都编译自 src/memory/,不会分裂成两份实现:

npm run sync:skill # src/memory → skill/scripts,并安装到 ~/.workbuddy/skills/lmmarr-memory
skill/tools/agents-probe.mjs 是一道零依赖的能力门:探测当前框架有没有子代理,输出 MODE delegate|self-compress,给「探索性工作该委派出去、还是只留结论」这条纪律分叉用。

与 dsh-mnemon 的关系

本插件的架构骨架(引导层、视图/注意力分离、服务化、打包与发布形态)参考了 dsh-mnemon。
刻意的取舍:

借鉴:系统提示里常驻的记忆协议;把能力 provide 成服务、工具只做视图;params 走 JSON Schema 子集(每个 object 必须显式 additionalProperties);发布形态(lib/ 构建产物 + dsh.bundle.patch + exports/files 白名单)。

不跟:多 provider 后端(9 个外部记忆服务)、React 客户端 UI、Git 同步与 GitHub 登录、子代理协调器、view_route/view_action 的双层间接寻址。这些在 mnemon 的规模下是必要的,在我们这里主要变成维护面。

License

MIT
预览分享卡片长什么样 ↓RaganaBloodedge/dsh-lmmarr
分享 · DeepSeek Harness Hub
RaganaBloodedge/dsh-lmmarr

让任务进度与关系图谱常驻上下文,按需只读相关记忆

回到顶部