DSH sessions are essentially linearly scrolling conversation logs. Users can usually only scroll downward, making it difficult to quickly locate a historical exchange or continue/branch from a mid-point node. dsh-trail-plugin adds a “Historical Index” navigation layer to DSH, folding the event log into an interactive node tree.
What It Is¶
Maintained by MemoryIt, this plugin adds an indexable, navigable, and branchable navigation layer for linear conversation logs. It persists the index through DSH’s official projection channel ($DSH_HOME/storages/session_projcache.json), so it can be restored after a restart and is not limited by the number of messages already loaded in the conversation window.
Core Features¶
- Inline jump: Click any node, and the chat feed automatically scrolls to that turn.
- Continue (fork): Fork a new sub-session from any node and continue without interrupting the current session.
- Branch switching: Nodes with branches show a badge; expand the dropdown menu to switch branches with one click.
- Resizable and collapsible: The left panel width is adjustable, and its collapsed state is remembered.
Installation and Enablement¶
Prerequisites¶
- DSH (with
dshCLI available and the profile mechanism working normally) - Node.js ≥ 20
Installation Command¶
Install from npm using the officially recommended method:
dsh plugin --profile web add dsh-trail-plugin
Replace
--profilewith the profile name you actually use (the default GUI profile isweb).Note: Changes at the bundle layer require restarting the entire DSH process to take effect. Please restart DSH after installation.
Verify Installation¶
After restarting, check the following two points:
1. The startup log contains [I] dsh-trail [dsh-trail] hello world from dsh-trail-plugin (host).
2. A “Historical Index” left panel appears on the left side of the GUI session list.
Typical Usage¶
After installing and restarting, open any session:
-
Inline jump
Click any node row, and the chat feed automatically scrolls to that conversation turn. If the target has not been loaded, earlier content is loaded automatically; if the target has no standalone message bubble, the view locates nearby content. -
Continue (fork)
Hover the mouse over a node row, then click the “Continue” button that appears at the end of the row to fork a new sub-session from that node and open it automatically. -
Branch switching
Node rows with branches display a numeric badge at the beginning. Click it to expand the shared-session dropdown, view sub-session summaries, and switch between them. -
Resizing and collapsing
Drag the right edge of the left panel to adjust its width (range 240–480px). Click<-in the upper-right corner of the left panel to collapse it; after collapsing, click->in the upper-left corner of the conversation area to expand it.
Configuration¶
Plugin configuration can be overridden through the user-level patch for the profile. Edit $DSH_HOME/profiles/<name>/cordis.patch.yml:
- id: dsh-trail-plugin
name: dsh-trail-plugin
config:
enabled: true
label: my-trail
| Field | Default | Description |
|---|---|---|
enabled |
true |
Whether to enable the plugin |
label |
dsh-trail |
Prefix for logs and identifiers |
Notes¶
- Data safety: The plugin reads event logs only. Its write path uses only the official
sessions.forkinterface to create new sessions and does not modify your session data. - Restart required: After making changes at the bundle layer (for example, modifying code or configuration), restart the DSH process.
- Collapsed state: If the left panel disappears after refreshing, it is likely collapsed. Click
->in the upper-left corner of the conversation area to expand it. - View limitation: If clicking a jump shows “Chat view is not active”, manually switch back to the “Conversation” view.
- Legacy session compatibility: Only extremely old sessions that have only
session.l.zstdcompressed logs are not backfilled. Sessions withlog.jsonlare all backfilled.
Conclusion¶
dsh-trail-plugin solves the difficulty of jumping and branching in linear logs by adding a sidebar navigation layer to DSH. It is suitable for developers who need to quickly locate context in complex, long conversations or conduct multi-branch experiments.