dsh-output-style
会话级输出风格插件:/style 命令 + Web 选择器,改变模型如何呈现答案(default/adhd-friendly/eli5/bluf)。Session-scoped output styles for DeepSeek Harness.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 31, 2026
- Updated
- Aug 31, 2026
Introduction
dsh-output-style
English | 中文
Session-scoped output styles for DeepSeek Harness: a /style slash command and a composer selector that change how the model presents answers — never what it knows or which tools it has.
Built-in styles:
| Style | What it does |
|---|---|
default | No guidance — the assistant answers normally. |
adhd-friendly | Action-first, ADHD-friendly output adapted from ayghri/i-have-adhd. |
eli5 | Plain language with one concrete analogy per idea. |
bluf | Bottom line up front, then brief reasoning. |
Requirements
- DeepSeek Harness
>=0.1.0-rc.7(developed against0.1.1-rc.2). - A DSH profile to install into (the
webprofile below).
Install
dsh plugin --profile web add dsh-output-style
Restart dsh web. The style selector appears in the composer's tool row,
beside the Workspace Write permission control.
Installing from a local checkout (before the package is on npm):
dsh plugin --profile web add file:/path/to/dsh-output-style
Uninstall
dsh plugin --profile web remove dsh-output-style
Then restart dsh web.
Use
/style— list the current style and every available style./style <id>— switch (e.g./style bluf)./style off(or/style default) — back to the default.- The composer dropdown does the same thing: it submits
/style <id>.
The selection is per-session, survives resume and fork, and is reconstructed
from the session log — the plugin folds the durable command/run /
command/done events for the /style command instead of writing custom
session events (which DSH's persistence read path would refuse from a
third-party plugin).
How it works
One package, two halves:
- host (
src/index.ts) — a Cordis plugin that registers theoutput-style:guidancesystem-prompt section, theoutputStylesession projection, and the/stylecommand. - client (
src/client/) — the composer selector, bundled tolib/client.js, loaded throughexports["./client"]and thedsh.clientdeclaration.
The host and client both read the same pure fold of /style's command/run /
command/done events (src/style-command.ts), so the model-visible guidance
and the dropdown always agree.
I Have ADHD adaptation
adhd-friendly preserves the canonical project's ten behavioral rules,
exceptions, and pre-send check. DSH owns activation and persistence, so the
upstream skill's self-activation instructions are not embedded. Its request to
enter a harness plan is also narrowed: choosing an output style never changes
the agent's operating mode.
The adaptation is pinned to upstream revision
cbe69fb83c08a37cf54d5ec9ec6bb88c8bc9973c. See
THIRD_PARTY_NOTICES.md for attribution and license.
Development
pnpm install
pnpm run typecheck
pnpm run test
pnpm run build
pnpm run dist # build + publish lint (publint)
pnpm run dist runs publint, the publish gate. It reports one expected
warning — exports["./client"] is written in CJS but parsed as ESM. This is
intentional: DSH hard-pins a client plugin's browser bundle to lib/client.js
(loaded from /plugins/<id>/client.js), so it must stay .js, not .cjs.
Publishing
Publishing is driven by GitHub Actions using
npm Trusted Publishing (OIDC) — no long-lived token. It fires on a v*
tag push, runs typecheck/test/build/publint, verifies the tag matches
package.json version, then npm publish (which also runs prepublishOnly →
dist).
One-time: register the npm trusted publisher
npm composes the OIDC credential against a trusted publisher you configure on
the package. Go to https://www.npmjs.com/package/dsh-output-style/access (or
create it if the package is new) and add a Trusted Publishing connection
with:
- Provider:
GitHub - Repository:
null-object-0000/dsh-output-style - Workflow filename:
publish.yml - Environment: leave default (no environment set in the workflow)
After that, a tag push publishes automatically.
Release a new version
# bump the version (updates package.json + a git tag)
npm version patch # or minor / major
git push --follow-tags
The v* tag push triggers the workflow, which publishes dsh-output-style@<version>.
prepublishOnly runs dist automatically, so a manual npm publish also
builds and lints before it goes out.
License
Apache-2.0. The adapted i-have-adhd material is available under
the MIT License; see THIRD_PARTY_NOTICES.md.