Pular para o conteúdo principal
Y

dsh-split-screen

yeyeyeyeshifu/dsh-split-screen

Split-screen workspace for the DeepSeek Harness web GUI - chat with several agents side by side in panes that look and behave exactly like the stock conversation: drag-to-split, live sessions with queued messages and in-pane ask_user/approval cards, per-pane view tabs (Chat/Trajectory/plugin views), a compact TUI composer mode (Alt+T) and pane-focus shortcuts. Requires DSH 0.1.5+.

Instalar

dsh plugin --profile web add github:yeyeyeyeshifu/dsh-split-screen

README

dsh-split-screen

Split-screen workspace for the DeepSeek Harness web GUI — chat with several agents side by side, in panes that look and behave exactly like the stock DeepSeek conversation.

Keyboard shortcuts

KeysAction
Alt+TToggle the focused pane between the full composer and the compact TUI line
Alt+Shift+← / → / ↑ / ↓Move keyboard focus to the neighboring pane

Everything else is mouse-driven and works exactly like the stock DeepSeek UI. On macOS the same chords run with ⌥ Option in place of Alt (Option+T, Option+Shift+Arrows).

What it does

  • Always on — the split workspace simply is the conversation area: no button to press, no mode to enter or exit. One conversation renders without any extra chrome and looks exactly like the stock view.
  • Split any pane — drag a conversation from the DeepSeek sidebar onto a pane edge (left / right / top / bottom) to split it there, or drop it in the center to swap that pane's conversation. A translucent ghost previews the split position while you drag.
  • Native look, light & dark — panes render with the stock DeepSeek styles, theme variables and primitives: user bubbles, Think rows, tool rows, the streaming shimmer, the rounded composer card.
  • Fully interactive panes — every pane is a live session: streaming responses, Enter to send, Shift+Enter for newline, /commands, Stop while running, queued messages, todos, and image paste & drag-drop attachments.
  • Questions and approvals land in the pane — when an agent calls ask_user_question (or a plan review / approval prompt opens), the pane's composer is taken over by the native question card, exactly like the stock view: options, multi-select, free-text answers, Skip and Cancel all work in place. The pending interaction is read from the same uiSession source the stock conversation uses, so every pane answers its own session's request.
  • Every view tab works inside the pane — Chat, Trajectory and any plugin view (for example the dsh-context Context dashboard) switch in place, with the view's own detail slots (conversation.trajectory.images, inspect panes) routed into that pane. The roster is read from the slot ledger, so a view registered after the pane mounted still shows up. On a brand-new session the stock header hides itself until the first message — the view tabs come back with it.
  • Two composer styles — a full composer, or a compact terminal-style TUI line with the same width and button positions (Alt+T). The TUI line carries the composer card's own type scale: its font size and line height are measured from the live card (--dsh-content-font-size and the matching line height, 14px/24px by default) instead of inheriting the pane's 16px, its left inset matches the card's 14px text inset, and its caret uses the stock token — so Alt+T swaps the input without changing the reader's typography.
  • Neat by default — queued messages keep the stock dock geometry: the queued-messages panel is card − 48px wide (minus its own 8px inset, as QueueDock.module.css defines it) and centered on the input card it merges into, so the queue, the todo strip and the stats line all share the exact width of the input box. The card geometry is measured from the live composer editor (dsh 0.1.5 renders it as a Lexical contenteditable).
  • Persists — the split layout survives page reloads.

Getting started

  1. Install the plugin and restart dsh web — the split workspace is on immediately. With a single conversation open you just see the stock view.
  2. Drag a conversation from the sidebar onto a pane edge to split.
  3. Click a conversation in the sidebar to load it into the focused pane.
  4. Use the pane header's split buttons (⬎ / ⬏) for more panes, ✕ to close, and drag the dividers between panes to resize.
  5. Press Alt+T to try the compact TUI composer.
  • dsh-session-hotkeys — keyboard-first control for the DeepSeek Harness: Esc returns focus to the conversation, Alt+Enter steers or queues while an agent runs, the model picker is keyboard-reachable, and every shortcut is rebindable in a visual panel. Works great inside split-screen panes.
  • dsh-result-only-view — a compact results-only reading mode for running sessions: less visual noise while several agents work side by side in your panes.

Install

dsh plugin --profile web add dsh-split-screen

then restart dsh web.

How it works

  • Client-only plugin: the host half is an empty loader entry; everything runs in the browser on public service surfaces (sessions, slots, conversation), plus a small per-session staging bridge (session.open()).
  • Panes stage real sessions through the sessions service (history window + live event stream), so every pane is a first-class conversation.
  • Injects: @deepseek-ai/dsh-client-ui-layout (owner of the shell.overlay slot the workspace mounts into), @deepseek-ai/dsh-client-locale, @deepseek-ai/dsh-client-ui-primitives.
  • The stock DeepSeek sidebar is deliberately untouched — it stays the single source of truth for conversations.
  • Transcripts reuse the ui-conversation CSS module rules (copied verbatim under dsv- class names) so a harness upgrade cannot silently break the look.

Compatibility

  • Requires DSH 0.1.5 or newer (verified end-to-end on @deepseek-ai/dsh@0.1.5-rc.2, Windows). The pane composer re-hosts the 0.1.5 Lexical editor's slot entries and reads the uiSession service (introduced by the 0.1.5 client split) for in-pane question / approval cards, so the plugin does not run on 0.1.1-rc.2 or earlier cores.

License

MIT

Plugins relacionados