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

参考资源

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

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

小夜