dsh-next-steps:按輪次投影的下一步建議

前言

在 DSH 裏和模型多輪對話時,助手常常在結尾用幾段文字列舉「你可以接着做……」。讀者需要自己複製到輸入框,或者重新組織一句話再發。若同一話題聊了很多輪,歷史回覆裏也沒有可點的一鍵續聊入口。

dsh-next-steps 是 xiaoxiaolelang-ai 維護的工作流類插件:在每輪迴復尾部渲染最多四條可點的下一步建議,且每一輪只顯示該輪工具結果對應的按鈕,不會把上一輪的建議帶到新的一輪。下面介紹它的能力、安裝方式、配置項和實現上的取捨。

這是什麼

插件全名 dsh-next-steps,歸類爲工作流。它在會話界面裏註冊 conversation.chat.turnTail,並在 Host 側註冊 suggest_next_steps 工具;建議內容來自當輪模型調用該工具返回的結果,而不是插件本地生成的文案。

目錄頁:skillhub.cn 上的 dsh-next-steps
源碼與說明:GitHub · xiaoxiaolelang-ai/dsh-next-steps

核心功能

按輪次投影

每個輪次尾部只讀 (本輪起點, 本輪收尾] 區間內的 suggest_next_steps 工具結果。歷史輪次各自定格在自己那一組按鈕;新的一輪不繼承上一輪;工具結果晚到時也會觸發重渲染。README 寫明:沒有 Map、沒有 render 副作用、沒有跨組件傳遞。

2×2 版式與視覺

一次最多四條建議:1 條整寬、2 條一行、3 條末條跨列、4 條標準 2×2。超過 maxActions 上限時在 Host 側直接截斷,不顯示「還有 N 條」。主推項用強調色與左座條;常規項與 stop 項分檔疊底,顏色均來自主題令牌,淺色/深色跟隨宿主。窄容器下(@container ≤420px)自動單列。

交互

  1. 普通點擊:把該條的 prompt 作爲消息發出(經輸入框 setDraft → 落定 → submit)。
  2. Shift+點擊:只填入輸入框,不發送;若草稿裏已有內容則換行追加。
  3. 僅當發送成功後才鎖定已點按鈕;提交失敗會解鎖並顯示原因,可重試。
  4. 懸停可查看完整 prompt(長於按鈕文案時)以及 Shift+點擊說明。按鈕組帶 role="group" 與本地化標題(「下一步建議」/「Next steps」)。

常駐提示與工具

配置 prompt: always 時,插件在系統提示接近末尾(9899 位)註冊常駐指令,要求模型每輪收尾調用 suggest_next_steps;純確認且沒有下一步的回覆爲例外。0.1.4 起提示詞約 116 詞、6 條規則,刻意不綁定 release、pipeline 等具體場景。README 說明:帶提示的輪次里約 70% 會發起調用(0.1.3 之前實測),模型仍可能漏掉某一輪,此時該輪不顯示按鈕,也不會串用上一輪建議。

重啓會話後的持久化

重放歷史時節點形狀可能與實時流不一致,插件可能認不出數據。因此實時渲染成功時會按「會話 + 該輪收尾 seq」寫入 localStorage(鍵 dsh-next-steps:tails:v1,最多 400 條),用於補償重放失敗。清除站點 localStorage 後,歷史輪次的建議會丟失,不影響新輪。

安裝與啓用

在終端執行官方 README 中的命令:

dsh plugin add dsh-next-steps

也可以在 DSH 插件管理器裏添加 dsh-next-steps。

package.json 聲明需要 DSH >= 0.2.2-rc.1、Node >= 20,許可證爲 MIT。插件以當前 DSH 進程權限運行,安裝前建議自行查看倉庫源碼與許可證。

若同一「輪次尾部」還有別的插件也往尾部放建議按鈕,可能出現兩排;README 建議同一時間只啓用一個此類插件。

配置

在 profile 的 cordis.patch.yml 裏,於本插件對應行的 config 下寫入:

- id: next-steps
  config:
    maxActions: 4      # 1-4,默認 4
    history: latest    # latest=只在最新一輪顯示(默認);all=每輪都顯示當輪的建議
    prompt: always     # always=註冊常駐指令;off=不註冊

prompt: off 時不註冊常駐提示,模型是否調用工具完全取決於對話內容。客戶端不對配置做 schema 校驗,非法取值按默認兜底。

典型用法

啓用插件並保持默認配置後,正常使用對話即可:模型在輪次收尾調用 suggest_next_steps 後,回覆下方會出現最多四格建議。想先改措辭再發時,對目標按鈕 Shift+點擊,在輸入框裏編輯後自行回車。

若希望在瀏覽歷史時看到每一輪當時留下的建議,將 history 設爲 all。若只想減少最新一輪下方的視覺干擾,保持 history: latest(默認)即可。

工具返回的動作經 Host 側 normalizeActions 處理:按立場去重、只留一個推薦並置頂、stop 沉底、截斷到上限。首條推薦在數據裏標 recommended;label 是對話語言下的動作簡述,prompt 是用戶實際會發出去的那句話。

原理概要

  • Host:註冊工具與可選常駐提示,清洗並截斷動作列表,隨工具結果交給客戶端。
  • Client:掛接 turnTail,用 turn.start.seq / turn.end.seq 定位本輪工具結果;按數據段前綴深搜,認不出時降級採集器且仍只掛最新一輪。
  • 零依賴:不 import @deepseek-ai/* 包,工具用明文 JSON Schema 註冊。

適用場景與已知限制

適合:需要把「接着做什麼」變成可點操作、減少複製粘貼的 DSH 日常對話;寫代碼、查資料、做文檔等通用場景(提示詞不綁定單一工作流)。

注意:

  • 某輪沒有按鈕,通常是因爲該輪沒有 suggest_next_steps 調用結果,屬模型與提示約束下的固有限制。
  • 工具結果裏給客戶端讀的 JSON(前綴 dsh-next-steps/v1)也會進入模型上下文,每次約幾百 token。
  • 若宿主某輪未提供 turn.start.seq,按輪定位可能退化爲「截至本輪」,極端情況下未調用工具時可能沿用上一輪建議。
  • 社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本插件爲社區維護之工作流擴展。

包內提供 _test-next-steps.mjs、_test-normalize.mjs、_test-host.mjs、_test-actions.mjs 等自檢腳本,可從任意目錄執行,路徑相對腳本自身解析。

結尾

dsh-next-steps 把「下一步」從純文本結尾收攏成每輪獨立的可點網格,用按輪投影避免狀態串輪,用 Host 清洗與 Client 定位保證展示與數據一致。需要安裝或提 issue 時,見 GitHub 倉庫 與 skillhub 目錄頁。

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

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

小夜