dsh-task-control
Task control for DSH Web: pause / resume / cancel the in-flight conversation task from the composer area.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:p2coder/dsh-task-control说明文档
阅读完整 README ↗dsh-task-control
任务控制插件(DSH Web):提交对话任务后,除了现有的"停止/取消",还提供 暂停任务、恢复任务 两个控制,以 Cordis 双面插件(宿主端 + 浏览器端)实现。
功能
| 操作 | 行为 |
|---|---|
| 暂停 (Pause) | 两种模式:强制暂停与安全暂停;未显式指定时按设置 →「任务控制」中的默认粒度执行(出厂默认 safe wait)。 |
| · 安全暂停 | 从不中断工作:有工具在执行 → 延迟到安全界限(工具执行完毕、tool/result 落地且无更多 in-flight 工具)才真正暂停;有推理在执行 → 按设置中的推理粒度:wait(默认,不中断 LLM,等推理完成后再暂停)或 stop(终止当前 LLM 输出,恢复时重新推理)。期间 trace 持续记录。 |
| · 强制暂停 | 立即取消正在执行的工具、中断推理输出;暂停状态记住被中断的工具(interruptedTool)。恢复时先查该工具在会话日志中的实际结果:已执行完成 → 直接继续不重跑;被中止/状态未知(可能部分执行)→ 提醒用户"上次暂停时 xxx 工具没有执行完成,将重新执行",由用户选择 重新执行该工具 / 跳过该工具 / 保持暂停。 |
| 恢复 (Resume) | 清除暂停标记,从暂停点继续执行(会话日志即 trace,不重发原始提示词、不重跑已完成工作)。安全暂停:从暂停点继续;若恢复时任务实际仍在运行(暂停未真正落地)→ 仅清除标记,期间工具/模型执行结果正常显示。强制暂停(有被中断工具):必须先确认,用户选择 rerun/skip 后按选择继续。 |
| 取消 (Cancel) | 立即中断当前回合(保留输入队列),清除暂停标记;若有工具在执行,立即终止并在回复中说明其预期目的、提醒检查副作用(文件/进程/网络等)。 |
暂停粒度默认值:在 Web 设置 →「任务控制」中配置(出厂默认
safe+wait)。命令/pause(及输入区暂停按钮)未显式指定模式时按此默认执行;/pause force、/pause safe [stop|wait]显式覆盖。taskControl服务:pause(sessionId, { mode, reason })(缺省字段同样按设置解析)、resume(sessionId, { confirm, choice: 'rerun'|'skip' })。强制暂停后点恢复会弹出三选菜单(重新执行 / 跳过该工具 / 保持暂停)。
状态模型(Route A):暂停/恢复状态不再写入会话日志(task-control/paused / task-control/resumed 是自定义事件类型,harness 的持久化读取器只认内置事件类型清单或带 ignorable 标记的事件,写进去会导致会话在重启后无法加载)。状态改由插件自己的持久化 store 保存(~/.dsh/task-control/.json,原子写;测试可用 DSH_TASK_CONTROL_STATE_DIR 覆盖目录),所有读取方统一走这一个数据源:
- 浏览器 dock:轮询宿主路由
/task-control/state?session=(每 2 秒); - 浏览器设置页:
/task-control/settings路由读写暂停粒度默认值(默认safe+wait),修改后立即生效;