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

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

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

小夜