dsh-task-hub
English · 简体中文
DSH 的任务中心插件:从 TAPD / 禅道 / GitLab 中读取分配给你的需求、任务或 Issue,选一个工作区、手填分支名,一键派发 Agent 开始干活。
三个来源是三选一:顶部用 tab 切换当前来源,同一时间只列出一个来源的数据,也只有一个来源生效;切换不会把三个来源合并展示。每个来源的地址、凭据、项目等配置分别保存在 settings.json 里,来回切换不会丢。
安装
dsh plugin --profile web add dsh-task-hub
装完重启 dsh web,侧边栏会出现「任务中心」。npm 上还没发布时可以改从仓库安装:
dsh plugin --profile web add github:handsomeboy65/dsh-task-hub
桌面端请在应用内的 设置 → 插件 里安装。
分支名手动填写
派发弹窗要求填写完整分支名(例如 feature/order-export),插件不会再自动拼接 issue_<需求号>,也不会追加任何后缀。分支名会用 git check-ref-format --branch 校验,非法名字直接报错。
首次配置
点击面板右上角「设置」,先在顶部选择来源,再填写该来源的配置。
TAPD
| 字段 | 说明 |
|---|---|
| 认证方式 | Token 或 API 账号 + 密码 |
| API 账号 / 密码 | TAPD 开放平台 → 个人设置 → API 账号,不是登录密码 |
| 处理人 | 过滤需求的处理人;留空表示用 TAPD 账号本身 |
| 项目 ID | TAPD 项目的 workspace_id,多个用逗号分隔;可点「拉取项目」选择 |
| Nick | 拉取项目列表时使用,可留空 |
禅道
| 字段 | 说明 |
|---|---|
| 禅道地址 | 例如 https://zentao.example.com,会自动补 /api.php/v1 |
| 账号 / 密码 | 禅道登录账号;密码只写入 DSH credentials |
| 范围 | 产品 读取产品需求(stories),项目 读取项目下各执行的任务(tasks) |
| 产品 / 项目 | 填 ID,或点「拉取列表」后从结果里选 |
禅道没有“分配给我”的接口,插件会先登录拿 token,再按当前账号在本地过滤。
GitLab
| 字段 | 说明 |
|---|---|
| GitLab 地址 | https://gitlab.com、极狐 GitLab 或自建实例根地址 |
| 访问令牌 | Personal Access Token,至少 api / read_api 权限 |
| 项目路径 | 可选,group/project;留空表示读取整个实例上分配给你的 Issue |
| 标签 | 可选,逗号分隔,作为 GitLab labels 过滤条件 |
凭据写入 DSH credentials(也可用环境变量 TAPD_API_USER / TAPD_API_TOKEN / TAPD_API_PASSWORD / ZENTAO_PASSWORD / GITLAB_TOKEN 提供),任何密钥都不会落在插件数据文件里。
通用
| 字段 | 说明 |
|---|---|
| 默认工作区 | 派发时默认选中的 DSH 工作区(如 TMS2.0) |
| 基线分支 | 留空则自动探测 origin/HEAD |
| 隔离 worktree | 默认开启:在仓库同级 .dsh-worktrees/<仓库>-<分支> 另开工作树,不打断你当前分支 |
| 隐藏已完成 | 列表默认只显示未完成项 |
派发流程
面板列出当前来源里「处理人 = 我」的条目,按最近修改排序,可筛选 未完成 / 已完成 / 全部。TAPD 需求的「应用」字段(如
德速TMS2.0客户端)单独占一列,排在 ID 之前;多应用时逐个标签竖排,当前来源没有应用字段时该列整列隐藏。点某条的「派发 Agent」。
在弹窗里确认:目标工作区(或手填仓库路径)、分支名称、是否用 worktree、基线分支,以及可选的「补充要求」。
「补充要求」不是拿来手写整条任务说明的:留空时插件会用需求标题、描述、附件、图片和工作约定自动生成一份任务说明;你填的内容会以
## 补充要求追加在它后面,不会替换需求正文。确认后插件依次执行:
git worktree add -b <分支名>(或就地checkout -b);- 在工作树/仓库上建立(或复用)DSH 工作区,并创建会话;
- 把条目标题、描述、状态、优先级、应用、截止时间、来源链接和「不要 push、跑测试、中文总结」等工作约定写进新会话的输入框草稿;
- TAPD 会带上需求附件(含父/根需求)和描述截图;GitLab 会下载描述里的
/uploads/...图片与文件;禅道目前只带文字。这些附件同样只作为草稿附件挂在输入框上; - 会话标题改为
<分支名> · <标题>,并自动跳转到该会话。 不会自动发送:跳过去之后,任务说明和附件都已经在输入框里,你看一眼、改一改,自己按发送。
面板显示分支、会话状态(运行中 / 空闲 / 待发送 / 会话已不存在),每 8 秒刷新一次运行状态。
重复派发同一条时,如果之前的会话还在,会直接返回原会话而不会再建分支;那次派发的草稿还在的话,点「打开」会把草稿重新放回输入框(输入框已有内容时不会覆盖)。只有当你显式点「补发附件」时,才会把附件真正发给该会话。
数据与失败模式
- 设置:
~/.dsh/task-hub/settings.json;派发记录:~/.dsh/task-hub/state.json。 - 派发记录按
来源:id(如zentao:task-31)区分,不同系统的同号条目不会互相覆盖;旧的 TAPD 记录仍按原 id 兼容。 - 就地派发要求工作区干净,否则报「工作区有未提交改动」。
- 已存在同名 worktree 但停在别的分支时报冲突,不会强改。
- 单个项目/产品查询失败不会拖垮整张列表,失败信息会在面板上提示。
开发
npm test # 62 个用例:纯函数、git 流程、派发、客户端渲染、三来源适配
改完代码后,已安装的 bundle 需要重启 DSH 才会加载新的 JS 代次(安装时的首次加载可走 HMR)。
限制
- TAPD 只对接需求(stories),不含任务/缺陷;禅道按产品读需求或按项目读执行任务,不含缺陷;GitLab 只读 Issue,不含 MR。
- 不回写来源系统(不改状态、不写评论)。
- 不代替 Agent 执行计划;派发后由会话里的 Agent 自己规划与实现。
No comments yet. Be the first to write one.