全部插件

DSH / BUNDLE / BUNDLES

dsh-task-memory

v0.1.0wangyihao0001-oss / dsh-task-memory4044616d05

可安装组合包组合包与其他模块社区 · 已通过自动检查

概览

dsh-task-memory

Task-isolated long-term memory for DeepSeek Harness: remember / recall / search stay inside one task boundary, with optional prompt injection.

README / ZH

插件文档

dsh-task-memory

English | 中文

面向 DeepSeek Harness 的任务隔离长期记忆插件。

记忆按任务分库,保存在 ~/.dsh/storages/task-memory/。写入某一任务的事实,对其他任务默认不可见,除非主动切换任务。

为什么做这个

多数 DSH memory 插件是全局或按 workspace 共享的。本插件把 task(任务) 当作隔离边界:

  1. 默认任务:由 session 的 cwd 推导
  2. memory_bind_task:把当前 session 绑到指定任务 vault
  3. 搜索 / 读取 / 提示注入:不会跨任务边界,提示注入按 agent 级作用域注册——每个会话的系统提示只注入它自己任务的记忆

工具

工具 作用
memory_bind_task 将当前 session 绑定到某个任务 vault
memory_current_task 查看当前 session 所在 vault(绑定 or 默认)
memory_remember 按 key 写入或更新一条事实
memory_recall 按精确 key 读取
memory_search 关键词搜索(英文 + 中文 bigram)
memory_forget 删除一条
memory_list_tasks 列出所有任务 vault
memory_clear_task 清空某个 vault(需 confirm: true)

安装

# 从公开 GitHub 仓库安装(建议钉完整 commit SHA)
dsh plugin --profile web add "github:wangyihao0001-oss/dsh-task-memory"

# 开发时 link 本地 checkout
dsh plugin --profile web add "$(pwd)"

安装后重启 Web UI(或重启 profile),先绑定任务,再 remember / recall / search。

上架 dsh.pub 后,也可通过目录页的安装说明 / dshpub 流程安装。

本地开发(不安装)

npm install
npm run build
npm test        # node:test 单测
npm run smoke   # 构建 + 冒烟

若你从 DSH 源码仓库启动:

pnpm dsh web --patch /absolute/path/to/dsh-task-memory/cordis.dev.yml

请把 cordis.dev.yml 里的绝对路径改成指向本仓库编译后的 lib/index.js。

配置

cordis.patch.yml 默认值:

injectLimit: 8           # 注入到提示中的记忆条数上限
injectMaxChars: 2400     # 注入块软字符预算
injectMaxEntryChars: 400 # 单条记忆在注入块中的字符上限(超出截断)
injectPrompt: true       # 是否为当前任务注入置顶/近期事实
maxEntries: 500          # 每个 vault 的条目上限(>= 1);超出时淘汰最旧的非置顶条目(置顶永不被淘汰;新增超出上限会被拒绝,对已有 key 的更新不受影响)

可选 storageRoot 覆盖默认目录 ~/.dsh/storages/task-memory。

存储与可靠性

~/.dsh/storages/task-memory/
  <task-id>.json

每个文件形如:

{
  "taskId": "<task-id>",
  "title": "<title>",
  "updatedAt": 0,
  "entries": [
    {
      "id": "m_…",
      "key": "<key>",
      "content": "…",
      "tags": [],
      "pinned": true,
      "createdAt": 0,
      "updatedAt": 0
    }
  ]
}
  • 文件是纯 JSON,可直接手工编辑或备份
  • 写入通过临时文件 + 原子 rename,读取永远看到一致快照
  • 同一任务的写入(含 memory_bind_task 的标题更新、save、update)在进程内串行化(per-task 锁),并行 agent 并发写不会丢更新。读改写请优先用 update,避免 load → 修改 → save 覆盖并发写入。
  • 置顶条目永不被淘汰;vault 满且可淘汰的只有置顶条目时,新增 key 会被拒绝并返回明确错误(避免"刚写入就被淘汰"的静默丢失);对已有 key 的原地更新(upsert)不受容量限制,仍会尽力收缩
  • 启动时自动清理崩溃残留的 *.tmp(只清理超过 1 小时的,避免误删其他进程的进行中写入)

路线图

  • ✅ 按 session 精确的提示注入(agent 级 scoped context,取代进程级 bind 猜测)
  • 在同一套工具背后可选向量检索
  • 小型 Web UI:浏览 / 置顶 / 删除 vault

许可证

MIT