dsh-github-aide:在 DSH 裏把工作區或項目目錄發佈到 GitHub

前言

在 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(不需要 gh CLI)
  • 一個 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
羽毛球分组比赛记分
小程序二维码

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

小夜