dsh-plugin-background-tasks: 長命令異步化執行插件

對話式開發環境中,構建、訓練或下載等長命令一旦執行,常會阻塞整個會話,導致後續操作無法進行。DeepSeek Harness 插件 dsh-plugin-background-tasks 旨在解決這個問題,它復刻了 Google Antigravity 的 run_command 工作流體驗:短命令即時返回結果,長命令自動轉入後臺,任務完成後再主動彙報。

插件簡介

  • 名稱:yaopushen/dsh-plugin-background-tasks
  • 維護者:yaopushen
  • 類別:工作流
  • 許可證:MIT

核心功能

本插件提供以下能力:

  1. 長命令異步化:命令先同步等待預設時間(默認 10 秒)。若在此窗口內完成,直接返回結果;若未完成,則自動轉入後臺運行,釋放對話資源。
  2. 完成主動彙報:後臺任務結束時,系統會自動推送結果摘要(包含退出碼和輸出尾部),無需手動輪詢。
  3. 狀態隨時可查可控:每個後臺任務都有唯一的 ID,可通過列表查看、讀取輸出或終止任務。
  4. 安全不越界:命令通過宿主的統一執行通道(ctx.shell)運行,受會話沙箱策略和審批管線約束。
  5. 開箱即用:自帶「後臺任務模式」預設,選擇該預設即可獲得統一的操作體驗。

安裝與啓用

通過 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/。

參考資源

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

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

小夜