dsh-github-connect: One-click GitHub connection at the bottom left of the DSH dialog

前言

做智能体开发时经常有这类需求:让 AI 查一下仓库的 open issues、代提一个 issue、看看某次 Actions 的运行结果。常规做法要么自己搭回调服务器接 OAuth,要么把 Token 塞进各种脚本里来回传递,链路长,还容易把令牌暴露给第三方中转。

dsh-github-connect 换了一种做法:在 DSH 对话框左下角放一个常驻按钮,用 GitHub OAuth 设备流(或直接粘贴 PAT)完成授权,不建回调服务器、不经过第三方中转。连接之后,AI 可以通过插件提供的 github_api 工具直接对 GitHub 发 REST 请求。下面介绍它的功能、安装与使用。

这是什么

dsh-github-connect 是一个 DSH 插件,作者是 Moon-shiyue,许可证为 MIT(package.json 中声明)。定位一句话:便携式 GitHub 连接插件,连接后 AI 可通过 github_api 工具直接操作你的 GitHub。

所谓便携,是指整个插件目录拷到另一台机器上装好就能用:连接走 GitHub OAuth 设备流,浏览器输入验证码即完成授权;令牌只保存在本机插件目录的 .github-auth.json 文件里。

核心功能

  • 左下角常驻按钮:composer 工具行左端显示 GitHub 按钮,绿点表示已连接。
  • 两种连接方式:OAuth 设备流(自填 Client ID,浏览器输入验证码后自动轮询)或粘贴 Personal Access Token(建议 fine-grained PAT)。
  • AI 侧 github_api 工具:连接后 AI 可对 api.github.com 发 REST 请求,覆盖 Issues、PR、仓库、Gist、Actions 等操作,并自动附带 system prompt 引导模型使用。
  • 本地令牌存储.github-auth.json(已 gitignore),面板里可一键断开。
  • 自带受信网络层 lib/net.js(基于 undici):默认自动走代理,并处理系统 CA 信任。
  • 零构建、零运行时框架:host 半是纯 ESM,client 半是纯 __ModuleLoader__ 模块。
  • 安装脚本幂等:重复执行安全,并自动更新代码。

安装与启用

最省事的方式是在 DSH 对话里直接对 AI 说:

请你安装这个插件:https://github.com/Moon-shiyue/dsh-github-connect

或者复制命令执行。Windows:

powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/Moon-shiyue/dsh-github-connect/master/install.ps1 | iex"

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Moon-shiyue/dsh-github-connect/master/install.sh | bash

一键脚本会自动完成克隆代码、pnpm 安装依赖、注册进 profile(默认 web)三步。完成后重启一次 dsh web 并刷新页面,对话框左下角出现 GitHub 按钮即安装成功。

如果想手动装,先克隆仓库并安装依赖,再把它以 link 方式注册进 profile:

git clone https://github.com/Moon-shiyue/dsh-github-connect.git
cd dsh-github-connect
pnpm install
dsh plugin --profile web add link:<本目录绝对路径>
dsh web

装完可以用下面的命令验证,输出中应包含 dsh-github-connect 一行:

dsh --dump-config --profile web

环境要求:Node >= 20.18.1(engines 声明),依赖 undici ^7.29.0 与 @deepseek-ai/dsh-tools 0.1.1-rc.2,peerDependencies 为 @deepseek-ai/cordis ^4.0.1。

连接与使用

1、点击对话框左下角的 GitHub 按钮,未连接时选择一种方式:

  • 设备流登录:填入你自己的 GitHub OAuth App Client ID(在 github.com/settings/developers 创建,无需回调地址),按需调整 scopes,点「开始连接」,在打开的页面输入验证码,插件会自动轮询直到授权完成;
  • 粘贴 Token:填入 fine-grained PAT,建议只授予需要的仓库与权限。

