Introduction¶
The longer a DSH session, the more prone it is to losing memory: it is hard to remember which round a requirement was discussed in, which version of code was modified, or how many rounds of testing passed. Once the session page scrolls past the top, this information is lost. Relying on handwritten notes or logging in another Markdown file either cannot keep up with tool calls or fails to capture everything later.
dsh-session-journal is the solution for this scenario: it maintains a session work log in the right sidebar of the DSH Web interface. It summarizes each round of a “turn” into several “work items”. Each item is accompanied by a status, result, open items (remaining issues), and decision records. It also provides an entry point to jump directly from the log to any round of conversation.
What is it¶
dsh-session-journal is a DeepSeek Harness (DSH) Web plugin maintained by Edison-A-N, currently version 0.3.1, with an MIT license. It is positioned as a session-level work log; it does not replace the conversation but extracts facts from the session log, uses a model for summarization, and forms a structured work record in the right sidebar.
It targets developers with long sessions and multi-stage tasks: requirements, research, design, coding, review, fixing, and testing are mixed into one session, and it is necessary to answer questions like “Where are we?”, “What is left to do?”, and “What changed in that round just now?” at any time.
Core Features¶
Current Status Overview: Whether the session is running, the current stage (e.g., Review #2), and a one-line status summary; when the agent stops waiting for user input, a highlighted “Your turn” prompt is displayed. It also displays session totals: number of open items, number of decisions, number of turns, duration, number of files changed and lines changed, and number of passed tests.
Work items: The session’s turns are grouped by purpose rather than in chronological order. Each item is a card displaying status, covered turns, involved files and tests, and the counts of open and decided items. When expanded, you can see the goal, result, remaining items, decisions, and two lists:
- Jump to a turn: A line for each turn, displaying the user’s request in that round and the stage experienced. Clicking it scrolls the chat area to the beginning of that turn (automatically loading earlier history if necessary).
- Changed files: Filename, directory, lines added/deleted, and the stage that touched it. Clicking it previews the file in the sidebar.
Header chip: A small tag next to the session title displaying the current work item and stage. Clicking it opens the log panel.
The language follows DSH’s interface language settings (CN/EN); the summary language is selected separately at the bottom of the panel. It can match the UI language or be forced to Chinese or English.
Installation and Activation¶
The installation command comes from the README. Note the --profile web qualifier:
dsh plugin --profile web add github:Edison-A-N/dsh-session-journal
The plugin comes with a bundle patch (dsh.bundle.patch and cordis.patch.yml) and will load in both the CLI and Web UI Plugins pages in one step. After installation, restart DSH, refresh the page, and open any session. Select Work log in the start page of the right sidebar, or click the chip next to the session title.
Environment requirements: DSH >=0.2.2-alpha.2 <0.3.0-0 (0.2.x and pre-release versions), Node >=22.19. The current directory page shows 0 stars.
Typical Usage¶
- Automatic maintenance of the log: As long as a round of the session ends, the plugin summarizes this round in the background and re-groups the work items; the panel checks the open session every few seconds until there is nothing to do. Failed summaries retry once per minute, up to three times; if there is no progress, it gives up after five minutes.
- View and trace: Expand the work item card to see the goal, result, open items, and decisions; click a line in “Jump to a turn” to return the chat area to that round; click a file in “Changed files” to preview it in the sidebar.
- Switch summary language: Select it at the bottom of the panel. The setting is cached per session, and switching back and forth takes effect immediately.
The backend model defaults to using the provider and model configured for that session. The summary call is an independent request and does not touch the session or its cache. If you want to globally fix a cheaper model, set the following in the DSH startup environment (e.g., $DSH_HOME/.env):
SESSION_JOURNAL_PROVIDER=<provider id>
SESSION_JOURNAL_MODEL=<model id>
SESSION_JOURNAL_EFFORT=low # reasoning effort; "default" lets the router decide
# SESSION_JOURNAL_MODEL=off # no model call, only rules
Setting only one of them does not take effect; you must restart DSH after changing. When there is no model, the plugin still works: phases are determined by rules (editing, testing, review), and the entire session is merged into one work item. When displaying a long session with no cache for the first time, summarizing round by round takes one or two minutes, during which the panel displays rule-based stages.
Applicable Scenarios and Notes¶
Suitable for: DSH sessions that are long, multi-stage, and need to trace “what was done in which round” after the fact; developers who want a near-real-time work panel in the right sidebar.
Explain the implementation details first, then decide whether to use it. Work item grouping and summarization are done by the model; the grouping results may not conform to human intuition (a release step might be a separate item). Open items may be one turn behind during the turn execution and catch up only after the turn ends and the summary is generated. Jumping to a turn relies on the internal UI of the chat view (clicking the turn rail on the right), not a public API of DSH—if DSH updates change its DOM, the click may fail or show an error, but other functions are not affected. Additionally, when the chat column width is less than 900px, the rail is hidden by default, and the plugin only renders temporarily upon clicking; the current main area must be the Chat view, otherwise the plugin will prompt you to switch back first.
It is recommended to check the source code before uninstalling or installing. The plugin runs with the permissions of the current DSH process, performing file read/write and model calls; before installing, check the repository source code, README, and the cordis.patch.yml patch content to confirm the license is MIT and include it in the internal license review process.
Conclusion¶
The value of dsh-session-journal lies in turning the question of “where are we in the chat” from a memory problem into a panel problem: facts come from the session log, the model only does summarization, and the summary is cached per session and language, requiring only one model call per turn. If you manage long DSH sessions and often need to trace a specific round, it is worth installing to try it out in a real project.
- Directory page: https://www.skillhub.cn/plugins/Edison-A-N/dsh-session-journal
- GitHub: https://github.com/Edison-A-N/dsh-session-journal