前言¶
在 DeepSeek Harness(DSH)裏做智能體或插件開發時,經常要把當前工作區或某個本地項目推到 GitHub:既要建倉庫、初始化 git、提交和推送,又要避免把 .env、token 之類寫進遠端。社區裏原先有側重「工作區同步」和「項目預檢上傳」的兩套插件,維護與令牌解析路徑也不完全一致。maxid/dsh-github-aide 把這兩類能力合併成一套:同一套令牌解析、GitHub REST 客戶端、git 層和設置命名空間 github-aide,既支持發佈當前 DSH 工作區,也支持指定任意目錄,並在發佈前做只讀預檢與機密掃描。
下面按定位、能力、安裝、用法和注意事項說明。
這是什麼¶
dsh-github-aide 是 DSH 的聯網類插件,維護者爲 maxid。倉庫:https://github.com/maxid/dsh-github-aide;社區目錄頁:https://www.skillhub.cn/plugins/maxid/dsh-github-aide。
一句話:在 DSH 內完成「預檢 →(可選)生成 .gitignore → 創建或複用 GitHub 倉庫 → 本地 git 初始化/提交 → 處理遠端分叉 → 推送」,令牌保存在 DSH 憑據庫,不寫入 settings.yaml 或 git 配置。
核心功能¶
資料中列出的能力如下。
| 能力 | 說明 |
|---|---|
| 項目預檢 | 目錄內容、技術棧、體積、憑據掃描、git 狀態、GitHub 賬號、同名倉庫是否存在 |
| 機密掃描 | 命中 .env、私鑰、ghp_*、AKIA*、sk-* 等特徵時默認攔截髮布 |
.gitignore 生成 |
無 .gitignore 時按識別到的技術棧生成;已有則不改動 |
| 創建倉庫 | GitHub 上不存在則創建(默認私有),已存在則複用 |
| 初始化 git | 僅在還不是倉庫時執行;沿用已有分支,新倉庫用 main |
| 提交 | 暫存整棵工作樹並提交;無變更時複用 HEAD |
| 處理遠端分叉 | 推送前 fetch + rebase;衝突時回滾並報告 REBASE_CONFLICT |
| 推送 | 令牌經內存中的 askpass 傳遞,origin 爲不含憑據的 HTTPS URL |
| 只讀預覽 | github_status 或 dryRun 只報告將執行的操作,不寫文件、不建倉庫 |
| Web 面板 | 側邊欄填令牌與目錄 → 預檢 → 發佈 |
插件還提供三個 Agent 工具:github_publish(發佈)、github_status(只讀預檢)、github_configure(保存或清除 token)。對話示例(來自 README):
你: 把這個項目傳到 GitHub
DSH: 已把 12 個變更文件發佈到 maxid/my-project(分支 main)。
倉庫:https://github.com/maxid/my-project
環境要求¶
- DeepSeek Harness:
>=0.2.1-rc.3 <0.3.0-0(package.json中engines.dsh;README 寫明在0.2.1-rc.5與桌面版0.2.1-rc.3上驗證過加載) - Node.js 22+
PATH中有git(不需要ghCLI)- 一個 GitHub personal access token
插件 tag 與 DSH 官方版本對應,命名形如 dsh-v<版本>。當前 README 示例爲 DSH 0.2.1-rc.5 對應 tag dsh-v0.2.1-rc.5。
安裝與啓用¶
推薦用 DSH 插件命令(profile 名按實際環境替換):
dsh plugin --profile desktop add "link:$PWD"
若從 GitHub 按 DSH 版本安裝,README 給出的命令爲:
dsh plugin --profile desktop add "github:maxid/dsh-github-aide#dsh-v0.2.1-rc.5"
也可將倉庫複製進 profile 後,用附帶腳本聲明(可重複執行,會打印寫入路徑):
node scripts/install.mjs --profile desktop
裝完後重啓 DSH。腳本會把插件放到 profile 的 .local-plugins/ 與 node_modules/,加入 dsh.profile.bundles,並在 cordis.patch.yml 寫入加載行。
認證與默認設置¶
Token 來源優先級:環境變量 GITHUB_TOKEN 或 GH_TOKEN → 對話中通過 github_configure 存入憑據庫 → Web 面板「GitHub 發佈」保存並校驗。
Classic token 需要 repo(僅公開倉庫可用 public_repo);fine-grained 需要 Contents: Read and write,若由插件創建倉庫還需 Administration: Read and write(或賬戶級 Repository creation)。
設置命名空間爲 github-aide,可在 設置 → 插件 或 profile 的 cordis.patch.yml 中配置,例如:
- id: github-aide
name: dsh-github-aide
config:
owner: maxid
visibility: private
timeoutMs: 600000
常用鍵包括:owner、visibility(默認 private)、branch、commitMessage、allowSensitive、autoIgnore(默認 true)、timeoutMs(默認 600000)、maxScanFiles(默認 8000)等,完整表見倉庫 README。
典型用法¶
1. 只讀預檢(不寫盤)
調用工具 github_status(path?),或在面板點「預檢(只讀)」。返回倉庫名/所有者/分支、技術棧、掃描命中、git 狀態、遠端是否存在、令牌來源等。
2. 發佈
github_publish 主要參數:path(默認工作區根)、repo、owner、visibility、branch、commitMessage、dryRun、allowSensitive、autoIgnore、push、force 等。dryRun: true 時只預演;機密掃描命中默認中止,需顯式 allowSensitive=true 才繼續。
3. HTTP 接口(Host 已啓動時)
同源/迴環請求:GET /plugins/dsh-github-aide/status;POST .../preflight、.../publish、.../config(參數與工具/面板一致)。
適用場景與注意¶
適合在 DSH 會話或面板裏快速把本地項目同步到 GitHub、且希望發佈前有預檢與機密攔截的場景。合併後只需維護一套令牌與 git 行爲,比分別安裝 sync/upload 兩類插件更省事。
務必注意:
- 插件以當前 DSH 進程權限運行;安裝前應自行查看源碼與 MIT 許可證,確認行爲可接受。
- 憑據掃描默認可攔截髮布;確認無風險後再使用
allowSensitive。 github_publish聲明isConcurrencySafe: false,同一目錄不宜併發兩次 git 操作。- 社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本插件是社區維護的聯網工具之一。
常見錯誤如 No GitHub token is configured、SENSITIVE_BLOCKED、REBASE_CONFLICT、HTTP 403 / PERMISSION 等,README「故障排查」表中有對應原因與處理方式。
結尾¶
dsh-github-aide 把 DSH 工作區發佈與任意目錄上傳合併爲一條流水線:只讀預檢、機密掃描、.gitignore 生成、建倉、提交、分叉協調與推送,令牌留在 DSH 憑據庫與內存 askpass 中。需要安裝命令、工具參數與安全設計細節時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/maxid/dsh-github-aide
- GitHub:https://github.com/maxid/dsh-github-aide