dsh-work-planner:按顺序拆分 GitHub Issue 的 DSH 工作流插件

前言

DeepSeek Harness(DSH)的插件化架构让很多任务可以交给插件完成。在“工作流”类插件中,dsh-work-planner 是一个专门解决“如何把一堆 GitHub Issue 变成可执行的、有顺序的工作包”的工具。它会在后台把 Issue 整理成 Work Package,并按依赖关系、重要度和紧急度排序,把下一个要做的任务放在侧边栏,供你或智能体直接点“着手”。

插件定位

dsh-work-planner 是一个 DSH 插件,由维护者 lifwsp 开发,分类为工作流。它从 GitHub Issue 中提取任务,按规则在后台生成“工作包”,并通过侧边栏展示下一个任务,让智能体可以拿到明确的完成条件和涉及文件,开始编码。插件本身不会向 GitHub 写入 Issue,只读取信息并维护本地计划。

核心功能

  1. Issue 收集与打包
    - 插件会从仓库读取 Issue 列表,根据功能领域(areas)、涉及文件(files)、父级 Issue 等规则,将多个 Issue 打包成一个 Work Package。
    - 打包时遵循 maxPackageSize 限制(S=1、M=2、L=4 的累加值),避免单个包过大。

  2. 顺序与依赖管理
    - 依赖关系通过 Issue 标题或注释中的 blocked by #N 识别,插件会标记“先行待ち”的包。
    - 顺序在后台按优先级、重要度、紧急度、对后续包的解放程度、规模等维度计算,每小时更新一次。

  3. 侧边栏展示与操作
    - 安装 dsh-better-sidebar 后,可在仓库会话的侧边栏新增“Issue 計画”标签。
    - 标签顶部显示“次はこれ”(下一个包),提供“これに着手”按钮,点击后智能体会获得该包的完成条件、涉及文件、父 Issue、里程碑等信息,可批准后切分支、实现并提交 Closes #N 的 PR。
    - 可通过鼠标悬停在圆点图标上查看选择理由和同步状态,感叹号 ! 表示需要确认。

  4. 命令行操作
    - /issues:显示当前计划。
    - /issues next [ID]:将下一个或指定 ID 的包交给智能体。
    - /issues pin N / defer N / clear N:将 Issue N 设为优先、后回或恢复默认。
    - /issues done [N…]:将 Issue N 标记为“实现完成”(进入“クローズ待ち”状态),省略 N 则标记所有当前任务。
    - /issues stop:仅移除“作業中”标记,不标记为完成。
    - /issues reopen N:将已进入“クローズ待ち”的 Issue N 重新放回计划。
    - /issues sync:立即与 GitHub 同步。

  5. “クローズ待ち”状态管理
    - 以下情况会进入“クローズ待ち”:

    • 智能体调用 issue_plan_update action=finish 或使用“実装完了”按钮。
    • 存在未推送到默认分支的本地分支,且分支名或提交信息包含 Issue 编号(最近 30 天内有提交)。
    • 存在打开的 PR 或最近 30 天内已合并的 PR,其标题或正文包含 Closes #N。
    • 一旦进入该状态,包会从推荐列表中移除,直到 GitHub 上 Issue 被关闭或手动恢复。
  6. 起票时的元数据记录
    - 智能体在创建或编辑 Issue 时,会在末尾插入 HTML 注释块,记录功能领域、规模(size)、涉及文件和完成条件。
    - 依赖关系会通过 gh issue create --blocked-by 写入 GitHub 的 Issue Dependencies。
    - 父子关系通过 --parent 写入 Sub-issues。
    - 期限与里程碑通过 --milestone 写入。
    - 重要度优先通过 Priority 字段,否则通过标签或 priority:high 等。

  7. 决策模型集成
    - 默认不使用决策模型,此时仅按依赖和编号排序,规模与重要度不估算。
    - 启用后,可在配置中指定 decisionProvider(liquid、openrouter、typesafe、custom),并设置 allowExternalJudgment: true。
    - 决策模型会接收 Issue 的标题、标签、正文和评论,用于判断是否可以合并到同一个包。

安装与启用

安装命令如下(替换 web 为你的 DSH profile 名称):

dsh plugin --profile web add github:lifwsp/dsh-work-planner

如需卸载:

dsh plugin --profile web remove dsh-work-planner

使用侧边栏标签前,需要先安装 dsh-better-sidebar。

典型用法

  1. 在仓库会话的侧边栏点击“+”号,添加“Issue 計画”标签。
  2. 标签顶部显示下一个 Work Package,点击“これに着手”让智能体查看方針,批准后智能体会创建分支、实现并提交 PR。
  3. 如需调整顺序,可点击 Issue 旁的“優先”或“後回し”按钮。
  4. 实现完成后,使用“実装完了”按钮或 /issues done 将 Issue 标记为“クローズ待ち”。
  5. 需要手动调整或重新放入计划时,使用 /issues reopen N 将 Issue 从“クローズ待ち”恢复到计划中。

适用场景与注意

  • 适合有较多 GitHub Issue、需要按顺序执行、且希望减少手动整理工作的项目。
  • 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 计划数据保存在本地,最新约 200 条记录,不会污染 GitHub Issue 列表。

小结

dsh-work-planner 通过规则驱动的方式,将 GitHub Issue 转化为有序的工作包,并在侧边栏提供直观的“下一个任务”入口,帮助智能体和开发者更高效地推进项目。相关目录页与源码地址如下:

  • 目录页:https://www.skillhub.cn/plugins/lifwsp/dsh-work-planner
  • GitHub:https://github.com/lifwsp/dsh-work-planner
羽毛球分组比赛记分
小程序二维码

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

小夜