DeepSeek Harness CLI: Every dsh Command, Flag, and Footgun in One Place
A CLI that mixes launcher flags and application arguments with a strict ordering rule will silently misbehave rather than error out. Knowing that `dsh --port 8080 --profile web` is broken while `dsh --profile web --port 8080` works saves debugging time that the tool itself won't help you with.
The `dsh` command is the entry point for DeepSeek Harness, loading plugin stacks as agent instances through profiles. Two profiles ship built-in: `web` for the browser UI and `headless` for one-shot tasks that print results and exit. Custom profiles must be created manually via `dsh plugin`.
Plugin management forwards pnpm operations to a profile directory, so installing or removing a plugin is a single `dsh plugin --profile <name> add/remove` command. Configuration inspection uses `--dump-default-config` for the base defaults and `--dump-config` for the fully merged result, while `--patch` applies a one-time overlay without touching files.
The sharpest edge is parameter order: the launcher stops parsing its own flags at the first unrecognized token and passes everything else to the application. Putting `--port 8080` before `--profile web` means the launcher never sees the profile flag. Headless mode returns exit code 0 on success and non-zero on failure, making it scriptable for CI/CD pipelines.
Parameter ordering rules that silently swallow flags instead of rejecting them are a design choice that shifts the debugging burden entirely onto the user.
The headless mode's exit-code contract is the feature that makes Harness viable in CI/CD; without it, scripted agent runs would need brittle output parsing.
Forwarding plugin management to pnpm rather than inventing a new package manager is pragmatic, but it means plugin installation failures inherit pnpm's sometimes opaque error messages.