设备流的 scopes 默认为 repo gist read:org workflow,可在面板中修改。插件不内置作者的 OAuth App,授权完全发生在「你的 App ↔ 你的账号」之间。

2、看到「✓ 已连接」后直接对话即可,例如:

  • 「把我账号里的 open issues 列出来」
  • 「给 xxx/yyy 仓库提一个 issue,标题…内容…」

3、想断开时,面板里点「断开连接」(需二次确认)。断开只删除本地令牌文件;保险起见,也可以在 GitHub 的 Settings → Applications / Tokens 里直接 revoke。

未连接时 AI 调用 github_api 会返回 401 结构错误,并提示先点左下角按钮授权,不会卡死。

网络与代理

插件自带受信网络层 lib/net.js,基于 undici,默认自动走代理,不需要设置任何环境变量。对每个 GitHub 请求,代理解析顺序为:

  1. 插件配置 proxy
  2. 环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY(含小写形式);
  3. Windows 系统代理(自动读取注册表 WinINET 设置);
  4. 都没有 → 直连。

NO_PROXY 同样生效:环境变量与配置项 noProxy 都支持 *host:port.domain 后缀,默认豁免 localhost / 127.0.0.1

系统 CA 信任方面:Windows 从系统证书库导出根证书(缓存 30 天,自动刷新);macOS/Linux 读取标准 CA 包路径(如 /etc/ssl/certs/ca-certificates.crt)。这解决了本地 TLS 拦截代理导致的 unable to verify the first certificate,以及直连被重置的问题。所有步骤失败都会回退到 Node 默认 fetch,插件不会因此崩溃。

需要手动指定代理时,在 profile 的 cordis.patch.yml 里给该行加配置:

- id: dsh-github-connect
  name: dsh-github-connect
  config:
    proxy: http://127.0.0.1:7890   # auto(默认)| direct | http(s)://host:port
    noProxy:                       # 可选:这些主机不走代理
      - localhost
      - 127.0.0.1

适用场景与注意

适合的人群:日常在 DSH 里工作、希望 AI 直接读写自己 GitHub(查 issue、提 PR、看 Actions)的开发者,尤其是没有条件自建回调服务、或在意令牌不经过第三方中转的场景。

使用前需要注意几点:

  • 权限与审查:插件以当前 dsh 进程的权限运行,AI 连接后能以你的身份操作 GitHub。安装前建议检查源码与许可证,PAT 按 fine-grained 最小权限授予,OAuth scopes 按需缩减。
  • 令牌安全:令牌只保存在本机 .github-auth.json,除直接发送到 api.github.com 外不经过任何其他服务器。该文件已 gitignore,请勿分享或提交到 git。
  • 排查「Token 无效」:先看报错里的具体原因。Bad credentials 说明令牌确实被 GitHub 拒绝(过期、撤销或复制不完整);若是 UNABLE_TO_VERIFY_LEAF_SIGNATUREECONNRESET / ETIMEDOUT,通常是本机有 TLS 拦截代理或需要走代理,网络层会自动读取系统代理与系统证书库,重启 dsh web 后一般即可用,仍失败再按上文手动配置 proxy
  • 卸载dsh plugin --profile web remove dsh-github-connect;若不再使用可删除插件目录,注意目录内含 .github-auth.json,删除前先确认。
  • 改代码后如何生效:改 client 代码刷新页面即可;改 host 代码(lib/index.js、lib/net.js)需要重启 dsh web

结尾

dsh-github-connect 把「让 AI 操作 GitHub」压缩成左下角一个按钮:设备流或 PAT 授权,令牌留在本机,网络层自动处理代理与证书。如果你的工作流里 GitHub 高频出现,值得一试。

  • GitHub:https://github.com/Moon-shiyue/dsh-github-connect
  • 社区目录收录页:https://www.skillhub.cn/plugins/Moon-shiyue/dsh-github-connect (社区站点,与 DeepSeek / 幻方无官方从属关系)
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye