前言¶
在 DeepSeek Harness(DSH)里跑 Agent 时,当前轮尚未结束,你继续输入的内容不会立刻进会话,而是进入「排队消息」队列,等本轮结束后按入队顺序依次发送。若后发的说明其实应该先发、或想临时把某条挪到队首,内置界面通常只能按固定顺序等待,改顺序往往要删了重发,既麻烦也可能干扰 Harness 对消息身份的处理。
dsh-queue-reorder 是维护者 yrui-ql 发布的客户端插件:在消息真正发出之前,把 pending 队列里的条目做成可拖动排序(并支持键盘调整),且不改变「同一条消息」的语义。下面介绍它做什么、怎么装、怎么用,以及适用边界。
这是什么¶
插件仓库:yrui-ql/dsh-queue-reorder,社区目录页:skillhub.cn 条目。分类为客户端;package.json 版本为 0.1.1,许可证 MIT。
一句话:在 Agent 运行期间,让 DeepSeek Harness 的待发送消息队列支持拖动(及键盘)重排,再按新顺序在轮次边界发送。
核心功能¶
拖动与键盘排序¶
队列中每条排队消息左侧会出现拖动柄 ⠿。展开队列后可见提示「拖动 ⠿ 调整发送顺序」(至少两条排队消息时)。
- 拖
⠿,把某条放到另一条的前面或后面; - 消息较多时,拖到列表上/下边缘会自动滚动(越靠边缘越快),可一次从最下拖到最上;
- 聚焦
⠿后可用↑↓逐条移动,Home/End移到最前/最后(读屏会播报结果)。
保留的内置能力¶
README 说明下列行为仍与内置队列一致:折叠计数头、文本/图片/文件预览、内联编辑、删除、运行中的「插话发送」,以及尚未被 Host 接收的「发送中」回显行。
重排如何不变成「取消消息」¶
Harness 待发送队列对应 Agent Inbox 的持久状态(agent/inbox/spliced 事件),宿主在步骤边界按序领取。插件不能简单「删了再入队」,否则会改消息身份,下游(目标循环、子代理、提问回复)可能误判为取消。
实现要点(摘自 README):
- Client 半复用槽位
conversation.input.dock的queue单元(同 id 替换内置队列停靠栏),只负责展示与手势; - 拖放/键盘向 Host 提交
{ sessionId, itemId, beforeId, expectedIds }; - Host 读取当前顺序,若与
expectedIds不一致(拖动期间已有消息被领取)则拒绝并提示重拖; - 通过一次连续的 Inbox 变更(同一批消息、新顺序、一次 splice)完成移动。
纯函数 planMove(reorder.js)计算 splice 区间;测试见 test/reorder.test.mjs 等。
安装与启用¶
官方 README 给出的获取与安装方式如下。先在本地取得源码目录,再在 DSH 会话里用插件管理器的 install_bundle,target 指向该目录的绝对路径(不要用凭插件名拼出来的 dsh plugin add github:... 一类未在资料中出现的命令)。
git clone https://github.com/yrui-ql/dsh-queue-reorder.git
安装成功后:
- 槽位
conversation.input.dock的queue单元 registrant 变为dsh-queue-reorder; - 至少两条排队消息时,展开队列即可看到拖动柄与排序提示。
卸载:在「设置 → 插件」中禁用或移除 dsh-queue-reorder,内置队列停靠栏会立即恢复。
插件以当前 DSH 进程权限运行;安装前建议浏览仓库源码并确认 MIT 许可证与行为是否符合预期。
典型用法¶
- 启动或继续一个 Agent 会话,在本轮尚未结束时连续发送多条消息,使其进入排队队列。
- 展开排队区域;若已有两条及以上待发送项,使用左侧
⠿拖动,或用键盘在⠿上调整顺序。 - 等待当前轮结束;Harness 按你调整后的顺序发送队列中的消息。
若拖动时提示需重拖,通常是拖动过程中已有消息被 Host 领取,顺序与提交时的 expectedIds 不一致,重新展开队列再排即可。
适用场景与注意¶
适合谁: 经常在 Agent 长回合中连续排队多条指令、且需要临时调整发送顺序而不删改内容的 DSH 用户。
范围边界(README「边界」一节):
- 只调整
next-turn(待发送的下一轮)队列;next-step输入与已进入会话的消息不在范围内。 - 「发送中…」且尚未被 Host 接收的本地回显行不参与排序。
- 子代理会话仅在其可继续(continuable)时允许调整,与 Harness 自身队列变更约束一致。
- 在 DeepSeek Harness
0.2.1-rc.5上开发与验证;Harness 升级后若conversation.input.dock槽位或会话内conversation服务签名变化,可能需要同步更新插件。
开发自测需 Node.js 22+(仅测试;插件本身无运行时依赖):
npm test
结尾¶
dsh-queue-reorder 把 DSH 里「等当前轮结束再发」的排队消息变成可拖、可键盘微调的顺序,并通过 Host 侧 splice 重排避免误伤消息取消语义。需要细节与 issue 时见 GitHub:https://github.com/yrui-ql/dsh-queue-reorder;目录索引见 https://www.skillhub.cn/plugins/yrui-ql/dsh-queue-reorder。DSH 生态强调「一切皆插件」;skillhub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。