Bundle
@bo_wu/dsh-reasoning
Codex-style /reasoning command for DeepSeek Harness Web: select the reasoning effort of the current model from the slash menu
- Source
- BoWuGit
- License
- MIT
- Updated
- Updated yesterday
Readme
# dsh-reasoning
Codex-style **`/reasoning`** command for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web.
Type `/reasoning` in the composer, press Enter, and pick a reasoning effort
(`Off` / `Low` / `High` / `Max`, whatever the current model's adapter
advertises) from the popup — fully keyboard-driven, no mouse required.
## Why
The built-in model picker exposes reasoning effort through a two-level menu
in the composer seat. This plugin surfaces the exact same data as a slash
command, so switching effort is three keystrokes instead of a click path:
`/reasoning` → Enter → ↑↓ (or type to filter) → Enter.
It is a thin client-only plugin:
- no host configuration, no persistence, no settings page;
- registers one `popupSelect` command contribution through the official
`ctx.commandUi` extension point (the same one `/model` uses);
- submits picks through the shared per-session model directory
(`ctx.modelDirectories` → `session.selectModel`), i.e. the identical RPC the
composer effort pane uses;
- never touches the draft, the IME composition, or an in-flight request —
a pick applies to the next model request only.
## Requirements
- DeepSeek Harness Web host exposing the `model-directory` service and the
`commandUi` extension point (both ship with the official Web bundle);
- an open ordinary session with a model selected (the model's adapter must
advertise reasoning metadata — the popup lists them; without a selected
model the popup stays empty and the pick reports the host error).
## Install
Add the package to a Web profile `dsh.profile.bundles`, e.g.:
```bash
dsh plugin --profile <profile> add @bo_wu/dsh-reasoning
```
or reference it from your own `cordis.patch.yml`:
```yaml
- insert:
- id: dsh-reasoning
name: '@bo_wu/dsh-reasoning'
```
Then restart the profile's Web host.
## Behavior contract
- The command is hidden for addressed subagent sessions (same rule as
`/model`).
- A pick re-selects the **current** model with the chosen effort; the popup
lists only the current model's advertised effort levels, plus a `Default`
row when the adapter has no explicit default.
- Selecting the already-active effort closes the popup without a request.
- Rejected selections keep the previous effort and surface the host error in
the popup.
- No global keyboard shortcuts — nothing to conflict with other plugins.
## Publish (maintainer)
- CI (`pnpm check`: typecheck + tests + build) runs on every push/PR.
- Tagging `v*` publishes the package to npm (public) via GitHub Actions.
- Publishing needs the repo secret `NPM_TOKEN`: an npm **automation** token
(npmjs.com → Access Tokens → Generate New Token → Automation) for an
account owning the `@bo_wu` scope.
## Development
```bash
pnpm install
pnpm build # tsc -b && tsdown → lib/
pnpm test # vitest
pnpm check # typecheck + test + build
```
The browser bundle is produced by `tsdown` into `lib/client.js` wrapped in
the DSH lazy module loader.
## License
MIT
Install
dsh plugin --profile web add github:BoWuGit/dsh-reasoning
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install bo-wu-dsh-reasoning from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.