Skip to content
dsh.fish
Bundle

@omdsh-dev/dsh-bang-shell

Run !-prefixed commands directly from the DeepSeek Harness Web composer without sending them to the model.

Source
ClausYang
License
BSD-3-Clause
Updated
Updated 15 days ago

Readme

# dsh-bang-shell

[中文](README.zh.md) | **English**

Run a shell command directly from the DeepSeek Harness Web composer with a leading `!` — the command is **not sent to the model**. It executes in the current session workspace and lands in the conversation as a durable command card.

## Highlights

- Typing the first `!` instantly switches the line to terminal colors (an amber `!` prompt glyph plus green command text, no background tint, light/dark theme aware) — the mode change is visible from the first keystroke;
- Enter executes it: stdout / stderr / timeout & signal markers / exit code render as a persistent command card visible across tabs, with zero model tokens spent.

## Usage

```text
!pwd
!git status
!pnpm test
```

- Only a message whose first non-whitespace character is `!` is intercepted; inline `!` never triggers;
- A bare `!` keeps the draft and asks for a command;
- Commands run through DSH's active `ctx.shell` executor, inheriting its timeout and sandbox policy;
- A non-zero exit renders an error command card — never an AI turn.

## Install

Prerequisite: a DSH core that includes the `!` trigger extension (`TriggerChar`, `detectTrigger`, input adjudication; see "Core companion changes" below). On a checkout that has it:

```sh
dsh plugin --profile web add /path/to/dsh-bang-shell
```

Restart `dsh web`, then refresh the browser page.

## Core companion changes

The `!` trigger character requires a small extension (~20 lines, all test-first) to the DeepSeek Harness input pipeline:

- `packages/client/ui-input-trigger`: `TriggerChar` gains `'!'`; `detectTrigger` recognizes `!`
- `packages/client/ui-conversation`: `InputMachine.onEnter` routes `!` drafts into adjudication; the decoration core gains a `bang` range; InputBar renders it dual-color (amber `!` + green command, no background)

## Development

```sh
DSH_CHECKOUT=/path/to/deepseek-harness npm run build
npm test
```

The build reuses the DSH checkout's toolchain (tsc + tsdown + the clientBundle preset) with zero extra npm dependencies.

## Known limitations

- Depends on the core `!` trigger extension; the browser half stays inert on DSH builds without it;
- Output renders through the generic command card (`command/done` text); no dedicated terminal block yet;
- Multi-line drafts submit as one line; shell history expansion (`!!`) is not supported.

## License

[BSD-3-Clause](LICENSE)

Install

dsh plugin --profile web add github:ClausYang/dsh-bang-shell

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