Introduction¶
When running long sessions with DeepSeek Harness (hereinafter referred to as DSH), you often need to go back to an earlier round. With many rounds, scrolling up and down in Chat is easy to get lost in, and switching to the Trajectory tab requires finding the location again. Moreover, old rounds may not have been loaded into Chat yet, so scrolling won’t reach them. DSH’s philosophy is “everything is a plugin,” and this kind of interface layer supplementation is perfect for community plugins to handle.
Below is an introduction to karmiy/dsh-session-nav, a DSH Web plugin that provides Codex-style navigation on the left side of the session.
What is it¶
Maintained by karmiy and licensed under MIT, dsh-session-nav positions itself as a “Codex-style session navigation plugin for DeepSeek Harness Web.” It adds a navigation bar to the left of the session: each user / steering / slash command round corresponds to a dash, and clicking it jumps to that specific round.
It is a pure overlay plugin: it does not replace the Chat, sidebar, or Trajectory tab; it simply overlays display on the left edge of the session column.
Core Features¶
Idle State¶
When idle, a compact stack of dashes appears on the left edge of the session column, with each corresponding to a user / steering / slash command round.
Hover Preview¶
On hover, neighboring dashes elongate in the form of a delayed wave, while displaying a tooltip bubble, optional “Worked for” duration, and optional “Edited N files +X -Y” file cards.
Jump¶
Clicking a dash, or using ↑ / ↓ on the navigation bar, scrolls the corresponding round into view.
Full Logs¶
Even if Chat hasn’t loaded old rounds yet, they are listed in session.history. When clicking an old round, the plugin calls loadOlder page by page until that entry exists, then scrolls to it.
Toggle¶
There is a checkmark button in the session header to toggle the navigation bar, and the preference is stored in localStorage as dsh-session-nav:enabled.
Layout¶
The navigation bar is vertically centered and takes up a maximum of 66% of the session column height; if the stack is too long, it scrolls internally within the navigation bar.
Data Source¶
- “Worked for” is based on
turn/start…turn/end, displayed in real-time during the round. - File cards come from Diff / edit tool cards within the round, counted by
locationsplus the line counts ofoldText/newText.
Installation and Enablement¶
-
Confirm DSH is idle. Adding a plugin rebuilds the web profile and interrupts running tasks; do not run
dsh plugin addon a profile with a running task. -
Execute the installation command:
dsh plugin --profile web add github:karmiy/dsh-session-nav
- If the first add fails with an allowBuilds prompt—Git-hosted plugins are built during installation, and pnpm ≥10 blocks this
preparescript—write the key from the prompt into~/.dsh/profiles/web/pnpm-workspace.yaml:
allowBuilds:
dsh-session-nav: true
- Repeat the same add command, then restart the web profile.
After the steps above, the navigation bar will appear on the left edge of the session column.
Fixed Versions and Local Installation¶
If you don’t want future pushes to change the actual running content, you can install with a fixed version:
dsh plugin --profile web add github:karmiy/dsh-session-nav#v0.1.0
When using a local checkout, first run pnpm install in the checkout directory, then install using link: with an absolute path:
dsh plugin --profile web add link:/absolute/path/to/dsh-session-nav
Development¶
The development environment requires Node ^22.19 || >=24 (engines is ^22.19.0 || >=24.0.0), and packageManager is fixed to pnpm@10.15.0. Common commands:
pnpm install
pnpm test
pnpm typecheck
pnpm build
Here, typecheck and build require DeepSeek Harness to be checked out in the sibling directory ../deepseek-harness. The prepare script only runs tsdown and does not perform typecheck, so dsh plugin add github:… can complete the build even on machines without the harness source code.
Applicable Scenarios and Notes¶
Suitable for people running multi-round long sessions in DSH Web who need to frequently review or jump to a specific round; the benefits are limited if only running a few short rounds.
Two points to note before installation:
- The plugin runs with the permissions of the current dsh process; you should check the plugin source code and license yourself before installing (this plugin is MIT).
- Confirm again that DSH is idle to avoid interrupting running tasks when rebuilding the web profile.
Conclusion¶
dsh-session-nav is very restrained in its approach: it doesn’t move the existing interface, just adds a jumpable round navigation to the left edge of the session, and uses session.history to fill in unloaded old rounds, solving the problem of “not being able to go back to a specific round” in long sessions.
- Community directory: https://www.skillhub.cn/plugins/karmiy/dsh-session-nav
- GitHub repository: https://github.com/karmiy/dsh-session-nav
The directory is an independent community site with no official affiliation to DeepSeek / Hyperbolic.