dshbase

插件目录 / Developer / dsh-queue-merge

dsh-queue-merge

已验证 · 实测可装 keyiadiannao

✓ 持续维护 基于 6 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

0Stars
0Forks
0未关闭 issue
—语言
2026-08-20最近推送
跨平台平台

功能简介

Queue Consolidation for DeepSeek Harness: merge queued follow-up messages into one consolidated formal prompt for the next turn instead of piecemeal one-message-per-turn rework.

✅
我们的评价
可用 — 实测通过,早期项目

Queue Consolidation for DeepSeek Harness: merge queued follow-up messages into one consolidated formal prompt for the next turn instead of piecemeal one-message-per-turn rework. 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

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

Capability Owner
Queue display / edit / delete / steer official DSH QueueDock
Queue reorder / clear / undo dsh-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

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-queue-merge」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

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

Headless(CLI)profile:

dsh plugin --profile headless add github:keyiadiannao/dsh-queue-merge

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7819 个插件 →