dsh-simple-memory ๐Ÿง 

August 22, 2026 ยท View on GitHub

English | ็ฎ€ไฝ“ไธญๆ–‡

License: MIT

Awesome DSH Plugin

A simple memory keeper plugin for DeepSeek Harness (dsh) web: retrieval-style memory with zero-code storage. No database, no vector store โ€” just well-organized markdown files plus a thin plugin that handles the entry points. Normal work is never interrupted; memory accumulates as a sidecar filesystem beside your projects, and rules nudge you to record a note from time to time.

Status: core pipeline verified (0.2.0), real-world effect still under testing โ€” see docs/verification-log for the test run and docs/design for how it works.

Unofficial project: independently developed and maintained by a community member, not an official DeepSeek product.

Screenshot

Memory button (the bulb icon left of the input box): one click starts the memory flow โ€” review โ†’ propose each item with a project/global scope and reason โ†’ confirm โ†’ write โ†’ show output โ†’ commit:

Memory button triggers the memory flow

Memory management page (Settings โ†’ Memory): status overview, memory-root config, flat per-project lists plus global, click to read:

Memory management settings page

Features

ActionEffect
Open a sessionMemory index (current project + global + loose root files) is injected once per session โ€” the model "remembers" what exists
Click the memory buttonA fixed memory-flow instruction is inserted โ€” the model runs the standardized flow (review โ†’ propose with scope โ†’ confirm โ†’ write โ†’ show output โ†’ commit)
Write memoryThe memory-write tool enforces the format (name ๅˆ†็ฑป-ไธป้ข˜.md, โ‰ค2KB, date header; scope = project/global)
Browse memoryInline browser in the settings page: flat per-project lists + global common/, click to read
InitializeOne click creates the repo skeleton (common/projects/references/archive/staging) + git init
RelocateChange the memory root from the settings page (writes patch config, takes effect after restart)

Install

dsh plugin --profile web add "github:a903067276-rgb/dsh-simple-memory#main"

Restart dsh web, then Settings โ†’ Memory โ†’ Initialize memory repo. Manual install fallback: see docs/install.md.

Usage

  • Memory button (the bulb icon left of the input box) โ€” one click inserts a fixed, self-contained memory-flow instruction; the model then runs the standardized flow (review โ†’ propose each item with a project/global scope and reason โ†’ confirm โ†’ write โ†’ show output โ†’ commit).
  • Settings โ†’ Memory โ€” status overview, memory-root config, one-click repo init, and an inline browser: flat per-project lists plus global, click to read.

Platform support

PlatformStatus
macOSโœ… development environment
Linuxโš ๏ธ expected to work (plain file operations), untested
Windowsโš ๏ธ expected to work (plain file operations), untested

Requirements

  • DSH web >= 0.1.0-rc.6
  • Version compatibility (best effort โ€” the settings card uses dual-field key+id registration to satisfy both rc.6 (id) and rc.7+ (key); verified locally on rc.6/rc.8/0.1.1-rc.2, not guaranteed on every DSH version):
    • DSH 0.1.0-rc.6 and newer (incl. 0.1.1-rc.1/rc.2): try main (default).
    • Conservative fallbacks (the last pre-0.1.1 build): DSH 0.1.0-rc.7/rc.8 โ†’ v0.2.5 (dsh plugin add github:a903067276-rgb/dsh-simple-memory#v0.2.5); DSH 0.1.0-rc.6 โ†’ frozen rc6-compat tag (no maintenance).
  • git CLI (optional: without git, the memory repo is just a plain directory)
  • Maintenance policy: this plugin keeps evolving with the latest DSH releases; compatibility with older DSH versions is best-effort only and not guaranteed going forward.

How it works

A retrieval-style memory: files are the storage, the plugin only handles the entry points. Full design: docs/่ฎฐๅฟ†็ณป็ปŸ่ฎพ่ฎก่ฏดๆ˜Ž.

  • Storage (zero code) โ€” everything lives in one memory root ~/Documents/DSH/memory/ (configurable from the settings page):

    memory/
    โ”œโ”€โ”€ common/          global experience (active zone, cross-project reuse)
    โ”œโ”€โ”€ projects/<name>/ per-project memory (auto-created on first write)
    โ”œโ”€โ”€ references/      cold zone: reference material (search-only)
    โ”œโ”€โ”€ archive/         cold zone: forgotten memory moved out of the index
    โ”œโ”€โ”€ staging.md       promotion pool (candidates for global reuse)
    โ””โ”€โ”€ .git/            one git repo for the whole root โ€” rollback safety
    

    Per-project memory does NOT live inside the project directory: a .gitignore'd memory/ would hide it from grep. Keeping it in the shared root keeps publication isolation automatic and search universal.

  • Index injection (remembers what exists) โ€” on the first step of every session (agent/pre-step), the plugin injects a filename list (never the content), grouped by category, covering the current project + global + loose root files. The model then reads a full note (โ‰ค2KB each) on demand. Cold zones are not injected โ€” searched only when a topic hits.

  • Write tool (records it) โ€” memory-write enforces the format: filename ๅˆ†็ฑป-ไธป้ข˜.md, first line ## date ๅˆ†็ฑป-ไธป้ข˜, โ‰ค2KB, category prefixes open (built-in: ่ธฉๅ‘/ๆต็จ‹/ๅ†ณ็ญ–/ๅๅฅฝ/่ƒŒๆ™ฏ). scope picks project or global. Writing outside the workspace asks for approval (built-in confirmation).

  • Memory button (triggers the flow) โ€” the bulb icon in the input bar inserts a fixed, self-contained instruction: โ‘  review the conversation โ‘ก propose each item with a scope (project/global) + reason โ‘ข wait for user confirmation โ‘ฃ write via memory-write โ‘ค show the output โ‘ฅ git commit (mem: ่ฎฐ xxx).

  • Settings page (manage + browse) โ€” status line (active count, staging count), memory-root config, one-click repo skeleton init, and an inline browser listing every project flat plus global, click to read.

  • Search (finds it) โ€” no index files: the agent's grep scans the whole memory root (all projects + global + cold zones) in one pass, active zones first.

  • Promotion (cross-project reuse) โ€” project memory that looks reusable goes into staging.md (low friction, no instant decision); when the pool is non-empty the user is reminded, and after confirmation it is distilled into common/ and removed from the pool.

  • Forgetting (fresh context) โ€” outdated notes move to archive/ (soft delete: still on disk, just out of the index). Context stays lean, disk stays complete.

  • Rollback โ€” every memory operation is committed immediately (mem: <action> <subject>); a wrong write is one git checkout away.

Notes

  • Memory git repos are local-only, never pushed to a remote.
  • Writing memory outside the workspace asks for approval (built-in confirmation, per the memory spec).
  • The memory-flow instruction is self-contained and does not depend on the global AGENTS.md; the judgment rules there are only a reference.

License

MIT