對話式開發環境中,構建、訓練或下載等長命令一旦執行,常會阻塞整個會話,導致後續操作無法進行。DeepSeek Harness 插件 dsh-plugin-background-tasks 旨在解決這個問題,它復刻了 Google Antigravity 的 run_command 工作流體驗:短命令即時返回結果,長命令自動轉入後臺,任務完成後再主動彙報。
插件簡介¶
- 名稱:
yaopushen/dsh-plugin-background-tasks - 維護者:yaopushen
- 類別:工作流
- 許可證:MIT
核心功能¶
本插件提供以下能力:
- 長命令異步化:命令先同步等待預設時間(默認 10 秒)。若在此窗口內完成,直接返回結果;若未完成,則自動轉入後臺運行,釋放對話資源。
- 完成主動彙報:後臺任務結束時,系統會自動推送結果摘要(包含退出碼和輸出尾部),無需手動輪詢。
- 狀態隨時可查可控:每個後臺任務都有唯一的 ID,可通過列表查看、讀取輸出或終止任務。
- 安全不越界:命令通過宿主的統一執行通道(
ctx.shell)運行,受會話沙箱策略和審批管線約束。 - 開箱即用:自帶「後臺任務模式」預設,選擇該預設即可獲得統一的操作體驗。
安裝與啓用¶
通過 DSH 的插件管理器安裝:
dsh plugin --profile web add github:yaopushen/dsh-plugin-background-tasks
安裝完成後,在新建會話時選擇 「後臺任務模式」 預設即可啓用。
配置與用法¶
基礎配置¶
在 cordis.patch.yml 或主配置中,可以通過 config 字段覆蓋插件配置。關鍵參數爲 waitMsBeforeAsync,表示同步等待的毫秒數,默認爲 10000(10 秒)。
# cordis.patch.yml 覆蓋配置示例
- insert:
- id: dsh-plugin-background-tasks
name: dsh-plugin-background-tasks
config:
waitMsBeforeAsync: 10000 # 統一標準:10 秒
使用工具¶
調用 run_command 工具執行命令。參數包括 command(完整命令行)、cwd(工作目錄)、description(任務說明)等。
- 同步窗口:同步等待窗口是部署級配置,由
waitMsBeforeAsync控制,模型側無法在單次調用中調整。 - 後臺運行:超窗或調用中止時,命令轉入後臺,返回
JobId(格式爲command-N),並附帶完成通知指引。 - 沙箱與權限:命令受會話沙箱模式約束(僅寫操作受限,讀操作不受限)。若需加寬權限,必須通過
ctx.approval審批管線,提供justification(理由)和sandbox_permissions(權限)參數。
注意事項¶
- 依賴組合:該插件必須組合
ctx.shell執行器及jobs運行時使用(例如@deepseek-ai/dsh-jobs-local+@deepseek-ai/dsh-tool-jobs)。未組合時調用會報錯。 - 會話隔離:後臺任務按 owner 會話隔離,跨會話不可見,銷燬會話時任務會被取消。
- 安全邊界:命令受會話沙箱模式約束。
confining executor模式下,越界文件操作會被拒絕。加寬請求需走審批管線。 - 安裝器行爲:安裝器會跳過已存在的預設目錄,更新預設需手動同步
$DSH_HOME/.agent-presets/background-shell/。