用 dsh-background-agents 給 DeepSeek Harness 加上可交互的長會話後臺代理

前言

在 DeepSeek Harness(dsh)裏跑長任務時,常見的缺口不是「能不能丟到後臺」,而是丟出去之後還能不能繼續說話。內置的後臺作業偏即發即棄:可以看到輸出、可以殺掉進程,但很難在同一場對話裏給它補一句「先看 snapshot 測試」、也很難在 Web 側欄裏點開子會話。調度類插件負責「何時啓動」,狀態欄類插件負責「展示進度」,真正缺的是對一場可續聊子會話的交互式操控。

dsh-background-agents 把這件事接到官方子代理接縫上:啓動一個持續工作的子 agent,在側欄看進度,隨時發消息引導,必要時請求中斷,父會話不用切走。v0.5.0 之後還加了一套持久化的多代理團隊房間,消息總線和任務板走 harness 自己的存儲,重啓後還能恢復。

DeepSeek Harness 的官方定位是「一切皆插件」。社區站點 DeepSeek Harness 插件庫 收錄了一批擴展,它是獨立運營的目錄,與 DeepSeek / 幻方沒有從屬、背書或贊助關係。本文按該目錄詳情頁、GitHub README / package.json / cordis.patch.yml、npm 發佈頁,以及 DeepSeek Harness 官方倉庫 交叉覈對後整理。

這是什麼

dsh-background-agents 是一款會話與消息類插件,由 PerryLink 維護,許可證 Apache-2.0,主要語言 JavaScript。目錄頁給它的定位是:爲 DSH 提供交互式長會話後臺 agent——可啓動一個持續工作的子 agent,在 Web 側邊欄查看進度、隨時發消息引導、必要時中斷,全程不離開當前會話。

倉庫 README 寫得更具體:它把即發即棄的後臺作業升級成可續聊的子會話,並在同一套控制面上加上進度注入、空閒歸檔和側欄面板。npm 包名同樣是 dsh-background-agents,當前發佈版本 0.5.1(2026-08-17)。兼容聲明是 DeepSeek Harness 0.1.0-rc.6,peer 範圍爲 >=0.1.0-rc.5 <0.2.0;Node 要求 ^22.19.0 || >=24.0.0。截至 2026-08-18,目錄頁與 GitHub 均顯示 5 顆星。倉庫收錄於目錄的日期是 2026-08-15。

維護者在 README 裏把它和另外幾類社區插件劃開了邊界:titanwings/dsh-automation 負責定時啓動新會話,本插件沒有 cron;vlln/dsh-task-status 展示工具級作業,本插件創建並操控的是 agent 會話;YYTbit/dsh-plugin-agent-dashboard 偏展示,本插件的行可以跳進子會話、發消息、請求停止。

核心功能

五個操控工具

插件在官方子代理接縫(startContinuable / followup / interrupt / listChildren)上提供五個工具,不自己做生命週期路由,也不去殺進程樹:

  1. background_agent:啓動一個可續聊的子代理。可選 labeltool_filterpersonamax_depth,以及 childProvider / childModel 覆蓋子代理的模型路由。tool_filter 只從子代理視野裏移除工具,不會授予新工具。
  2. bg_message:按 agent id 投遞後續輪次。
  3. bg_list:列出本會話後臺代理狀態;recursive: true 時帶 parentId / depth 看後代樹。目錄不可用時返回明確的 unrecoverable 標記,不會捏造空列表。
  4. bg_result:讀取子代理最新助手輸出。回退到推理內容時標記 textSource: 'reasoning';超長文本按 resultMaxChars(默認 4000)截斷並標記 truncated
  5. bg_stop:請求中斷當前輪次。停止等於 request interruption,清理工作屬於延續管理器。

一次性(one-shot)子代理不會出現在 bg_list 裏,也不能被 bg_message 投遞。子代理默認繼承父會話的模型路由。

進度注入與空閒歸檔

