![]() |
![]() |
![]() |
![]() |
screenshots.json 声明给 dsh-market 详情页画廊。
## 快速开始
### 前置条件
- DSH Desktop(主机契约按 0.1.2-alpha.1 验证);
- Node.js `^22.19.0 || >=24`(宿主运行时通常已满足);
- PowerShell(部署脚本是 `.ps1`)。
### 安装(一条命令)
> 🛒 **已收录于 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)(Workflow & Automation 分类)**——装了应用内 [dsh-market](https://github.com/dsh-market/dsh-market) 插件市场的话,搜索 “task-coordinator” 一键安装/升级;下面的 git clone 路线是无市场时的等价安装方式。
```powershell
git clone https://github.com/Kayungko/dsh-plugin-task-coordinator.git
cd dsh-plugin-task-coordinator
pwsh install.ps1 -Source .
```
脚本做三件事:把插件复制进 profile 的 `node_modules/`(不跑 `pnpm install`、不碰 lockfile)、在 profile manifest 登记依赖与 bundle、登记 `.package-map.json`——**改前全部自动备份**到 `backups/<时间戳>/`。
装完**重启 DSH Desktop**即可,任何会话都能使用十一个工具和 `/tasks` 命令。
> 💡 `install.ps1` 的默认 `-Source` 是 `$PSScriptRoot/plugin`(工作区布局);在插件仓库根目录直接运行要**显式传 `-Source .`**。
> 重复执行是安全的:文件覆盖幂等,manifest 登记自动去重。
### 验证
重启后,把这句发给任意会话:
`列一下当前可见的任务`
它调用 `task_list` 并返回任务列表(空列表也算正常回答),即工具已挂载 ✅
卸载:`pwsh install.ps1 -Source . -Uninstall`(同样重启后生效)。
## 怎么指挥总控(真正有效的提示词写法)
模型只有把你的话映射到工具时才会协调。「可以随时使用 /task 插件」这类含糊授权是可做可不做的裁量——会话倾向单干(实测踩过的坑)。两条规则:
1. **点名工具、用要求语气**。例:「用 `task_spawn_batch` 把剩余工作拆成并行子任务会话(附 team 名),用 `task_wait` 收集结果,不要全部自己做。」
2. **/goal 模式下,总控要求必须写进 goal 的 objective**——每个续轮只以它为准。推荐写法:
> 作为总控会话接手接下来的开发:① 可拆分的工作必须用 task_spawn_batch 派发给子任务会话并行执行(附 team 名),不要全部自己做;② 用 task_wait 收集结果并汇总;③ 子任务会话内可再用 subagent 并行;④ 完成里程碑或关键节点及时推送远端 main。
「/task 插件」「协调一下」这类模糊说法也能识别——0.9.0 起技能描述带别名表、工具描述带触发语境——但上面的模板才是可靠写法,goal 的 objective 尤其要用它。
## 十一个工具
| 工具 | 用途 |
|---|---|
| `task_list` | 列出协调可见的任务(含稳定 sessionId、状态、标题、todo/goal 进度);可按 `team` 过滤;`ungrouped: true`(0.19.0)只列不属于任何工作区的会话——未分组桶的补救视图,配合 `task_workspace` 与注册表 `expectedWorkspace` 归置 |
| `task_progress` | 深入读取单个任务:实时/冷状态、排队消息、对话尾部、todos、goal |
| `task_send` | 投递可见的后续提示词(`mode: queue` 或 `steer`;`reference` 关联先前指令),返回 `messageId` + `queueDepth` 回执 `{nextTurn, nextStep}`(投递后口径;next-turn 每轮恰消费 1 条,深度 N ≈ N 轮后才被读) |
| `task_spawn` | 创建 + 命名 + 启动新任务(标题遵循 `MMDD|类型|主题`;可用 `team` 编组),返回 `correlationId`;默认附带回报约定;可选 `externalRef`(0.25.0)携带外部派发方的自由文本对应标识(如经任务桥派发的 Codex 对话——trim 后 ≤200 字符,registry 持久存储,回执/`task_list` 行/`task_progress` 透出,只存储回显不解析);**工作区落位兜底链**(0.19.0):精确匹配挂载(0.12.0)→ 子目录挂最近祖先工作区并归一到工作区根(默认 `ancestor` 档,回执+kickoff 双明示)→ git worktree 刻意保隔离落未分组(强警告)→ 未分组必附警告与补救提示;回执必带 `workspace`({id,title} 或 null)与 `placement` 枚举;可选 `provider`+`model`(+`reasoningEffort`)指定子会话模型路线,开场前安装(0.13.0);省略时回退插件默认路线(设置 → 任务编排,0.18.0),再回退宿主默认 |
| `task_confirm` | 把拆分/派发方案做成**交互式审批卡**弹给用户,阻塞直到回答;批准返回单次 `confirmationId` |
| `task_confirm_select` | 把任务清单做成**多选卡**(宿主中性提问 UI,非琥珀审批卡):用户勾选要派发哪些(部分派发),可在自定义输入行写调整意见;批准把 `confirmationId` 绑定到选中子集,`task_spawn_batch` 强制校验(夹带未勾选标题报 `confirmation-mismatch`) |
| `task_spawn_batch` | 一次批量创建整个拆分方案(`tasks: [{title?, prompt}]` + 统一 `team`);达到确认阈值时必须携带 `confirmationId`;单条失败不中止整批 |
| `task_wait` | 阻塞直到目标任务空闲(或超时);支持多目标(`sessionIds` + `mode: all/any`);冷目标(无 live agent)立即返回空闲——冷 ≠ 无待办 |
| `task_cancel` | 取消目标的活动轮次(保留其排队消息;被停目标需下一条消息才被唤醒——取消不自动清队列) |
| `task_workspace` | 列出宿主工作区,把**既有**会话挂入/移出工作区(归置落入「未分组」的会话),或 `migrate` **跨工作区真迁移**(0.16.0):克隆完整历史到以目标路径为 cwd 出生的新会话、挂载克隆、工作区级归档原会话(展示层折叠:旧会话仍可读可续,对旧 id 发消息会分叉)、返回新 id;运行中的会话拒迁(先 `task_wait`)。直连宿主 workspace 实体,不触碰会话内容 |
| `task_models` | 列出**本部署实际接入**的模型路线——provider/model/reasoning-effort 精确 id(宿主活体目录,GUI 选择器同源)+ 应用级默认 + 插件默认路线 `pluginDefault`(0.18.0);指定子会话模型前先查这里,永远不要猜 id(0.14.0) |
### `/tasks` —— 不进模型的快速通道
只读查询可以完全绕开模型:`/tasks`(全部任务)、`/tasks team <名称>`(单个工作流编组)、`/tasks