前言¶
在 DeepSeek Harness(DSH)裏跑長任務時,常見兩類體驗問題:界面長時間沒有明顯變化時,很難區分「還在等響應」和「已經卡住」;發現 Agent 方向偏了,往往只能等整輪結束,或在主對話框發一條新消息——後者通常會被當成新任務,相當於打斷當前工作。官方 queue 與 steer 通道本質上也是「以用戶身份發消息」,與主輸入框能力重疊。
下面介紹社區插件 dsh-steer(維護者 lyonleeeee,分類:客戶端):在會話頭提供實時狀態徽標,並提供「運行中指導」——在當前回合內、小步邊界被讀進上下文,不打斷、不重開會話。
這是什麼¶
dsh-steer 是 DeepSeek Harness 插件,當前版本 0.1.0(MIT 許可證)。它做兩件事:
- 實時狀態徽標:會話頭右上角顯示當前階段(分析、思考、輸出、工具調用等),點開可看步號、模型與診斷信息。
- 運行中指導:通過「指導」浮層補一句、糾一句,支持文字與圖片附件,並記錄本插件發出的插話是否已被 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。