插件目录 / Developer / dsh-soul-md
dsh-soul-md
已验证 · 实测可装 Scorp1o117
功能简介
dsh-soul-md — DSH 插件(工具)
可用 — 实测通过,早期项目
dsh-soul-md — DSH 插件(工具) 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
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
thesoul:personasection. 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:memoryprompt 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 profile
Then 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),
ascards: { name -> markdown }+active+ per-sessionsessions. - 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
pathcard (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. - The settings section needs the
dsh-host-apiproxynamespace allowlist;
the plugin patches it automatically on first start — restartdsh web
once more and the section appears. - Suggest putting work-quality rules in the card (e.g. "task quality first")
so roleplay never degrades real work. - Tested against DSH
0.1.0-rc.6.
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-soul-md」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
Web profile:
dsh plugin --profile web add dsh-soul-md Headless(CLI)profile:
dsh plugin --profile headless add dsh-soul-md 包信息
npm:dsh-soul-md · 版本 — · 实测环境 dsh 0.1.0-rc.6
实测报告
端到端验证通过:dsh 0.1.0-rc.6 上 L1 安装 + L2 加载 + L3 运行问答。
使用场景
扩展 agent 的编码能力面——给它一个新工具、工作流或集成,让它接手以前做不了的开发任务。
适合谁
想让 dsh 在真实代码库上像队友一样干活的开发者——能改、能跑、能验证,而不只是回答问题。
二次开发建议
工具/命令面就是缝:暴露更多 SDK 能力、加更聪明的上下文接线,或收紧改代码与验证之间的循环。