把用户习惯与工程洞见沉淀为可检索的本地长期记忆
34.7/100
综合分
2
GitHub 星标
105
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @creative-dswork/dsh-expmemnpm 源 · @creative-dswork/dsh-expmem 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 62 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@creative-dswork/dsh-expmem @ 0.5.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 04:56:52
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 11 处,展示前 11 条)
- 读取本地文件lib/cli.js:28
const content = (await readFile(path, "utf8")).trim(); - 读取本地文件lib/cli.js:131
entries = await readdir(directory, { withFileTypes: true }); - 读取本地文件lib/cli.js:163
raw = await readFile(join(homedir(), ".claude.json"), "utf8"); - 写入本地文件lib/storage-DZiZuwLB.js:436
await mkdir(join(this.rootDir, "archive"), { - 删除本地文件lib/storage-DZiZuwLB.js:542
await rm(this.memoryPath(kind, id)); - 写入本地文件lib/storage-DZiZuwLB.js:1110
await mkdir(dirname(path), { - 写入本地文件lib/storage-DZiZuwLB.js:1116
await writeFile(temporary, `${JSON.stringify(value, null, 2)}\n`, { - 写入本地文件lib/storage-DZiZuwLB.js:1121
await rename(temporary, path); - 删除本地文件lib/storage-DZiZuwLB.js:1123
await rm(temporary, { force: true }); - 读取本地文件lib/storage-DZiZuwLB.js:1127
return JSON.parse(await readFile(path, "utf8")); - 读取本地文件lib/storage-DZiZuwLB.js:1131
return (await readdir(directory, { withFileTypes: true })).filter((entry) => entry.isFile() && entry.name.endsWith(".json")).map((entry) => entry.name
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tool-session-query@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-commands@deepseek-ai/dsh-compaction@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 沉淀用户习惯
- 沉淀工程洞见
- 本地长期记忆检索
最近更新
在 GitHub 查看全部 →v0.5.02026-08-21
· 持久化反思运行
· 新增由文件支撑的待处理 -> 已准备 -> 已完成反思运行生命周期。
· 新增 expmem_reflect,用于高层问题准备、排序证据检索和带引用的洞察提交。
· 中断或进程重启后恢复未完成的运行。
· 让提交重试幂等,包括从部分写入的洞察文件恢复。
· 只消费已提交洞察引用的源修订;未引用和已更新的记录仍可在后续反思中使用。
· 把源修订绑定到 claim SHA-256 和重要性。
· 用持久化的 DSH 来源标记「subagent」把反思运行通知和工具执行限制在主智能体。
· 兼容性
· 现有旧版和 Schema v1 记忆记录继续加载。
· 没有 Run 元数据的旧反思记录保留其源消费行为。
· 普通 parentSession 分叉仍然符合条件;只有标记 origin: "subagent" 的会话被排除。
· 未新增向量数据库、后台工作进程、运行时依赖或额外模型请求。
· 文档与验证
· 更新英文和中文 README,加入架构、生命周期、工具示例和主智能体边界。
· 17 项运行时测试通过。
· 已验证打包 tarball 安装、公开声明和命令行行为。
v0.4.02026-08-20
· 生成式经验记忆
· 把 MemGPT 风格的 Recall 和 Archive 基础设施,与 Generative Agents 的检索和反思模型结合起来。
· 给记忆记录加上 importance 和 lastAccessedAt,默认值向后兼容。
· 按归一化后的新近度、重要性和字面相关性给搜索结果排序。
· 存储反思洞察时附带引用的来源记忆 ID,拒绝悬空链接、自链接和循环。
· 未反思记忆达到配置的重要性阈值后,触发一次反思通知。
· 让上下文保护压力优先于反思压力。
· 围绕架构、功能、Claude Code 和 Codex 兼容性以及两大研究基础,重写英文和中文 README。
· 兼容性
· 现有的 0.2.x 和 Schema v1 记录继续可加载。
· Claude Code 和 Codex 导入保持幂等。
· 没有新增向量数据库、后台 worker、运行时依赖或额外模型请求。
· 验证
· 16 个运行时测试通过。
· 已验证打包 tarball 安装、公开声明、命令行导入和确认删除。
v0.3.02026-08-19
· 可信的记忆生命周期
· 新增 Schema v1,包含候选、已验证、有争议和被取代四种状态。
· 记录作者、证据、验证、冲突、取代关系和声明时间。
· 新增 expmem_transition 和按状态感知的搜索。
· 外部审查报告保持不透明、不做验证,只作为证据绑定到精确的声明哈希。
· 通过惰性规范化保留 0.2.x 旧记录。
· 在 Claude Code 和 Codex 导入时保护已验证的历史。
· 新增带确认的命令行删除,只留最小墓碑记录。
· 验证
· 12 项运行时测试,包括 fx-04、fx-05、fx-07 和 fx-08 审计夹具。
· 已验证打包 tarball 安装和交互式命令行删除。
· 没有新增运行时依赖、模型调用、服务或数据库。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成DSH ExpMem
面向 DeepSeek Harness 的经验记忆。
介绍
DSH ExpMem 是 DeepSeek Harness 的社区长期记忆插件。它把用户习惯、可复用任务经验和工程洞见保存在可检查的本地文件中,并继续使用 DSH Session 历史作为原始 Recall。
设计结合了两条研究路线。MemGPT 提供记忆基础设施,包括分层存储、压力检测、检索和显式记忆操作;Generative Agents 提供认知流程,包括重要性判断、按当前情境检索、形成 reflection,以及让记忆参与后续 planning。
DSH ExpMem 并非 DeepSeek 官方项目。
展开完整文档(README 剩余 1 节)
DSH ExpMem
面向 DeepSeek Harness 的经验记忆。
介绍
DSH ExpMem 是 DeepSeek Harness 的社区长期记忆插件。它把用户习惯、可复用任务经验和工程洞见保存在可检查的本地文件中,并继续使用 DSH Session 历史作为原始 Recall。
设计结合了两条研究路线。MemGPT 提供记忆基础设施,包括分层存储、压力检测、检索和显式记忆操作;Generative Agents 提供认知流程,包括重要性判断、按当前情境检索、形成 reflection,以及让记忆参与后续 planning。
DSH ExpMem 并非 DeepSeek 官方项目。
架构
flowchart TB
subgraph Runtime["DeepSeek Harness 运行时"]
Agent["DSH Agent"]
Meter["Token Meter"]
Sessions["Session PersistenceJSONL"]
end
subgraph Memory["MemGPT 风格的记忆基础设施"]
Recall["Recall原始会话历史"]
Archive["ExpMem Archive本地 JSON 记录"]
end
subgraph Cognition["Generative Agents 风格的认知循环"]
Retrieve["检索相关性 + 新近度 + 重要性"]
Reflect["Reflection Runpending → prepared → completed"]
Plan["规划与行动位于 DSH Agent Loop"]
end
Sources["Claude Code / CodexMarkdown 记忆"] -->|"幂等导入"| Archive
Sessions --> Recall
Meter -->|"70% 上下文压力"| Agent
Recall --> Retrieve
Archive --> Retrieve
Retrieve --> Agent
Agent -->|"晋升持久经验"| Archive
Agent --> Reflect
Reflect --> Retrieve
Retrieve --> Reflect
Reflect --> Archive
Agent --> Plan
DSH 负责 Recall、上下文压缩和 Agent Loop。ExpMem 负责提炼后的 Archive、检索排序、 reflection 来源和可信记忆生命周期。它不会复制 Session 事件。
Context Engineering
这套设计可以放到 Context Engineering 的四类操作中理解:
| 技巧 | 覆盖情况 | 实现 |
| Write Context | 已覆盖 | DSH 将消息和工具事件持久化为 Session Recall;Agent 通过 expmem_write 保存习惯、可复用经验和洞见,并在上下文压力达到 70% 时晋升持久知识。 |
| Select Context | 已覆盖 | session_search 和 session_event_search 查找原始历史;expmem_search 按相关性、新近度和重要性排序长期记忆,Reflection Run 复用同一条检索链路。 |
| Compress Context | 已覆盖 | DSH Compaction 将较早历史和既有检查点合并为新的 ,原始事件仍留在 Session Log。ExpMem 在压缩前提示 Agent 保存高价值经验,错过提示后再从 Recall 补做晋升。 |
| Isolate Context | 框架层已覆盖 | DSH 为子 Agent 建立独立 Session;fork 只复制父级已完成历史的快照,随后独立积累上下文。ExpMem 按 workspace 限定长期记忆,并将 Reflection Run 保留给主 Agent。 |
特色
- 分层记忆: DSH Session JSONL 保存原始历史;ExpMem 按记录保存用户习惯、任务经验和洞见。
- 压力感知晋升: 上下文达到 70% 时,当前 Agent 会在压缩前保存持久知识;阈值跳变后可以从 Recall 补做晋升。
- 个性化检索: 搜索结合相关性、新近度和 Agent 指定的重要性,结果参与后续 planning 和 reaction。
- 可审计 reflection: 高层洞见引用支撑它的观察或之前的 reflection。ExpMem 会拒绝悬空引用、自引用和环路。持久化 Reflection Run 可以在中断后恢复,并且只消费实际引用的来源 revision。
- 可信生命周期: candidate、verified、disputed 和 superseded 状态保留来源、冲突与替代历史;确认删除后只留下最小 tombstone。
- 本地轻量: 不引入向量数据库、后台 Worker 或第二次模型调用,也不修改 DSH Agent Loop。
兼容 Claude Code 与 Codex
ExpMem 可以导入两种工具生成的 Markdown 记忆:
pnpm dlx @creative-dswork/dsh-expmem import all --dry-run
pnpm dlx @creative-dswork/dsh-expmem import all
Claude Code 默认扫描 ~/.claude/projects//memory/.md;Codex 默认扫描 $CODEX_HOME/memories//.md,未设置 CODEX_HOME 时使用 ~/.codex/memories/*/.md。自定义目录可显式指定:
pnpm dlx @creative-dswork/dsh-expmem import claude --claude-dir /path/to/memory
pnpm dlx @creative-dswork/dsh-expmem import codex --codex-dir /path/to/memories
每个源文件会成为一条 candidate experience 记录。它的 imported-file evidence 保存来源 Agent、源文件绝对路径、SHA-256 和观测时间。重复执行时,未变化的文件会跳过; candidate 内容变化时原位更新;verified、disputed 或 superseded 内容变化时创建新的 candidate,并保留原记录。
ExpMem 不修改或删除源文件。可通过 --workspace /path/to/project 显式设置项目范围;使用 Claude 默认目录结构时,ExpMem 会在映射唯一的情况下自动恢复源 workspace。
论文依据
MemGPT
MemGPT: Towards LLMs as Operating Systems 把 LLM 上下文窗口视为稀缺的工作记忆,并通过分层存储调度信息。ExpMem 采用了其中四个机制:
- DSH 上下文是当前工作集;
- DSH Session 历史是 Recall;
- ExpMem JSON 记录是 Archival store;
- 压力提示让 Agent 在上下文压缩前保存重要经验。
Generative Agents
Generative Agents: Interactive Simulacra of Human Behavior
定义了支持 retrieval、reflection 和 planning 的 memory stream。ExpMem 采用了与记忆直接相关的机制:
- 每条记录保存重要性和最近访问时间;
- 检索结合相关性、新近度和重要性;
- reflection 以 insight 记录保存,并引用来源记忆;
- 未反思记忆的累计重要性触发当前 Agent 形成 reflection。
活动计划继续由 DSH task 和 Session 状态管理,因为它们会随执行过程变化。ExpMem 保存应当影响后续计划的持久习惯、经验和 reflection。
安装
dsh plugin --profile web add @creative-dswork/dsh-expmem
该 bundle 会启用 DSH Session Query,注册 Recall 与 ExpMem 工具,并安装记忆压力和 reflection 提示。按正常方式启动 DSH:
dsh web
存储
默认文件布局:
$DSH_HOME/
├── sessions/ # DSH 持有的 Recall JSONL └── expmem/ ├── recall-index.sqlite # DSH 派生的全文索引 ├── archive/ │ ├── habit/.json │ ├── experience/.json │ ├── insight/.json │ └── tombstones/.json └── reflection-runs/ └── .json
Schema v1 记录包含 claim、candidate|verified|disputed|superseded 状态、作者、证据、重要性、最近访问时间、可选 workspace 和记录关系。ExpMem 会为 0.2.x 记录和早期 v1 记录补兼容默认值。损坏文件或未知未来版本会产生扫描告警,不会让同目录的有效记录消失。
每次写入都会在目标目录创建临时文件,再进行原子重命名。搜索只读取最终 .json 文件,因此中断留下的临时文件不会被当成不完整记录。
可信生命周期
新记录和导入记忆默认是 candidate。只有 verification 引用了以下合格证据时, expmem_transition 才允许将 candidate 升级为 verified:
- 用户确认,并绑定完整的 DSH Session 事件范围;
- 工具复现结果,并绑定完整事件范围;
- 通过 external URI evidence 回查独立来源。
candidate 或 verified 可以转为 disputed。新的 verified 记录可以声明单向 supersedes,ExpMem 在读取时反向计算 supersededBy。disputed 记录可以声明记录级 conflictsWith。旧 claim 会继续保留,不会被新结论覆盖。
外部 review-report 只是不透明 evidence。ExpMem 保存报告 Schema、ID、位置、报告 SHA-256,以及被评审 claim 的 SHA-256。ExpMem 不打开报告位置、不解析 verdict、不运行评审模型,也不会仅凭 review-report 授予 verified。
排序检索与 reflection
每条记忆都有 1 到 10 的 importance 和 lastAccessedAt。搜索采用 Generative Agents 的三因子排序:
score = normalized(recency) + normalized(importance) + normalized(relevance)
recency = 0.995 ^ hours_since_last_access
relevance 使用字面查询词覆盖率。只有实际返回给 Agent 的 hit 才会更新 lastAccessedAt。
insight 可以包含 reflection: { question, sourceMemoryIds }。来源 ID 可以指向观察记录或之前的 reflection,从而形成可审计的 reflection tree。没有 ExpMem 来源记录时,reflection 必须引用完整的 DSH Session 事件范围。
未 reflection 的记忆累计达到 30 个 importance 点后,ExpMem 会创建一个持久化 Reflection Run:
pending
→ 提交高层问题并检索证据 → 提交带引用的 insight candidate → completed
Run 中断后会在下一 turn 或进程重启后恢复。commit 保持幂等,完成时只消费 insight 实际引用的来源 revision;未引用记录仍可进入后续 Run。来源 revision 由 claim SHA-256 和 importance 共同绑定。这个过程不增加第二次模型调用。活动计划继续保存在 DSH 任务和 Session 状态中。
notice 会提供 Run ID。主 Agent 先提交需要反思的问题:
{
"action": "prepare",
"runId": "",
"questions": [
"哪些实现方式反复提升了代码评审的可靠性?"
]
}
ExpMem 会为每个问题返回 questionId 和排序后的记忆结果。Agent 随后为每个问题提交一条带引用的 insight:
{
"action": "commit",
"runId": "",
"insights": [
{
"questionId": "",
"title": "先提供证据,再给出结论", "content": "聚焦的修改和明确证据能够提高代码评审的可靠性。", "importance": 8,
"sourceMemoryIds": [""]
}
]
}
sourceMemoryIds 只能引用该问题 prepare 结果中的记忆。ExpMem 会把结果写成 insight candidate;完成 Run 不等于验证 claim。
ExpMem 通过持久化 Session Header 中的 origin: "subagent" 识别子 Agent。子 Agent 不会收到 Reflection Run notice,调用 expmem_reflect 也会被拒绝。普通 parentSession fork 仍可执行 Reflection Run。
工具
| 工具 | 用途 |
| session_search | 在当前 workspace 中查找相关历史会话。 |
| session_event_search | 在指定历史会话内搜索事件。 |
| expmem_search | 按新近度、重要性和相关性排序检索经验。 |
| expmem_write | 创建或更新 candidate,并记录 importance 与 reflection 来源。 |
| expmem_reflect | prepare 或 commit 一个持久化 Reflection Run。 |
| expmem_transition | 用证据验证或质疑记录,并添加冲突或替代关系。 |
| expmem_forget | 删除 candidate,并留下最小 tombstone。 |
默认搜索 candidate、verified 和 disputed;检查历史时需要显式请求 superseded。
ExpMem 要求 Agent 把 candidate 和 disputed 视为未验证信息,不保存密钥、临时进度或原始日志。
确认删除
Agent 工具只允许删除 candidate。verified、disputed 或 superseded 必须通过 CLI 删除:
pnpm dlx @creative-dswork/dsh-expmem forget insight \
--reason-code incorrect
命令会显示记录的 ID、分类、状态和标题,再等待显式确认。已经完成外部确认的非交互操作可使用 --yes,机器读取结果可增加 --json。tombstone 只包含 Schema 版本、 ID、分类、删除时间和枚举 reason code。
压力晋升
每个模型 step 开始前,ExpMem 复用 DSH Token Meter 测量当前上下文。默认达到 70% 时,它会注入一条 synthetic user notice,要求 Agent 先搜索已有 ExpMem 记录,最多保存三条高价值 candidate,然后继续原任务。
该提示会进入 DSH Session 日志,因此每个成功压缩周期只触发一次。如果 DSH 在提示送达前已经完成压缩,ExpMem 会改为提供被压缩事件的范围,要求 Agent 从 Recall 读取原始消息后补做晋升。整个过程不需要后台 Worker 或独立的 LLM 总结器。
配置
在 profile 的 cordis.patch.yml 中覆盖 expmem:
- id: expmem
config:
rootDir: /absolute/path/to/expmem
maxEntryChars: 20000
maxPreviewChars: 1000
maxSearchResults: 20
promotionEnabled: true
warningRatio: 0.7
maxPromotionsPerCycle: 3
recoveryAfterCompaction: true
reflectionEnabled: true
reflectionThreshold: 30
recencyDecay: 0.995
rootDir 必须是绝对路径。搜索先选择至少命中一个字面查询词的记录,再按三因子排序;空查询会对过滤范围内的全部记录排序。
压力晋升只会在当前 DSH 组合同时提供 Token Meter 和模型上下文窗口元数据时启用。
如需修改 Recall 索引位置,可覆盖 bundle 中已有的配置行:
- id: session-query-sqlite
config:
path: /absolute/path/to/recall-index.sqlite
openAt: first-search
开发
pnpm install
pnpm run check
pnpm run pack:dry-run
将当前 checkout 安装到 profile:
dsh plugin --profile web add .
dsh --profile web --dump-config
当前范围
- Archive 搜索采用透明的线性扫描;只有实际数据规模证明需要时才增加索引。
- 晋升采用 Agent 协作模式:由当前 Agent 判断哪些记录符合条件,也可以不写入任何记录。
- 暂不包含向量检索、后台 LLM 总结器、语义去重模型或保留周期调度。
- ExpMem 保存外部 review-report 链接,但不运行或解析审计管线。
- Recall 的删除与保留策略继续由 DSH 会话持久化负责。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
creativedswork/dsh-expmem
把用户习惯与工程洞见沉淀为可检索的本地长期记忆
相关插件 · 对话 / 记忆
上下文中枢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
这是你的仓库?认领条目