前言¶
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 中配置 oauthClientId 和 oauthClientSecretRef。如果同时使用 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_issue 或 github_update_pull_request 的 state: closed。该操作需要审批。
审批门¶
审批门默认开启。只有 allowed-once 才会放行;拒绝、取消或没有审批通道时 fail closed。
也可以把 approvalGate: false 关闭审批门,但不推荐。
需要审批的操作包括:
| 操作 | 工具/参数 |
|---|---|
| 删除仓库 | github_delete_repository |
| 删除文件 | github_delete_file |
| 删除分支 | github_delete_branch |
| force push | github_push_files 的 force: true |
| 合并 PR | github_merge_pull_request |
| 关闭 issue / 关闭 PR | github_update_issue / github_update_pull_request 的 state: closed |
其余读操作和常规写操作直接放行。
注意事项¶
- 插件以当前 dsh 进程权限运行。安装前应检查源码、依赖与 MIT 许可。
- 本文不展开完整 45 个工具清单;仓库中的
TOOLS.md可作为工具清单参考。 - PAT 权限范围只给必要范围,至少需要
repo、read:org、user。 - 如果本地 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 和搜索的场景,它提供了一个明确的接入点。