dsh-tool-session-message
Manifest validCross-session messaging: deliver a user message to another DSH session by session id. Every message carries the sender session id and a reply hint, so windows can authenticate each other and hand work
dsh-tool-session-message
Cross-session messaging for DeepSeek Harness (DSH): send a user message to another session by its session id — ask a separate window what it is doing, or hand it new facts.
给 DSH 加一个工具 session_send(session_id, message, mode?):把一条 user 消息投递到另一个会话(比如另一个窗口),让对方开始一轮或插话。每条消息自动带上发送方 Session ID,便于多窗口互相认证身份并接续任务。
Features
session_send(session_id, message, mode?)— deliver a message to any session in the same DSH host.- Identity header — every delivered message is automatically prefixed with:
so the receiver knows who sent it and how to answer back.【跨会话消息 · session_send】 from: session-xxxxxxxx-... reply: session_send(session_id="session-xxxxxxxx-...", message="...") mode: "followup"(default, queued as the target's next user turn) or"steer"(injected into a running turn).- Returns the host acknowledgement as structured JSON (
ok,from,to,mode,requestId,result).
Requirements
- DSH
0.2.1-rc.5or compatible (uses thesessionControllerservice). - The target session must live in the same DSH host process (multiple windows of one desktop app satisfy this).
Install
In the DSH desktop app (recommended)
Settings → Plugins → Add plugin, then paste:
github:BigBugy/dsh-tool-session-message
The plugin manager accepts npm package names, GitHub repositories and local directories.
This package is not published to npm — use the github: spec (or the local path below).
With the DSH CLI (CLI deployments only)
dsh plugin --profile <profile> add github:BigBugy/dsh-tool-session-message
The desktop app does not ship a
dshcommand; desktop users install through Settings → Plugins.
Manual (local development)
- Put this package at
<profile>/node_modules/dsh-tool-session-message(<profile>is e.g.~/.dsh/profiles/desktop). - Add it to the profile's
package.json:{ "dependencies": { "dsh-tool-session-message": "link:<path-to-this-package>" }, "dsh": { "profile": { "bundles": [ "...", "dsh-tool-session-message" ] } } } - The package ships its own
cordis.patch.ymlwithdsh.bundle.patch, so the tool is inserted process-wide. - Restart DSH (host plugins load at startup).
Usage
Ask the model to call, or call directly:
session_send(session_id="session-0e8596c3-...", message="What are you working on? Reply briefly.")
The receiver sees the decorated message and can answer with:
session_send(session_id="<the id in from:>", message="...")
How it works
- DSH uses the Cordis plugin framework. A plugin is an ESM module exporting
{ name, inject, apply }(and optionallyConfig). - This plugin injects
["tools", "sessionController"]and registers a tool viactx.tools.register({...})(plain object — no@deepseek-ai/dsh-toolsdependency). - Delivery calls
ctx.sessionController.prompt({ sessionId, content: [{ type: "text", text }], mode, requestId }, signal):requestIdis required — without it the host rejects withprompt rejected.- Session ids must keep their
session-prefix.
Implementation notes / pitfalls
parametersmust be a complete JSON Schema root.ctx.tools.register()validates onlyoutput.schema;parametersis projected to the model as-is. A flat property map without{ "type": "object" }makes the whole model request fail with:Invalid schema for function 'session_send': schema must be a JSON Schema of 'type": "object"', got 'type": null'.- DSH's supported schema subset:
type/oneOf/properties/required/additionalProperties/items/enum/const, plus annotationsdescription/title/default/examples. Property-levelrequired: trueis not valid JSON Schema. requestId: generate one per call (crypto.randomUUID()), otherwise the host rejects the prompt.- Loading: signature/import errors surface only in the host process log; the plugin is loaded at DSH startup, so code changes require a restart.
- Bundle metadata: to appear in the plugin manager UI, a third-party plugin should declare
dsh.bundle.patchinpackage.jsonand be listed in the profile'sdependencies+dsh.profile.bundles.
Security notes
- The tool lets a model inject user prompts into other sessions, which can start turns in those sessions. Treat it like any privileged automation: enable it only in profiles you control.
- No network access, no file writes, no shell — it only calls the host's session controller.
- Messages are stored in the target session transcript as ordinary user messages.
Compatibility
| DSH version | Status |
|---|---|
| 0.2.1-rc.5 | tested |
| older | unknown — sessionController service may not exist |
License
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.2.0 | — | — |
Comments
Loading…
Similar plugins
by Domaki-co
Cross-session message forwarding between DSH sessions: extract one model reply, a user message, or a multi-selected batch of messages and images from one session and deliver it into another, with sile
★ 2
↓ 715/wk
MIT
JavaScript
Oct 27, 2026
dsh plugin --profile web add dsh-message-forwardby BJ1919810
Cross-session messaging for DeepSeek Harness: one session's agent sends a message to another session's agent.
★ 0
MIT
JavaScript
Oct 31, 2026
dsh plugin --profile web add dsh-session-mailby Jesse-njx
Cross-session messaging for DSH — any session on the machine can list and message any other, Claude Code-style
★ 5
MIT
TypeScript
Aug 28, 2026
dsh plugin --profile web add @dsh-crosstalk/bundleby XBXyftx
Cross-session messaging plugin for DeepSeek Harness: let user-launched sessions in one workspace message each other and coordinate tasks, write scopes, and conflicts.
★ 0
MIT
TypeScript
Oct 18, 2026
dsh plugin --profile web add dsh-session-messagingby 240xu
Cross-session full-text search over persisted DSH session logs: builds an incremental message-level index and returns sessionId, seq, and a short excerpt; exposes an agent tool and a standalone panel.
★ 0
JavaScript
Oct 21, 2026
dsh plugin --profile web add @240xu/dsh-session-searchby TobiichiOrigamii
Cross-session messaging, persistent session team, approval gates and a per-session task board for DeepSeek Harness (DSH).
★ 0
MIT
JavaScript
Oct 22, 2026
dsh plugin --profile web add dsh-crosssession