Preface¶
DeepSeek Harness (dsh) packages models, tools, skills, sessions, sandboxes, and UIs all as plugins, with the official slogan “Everything is a plugin”: developers can replace or extend capabilities at the configuration layer without modifying the core source code. The official site positions this product as a developer preview, and its source code is hosted at deepseek-ai/deepseek-harness.
The default session included with the preview build acts as the working memory for “this conversation”. When switching to another project or opening a new session days later, the model often fails to remember who you are, the deployment port of this repository, or why you rejected a certain architecture last week. Writing conventions into AGENTS.md can provide a temporary fix, but long-term facts across sessions, branches, and devices still need to be relayed manually every time.
The community directory DeepSeek Harness Plugin Repository entrusts this gap to third-party plugins. This site is an independent community index with no official affiliation to DeepSeek / FunFound, and should not be treated as an official app store. The dsh-memory-evolve plugin in the “Memory” category of the directory is specifically designed for cross-session long-term memory and background self-evolution.
This article is compiled after cross-referencing the directory detail page, the GitHub repository README, README-详细说明.md, and package.json: covering what it is, what it remembers, how to install it, and how to use it daily.
What It Is¶
dsh-memory-evolve is a memory plugin for DeepSeek Harness, maintained by GitHub user csyangwen, with its repository at csyangwen/dsh-memory-evolve. The package.json specifies version 0.1.0, MIT license, and JavaScript as the primary language; the client injection declaration targets the web platform. As of August 17, 2026, the GitHub API shows the repository has 127 stars. It was added to the community directory on 2026-08-15, categorized under “Memory”.
The repository’s self-description positions it as a pure plugin that implements “cross-session long-term memory + background self-evolution”, without modifying dsh core code or adding runtime npm dependencies, and all effects are completely removed upon uninstallation. The package includes cordis.patch.yml (dsh.bundle.patch), which will be automatically registered by the host after running dsh plugin add.
The problem it aims to solve is specific: it stores user preferences, global conventions, project decisions, project progress, and daily logs across five separate tracks, filters them by working directory and git branch, and injects them into the context. Repeated workflows can be沉淀 into skills; verbal to-dos can be tracked across four tracks. Content that will alter the model’s next-round behavior defaults to entering a confirmation queue — the original documentation states “AI only proposes, you confirm”.
Core Features¶
Five-Track Memory¶
Memory files are stored by default at ~/.dsh/memories/. The layered structure from the detailed documentation is as follows:
| Layer | File Role | Injection Method | Writing Method |
|---|---|---|---|
User Profile (user) |
USER.md, stores who you are, preferences, and communication habits |
Injected every session | Recommended to confirm before saving to storage |
Global Facts (memory) |
MEMORY.md, stores environment, tools, and conventions |
Injected every session | Recommended to confirm before saving to storage |
Project Critical Memory (key) |
KEY.md under each working directory, stores conventions, decisions, architectures, and pitfalls |
Injected into the current project session, filterable by git branch | Requires confirmation for model-written entries; can be manually written directly in the Memory Tab |
Project Log (project) |
MEMORY.md under each working directory |
Not injected, read on demand | Appends one progress entry at the end of each round |
Daily Log (daily) |
daily/YYYY-MM-DD.md |
Not injected, read on demand | Appends one progress entry at the end of each round |
Only infrequently changing tracks (user profile, global facts, project critical memory) are injected into snapshots to minimize disruption to prefix caching. Project logs and daily logs are appended each round, and injecting them would cause the tail snapshot to change constantly, so they are instead read on demand using the memory tool.
Daily usage aligns with the README scenario guide: have normal conversations; for important facts, you can say “Remember: the deployment port of this project is 8080”, and the entry will enter the confirmation queue and take effect only after you click approve. After switching sessions a few days later, you can directly ask “Check the memory, what architectural decision did we make last time”. Entries can be archived, after which they will no longer be injected, and can be restored to the main track at any time.
git Branch Awareness¶
Different branches of the same working directory often have different conventions. The plugin uses git branch --show-current to identify the current branch (same as the dsh TUI). For non-git repositories, failed fetch attempts, or detached HEAD states, branch-related behavior falls back to “all branches”.
Project critical memory entries can include scope tags like [branch:main,dev]; entries without tags are visible to all branches. During injection, only entries without tags and entries matching the current branch will be included, and the current branch name will also be written into the snapshot. Project logs and daily logs will be automatically tagged with [git branch name] by the program, and any prefix manually written by the model will be stripped. The switch is keyBranchFilter, which is enabled by default.
Confirmation System and In-Round Review¶
Global memory, project critical memory, model-created to-dos, and new skills all default to entering the SUGGESTIONS.jsonl confirmation queue. You can approve or reject entries in the Memory Tab on the session page, or use commands:
/memory_review
/memory_review approve 1 3
/memory_review reject 2
/memory_review approve-all
In-round self-review is disabled by default (reviewEnabled: false). When enabled, the plugin counts user rounds, and marks the review as due when reaching reviewInterval (the configuration example uses 10, the default value in the detailed documentation is 5). The main model will silently execute in this round: propose suggestions for global memory, create or optimize skills according to rules, then call memory_review_status complete to reset the count. Review does not spawn sub-agents, and relies on the model adhering to the prompts in the snapshot; models with weak instruction-following may skip the review. The due count only increments and never resets automatically, and missing one round will still mark it as due in the next, only complete will reset it.
reviewMode defaults to suggest. Setting it to auto will make the review write directly to the global track, and the documentation warns about the risk of prompt injection.
Skill Self-Evolution and Skill Manager¶
The review system can turn repeatedly encountered workflows into skills under ~/.agents/skills. You must first read existing skills before optimizing them (read-before-write); new skills default to the confirmation queue, as skills are injected into all sessions, and the documentation requires restraint when creating them.
The management interface originally from the standalone plugins dsh-skills-manager / dsh-skill-browser has been merged in: the “Skill Management” section in the Memory Tab allows browsing, searching, disabling, or enabling skills by source, and adding custom skill directories. On first launch, it will attempt to import the disable list from the old plugins’ state.json. Do not enable both the old and new plugins at the same time, as the two disable mechanisms will process the same skills repeatedly; older clients may cause full Web page loading failures on newer dsh versions due to the removed ui-slots.deferRegistration. The upgrade order is: first uninstall the old plugins, then install this plugin.
Four-Track To-Dos¶
The dtodo tool and the “To-Dos” sub-tab provide four tracks: personal life, work, current project (isolated by working directory), and daily. Each entry can include four-quadrant tags (important × urgent), deadlines, and status. To-dos you dictate are written directly; items discovered by the model go through the suggestion queue. To-do content is never injected into the context, and only relies on fixed prompts at the end of each round to prompt the model to check for overdue items.
Optional Extended Capabilities Enabled by Default¶
The README summarizes the plugin as “let AI remember you, manage for you, do for you, and collaborate with you”. Most of the latter capabilities are disabled by default and do not take up the model’s tool list, and need to be enabled in “Memory Evolve Settings” when needed:
- Memory Sync: Project memory can be reconciled via Git, stored in a dedicated branch of the code repository, or synced to a shared memory repository for isolation; unselected projects remain purely local.
- COI Scheduling: Assign tasks to external CLIs like kimi / codex / grok / hermes, execute them in the background without blocking the main process; completion summaries can be written back to the project log and daily log.
- Session Orchestration and Session Broadcast: The main session can
spawn/wakeother dsh sessions, and collaborate using room or one-to-one broadcast. Waking only works for sessions within the same process; after the dsh process hosting the main session is closed, the wake-up chain will stop. - Session Search: Currently supports searching local Codex history (
~/.codex/sessionsand other plaintext JSONL files); dsh sessions are not yet supported. - Prompt Manager, Infinite Canvas, Session Review, Session Bookmarks, Web UI Settings, Channel Notifications: These are also independent switches, disabled by default.
These modules share the same plugin package as memory, but will not all take effect just by installing the plugin.
Installation and Activation¶
The installation command given on the community directory page is:
dsh plugin add github:csyangwen/dsh-memory-evolve
The repository README uses the web profile as an example and recommends writing:
dsh plugin --profile web add github:csyangwen/dsh-memory-evolve
Restart dsh web after installation. The directory page also notes that for reproducible installations, you can pin the commit hash:
dsh plugin add github:csyangwen/dsh-memory-evolve#<commit>
Do not manually insert the same ID into ~/.dsh/profiles/web/cordis.patch.yml again. The bundle patch has already been registered once, and repeated insertion will cause the loader to throw a duplicate loader entry id error, preventing the process from starting. If you manually inserted this line according to old documentation before, delete that line when upgrading.
To enable in-round review, override the configuration using the plugin ID in your profile’s cordis.patch.yml (top-level syntax, not using insert):
- id: dsh-memory-evolve
config:
reviewEnabled: true
reviewInterval: 10
If the plugin causes dsh to fail to start, you can disable it first without uninstalling:
- id: dsh-memory-evolve
disabled: true
Uninstallation:
dsh plugin --profile web remove dsh-memory-evolve
Typical Usage¶
After installing and restarting, open any session, and a row of capability tabs will appear at the top. The core three are “Memory”, “Skills”, and “To-Dos”; the remaining tabs appear corresponding to the enabled modules.
- Proceed with normal development. At the end of each round, the model should write one progress entry to both the project log and daily log; when long-term conventions, decisions, architectures, or pitfalls are involved, submit suggestions to the project critical memory.
- When you find a fact worth retaining across sessions, directly say “Remember: …”. Approve or reject the entry in the confirmation list in the Memory Tab.
- When switching sessions or continuing the next day, first ask it to “Check the memory” instead of restating the background context.
- As the memory grows, archive entries that no longer need to be automatically injected.
- Open “Memory Evolve Settings → Configuration” and enable review, local file search, memory sync, or COI as needed, instead of enabling everything at once.
Local file search is not registered as a tool by default. You can toggle it in the settings page, or use:
/memory_evolve_search_files on
Applicable Scenarios and Notes¶
This plugin is suitable for users who have been working on project development in dsh Web for a long time, and often switch sessions or run multiple repositories in parallel: they need the model to remember preferences and project decisions instead of reintroducing the context from scratch every time. Multi-device memory sync, multi-session collaboration, and offloading heavy tasks to external CLIs are optional features of the same plugin, not required for initial use.
Please note before use:
- Permissions. The directory page states that the plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source code repository and license before installing.
- Community Source. The plugin repository is a community-run site, not an official DeepSeek app store; the repository maintainer is csyangwen, not the official FunFound team.
- Many Features Disabled by Default. Review, COI, broadcast, session orchestration, session search, prompts, canvas, session review, etc., are all disabled by default. Enabling each feature will register a batch of additional tools and take up space in the model’s tool list.
- Conflict with Old Skill Management Plugins. Uninstall
dsh-skills-manager/dsh-skill-browserfirst before installing this plugin. - Review Relies on Instruction Following. Writing logs and overdue reviews each round are driven by snapshot prompts; models with weak instruction-following may skip these steps. The documentation recommends lowering
reviewIntervalor verifying the model you are using. - Cache is Best-Effort. dsh’s runtime context is an append-only user-role tail snapshot, and memory changes will append new tails, while old snapshots will still occupy space. The prefix (system instructions, tool descriptions,
AGENTS.md, previous conversation) can still hit the cache. This is a limitation of the core context mechanism, which the plugin cannot alter for historical snapshots. - Data is Local. Memory, to-dos, prompts, etc., are stored in
~/.dsh/memories/by default. If you enable memory sync and point the remote to a public code repository, the documentation notes that “public repository = public memory”; you should use a separate shared memory repository for isolation when needed.
Summary¶
dsh-memory-evolve turns cross-session memory into a standard dsh plugin: five-layered memory tracks, branch filtering, confirmation-based writing, with additional skill沉淀 and to-do tracking. Capabilities like collaboration, scheduling, and canvas are included in the same repository but disabled by default to avoid overwhelming the tool list right after installation.
Directory page: https://deepseek-harness-plugin.com/en-US/plugins/dsh-memory-evolve/
GitHub: https://github.com/csyangwen/dsh-memory-evolve