对话式开发环境中,构建、训练或下载等长命令一旦执行,常会阻塞整个会话,导致后续操作无法进行。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/。