autoReport 默認開啓:每個子代理輪次結束後,向父會話注入一條節流進度行,規範前綴是 [background-agent] …reportDelivery 默認 quiet,把該行追加到下一次模型請求;設爲 wakeup 時,父會話空閒會再開一輪。同一子代理兩次注入的最小間隔由 reportThrottleMs 控制,默認 15000 毫秒。

空閒清掃默認開啓(autoArchive: true)。安靜超過 idleTimeoutMinutes(默認 120 分鐘)的子代理會被歸檔,之後可用 bg_message 喚醒。autoArchive: false 則讓安靜的監視者暫停駐留,清掃器不會歸檔它們。每個父會話未歸檔後臺代理的硬上限是 maxBackgroundAgents,默認 4;這個預算與內置 subagent 啓動的可續聊直接子代理共享。

進度與狀態不靠單獨數據庫。結構化事實寫進父會話日誌的 background-agents/fact 事件(帶 ignorable: true),儀表盤和 bg_list 每次打開都從日誌重建。

Web 側欄面板

backgroundAgents 會話投影把父日誌摺疊成儀表盤行。Web 側欄面板可以看即時狀態、跳進子會話、發消息、請求停止,以及預覽結果。這一半依賴 Web 客戶端注入(package.json 裏聲明瞭 @deepseek-ai/dsh-client-ui-sidebar 等),工具本身在 headless profile 上也能用。

團隊房間(v0.5.0+)

/room 命令族加上八個 room_* 工具提供持久化多代理房間:成員各自是獨立會話,帶定向 / 廣播消息總線、共享任務板和共享時間線。數據放在 team_rooms 存儲域,後端是 SQLite 或 JSONL,不另起服務。跨成員任務交接走官方審批接縫:room_transfer_task 沒有 answerer 授權時失敗關閉。

團隊房間依賴 @deepseek-ai/dsh-storage-domain。沒有存儲域時,/roomroom_* 禁用,五個 bg_* 工具仍可加載。bundle 補丁會插入 storage / storage-json / storage-domain 行;在已經組合這些行的 web profile 上按 id 覆蓋是安全的,在沒有存儲包的構建上這些行加載失敗,房間半側保持休眠。

房間上限可在配置裏改,默認 maxRooms 16、maxMembersPerRoom 8、maxRoomsPerMember 4。單條房間消息超過 maxMessageChars(默認 4000)會被拒絕,不會截斷。

與內置子代理工具的關係

Harness 核心已有 subagentsend_messageinterrupt_agent 和子端 report。本插件的 bg_* 是它們的會話級同伴,可以一起掛載:

  • background_agentsubagentbackgroundMode: 'continuable')走同一條 startContinuable 接縫,額外做 per-child 的 tool_filter / persona / max_depth 校驗和每會話上限。
  • bg_message / bg_stopsend_message / interrupt_agent 語義相同,同時維護投影事實。
  • 內置 report 由子模型自己調用;本插件在每個子輪次後自動注入節流進度。

核心工具沒有 bg_listbg_result、空閒歸檔,以及按父會話摺疊的面板。本插件也不做定時觸發、跨機器 / 遠程代理,也不改官方子代理激活契約。provider 必須指向具備 prepareContinuable 的 provider;缺失時 background_agent 會一直失敗。

安裝與啓用

社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:

dsh plugin add github:PerryLink/dsh-background-agents

需要可復現安裝時,目錄頁的寫法是把 commit 哈希接到倉庫後面:

dsh plugin add github:PerryLink/dsh-background-agents#commit

#commit 換成實際提交哈希。截至 2026-08-18,main 最新提交是 4bcab91f764dc30994119857824e61bb3515f90e,對應發佈標籤 v0.5.1。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證。

倉庫 README 另外提供了指定 profile 的 git / npm 渠道。倉庫已提交構建產物 lib/,git 安裝不需要 prepareallowBuilds。bundle 補丁會寫入 id: background-agents 這一行,並把必填項 provider 設爲 spawn

# git 渠道(跟蹤 main)
dsh plugin --profile web add "github:PerryLink/dsh-background-agents#main"

# 固定發佈標籤
dsh plugin --profile web add "github:PerryLink/dsh-background-agents#v0.5.1"

