deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
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.
soul:persona section. Multiple cards are supported; pick a default,
and switch per chat from the conversation header (a "人设" select).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.soul:memory prompt section (capped)
so the agent always sees its memories.session choice (chat switcher) > workspace mapping > default card > none. Switching applies from the next turn — no restart.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 profile
Then restart dsh web and open Settings → 人设卡: type a name + content, save.
soul-md settings namespace (settings.yaml),
as cards: { name -> markdown } + active + per-session sessions.$DSH_HOME/soul-md/memory/
(global.md + one file per card), created on demand.path card (as "默认") and the old memory file on first run.| 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. |
{{ / }} in a card body — they are prompt-variable
syntax; unknown variables fail rendering (no escape syntax yet).dsh-host-apiproxy namespace allowlist;
the plugin patches it automatically on first start — restart dsh web
once more and the section appears.0.1.0-rc.6.MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。