dsh-project-memory: Persistent Project Memory Plugin for DeepSeek Harness
00080000/dsh-project-memory
Persistent project memory for DeepSeek Harness, indexing docs and code symbols with auto-refresh and retrieval.
Let DeepSeek Harness agents quickly reorient to project context after session compaction, without re-reading all code.
dsh plugin --profile web add github:00080000/dsh-project-memory- Category
- Memory & Context
- Platform
- DSH Plugin
- Author
- 00080000
- Distribution
- Plugin
dsh-project-memory Key Features
dsh-project-memory Repo Summary
dsh-project-memory is a persistent project memory plugin for DeepSeek Harness (DSH), maintained by 00080000 under the MIT license, last updated in 2026-08. It solves the problem of agents losing context after session compaction and needing to re-read the entire project: the plugin maintains a compact project index on disk, with every entry pointing to a concrete file and line, allowing the agent to reorient quickly instead of re-scanning all code. Core capabilities include document indexing (PDF/Markdown/txt chunked and summarized by the LLM, with path:line citations), code symbol table (lightweight regex extraction, no token usage), automatic refresh (background polling detects content hash changes), read-time indexing (files are indexed when the model actually reads them, making the index a byproduct of normal work), document-to-code cross-linking, BM25 retrieval (with optional LLM query expansion), and bounded experience notes.
What core features does the dsh-project-memory DSH plugin support?
The plugin supports document indexing, code symbol table, automatic refresh, read-time indexing, doc-code cross-linking, BM25 retrieval, and experience notes. Document indexing chunks PDF, Markdown, and plain text files and summarizes them via LLM, with each entry carrying a path:line citation; the code symbol table extracts function and class names with a lightweight regex scanner, without LLM token usage; automatic refresh uses a background poll (watch_repo) to detect content hash changes and re-indexes only changed files; read-time indexing means files are indexed the moment the model actually reads them, and unread files are never indexed. The project root is detected by markers (.git, package.json, etc.) or a README plus source directories.
How do I install dsh-project-memory?
The plugin has been tested against dsh versions 0.1.0-rc.7 through 0.1.1-rc.2, and only touches stable interfaces (defineTool, llm.stream, Schema). The installation command is as follows; note that the -w flag is required because the profile directory is a pnpm workspace root:
dsh plugin --profile web add github:00080000/dsh-project-memory
If installing from a local path, the -w flag is also required:
dsh plugin --profile web add /path/to/dsh-project-memory -w
What principles does dsh-project-memory's index design follow?
The plugin's design follows four principles: volatility (context is ephemeral, lost on session compaction), persistence (the index is stored on disk and survives compaction and new sessions), compactness (only summaries are stored; the index runs about 0.5% the size of the source, e.g., 8.8 MB of source → 49 KB of index), and verifiability (hits carry path:line citations where applicable, so the agent can confirm details against the source). Building the index does not require an upfront scan: files are indexed as the model reads them, so the index grows to cover exactly what has been worked with. Re-reading an unchanged file is a no-op (content hash), keeping the index fresh with minimal overhead.
How do experience notes work in dsh-project-memory?
Experience notes store problem-to-solution mappings; similar problems supersede instead of duplicating, and notes are returned only when a search matches. The note store is bounded: capacity scales with project size (clamped to 100–2000), and the oldest notes are pruned when the limit is exceeded. Notes are retrieval-only, so accumulation does not affect context.
What are the dependencies and compatibility of dsh-project-memory?
The plugin is pure JavaScript, with the only runtime dependency being pdfjs-dist (for PDF text extraction), requiring no native builds. The host provides @deepseek-ai/cordis ^4.0.1 and @deepseek-ai/schemastery ^3.18.1, declared via peerDependencies. Since the plugin only touches stable surfaces, newer rc lines are expected to work but are not individually verified.
