dsh-soul-md

GitHub: Scorp1o117/dsh-soul-md · npm: dsh-soul-md
 
Part of the DeepSeek Harness Enhancement Suite — Vision · Soul/Persona · Long-term Memory · Plugin Marketplace.
Persona + long-term memory for DeepSeek Harness — zero file management:
> In Settings → 人设卡, type a card name and its content, hit save. The plugin manages everything else.
What you get
- Persona cards — the card content is rendered into the system prompt as
the soul:persona section. Multiple cards are supported; pick a default, and switch per chat from the conversation header (a "人设" select).
- Long-term memory — the agent gets five tools:
- memory_append / memory_read / memory_rewrite — a persistent memory file (Agent.md / memory.md style). The active persona card has its own memory; otherwise the global memory is used. - soul_read / soul_update — the AI reads and evolves its own persona card: when it notices a stable trait, preference, or value of its own, it folds it into the card. It "grows" across sessions instead of resetting every time. - The memory is also injected as a soul:memory prompt section (capped) so the agent always sees its memories.
- Resolution per prompt assembly:
session choice (chat switcher) > workspace mapping > default card > none. Switching applies from the next turn — no restart. - Workspace personas (v0.5.2): Settings → 人设卡 lists every workspace with a card dropdown — sessions of that workspace use the assigned card by default (session-level switching still wins). Workspaces come from dsh's durable workspace registry, so no paths to type.
Install
The plugin is a plain Cordis row. Mount it in a profile patch ($DSH_HOME/profiles/<name>/cordis.patch.yml):
- insert:
- id: soul-md
name: 'dsh-soul-md' # after: pnpm add dsh-soul-md in the profileThen restart dsh web and open Settings → 人设卡: type a name + content, save.
Where things live (you don't need to care, but for reference)
- Persona cards: stored in the
soul-mdsettings namespace (settings.yaml),
as cards: { name -> markdown } + active + per-session sessions.
- Memory files: plugin-managed under
$DSH_HOME/soul-md/memory/
(global.md + one file per card), created on demand.
- Upgrading from ≤ v0.4 (file-based)? The plugin auto-imports the old
path card (as "默认") and the old memory file on first run.
Config
| Field | Default | Meaning |
|---|---|---|
cards | {} | Persona cards: name → markdown content (managed from the UI). |
active | '' | Default card name; empty disables the persona by default. |
sessions | {} | Per-session choice (sessionId → card name / none / ''); written by the chat switcher. |
workspaces | {} | Per-workspace choice (workspace path → card name / none / ''); written from the settings page. |
workspaceList | [] | Read-only workspace list (path + title), maintained by the host from dsh's workspace registry. |
memory.maxBytes | 1048576 | memory_append / memory_rewrite refuse to exceed this size. |
memory.inject | true | Render the memory as the soul:memory prompt section. |
memory.injectMaxChars | 8000 | Cap for the injected section (from the file head). |
memory.order | 0.5 | Prompt section order for the injected memory section. |
| legacy fields | — | path, fallback, order, complete, watch, debounceMs, soulMaxBytes, personas, roster, memory.path… kept so old composition entries and settings still validate; only used for the one-time import. |
Notes
- Never write
{{/}}in a card body — they are prompt-variable
syntax; unknown variables fail rendering (no escape syntax yet).
- Persona/memory sections resolve per assembly, so steady cards stay
byte-identical (KV-cache friendly) and edits hot-apply.
- DSH exposes the registered
soul-mdsettings namespace directly; the plugin
does not modify files in the host installation.
- Suggest putting work-quality rules in the card (e.g. "task quality first")
so roleplay never degrades real work.
- Version 0.5.8 and newer require DSH
0.1.0-rc.7or newer and are tested
against 0.1.0-rc.7, 0.1.0-rc.8, and 0.1.1-rc.1.
- DSH
0.1.0-rc.6users must pindsh-soul-md@0.5.6, the last release
carrying the legacy settings-allowlist compatibility patch.
License
MIT