DeepSeek Harness plugin

dash-songqiko

DASH — Deepseek Agentic Service Harness. oh-my-pi style TUI on the DSH agent kernel, run in the terminal via `dsh --profile dash`.

Jump to install

Source facts

Repository
songqikong/dash
Latest update
Aug 17, 2026
Category
Workflow & Automation
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/songqikong/dash
Plugin: dash-songqiko
Author: songqikong

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

DASH — Deepseek Agentic Service Harness

![License](LICENSE)

A terminal TUI for the official dsh CLI, launched as a dsh profile like dsh-tui, but with keybindings, editing semantics, the status bar and the settings panel following oh-my-pi conventions. The kernel is pure DSH: the plugin creates real agents through the official ctx.agents.create() factory, drives turns with agent.followup(), interrupts with agent.cancel(), and renders the streaming session/event event flow. Tool calls, reasoning, session persistence, compaction and agent presets all go through DSH's official services. The UI is zero-dependency raw-ANSI terminal rendering (no React/Ink) — the whole plugin lives in a single index.ts.

Install

Prerequisite: the official dsh CLI (npm install -g @deepseek-ai/dsh).

git clone https://github.com/songqikong/dash.git
cd dash
npm install          # first time: installs typescript and other build deps
sh install.sh        # compiles src/*.ts → dist/, creates ~/.dsh/profiles/dash + ~/.local/bin/dash
dash                 # launch (equivalent to dsh --profile dash)

DASH_PROVIDER / DASH_MODEL environment variables override the default model; LLM provider configuration is fully reused from $DSH_HOME/settings.yaml (the same file the Web Models page writes) — no separate setup needed.

One TUI, _official DSH end to end_

01 · Native terminal rendering, zero deps

The whole UI is raw ANSI: diff rendering redraws only changed rows, the kitty keyboard protocol (CSI-u) gives per-key precision, SGR mouse support (wheel scrolling, moving the selection in list overlays), alternate screen plus a hidden hardware cursor. No React/Ink, no node_modules baggage — the plugin body is one file and its only runtime dependencies are the official DSH packages.

02 · Full oh-my-pi-style editing

Multi-line input (kitty Shift+Enter / Ctrl+J), word/line movement and deletion, kill-ring (Ctrl+Y / Alt+Y yank-pop), undo (Ctrl+-), char jump (Ctrl+] / Ctrl+Alt+]), Ctrl+G external-editor round-trip, paste, @ file completion (recursive into directories). All keybindings come from oh-my-pi's action table and can be remapped in ~/.dash/keybindings.yml; /hotkeys shows the active bindings.

03 · Streaming transcript

Markdown rendering (headings/lists/quotes/code highlighting/tables/links, stream-safe — unclosed code blocks and tables degrade to plain paragraphs instead of breaking the frame), streamed reasoning folding (Ctrl+T toggles), tool cards (⛭/✓/✗ states, arg folding Ctrl+O, result summaries), message metadata (time/duration/model), pinned prompt header plus a ↓N unread pill while browsing history.

04 · Status-bar dashboard

omp-style status lines: A (above the input) shows ⬢ model · preset · ◉ thinking effort · in/out tokens, C (below the input, the bottom row) shows activity (spinner + ⛭ tool name / ⏵ model self-reported work / ✓ turn stats), queue, status hints, and /help. Both rows sit on a theme background band with balanced left/right segments — the right side carries the TPS sparkline, cache hit %, session elapsed, the restored context-window indicator (usage/total + a 10-cell bar), and git branch / cwd / session title.

05 · Model role system

Four roles — default / smol / plan / task — with values supporting a provider/model:effort suffix, persisted to modelRoles in ~/.dash/config.yml. Three-column picker (Alt+M, Tab moves columns · j/k move · Enter drills down), Ctrl+P cycles the current role's model, Alt+P swaps in a temporary model, Shift+Tab cycles thinking effort. The default effort is configurable in the settings panel.

06 · Session workflow

