dsh-progress-nudge:連續工具輪次後的過程彙報提醒

前言

在 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 給出的驗證清單包括:

  1. 插件管理頁出現「進度提醒 / Progress Nudge」及圖標;
  2. 設置頁六個字段可保存並提示「已保存」;
  3. 連續 10 輪(默認閾值)沉默後第 11 次請求前出現注入;
  4. 文字回覆後清零;repeat: false 時同段沉默不二次提醒;
  5. 啓用 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。

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

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

小夜