Back to home@CH4ACKO3

bites-the-dsh

Read-only, scriptable session playback for the DeepSeek Harness WebUI

Stars
0
Language
TypeScript
Created
Aug 19, 2026
Updated
Aug 20, 2026

Introduction

Bites the DSH

Read-only, scriptable session playback for the DeepSeek Harness WebUI.

https://github.com/user-attachments/assets/3c9dfdcf-a454-4750-9edf-76771ed5a9a6

The demo shows Bites the DSH together with dsh-turn-fold.

The plugin turns the native conversation into a replay view without opening a separate panel. A single native session-header control enters replay. While replay is active, the conversation is fully read-only: the native composer and session-changing interactions are blocked, while UI and scripts may move time without mutating the source session.

Current implementation

  • Native session-header entry and compact playback controls.
  • Pause, forward play, reverse play, event stepping, speed selection, adjustable idle-gap compression, and direct event/turn/time seeking.
  • Optional simulated typing previews the next direct user message in the native read-only composer without touching its live draft.
  • A per-session observable controller exposed as ctx.sessionPlayback for time-only scripting.
  • Historical projection through DSH's native ChatView; the source session and live head continue independently.
  • Historical timelines expose playbackClock: { kind: 'historical', time: cursorTime } so projection consumers never treat an open historical turn as live wall-clock work.
  • Native composer, model, stop, branch, and assistant write actions are disabled during replay; viewing controls remain interactive.
  • English and Chinese labels using DSH theme tokens, without a separate panel.

The current compatibility target is DSH 0.1.0-rc.8. Harmony selector drift fails the automated test instead of silently changing the wrong component.

Install

dsh plugin --profile web add @ch4acko3/bites-the-dsh
dsh harmony status --profile web

All four Bites the DSH patches should report bound. Reload the WebUI, open a session, then use Replay session in the native session header.

Script control

Other DSH plugins can use the same per-session clock through the provided Cordis service:

const playback = ctx.sessionPlayback

playback.enter(sessionId)
playback.seekTime(sessionId, Date.parse('2026-08-20T12:00:00Z'))
playback.play(sessionId, 1)
playback.pause(sessionId)
playback.exit(sessionId)

The service also supports event and turn seeking, reverse playback, rate and idle-gap settings, subscriptions, and position reads. It deliberately exposes no operation that mutates the source session.

Development

Requires Node.js ^22.22.3 || >=24.11.1 and pnpm 11.

pnpm install
pnpm check

CI/CD

Every push to main and every pull request runs pnpm check and verifies the npm package contents. Publishing a GitHub Release whose tag matches v<package.json version> publishes the public package to npm through Trusted Publishing (OIDC), with automatic provenance and no npm token stored in GitHub.

License

MIT