DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-output-styles

Output Styles

Claude Code outputStyles-equivalent runtime output-style switching for DeepSeek Harness

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:PerryLink/dsh-output-styles#9b67b4d95cf1cf2d2d034bc2b223c5ec55bf9091
READMECompatibilityVersions

Compatibility and provenance

Output Styles is published as dsh-output-styles and currently resolves to version 0.8.2. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
11/4/2026

Versions

0.8.2stable
10/24/2026
0.8.1stable
10/18/2026
0.6.26stable
10/10/2026
Show 34 more versionsCollapse versions
0.6.25stable
10/5/2026
0.6.24stable
10/5/2026
0.6.23stable
10/5/2026
0.6.22stable
10/4/2026
0.6.21stable
9/24/2026
0.6.20stable
9/24/2026
0.6.19stable
9/23/2026
0.6.18stable
9/22/2026
0.6.16stable
9/12/2026
0.6.15stable
9/10/2026
0.6.14stable
9/9/2026
0.6.13stable
9/9/2026
0.6.12stable
9/9/2026
0.6.11stable
9/9/2026
0.6.10stable
9/7/2026
0.6.9stable
9/7/2026
0.6.8stable
9/4/2026
0.6.7stable
9/4/2026

Related plugins

Loading related plugins…

Latest
0.8.2
DSH
*
HMR
Process restart
Tree shaking
Declares sideEffects: false
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
Apache-2.0
Source
github
GitHub
★ 0
Weekly downloads
603
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
0.6.6stable
9/3/2026
0.6.5stable
9/2/2026
0.6.4stable
9/2/2026
0.6.3stable
9/1/2026
0.6.2stable
8/30/2026
0.6.1stable
8/27/2026
0.6.0stable
8/26/2026
0.5.0stable
8/23/2026
0.4.3stable
8/22/2026
0.4.2stable
8/21/2026
0.4.1stable
8/19/2026
0.4.0stable
8/16/2026
0.3.2stable
8/15/2026
0.3.1stable
8/15/2026
0.3.0stable
8/15/2026
0.2.0stable
8/14/2026

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Session Titles Bundle@deepseek-ai/dsh-experimental-session-titles-bundleRefresh session titles as new human prompts arrive.Personalized Recommendations@deepseek-ai/dsh-personalized-recommendationsPersonalized pages and built-in plugin recommendations offered as cards below answersWhale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editin

README

🎨 dsh-output-styles

  • 1024 store channel: npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-output-styles (counts toward the deepseek1024.com install ranking). OpenSSF Scorecard

Claude Code outputStyles for DeepSeek Harness — switch the model's output style at runtime, per session, durably.

/style concise — and every reply from now on is terse. /style off — back to the project default.

Official repository. This is the only official repository of dsh-output-styles, maintained by PerryLink. Same-name repositories under other accounts are not affiliated.

DSH Market

English · 简体中文 · Español · Português · हिन्दी

dsh plugin --profile <name> add dsh-output-styles

📖 Ecosystem knowledge base — measured data, not marketing: plugin development guide · plugin-selection data · maintenance criteria.

Install & uninstall

  • git channel (latest main): dsh plugin --profile web add github:PerryLink/dsh-output-styles — the prepare script builds with production dependencies only.
  • npm channel (published releases): dsh plugin --profile web add dsh-output-styles.
  • tarball channel: pnpm pack in this repo, then dsh plugin --profile web add ./dsh-output-styles-<version>.tgz.
  • uninstall: dsh plugin --profile web remove dsh-output-styles.

⭐ 如果它帮到了你

这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。

English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.

What is dsh-output-styles?

/style concise — and every reply from now on is terse. /style off — back to the project default.

Workflow diagram for dsh-output-styles: install → open panel → act.

Workflow overview: install → open panel → act. The examples below use the real command surface.

Compatibility

