前言¶
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 和搜索的場景,它提供了一個明確的接入點。