Skip to content
dsh.fish
Bundle

@lovstudio/dsh-better-command

Separator-transparent, abbreviation-aware slash-menu matching for the DeepSeek Harness web surface: provides the slashMatcher service the ui-commands and ui-skill sources consult, so `dshp` matches `dsh-plugin-creator` and `dbc` matches `dsh-better-command`.

Source
lovstudio
License
MIT
Updated
Updated 15 hours ago

Readme

# dsh-better-command

Lovstudio's slash-menu matching upgrade for the [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) web surface. The plugin provides the `slashMatcher` service — a separator-transparent, abbreviation-aware candidate ranker — that the `/` menu sources (ui-commands and ui-skill) consult at candidate time. With the plugin mounted, `dshp` matches `dsh-plugin-creator`, `dbc` matches `dsh-better-command`, and `dsh-p` matches `dsh-plugin-creator`.

This is a **Lovstudio** plugin, not a DeepSeek-AI package, distributed under the `@lovstudio` scope.

## What it does

The slash pipeline asks each `/` source for menu candidates per keystroke. The harness command source filters by ordered-subsequence matching; the skill source filters by literal name prefix — so a skill like `dsh-plugin-creator` is unreachable by typing `dshp`. Official harness builds expose no matcher extension point, so this plugin attaches itself at runtime: it reaches the `inputTriggers` registry, and for the `command` and `skill` sources replaces `candidates` with a wrapper that fetches the source's full list and ranks it with the plugin's matcher. Pick, space and enter adjudication are untouched. The matcher is also published as the `slashMatcher` service for sources that want to consult it directly.

- `-`, `_`, `.`, and whitespace are transparent in names and queries (`dshp` matches `dsh-plugin-creator`).
- Word-initial abbreviations score at boundaries (`dbc` matches `dsh-better-command`).
- Matching is case-insensitive and name-only; descriptions never match.
- Ranking tiers: literal prefix > separator-stripped prefix > boundary-weighted subsequence score; equal scores keep source order.

The plugin is fully self-contained: it imports no `@deepseek-ai` runtime symbols (the service contract is a structural mirror), and its browser half is served to the page by the client module system once composed.

## Install

Prerequisites: Node.js 22.19+ or 24+, pnpm 11 (`corepack enable` or `npm i -g pnpm`) — `dsh plugin` forwards to pnpm inside the profile directory.

**From a DeepSeek Harness source checkout (recommended — you get the harness source too):**

```sh
git clone --depth 1 --branch dsh-v0.1.2-rc.1 https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness && pnpm install && pnpm run build
pnpm dsh plugin --profile web add -w github:lovstudio/dsh-better-command#v0.1.2
pnpm dsh web
```

**Without a checkout (npx; compiled harness only):**

```sh
npx @deepseek-ai/dsh plugin --profile web add -w github:lovstudio/dsh-better-command#v0.1.2
npx @deepseek-ai/dsh web
```

`web` is the profile `dsh web` boots. The tag pins a commit whose `lib/` is prebuilt and committed, so nothing is compiled on your machine. Verified on 2026-09-04 against `dsh-v0.1.2-rc.1`. Remove with `dsh plugin --profile web remove @lovstudio/dsh-better-command`.

## Use

1. Start the web UI: `dsh web`.
2. Type `/` in the composer and start an abbreviation: `/dshp`, `/dbc`, `/dsh-p`.
3. The menu surfaces the hyphenated commands and skills the default filters would miss.

## Local development

Keep this checkout outside the DeepSeek Harness repository. Install and build it here, then link the package into an isolated development profile:

```sh
pnpm install
pnpm run watch

DSH_HOME=/Users/mark/.dsh-lov-dev pnpm --dir /path/to/deepseek-harness dsh plugin --profile web add -w link:/path/to/dsh-better-command
```

The browser module system consumes the generated `lib/client.js`, and the Harness Client HMR watcher detects rebuilds. Package-manifest, patch, and bundle-membership changes require a profile restart. The package build does not import a Harness tsconfig or workspace source path.

## Notes

- The attachment reads `InputTriggerService.live.sources`, a TypeScript-private field of dsh-client-ui-input-trigger. It is feature-detected: on a harness build where that shape changed, the plugin logs one console warning and stays inert. Verified against `dsh-v0.1.2-rc.1`.
- Uninstalling (or disposing) the plugin restores the built-in filters exactly.
- Matching is a per-keystroke browser computation; it never reaches a model request or the session log.

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:lovstudio/dsh-better-command

Profile: web

  • 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.
Source