Introduction

The philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” Based on this architecture, community developers have built a rich extension ecosystem. dsh-memory-manager is a community plugin that provides basic memory functionality for DSH. It is ported from ZCode’s project memory design, aims to solve the problems of agents losing context and repeatedly explaining background in multi-turn conversations, supports structured memory storage by project, and allows Agents to actively maintain memories.

Core Features

This plugin mainly includes the following capabilities:
- ZCode Memory Port: Follows the ZCode memory file format (YAML frontmatter + Markdown), type system (user / feedback / reference / project / other), and per-project directory storage layout.
- Memory Management in Settings: Adds a “Memory Management” page to the settings panel, supporting search, filtering by project/type, creation, editing, and deletion.
- Automatic Loading into Conversation: Enabled by default. On each model invocation, the index of the current project and global memories (name + description, excluding body) is injected as a system prompt to save context.
- Agent Memory Tools: Registers the memory_save / memory_get / memory_list tools, allowing Agents to read or write back memories as needed.
- Import from ZCode: Supports one-click scanning and importing from the ~/.zcode/cli/memories directory.
- Global + Project Memories: The global project stores cross-project memories, and the project key is taken from the workspace path.
- Automatic Indexing: Automatically rewrites the MEMORY.md index and the memory_summary.md summary.
- Theme Adaptation: Uses DSH’s official design tokens and follows light and dark themes.

Installation

Install using the official dsh plugin command:

dsh plugin --profile web add /path/to/dsh-memory-manager

After installation, restart DSH and open Settings → Memory Management to start using it.

This project is a community plugin built on DeepSeek Harness and is not an official DeepSeek product. The memory format is ported from ZCode’s project memory design.

Usage

  1. Open Settings. The Memory Management page appears in the sidebar.
  2. View Memories: The list is grouped by project and sorted with the newest first. You can use the search box to find names or descriptions, or filter by project and type.
  3. Automatic Loading of Memories into Conversation: Enabled by default. DSH injects the memory index for the current session’s workspace project and global memories (name + description, excluding body) as a system prompt. When an Agent is interested in a particular memory, it automatically calls the tool to read the full text.
  4. Agent Writing Back Memories: When an Agent discovers during a conversation that a preference, feedback, or agreement is worth retaining long-term, it can call the memory_save tool to write it, with the origin marked as agent.
  5. Create a New Memory: Fill in the name, type, project (global or a specific project name), description, and Markdown body.
  6. Edit and Delete: Use the actions on the right side of the card. Deletion requires secondary confirmation and is permanent.
  7. Import from ZCode: Click the import button to scan ~/.zcode/cli/memories. Memories with the same name are automatically skipped.

How It Works

The plugin is mounted via cordis.patch.yml, and its core logic is as follows:
- Storage: Memories are stored as Markdown files in the <DSH_HOME>/memories/projects/ directory, read and written directly using node:fs, with no additional dependencies required.
- Injection: The system prompt section injects the memory index on each model invocation, saving tokens.
- Tools: Agent tools are registered via the Typert protocol, allowing Agents to read and write the filesystem.

Notes

  • This plugin runs with the permissions of the current DSH process. Please ensure that the installation source is trustworthy.
  • Configuration details (such as specific config. keys) are not explicitly listed in the README; they need to be combined with the code or the default configuration must be used.
  • The memory file format is ported from ZCode and is compatible with ZCode’s memory directory structure.