DeepSeek Harness plugin

dsh-llmwiki

Local Markdown wiki as long-term memory for DeepSeek Harness — ported from llmwiki

Jump to install

Source facts

Repository
chancelu/dsh-llmwiki
Latest update
Aug 15, 2026
Category
Docs & Rendering
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/chancelu/dsh-llmwiki
Plugin: dsh-llmwiki
Author: chancelu

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-llmwiki

> Context Window = RAM, Local Wiki = Disk — long-term memory for DeepSeek Harness, powered by your local Markdown vault.

TypeScript port of llmwiki (Python: llmwiki-harness on PyPI), packaged as a native dsh plugin.

What it does

Mechanismdsh extension point
Inject relevant wiki knowledge into the same turn's model requestsession/event (agent/inbox/spliced, pre-assembly live event) → ctx.systemPrompt.context()
Teach the model about memoryctx.systemPrompt.section()
memory_search — model recalls prior sessions / curated notesctx.tools.register()
memory_save — model persists durable insightsctx.tools.register()
Auto-capture every turn to chronicle/daily/YYYY-MM-DD.mdsession/event (turn/end)

Retrieval: keyword + wikilink graph + temporal strategies fused with RRF (Reciprocal Rank Fusion), assembled under a token budget, with an LRU + TTL cache. Zero runtime dependencies beyond Node.js.

Vault layout (created automatically)

my-vault/
├── raw/               # Layer 1: session dumps
├── chronicle/daily/   # Layer 2: auto-captured daily logs
├── entities/          # Layer 3: compiled knowledge
├── concepts/
├── comparisons/
├── projects/
└── queries/

Open it with Obsidian, curate Layer-3 notes with [[wikilinks]] — the graph strategy follows them.

Install

Requires Node.js ≥ 22 (same as dsh itself) and a working dsh CLI (npm install -g @deepseek-ai/dsh) with pnpm on PATH.

# from npm
dsh plugin --profile web add dsh-llmwiki

# or from a tarball
dsh plugin --profile web add ./dsh-llmwiki-0.1.1.tgz

# verify the layer, then boot
dsh --profile web --dump-config   # shows a "# == dsh-llmwiki" layer
dsh web                           # logs: [dsh-llmwiki] memory plugin loaded, vault: ...

The package declares dsh.bundle, so dsh plugin add activates it automatically — no manual patching needed.

Configure

The plugin works zero-config (vault defaults to ~/llmwiki-vault). To override, add a row to your profile's cordis.patch.yml (or a --patch overlay) — note the override restates the row by id without insert:

- id: llmwiki
  config:
    vaultPath: /path/to/your/vault   # Obsidian vault welcome
    tokenBudget: 2000
    strategies: [keyword, graph, temporal]
    daysBack: 7
    topK: 5
    autoInject: true
    autoCapture: true

A patch replaces the row's entire config, so restate every key you want to keep.

Config

KeyDefaultMeaning
vaultPath~/llmwiki-vaultMarkdown vault path; structure created if missing
tokenBudget2000Max tokens of injected wiki context
strategies[keyword, graph, temporal]Enabled recall strategies
daysBack7Temporal look-back window
topK5Results per retrieval
priorityrelevanceAssembly priority: relevance / recency / diversity / structured
cacheTtl300Cache TTL seconds
autoInjecttrueInject wiki context on each user message
autoCapturetrueAppend each turn to the daily chronicle

How the pieces map from the Python original

Python (llmwiki)TypeScript (dsh-llmwiki)
core/retriever.pysrc/retriever.ts
core/assembler.pysrc/assembler.ts
core/cache.pysrc/cache.ts
vault/capture.pysrc/capture.ts
search/python_engine.pymerged into retriever.ts (keeps the package zero-dep)
OpenClawMemoryHook adapterthe dsh plugin itself (src/index.ts)

Not yet ported: ripgrep / SQLite FTS engines (the pure-JS engine keeps installs dependency-free — contributions welcome), the LLM-driven curate pipeline (run the Python CLI alongside for now).

License

MIT