SurfaceStatus
HarnessDeepSeek Harness dsh-v0.2.1-rc.2 (adapted 2026-09-09): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-11 against the dsh-v0.2.1-rc.2 checkout (full gate chain + profile install smoke).
Node`^22.19.0
PlatformsAll (host + web client)
ModelAny (system-prompt injection)

What you get

dsh-output-styles is the Claude Code outputStyles equivalent for DeepSeek Harness: a /style command that switches the model's output style at runtime, persisted per session, injected at every prompt assembly.

  • Style library — one Markdown file per style (styles/*.md); frontmatter for metadata, body = the model directive. Six built-ins ship in the box (concise, explanatory, formal, learning, proactive, step-by-step), including Claude Code-parity proactive and learning.
  • /style command — no argument lists styles (with descriptions) plus the current selection; /style <name> switches; /style off restores the project default.
  • Session-scoped persistence — the choice lives in the output_style storage domain, keyed by sessionId, and survives restarts.
  • System-prompt injection — a systemPrompt.section() contribution (order sectionOrder) injects the current session's style body at every assembly, truncated at a configurable budget.
  • Claude Code parity — keep-coding-instructions, force-for-plugin (force alias), outputStyles JSON compatibility, layered stylesDir directories, hot reload, and a project-default fallback that is live-editable from the Web Plugins page.
  • Renderer registry (output.render.*) — ctx.outputRenderers lets any plugin register a pure presenter, applied through the output.render/before waterfall; built-in renderers concise and step-by-step.
  • Per-session/per-tool rules — rules: [{ match: { tool: 'bash' }, style: 'concise' }] name the renderer for matching requests; live-editable from the Web Plugins page.
  • /transcript — render the current session to Markdown or sanitized HTML through the render pipeline; --save <path> writes the sanitized document to that workspace path after user approval. Every render keeps the original text beside the rendered one.

Quick start

dsh plugin --profile web add github:PerryLink/dsh-output-styles
# 1. install the bundle into your profile
dsh plugin --profile web add github:PerryLink/dsh-output-styles

# or from npm (published releases)
dsh plugin --profile web add dsh-output-styles

# 2. restart and verify the row
dsh --profile web --dump-config | grep -A3 'id: output-styles'

Demo

You > /style
      output style off
      concise — Terse, direct answers — minimal prose, no preamble. (Daily coding work, tool-heavy sessions, or when prompt length matters.)
      explanatory — Educational answers with short "Insights" that teach as you work. (Learning a codebase, onboarding, …)
      formal — Formal, precise prose with complete sentences and defined terms. (Reports, documentation, release notes, …)
      learning — Collaborative learn-by-doing mode with short "Insights" and small hands-on steps for the user. (Pairing, onboarding, …)
      proactive — Execute immediately, assume reasonable defaults, and prefer action over planning. (Routine multi-step work, …)
      step-by-step — Numbered reasoning steps with explicit intermediate results. (Debugging, design decisions, …)

You > /style concise
      switched to concise

You > 请只用一句话介绍你自己。
AI  > 我是运行在 DeepSeek Harness 插件化平台上、基于 deepseek-v4-pro 模型的 AI 编码代理。

How it works

flowchart LR
    U[You type /style concise] --> C[command registry]
    C -->|command/run logged| L[(session log)]
    C -->|put {style, source}| D[(output_style domain)]
    D --> R[OutputStyleRuntime]
    R -->|body at every assembly| S[systemPrompt section order 90]
    S --> M[Model request]
    M -->|full system prompt| H[system/message logged]

Everything the model sees is reconstructable from the session log — no new session event type, no agent-loop changes. The style name comes from command/run, the exact injected text from system/message, and the provenance marker { kind: 'dsh-output-styles' } rides in the domain record. Styles apply to the main conversation only; subagent sessions keep their own prompts (matching Claude Code).

Examples

These are the plugin's real entry points; install once, then call one.

Detailed example

Command

/style concise

Output

switched to concise

Observed from plugins/dsh-output-styles/src/runtime.ts:474-478; asserted in tests/runtime.spec.ts:91; README §Command reference line 194

Failure branch

Input

/style nope

Output

unknown output style "nope" (available: concise, explanatory, formal, learning, proactive, step-by-step)

Observed from plugins/dsh-output-styles/src/runtime.ts:213-214,474-475; plugins/dsh-output-styles/tests/runtime.spec.ts:118-125

Brief examples

  • /transcript
  • output_style

Configuration

All tunables are Schemastery Config fields (changeable from cordis.yml). Invalid values fail the load.

defaultStyle and rules are declared volatile(), so on a host that composes the settings forms seam they are live, Web-editable fields: edit them under Plugins → dsh-output-styles in the Web UI and the running plugin adopts the new value without a remount. Every other field stays composition-only and needs a reload. A committed value is validated before it is applied — an invalid one is rejected and the running values are left unchanged.

KeyDefaultWeb-editableMeaning
stylesDir[]noStyle-library directories, resolved against cwd; later entries override earlier ones. [] = the bundled styles/ only
maxStyleChars4000noStyle-body budget (≥ 1); longer bodies are truncated with a marker
defaultStyle''yesStyle for sessions that never selected one; '' = no style. A name that is not in the live library is refused rather than injected
compatJsontruenoLoad Claude Code outputStyles JSON entries (single objects or arrays)
sectionOrder90noOrder of the injected section (0 = persona, 100–199 = tool guidance)
truncationMarker"\n\n[style truncated]"noMarker appended at the truncation point
includeBuiltinstruenoInclude the package's bundled styles/ as the lowest-priority layer
watchStylestruenoReload the library when a style file changes on disk
rules[]yesPer-session/per-tool render rules: [{ match: { tool?, contentType?, session? }, style, priority? }]
enableExporttruenoRegister the /transcript command (Markdown/HTML session export, renderer-aware; --save writes with approval)
respectCoreOutputStylestruenoWhen a core outputStyles service is detected, skip this plugin's prompt injection (keep hot-switch / rules / export)

Migrating from 0.1.6 or earlier. Those versions kept two plugin-owned settings sections, output-style (style) and output-style-rules (rules). The 0.1.7 host deleted the API they were built on, so both sections are gone. Move any value you had there into the corresponding Config field — output-style.style → defaultStyle, output-style-rules.rules → rules — in your profile patch (cordis.yml), or set it on the Plugins page. Per-session choices made with /style are unaffected: they live in the output_style storage domain.

Tools & surfaces

SurfaceKindNotes
/stylecommandList styles, switch, or restore the project default
/transcriptcommandRender the current session to Markdown or sanitized HTML; --save writes with approval
output_stylestorage domainSession-scoped style choice, keyed by sessionId
systemPrompt.section()contributionInjects the current style body at every assembly
output.render.*renderer registryctx.outputRenderers + the output.render/before waterfall
styleprojection{ options, currentValue } folded from settled commands
Web pickerclient entrydsh-output-styles/client decorates /style with a popup picker

Command reference

InputOutcome
/styleList the current selection + one line per style (name — description)
/style conciseSwitch (durable write), switched to concise
/style Diagrams firstMulti-word names are the whole remainder
/style offRestore the project default (settings default, then defaultStyle)
/style nopeerror: unknown output style "nope" (available: …)
/transcriptRender the current session to Markdown through the renderer pipeline
/transcript mdRender to Markdown (md is the shorthand for markdown)
/transcript htmlRender to sanitized HTML
/transcript --renderer=conciseRender with one renderer forced (rules bypassed)
/transcript md --save report.mdRender, then write the sanitized document to report.md after approval

Style library

One Markdown file per style; frontmatter for metadata, body = the model directive. name defaults to the file name and may contain spaces (Diagrams first).

FieldDefaultMeaning
namefile nameSwitch target; letters, digits, spaces, and hyphens (off is reserved)
description— (required)One sentence shown in listings and the picker
whenToUse—Optional guidance appended to listings
keep-coding-instructionsfalseKeep the harness prompt when true; replace it when false (Claude Code semantics)
force-for-pluginfalseApply unconditionally, overriding any session selection; force is an alias, at most one style may set it

With compatJson: true, Claude Code outputStyles JSON entries ({ name, description, prompt }) load beside Markdown styles; unparseable entries are skipped with a warning.

Renderer protocol

The output.render.* protocol turns presentation into an extension point. A renderer is a pure presenter — presenter(text, context) maps args to display data, never touches the DOM — matched by tool name and content type, ordered by priority.

  • Waterfall first: every render request passes through output.render/before ({ text, context }); listeners must call next().
  • Rules: rules: [{ match: { tool: 'bash' }, style: 'concise' }] names the renderer for matching requests; ties break by priority, then rule order.
  • Built-ins: concise (whitespace compaction + budget truncation) and step-by-step (consistent step numbering).
  • Auditability: every render result carries { original, rendered, rendererId, changed }; the rendered text is what surfaces, the original stays reconstructable from the session log.

Web picker

The dsh.client entry decorates the host /style command's bare invocation with a popup picker: an "off" row plus one row per library style (description · whenToUse), the active row marked. Picking submits /style <name> through the command Remote, so every switch keeps the host's durable command lifecycle. The picker follows the Web UI's shipped zh/en locale pair.

Differences from Claude Code

Claude Codedsh-output-styles
Style files.claude/output-styles at user/project/managed levelsstylesDir directories + bundled styles/, later directory wins
Custom stylesMarkdown, frontmatter name/description/keep-coding-instructions/force-for-pluginSame fields (force-for-plugin accepted verbatim, force as alias) + whenToUse
Legacy JSONoutputStyles array in settings.jsonLoaded verbatim (compatJson: true)
Taking effectAfter /clear or a new sessionImmediately — the system prompt re-assembles per request
SubagentsStyles do not applySame — subagent sessions keep their own prompts
Switching/config menu or outputStyle setting (the /output-style command was removed in v2.1.91)/style command + Web picker + the defaultStyle field on the Web Plugins page

Conflict check

Screened against the DSH ecosystem before development (2026-08 snapshot): no style/output-style repository under topic:dsh-plugin, no output-style category in the four major awesome lists, and no entry in the dsh-hub catalog. The closest neighbors — dsh-soul-md (persona) and dsh-claude-marketplace (output styles explicitly deferred to v0.2+) — are adjacent, not conflicting.

Permissions & data

  • Permissions: declares fs:read, fs:write, fs:watch, storage:read, storage:write, and settings:read in its workshop manifest.
  • Data: the style choice lives in the output_style storage domain (keyed by sessionId); no other state is persisted, no network requests.
  • Session log: the style name comes from command/run, the exact injected text from system/message; the provenance marker { kind: 'dsh-output-styles' } rides in the domain record.

Security boundaries

  • Public services only. Contributes systemPrompt, commands, storage, and settings; no engine / agent-loop / apiproxy / official-UI changes.
  • Model-visible ⟺ logged. Everything the model sees is reconstructable from the session log — no new session event type, no agent-loop changes.
  • Original always kept. Every render (and /transcript) keeps the original text beside the rendered one; sanitized HTML is used for HTML export.
  • Disk writes gated. /transcript --save writes only after the approval service grants it, and the written content passes through the sanitizeText pure function first; without an approval or fs service it writes nothing (fail-closed).

Known limitations

  • Core coexistence. If a first-party outputStyles capability lands, this plugin detects its outputStyles service and degrades to the incremental surface (hot-switch, rules, /transcript) while leaving prompt injection to the core — see docs/COEXISTENCE.md and the exported detectCoreOutputStyles / coexistenceReport functions. Degraded mode is stated where you can see it: every /style switch and /style off reply carries a degraded coexistence mode note, and the style session projection exposes promptInjection: 'enabled' | 'disabled', so no surface implies the style is in force when it is not. (Before 0.7.0 the only trace was a ctx.logger.info line, which never reaches the session transcript.)
  • Main conversation only. Styles apply to the main conversation; subagent sessions keep their own prompts (matching Claude Code).
  • Truncation. Style bodies longer than maxStyleChars are truncated with a marker.
  • Skipped style files. A bad style file is skipped with a warning and never breaks the profile.

Development

pnpm install
pnpm run typecheck   # both tsc projects
pnpm test            # vitest — 156 tests
pnpm run verify      # typecheck + tests + self-contained (the prepublishOnly gate)
pnpm run build       # lib/ artifacts (host + client bundles)
pnpm pack            # tarball for dsh plugin add

Releases: pushing a v* tag whose suffix matches the package.json version triggers the Publish workflow — full verification, then an npm publish with provenance.

Interoperability with other DSH plugins

Verified against DSH 0.2.0-rc.2 (the runtime this README ships for) and the high-star plugin set surveyed on 2026-10-05.

This plugin does not interfere with other plugins, including the widely installed high-star ones:

  • No tool-name collision. Every tool is namespaced; no bare name owned by a shipped tool or another plugin is registered.
  • No service-key collision. It provides outputRenderers; that key is not a built-in seam and is not provided by any surveyed high-star plugin.
  • No slot collision. It registers no client slot key, so it cannot contend for a shadows-shipped-ui seat.
  • No HTTP route collision. It registers no webServer prefix.
  • No patch-layer collision. The bundle patch only inserts its own row; it never overrides a built-in row's config.
  • No global mutation. It does not patch prototypes, rewrite process.env, or replace the global fetch dispatcher.

Shared event listeners are non-interfering by construction. It observes the ordering-sensitive event system-prompt/assemble with ctx.on() — Cordis's broadcast registration, where every listener runs and none can starve another. Every listener here delegates through next(), so the chain is never short-circuited, and a mutation is applied to the value next() produced rather than returned in its place:

  • system-prompt/assemble — also used by dsh-routing-suite (7000★, 13 listeners).

Static evidence: dsh-plugin-doctor K10–K13 report pass for every check on this repository.

Topics

deepseek-harness, dsh, dsh-plugin, output-style, output-styles, claude-code

Contributors

  • @kskazuha — the Web style picker revival on 0.1.7 (#8).
  • @Bingtang1019 — the module-table handoff report for lib/client.js (#10).
  • @PerryLink — author and maintainer: plugin architecture, style library, bundle install, Web picker, five-language docs, and CI/release tooling.

PerryLink DSH Plugin Family

This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.

Expand all plugins
PluginStatus
dsh-aqua-input-check
dsh-archive-check
dsh-auto-review
dsh-autotier
dsh-bid-ca-precheck
dsh-bid-qual-check
dsh-cert-mcp
dsh-checkpoint-rewind
dsh-click
dsh-composer-history
dsh-contract-stance
dsh-customs-doc-check
dsh-data-quality

License

Apache License 2.0 © 2026 dsh-output-styles contributors

dsh-demurrage-ledger
dsh-doublecheck
dsh-drill-script-check
dsh-eia-guide-check
dsh-emergency-plan
dsh-essay-rubric-check
dsh-evidence-check
dsh-export-ctl-check
dsh-fast
dsh-fmea-table-check
dsh-forecast-penalty
dsh-fund-research
dsh-github
dsh-gongwen-flow-check
dsh-gongwen-word-check
dsh-guard-plan-qc
dsh-hazchem-check
dsh-hazplan-check
dsh-hidden-risk-map
dsh-hs-classify
dsh-icd-rule-check
dsh-industry-research
dsh-lawcite-adapter
dsh-laya
dsh-lc-doc-check
dsh-learning-gap-check
dsh-library
dsh-local-ai
dsh-lsp-actions
dsh-mask
dsh-mcp-panel
dsh-medrec-qc
dsh-memento
dsh-nsfc-form-check
dsh-nurse-record-check
dsh-observe
dsh-origin-rvc-check
dsh-ota-review-check
dsh-output-styles
dsh-paper-doc-adapter
dsh-permission-rules
dsh-permit-report-check
dsh-pipeline-check
dsh-pleading-draft
dsh-plugin-doctor
dsh-plugin-guide
dsh-plugin-kit
dsh-plugin-upgrade
dsh-policy-brief-draft
dsh-power-loss-split
dsh-power-ticket-check
dsh-ppap-check
dsh-protest-deadline
dsh-railway-window
dsh-repair-order-qc
dsh-research-report
dsh-review-reply-check
dsh-rulefile-check
dsh-safety-brief-check
dsh-score
dsh-session-sync
dsh-site-log-check
dsh-skill-pack-security
dsh-soe-decision-check
dsh-soilwater-check
dsh-sop-sync-check
dsh-spc-gbt-adapter
dsh-talk
dsh-tender-extract
dsh-tender-matrix
dsh-test-drive
dsh-ticktick
dsh-translate
dsh-warranty-calc
dsh-budget🧊 FROZEN — see the repo README
dsh-claude-move🧊 FROZEN — see the repo README
dsh-defend🧊 FROZEN — see the repo README
dsh-draw🧊 FROZEN — see the repo README
dsh-reach🧊 FROZEN — see the repo README
dsh-background-agents🚫 RETIRED — see the repo README
dsh-session-pin🚫 RETIRED — see the repo README
dsh-team-rooms🚫 RETIRED — see the repo README