dsh-github-kanban
DiscoveredGitHub issue kanban board for DeepSeek Harness (DSH): todo groups, drag-to-group, agent claim tools, and an animated issue relationship graph.
GitHub Issue Kanban for DSH
一个面向 DeepSeek Harness (DSH) 的看板插件:在 DSH Web 界面的左侧栏加入 「Issue 看板」入口,用看板的方式查看、筛选和领取 GitHub issue,点击 issue 还能看到带动画流向的关系方块图。
适用于 DSH 桌面版 /
dsh web。Host 端读取本机已登录的ghCLI,无第三方服务、无遥测。
功能
- 左侧栏入口 → 中央看板:看板占据主面板,可随时切回对话。
- 收件箱只显示未关闭的 issue;默认「只看自己的」:当前
gh登录账号创建或被指派的 issue; 顶部「我的 / 全部」一键切换。 - 打开即见、关系图后台加载:点 issue 后面板立即用看板缓存渲染标题/状态/标签/正文摘要,
只有「关联关系」区域显示骨架屏 + 右上角转圈;首次读取的关系图会并行请求父/子 issue 与
批量 GraphQL 补全被引用 issue(约 1 秒),之后从 SQLite
relations缓存毫秒级返回。 - Markdown 渲染:看板右侧 issue 详情正文、对话 GitHub 视图里的 issue/PR 正文与评论都按 Markdown 渲染 (标题、列表、任务清单、代码块、引用、表格、链接、加粗/斜体/删除线;纯 React 渲染,不使用 innerHTML)。
- 收件箱标签筛选:收件箱顶部「筛选」按钮;每个条件行之间是且,同一行内多选的标签之间是或; 最多 6 行,可按标签搜索,筛选按仓库记住(浏览器本地)。
- DSH 待办分组:默认 待办 / 进行中 / 待完结 / 积压 四列,可新建、重命名、删除。
- 拖拽工作流:把 issue 拖进分组即创建待办任务;任务卡可在分组间拖动;拖回收件箱即移出。
- 右侧详情面板:点击 issue 自动从右侧展开,占半屏宽度,展示 issue 信息、GitHub 链接、正文摘要,以及关系图;
适配亮/暗色主题(跟随 DSH 主题切换,独立的不透明容器、阴影与
color-scheme,夜间可读性更好)。 - 关系方块流程图:父/子 issue 上下排列,阻塞/依赖左右排列,边是带箭头的流动虚线动画, 动画方向表示上游 → 下游;带图例和文字关系清单。每个节点和关系行都标注 已完成(✓)/ 未完成(○), 并用 看板分组颜色(色条/圆点)标出它属于 待办/进行中/待完结/积压 哪一列;看板列头使用同一套颜色。 节点按多层网格排布(不再是一列到底),关联边只保留颜色不重复标注文字,节点标题最多三行; 节点标题左对齐,节点/文字大小会按容器宽度自适应(面板内与放大层各自取合适字号); 打开 issue 先用本地缓存渲染,右上角转圈后台校验,数据有变化才重绘;无缓存时才显示加载蒙版, 点关系图节点切换 issue 时面板与放大层保持打开、数据到达后原地更新; 点「放大」可把关系图抬到上层放大显示,「缩小还原」/Esc/点背景回到面板内的原始尺寸。
- 项目跟随:看板默认项目 = 最后一次离开的聊天会话所属项目的 GitHub remote; 聊天项目没有 GitHub 关联时保持当前项目不动。
- SQLite 存储 + 增量同步:数据落在本地 SQLite(
node:sqlite内建模块);首次全量拉取后, 之后每次刷新只按最后更新时间向 GitHub 请求since=<上次同步时间>的变更,并按变更增删缓存。 - 已完成 issue 自动出列:同步时若某个待办任务对应的 issue 已在 GitHub 关闭/删除,任务会自动从 待办分组(含「待完结」)移除并持久化,不会留在看板里;手动把已关闭 issue 拖进分组也会在下一次 同步时被清掉。
- 缓存先显示、后台再校验:看板与关系图都直接从 SQLite 返回旧数据(毫秒级),过期只在后台
增量刷新;Client 收到
stale标记后 1.2s 再拉一次取回最终结果。隔很久再打开面板不会白屏/整块加载, 只有「本地从未缓存过该数据」时才显示加载蒙版。 - 数据缓存 + 5 分钟自动刷新 + 手动刷新,刷新是数据热更新,不重载页面;缓存时间只决定后台 校验时机,不再阻塞打开面板或点击 issue。
- 侧栏数量徽章:入口图标右上角显示当前范围的未关闭 issue 数(收起侧栏也可见)。
- 对话集成:注册
github_kanban_board/github_kanban_claim/github_kanban_move三个智能体工具, 可以直接在对话里说「领取待办组里的任务」。
环境要求
- DSH(桌面版或
dsh web,需 Web GUI) - 本机已安装并登录 GitHub CLI:
gh auth login,token 至少具备repo读权限 - 本机
git(用于把聊天会话的项目目录解析成 GitHub 仓库)
安装
1. 克隆仓库
git clone https://github.com/xiaohui-zhangxh/dsh-github-kanban.git
# 建议放在固定目录,例如 ~/Codes/dsh-github-kanban
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(指向本地目录)。
配置
插件行配置(cordis.patch.yml):
- insert:
- id: github-kanban
name: '@local/dsh-github-kanban'
config:
issuesLimit: 300 # 可选,单次最多拉取多少个未关闭 issue(50..1000,默认 300)
repo: owner/name # 可选,初始仓库;不填则由聊天项目自动识别或面板里手选
也可以在面板顶部点击仓库名直接修改(持久化到状态文件)。看板范围(我的 / 全部)选择同样会持久化。
使用
- 点左侧栏「Issue 看板」图标。
- 顶部选择仓库(从带 GitHub remote 的聊天项目进入时会自动带出)。
- 从「GitHub 收件箱」把 issue 拖到某个待办分组。
- 点卡片查看详情和关系图;在对话里说「领取待办组里的任务」让智能体接单。
智能体工具
| 工具 | 作用 |
|---|---|
github_kanban_board | 读取当前看板:仓库、范围、分组与组内任务、收件箱统计 |
github_kanban_claim | 从分组领取任务:标记领取人、移到「进行中」,返回 issue 标题/链接/标签/正文摘要 |
github_kanban_move | 把 issue 加入或移动到指定分组 |
数据与文件
$DSH_PROFILE_DIR/github-kanban.state.json:分组、任务(带来源repo)、看板范围scope、 最近活跃会话activeSessionId;version: 2(旧三列默认分组会自动迁移)$DSH_PROFILE_DIR/github-kanban.cache.json:issue 缓存(version: 3,仅 OPEN,记录mine标记和 GitHub 登录名,TTL 5 分钟)- 所有数据只在本机;插件不收集、不上传任何信息。
HTTP API(调试用)
插件在同一 Web 源上注册 /github-kanban/api:
GET看板快照;可带?session=<会话 id>让 Host 跟随该会话的项目GET ?issue=N单个 issue 的关系图GET ?stats=1轻量计数(侧栏徽章用,不阻塞 gh)POST动作:assign/move/remove/addGroup/renameGroup/deleteGroup/claim/complete/activeSession/filter/refresh/settings
冒烟脚本:
test/verify-api.sh http://127.0.0.1:<DSH_WEB_PORT> [issue-number]
实现结构
| 文件 | 作用 |
|---|---|
index.js | Host 半:gh issue 拉取与缓存、待办状态、HTTP 路由、3 个智能体工具、会话→仓库解析 |
client.js | Client 半:左侧栏图标 + 数量徽章、看板、拖拽、右侧详情与动画关系图 |
cordis.patch.yml | bundle 插入行 |
locale/*.json | 插件管理器展示的标题/描述(中英) |
icon.svg | 插件图标 |
test/verify-api.sh | 对运行中的 DSH 做接口冒烟验证 |
Host 与 Client 都是手写 ESM/浏览器 JS,无构建步骤、无 npm 依赖。
已知限制
- 增量同步依赖 GitHub 的 issue
since(按updated_at);已删除的 issue 不会收到通知, 极端情况下需要清缓存重新全量同步。已关闭/删除 issue 对应的待办任务会在每次同步时按 「当前未关闭 issue 集合」清理(列表被截断时跳过一次,避免误删)。 - 关系图只做一跳:父/子 issue、正文里的
#N引用与阻塞/依赖关键词;不索引评论级引用。 - 「自己的 issue」= 当前
gh登录账号创建或被指派;取不到登录名时退回显示全部,避免空看板。 gh未登录或触发速率限制时,看板保留已有分组与任务并显示错误横幅。- DSH 侧栏行标题由宿主渲染为纯文本,插件只能贡献图标,所以数量徽章画在入口图标右上角。
License
MIT
Comments
Loading…
Similar plugins
Visual Kanban board for DeepSeek Harness with Gitea-backed tasks, workflow columns and a dedicated agent session per task.
★ 0
↓ 789/wk
MIT
JavaScript
dsh plugin --profile web add @goodandready/dsh-kanbanby Dayi-Z
GitHub-connected visual git panel for DeepSeek Harness - branch switcher, file-level approval cards, PR/issue workspace
★ 1
↓ 374/wk
MIT
TypeScript
Sep 17, 2026
dsh plugin --profile web add dsh-git-managerby w32394045-dotcom
DeepSeek Harness 的 GitHub 接入插件:设置里登录账号,agent 用它真实干活(12 个工具 + 云计算与成本护栏)。token 不经过模型上下文。
★ 0
MIT
JavaScript
Oct 6, 2026
dsh plugin --profile web add @ptfm/dsh-githubby meyaomiao
DSH 插件:在侧边栏使用 GitHub —— 仓库目录树 + Issues/PR/Actions 页签,支持建 Issue/PR、评论、合并、重跑 CI;better-sidebar 页签与独立面板双形态
★ 4
↓ 233/wk
MIT
TypeScript
Nov 8, 2026
dsh plugin --profile web add dsh-github-workbenchby gpta76
GitHub console inside DSH: token sign-in, repositories, issues, PRs, commits, notifications, stars and activity, one-click cloning that keeps itself up to date, and a categorized skill library that in
★ 0
MIT
JavaScript
Nov 3, 2026
dsh plugin --profile web add dsh-github-panelby loker66fan
DeepSeek Harness 插件商城:启动页入口 + GitHub topic:dsh-plugin 实时搜索、一键安装/重启 · In-harness plugin market with real-time GitHub search
★ 2
NOASSERTION
TypeScript
Aug 16, 2026
dsh plugin --profile web add dsh-market-github