dsh-github-kanban:在 DSH 里用看板管理 GitHub Issue

前言

在 DeepSeek Harness(DSH)里做项目开发时,Issue 往往分散在 GitHub 网页和对话之间:要查状态得切浏览器,要把「待办 / 进行中」和仓库里的 issue 对齐,又缺少和当前聊天项目绑定的视图。社区插件 dsh-github-kanban(维护者 xiaohui-zhangxh,分类:客户端)把 GitHub issue 收进 DSH Web 左侧栏的「Issue 看板」,用本地 gh CLI 读数据、SQLite 缓存,无第三方服务、无遥测;并注册智能体工具,可在对话里领取、移动待办组里的任务。

这是什么

一句话:面向 DSH 桌面版或 dsh web 的 GitHub issue 看板插件——左侧栏入口、中央看板、拖拽分组、右侧半屏详情与带动画的关系方块图。

插件在 SkillHub 目录 可查(星标 0);源码与说明见 GitHub 仓库,许可证 MIT,当前 package 版本 2.3.0(以仓库为准)。

核心功能

看板与收件箱

  • 左侧栏「Issue 看板」占据主面板,可随时切回对话;入口图标右上角显示当前范围内未关闭 issue 数量(收起侧栏仍可见)。
  • 「GitHub 收件箱」只显示未关闭 issue;默认「只看自己的」(当前 gh 登录账号创建或被指派的 issue),顶部可切换「我的 / 全部」。
  • 顶部可按仓库筛选;默认项目跟随最后一次离开的聊天会话所属项目的 GitHub remote;聊天项目无 GitHub 关联时保持当前项目。也可在 cordis.patch.yml 里配置初始 repo,或在面板顶部改仓库名(持久化到状态文件)。

待办分组与拖拽

  • DSH 待办分组默认四列:待办 / 进行中 / 待完结 / 积压,可新建、重命名、删除。
  • 从收件箱把 issue 拖进分组即创建待办任务;任务卡可在分组间拖动;拖回收件箱即移出。
  • GitHub 上已关闭或删除的 issue,同步时会从待办分组(含「待完结」)自动移除;手动拖入已关闭 issue 也会在下一次同步时被清掉。

详情、Markdown 与关系图

  • 点击 issue 从右侧展开详情面板(约半屏),含 issue 信息、GitHub 链接、正文摘要与关系图;亮/暗色跟随 DSH 主题。
  • 看板与 GitHub 视图中的 issue/PR 正文、评论按 Markdown 渲染(纯 React,不用 innerHTML)。
  • 关系方块图:父/子上下的、阻塞/依赖左右的布局,箭头流动虚线表示上游 → 下游;节点与关系行标注完成状态,并用与看板列一致的分组颜色。打开 issue 先用本地缓存渲染,关系区域骨架屏 + 后台 GraphQL 补全;数据落在 SQLite relations 缓存后毫秒级返回。可「放大」关系图,Esc 或点背景还原。

筛选、缓存与同步

  • 收件箱「筛选」:条件行之间为且,同行多选标签为或,最多 6 行,可按标签搜索;筛选按仓库记在浏览器本地。
  • Host 用 node:sqlite 存本地数据;首次全量拉取后,刷新按 issue 最后更新时间增量请求 since=<上次同步>。看板与关系图先读缓存再后台校验;Client 收到 stale 后约 1.2s 再拉最终结果。另有 5 分钟自动刷新与手动刷新(热更新,不重载页面)。

对话集成

注册三个智能体工具,可在对话中说「领取待办组里的任务」等:

工具 作用
github_kanban_board 读取当前看板:仓库、范围、分组与组内任务、收件箱统计
github_kanban_claim 从分组领取任务:标记领取人、移到「进行中」,返回标题/链接/标签/正文摘要
github_kanban_move 把 issue 加入或移动到指定分组

环境要求

  • DSH(桌面版或 dsh web,需 Web GUI)
  • 本机已安装并登录 GitHub CLI:gh auth login,token 至少具备 repo 读权限
  • 本机 git(用于把聊天会话的项目目录解析成 GitHub 仓库)

安装与启用

下面步骤来自仓库 README;插件以当前 DSH 进程权限运行,安装前请自行审阅源码与 MIT 许可证。

1. 取得插件目录

将仓库放到本机固定路径(README 示例为克隆到本地目录,路径按你的环境替换)。

2. 安装到当前 DSH profile

在 DSH 对话里让智能体执行(target 换成你的绝对路径):

plugin_manager({ action: 'install_bundle', target: '/absolute/path/to/dsh-github-kanban' })

安装为本地 bundle 软链,目录内改动即改即生效。完成后刷新 DSH 页面,左侧栏应出现「Issue 看板」图标。

手动安装(等价):在 ~/.dsh/profiles/<profile>/cordis.patch.yml 追加:

- insert:
    - id: github-kanban
      name: '@local/dsh-github-kanban'
      config:
        issuesLimit: 300

并把该 bundle 加入 profile 的 dsh.profile.bundles / dependencies(指向本地目录)。

配置项

- insert:
    - id: github-kanban
      name: '@local/dsh-github-kanban'
      config:
        issuesLimit: 300   # 可选,单次最多拉取未关闭 issue(50..1000,默认 300)
        repo: owner/name   # 可选,初始仓库;不填则由聊天项目识别或面板手选

典型用法

  1. 点左侧栏「Issue 看板」。
  2. 顶部选择仓库(从带 GitHub remote 的聊天项目进入时会自动带出)。
  3. 从「GitHub 收件箱」把 issue 拖到某个待办分组。
  4. 点卡片查看详情和关系图;在对话里用自然语言让智能体调用 github_kanban_claim 等工具接单或移动任务。

本地状态与缓存(均在 $DSH_PROFILE_DIR):

  • github-kanban.state.json:分组、任务、看板范围、最近活跃会话等
  • github-kanban.cache.json:issue 缓存(仅 OPEN,TTL 5 分钟)

数据只在本机,插件不上传信息。

适用场景与注意

适合:已在 DSH Web 里开发、Issue 在 GitHub 上管理、希望看板与当前聊天仓库对齐、并希望通过对话领取/移动任务的开发者。

限制(README 已说明):

  • 增量同步依赖 issue 的 updated_at;已删除 issue 极端情况下需清缓存全量同步。
  • 关系图仅一跳(父/子、正文 #N、阻塞/依赖关键词),不索引评论级引用。
  • gh 未登录或触发速率限制时,看板保留已有分组与任务并显示错误横幅。

DSH 生态强调「一切皆插件」;SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-github-kanban 把 GitHub issue 收件箱、DSH 四列待办、拖拽工作流、SQLite 增量缓存和动画关系图收进同一 Web 面板,并用三个智能体工具接进对话。进一步了解可打开 SkillHub 插件页 与 GitHub 仓库 README。

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

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

Xiaoye