输入框右下角 GitHub 图标打开当前仓库的 issue/PR 搜索弹窗,数据来自本机 gh CLI,点选即以 URL 或 @owner/repo#number 形式插入引用。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:bitxeno/dsh-github-picker
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 简体中文
DeepSeek Harness Web GUI 的 GitHub Issue 与 Pull Request 引用插件。点击输入框右下角的 GitHub 图标,即可打开当前工作区仓库 Issue 与 PR 的搜索列表,并插入引用文本——GitHub URL,或 @owner/repo#编号 提及。

安装与更新
dsh plugin --profile web add dsh-github-picker
已有安装也使用这条命令更新——它始终安装最新发布的版本,无需手动跟踪版本号。安装完成后重启 dsh web,确保 Host 和浏览器客户端加载新版本。
如需锁定某个发布版本,在包名后追加版本号,例如 dsh plugin --profile web add dsh-github-picker@0.3.0。
npm 包直接携带已提交的 lib/ 产物(见 package.json 的 files 字段),安装过程无需构建。
用法
点击输入框右下角的 GitHub 图标,弹出搜索弹窗,显示仓库最近的 Issue 和 PR;在弹窗的搜索框里输入数字或标题关键字即可实时过滤(数字前缀优先,与 GitHub 自家补全一致)。点击行(或先点击选中再按回车)落稿引用,Esc 或点击弹窗外任意处关闭。搜索失败(未安装 gh、未登录、限流、网络错误、仓库未解析)时显示一行本地化提示,而不是静默关闭。
每一行显示 GitHub 官方状态图标、标题和 #编号 标签:
| 状态 | 图标 | 颜色 |
|---|---|---|
| 打开的 Issue | issue-opened |
绿 |
| 已关闭的 Issue | issue-closed(对勾) |
紫 |
| 打开的 PR | git-pull-request |
绿 |
| Draft PR | git-pull-request-draft |
灰 |
| 已关闭未合并的 PR | git-pull-request-closed(×) |
红 |
| 已合并的 PR | git-merge |
紫 |
选中后按设置里的插入格式二选一落稿:
@owner/name#125 # 格式 ref(默认)
https://github.com/owner/name/issues/125 # 格式 url
在 Agent 开始执行步骤前,Host 会扫描草稿中的 GitHub 引用——URL、@owner/repo#编号 形式、以及裸 #编号 token——并为每个引用注入一条简短的消息:
<github-reference repo="owner/name" number="125" />
插件只传递仓库与编号,从不拉取 Issue 正文;Agent 需要时可用自身工具查看引用内容。
数据来源
插件只使用 gh CLI——复用本机 gh 登录态,调用 gh api search/issues,一次查询同时返回 Issue 和 PR。不涉及设备流、OAuth App 或任何已保存凭据;设置页会展示 gh 连接状态(gh auth status 报告的已登录帐号)。gh CLI 支持 macOS、Linux、Windows。
仓库始终通过工作区 git remote get-url origin(https、ssh、git@ 形式)自动解析;无法解析时,弹窗会显示一行提示说明如何添加 remote。
设置
打开 设置 → GitHub 引用 可配置:
- 连接卡片——gh CLI 连接状态:带 GitHub 图标的卡片显示「GitHub 通过 gh CLI」,右侧为已连接(绿色)或未连接徽章。
- 插入格式——落稿为
@owner/repo#编号(默认)或GitHub URL。
列表每页加载 12 条,滚动到底部自动获取下一页,直到取完所有结果(无上限)。
没有「启用」开关:选择器在输入框中始终可用。
配置
Host 插件配置写入所选 profile 的 cordis.patch.yml:
- id: dsh-github-picker
config:
searchTimeoutMs: 15000
repoCacheTtl: 30000
searchTimeoutMs——数据源调用超时(默认 15000 毫秒)。repoCacheTtl——仓库解析结果按工作区缓存时长(默认 30000 毫秒)。
插入格式(insertFormat)是设置 → GitHub 引用里的持久化选项,无需重启 Host 即可生效;结果列表没有数量上限,始终滚动加载到全部结果。
修改 Host 配置后需重启 dsh web;纯客户端改动只需刷新浏览器。
说明
- 选择器是输入框工具行(
conversation.input.right,发送按钮左侧)里的一个普通组件,采用与参考项目 dsh-skill-picker 相同的做法:图标按钮的弹窗是相对定位容器里的兄弟节点(absolute; bottom: calc(100% + 8px); right: 0),无 portal。不存在自定义触发、浮层或键盘拦截机制。 - 落稿通过框架输入机器(
inputActions.setDraft)写入完整的新草稿,撤销历史与 Host 的提及扫描自动生效。 - 弹窗按页加载最近列表(每页 12 条),滚动到底部自动获取下一页,直到取完所有结果(无上限);结果按会话缓存 30 秒(TTL 内重开即时显示、超时自动重取),之后本地过滤,输入不会堆积请求。
#编号/ URL /@owner/repo#编号提及语法由 Host 预步骤扫描器(scanMentions)与选择器落稿文本(pickText)共用,修改任一侧时需保持同步。- 搜索失败会被分类并以一行本地化提示渲染到弹窗里(文案见
src/client/locales.ts的picker.error.*),「未安装 gh」不再是静默关闭。
开发
pnpm install
pnpm run check
检查阶梯为 typecheck + 测试 + 构建,且每个源文件 100% 覆盖率。开发依赖通过 link: 指向本机已安装的 harness 包(见 AGENTS.md);lib/ 下构建产物随仓库提交,profile 安装无需构建。
如果改为安装本地检出(开发构建或未发布改动),则在 ~/.dsh/profiles/web/package.json 中加入本包:
{
"dependencies": {
"dsh-github-picker": "file:/path/to/dsh-github-picker"
},
"dsh": {
"profile": {
"bundles": ["...", "dsh-github-picker"]
}
}
}
然后在 profile 目录执行 pnpm install 并重启 dsh web,刷新浏览器页面即可。插件以 /plugins/dsh-github-picker/client.js 提供服务,网关路由 /api/githubPicker/*。客户端 bundle 按请求实时读取:纯客户端改动只需刷新页面;Host 契约变更需要重启 dsh web。
许可证
MIT
链接
同类插件
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 4430
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 2101
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 1924
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/dsh-at-file★ 362
Codex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
omdsh-dev/dsh-genui★ 214
助手回复内渲染交互式 UI 组件:布局、图表、表单、测验、mermaid、3D 场景与回传事件循环。
huiliyi37/dsh-tianshu-tui★ 211
DeepSeek Harness 的终端 UI(TUI)。