Back to home@null-object-0000

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
GitHub repo

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:

StyleWhat it does
defaultNo guidance — the assistant answers normally.
adhd-friendlyAction-first, ADHD-friendly output adapted from ayghri/i-have-adhd.
eli5Plain language with one concrete analogy per idea.
blufBottom line up front, then brief reasoning.

Requirements

  • DeepSeek Harness >=0.1.0-rc.7 (developed against 0.1.1-rc.2).
  • A DSH profile to install into (the web profile 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 the output-style:guidance system-prompt section, the outputStyle session projection, and the /style command.
  • client (src/client/) — the composer selector, bundled to lib/client.js, loaded through exports["./client"] and the dsh.client declaration.

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 prepublishOnlydist).

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.