dsh-queue-reorder:在 DSH 队列停靠栏内重新排序消息

前言

在 DeepSeek Harness (DSH) 开发流程中,当智能体处于忙碌状态时,开发者常需将后续消息加入队列以进行调试或特定的提示工程。此时,调整队列中消息的顺序对于控制执行逻辑至关重要。官方的队列停靠栏默认仅提供查看功能,缺乏直接调整顺序的交互手段。dsh-queue-reorder 插件在官方停靠栏的 DOM 结构上进行装饰,添加了拖拽和微调按钮,允许用户直接在界面中重新排列消息,无需切换至其他面板。

插件简介

这是一个客户端插件,由 damlys99 维护,采用 MIT 开源许可证。它不替换官方的队列停靠栏组件,而是作为一种装饰层介入,在不破坏原有功能的前提下扩展交互能力。

核心功能

  1. 拖拽与按钮操作

    • 队列中的每一行消息都增加了一个 grip 手柄,支持按住拖拽来改变位置。
    • 每行提供 ↑/↓ 精确移动按钮。最后一行的 ↓ 按钮会被禁用,因为其后没有元素可移动。
  2. 非侵入式设计

    • 插件仅装饰官方停靠栏,保留预览、内联编辑、引导、移除、附件和折叠等所有原有功能。
    • 卸载插件后,队列停靠栏恢复原状,不受影响。
  3. 零依赖

    • 无需构建步骤,无运行时依赖,开箱即用。

安装与启用

在 DSH Web 环境下执行以下命令进行安装:

dsh plugin --profile web add -w dsh-queue-reorder

安装完成后,需要重启 DSH Web 进程并刷新页面以使插件生效。

典型用法

# 卸载插件
dsh plugin --profile web remove dsh-queue-reorder

# 运行单元测试(无网络、无浏览器环境)
node selftest.mjs

适用场景与注意事项

适用场景:
* 需要在 DSH Web 界面中频繁调整队列消息顺序的开发者。
* 希望在不离开官方停靠栏的情况下进行提示工程排队的用户。

注意事项:

  1. 版本要求:插件要求 DSH 版本在 >=0.1.2-alpha.1 <0.2.0-0 范围内。更早的版本没有 conversation.input.dock 插槽支持。
  2. 内部实现依赖:插件依赖内部 DOM 结构(如 [data-queue-dock])。如果官方停靠栏的 DOM 结构被重构,控件可能失效(但不会导致崩溃,只是失去交互)。
  3. 消息类型限制:插件仅移动 next-turn(排队中)的消息,next-step(下一步)的消息保持静止。
  4. 拒绝移动的条件:在尝试移动时,如果遇到以下条件,操作将被拒绝且不产生任何改变:
    • QUEUE_CHANGED:视图中的队列状态与实时队列不匹配。
    • NON_USER_MESSAGE:试图移动由 Harness 仍跟踪来源的消息(如目标回合提示词)。
    • SUBAGENT_UNSUPPORTED:子代理会话的队列由父会话拥有。
  5. 网络限制:插件的 HTTP 路由仅监听回环接口,浏览器发起的跨站请求会被 CORS 协议阻止。

总结

dsh-queue-reorder 通过在官方队列停靠栏中添加 grip 拖拽和 ↑/↓ 按钮,解决了消息顺序调整不便的问题。它以装饰模式工作,保持了与官方 UI 的兼容性,适合需要在 DSH Web 界面中精细控制队列顺序的用户。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