Preface¶
The DeepSeek Harness (DSH) plugin ecosystem supports lightweight extensions to the client. In long conversation scenarios, quickly locating historical instructions and refilling previously sent content are common requirements. The dsh-message-jump plugin addresses these two pain points by providing a floating navigation rail and terminal-style keyboard history navigation in the conversation area.
This plugin is maintained by TiChuXiXi and licensed under the MIT license. It is a package that declares both dsh.bundle.patch (host layer) and dsh.client (browser layer), aiming to improve message browsing and input efficiency on the web without relying on private interfaces.
Feature Overview¶
Instruction Navigation Rail¶
A persistent floating navigation rail in Codex timeline style remains at the left or right edge of the conversation area:
- Scroll-linked positioning: Each sent user instruction corresponds to a tick mark. The dark tick mark represents the instruction currently at the top of the viewport and updates in real time as you scroll.
- Hover preview: Hovering the mouse over a tick mark produces a width-transition ripple effect and shows a preview of the instruction content beside it.
- Click to jump: Clicking a tick mark smoothly scrolls to the corresponding message (stopping 16px from the top) and flashes a highlight.
- Full history coverage: Reads the complete local session event log, covering all user instructions. Even for history sections not yet loaded in the chat view, tick marks are displayed in a “ghost state”. Clicking an unloaded tick mark automatically triggers “Load earlier” until that instruction enters the viewport.
- Position configurable: In Settings → General, switch “Instruction Navigation Rail Position” (left/right), and the choice is persisted to
localStorage.
History Message Navigation¶
When the message input box is focused, use the keyboard ↑/↓ keys to quickly refill historical instructions:
- Terminal-style interaction: Press ↑ to go back and ↓ to go forward.
- Draft protection: The content in the input box before entering navigation is stashed. When exiting—by pressing Esc or by pressing ↓ after reaching the latest item—it is fully restored. Typing directly during navigation automatically exits navigation mode.
- Smart yielding: When the input box is busy, read-only, an input method is active, or a popup menu is open, the arrow keys are not hijacked, and the original interaction is unaffected.
- Status hint: During navigation, a hint bar above the input box displays
History messages ↑↓ n/m · Esc to exit.
Installation¶
Install the plugin using the official command:
dsh plugin --profile web add dsh-message-jump
After installation, restart dsh web to take effect.
Usage¶
Instruction Navigation Rail¶
- Open any conversation; the navigation rail is displayed by default on the right edge of the conversation area.
- Scroll the chat and observe the dark tick mark indicating the current instruction.
- Hover over a tick mark to view the content preview, or click a tick mark to jump to it.
- In Settings, switch “Instruction Navigation Rail Position” to the left side.
History Message Navigation¶
- Focus the message input box.
- Press ↑ to refill the most recently sent content, then continue pressing ↑ or ↓ to browse history.
- Press Esc or, after reaching the latest item, continue pressing ↓ to restore the draft.
- Typing directly during navigation exits the mode and allows editing to begin.
How It Works¶
The plugin’s data and positioning do not rely on private interfaces; they reuse the host’s existing components and data sources:
- Data source: List data comes from the session snapshot
ConversationSnapshot.chat(the same source asuseSession) and is subscribed throughsessions.binding(id).session. - Complete history: Uses the package-private RPC
msgjump.fullHistoryto callctx.sessionQuery.readSession(sessionId)to retrieve the complete local log. - Component mounting: The browser layer registers the floating navigation rail through
shell.overlay, registers the position setting throughsettings.general.item, and registers the history navigation hint bar throughconversation.input.dock. - Scrolling mechanism: Reuses the
data-chat-anchor-keyanchor mechanism of the DSH chat view and calculates the floating position using thebounding rectof the[data-conversation-scroll]container.
Customization¶
The plugin’s core logic is located in lib/client.js. Modify this file and restart dsh web to adjust styles and behavior:
- Spacing and size:
RAIL_PAD(edge padding),BAR_W(default tick bar width),BAR_MAX_W(maximum width),BAR_H(bar height),BAR_GAP(spacing between bars). - Visual effect: The decay radius for the hover “width ripple” (the denominator in
1 - d / 3withinbarWidth). - Content filtering: In
collectItemsandcollectHistory, thekindcheck can be relaxed to decide whether to includecontextinjected messages.
Closing¶
dsh-message-jump provides DSH users with a concrete solution for managing long conversations through a Codex-style navigation rail and terminal-style keyboard navigation. If you want to view the source code or provide feedback, visit the GitHub repository.