Skip to main content

dsh-memory-evolve

205Stars14Forks2Issues0Watchers

Injects five-track layered memory into DSH (global/user/project/project-key+git-branch/daily), self-evolving backend review, todo/skills/prompt/canvas management, COI external AI agent scheduling, and cross-device memory sync.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
main
deepseek-harnessdshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add github:csyangwen/dsh-memory-evolve

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin csyangwen/dsh-memory-evolve for me: review the repository at https://github.com/csyangwen/dsh-memory-evolve first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Sentence Positioning

Injects an "increasingly intuitive" AI long-term memory and collaboration extension into DeepSeek Harness: enabling AI to remember who you are and project agreements across sessions, projects, and devices, with a dozen optional sub-modules including todo/skill/prompt/canvas management, external AI agent scheduling, session broadcasting and room collaboration, covered by a WebUI management panel.

Core Capabilities

  • Five-track layered memory auto-injection (user profile / global facts / project key memories + git branch filtering / project logs / daily logs), both read and write via memory tool
  • AI suggestion + user confirmation dual-track writing: key/user/memory auto-enters confirmation queue, adopt or reject via "Pending Confirmation" in memory Tab
  • Four-track todo management (life / work / project / daily), supporting deadline reminders, status filtering and four-quadrant, automatically isolating project todos by current working directory
  • Skill self-evolution: background review can automatically solidify repeatedly encountered pitfalls into skills, created/edited/disabled via skill_manage tool
  • External AI agent scheduling (COI): dispatch heavy tasks to CLI agents like kimi/codex/grok/hermes, background async execution, results automatically沉淀 back to memory
  • Multi-session broadcast room + workspace conflict coordination: giving a set of parallel sessions room messages, file occupation locks and conflict alerts
  • Prompt library, infinite canvas (material collection), session bookmarks and any-turn branching, cross-device memory sync (git repository level), session reviewer (independent model per-session continuous review)

Technical Implementation

  • Language: JavaScript (Node.js ESM; src/client/ is TypeScript/TSX, src/ compiles to lib/ via scripts/build.mjs)
  • Key Dependencies: Zero runtime dependencies (only Node built-ins node:fs / node:path / node:child_process / node:crypto / node:os / node:url); client injected via dsh.client.inject with @deepseek-ai/dsh-client-runtime
  • Architecture Pattern: Standard Cordis plugin (export function apply(ctx, rawConfig) + inject list), host automatically registers dsh-memory-evolve one-liner via cordis.patch.yml bundle patch; each optional sub-module follows "independent switch + independent storage + runtime sync mount/unmount" discipline
  • Entry Files: lib/index.js (host-side plugin entry, 541 lines config + 678 lines apply assembly); lib/client.js (browser-side, containing 41 React components)

Applicable Scenarios

Developers who collaborate with DSH daily but want AI to remember project agreements across sessions: architectural decisions made today, pitfalls encountered, user preferences - next time you open a new session, just ask AI and it can pick up where you left off; also want to consolidate complex but routine extension capabilities like multi-session collaboration, external AI dispatch, and cross-device project memory into one plugin with WebUI centralized management, instead of installing a dozen separate micro-plugins.

Prerequisites & Compatibility

DependencyMin VersionDescription
DeepSeek HarnessNot declaredNo engines/peerDependencies in package.json; package includes cordis.patch.yml for auto-registration; some capabilities (session image attachments/image query) require 260810+ snapshot per description
Node.jsNot declaredOnly uses Node built-ins, no perf_hooks / experimental APIs; ESM + node: prefix imports recommend Node 22+
PlatformCross-platformLocal file search uses macOS mdfind / Windows es.exe / Linux rg or Node traversal fallback; toWindowsPath uses WSL wslpath conversion
Native ModulesNonePure Node built-ins, no node-gyp / native bindings
Optional: Capabilities beyond DShellVaries by sub-moduleCOI requires corresponding CLI installed (kimi/codex/grok/hermes); notifications/direct channel send requires corresponding channel plugin (dsh-feishu etc.) installed and enabled

Installation

dsh plugin --profile web add github:csyangwen/dsh-memory-evolve

Configuration Options

ConfigTypeDescriptionDefault
memoryDirPathMemory and todo storage root directory<DSH_HOME>/memories (DSH_HOME defaults to ~/.dsh)
skillDirPathSkill library directory~/.agents/skills
reviewEnabledBooleanEnable in-turn memory review (auto-refine memory/skills every N rounds)false
reviewIntervalIntegerReview trigger interval (user turn count)5
reviewModeStringReview output mode: suggest (to pending confirmation) / auto (direct write)suggest
searchDocsModeEnumLocal file search four levels: all / filename / content / offnull (runtime inference)
coiEnabledBooleanEnable external AI agent scheduling (kimi/codex/grok/hermes)false
broadcastEnabledBooleanEnable session broadcast roomfalse
sessionEnabledBooleanEnable session orchestration (programmatic create/wake DSH sessions)false
sessionSearchEnabledBooleanEnable cross-tool historical session search (currently supports Codex)false
promptsEnabledBooleanEnable prompt libraryfalse
modelsEnabledBooleanEnable plugin-side model config Tabfalse
uiSettingsEnabledBooleanEnable DSH UI small features (session list filtering etc.)false
bookmarkEnabledBooleanEnable session bookmarks and any-turn branchingfalse
advisorEnabledBooleanEnable session reviewer (independent model continuous review)false
syncEnabledBooleanEnable cross-device project memory syncfalse
canvasEnabledBooleanEnable infinite canvasfalse
notifyEnabledBooleanEnable IM channel notifications (Feishu/QQ/WeChat/WeCom)false
channelSendEnabledBooleanEnable IM channel direct sendtrue
sessionImageQueryEnabledBooleanEnable current session image query toolfalse
keyProgressiveDisclosureEnumProject key memory injection mode: auto / off / onoff
keyFullInjectThresholdIntegerIn auto mode, trigger full injection when entry count ≤ this value3
keyFullInjectCharLimitIntegerIn auto mode, trigger full injection when total char count ≤ this value1500
keyBranchFilterBooleanFilter injected project key memories by git branchtrue
coiRetentionDaysIntegerCOI task archive retention days90
coiTaskTimeoutMsIntegerCOI task default timeout (milliseconds)43200000 (12 hours)
advisorProviderString/nullReview model provider (null=inherit current session)null
advisorModelString/nullReview model id (null=inherit current session)null
advisorCallTimeoutMsIntegerSingle review call timeout (milliseconds)60000
advisorMaxMessagesIntegerReview input context window cap (0=no limit)60
advisorSteerSeveritiesString ArraySeverities triggering real-time reminders (nit / concern / blocker)Full set

