Skip to content

Commands

The qialike CLI flags, the update and plugin families, and the slash-command panel.

qialike has two command surfaces: flags you pass to the program, and slash commands you type into the composer once it is running.

CLI flags

Terminal window
qialike # start a NEW session on the hero screen (never auto-resumes)
qialike resume # continue the newest session in this directory
qialike --workspace ~/proj # operate in ~/proj (its own sessions)
qialike --resume <sessionId> # resume a specific persisted session
qialike --model deepseek-flash # pick a model (DeepSeek V4.1 Flash)
qialike --help
FlagMeaning
(none)Start a new session and show the hero screen. A bare launch never auto-resumes.
resumeContinue the most recent session in the current directory and open the conversation view directly.
--workspace <dir>The directory the agent operates in. Defaults to the invoking directory; each workspace keeps its own sessions.
--resume <sessionId>Open one specific persisted session. Always wins over resume.
--model <model>Override the model for this run, e.g. deepseek-flash (DeepSeek V4.1 Flash).
--helpPrint the width-aware help text and exit without binding a terminal.
--dump-configPrint the composed profile layers (embedded layer + your own) and exit.
--no-project-overlayIgnore a repository’s .dsh/tui.cordis.patch.yml for this run.

There are also a few forwarded subcommands:

Terminal window
qialike web [flags] # open the DeepSeek Harness browser UI (needs dsh on PATH)
qialike upgrade [version] # upgrade (see "Updates")
qialike plugin <command> # manage skills and MCP rows (see "Plugins")
qialike uninstall # clear $DSH_HOME (default ~/.dsh, keeps bin/) and the PATH traces

An unknown positional argument fails loud with a hint rather than silently starting a fresh session — qialike resme is an error, not a new session.

qialike web forwards its web flags (--port / --no-open / …) to the installed dsh CLI unchanged; --host 0.0.0.0 is refused outright by the web profile (exposing it to the network is exposing remote code execution), so for remote access use a loopback binding plus an SSH tunnel — see Headless / remote access.

The command needs a dsh CLI on the system: on PATH, or pointed at by $QIALIKE_DSH, at a version no older than the harness embedded in this build. It checks dsh first — when it is missing, or its version differs from the embedded one, a warning prints the matching install command (npm install -g @deepseek-ai/dsh), and on a version difference the command exits without starting the web server.

Updates

An install that can update itself does so automatically: about a second after launch a background child process checks once for a newer release (it never blocks the UI, and failures are silent). Only a patch release is installed silently; a minor or major release is announced in the status line only.

  • What automatic updates require: that something owns the binary — the curl installer’s copy in ~/.dsh/bin (Linux/macOS) or the copy under npm’s global prefix (including Windows). A locally built checkout build and a hand-unpacked binary are never replaced.
  • Turning it off, or switching to notice-only: the qialike-update.auto setting takes true (default — patch releases installed silently), false (no check at all) or "notify" (announce only, never install). QIALIKE_DISABLE_AUTOUPDATE=1 disables it globally, and QIALIKE_ALWAYS_NOTIFY_UPDATE=1 forces notice-only.
  • Updating by hand:
Terminal window
qialike upgrade # move to the newest release
qialike upgrade <version> # install a specific one (v-prefix accepted)
qialike upgrade --check # report only, install nothing

/upgrade does the same from inside the TUI. Whether these can actually install depends on who owns the binary, not on the platform: an npm copy is replaced by npm (on Windows too), the ~/.dsh/bin copy by the installer (POSIX only), and a copy nobody owns is refused with a suggestion to reinstall through the installer. See Updates for the full story.

On Windows most installs update by hand only: the installer is bash and a running .exe cannot be replaced, so the installer’s copies and hand-unpacked ones only check — qialike upgrade --check reports the version and prints the download links, and updating means replacing the file by hand: download the new .zip, quit qialike, replace qialike.exe. An npm-installed copy is the exception (it installs patches automatically and qialike upgrade hands the job to npm) — see Updates → Updating, by how you installed.

See Config → Data and responsibility for the harness telemetry that shares these outbound requests.

Plugins

Everything in qialike is a plugin — the interface itself included. Extensions therefore need no rebuild, and both channels take plain data files:

  • Skills: drop a skill bundle at $DSH_HOME/skills/<name>/SKILL.md (or a project’s .dsh/skills/, .agents/skills/, or ~/.agents/skills/) and the harness discovers it — there is no switch to flip.
  • MCP servers: their tools then appear to the model as mcp__<name>__<tool>.

qialike plugin does that file work for you, so there is no YAML to hand-write:

Terminal window
qialike plugin list [--available] # layers and rows; --available also lists every bundled plugin
qialike plugin add-mcp <name> <command> [args...] [--project]
qialike plugin remove-mcp <name> [--project]
qialike plugin trust-overlay # trust the repository overlay (see below)

--project targets the repository-level overlay (<repo>/.dsh/tui.cordis.patch.yml) rather than your personal one. Enabling or disabling a built-in row needs no command either: write a row without insert containing disabled: true and it overrides that row by id. qialike --dump-config prints the composed layers and which layer each plugin came from.

Slash commands

Type / in the composer to open the autocomplete palette. ↑/↓ move the highlight, Enter runs the selected command, and Esc dismisses the palette. The seven panel commands are:

CommandHintWhat it does
/helpshow this helpOpens the full-screen help dialog (keybinds and command list). Esc or Ctrl+C closes it.
/modelsmanage models and the API keyOpens the model manager: provider list, model list, and — for models that declare it — a reasoning-effort step.
/compactcompact the session historyCompacts the current session’s older history into a summary through the harness compaction seam.
/clearclear the transcriptClears the on-screen transcript. The durable session log is untouched.
/newstart a new session (the current one is saved)Cancels the current turn, creates a fresh agent in place, and keeps the old conversation reachable.
/sessionslist, filter, resume or delete sessionsOpens the session manager for the current directory.
/exitquit qialikeLeaves the TUI and restores the terminal.

What /compact prints

/compact takes no arguments — anything after the command is rejected with Usage: /compact (no arguments). On success it reports Compacted N history items (~X tokens).; when there is nothing to compact it reports No compactable history yet.; otherwise it prints the harness’s classified failure text (busy / cancelled / changed / summary / commit / persistence).

Other panels

The TUI registers a few more commands that are documented in Keybinds and the harness docs:

CommandHint
/thinkshow/hide details under Think and tool rows (reasoning + tool output)
/themeopen the colour-scheme picker (bare) or set a scheme / role colour
/exportexport the session as JSON or Markdown
/sidebarcycle the right-hand Steps panel: auto → on → off
/planenter or leave plan mode
/goalset, view, pause, resume or clear the session goal
/upgradecheck for, or install, a newer release (see Updates)