Introduction

When running agents in DeepSeek Harness (DSH), the context is often lost after the session ends. Writing tasks, personas, and project notes into external documents and manually pasting them can help resume some continuity, but the read/write process relies entirely on humans, preventing the agent from autonomously retrieving and updating information.

dsh-client-ui-obsidian-memory takes a different approach: it stores memories in a local Obsidian (or pure Markdown) vault directory. The plugin registers filesystem tools, allowing the AI to directly read, search, write, and append. Data stays local, without relying on external memory services.

What It Is

dsh-client-ui-obsidian-memory is a client UI plugin for DSH, maintained by detongz and categorized under “Memory”. It directly accesses the local filesystem through the DSH host runtime. After configuring the vaultPath, it exposes 5 obsidian_memory_* tools to the agent and renders a status and tool description panel in the DSH left sidebar at the sidebar.obsidian-memory slot.

The plugin’s current version is v0.3.2, licensed under MIT. For the community directory page, see SkillHub; for the source code, see GitHub.

Core Features

Below are the documented capabilities of the plugin, sourced from the README and package.json.

Five Memory Tools

Tool Function
obsidian_memory_read Reads Markdown or text files
obsidian_memory_list Lists directories and files
obsidian_memory_search Performs full-text search in .md and .txt files
obsidian_memory_write Writes or overwrites a file
obsidian_memory_append Appends content to the end of a file

All paths are restricted to within the vaultPath; out-of-bounds access triggers a “Path traversal detected” error.

The browser displays the Obsidian Memory panel in the DSH left sidebar, showing vault status, tool references, and recommended directory structure. This requires DSH to provide the sidebar.obsidian-memory slot (the README suggests DSH ≥ 0.1.0-rc.5).

No External Service, Compatible with Codex Directory

The plugin does not connect to remote memory services; read/write operations are performed via the DSH Host (Node.js). The directory structure can align with the community-recommended Codex/ layout, making it easy to share with existing Obsidian workflows.

Installation and Setup

1. Prepare the Vault Directory

Create a Codex/ folder anywhere, for example, inside an Obsidian vault:

~/Documents/Obsidian Vault/
└── Codex/
    ├── AGENTS.md
    ├── TODO.md
    ├── people/
    ├── projects/
    ├── notes/
    └── daily/

AGENTS.md can hold AI operation instructions, TODO.md can contain to-dos and unclosed items; subdirectories can be organized by project.

2. Install the Plugin

Run the following in any directory:

dsh plugin add dsh-client-ui-obsidian-memory

Alternatively, install from the GitHub source:

dsh plugin add detongz/dsh-client-ui-obsidian-memory

The plugin includes a dsh.bundle manifest. dsh plugin add installs the package and activates the ui-obsidian-memory layer via the bundled cordis.patch.yml. Typically, no manual profile modification is needed to load the plugin.

If the plugin does not appear in Settings → Plugins, the README suggests reinstalling the latest version:

dsh plugin add dsh-client-ui-obsidian-memory@latest

(Older versions pre-0.3.2 might only be installed as a regular dependency.)

3. Configure vaultPath

In the profile’s cordis.patch.yml, point to the absolute path of the Codex/ folder:

- id: ui-obsidian-memory
  config:
    vaultPath: /Users/YOURNAME/Documents/Obsidian Vault/Codex

Alternatively, set an environment variable:

export OBSIDIAN_VAULT_PATH=/Users/YOURNAME/Documents/Obsidian Vault/Codex

If neither is set, the plugin will log a warning and skip tool registration.

4. Restart DSH

dsh web

After restarting, the Obsidian Memory panel should appear in the sidebar; when the vaultPath is configured correctly, the 5 tools will be available to the agent.

Typical Usage

After the above steps, the agent can invoke tools to maintain local memory during conversations, for example:

  1. Use obsidian_memory_list to see which notes are in the projects/ directory.
  2. Use obsidian_memory_search to search for keywords across the vault.
  3. Use obsidian_memory_read to read AGENTS.md or a specific project note.
  4. Use obsidian_memory_write to update TODO.md, or use obsidian_memory_append to add a daily record under daily/.

The specific invocations are initiated by the agent within the DSH session; you only need to ensure the directory structure matches the vaultPath and that AGENTS.md specifies how the agent should use these files.

Architecture Overview

DSH Web (Browser)
  └─ sidebar.obsidian-memory: Sidebar panel (tool description, vault structure)
        
DSH Host (Node.js)
  └─ Registers obsidian_memory_* tools, reads/writes local files
        
Local Filesystem
  └─ Codex/ directory pointed to by vaultPath

The host entry point is lib/index.js, and the client is lib/client.js; the data source is the local Markdown files.

Use Cases and Notes

Who It’s For: Developers who already use Obsidian or pure Markdown for note management and want DSH agents to read/write to the same local vault across sessions.

Permissions and Security: The plugin accesses the filesystem with the current DSH process permissions. Read/write access is limited to the vaultPath and its subdirectories. Before installation, review the source repository and the MIT license to ensure it aligns with your environment policies.

Version Dependencies: The sidebar requires the DSH client runtime to provide the sidebar slot (peer dependency @deepseek-ai/dsh-client-runtime etc. ≥ 0.1.0-rc.5). If tools are unavailable or the sidebar does not display, first verify the vaultPath and DSH version.

Conclusion

dsh-client-ui-obsidian-memory enables persistent memory for DSH agents by storing it in a local Markdown vault: 5 filesystem tools plus a sidebar reference, requiring no self-hosted memory service, and compatible with the Codex directory convention. The plugin is listed in the community directory SkillHub, with implementation and updates available on GitHub.