快速了解
它能做什么
为 DeepSeek Harness 提供持久、可搜索的按项目记忆与强制规则。
本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。
deepseek-harness Profile
Not declared in supplied evidence
证据已验证
核对日期 2026/9/15 UTC 14:22
选择前先看
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
@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_endby 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.mdorAGENTS.mdinto 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。
风险事实
证据与编辑审查Manifest、Bundle patch、分发与新鲜度
不可变证据
审查状态与源码活动
建议通过固定 Git Bundle 源进行审查。请将强制规则视为会暴露给模型的项目内容。
AI 审查于 2026/9/15 UTC 14:23。GitHub 事实核对日期: 2026/9/15 UTC 14:23。
自当前证据基线以来,没有记录到重要源码变化。