DeepSeek Harness (DSH) allows multiple agent sessions to be created within the same process. In multi-process scenarios, these sessions are usually isolated. The dsh-intercom plugin addresses this issue by providing session discovery, 1:1 messaging, and request/reply capability across different DSH processes running on the same machine.

Plugin Overview

dsh-intercom is a plugin for DeepSeek Harness (DSH). Its primary function is to enable communication and coordination between independent DSH sessions on the same machine. It is maintained by Sqhao-O, licensed under the MIT License, and ported from pi-intercom.

Core Features

The plugin provides a set of tools that allow different sessions to discover and interact with each other:

  • Cross-session messaging: Supports sending (fire-and-forget), asking (blocking request), and replying.
  • Session discovery: Lists all online sessions or sessions under a specific directory.
  • Session aliases: Sets an alias for a session via the name action, making it easier for other sessions to reference it by name.
  • Incoming message relay: Receives messages from other sessions and determines whether to trigger a new turn based on status.
  • Coordination skill integration: After installation, it automatically registers the dsh-intercom skill in the DSH skill library.
  • Web UI panel: In the web configuration, the Settings panel provides an Intercom page for viewing the online list and sending messages.

Installation and Enablement

Use the official command to install the plugin into the specified profile (for example, web):

dsh plugin --profile web add github:Sqhao-O/dsh-intercom

After installation, the corresponding tools and skills are automatically registered in the DSH process.

Typical Usage

Each session has the intercom tool, and operations are performed by calling the tool with different action parameters.

Basic Operations

// 命名当前会话,方便其他会话识别
intercom({ action: 'name', alias: 'worker' })

// 在另一个会话中查看所有在线会话
intercom({ action: 'list' })

// 向名为 'worker' 的会话发送消息
intercom({ action: 'send', to: 'worker', message: 'hello from planner' })

Request and Reply

// 向 'planner' 发送询问,并阻塞直到收到回复
intercom({ action: 'ask', to: 'planner', message: 'what is the status?' })

// 回复刚才的询问
intercom({ action: 'reply', message: 'all good' })

Status Check

// 检查插件/传输状态
intercom({ action: 'status' })

Configuration and Runtime Mechanism

  • Local proxy: The plugin runs a local proxy process in the $DSH_HOME/intercom directory (using Unix sockets or Windows named pipes). All sessions communicate through this proxy.
  • Configuration file: An optional configuration file is located at $DSH_HOME/intercom/config. If this file exists, its configuration items are read (for example, controlling whether incoming messages trigger a new turn, custom status suffixes, etc.).
  • Web panel permissions: The Web UI panel trusts the local machine, so any local process can read the list and send messages as a session under that process.

Use Cases

  • You need to run multiple DSH processes on the same machine and coordinate them.
  • You need a simple mechanism to pass context or control instructions between different sessions.

Notes

  • The plugin runs with the permissions of the current DSH process and involves local communication.
  • It is recommended to review the source code and license (MIT) before use.
  • Uncertain facts (such as star count) are not listed in this article.