前言¶
在 DeepSeek Harness(dsh)裏跑智能體時,界面上的反饋往往來自助手消息裏的文字。若模型在 reasoningEffort: max 等配置下長時間處於「思考 → 調工具 → 再思考 → 再調工具」的循環,用戶可能只看到一串工具卡片,難以判斷任務是在推進、卡住還是方向跑偏。手動打斷或改 prompt 可以緩解,但缺少一種在 Harness 側、按會話自動觸發的輕量機制。
下面介紹社區插件 dsh-progress-nudge(維護者 buaaflyaway,分類:工作流):它統計連續「只有工具調用、沒有面向用戶的助手文本」的輪數,在達到閾值後於下一次模型請求之前注入一條簡短提醒,要求模型先彙報進展再繼續執行;一旦模型輸出可見文字,計數立即歸零。插件還提供 設置 → 過程彙報 頁面,用於調整閾值、文案、語言以及智能體團隊下的提醒範圍。
這是什麼¶
dsh-progress-nudge 是一個 DeepSeek Harness 插件(npm 包名 dsh-progress-nudge,當前版本 0.2.1,MIT 許可證)。它面向上述「對用戶沉默的長工具循環」場景,不修改工具調用、不阻斷 step,最壞情況只是在對話流裏多一條可回放的注入消息(渲染爲 progress-nudge 來源的用戶側事件)。
插件在 npm 發佈,源碼與說明見 GitHub 倉庫;社區目錄頁:skillhub.cn 插件頁。社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,安裝前建議自行查看源碼與許可證。
運行環境要求(來自 package.json):Node ≥ 20,dsh ≥ 0.2.0-rc.2 且 < 0.3.0-0。
核心功能¶
會話內計數與「沉默」判定¶
插件爲每個存活的 Agent 會話在內存中維護 streak(連續沉默輪數)和 remindedAt(上次提醒時的 streak),不落盤;計數從已提交的會話日誌推導,不輪詢 agent/status。
每完成一條 assistant/message 時:
- 若
content含非空白 text 塊 → 用戶能看到文字 →streak清零; - 若只有 tool-call(可帶 reasoning)→
streak += 1; - reasoning 塊被故意忽略,不計爲「已彙報」,否則難以觸發提醒;
interrupted: true的助手消息不計一輪;- 默認
includeSubagents: false時,session.header.origin === 'subagent'的子代理會話不計數。
閾值注入(agent/pre-step)¶
當 streak 達到 threshold(默認 10)時,插件在 agent/pre-step 瀑布中先 await next() 保留其它決策,若決策爲 enter 且 streak 到期,則在 decision.messages 前置一條 source.kind = "progress-nudge" 的用戶消息;內核將其寫入會話日誌並進入緊接着的那次模型請求。README 強調:不要在 session/event 裏同步調用 agent.inject(),否則會觸發會話追加重入錯誤,插件表面 active 卻零注入。
重複節奏:默認 repeat: true 時,再積累滿一個 threshold 才第二次提醒(10 → 20 → 30 …);repeat: false 則每段沉默只提醒一次。新用戶回合 turn/start 會重置計數;session/disposed 時清理內存狀態。
子代理與智能體團隊¶
- 子代理:默認不提醒(
includeSubagents: false),避免子會話消耗面向用戶的彙報 token。 - Agent Teams:用
ctx.agentTeams.tryMembership(agent)區分 Lead 與 teammate;teamScope爲lead(默認)時只提醒 Lead 與獨立智能體,all時團隊成員也會收到提醒。未啓用團隊時teamScope無效果。
設置頁與配置¶
路徑:設置 → 過程彙報(英文 Progress nudge / 繁體 過程回報)。字段與默認值:
| 配置鍵 | 類型 | 默認值 | 說明 |
|---|---|---|---|
threshold |
整數 ≥ 1 | 10 |
連續沉默多少輪後提醒 |
text |
字符串 | 空 | 自定義文案,{n} 爲當前 streak;空則用所選語言內置文案 |
language |
en / zh-CN / zh-TW |
zh-CN |
內置提醒與設置頁文案 |
repeat |
布爾 | true |
是否按閾值間隔重複提醒 |
includeSubagents |
布爾 | false |
是否提醒 subagent 會話 |
teamScope |
lead / all |
lead |
智能體團隊提醒範圍 |
保存通過 Host 的 remote.settings.update 寫入 profile 的 cordis.patch.yml 覆蓋行並熱重載,帶 revision 衝突檢測。也可直接在 profile 中寫頂層覆蓋,例如:
- id: progress-nudge
name: dsh-progress-nudge
config:
threshold: 10
repeat: true
includeSubagents: false
teamScope: lead
language: zh-CN
簡體內置提醒大意(完整三語文案見倉庫 index.js 的 DEFAULT_TEXTS):
【進度提醒 · 來自 Harness 的自動提醒,不是用戶的新指令】
你已連續 {n} 輪只發起工具調用、沒有向用戶輸出任何文字……
請先用一兩句話簡短彙報:① 已經完成了什麼;② 當前結果或關鍵發現;③ 下一步準備做什麼。
彙報之後再繼續調用工具執行任務。
安裝與啓用¶
任選其一(命令來自 README):
npm 源安裝(推薦):在插件管理器安裝框填寫 dsh-progress-nudge,或:
dsh plugin --profile <profile> add dsh-progress-nudge
本地目錄安裝(Windows 跨盤時注意用 file: 前綴複製進 profile):
dsh plugin --profile <profile> add file:<本目錄絕對路徑>
新增 bundle 通常 HMR 生效;若無新插件行或設置頁,重啓 dsh 後再看。
卸載:插件管理器移除,或:
dsh plugin remove dsh-progress-nudge
典型用法與驗證¶
日常用法是安裝並啓用插件後,在 設置 → 過程彙報 按需調低 threshold(開發自測 README 曾用閾值 3)或改語言/文案,然後讓某會話連續多輪只調工具、不輸出助手 text。達到閾值後,下一次模型請求前對話中應出現 progress-nudge 注入行;模型回覆含 text 的後 streak 清零。
README 給出的驗證清單包括:
- 插件管理頁出現「進度提醒 / Progress Nudge」及圖標;
- 設置頁六個字段可保存並提示「已保存」;
- 連續 10 輪(默認閾值)沉默後第 11 次請求前出現注入;
- 文字回覆後清零;
repeat: false時同段沉默不二次提醒; - 啓用 Agent Teams 時按
teamScope區分 Lead 與成員。
README 記錄過在 dsh 0.2.1-rc.5、插件 v0.1.1、閾值 3 下的實測:注入出現在連續 3 輪無文本之後,且緊跟着帶 text 的助手消息。v0.2.0 起默認閾值爲 10,並新增設置頁與團隊範圍。
適用場景與注意¶
適合:使用 DeepSeek V4.1 Flash 等模型、易出現長工具鏈且界面缺少文字進展的場景;啓用 Agent Teams 時希望只打擾用戶正在看的 Lead 會話(默認 teamScope: lead)。
邊界(README 已知限制):
- 計數不持久化,進程重啓從 0 計,不影響日誌爲唯一事實來源的正確性;
- 會話壓縮等替換表面時不回放重算;
- 其它插件在
agent/pre-step返回reject時,本插件不追加提醒; - 設置頁依賴瀏覽器端 warm 服務;Host 未掛載 settings 時頁面不可用。
安全與權限:插件以當前 dsh 進程權限運行,僅觀察會話事件並在 step 邊界注入提醒消息。安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的環境策略。
結尾¶
dsh-progress-nudge 用最小的 Harness 擴展點(agent/pre-step + 設置命名空間)解決「工具循環對用戶不可見」這一工作流痛點:可配置、可回放、不硬斷執行。需要細節與設計取捨表時可直接閱讀倉庫 README。