dsh-github:DeepSeek Harness 的 GitHub 集成插件

前言

DSH 采用插件化方式扩展工具能力。若希望模型在对话中直接处理 GitHub 事务,需要先解决两个问题:认证能否长期复用,危险操作是否有审批控制。

dsh-github 是 ChenYiming-aaa 维护的 DeepSeek Harness 社区插件,采用 MIT 许可。它提供 45 个 github_* 工具,全部调用 GitHub REST API v3。一次配置 GITHUB_TOKEN 或 OAuth Device Flow 后,模型可直接完成建仓、推送、提 PR、管 issue、搜索代码等事务;常规读操作和常规写操作直接放行,删除、force push、合并 PR、关闭 issue/PR 等危险操作保留审批门。

这是什么

dsh-github 是一个 GitHub 集成插件,用于把 GitHub REST API 接入 DSH 的工具调用链路。

它的主要定位是:

  • 提供 45 个 github_* 工具,覆盖建仓、推送、提 PR、管 issue、搜索代码等 GitHub 事务
  • 支持 GITHUB_TOKEN 或 OAuth Device Flow 认证,并持久化到 DSH credentials 或环境变量
  • 常规读/写直接放行,危险操作保留审批门
  • 零依赖,只用 Node 22+ 内置模块
  • 在 hosts 文件把 github 域名指向 127.0.0.1 时,自动改用 DNS 直查绕过
  • token 只进入 Authorization 请求头,错误信息与工具输出做防御性脱敏

运行前提方面,package.json 声明 Node 引擎为:

"^22.19.0 || >=24.0.0"

同时声明以下 peerDependencies:

"@deepseek-ai/cordis"
"@deepseek-ai/dsh-tools"
"@deepseek-ai/schemastery"

测试需要本机安装 DSH Desktop,因为 loader 引用其 dsh-tools

安装与启用

1、执行安装:

powershell -ExecutionPolicy Bypass -File .\install.ps1

2、如果只需要安装 desktop profile:

powershell -ExecutionPolicy Bypass -File .\install.ps1 -Profiles desktop

3、安装后重启 DSH Desktop,或重载 web profile 后生效。

配置认证

使用 Personal Access Token

PAT 需要以下权限:

repo
read:org
user

可以先用环境变量方式写入:

setx GITHUB_TOKEN "ghp_xxx"

新开终端或重启 DSH 后生效。

也可以不写环境变量,在 DSH 设置页的凭据中新增 GITHUB_TOKEN,然后粘贴 token。

使用 OAuth Device Flow

OAuth Device Flow 需要 GitHub OAuth App 的 Client ID 与 Client Secret。

1、在需要启用的 profile 的 cordis.patch.yml 中配置 oauthClientIdoauthClientSecretRef。如果同时使用 web 与 desktop,两个 profile 都要配置。示例如下:

- insert:
  - id: github
    name: dsh-github
    config:
      oauthClientId: <OAuth Client ID>
      oauthClientSecretRef: GITHUB_OAUTH_CLIENT_SECRET

2、在 DSH 设置页新增 GITHUB_OAUTH_CLIENT_SECRET 凭据,或设置同名环境变量。

3、重启 DSH 后,让模型调用 github_auth_login 登录 GitHub。按返回提示完成浏览器授权后,token 会持久化。

GitHub device-flow 的 access token 长期有效,没有 refresh token 机制。若失效,调用 github_auth_logout 清除后重新登录即可。

验证认证

在新会话中调用以下工具:

  • github_get_me:返回当前 GitHub 用户
  • github_auth_status:查看认证来源与有效性

典型用法

一键上传项目

调用 github_upload_project 可以一次提交建仓、推送、创建 PR 所需的数据。示例:

github_upload_project(
  repo: "my-app",
  description: "我的应用",
  files: [
    { path: "README.md", content: "# my-app" },
    { path: "src/main.js", content: "..." }
  ],
  create_pull_request: true
)

这个流程包含建仓、推送、创建 PR 等常规操作;如果其中不包含需要审批的动作,按审批规则会直接放行。

手动流程

也可以分步调用:

1、github_create_repository

2、github_create_branch

3、github_push_files

4、github_create_pull_request

如果需要合并 PR,再调用 github_merge_pull_request。该操作需要审批。

如果要关闭 issue 或 PR,可以使用 github_update_issuegithub_update_pull_requeststate: closed。该操作需要审批。

审批门

审批门默认开启。只有 allowed-once 才会放行;拒绝、取消或没有审批通道时 fail closed。

也可以把 approvalGate: false 关闭审批门,但不推荐。

需要审批的操作包括:

操作 工具/参数
删除仓库 github_delete_repository
删除文件 github_delete_file
删除分支 github_delete_branch
force push github_push_filesforce: true
合并 PR github_merge_pull_request
关闭 issue / 关闭 PR github_update_issue / github_update_pull_requeststate: closed

其余读操作和常规写操作直接放行。

注意事项

  • 插件以当前 dsh 进程权限运行。安装前应检查源码、依赖与 MIT 许可。
  • 本文不展开完整 45 个工具清单;仓库中的 TOOLS.md 可作为工具清单参考。
  • PAT 权限范围只给必要范围,至少需要 reporead:orguser
  • 如果本地 hosts 文件存在屏蔽或坏条目,把 github 域名指向 127.0.0.1 时,插件会改用 DNS 直查绕过。
  • DSH 插件目录是独立社区站点,不能理解为 DeepSeek 或幻方的官方应用商店。

获取链接

  • GitHub:https://github.com/ChenYiming-aaa/dsh-github
  • 插件线索中的目录页:https://www.skillhub.cn/plugins/ChenYiming-aaa/dsh-github

结尾

dsh-github 的价值在于把 GitHub 操作接入 DSH 的插件体系:一次认证后长期可用,常规操作保持低摩擦,危险操作保留审批。对需要在智能体工作流中处理仓库、分支、issue、PR 和搜索的场景,它提供了一个明确的接入点。

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

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

Xiaoye