Tools & Capabilities

dsh-console

Isanti2016/dsh-console · ★ 0

Isanti2016Curated

Console commands for DeepSeek Harness: manage the web service, the SSH tunnel, one-shot questions, and an optional console TUI — straight from the slash-command plane.

License
MIT
Added
2026-08-16
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:Isanti2016/dsh-console

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Quick start
  2. Commands
  3. Configuration
  4. How the tunnel is wired
  5. Typical setups
  6. Security notes
  7. Development

Console commands for DeepSeek Harness: manage the web service, the SSH tunnel, one-shot questions, and an optional console TUI — straight from the slash-command plane.

Quick start

# 1. install the bundle
dsh plugin --profile web add dsh-console

# 2. restart dsh web, then use the commands
/web status
/tunnel status

Out of the box, /web and /tunnel status work with zero config (the plugin auto-detects the running dsh entry). Configure the tunnel host and the console TUI path in the profile's cordis.patch.yml:

- id: dsh-console
  config:
    tunnelHost: '192.168.1.100'        # your SSH server
    tunnelUser: 'root'
    tunnelKey: 'C:\\Users\\you\\.ssh\\id_rsa'
    consoleCommand: 'python C:\\tools\\dsh-tui\\main.py'

Then dsh plugin --profile web again + restart, and /tunnel start / /console are live.

Commands

Command Description
/web status Is the web UI up? (port + PID)
/web start Background-start the web UI (node <dshBin> web --port <webPort>)
/web stop Stop the web UI process
/web restart Restart it
/tunnel status Is the SSH tunnel up?
/tunnel start Start the SSH tunnel (needs tunnelHost)
/tunnel stop Stop the tunnel
/ask <问题> One-shot question through the headless profile (timeout-bounded)
/console Launch the console TUI (needs consoleCommand)

Configuration

All keys carry sensible defaults; set them in the profile's cordis.patch.yml (or a --patch overlay), overriding the row this bundle adds:

- id: dsh-console
  config:
    webPort: 3080            # dsh web UI port
    dshBin: ''               # path to apps/cli/lib/bin.js; empty = auto-detect
    tunnelHost: '192.168.1.100'
    tunnelUser: 'root'
    tunnelKey: 'C:\\Users\\you\\.ssh\\id_rsa'
    tunnelLocalPort: 3081
    tunnelRemotePort: 3080
    askTimeout: 150
    consoleCommand: 'python C:\\tools\\dsh-tui\\main.py'
Key Default Meaning
webPort 3080 The dsh web UI listens on 127.0.0.1:3080 by default; /web start spawns it there.
dshBin auto Absolute path to your checkout's apps/cli/lib/bin.js. Empty = detected from the running process (process.argv[1]), so a from-source dsh usually needs no config.
tunnelHost '' SSH server host. Empty disables /tunnel start.
tunnelUser root SSH user on the server.
tunnelKey '' Absolute path to your SSH private key (-i). Omit for agent/other auth.
tunnelLocalPort 3081 Local listen port of the tunnel (127.0.0.1:3081).
tunnelRemotePort 3080 Remote port the tunnel forwards to (127.0.0.1:3080 on the server).
askTimeout 150 Seconds before /ask is killed.
consoleCommand '' Shell command launching your console TUI.

How the tunnel is wired

your machine                     SSH server (tunnelHost)
127.0.0.1:3081  ──ssh -L──▶  127.0.0.1:3080
   ▲                               ▲
   │  /tunnel start binds here     │  dsh web runs here (or any service)

/tunnel start runs ssh -N -L <tunnelLocalPort>:127.0.0.1:<tunnelRemotePort> <tunnelUser>@<tunnelHost> (with -i <tunnelKey> when set) as a detached process. /tunnel stop finds and kills the listener on tunnelLocalPort.

Typical setups

  • Local launcher (CLI/headless profile) — manage the web UI from a terminal: /web start → open http://127.0.0.1:3080; /web stop → stop it.
  • Remote web (this machine reaches another host) — point tunnelHost at the remote, browse http://127.0.0.1:<tunnelLocalPort>.
  • In the web profile itself — /web status and /tunnel status are safe; /web stop|restart kill the process serving the current UI — manage deliberately.

Security notes

  • /web stop / /web restart kill the process serving the current UI when run from the web profile.
  • /tunnel start runs ssh with your configured key — only configure keys from sources you trust.
  • /ask runs the headless profile and consumes model quota; results are rendered by the command plane and never enter model history.

Development

npm test          # node test of the backend primitives (read-only)
pnpm pack         # build the installable tarball

The bundle has no build step: plain ESM, ships index.js + lib/ + cordis.patch.yml.