Introduction

When engaging in agent-based or role-oriented conversations in DeepSeek Harness (DSH), the common practice is to hand-write a system prompt or copy past chats into a new session. The former is difficult to reuse or switch; the latter easily overlaps with DSH’s built-in harness injections, tool schemas, and runtime context, making token overhead difficult to control. The community plugin dsh-persona-select (Maintainer: gosutry, Category: Workflow) turns “injecting persona text into system prompts and history into context” into savable presets, allowing for switching at any time within the chat interface. It also supports on-demand suppression of DSH’s own injections, approximating combinations like “pure chat” or “persona only.” The following describes its capabilities and usage based on the README and repository metadata.

What is this

dsh-persona-select is a DSH community plugin. The current release version is v0.4.0-rc3 (marked as installable on the SkillHub Directory; approximately 3 stars on GitHub). License: MIT.

The plugin does two things (using consistent terminology in the interface and documentation):

Term Meaning
Persona Text The content injected into the system prompt
History Dialogue A segment of conversation that “has already happened” injected as context

These two are saved as a pair under a Persona: write and save them as a preset in the settings page; when selected in a conversation, they enter the current request according to specific rules. The repository description also mentions a built-in community-oriented Whale Girl role-play preset; built-in entries are read-only, and changes require “Copy as new persona.”

Injection Rules

Persona Text and Segment Weight

The persona text enters the persona segment of the system prompt, and its position is controlled by the Segment Weight:

  • Sorted by weight size; lower numbers appear earlier (default is -1, placed before the preset sentence “You are a coding agent…”).
  • When clicking Follow, the persona segment is placed after all other system prompt segments.
  • The weight must be an integer (-1000000000 ~ 1000000000); it only affects sorting and is not written into the text.

History Dialogue and KV Cache

History dialogue is injected as user-side context once during the first step of a new conversation. The shell mimics DSH’s native format: wrapped in <system-reminder>, starting with CONTEXT_ROAD: and ending with CONTINUE_CONTEXT.; internally using tags like <user_message>, <thinking>, <assistant_message>, and <file> to distinguish content.

Conversations that have already been injected will not be injected again to avoid breaking the KV cache of the entire conversation. Therefore, history dialogue only takes effect at the first step of each new conversation; if you want to “supplement history” in an ongoing session, the README explicitly does not recommend writing history into the persona text.

Persona Management and Per-session Settings

The settings page supports creating, editing, saving, and deleting personas, as well as Copy as new persona. Each persona includes: Name, Persona Text, Segment Weight, and History Dialogue.

Settings are saved separately per conversation: switching personas or changing switches does not affect new conversations or ongoing ones. The settings page has Current / Global tabs, corresponding to the current conversation and the default for new conversations, respectively.

Validation occurs before saving: empty names, empty text, or non-integer weights will be rejected with an explanation; text exceeding the recommended limit will trigger a prompt but is retained in full. If there are unsaved changes when switching personas, a confirmation will be asked first.

Injection Suppression and “Pure Chat”

Four switches each remove a category of system-side inputs (Summary from README table below):

Switch Function
Persona Only Keep only the persona segment in the system prompt, removing harness identity, tool instructions, and other segments
Suppress Runtime Context Sandbox/approval user snapshots, as well as runtime and skill directories in <system-reminder>
Suppress Schema Tools Remove tool definitions (usually the largest token consumer)
Suppress Other Injections User-side additions like AGENTS.md / CLAUDE.md baselines and time readings

When all four switches are on and no persona is selected, it becomes Pure Chat: system-side injection is zeroed out. The “Persona” selection box in the chat provides One-click Pure Chat / Restore System Input.

When Reusable Tools (tool keep-alive channel) is checked, the full tool list is retained for one round during the first request of the conversation and when a sequence restart is suspected (e.g., compaction), preventing subsequent calls from being rejected with INVALID_REQUEST after the tool baseline is cleared.

