前言¶
DeepSeek Harness (DSH) 智能體在處理代碼、提交 PR 或管理倉庫時,通常需要與 GitHub 交互。本插件爲 DSH 提供了原生的 GitHub REST API 工具,並配套瀏覽器側邊欄面板,解決了智能體直接調用 API 的繁瑣問題,支持賬號綁定、倉庫搜索、Issue/PR 管理,以及將倉庫克隆爲本地工作區。
核心能力¶
該插件包含兩類核心功能:面向模型(Agent)的命令行工具和麪向用戶的瀏覽器側邊欄面板。
賬戶綁定工具¶
用於在 DSH 中建立與 GitHub 的認證連接。
* github_bind:驗證 GitHub 個人訪問令牌,並將其持久化存儲到憑證庫。
* github_whoami:查詢當前綁定的 GitHub 賬號信息及 Token 來源。
* github_unbind:解除賬號綁定,移除存儲的 Token。
GitHub API 工具¶
註冊了一系列 github_* 工具,供智能體直接調用。
* 查詢類:github_repo(獲取倉庫元數據,如 stars、語言)、github_search(搜索倉庫、代碼或 Issue)、github_my_repos(列出當前賬號倉庫)、github_issues(列出 Issue)、github_prs(列出 Pull Request)。
* 操作類:github_create_issue、github_create_pr、github_content(讀取文件或目錄)、github_comment(對 Issue 或 PR 發表評論)。
工作區集成工具¶
將 GitHub 倉庫轉化爲 DSH 的本地工作區。
* github_workspace_add:克隆倉庫到本地並註冊爲工作區。
* github_workspace_list:列出已註冊的 GitHub 工作區及其本地路徑。
瀏覽器側邊欄面板¶
在 dsh web 界面的側邊欄添加 GitHub 圖標。
* 狀態顯示:顯示綁定的賬號及註冊的工作區列表。
* 倉庫管理:點擊列表中的倉庫可將其克隆並註冊爲工作區。
* 操作入口:提供“綁定賬號”、“添加工作區”和“刷新”按鈕。
安裝與啓用¶
在插件目錄下執行以下命令安裝:
dsh plugin --profile web add .
安裝或更新後,必須重啓 Web GUI (dsh web) 以加載新的插件包。客戶端插件發現機制僅在進程啓動時運行,緩存了“非客戶端包”的判定結果,因此運行中的 GUI 無法自動識別新安裝的插件。
配置¶
插件支持通過配置文件或環境變量設置參數。配置項的 Token 解析優先級爲:憑證庫 (credential store) > 插件配置 (plugin config) > 環境變量。
在 ~/.dsh/cordis.patch.yml 或對應 Profile 目錄下配置:
- id: tool-github
config:
token: "" # 可選,推薦使用 github_bind 或 GITHUB_TOKEN 環境變量
baseUrl: "https://api.github.com"
timeoutMs: 30000
maxResults: 10
workspaceRoot: "~/.dsh/github-workspaces"
典型用法¶
在 DSH 的對話中直接調用上述工具:
# 綁定賬號
github_bind <your_token>
# 查詢當前賬號
github_whoami
# 添加 DeepSeek-Harness 倉庫爲工作區
github_workspace_add deepseek-ai DeepSeek-Harness
# 查看可用的 GitHub 工作區
github_workspace_list
# 獲取倉庫的 star 數
github_repo deepseek-ai DeepSeek-Harness
# 搜索 stars 超過 3000 的 Python PDF 庫
github_search python stars:>3000 pdf
工作原理¶
賬戶綁定機制¶
github_bind 首先通過調用 GET /user 驗證 Token 的有效性。驗證通過後,通過 DSH 的憑證接口 (ctx.credentials) 將 Token 存儲在 GITHUB_TOKEN 鍵下,數據持久化在 $DSH_HOME/.credentials.yaml 中。後續工具調用時會自動讀取該憑證,無需重複輸入。
工作區集成機制¶
github_workspace_add 接收 owner/repo 參數。它首先嚐試使用 git clone 克隆倉庫到 workspaceRoot 目錄,若遇到 git TLS 不可用的情況,則回退使用 GitHub CodeLoad tarball 下載。克隆完成後,調用 ctx.workspaceRegistry.create 將倉庫註冊到工作區註冊表,使其出現在工作區選擇器中,智能體即可在此目錄下使用文件操作工具。
注意事項¶
- 環境要求:插件依賴 Node.js >= 20。
- 重啓生效:修改配置或安裝插件後,務必重啓
dsh web進程。 - TLS 回退:在特定網絡環境下(如某些受限網絡),插件會自動從
git clone切換到codeload下載方式。 - 權限範圍:Token 的權限範圍決定了智能體能訪問的倉庫(包括私有倉庫)和執行的操作(如讀寫文件、創建 PR)。
生態背景¶
DeepSeek Harness (DSH) 採用“一切皆插件”的架構。本插件爲社區貢獻的獨立工具,旨在增強 DSH 與 GitHub 生態的集成能力。插件目錄與 DeepSeek 官方無從屬關係。