# npm 渠道(已發佈版本,當前 0.5.1)
dsh plugin --profile web add dsh-background-agents

重啓後驗證配置行:

dsh --profile web --dump-config | grep -A4 'id: background-agents'

插件需要子代理脊柱已掛載;README 說明任何基於 @deepseek-ai/dsh-base 的 profile 都具備。可調項都是 Schemastery Config 字段,改 cordis.yml 或 profile 覆蓋,不要改源碼。僅 provider 爲必填,其餘如 autoReportidleTimeoutMinutesmaxBackgroundAgents、房間上限等都有默認值。

卸載:

dsh plugin --profile web remove dsh-background-agents

也可以從 profile 補丁裏刪掉該行。

典型用法

裝好並確認 dump-config 裏出現 id: background-agents 之後,在任意會話裏直接讓模型調用工具,或按 README 的示例手動走一遍:

background_agent "watch the repo for test failures and keep me posted" (label: test-watch)
bg_list
bg_message <agentId> "also check the snapshot tests now"
bg_stop <agentId>

操作順序可以按下面理解:

  1. background_agent 啓動子代理,拿到穩定的 agent id。需要限制子代理工具時傳入 tool_filter;名稱會按配置裏的 allowedChildTools 校驗,空或未設表示不額外限制。
  2. bg_list 看狀態。Web 側欄同一套投影也可以跳轉、預覽 bg_result
  3. 任務方向變了,用 bg_message 投遞後續輪次,不必新開一個子代理。
  4. 需要停下當前輪次時用 bg_stop。這是中斷請求,不是殺進程。
  5. 若啓用了存儲域,再用 /room create|join|send|tasks 以及 room_postroom_create_taskroom_claim_taskroom_transfer_task 做跨會話協作。

倉庫還帶了一個無需 API key 的端到端演示,用腳本化 LLM 驅動父會話和後臺子代理。dev/ 目錄被 gitignore,路徑要按本機 checkout 調整,PowerShell 示例如下:

$env:DSH_HOME = 'D:/deepseek-harness/Project/Plugins/dsh-background-agents/dev/dsh-home'
pnpm dsh --profile headless --patch dev/cordis.yml "【父會話】驅動後臺 agent 演示"

適用場景與注意事項

適合已經在本地跑 DeepSeek Harness、需要「一邊繼續對話、一邊讓子代理盯倉庫 / 跑長任務」的開發者。Web profile 還能用側欄面板操作;headless 則主要走五個 bg_* 工具。需要多會話分工、共享任務板時,再打開團隊房間半側。它不適合當作定時任務系統,也不能把子代理派到另一臺機器上。

使用前建議先接受這些限制:

  • 插件與當前 dsh 進程同權。workshop 清單聲明的權限是 session:appendsubagent:spawntools:register。安裝前檢查 GitHub 源碼與 Apache-2.0 許可證;需要可復現安裝時固定 commit 或 v0.5.1 這類標籤。
  • 子代理是該部署進程內的可續聊會話。進度事實寫在父會話日誌裏;團隊房間寫在 team_rooms 存儲域。沒有獨立數據庫,也不對外發網絡請求。
  • tool_filter 只會少給工具,不會多給。bg_stop 不殺進程樹。
  • 沒有 @deepseek-ai/dsh-storage-domain 時,房間相關命令和工具不可用,五個 bg_* 仍在。
  • maxBackgroundAgents 計入本會話每一個可續聊直接子代理,包括內置 subagent 啓動的那些。
  • 社區插件目錄不是官方應用商店。兼容聲明釘在 0.1.0-rc.6 這一檔 peer 範圍,升級 Harness 後應重新驗證。

小結

dsh-background-agents 把 DSH 的後臺能力從「丟作業」補成「可續聊的子會話」:五個 bg_* 工具走官方子代理接縫,側欄可以看進度、發消息、請求中斷;v0.5.0 起還可以用團隊房間做跨會話協作。它不負責定時觸發,也不把 agent 派到遠程機器。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-background-agents/

GitHub:https://github.com/PerryLink/dsh-background-agents

npm:https://www.npmjs.com/package/dsh-background-agents

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

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

小夜