dsh-custom-prompt
DSH plugin that injects an editable section into the global system prompt, with a Settings page
- Stars
- 0
- Language
- —
- Created
- Aug 27, 2026
- Updated
- Aug 27, 2026
Introduction
dsh-custom-prompt
A DeepSeek Harness (DSH) plugin that adds one editable section to the system prompt of every agent in the process, and gives you a Settings page to customize it.
Off by default. Enable it in Settings > Custom Prompt, write whatever you want the model to always follow, and save.
What it does
- Registers a durable
custom-promptsettings namespace:{ enabled, text }. - When enabled, registers
textas a system-prompt section at order 50, which places it after the persona and before tool guidance. - Re-registers the section live whenever the setting changes. No restart needed to apply prompt edits.
- Adds a Custom Prompt page to the Settings panel: an enable toggle, a multiline text field, Save and Reset.
The section is registered in the global prompt layer, so it applies to every agent preset (standard, code, minimal, cordis, and any custom preset), not just one mode.
Install
Build a tarball and add it to your profile:
npm pack
dsh plugin --profile web add file:/absolute/path/to/dsh-custom-prompt-1.0.0.tgz
Then add the bundle to the profile manifest in ~/.dsh/profiles/web/package.json:
{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-custom-prompt"
]
}
}
}
Restart the profile so the host loads the new row:
dsh web
The plugin carries its own cordis.patch.yml, which inserts the custom-prompt row once the bundle is listed.
Usage
- Open Settings, then Custom Prompt.
- Check Enabled.
- Write your prompt text, for example a short list of working rules.
- Save. The change applies to subsequent model steps in every session.
Reset clears both stored fields and returns to the shipped defaults (disabled, empty).
Your text is stored in the custom-prompt section of ~/.dsh/settings.yaml, so it survives restarts.
Prompt variables
The plugin registers one variable, usable anywhere in the section text:
{{customnote}}expands to a fixed reminder line.
DSH renders prompt variables strictly. Any other {{reference}} you write is unknown and makes prompt assembly throw, which fails the next model turn. Keep braces out of your text unless you register a matching variable.
Requirements
- A DSH web profile with a settings document provider (
@deepseek-ai/dsh-settings-file, included in the default web profile). - The browser must connect over loopback. DSH settings writes are loopback-only, so from a remote browser the page reports that settings are unavailable and stays process-local.
Notes and limits
- The plugin needs the
systemPromptservice and is composed on the host plane. It publishes no services, so it does not need anisolaterealm. - Code changes require a profile restart. Prompt text edits do not.
- An empty
text, orenabled: false, registers no section at all.
Layout
| File | Purpose |
|---|---|
index.js | Host half: settings namespace, prompt section registration, live re-registration |
client.js | Browser half: the Settings page |
cordis.patch.yml | Bundle patch that inserts the plugin row |
package.json | Package manifest, dsh.bundle.patch, and dsh.client declarations |
License
MIT