前言¶
用 DeepSeek Harness(DSH)同时开多个会话时,侧边栏里往往只有标题和工作区路径,很难一眼看出某次对话背后是否已经建了 PR、是否还在 open、还是已经 merged。要确认状态,通常得切回终端查分支,或自己打开 GitHub。下面介绍的 dsh-pr-chip 是社区维护的 DSH 客户端插件,在每条会话行标题前固定占一格,用小型图标标出关联 PR 的 open、draft、merged、closed 四态,配色与 GitHub 一致,图形风格参考 Codex 桌面应用的 badge。
这是什么¶
dsh-pr-chip(GitHub:N-o-c-t-i-s/dsh-pr-chip,维护者 N-o-c-t-i-s)在 SkillHub 目录中归类为客户端插件。一句话定位:在 DSH 侧边栏每条会话行的 leading 区域绘制 PR 状态 chip。宿主侧负责解析「这条会话对应哪个仓库、哪条分支、PR 当前状态」,浏览器侧负责渲染 16px 图标;会话记录本身不持久化 PR 状态,只记身份,状态每次查询(带内存缓存)。
工作原理¶
状态解析链路可以概括为:
sessionId ──resolve cwd──> (ownerRepo, branch) ──gh pr list --head──> state
cwd 先查 storages/workspace.json 里该会话所属工作区;若缺失,再根据会话在磁盘上的目录名反推(含 ~XXXX 转义、按真实路径切分连字符等),以兼容「会话 cwd 不等于 workspace 路径」以及工作区记录已删但会话仍保留的情况。
内存缓存以 cwd 为键:有 PR 时答案缓存 30 秒,「无 PR」缓存 60 秒;同工作区的多条会话共享一次查询。进行中的查询会去重,并发子进程上限为 4。
身份从哪里来(按优先级)¶
- 当前 worktree:会话 cwd →
git分支 →gh pr list --head links.json中记住的身份:检出目录已归档或删除时仍可能命中- 会话事件:在事件总线上观察到
gh pr create,并与该次调用的输出配对 - 一次性回溯:安装前已存在的会话,对 transcript 扫描一次,结果写入后不再重复扫描
第 3、4 条只接受 gh pr create 命令自身返回的裸 PR URL;终端里随便 echo 一个链接,或正文里提到的 URL,都不会被当作身份来源。
核心功能¶
- 四态展示:
open、draft、merged、closed;颜色分别为#1f883d、#6e7781、#8250df、#cf222e。 - 展示位置:扩展点
sidebar.session.row.leading,即会话标题前的 16px 格;DSH 仅在行处于 idle 时渲染该格,归档行或空白行不显示。README 说明 DSH 没有「标题后常驻」的槽位,leading 是唯一适合常驻 chip 的位置。 - 无 PR 或无法解析时:端点返回
state: null及reason(如no-branch、no-pull-request、workspace-missing、gh-failed),会话行外观与未装插件时一致。 - 离线:
gh连不上 GitHub 时,若此前已成功解析过,会返回磁盘上保存的状态并标记stale: true,失败查询不会覆盖已有好状态;从未解析出 PR 的会话仍不显示 chip。 - 插件在
$DSH_HOME/pr-chip/下写入links.json(会话 → 身份,最多 500 条)、scanned.json(已做过 transcript 回溯的会话)、host-loaded.jsonl(宿主启动诊断,每行一条)。
安装与启用¶
环境要求:
- DSH ≥ 0.2.1(需支持
sidebar.session.row.leading并传入{ sessionId }) - 系统
PATH上有git、gh,且gh auth status正常
安装命令(摘自仓库 README):
# 本地目录
dsh plugin --profile <profile> add link:/path/to/dsh-pr-chip
# 从 git
dsh plugin --profile <profile> add github:N-o-c-t-i-s/dsh-pr-chip
安装后需重启 DSH 宿主:bundle 列表在启动时组装。
若在 DSH 桌面应用中安装,README 注明应用会自行管理 profile,dsh plugin 可能拒绝操作,需手动添加依赖、dsh.profile.bundles 条目以及 node_modules 符号链接。
当前 package 版本为 0.1.6,许可证 MIT。
典型用法与何时不显示¶
装好插件并重启后,无需额外配置:在 git worktree 内、当前分支非 detached HEAD、且存在对应 PR(或能通过 links.json / 事件 / 回溯得到身份)的会话,标题前会出现状态 chip。
以下情况不会绘制 chip(与 README 一致):
- 目录不是 git worktree(临时路径可以,但必须能当作 worktree 使用)
- 分支为 detached HEAD
- 分支没有 PR,且没有记住的身份
- 未安装
gh或未登录
适用场景与注意¶
适合经常在 DSH 里并行多个仓库或分支、又习惯用 gh 管理 PR 的开发者:侧边栏即可区分「还在提 PR」「已合并」等,减少来回切终端或浏览器。
插件以当前 DSH 宿主进程的权限运行,会调用 git、gh 并读写 $DSH_HOME/pr-chip/。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。社区插件目录 SkillHub 条目 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-pr-chip 把 PR 四态收进会话行 leading 格,状态不落会话库、查询带缓存,并在离线时尽量保留上次已知状态。需要安装命令与行为细节时,以 README 为准;目录页:https://www.skillhub.cn/plugins/N-o-c-t-i-s/dsh-pr-chip,源码:https://github.com/N-o-c-t-i-s/dsh-pr-chip。