/resume picker (sorted by mtime, parallel title loading, Enter restores with event-log replay, d deletes dash-* sessions), /rename, /new, persistence (~/.dsh/sessions), autoResume restores the most recent session at startup. Double-Esc enters time-rewind: fork a seed session from the session log, drop that message back into the editor, edit and resend (omp's rewind semantics).

07 · Official agent preset modes

DSH's four official agent modes are directly available: Standard (full featured), PTC (Code Mode SDK), Minimal (persistent bash + str_replace_editor only), Creative (preset authoring). Switch via the /preset picker or the «Session mode» settings item; blank sessions rebuild immediately, sessions with history take effect after /new; the choice is persisted as preset.id. Loading uses the official discoverPresets / mountPreset in the agent factory's setup hook.

08 · omp-style settings panel

/settings is a full port of oh-my-pi's SettingsList interaction: four tabs (appearance / model / interaction / session) with a grouped sidebar (two or more groups split left/right, inactive groups dimmed), type-to-search fuzzy search across tabs (Tab jumps to the next matching tab), Enter/Space cycles values, a 3-line description area, change markers, Esc backs out of search before closing. 12 real knobs (language, theme, color-blind mode, spinner frames, default thinking effort, hide reasoning, advisor, double-Esc, queue delivery, turn bell, quiet boot, autoResume) — all applied live and written to ~/.dash/config.yml.

08½ · Splash welcome screen

Before the session starts you get an omp-style welcome screen: a sharp-cornered single column box (no rounded elements, everything centered) with a bold DASH wordmark (ANSI Shadow art) + model/provider, then a Tips block (all hints live inside the box), the current agent preset (highlighted — it also appears on status line A above the input), and recent sessions (read live from ~/.dsh/sessions with relative times). It yields to the transcript once the first message is sent.

09 · Agent Hub

Alt+A / /hub opens the subagent tree: indentation, label, mode, running/inactive states, filtering; Enter shows details, s messages a subagent (followup), x interrupts it (ancestor authorization).

10 · Advisor — second-model bystander

/advisor on enables it: after every turn the second model posts a short comment on that turn (prefixed advisor:), visible in the main transcript.

11 · TTSR — time-travel streaming rules

Write regex → prompt pairs in ~/.dash/rules.yml. When streaming output hits a rule, DASH injects the prompt via agent.steer() and stamps a ⚠ card — deduplicated per turn, correcting behavior without a context tax.

12 · DSH command registry + skills + project instructions

/plan /goal /compact etc. forward automatically to the DSH command registry; /skills lists available skills; /init injects AGENTS.md/CLAUDE.md as instructions; /think /focus inject reasoning/focus steers. Optional turn-end bell (notify.turnEnd).

13 · Smart / command menu

Typing / at the prompt opens the command menu above the input. Type to fuzzy-filter, ↑↓ to select. Tab completes the highlighted command (no double slash), Enter runs the highlighted command directly. Commands with arguments get zsh-style completion: type /models then Tab and the provider list appears; pick a provider, Tab again and its models show up. The same

works for /lang <en|zh>, /theme <dark|light>, /role <name>, /advisor <on|off> and /preset <id> — Tab accepts a candidate and, when a

deeper level exists, keeps the menu open for the next argument.

Keybindings (oh-my-pi conventions)

KeyBehavior
EnterSend (queues as a follow-up while streaming)
Ctrl+Enter / Ctrl+QQueue a follow-up message
Esc / Ctrl+CInterrupt generation (idle: Ctrl+C quits, Esc asks for confirmation)
Ctrl+P / Alt+PCycle model
Alt+MModel picker (j/k move · Tab switches column · Enter selects)
Alt+RResend last instruction
Ctrl+R / Input history
Ctrl+NNew session (/new)
Ctrl+TToggle reasoning
Ctrl+OExpand/fold tool args
Ctrl+LReset display
PgUp/PgDn · Alt+↑/↓Scroll history / dequeue
Mouse wheelScroll history; move selection in list overlays (SGR mouse, auto-enabled)
/ + Tab / EnterComplete / run the highlighted command; Tab completes arguments
/help /clear /models /new /exit /model <p>/<m> /statusSlash commands
/plan /goal /compact etc.Forwarded to the DSH command registry

Full list in FEATURES.md; bindings are remappable in ~/.dash/keybindings.yml.

Session control

  • /new new session · /resume restore/replay/delete · /rename <t> rename · /clear clear screen
  • /preset switch agent preset (standard/PTC/minimal/creative) · /settings settings panel
  • /model <p>/<m> set model · /role <name> switch role · /theme <dark|light> switch theme
  • /lang <en|zh> switch UI language (English by default)
  • /plan plan-mode toggle · /goal /compact (DSH registry) · /hub agent hub
  • /advisor <on|off> · /skills · /init · /think /focus · /status · /hotkeys

Configuration

  • Default model: agent-default-model in the profile's

cordis.patch.yml (default opencode-go / deepseek-v4-flash; credentials come from $DSH_HOME/.credentials.yaml).

  • Startup overrides: DASH_PROVIDER / DASH_MODEL environment variables.
  • User settings: ~/.dash/config.yml (language, theme, spinner, effort,

advisor, preset, autoResume etc., written by the settings panel); ~/.dash/keybindings.yml (keymap); ~/.dash/rules.yml (TTSR stream rules).

The UI language is English by default; switch with /lang <en|zh> or the

«Language» item in the settings panel.

  • Permissions: the terminal trusts the model —

danger-full-access + policy: never (no approval dialogs; the terminal is the trust boundary). To tighten, edit the profile's cordis.patch.yml (the defaultPreset of the permission line must match the sandbox-policy / approval knobs or startup fails).

Explicitly out of scope (they need oh-my-pi's private native stack, which DSH does not provide)

  • 60+ provider ecosystem (DSH has its own provider registry)
  • LSP (14 ops) / DAP (28 ops) tools (DSH has no such stack; read/grep/glob are

covered by DSH tools)

  • /collab relay (depends on the omp server)
  • STT/voice /live (no audio backend)
  • Image protocols (kitty/sixel image display), OSC 5522 clipboard images
  • Native in-process ripgrep/brush (DSH ships equivalent tools)
  • Session export/share dialogs, session tree panel (the terminal uses /resume)

Development

Source lives in src/ (TypeScript), compiled output in dist/.

npm install        # first time: typescript / @types (build deps)
npm run build      # compiles src/*.ts → dist/
sh install.sh      # recompiles and copies dist/ into ~/.dsh/profiles/dash/node_modules/dash-tui
dash               # launch (Ctrl+C to quit)

sh install.sh --no-build skips the compile and just copies. After editing src/*.ts, rerun sh install.sh to apply. Runtime dependencies are only the official DSH packages (@deepseek-ai/dsh-llm, @deepseek-ai/dsh-agent, @deepseek-ai/dsh-agent-presets), resolved from the shared ~/.dsh/profiles/node_modules directory.

pty integration tests live in tests/ (b1–b8: real chat round-trips plus key-driven interaction):

cd tests && python3 b1.py   # each suite independently verifies editor/dialogs/commands/resume/settings/modes

Repository layout

PathPurpose
src/index.tsplugin body (agent lifecycle + event projection + rendering + input dispatch)
src/keys.tskey parsing (kitty/CSI/legacy) + oh-my-pi action registry
src/editor.tsmulti-line draft editor (kill-ring/undo/char jump/external editor)
src/markdown.tsstream-safe Markdown → ANSI renderer
src/config.ts~/.dash config read/write (flat dotted keys, YAML persistence)
src/dsh.d.tsambient declarations for the official DSH API surface
dist/tsc output (copied into the profile by install.sh)
tests/b1–b8 pty regression tests
cordis.patch.ymlprofile patch layer (model/permissions/sandbox)

License

MIT. See [LICENSE](LICENSE).

_made for terminals that stay open_