证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle记忆与上下文deepseek-harness Profile

dsh-memory

为 DeepSeek Harness 提供持久、可搜索的按项目记忆与强制规则。

快速了解

它能做什么

为 DeepSeek Harness 提供持久、可搜索的按项目记忆与强制规则。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
记忆与上下文记忆上下文搜索
适配技术
deepseek-harnessduckdbopenai-compatible-embeddings
兼容性

deepseek-harness Profile
Not declared in supplied evidence

可信度与状态

证据已验证
核对日期 2026/9/15 UTC 14:22

有代码证据的贡献

它为 DSH 增加什么

项目记忆工具

提供搜索、存储、回忆及管理项目记忆和约束规则的工具。

机制证据
Memory 标签页

在项目会话中增加 Memory 标签页,用于浏览、搜索、编辑、归档、删除和审计记忆与规则。

机制证据

选择前先看

dsh-memory 将决策、规则、会话摘要和项目上下文保存在 .dsh/memory.db 的 DuckDB 文件中。它提供记忆工具和 Web Client 的 Memory 标签页;默认每次模型请求都会注入已存规则,会话上下文则在会话开始时注入。

适合谁

希望智能体跨会话保留项目决策和工作规则的 DeepSeek Harness 用户。

常见任务

  • 让后续会话继续使用架构决策、冲刺目标和会话摘要。
  • 创建始终有效的项目必须遵守或禁止的规则,并写入系统提示词规则块。
  • 通过 Memory 标签页搜索、编辑、归档或审计项目记忆。
  • 按需接入兼容 OpenAI 的嵌入端点以获得语义检索。

权限与数据

使用本地项目存储;可选地连接已配置的嵌入服务。

权限
  • 读取和写入每个项目的 .dsh/memory.db DuckDB 数据库。
  • 添加记忆管理工具和 Web Client 的 Memory 界面。
  • 启用 injectRules 时,将已存规则注入模型请求。
数据处理
  • 项目记忆、规则、会话上下文和来源信息保存在本地 DuckDB 文件中。
  • 可提交该数据库以共享规则,也可加入 .gitignore 以保持本地私有。
外部服务
  • 可选语义检索支持兼容 OpenAI /v1/embeddings 的端点,包括托管服务、本地服务或 Ollama。
凭据
  • 可选嵌入通过如 OPENAI_API_KEY 的环境变量名称引用凭据;README 表示密钥不会被存储。

局限

  • 未启用嵌入提供方时,检索仅按关键词进行。
  • 默认包启用 core 工具集;需要由智能体执行列出、编辑、归档和来源追踪时,须启用 full 工具集。
  • DuckDB 只允许单写入者;在其他位置以读写方式打开数据库前应关闭运行中的 Harness。
  • 提供的证据未确认 Harness 版本兼容性或实际运行安装成功。

DSHub 已核对

  • 已验证固定 Git 源、Bundle 补丁结构、包身份和 MIT 许可证。
  • 清单声明 Node.js ^22.19 或 >=24,以及 DeepSeek Harness 对等依赖。

DSHub 未核对

  • 未实际执行安装、测试、运行行为或 Web Client 行为。
  • 未审计 npm 注册表包的具体内容。

固定版本安装

安装 dsh-memory

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit 48420be 对应的 README
维护者编写的上游内容原文于 2026/9/15README.md 获取,正文和仓库相对媒体固定到 commit 48420be11215,内容哈希为 17a725ab02ab。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。

@achasoft/dsh-memory

Persistent, searchable, per-project memory for the DeepSeek Harness.

An agent forgets everything between sessions. You re-explain the same decisions, the same conventions get missed, and the context you built up disappears the moment the window fills. This plugin gives each project its own memory — decisions, rules, architecture notes, and sprint goals — stored in a DuckDB file inside the project, retrieved by keyword and by meaning, and injected into every model request so a rule cannot be compacted away.

It is the Claude Memory MCP idea rebuilt as a first-class harness plugin: no daemon, no separate server, no second process owning your data.


What you get

  • Per-project memory. One DuckDB file at <project>/.dsh/memory.db. Two workspaces open in one client never share a rule set, and nothing follows you to another checkout.
  • Rules that actually bind. Mandatory and forbidden rules are a system-prompt section, re-read at every prompt assembly — so they survive context compaction, and an edit in the UI binds the very next request without restarting anything.
  • Hybrid search. BM25F over title, entities, tags, summary, and body, blended with recency and how often a memory has proved useful. Add an embeddings endpoint and vector similarity joins the ranking; without one everything still works, keyword-only.
  • A management UI. A Memory tab beside Chat in every project session — browse, search, add, edit, archive, and delete memories and rules, read each one's audit trail, and see the exact text the model is being given. The tab is a view of the session's own project, so it is always the memory the conversation beside it is bound by.
  • Model-facing tools. memory_search, memory_store, memory_recall, memory_rules, memory_add_rule, memory_session_end by default; listing, editing, archiving, and provenance when you opt into the full set.
  • Session continuity. Each session opens with the last session's summary, the current sprint goals, and recent decisions, and is reminded to file a summary before it ends.
  • Retention. A sprint note is not a decision. Each category carries a lifetime, priority extends it, and rules never expire.
  • Queryable by hand. duckdb .dsh/memory.db "select * from rules" is a supported way to use this, not a debugging trick.
  • Import and export. Turn an existing CLAUDE.md or AGENTS.md into structured rules, or export everything as JSON to commit and share.

