DSH 侧边栏的维护者 + 开发者 PR 看板:五状态评审队列(等我 / 等作者 / 可合并 / 已合并 / 待分诊)、三列 issue 看板、跨仓库跟踪自己 PR 的 mine 视图(我的回合 / 等别人 / 已合并),附 CI 汇总徽章与不活跃过滤,点卡片一键打开或新建对应的评审会话。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-pr-board
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:delock/dsh-pr-board
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
Maintainer PR review queue board for DeepSeek Harness (DSH). It answers one question: which PRs need me, right now?
一个为 DeepSeek Harness 做的维护者 PR 看板:回答一个问题——现在哪些 PR 在等我?
Why / 解决什么问题
Reviewing PRs is a queue-management problem. GitHub's native views don't tell you: "the author just pushed a fix after my change request — it's back on your plate". This board classifies every PR you're involved in into five states and detects the moment a PR moves back to you.
Review PR 本质是队列管理。GitHub 原生界面无法直接告诉你"作者刚在你 request changes 之后推了新提交,又该你出手了"。本插件把你参与的每个 PR 归入五种状态,并在 PR 回到你手上的一刻提醒你。
The five states / 五种状态
| Column / 列 | Meaning / 含义 | How it's decided / 判定依据 |
|---|---|---|
| Waiting on me 等我行动 | Your move / 该你出手 | Review requested with no substantive word from you yet; or the author pushed/replied after your last action; or new commits landed after your approval. Your own substantive comment holds the ball with the author — emoji-only / "+1"-style comments don't count on either side |
| Waiting on author 等作者行动 | Their move / 等作者 | You (or another maintainer) requested changes and the author has been quiet since; approved but draft or conflicting |
| Ready to merge 可合并 | Green light / 绿灯 | reviewDecision = APPROVED, mergeable, not draft — or in a merge queue, or auto-merge armed with nothing blocking (blocked auto-merge waits on the author) |
| Merged 已合并 | Done / 完成 | Recently merged PRs you reviewed |
| Inbox 新 PR 待分诊 | New & unclaimed | Newest open PRs you haven't touched — one click ("我来 review") adds you as reviewer |
Transition detection: when a PR crosses author → you (author responded, or re-requested your review), you get a toast and the sidebar widget pulses. Status-quo polling keeps the board fresh (interval configurable: 1–30 min).
Issue board / Issue 看板
Each monitored repo gets a second sidebar row (indented, iss tag) with issue
counters; clicking it opens a three-column issue board: Waiting on me
(the reporter replied after your last comment, or you're assigned/mentioned
with nothing from you yet), Waiting on reporter (you hold the last word),
and Recently closed (closed within 14 days, regression watch). Third-party
comments don't pull a thread back to you — only the reporter's do. Card clicks
open or start a review conversation exactly like PR cards.
每个监控仓库在侧边栏多一行缩进的 issue 计数(iss 标签),点开是三列 issue
看板:等我行动 / 等报告者 / 最近关闭。只有报告者的回复会把线程拉回
"等我";第三方评论不会。点卡片同样进入/新建对应会话。
状态迁移检测:当 PR 从"等作者"切到"等你"(作者回复 / 重新 request 你 review)时弹 toast 提醒、侧边栏小部件闪烁;轮询间隔 1–30 分钟可配。
Requirements / 依赖
- The DSH host machine has the GitHub CLI (
gh) installed and authenticated (gh auth login). The plugin shells out toghfor search + GraphQL queries, so it respects yourghtoken scopes and GitHub's rate limits. Ifghis missing or logged out, the board shows a setup hint instead of raw errors. - DSH web profile (GUI). This plugin is a web-profile client plugin.
DSH 宿主机上需安装并登录 gh;插件通过 gh 的 search + GraphQL 查询取数,
速率限制遵循你 gh token 的配额。若 gh 缺失或未登录,看板会显示安装/登录
指引而不是原始报错。
Install / 安装
dsh plugin --profile web add github:delock/dsh-pr-board
(or publish to npm and dsh plugin --profile web add dsh-pr-board)
Then restart the web profile and refresh the page.
Configure / 配置
- Click the PR Board widget at the bottom of the sidebar (or press
Alt+P). On first open you're prompted to add a repository
(
owner/name, e.g.octocat/hello-world). - Multiple repositories: the widget lists every monitored repo with its
own Me / Author / Ready / Inbox counters. The + button in the widget header
(or on the board's tab bar) adds another repo; hovering a tab in the board
shows an × to stop monitoring it (removal lives inside the board only).
Repos are identified by short name, falling back to the full
owner/namewhen two monitored repos share a name. - GitHub username — set via Settings; leave blank to auto-use the
ghlogin account (one identity across all repos). - Review workspaces — also in Settings, configured per repo with no
global default: every repo carries an explicit workspace, and repos
without one open their cards on GitHub. When set, clicking a PR card
jumps into the matching conversation inside DSH. Sessions are matched
through a local PR→session binding table first, then by title search
(
repo#N, which works once a session's LLM-generated title exists); a miss creates a new session in the configured workspace, binds it, and — unless auto-prompt is off — sends it a first message naming the PR plus the board's own snapshot (state, CI, flags), asking it to summarize what has recently happened on the PR (events and standing, not a code walkthrough) and then ask what you'd like to do. That first message is also what generates the session title. With no workspace set (or via the per-card ↗ button) cards open GitHub. - Config is shared across devices: account-wide fields (repos, username,
review workspace, auto-prompt, inactivity window) sync to the host
(
~/.dsh/pr-board.config.json); each browser keeps only its poll interval. A new device picks the config up on first load; edits converge on every poll.
配置跨设备共享:账号级字段(仓库列表、用户名、review workspace、自动
prompt、不活跃天数)同步到 host(~/.dsh/pr-board.config.json),每个浏览器
只保留自己的轮询间隔。新设备首次打开即继承配置,改动在每次轮询时收敛。
How states are computed / 状态如何计算
For every open PR you have reviewed / commented on / been requested on, the host
fetches via GraphQL: reviewDecision, mergeable, draft flag, last commit time,
and the full review + comment timeline. Then:
- Your last action time vs the author's last activity time → who moved last
- Your approval timestamp vs the last commit timestamp → did new code land after your OK
- Other maintainers' change requests count as "waiting on author" too
对每个你参与过的 open PR,host 端经 GraphQL 取 reviewDecision、mergeable、
draft 标记、最后提交时间及完整 review/评论时间线,据此计算"双方最后动作"、
"批准后有无新提交"、"其他 maintainer 是否提过修改意见"等,得出最终分类。
Privacy / 隐私
All queries run locally through your own gh CLI. No third-party service, no
telemetry, no data leaves your machine except GitHub API calls.
所有查询经本机 gh CLI 完成,无第三方服务、无遥测。
License / 许可
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-git-graph★ 8639
输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。
Akimiya-z/codex-guard#dsh★ 136
在 DeepSeek Harness 内做提交前的 Pull Request 卫生检查:扫描当前改动中的 TODO 残留、硬编码密钥与非规范提交信息。
Cerbur/clutch-dsh#clutch-dsh-worktree★ 34
为 DSH Web UI 增加按 Git Worktree 组织 Session 的视角,同时继续由 DSH 管理原始 Project 和 Session 数据。
lehhair/dsh-diff-viewer★ 26
PiUI 风格 diff 查看器,替换 write/edit 工具调用的默认 DiffBlock。
DamonKoy/dsh-web-ui#dsh-git-graph★ 23
dsh web GUI 会话头部栏的 Git 分支选择器与提交图。
PerryLink/dsh-github★ 22
官方级 GitHub CI 集成:composite action.yml、轮询 PR 评审机器人(幂等行内评论 + status-check 门禁)以及 PR/issue 工具,所有写入走人工审批门。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。