dsh-oc-tui

uiboot failsnpmLGPL-3.0-or-later

An opencode-inspired terminal UI for DeepSeek Harness that boots as a dsh profile app plugin, with a session sidebar, streaming chat, markdown tool cards, todo lists, slash-command suggestions, a telemetry footer with a context meter and inline approval prompts.

下载量 / Downloads
1,557
依赖体积 / node_modules
30.14 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-oc-tui

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-oc-tui

0.2.0 is the visual-experience release (on npm's latest channel): real image rendering, native Mermaid art, and full Markdown run through this plugin's own terminal engine. It needed no chafa, mmdc or mdcat wrapper — the rendering stack is pure npm (sharp decodes and scales, lovely-mermaid lays out Mermaid) — and which dsh (the harness) builds it serves is spelled out in the compatibility note below. If you have suggestions for specific visual features, please share them in the original issue thread or open a new issue with a title containing Visual Experience Suggestion

_Thank you for your support of the dsh-oc-tui plugin!_


A terminal UI for DeepSeek Harness — an opencode-inspired chat client that boots inside the dsh process as a profile app plugin.

![npm latest](https://www.npmjs.com/package/dsh-oc-tui)

![awesome-dsh-plugin](https://awesome-dsh-plugin.com/zh/p/rayafriandion/dsh-oc-tui/)

![License: LGPL-3.0-or-later](LICENSE)

![Node](https://nodejs.org)

dsh-oc-tui renders the harness's durable event stream in your terminal — streaming replies, tool activity, todo lists, thinking blocks — and routes what you type back into the agent. Model routing, tool execution, approvals, commands, durable sessions, and credentials stay owned by DSH; this package owns terminal input and presentation.

Published on npm as dsh-oc-tui and listed in the awesome-dsh-plugin marketplace.

中文文档:[docs/用户手册.md](docs/用户手册.md)

Table of contents

  • [Features](#features)
  • [Requirements](#requirements)
  • [Install](#install)
  • [Quick start](#quick-start)
  • [Usage](#usage)
  • [Keybindings](#keybindings)
  • [Slash commands](#slash-commands)
  • [Interactive prompts](#interactive-prompts)
  • [Thinking intensity](#thinking-intensity)
  • [Session stats and the context meter](#session-stats-and-the-context-meter)
  • [The status rail](#the-status-rail)
  • [Settings](#settings)
  • [Language](#language)
  • [MCP servers](#mcp-servers)
  • [In-app updates](#in-app-updates)
  • [How it works](#how-it-works)
  • [@dsh-std interop](#dsh-std-interop)
  • [Development](#development)
  • [Troubleshooting](#troubleshooting)
  • [Known limitations](#known-limitations)
  • [Layout](#layout)
  • [License](#license)

Features

Durable sessions · Create, resume, list, and delete sessions; the transcript is rebuilt from the persisted event log, so a resumed session looks exactly like the one you left.

Live streaming · Assistant text and reasoning stream token by token; thinking renders in its own collapsible box that stays collapsed while streaming.

Real image rendering · Images in the transcript render as real pixels — kitty graphics, iTerm2 inline images, or sixel, probed from the terminal itself (works over SSH), with a truecolor half-block preview on terminals that support no protocol. Pasted images, stored attachments, and markdown images all flow through one pipeline. See [Graphics rendering](#graphics-rendering).

Mermaid diagrams · A `mermaid fence renders as a real diagram through a provider chain — local mmdc if installed, otherwise mermaid.ink (gated by a setting) — into the same image pipeline; offline it degrades to highlighted source.

Full markdown · Tables in rounded boxes, nested and task lists, syntax-highlighted code (190+ languages), and clickable OSC 8 hyperlinks, rendered from markdown-it's CommonMark + GFM token stream.

Flat transcript · No frames around the conversation: your turns open with a brand-blue ❯ pointer and hang under it, the assistant answers as a full-width column of text under its dsh · time label, and every block measures itself in text — so wide runes never push a border out of alignment. The header is one row: brand and session title on the left, the workspace path with its git branch on the right; the model is not repeated there (the status row / rail names it).

Tool activity · One row per tool: a status mark, the action in the tool's own accent (read cyan, run gold, edit light blue, todo mint), and its target. Click the row to expand the full result under a ⎿ gutter.

Interactive questions · The model can pause and ask you — option lists, multi-select, free text, and a scrollable plan review — all inline in the terminal. See [Interactive prompts](#interactive-prompts).

Inline approvals · approval/request prompts are answered with y / n without leaving the UI; the box shows the action and the reason, with room for origin, risk and details when a @dsh-std request carries them.

Session stats · One stats strip above the composer — turns/steps, LLM and tool wall time, average TTFT, decode throughput, cache-hit rate, and billed input/output tokens — folded from durable events. See [Session stats and the context meter](#session-stats-and-the-context-meter).

Stats window · Click the strip or the context meter, or type /stats, for the full session-statistics and token-usage breakdown.

Context meter · Live context occupancy (ctx ▓▓░░ 32K/128K 25%), with the system/tools/messages composition in the same window.

Status rail (wide windows) · From 140 columns a right-hand rail carries the expanded status — model, thinking intensity, context, session figures — plus the session's current goal (/goal) and its subagent activity, scrollable with Shift+↑/↓ or the wheel. Narrow windows keep the bottom status row. See [The status rail](#the-status-rail).

**Thinking intensity

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::9,最后更新 2026-11-01

Links

GitHub · Homepage · npm

Same category