The above table is a subset of commonly used options; full configuration see DEFAULTS object at lib/index.js:69-245; all runtime-modifiable items (RUNTIME_KEYS) can be statically configured in cordis.patch.yml or toggled instantly in Web settings panel.

FAQ

Q: Is it normal that nothing happens after installation?

A: Normal. The core capabilities (five-track memory / todos / skill management / memory sync patch) are active by default; the other dozen sub-modules (external AI scheduling, broadcast room, canvas, reviewer, etc.) are disabled by default - you need to go to "Memory Evolve Settings → Config" and enable corresponding switches to make Tabs and tools appear.

Q: What to do if "duplicate loader entry id" causes startup failure?

A: You have residual old version manual insert lines in your profile patch. The package's cordis.patch.yml already writes dsh-memory-evolve to bundle patch for auto-registration; duplicate insert of the same id will cause loader error. Just delete this line from ~/.dsh/profiles/<name>/cordis.patch.yml.

Q: Will five-track memory flood the context?

A: No. Injection strategy is "only inject low-frequency stable tracks" - user profile / global facts / project key memories (filtered by git branch) are read in real-time and injected as user-role tail messages; project logs and daily logs are not injected (growth per turn would break prefix cache), changed to on-demand read + snapshots with fixed prompts requiring model to call memory tool at turn endings. When keyProgressiveDisclosure enables summary mode, key memories also load full text on-demand via expand.

Q: Will memory sync also sync code?

A: No. Sync only covers project memories and global memories under memoryDir (separately switchable by track), code files are not read or written; project track syncs data to a dedicated branch in the project code repository (doesn't pollute any code branch), global track needs a separately configured shared memory repository.

Q: Memory became messy after a while, how to organize?

A: Memory Tab provides "Archive" entry - move unused global memories / user profiles / project key memory entries to *-archive.md (not injected, can be one-click revert to main track). On deletion failure, archive first then delete, prefer duplication over loss; batch archive/adopt/reject all have buttons, no need to manually operate entry by entry.

Q: What if there's conflict with official plugins?

A: This plugin has merged functionality from former standalone plugins dsh-skills-manager / dsh-skill-browser. Before upgrading from old version, must uninstall old plugins (delete insert line in profile patch + delete ~/node_modules/@dsh-local/skills-manager symlink), otherwise old plugin client calling DSH's removed ui-slots.deferRegistration will make the entire web page unusable.

Q: Will session reviewer (advisor) interfere with main AI?

A: Completely silent by default (advisorEnabled=false). After enabling, reviewer only observes conversation text you see on your interface (excluding thoughts/tool calls), logging to panel; only when severity reaches nit / concern / blocker threshold and config allows, will it inject into main session as user command to trigger immediate correction - you can interrupt or adjust it instantly in the review panel.

Difficulty Level

Advanced — core five-track memory works with zero config, but the plugin aggregates a dozen independent sub-modules and provides dozens of configuration options. To chain high-level capabilities like "external AI scheduling / cross-device sync / reviewer / broadcast room" into a complete pipeline requires understanding module boundaries and switch dependencies (see README scenarios chapter).

Known Issues & Limitations

  • Spawned sub-sessions only inherit parent session's provider/model config when new session has no history header; GUI model change and other proactive switching mechanisms are marked for future refinement at lib/session-orch.js:549
  • Session review (advisor) reads session name via sessionTitle.get(session); for offline/archived sessions where session.events doesn't exist, must first do agent?.session existence check (lib/index.js:2104-2106), otherwise passing undefined throws TypeError causing review flow to silently fail
  • Canvas traversing nodes similarly depends on sessionTitle.get; missing null check previously caused entire GET 500, front-end refresh resulted in empty board, already reinforced at lib/index.js:2027-2042
  • Session search (sessionSearchEnabled) currently only supports Codex source (~/.codex/sessions + archived_sessions plain JSONL); DSH sessions (zstd concatenated frames) not implemented
  • Only sessions within the same process can be programmatically woken via de_session; cross-instance / cross-machine programmatic wake not possible (README-详细说明.md:52)
  • If dat sync's git repository address uses a public project repository, memory defaults to dedicated branch in code repository; to completely isolate memory from code, must explicitly configure an independent shared memory repository

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/csyangwen/dsh-memory-evolve)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory