DSH Plugin Store
Back to home

Scorp1o117

dsh-soul-md

Soul.md persona for DeepSeek Harness | DeepSeek Harness 人设卡插件

Stars
2
Language
JavaScript
Created
Aug 13, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

dsh-soul-md

中文文档

GitHub: Scorp1o117/dsh-soul-md · npm: dsh-soul-md

Soul.md-style persona injection for DeepSeek Harness.

Load a markdown persona card (soul.md) and render it as the soul:persona system-prompt section (order 0), so your agent keeps roleplaying while it works. Edits to the file hot-reload — save and the next assembled prompt uses the new persona.

  • Registered on the global prompt layer: every agent in the process (web GUI, headless, subagents) sees it.
  • No collision with the deployment persona (deployment:persona): it uses its own section name.
  • Prompt variables ({{model}}, {{cwd}}) resolve at render time.
  • Web UI settings section (v0.2.0): Settings → 人设卡 edits the soul-md namespace (card path, fallback, order, watch) in settings.yaml; changes hot-apply. Mount by package name (name: 'dsh-soul-md') so the web client bundle is discovered.

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
      config:
        path: 'C:/Users/you/soul.md'   # absolute, or relative to dsh home
        watch: true

Or load it from a local path without npm:

    - id: soul-md
      name: './plugins/dsh-soul-md/index.js'

Config

FieldDefaultMeaning
pathrequiredPath to the soul.md card; absolute, or relative to the dsh home.
fallback''Text used when the file is missing/unreadable. Empty = no section.
order0Prompt section order (0 = right after the deployment persona slot).
completefalseTreat the rendered card as the complete system prompt (advanced).
watchtrueHot-reload the section on file change.
debounceMs300Reload debounce in milliseconds.

Note for users

  • dsh plugin prints "declares no dsh.bundle — installed as a plain dependency" — expected: this plugin mounts via cordis.patch.yml.
  • The settings section needs the dsh-host-apiproxy namespace allowlist; the plugin patches it automatically on first start — restart dsh web once more and the section appears. A dsh update overwrites the patch; the next plugin start re-applies it.
  • Settings changes hot-apply (no restart needed).
  • Tested against DSH 0.1.0-rc.6.

Notes

  • Never write {{ / }} in the card body — they are prompt-variable syntax; unknown variables fail rendering (no escape syntax yet).
  • Section text stays stable during an agent's life (KV-cache friendly); editing soul.md re-registers the section from the next assembly on.
  • Suggest putting work-quality rules in the card (e.g. "task quality first") so roleplay never degrades real work.

Examples

See examples/soul.example.md.

License

MIT