dsh-steer:會話頭狀態徽標與運行中不打斷指導

前言

在 DeepSeek Harness(DSH)裏跑長任務時,常見兩類體驗問題:界面長時間沒有明顯變化時,很難區分「還在等響應」和「已經卡住」;發現 Agent 方向偏了,往往只能等整輪結束,或在主對話框發一條新消息——後者通常會被當成新任務,相當於打斷當前工作。官方 queue 與 steer 通道本質上也是「以用戶身份發消息」,與主輸入框能力重疊。

下面介紹社區插件 dsh-steer(維護者 lyonleeeee,分類:客戶端):在會話頭提供實時狀態徽標,並提供「運行中指導」——在當前回合內、小步邊界被讀進上下文,不打斷、不重開會話。

這是什麼

dsh-steer 是 DeepSeek Harness 插件,當前版本 0.1.0(MIT 許可證)。它做兩件事:

  1. 實時狀態徽標:會話頭右上角顯示當前階段(分析、思考、輸出、工具調用等),點開可看步號、模型與診斷信息。
  2. 運行中指導:通過「指導」浮層補一句、糾一句,支持文字與圖片附件,並記錄本插件發出的插話是否已被 Agent 讀取。

插件不依賴 @deepseek-ai 包,僅使用宿主公開的 ctx.agents、ctx.webServer,以及可選的 attachments、sessionController;路由只接受 loopback,無遙測與對外網絡請求。

狀態徽標

徽標按發生順序顯示單一階段,例如:分析中 → 思考中 · 本步 N 字 → 輸出中 · 本步 N 字 → 運行 <工具> → 讀取工具結果,收尾回到「工作中」。工具階段可帶命令摘要,如「運行 bash · Run route probes」。

設計上有兩處取捨:字數按 步 統計,每個 turn/step 邊界重新計數,避免整段會話累計成一個無意義的大數;模型名不在徽標上展示,模型、provider、上下文窗口與步號(如 T4·S3)放在點開的詳情面板。

耗時由客戶端本地時鐘根據 host 時間戳計算,空閒時不跑定時器,也不會每秒推 SSE。無新進展時顯示「暫無新增量」;實時源斷開時顯示「狀態實時源斷開」,不保留過期階段。請求失敗只展示官方 failure.code;僅當 llm/retry 真正觸發時才顯示重試。

運行中指導

這是插件的主要能力。你輸入一句話(可貼圖或選文件),它會在 當前回合內、最近一次小步(一次推理或一次工具調用)結束的邊界被讀進上下文,任務繼續執行——不打斷、不重開、不等整輪結束。

實現上使用自定義消息 kind(source.kind 爲 dsh-steer)配合 agent.steer()。若按普通用戶消息投遞,模型容易將其視爲新任務,表現即爲打斷。

指導框支持附件,經宿主 attachments 服務落成持久引用;輸入草稿按會話保存,刷新不丟。浮層列出本會話由本插件發出的插話,每條標註歸宿:

  • ✓ 已讀取,並標出輪步,如 T7·S3
  • · 已送達,尚未被讀
  • ✗ 未讀取(回合已結束或消息被丟棄)

可點擊條目回填輸入框;未讀取的可一鍵重發,重發複用原附件(reuseAtts),無需重新上傳。主對話框聊天記錄不在此列表中。

界面語言在詳情面板切換:自動、中文、English;選擇寫入 ~/.dsh/dsh-steer.lang,不使用 localStorage。

v0.1.0 刻意不提供官方 queue 與官方 steer 通道——二者與主對話框/官方隊列欄能力重複;插件只保留上述不打斷的投遞路徑。

安裝與啓用

通用 CLI(將 <profile> 換成你的 profile 名):

dsh plugin --profile <profile> add github:lyonleeeee/dsh-steer

桌面版 DeepSeek Harness.app 使用應用自帶 CLI:

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add github:lyonleeeee/dsh-steer

裝完後 重啓應用(bundles 僅在啓動時讀取一次)。重啓後會話頭右上角會出現狀態徽標和「指導」按鈕。

數據通道與安全(開發者參考)

路由 用途
GET /dsh-steer/state?session=<id> SSE 實時快照,僅狀態變化時推送
POST /dsh-steer/steer 運行中指導,請求體 {sessionId, text?, attachments?, reuseAtts?}
GET /dsh-steer/attachment?session=<id>&id=<attachmentId>[&raw=1] 讀取指導附件
GET\|POST /dsh-steer/lang 界面語言:auto、zh、en
GET /dsh-steer/ping 健康檢查

請求體限制:純文字 3 KB,帶附件 48 MB(在宿主 imageLimits 之上再封頂)。出錯時返回穩定錯誤碼(如 no-live-agent 409、payload too large 413 等),客戶端按語言映射提示,不直接暴露原始碼串給用戶。

倉庫內測試:npm test,38 個用例,運行於 node --test,零額外測試依賴。運行環境要求 Node ^22.19.0 || >=24.0.0(見 package.json engines)。

適用場景與注意

適合:需要長時間盯 Agent 進度、希望在工具鏈執行中途糾偏而不打斷會話的 DSH 用戶;需要插話帶截圖、並追蹤「是否已被讀到」的場景。

注意:

  • 插件以當前 dsh 進程權限 運行;安裝前請閱讀 GitHub 源碼 與 LICENSE,自行判斷是否滿足安全要求。
  • 社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;星標與版本以倉庫與目錄頁爲準(README 對應 v0.1.0)。
  • 宿主若不支持 attachments API,附件相關能力會返回 501;無 live agent 時 steer 返回 409。

結尾

dsh-steer 把「此刻在幹什麼」和「中途加一句不打斷」拆成會話頭徽標與指導浮層兩條線,並用 agent.steer() 與自定義 kind 避免把糾偏當成新任務。若要安裝或看截圖說明,可訪問目錄頁 lyonleeeee/dsh-steer 與倉庫 github.com/lyonleeeee/dsh-steer。

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

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

小夜