Introduction

The plugin ecosystem of DeepSeek Harness (DSH) allows developers to extend its functionality. When building complex workflows or developing multi-turn conversations, it is often necessary to pass context between different sessions, send instructions, or read history. Manual copy and paste is not only inefficient but also error-prone. dsh-session-tools aims to solve this pain point by providing a standard set of session management tools.

Plugin Overview

This is a web-based plugin maintained by Unintendedz. It mainly provides four core tools: session archiving, cross-session reading, cross-session message sending, and waiting for replies. It also adds a convenient session ID copy function at the UI level. The plugin version is v0.2.2 and is open source under the MIT License.

Installation and Activation

Install the specified version using the official command. After installation, restart the DSH web service to load the plugin.

dsh plugin --profile web add github:Unintendedz/dsh-session-tools#v0.2.2

Core Features

  1. session_archive: Archives the current session or a session with a specified ID. Archiving is persistent but does not delete data.
  2. session_read: Reads a snapshot of another session. DSH uses its native session reference resolver, and the returned text is subject to host byte limits and is explicitly treated as untrusted context.
  3. session_send: Sends a message to another regular session and obtains a persistent request ID.
  4. session_wait: Waits for or polls the reply returned by session_send.
  5. UI interaction: Adds an ID copy button in the three-dot menu of each session list item and in the session header.

Typical Usage

  1. Get the session ID: Use “Copy session ID” in the three-dot menu of a list item, or open the session and click the “ID” button in the header.
  2. Send a message: Call the session_send instruction in the current session.
    {
      "session_id": "目标会话ID",
      "message": "请检查测试结果并总结失败项。"
    }
  1. Wait for the reply: Call session_wait using the request_id obtained in the previous step.
    {
      "session_id": "目标会话ID",
      "request_id": "从 session_send 获得的ID",
      "timeout_seconds": 60
    }
The timeout setting ranges from 0 to 600 seconds; setting it to 0 can be used for polling. It is safe when the waiting status returns `running`, and it will not resend the request or cancel the target.
  1. Read or archive: Paste the copied ID into another session and ask that session to call session_read or session_archive.

Notes

  • Security and trust: The content returned by session_read is bounded and untrusted.
  • Session rules: session_send and session_wait must target two different regular sessions; self-reference is not supported. Only the session that created the request has the right to wait for the result. Sub-agent sessions should use DSH’s built-in tools.
  • Waiting limits: session_wait returns only visible assistant text, without reasoning or tool traces, and UTF-8 text is limited to 65,536 bytes. Timeout only returns running without resending the request or canceling the target.
  • Archive rules: session_archive only saves logs and does not delete conversation data.
  • Parameter requirements: Tool parameters must be precise, non-empty IDs, and unknown fields are rejected.

This plugin is open source under the MIT License. For more details and source code, visit: GitHub.