Introduction¶
Building a terminal programming agent using deepseek-harness (hereinafter referred to as DSH) requires more than just installing the core dsh. You also need to select a terminal frontend and a preset, and then confirm item-by-item what tools are exposed in the first request and what context is automatically injected. These components are scattered across different packages, and configuring them takes time; a small oversight can lead to changes in the DSH core itself. The community project dshX addresses this composition problem: it packages the DSH core, a forked terminal frontend, and a built-in preset into a single npm package, launched via the dshx command, with zero changes to the DSH core throughout. Below is an introduction to its positioning, core behavior, installation, and usage.
What is it¶
dshX is maintained by NoNshiranai, released under the MIT license, with the npm package name @dshx/dshx. The current version is 0.2.4, depending on @deepseek-ai/dsh 0.1.0-rc.7 and @dshx/tui 0.1.5. It is important to note: this is a community project with no affiliation or endorsement from DeepSeek’s official side; it is developed based on deepseek-harness (MIT) and follows the official plugin ecosystem guide, with the dsh-plugin topic in the repository. A one-sentence positioning: a terminal programming application based on deepseek-harness + @dshx/tui (a fork of dsh-TUI) and built-in prefab-anchored-standard, featuring Claude Code / opencode style.
Implementation-wise, dshX is not a fork, but a distribution layer consisting of a “profile bundle + launcher + built-in preset.” The dshx command is equivalent to dsh --profile dshx, combining three parts:
* dsh-base: the deepseek-harness core;
* @dshx/tui: the forked terminal frontend of dsh-TUI;
* dshx patch: setting the default preset to prefab-anchored-standard.
The core capabilities are provided by deepseek-harness; dshX only handles composition with zero changes to the deepseek-harness core.
Core Features¶
Default Preset: prefab-anchored-standard¶
dshX comes with a built-in default preset called prefab-anchored-standard. The idea is to first pre-fill a new session with a verified trajectory, then narrow the tool directory and injected context of the first request to a minimal set, gradually restoring the rest afterwards.
- Session Pre-fill: New sessions are pre-filled with a verified anchored trajectory (prefab-session-seed) using a compact prefab template;
- First Request: Only the REAL tool pairs from the official Minimal preset are exposed (persistent bash + str_replace_editor), with an output budget equal to the adapter’s default (no 1024 cap);
- Context-gate: The first request strips away automatically injected items like the skill directory, AGENTS.md, time/tmux, hooks, etc., and only allows user-initiated
/skill gestures.
Tool Promotion and Discovery¶
The preset uses promoteOn: either: after the first persistent tool call or the first assistant response, the directory is narrowed to the Minimal pair + three discovery tools (dev_tool_search / skill_search / skill_load) + explicitly unlocked tools. In other words, even after promotion, the directory remains small, and other tools are unlocked on-demand via the discovery tools.
skill-catalog-gate and Built-in j-space Skill¶
- skill-catalog-gate: The prefab session does not broadcast the host skill catalog. The j-space is loaded on-demand via
skill_search+skill_loador the/j-spacegesture. - Built-in j-space: dshX comes with an integrated j-space skill (J-Space Cognition Suite V3.6). The launcher idempotently syncs it to
$DSH_HOME/skills/j-spaceusing a marker+checksum, never overwriting the user directory.
Sub-agents, Compaction, and Resume¶
This strategy also applies to sub-agents (includeSubagents: true). After compaction, the session returns to the controlled phase; resume/reload maintains the phase.
Installation and Activation¶
Prerequisites: Node ^22.19 || >=24, pnpm 10+ (required for the first profile initialization), and DEEPSEEK_API_KEY. The dsh CLI is built into the package, so there is no need to install @deepseek-ai/dsh separately; installing the official dsh separately after installing dshx will cause a conflict, so do not do this.
npm install -g @dshx/dshx
Globally install dshx, which automatically comes with the built-in dsh, TUI, preset, and j-space skill.
dshx
Launch the application. The first run automatically initializes the dshx profile and the built-in preset: it executes dsh plugin --profile dshx add @dshx/tui@<v> @dshx/dshx@<v> (where <v> is the corresponding package version) and idempotently syncs the built-in preset and j-space skill.
Typical Usage¶
First check the environment, then restore the session as needed:
# Environment check
dshx doctor
# Resume last session
dshx --resume
dshx transparently passes through the built-in CLI, allowing commands like dsh plugin --profile X add <pkg> and dsh --version to be used directly.
Preset Switching¶
You can switch among the official standard/code/minimal/cordis presets within a session using /preset. The priority is: CC_TUI_PRESET environment variable > persistent selection > roster default.
Note: minimal is only available on Linux—persistent-bash cannot be created on Windows. dshX’s default prefab-anchored-standard uses custom-bash (Git Bash path) on Windows, so this is not an issue.
Migrating from dsh-TUI¶
The terminal frontend @dshx/tui of dshX is a fork of dsh-TUI, sharing the $DSH_HOME/sessions session library and ~/.dsh-cc preference directory with dsh-TUI. Migrating from dsh-TUI does not require moving data; existing sessions and preferences are immediately visible.
Use Cases and Notes¶
Suitable for these scenarios:
- Want a Claude Code / opencode style terminal programming experience based on deepseek-harness;
- Don’t want to compose dsh, the terminal frontend, and the preset yourself;
- Already using dsh-TUI and want to get prefab-anchored-standard by default without moving data.
Pay attention to the following points before use:
- The sandbox defaults to workspace-write + ask; write operations will trigger approval. workspace-write only restricts writing, not reading, network, or process visibility, on both Linux and Windows; the write boundary on Windows is weaker (partial constraints from windows-acl, NTFS hard links can alias external paths, writable directories must be caller-owned).
- In a trusted environment, you can use
DSHX_SANDBOX_MODE=danger-full-accessto enter full access (no approval), but the default is always workspace-write + ask. - Telemetry is disabled by default (session-telemetry-otel line disabled, no endpoint).
- Presets are installed in the user root
$DSH_HOME/.agent-presets(trust: user); you can review the files underpreset/before installation. - Upgrading from dshX ≤ 0.2.1: the old default preset anchored-standard will not be deleted and will remain in the
/presetlist; existing agent-preset will override roster default. To use the new default, please switch back via/presetfirst. - Known issues can be found in the repository’s
KNOWN_BUGS.md.
Finally, a general reminder: plugins run with the permissions of the current dsh process. dshX is a community project; it is recommended to check the source code and license before installing. The protocol is MIT; preset/ is derived from the prefab mode of dsh-anchored-standard (including adaptations of the DeepSeek Harness Standard preset), with original copyright and MIT statements retained in the NOTICE.
Summary¶
The value of dshX lies in hardening the composition of “DSH core + terminal frontend + preset” into a single dshx command: zero core changes, no overwriting of user data, default sandbox and telemetry disabled, and an integrated prefab-anchored-standard preset that narrows the first request. If you are using deepseek-harness for terminal programming, you can run dshx doctor first to check the environment, then decide whether to adopt it.
Repository and Directory Page:
* GitHub: https://github.com/NoNshiranai/dshX
* Plugin Directory Page: https://www.skillhub.cn/plugins/NoNshiranai/dshX (Community independent directory, no official affiliation with DeepSeek / Huafang)