DeepSeek Harness (DSH) 工作區的代碼通常在本地管理。如果要將其發佈到 GitHub,通常需要手動創建倉庫、初始化 git、配置認證信息並推送。dsh-github-sync 插件通過 DSH 的憑據庫管理 GitHub Personal Access Token (PAT),自動完成倉庫創建、初始化、提交和推送。該插件由 s-huizhuy-u 維護,採用 MIT 許可證。
核心功能¶
插件提供以下能力:
- 創建倉庫:GitHub 上不存在則創建,已存在則複用。
- 初始化 git:沿用項目當前所在分支;新倉庫默認使用
main。 - 提交:暫存整棵工作樹並提交;沒有變更時複用現有
HEAD,而不是報錯。 - 推送:歷史分叉時先 fetch 再 rebase 再推送。
- 自動配置:寫入賬號的提交身份,並把分支上游記錄下來。
- 只讀預覽:
github_status報告同步將要做什麼,不改動任何東西。
安裝與啓用¶
將插件包複製到 DSH profile 目錄,並執行安裝腳本:
node scripts/install.mjs
腳本會定位 DSH home,將插件複製到 <profile>/.local-plugins/ 和 <profile>/node_modules/,並更新 dsh.profile.bundles 和 cordis.patch.yml。安裝完成後重啓 DSH。
環境要求¶
運行此插件需要滿足以下條件:
- DeepSeek Harness
0.1.5-rc.2或更高版本 - Node.js
20.12+(需要AbortSignal.any) PATH中包含 git 可執行文件
典型用法¶
插件提供了三個主要工具:
github_sync:發佈當前工作區。github_status:報告同步將會做什麼。github_configure:向 GitHub API 校驗並存儲 token。
示例交互¶
用戶向助手發出指令:
你:把這個項目傳到 GitHub
助手執行 github_sync 後反饋:
DSH:已同步 12 個變更文件到 octocat/my-project(分支 main)。
倉庫:https://github.com/octocat/my-project
認證配置¶
使用前需要一個 GitHub Personal Access Token (PAT)。
提供方式¶
有三種方式提供 token:
- 環境變量:設置
GITHUB_TOKEN或GH_TOKEN。這是 CI 和共享機器上的最佳選擇,不會在磁盤留下痕跡。 - 助手存儲:說「存一下我的 GitHub token」,助手會使用
github_configure存儲。 - HTTP API:向
POST /api/github-sync.token發送請求,body 爲{"token": "..."}。
權限要求¶
| Token 類型 | 需要的權限 |
|---|---|
| classic | repo(僅發佈公開倉庫可用 public_repo) |
| fine-grained | Contents: Read and write;若要創建倉庫,還需 Administration: Read and write |
重要說明:存儲的 token 保存在 DSH 憑據庫中,不在 settings.yaml。所有 token 在日誌或對話記錄前都會被遮蔽。
設計取捨¶
爲了安全性和穩定性,插件做出了以下設計決定:
- token 永不落盤:
origin保存乾淨的倉庫 URL,認證信息僅在單次git push時使用。token 不會進入.git/config。 - git 永不彈出提示:每次調用都設置
GIT_TERMINAL_PROMPT=0、GIT_ASKPASS=和GCM_INTERACTIVE=never,避免認證失敗時調用掛起。 - 遠端分叉是協調:衝突時使用
git rebase --abort回滾,工作樹保持原樣,需手動解決衝突或顯式開啓force覆蓋。 - 非併發安全:同一工作區多次 git 操作會在索引鎖上衝突。
故障排查¶
| 現象 | 原因與處理 |
|---|---|
No GitHub token is configured |
設置 GITHUB_TOKEN 環境變量,或使用 github_configure 存儲並重啓 DSH |
GitHub rejected the request (HTTP 401) |
Token 過期或錯誤,需重新簽發 |
HTTP 403 且帶權限提示 |
檢查 token 權限。fine-grained token 需勾選倉庫並授予 Contents 和 Administration 寫權限 |
TLS_UNTRUSTED |
若使用了 GitHub 加速器(如 Watt Toolkit、FastGithub),需配置 NODE_EXTRA_CA_CERTS |
git push failed … non-fast-forward |
遠端有新提交,可重試或傳 force 參數覆蓋 |