dsh-queue-reorder:待發送消息隊列拖動排序

前言

在 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 的待發送消息隊列支持拖動(及鍵盤)重排,再按新順序在輪次邊界發送。

核心功能

拖動與鍵盤排序

隊列中每條排隊消息左側會出現拖動柄 ⠿。展開隊列後可見提示「拖動 ⠿ 調整發送順序」(至少兩條排隊消息時)。

  1. 拖 ⠿,把某條放到另一條的前面或後面;
  2. 消息較多時,拖到列表上/下邊緣會自動滾動(越靠邊緣越快),可一次從最下拖到最上;
  3. 聚焦 ⠿ 後可用 ↑ ↓ 逐條移動,Home / End 移到最前/最後(讀屏會播報結果)。

保留的內置能力

README 說明下列行爲仍與內置隊列一致:摺疊計數頭、文本/圖片/文件預覽、內聯編輯、刪除、運行中的「插話發送」,以及尚未被 Host 接收的「發送中」回顯行。

重排如何不變成「取消消息」

Harness 待發送隊列對應 Agent Inbox 的持久狀態(agent/inbox/spliced 事件),宿主在步驟邊界按序領取。插件不能簡單「刪了再入隊」,否則會改消息身份,下游(目標循環、子代理、提問回覆)可能誤判爲取消。

實現要點(摘自 README):

  1. Client 半複用槽位 conversation.input.dock 的 queue 單元(同 id 替換內置隊列停靠欄),只負責展示與手勢;
  2. 拖放/鍵盤向 Host 提交 { sessionId, itemId, beforeId, expectedIds };
  3. Host 讀取當前順序,若與 expectedIds 不一致(拖動期間已有消息被領取)則拒絕並提示重拖;
  4. 通過一次連續的 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 許可證與行爲是否符合預期。

典型用法

  1. 啓動或繼續一個 Agent 會話,在本輪尚未結束時連續發送多條消息,使其進入排隊隊列。
  2. 展開排隊區域;若已有兩條及以上待發送項,使用左側 ⠿ 拖動,或用鍵盤在 ⠿ 上調整順序。
  3. 等待當前輪結束;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 / 幻方無官方從屬關係。

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

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

小夜