Import, Export, and Session Logs

Export (Must be the saved version of the persona in the editor):

  • Export JSON: Lossless JSON.
  • Export Image: Choose a PNG as the cover; persona data is written into the image for download. Original image pixel data is unchanged; single file limit is 32 MB.

Import:

  • .json exported by this plugin or .png containing data → Appends as a new persona, without overwriting existing entries.
  • DSH /export Sessions: Supports .zip, session.jsonl / session.vN.jsonl, .jsonl.zstd / .zst; optional Import Thinking Process, Expand Compression (controls whether to include <thinking> and the trade-off between compression summaries and full text).

Chat Interface and Data Files

The Persona expander box below the chat mode selector allows: switching personas or selecting “None”, one-click pure chat/restore, and distinguishing current/global settings via layer badges. Green/Yellow/Red dots indicate the status of the tool baseline, whether history is still aligned for injection, and if the persona has been deleted (see README for details).

Data is stored in <DSH_HOME>/persona-select/ (DSH_HOME defaults to ~/.dsh):

File Content
personas.json Global settings, persona list, per-conversation selections, and switches
personas.json.v2-backup Upgrade backup, can be deleted
history/<ID>.txt History dialogue text for each persona

Limits (from README): Name max 40 characters; persona text recommended under 20,000 characters; max 200 personas, 500 dialogue records; invalid session records are cleaned manually or automatically.

The built-in Whale Girl image originates from @ZipZipPipe; derivative works follow CC BY-NC-SA 4.0; interface text supports Chinese and English.

Installation and Enablement

The captured data does not provide a fixed command line original text like dsh plugin add …. Please do not guess installation parameters based on the repository name.

You can verify the environment against the facts below before installing:

  1. Open gosutry/dsh-persona-select on the SkillHub Community Directory (No official affiliation with DeepSeek/High-Flyer, belongs to the community ecosystem). The page is marked Installable, version v0.4.0-rc3.
  2. package.json requires Node.js >= 18, peer dependency @deepseek-ai/dsh >=0.1.7-rc.2 <1.0.0 (optional peer).
  3. Read the GitHub Source Code and MIT license before installing; the plugin runs with the current DSH process permissions, so only install community packages you trust.

Typical Usage

  1. Open plugin settings → Persona Management, create a persona: fill in Name, Persona Text, Segment Weight, paste or import History Dialogue as needed → Save.
  2. Set the default persona for new conversations in the Global tab; change only the current conversation in the Current tab.
  3. Start a new conversation, select the preset in Persona below the mode row; confirm status dots are green (or understand the meaning of yellow/red).
  4. For character card circulation: Export JSON or Export Image after saving; others Importing will add a new entry.
  5. To reuse context from real sessions: use DSH /export to get logs, check “Import Thinking Process” and “Expand Compression” as needed during import, and write into the History Dialogue field of a persona.
  6. To test tokens or conversation purity: turn on the four suppression switches as needed, or use “One-click Pure Chat”; if tools are still needed, check Reusable Tools.

Use Cases and Notes

Suitable for: Reusing and switching system prompt personas within DSH workflows; wanting to bring formatted history into new sessions all at once; conducting controllable comparisons or token-saving experiments between “Full Harness Agent” and “Near Pure Chat / Pure Persona.”

Notes:

  • History Dialogue is injected only at the first step of a new conversation; switching personas midway will not re-inject history.
  • Suppression modes like “Persona Only” change the tools and instructions visible to the model; verify in a copy of the conversation before production tasks.
  • Built-in personas are read-only; please copy before modifying.

Conclusion

dsh-persona-select splits persona text and history dialogue into manageable presets, exposing segment weights, per-session switches, DSH Session imports, and PNG character card exports. It belongs to the prompt and context orchestration category of tools within the DSH “Everything is a plugin” workflow. Reference and installation entry: SkillHub Directory; Source code and full documentation: github.com/gosutry/dsh-persona-select.