DeepSeek Harness 插件

dsh-github-picker

输入框右下角 GitHub 图标打开当前仓库的 issue/PR 搜索弹窗,数据来自本机 gh CLI,点选即以 URL 或 @owner/repo#number 形式插入引用。

跳到安装方式

来源信息

GitHub 仓库
bitxeno/dsh-github-picker
最近更新
2026年8月18日
分类
界面增强
GitHub stars
0

安装

默认先复制一段 Prompt,让 Agent 读页面和仓库;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读页面和仓库。

请先不要安装。阅读这个 DeepSeek Harness 插件,说明它解决什么问题、会访问哪些文件、网络或密钥,以及如何安装和卸载。

插件页面:https://deepseekplugins.org/zh/plugins/bitxeno/dsh-github-picker
GitHub:https://github.com/bitxeno/dsh-github-picker
插件名:dsh-github-picker
作者:bitxeno
安装命令:dsh plugin --profile web add github:bitxeno/dsh-github-picker

确认前不要执行安装命令。

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-github-picker

<div align="center">

English | [简体中文](README.zh.md)

</div>

GitHub issue and pull request references for the DeepSeek Harness web GUI. Click the GitHub icon at the bottom-right of the input box (the composer's tool row, next to the send button) to open a searchable list of the current workspace repository's issues and pull requests, and insert a reference — a GitHub URL, or an @owner/repo#number mention.

![dsh-github-picker in the DeepSeek Harness web GUI](docs/image/preview.jpeg)

Install or Update

dsh plugin --profile web add dsh-github-picker

Use the same command to update an existing installation — it installs the latest published version, so no version tracking is needed. Restart dsh web after installation so the Host and browser client load the new version.

To pin a specific release, append the version, e.g. dsh plugin --profile web add dsh-github-picker@0.3.0.

The npm package ships the committed lib/ bundles (see files in package.json); no build happens on install.

Usage

Click the GitHub icon at the bottom-right of the input box. A searchable popup opens with the repository's recent issues and pull requests; keep typing in its search field to filter by number or title (a number prefix ranks first, like GitHub's own autocomplete). Click a row (or press Enter with the field focused and a row picked via click) to insert the reference; Escape or a click anywhere outside closes the popup. A search failure (gh CLI missing, not authenticated, rate limited, network error, unresolved repository) renders as one localized hint row instead of a silent close.

Each row shows GitHub's own state icon, the title, and the #number tag:

StateIconColor
Open issueissue-openedgreen
Closed issueissue-closed (check)purple
Open PRgit-pull-requestgreen
Draft PRgit-pull-request-draftgray
Closed, unmerged PRgit-pull-request-closed (×)red
Merged PRgit-mergepurple

Picking inserts one of two texts, chosen in Settings (Insert format):

@owner/name#125                                 # format: ref (default)
https://github.com/owner/name/issues/125        # format: url

Before the agent starts a step, the Host scans the draft for GitHub references — URLs, @owner/repo#number forms, and bare #number tokens — and adds a short reference message for each:

<github-reference repo="owner/name" number="125" />

The plugin passes the repository and number only — it never fetches issue bodies. The agent can inspect a reference with its available tools when the task requires it.

Data Source

The plugin uses the gh CLI exclusively — reuse the local gh login and call gh api search/issues, which returns issues and pull requests in one query. No device flow, OAuth app, or stored credential is involved; the settings page shows the gh connection status (which accounts gh auth status reports). gh CLI works on macOS, Linux, and Windows.

The repository is always resolved from the workspace git remote get-url origin (https, ssh, and git@ forms); without a resolvable repository the popup shows a hint row explaining how to add a remote.

Settings

Open Settings -> GitHub 引用 to configure:

  • Connection card — the gh CLI connection status: a GitHub-marked card showing "GitHub via gh CLI" with a Connected (green) or Not connected pill.
  • Insert format@owner/repo#number (default) or GitHub URL for the picked text.

The list loads 12 entries per page and fetches the next page as you scroll to the bottom, through the end of the result set — there is no result cap.

There is no enable switch: the picker is always available in the composer.

Configuration

Host plugin configuration goes into the selected profile's cordis.patch.yml:

- id: dsh-github-picker
  config:
    searchTimeoutMs: 15000
    repoCacheTtl: 30000
  • searchTimeoutMs bounds provider calls (default 15000).
  • repoCacheTtl caches the resolved repository per workspace (default 30000 ms).

The per-search result cap is a durable setting managed from Settings -> GitHub 引用 (no Host restart needed to change it).

A Host config change needs a dsh web restart; a pure client change only needs a browser refresh.

Notes

  • The picker is a component in the framework's conversation.input.right composer slot (the seat just before the send button), the same seam the reference dsh-skill-picker uses: an icon button whose popup is a plain sibling positioned absolute; bottom: calc(100% + 8px); right: 0 inside a relative wrapper. No custom trigger, overlay, or keyboard capture exists.
  • Picking writes the full next draft through the framework input machine (inputActions.setDraft), so undo history and the Host's mention scanning work automatically.
  • The popup loads the recent issue/PR list page by page (12 per page) and fetches the next page as you scroll to the bottom, through the end of the result set — there is no result cap (cached per session for 30 seconds; reopening is instant within the TTL and refetches after it), then filters locally per keystroke, so typing never stacks provider calls.
  • The #number / URL / @owner/repo#number mention grammar is shared by the Host's pre-step scanner (scanMentions) and the picker's inserted text; keep them in sync when changing either.
  • A search failure is classified and rendered in the popup as one localized hint row (see the picker.error.* copy in src/client/locales.ts), so "gh is not installed" is visible instead of a silent close.

Development

pnpm install
pnpm run check

The check ladder is typecheck + tests + build with 100% coverage per source file. Dev dependencies are link: entries into the installed harness packages (see AGENTS.md); built files under lib/ are committed so profile installation runs without a build.

To install a local checkout instead (development builds or unreleased changes), add the package to ~/.dsh/profiles/web/package.json:

{
  "dependencies": {
    "dsh-github-picker": "file:/path/to/dsh-github-picker"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-github-picker"]
    }
  }
}

Then pnpm install inside the profile and restart dsh web. Refresh the browser page. The plugin serves at /plugins/dsh-github-picker/client.js and the gateway routes /api/githubPicker/*. The client bundle is read per request, so a pure client change only needs a refresh; a Host contract change needs the dsh web restart.

License

MIT