Preface

DSH’s plugin ecosystem emphasizes “everything is a plugin”. In multi-session workflows, developers often encounter issues not only with single-turn performance but also with the sessions themselves: cold sessions need to be remounted, archived sessions need temporary restoration, deletion requires explicit confirmation, and a session needs to hand off tasks or context to another session.

dsh-session-nexus is a non-official DeepSeek Harness community plugin, maintained by qiushi-dev, and is licensed under the MIT license. It provides session lifecycle control and cross-session messaging capabilities in a single installation, targeting DSH agent developers. It is a community plugin and has not been reviewed or endorsed by DeepSeek; the community directory is an independent site and is not equivalent to the DeepSeek / FlashForward official app store.

What is it

The positioning of dsh-session-nexus is to make DSH sessions actionable, addressable objects:

  • Manage session lifecycle via slash commands.
  • Deliver messages to other sessions via commands and model tools.
  • Get titles, timelines, and recent message summaries of other sessions via model tools.
  • Provide enhanced display of session IDs and /address results in the Web UI.

Below is an introduction to its core capabilities, installation commands, typical usage, and limitations.

Core Features

Session Lifecycle Control

  • /resume <id>: Explicitly remount a cold session by id, without sending a message; parses preset from logs.
  • /unarchive <id>: Best-effort unarchiving.
  • /rm-session <id> --yes: Two-step deletion fallback, disabled by default, requires lifecycle.allowDelete: true to enable.

Cross-session Messaging

  • /send-to <address> <message>: Wakeup delivery, becomes the target’s next turn; cold sessions are auto-resumed.
  • /notify <address> <message>: Quiet delivery, enters the target’s next model context without waking it.
  • /address [address]: Outputs the canonical address of a session, including URI and mention, for copying; no arguments means current session.
  • session_send_message: Model tool for delivering messages to other sessions.
  • session_overview: Model tool to get session title, timeline, and recent message summary.

Address Format

Session addresses support the following forms:

  • composer mention
  • dsh-session: URI
  • session id
  • Title, etc.

Delivery Presentation

Delivery presentation supports two modes:

  • bubble
  • context

Web UI Enhancements

  • Session header displays session ID chip.
  • /address results are displayed as cards for easy viewing and copying.

Security Limits

The plugin adds the following restrictions to cross-session messaging:

  • Sender attribution.
  • Untrusted content warnings.
  • Reject self-delivery.
  • Message length limit: maxMessageChars is 16384.
  • Rate limit: Default 10 per /300 seconds.

Installation and Enabling

Use the command below to install the plugin:

dsh plugin --profile web add dsh-session-nexus

After installation, the plugin provides the slash commands and model tools listed above. By default, mailbox.enableTool: true, and the model will gain the session_send_message tool.

If you need to enable session deletion capabilities later, you must explicitly enable it:

lifecycle:
  allowDelete: true

The following configuration example shows common configuration options:

- id: session-nexus
  name: dsh-session-nexus
  config:
    lifecycle:
      allowDelete: false
    mailbox:
      enableTool: true
      maxMessageChars: 16384
      presentation: bubble
      rateLimitCount: 10
      rateLimitWindowSeconds: 300

Note that presentation can be set to bubble or context.

Typical Usage

  1. Remount a cold session:
/resume <id>
  1. Try to unarchive:
/unarchive <id>
  1. Send a wake-up message to another session:
/send-to dsh-session:... continue processing failed cases
  1. Inject context into the target session only, without triggering immediate response:
/notify dsh-session:... the reason for the decision here is A, do not repeat troubleshooting B in the future
  1. Copy the canonical address of the current session:
/address
  1. Let the model view the title, timeline, and recent message summary of another session:

Use the session_overview model tool.

Use Cases

Suitable for the following workflows:

  • Multi-session parallelism, requiring unified mounting, unarchiving, or deletion of sessions.
  • One session acting as a coordinator to send tasks or context to other sessions.
  • Models needing to get titles, timelines, and recent message summaries of other sessions.
  • Quickly viewing session IDs or copying session addresses in the Web UI.

Notes

  • This is a non-official community plugin and has not been reviewed or endorsed by DeepSeek.
  • The plugin runs with the current dsh process permissions. You should check the source code, license, and configuration items before installation to ensure that the commands, deletion, and messaging capabilities fit your risk boundaries.
  • /rm-session is disabled by default. It only removes the JSONL session directory; derived indexes, caches, and statistics require lazy loading reconciliation, and correct deletion depends on the upstream delete operation.
  • /unarchive is limited by the workspace registry private memory cache; subsequent workspace writes may be rolled back before a restart.
  • Quiet delivery to cold sessions from the plugin is not feasible and requires upstream mailbox seam support.
  • The sidebar session row does not have a copy address menu item; you need to use /address or the composer mention picker instead.
  • License is MIT.

Links

  • GitHub: https://github.com/qiushi-dev/dsh-session-nexus
  • Directory Page: https://www.skillhub.cn/plugins/qiushi-dev/dsh-session-nexus