Preface

When running multiple agent sessions simultaneously in DeepSeek Harness, a common problem arises: one session discovers a change that another session will soon encounter, but there is no direct channel between the two sessions. The result is often that a human acts as the intermediary—seeing the conclusion in session A and manually typing it into session B.

dsh-agent-messaging addresses this issue by adding cross-session messaging, claim inspection, and decision ledger capabilities to DeepSeek Harness. Its goal is to help two agent sessions reduce duplication, reduce conflicts, and avoid deadlock situations.

What This Is

dsh-agent-messaging is a plugin for DeepSeek Harness, with the repository path happyren/dsh-agent-messaging and licensed under MIT.

It primarily solves three categories of problems:

  • One session needs to communicate facts, constraints, or breaking changes to another named session.
  • Multiple sessions may claim the same resource simultaneously, requiring conflict detection and holder identification.
  • Multiple sessions may wait on each other, requiring deadlock cycle detection.
  • Important decisions need to be recorded and handled via supersession later, rather than being repeatedly reopened.

It should be noted that the community directory in the DSH plugin ecosystem is an independent site and does not belong to DeepSeek/Huanfang’s official app store. This article only discusses the dsh-agent-messaging repository.

Core Features

Below are the verified capabilities:

  • Cross-session validation: Used to pass information between two agent sessions that requires the other party’s attention.
  • Send messages: Use peer_send to deliver messages to another named session.
  • Delivery modes:
  • steer: Interrupt.
  • followup: Open a new turn.
  • context: Does not wake.
  • Publish capability cards: Use peer_card to publish alias, role, owns, groups, and other information.
  • Conflict detection: Detects claim collisions and names the holder.
  • Deadlock detection: Detects deadlock cycles where sessions wait on each other and reports them.
  • Decision ledger: Records decisions and uses supersession instead of reopening old decisions.

Installation and Activation

First, install the plugin:

npx -p @deepseek-ai/dsh dsh plugin --profile web add dsh-agent-messaging

After installation, restart the corresponding profile and then check the installation status:

npx dsh-agent-messaging doctor

If you need to view the operational report outside of a session, you can execute:

npx dsh-agent-messaging report

The confirmed Node engines requirement is:

^22.19.0 || >=24

The confirmed peerDependencies include @deepseek-ai/cordis ^4.0.0; the complete dependency list is not provided in the verified facts, so it is not expanded here.

Typical Usage

The two examples below come from verified usage patterns.

First, publish a capability card explaining what the current session is responsible for and what it is not responsible for:

peer_card alias: "payments-api"
role: "Owns api/ and the charge contract. I do NOT own client code."
owns: [{ resource: "api" }]
groups: ["backend"]

This example expresses that payments-api is responsible for api and the charge contract, but not for client code.

When payments-api discovers a change that will affect checkout-client, it can send a steer:

peer_send to: checkout-client mode: steer
message: "tenant_id is now required on ChargeRequest — your call site will break"

Here, mode: steer is used, indicating an interrupt. The recipient sees the message text itself, not the full session history.

Applicable Scenarios and Considerations

This is suitable for:

  • Running multiple independent DSH sessions simultaneously and wanting to pass short text conclusions between them.
  • Needing sessions to declare owns and role first, then reduce duplicate modifications.
  • Needing to detect claim collisions and know who the holder is.
  • Needing to detect deadlock cycles caused by sessions waiting on each other.
  • Wanting to record decisions in a ledger and handle them via supersession later.

This is not suitable for:

  • Pulling another session’s history into the current message.
  • Acting as a coordinator to spawn and supervise workers.
  • Moving the same conversation elsewhere to continue.

Messages in dsh-agent-messaging are text, not conversation history, and not files.

Before enabling, it is recommended to confirm three things:

  1. The repository source is https://github.com/happyren/dsh-agent-messaging.
  2. The license is MIT.
  3. The plugin runs with the current dsh process permissions, so the source code should be reviewed before installation; if the profile has file, network, or model invocation permissions, the plugin may also use these permissions after activation.

Links

GitHub:

https://github.com/happyren/dsh-agent-messaging