dsh-github-link: Link GitHub in DSH and provide controlled GitHub tools for Agents

前言

在 DeepSeek Harness(DSH)里让 Agent 查仓库、看 Issue、开 Issue,通常需要自行拼 GitHub API、管 token、还要考虑和当前 DeepSeek 账号怎么对应。社区插件 dsh-github-link(维护者 qichuang321,分类:联网工具)做的是两件事:把当前 DeepSeek 账号与本机 GitHub 身份绑定,并注册名为 github 的 Agent 工具,限定在读取仓库与 Issue 相关操作上。绑定记录走 DSH 本机 credentials 服务,按 DeepSeek 账号 ID 隔离;不会改 DeepSeek 官方资料,也不会把 token 交给浏览器。Agent 不能推送代码。

下面介绍插件定位、能力边界、安装与三种关联方式,以及 github 工具的用法与注意点。事实以 GitHub 仓库 README 为准;社区目录页:https://www.skillhub.cn/plugins/qichuang321/dsh-github-link。

这是什么

dsh-github-link 是纯 JavaScript 的 DSH Web 侧插件(版本 1.0.0,MIT 许可证),Host 入口为 index.js,在设置里提供 GitHub 账号 页面。安装后重启或刷新 DSH Web UI,在 设置 → GitHub 账号 完成关联即可。

插件以当前 dsh 进程权限运行;安装前建议自行查看仓库源码与许可证。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

账号关联与隔离

  • 绑定保存在本机 DSH credentials,按当前 DeepSeek 账号 ID 隔离。
  • 三种关联方式见下一节;gh-cli 方式不复制 token,每次通过 gh auth token 读取本机 CLI 登录,撤销或轮换 CLI 登录即可失效。

Agent 工具 github

action 作用
status 查看 DeepSeek / GitHub 关联状态,不需要已关联。
list_repos 列出当前 GitHub 账号可见的仓库。
list_issues 读取 owner/name 的 Issue / PR。
create_issue 创建 Issue,需要 title。
comment_issue 评论 Issue / PR,需要 number 和 body。

配置项 allowMutations 默认为 true,控制是否允许 Agent 创建 Issue / 评论。

明确不做的事

  • 不修改 DeepSeek 官方账号资料,不把 GitHub token 发给浏览器。
  • Agent 只能调用插件暴露的仓库与 Issue 操作,不能推送代码。

安装与启用

在已安装 DSH CLI 的本机执行(--profile web 面向 Web UI):

dsh plugin --profile web add github:qichuang321/dsh-github-link

安装后重启或刷新 DSH Web UI,打开 设置 → GitHub 账号。仓库无需构建步骤。

验证步骤(来自 README):

  1. 设置 → GitHub 账号 页面可见。
  2. 若本机 gh 已登录,「一键关联」后应显示 GitHub 用户名和 scope。
  3. 在对话中让 Agent 调用 github 工具执行 status 或 list_repos。

三种关联方式

1. 本机 GitHub CLI(推荐)

插件检测 gh auth status。若本机已执行过 gh auth login,在设置页点击「一键关联」即可,无需 OAuth App,也不把 token 存进 DSH。

配置项 autoLinkGhCli:代码默认 false;README 说明本机示例配置为 true——启动时若尚未绑定且 CLI 已登录,可自动完成关联。改为 false 可关闭;设置页「解除关联」会写入 opt-out,直到手动关联前不再自动关联。

2. Personal Access Token

在 GitHub 创建 token(README 推荐 fine-grained,只授权需要的仓库),粘贴到设置页。Token 写入 DSH credentials,不写入 localStorage。

3. OAuth App 设备授权

适合不想用本机 CLI 的场景(无 Client Secret 的设备流):

  1. GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
  2. 勾选 Enable Device Flow
  3. 将 Client ID 写入插件配置,例如:
- id: github-account-link
  name: 'dsh-github-link'
  config:
    clientId: 'Iv1.xxxxxxxxxxxx'
    scopes: 'read:user public_repo'

clientId 为空时,设置页设备授权按钮不可用。scopes 默认 read:user public_repo;CLI 方式沿用 gh 已有 scope。

配置字段

字段 默认值 说明
clientId 空 OAuth App Client ID;为空时设备授权不可用。
scopes read:user public_repo 设备授权请求的 scope。
allowMutations true 是否允许 Agent 创建 Issue / 评论。
autoLinkGhCli 代码默认 false 启动时若已登录 CLI 且没有绑定,是否自动关联。

典型用法

在对话中用自然语言驱动 Agent 调用 github 工具,README 示例:

列出我的 GitHub 仓库
查看 qichuang321/dsh-plugin-browser 的 open issues
在 owner/repo 创建一个 issue,标题是“...”,正文是“...”

也可直接要求执行 status 或 list_repos 做连通性检查。

适用场景与排查

适合:已在 DSH Web 中使用 Agent,需要只读或轻量 Issue 协作(列仓库、看 Issue、开 Issue、评论),且希望凭据与 DeepSeek 账号一一对应、尽量复用本机 gh 登录的场景。

注意:

  • 解除关联会删除 DSH 内记录并停止自动关联,不会退出 GitHub CLI,也不会自动吊销 GitHub 上的 token。
  • CLI 切换账号后,旧绑定可能显示不可用,需重新关联。
  • 401:token 失效,重新关联。
  • 403 / rate limit:按 GitHub API 速率限制后重试。
  • 设置页 404:确认插件已安装且 DSH Web 已重新加载。

结尾

dsh-github-link 把 DeepSeek 账号与 GitHub 绑定收拢到 DSH 设置与 credentials,并通过受控 github 工具暴露仓库与 Issue 能力,适合在 Harness 生态里做联网协作而不自行维护 token 管线。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye