DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Queue Merge — DSH Plugin for DeepSeek Harness
← Plugins
Q

dsh-queue-merge

Queue Merge

Queue Consolidation for DeepSeek Harness: when the agent is busy and you queue several follow-up messages, the next turn runs with ONE consolidated formal prompt — the model rewrites the batch into a single prompt and executes once, instead of piecemeal one-message-per-turn rework.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:keyiadiannao/dsh-queue-merge#0c8b3f76b2d77a88893e5b3667f024785bc4888b
READMECompatibilityVersions

Compatibility and provenance

Queue Merge is published as dsh-queue-merge and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
8/20/2026

Versions

0.1.0stable
8/20/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
8/20/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in agents-orchestration.

Headless@deepseek-ai/dsh-headlessThe dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layerExperimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsSubagent Codex@deepseek-ai/dsh-subagent-codexOne-shot Codex subagent provider over the official app-server protocolSubagent Claude Code@deepseek-ai/dsh-subagent-claude-codeOne-shot Claude Code subagent provider over the official Agent SDK

README

dsh-queue-merge

Queue Consolidation for DeepSeek Harness — when the agent is busy and you queue several follow-up messages, the next turn runs with one consolidated formal prompt instead of the agent replaying your messages one by one (do a bit → get corrected → redo → get corrected again).

Why

The official DSH agent loop consumes one queued prompt per turn. If you queue four follow-ups while the agent is mid-task:

① no tables, please
② by the way, we need to consider Windows
③ prefer TypeScript for the code
④ drop option B from the earlier proposal

…they become four separate turns, which invites piecemeal rework. This plugin adds a third queue-consumption policy:

queue individually   (official default: one message per turn)
queue + merge        (this plugin: consolidate the batch, execute once)

How it works

agent busy, user queues 2+ messages
        ↓
policy strip above the composer:  [Merge]  [Individually]   (shown only when 2+ queued)
        ↓  (merge)
agent/pre-step hook at the turn boundary
        ↓
call the SAME model that will execute to consolidate the whole batch
into ONE clean, complete, formal user prompt
        ↓   (success)
durable splice removes the queued messages; the consolidated prompt
REPLACES them as the turn's user message (full visible bubble)
        ↓
agent executes the consolidated prompt once

Key properties:

  • Consolidation, not a side-note. The queued messages are rewritten into a single new official user prompt — the agent acts on the consolidated version, and the raw messages do not appear in the turn. Corrections win over earlier messages on the same thing; unrelated requests are kept as separate points.
  • Transactional zero-loss. The consolidation LLM call runs BEFORE the inbox is touched. If it fails, the queued messages stay put and the official one-message-per-turn loop takes over — nothing is ever spliced out and dropped. (Note: consolidation itself is a lossy rewrite by design — the model's integrated understanding replaces the raw text. That is the accepted product semantic; what is never lost is the queue itself on any failure.)
  • Attachments are never merged. A batch containing any non-text block (image, file, …) or any non-human source (plugin/system messages) skips the merge entirely and falls back to the official per-message processing — images and files are never rewritten away.
  • Queue-identity guard. The snapshotted message IDs are re-checked against the live queue right before the splice; if the user edited, deleted, or reordered the queue during synthesis, the merge is aborted instead of removing messages that were not part of the synthesis.
  • No over-splice races. The pending list is snapshotted at hook entry; messages that arrive mid-consolidation stay queued for the next turn.
  • Language follows the UI. The client reports the active locale; the consolidated prompt is written in the UI language (zh → Simplified Chinese, en → English), falling back to the message language when unknown.
  • One hard line: the consolidation never invents permissions the user did not state, so merging cannot widen the agent's authority.
  • Provenance badge. The consolidated bubble is followed by a small badge — "merged N follow-up messages · view originals" — where the ORIGINAL messages remain inspectable, so the raw intent stays traceable.
  • Interruptible UI. The policy strip only appears when there are 2+ queued messages (with one, merge is a no-op) and sits in the composer's input dock right under the native queue dock. Its mode and threshold come from the server, so a defaultMode: individually or minQueueForMerge: 5 config is never shown wrong in the UI.

Install

dsh plugin --profile web add "github:keyiadiannao/dsh-queue-merge#master"

Or add to your profile package.json:

"dependencies": {
  "dsh-queue-merge": "github:keyiadiannao/dsh-queue-merge#master"
}

And to dsh.profile.bundles: "dsh-queue-merge".

Configuration

- id: dsh-queue-merge
  config:
    defaultMode: merge          # merge | individually
    minQueueForMerge: 2         # claimed + queued threshold before merging applies
    synthesisProvider: ''       # empty = reuse the session's routed model
    synthesisModel: ''

Development

pnpm run build        # tsdown: host + client bundle (CSS Modules inlined)
pnpm run typecheck    # tsc --noEmit
pnpm test             # vitest

Relationship to the ecosystem

CapabilityOwner
Queue display / edit / delete / steerofficial DSH QueueDock
Queue reorder / clear / undodsh-queue-plus
Queue consumption policy (individually vs merge)this plugin

The three are complementary: queue-plus manages queue order, this plugin manages how the queue is consumed.

License

MIT