Install

dsh plugin --profile <name> add @achasoft/dsh-memory

Then add it to your profile's dsh.profile.bundles. The plugin composes itself: the capability, the tools, and the browser surface all mount from its own cordis.patch.yml.

How it works

your project/
  .dsh/memory.db            ← DuckDB: memories, rules, sessions, provenance

agent session starts  ──►  open the project's memory
                           register a rules section in THAT agent's scope
                           inject the last summary, sprint goals, decisions

every model request   ──►  the section re-reads the rule block  ← survives compaction

the agent works       ──►  memory_search / memory_store / memory_add_rule

session ends          ──►  memory_session_end files the summary

Rules go through the system prompt, not a per-turn message: the prompt is reassembled before every request, so the rules are always present and always current. Session context — history rather than obligation — is injected once at session start instead, so you do not pay for it on every turn.

Configuration

Every field is a validated setting, changeable from your profile's cordis.patch.yml or from Settings → Plugins → Memory in the Web Client.

Setting Default What it does
databasePath .dsh/memory.db Relative to each project's directory.
injectRules true Put the rule block in every model request. Off keeps rules stored but unenforced.
injectSessionContext true Seed a starting session with the last summary, sprint goals, and recent decisions.
autoSession true Open and close a memory session alongside each agent session.
remind once When to remind the model to file a summary: never, once, every-turn.
vectorWeight 0.6 The semantic signal's share of a blended ranking. Ignored without embeddings.
minSimilarity 0.05 Similarity floor for a search that does not name one.
searchLimit 10 Hits returned when the caller does not say.
candidateLimit 1000 Rows either search probe considers.
embedBatch 64 Memories embedded per background pass.
toolset core core or full — see below.
retentionDays per category Days per category; 0 means never. Rules never expire regardless.

Semantic recall (optional)

Enable the embeddings row and point it at any endpoint speaking OpenAI's /v1/embeddings — a hosted API, a local inference server, or Ollama:

- id: memory-embeddings-openai
  disabled: false
  config:
    baseUrl: https://api.openai.com/v1
    model: text-embedding-3-small
    apiKeyEnv: OPENAI_API_KEY
    timeoutMs: 30000
    batchSize: 64

The key is addressed by reference, never stored: apiKeyEnv names an environment variable resolved through the harness credential seam at the start of every call.

Memories are embedded in the background and vectors are stored as DuckDB FLOAT[]. Changing model strands the old vectors — they are excluded from comparison rather than compared — and Rebuild vectors in the UI re-embeds everything.

Tools

toolset: core registers six:

Tool For
memory_search Find what the project already knows, by meaning and by keyword.
memory_store Record a decision, architecture note, devops fact, sprint goal, or feedback.
memory_recall Read one memory in full, by id or exact title.
memory_rules Read the complete binding rule set.
memory_add_rule State something the agent must always or must never do.
memory_session_end File the summary the next session opens with.

toolset: full adds memory_list, memory_update, memory_archive, and memory_provenance for deployments where the agent, rather than a person, curates the memory.

The database

Two views exist for reading the file by hand:

duckdb .dsh/memory.db "select kind, title, content from rules"
duckdb .dsh/memory.db "select category, title, updated, expires from memory"

DuckDB allows a single writer, so the running harness owns the file; close it before opening the database read-write elsewhere.

.dsh/memory.db is a normal file — commit it to share a team's rules, or add it to .gitignore to keep memory local.

Categories

decision · architecture · devops · sprint · project_plan · developer_docs · feedback · reference · session · mandatory_rules · forbidden_rules

Category decides retention and whether an entry is enforced. Rules are enforced verbatim and completely — never ranked, never truncated.

Development

pnpm install
pnpm run typecheck
pnpm test          # checks the RPC artifact, then runs the suite
pnpm run build     # emits generated/, then tsc → tsdown (node + browser halves)

generated/ is the Typert RPC contract, emitted by scripts/build-typert.mjs from the endpoint table in scripts/typert-endpoints.mjs. pnpm test fails if it drifts from src/host/, and tests/typert.spec.ts runs the emitted manifest through the harness's own validator.

License

MIT

有意识地管理

安装与管理

前置条件与目标 Profile

目标 deepseek-harness Profile

交付方式 Git Bundle — navid-kianfar/dsh-memory#48420be11215c1e29e1012de4baa65da247baab8

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile deepseek-harness list

兼容性与访问范围

DeepSeek Harness bundle; requires Node.js ^22.19 or >=24 Not declared in supplied evidence

检查兼容性证据

风险事实

local-data-storage

Stores project memory in .dsh/memory.db

证据
model-context-injection

Injects stored rules into every model request by default

证据
external-credentials

Optional embeddings can call an OpenAI-compatible endpoint using an environment-variable credential reference

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

建议通过固定 Git Bundle 源进行审查。请将强制规则视为会暴露给模型的项目内容。

AI 审查于 2026/9/15 UTC 14:23GitHub 事实核对日期: 2026/9/15 UTC 14:23

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: dsh-memory