dsh-bgjobs:将 DSH 任务提交为独立后台运行

前言

DeepSeek Harness (DSH) 提交的命令默认跟随 DSH 进程运行。当执行编译、数据导出等长时间任务时,DSH 进程关闭会导致任务中断。dsh-bgjobs 插件利用 Windows 任务计划程序托管后台任务,使任务在 DSH 进程外独立运行,并提供实时监控与管理能力。

核心功能

  • 进程外独立运行:任务经 schtasks 托管,DSH 崩溃或关闭不影响执行。
  • 实时输出面板:网页右下角浮动面板实时刷新输出,支持拖拽、最小化及按工作区分组。
  • 清理已完成:支持拖拽删除单条已结束任务,或批量清理(超 24h / 全部)。
  • 完成通知:任务退出后弹出 Toast 提醒,支持将结果发回创建 Agent。
  • 会话内等待:使用 bgjob_wait 让 Agent 等待结果而不占住对话,支持 any 竞速(先完成先返回)与 all 合取(任一失败即刻返回)。
  • 断线续跟:DSH 重启自动恢复跟踪,旧任务 ID 也能从磁盘查询状态。
  • 离线管理:不依赖 DSH 的 CLI 或 GUI 进行任务管理。
  • 可选沙箱:bgjob_submit_pwsh 支持可选沙箱约束后台任务文件权限。
  • MCP 调用托管:将 MCP 工具调用提交为后台任务,支持预热/冷启动/禁用三态。
  • 零残留:任务跑完自删任务计划,done 任务默认保留展示。

安装与启用

前置条件:已安装 DSH (@deepseek-ai/dsh)、PowerShell 7 与 Node.js (^22.19.0 或 >=24),且系统为 Windows。

$pf="web"; dsh plugin --profile $pf add github:bitsmug/dsh-bgjobs || dsh plugin --profile $pf approve-builds koffi; dsh plugin --profile $pf add github:bitsmug/bgjobs && Write-Host "✓ bgjobs安装成功!" -ForegroundColor Green

若安装时遇到 ERR_PNPM_IGNORED_BUILDS 错误(依赖原生库 koffi),需先执行:

dsh plugin --profile $pf approve-builds koffi

重启 DSH 后生效,Agent 将获得后台任务管理工具。

使用说明

插件提供以下 Agent 工具:

  • bgjob_submit(name, command, workdir, [wait], [notify], [notify_mode])
    提交后台任务,command 为 bat 语法。wait 参数控制提交后原地等待的秒数。

  • bgjob_submit_pwsh(name, command, workdir, [wait], [sandbox], [justification], [notify], [notify_mode])
    提交后台任务,command 为 PowerShell 语法(支持 UTF-8 日志与安全退出码)。sandbox 为可选沙箱配置。

  • bgjob_submit_mcp(name, workdir, tool, [arguments], server | server_config, [timeout_seconds], [wait], [notify], [notify_mode])
    将 MCP 工具调用提交为后台任务。需先在设置页开启「MCP 任务」开关。

  • bgjob_mcp_tools(server | server_config, [refresh])
    列出 MCP server 的注册工具,用于确认工具名与参数形状。

  • bgjob_status(jobId)
    查询任务状态、退出码及日志尾部。不建议循环轮询,请使用 bgjob_wait。

  • bgjob_wait(jobId | jobIds, [timeoutSeconds], [logic])
    等待任务结束并返回结果。logic 参数支持 any(任一先结束,默认)或 all(全部成功)。

  • bgjob_list
    列出当前会话提交的全部任务。

日志路径:<workdir>\.dsh\bgjobs\<jobId>\stdout.log。退出码写入 <workdir>\.dsh\bgjobs\<jobId>\exitcode.txt。

退出码定义:0=成功,1=工具报错,2=连接或调用失败,3=超时。

典型用法示例:
将「clone Linux 内核源码到 D:\work\linux,再 make -j16 编译」这条长链路放后台跑,跑完通知我(notify: on-exit)。

注意事项

  • MCP 依赖:MCP 引擎依赖 @modelcontextprotocol/sdk 与 yaml,随包发布。
  • 构建脚本:安装过程依赖 koffi,若遇到构建脚本被忽略的错误,需执行 approve-builds koffi。
  • 沙箱安全:沙箱安全性未充分验证。
  • 资源管理:任务完成后默认自删任务计划,但日志文件保留在磁盘。

总结

dsh-bgjobs 解决了 DSH 长任务运行不稳定的问题。通过 Windows 任务计划程序托管,它确保了任务的持续性与可控性,同时提供了完善的监控、等待与通知机制,适合处理编译、下载、批量处理等场景。

文档与源码:
GitHub | 插件目录

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

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

小夜