Preface¶
DeepSeek Harness (dsh) treats models, tools, sessions and interfaces as replaceable plugins. It is ideal for building agent runtimes, but by default does not handle a very specific category of assets: character cards, world books, Chat Completion presets, and JSONL chat logs that have been curated in SillyTavern.
Many people do not want to build a roleplaying frontend from scratch, but just want to migrate their existing cards and continue chatting in native sessions using the models already configured in DSH. The community plugin dsh-agent-rp was made exactly for this purpose.
This article is organized after cross-checking the community plugin directory page, GitHub repository README / package.json / compatibility documentation, and the official DeepSeek Harness repository: it explains what this plugin is, what it can do now, how to install it, how to start your first chat, and what it explicitly does not support at this time.
What is this¶
dsh-agent-rp is a tool and capability plugin for DeepSeek Harness, maintained by hewzhew, licensed under MIT. Its npm package name is @dsh-external/dsh-agent-rp, and it is primarily written in TypeScript. The GitHub repository’s one-line description is: SillyTavern migration and next-generation Agent RP for DSH. As of 2026-08-17, the repository has 142 stars.
It solves a very specific problem: bringing SillyTavern character cards, presets and chat logs into DSH to continue roleplaying conversations in native sessions. You can select characters from the character library, set opening lines and Persona, and use character cards, world books, presets, a lightweight frontend and persistent memory during sessions. Both the directory page and README label it as a public preview for next-generation Agent RP.
First, let’s clarify its ecosystem position. DeepSeek Harness is an open-source agent harness from DeepSeek AI, with the core philosophy of “everything is a plugin”. It is currently in developer preview, and the official repository notes that future breaking compatibility changes will be made. The community directory site used to discover plugins is an independent project with no official affiliation to DeepSeek / HyperGryph; do not treat it as an official app store. The official recommended way to discover plugins is still to add the dsh-plugin topic to your repository.
Core Features¶
Characters are Top-Level Agents¶
The README states this directly: the character itself is the top-level agent. There are no extra narrators, coordinators, or Character sub-agents here; roleplaying conversations happen directly in regular sessions.
When selecting a character from a blank standard session, the plugin will automatically enter a roleplaying session, without needing to first pick an agent preset. Regular sessions with existing chat content will not be modified.
Character Cards and Character Library¶
Currently available import and management capabilities include:
- Import Character Card V1 / V2 / V3, supporting PNG, JSON and CHARX formats
- Save characters to a visual character library, collapse or restore them without affecting existing conversations
- Select a default or alternate opening line, and choose reusable Personas for the player
The compatibility documentation adds a few edge cases: if a PNG contains both ccv3 and chara metadata, ccv3 will take precedence; unknown fields and extensions will be preserved but not included in prompts, unless a supported field takes over this behavior. Standalone JSON files will be stored as opaque attachments, with their raw bytes and paths not sent to the model.
World Books, Presets and Chat Logs¶
Migration is not just about a single card:
- Import SillyTavern JSONL chat logs, or migrate a matching character card and JSONL together in one message
- Use the world book included with a character; the setup form can directly import community-recommended SillyTavern Chat Completion presets
- Import standalone World Info into the current session
- World book regex keywords are matched in a restricted QuickJS runtime, and will not be executed by Host JavaScript
Imports will create a new roleplaying session without modifying the source files or original sessions. After importing, presets can be renamed in the character library setup form or the session’s “Preset Library”; once a conversation starts, you can adjust the prompt modules and preset regex toggles in Session Settings → Presets, and changes will only apply to the current session.
Isolated Scripts, Lightweight Frontend and Memory¶
The public preview has already migrated some Tavern-side scripts and frontend semantics, but in an isolated execution environment:
- Run synchronous EJS templates from world books, character prompts and presets in an isolated QuickJS environment; a single failed template or regex will not interrupt the session
- Run compatible Tavern Helper scripts, display regexes, lightweight HTML interfaces and MVU state in an isolated script environment
- Executable card HTML runs in a sandboxed iframe without same-origin permissions
- Tavern Helper scripts can only load built-in or HTTPS modules explicitly approved by the player, and cannot directly access the Host page, files or processes
- You can view the HTTPS sources declared by a card before entering a conversation, and approve them one by one as the player
You can also rewrite, continue and switch between reply versions in the session, while retaining persistent long-term memory. You can toggle between immersive view and debug view to check the actual active prompt content.
Installation and Activation¶
The installation command given on the directory page can be run in the DeepSeek Harness terminal:
dsh plugin add github:hewzhew/dsh-agent-rp
For reproducible installations, the directory page recommends pinning a commit hash:
dsh plugin add github:hewzhew/dsh-agent-rp#commit
Replace commit with the actual hash. Do not construct the installation address manually using the plugin name.
The README in the repository provides a more explicit recommended setup: you need a publicly released version of DSH, as well as Node.js and pnpm. The client platform declared in package.json is web. You do not need to clone the repository first; install directly from the public repository:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web add github:hewzhew/dsh-agent-rp#main
npx -p @deepseek-ai/dsh@latest dsh --profile web
To update the plugin later, run:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web update @dsh-external/dsh-agent-rp
This installation method does not depend on a local cloned directory left in place long-term. Only contributors modifying the source code need to clone the repository, and run pnpm install, pnpm run build and dsh plugin --profile web add . in the repository root directory.
Versions installed by older installers will not be automatically migrated. If you see .dsh\plugins\dsh-agent-rp in startup errors, first move this directory out of the plugins folder as a backup, confirm that DSH can start normally, then install using the profile commands above. Do not delete the entire .dsh folder; session data and old plugin directories are separate.
If you are participating in the DSH closed beta and using a specified RC version, the README requires replacing @latest in both commands with the matching version, and do not disclose your NPM Token in Issues or logs.
Android / Termux Preview¶
The README also provides a mobile preview path: ARM64 devices running Android 11 or above can run DSH natively in Termux without needing to keep a computer powered on. The installer will prepare Android-native dependencies for DSH, a fallback image decoding module, the Agent RP plugin and startup commands; first-time installation requires compiling native modules, which will be slower than updating regular plugins. The mobile installer defaults to the validated DSH 0.1.0-rc.6 release, and will not automatically switch to upstream versions without validation.
curl -fsSL https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-termux.sh | bash
dsh-agent-rp --port 3080
Then open http://127.0.0.1:3080 in the browser on the same device. Character cards and sessions are stored in ~/.dsh, and re-running the installation command will update the plugin without deleting them. If you encounter issues during startup or when importing character cards, run dsh-agent-rp-doctor, which only checks versions, modules and Android filesystem capabilities, and does not read tokens, character cards or session content.
This path currently only guarantees the capabilities required for character chatting, and does not include bash sandboxing or coding agents on older devices in the mobile preview. If you need to keep the page running in the background for an extended period, first run termux-wake-lock in Termux, then run termux-wake-unlock when finished; this will not bypass Android’s battery optimization settings. After restarting your phone, you will need to re-run dsh-agent-rp --port 3080.
Starting Your First Chat¶
You can follow the steps given in the repository README directly:
1. Create a new blank session in DSH.
2. Click “Select Character” below the input box.
3. Choose an existing character, or import a PNG, JSON or CHARX character card.
4. Select an opening line and Persona, then click “Start Conversation”.
5. After entering the session, you can open the character info, character library, presets, world books or debug view from the title bar.
To migrate old chats, you can attach a SillyTavern JSONL file to a roleplaying session; placing a matching character card and JSONL in the same message will migrate both the character identity and chat history in one step. Imports will create a new roleplaying session without modifying the source files.
For more complex card changes, the repository provides a synthetic compatibility benchmark excluding community card content, available at docs/compatibility-benchmark.md. More detailed format support and downgrade methods are available at docs/sillytavern-compatibility.md, and the executable and preserved scope of EJS is documented at docs/ejs-compatibility.md.
Use Cases and Notes¶
This plugin is suitable for these scenarios:
- You already have SillyTavern character cards (PNG / JSON / CHARX) and want to continue single-role roleplaying in DSH native sessions
- You need to migrate JSONL chat logs, world books and Chat Completion presets together
- You can accept the capability boundaries of the public preview, and are willing to check the actual active prompts in the debug view
The parts explicitly excluded from the current milestone include:
- Group chats and multi-person interactions
- Heavy frontend / standalone frontends
- Application-style opening lines that require scripts or remote HTML: they will not start in the background during character library previews
World books and EJS are not fully compatible either. For standalone World Info, regex keys, decorators, probabilities, vector matching, timed effects, recursive control and advanced insertion positions will be preserved but not executed; the importer will not execute semi-supported entries when unsupported fields would change activation conditions. EJS only executes template semantics that can be deterministically reconstructed from the current Session log, and does not provide setvar / incvar / decvar, page objects, Date, random numbers or Host asynchronous APIs. If a single template fails, only the corresponding module or world book entry will be skipped.
There are a few mandatory security notes to review before installation. The directory page states: the plugin runs with the permissions of the current DSH process, and may execute code during installation. You should inspect the source code repository and license before installing; for reproducible installations, please pin a commit hash. Character cards, world books and scripts are considered untrusted content: EJS and world book regexes run in an isolated QuickJS / WASM runtime, and will not gain access to Host files, network, processes or module interfaces; remote and data-URL resources will not be fetched or decoded.
When filing feedback Issues, please specify the card format, expected behavior, actual behavior and minimal reproduction steps; do not upload publicly unavailable character cards, private community content, tokens or full Session Logs. We welcome you to try the plugin with cards you have the right to use, and welcome contributions to improve compatibility with different card ecosystems.
Summary¶
dsh-agent-rp brings the common character cards, presets, world books and chat logs from SillyTavern into native DeepSeek Harness sessions. Characters are top-level agents, and conversations happen in regular sessions without wrapping an extra narrator or sub-agent. It is currently a public preview, focused on single-role RP, migration and lightweight frontends; group chats and heavy frontends are not yet within scope.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-agent-rp/
GitHub: https://github.com/hewzhew/dsh-agent-rp