dsh-sync-updater:在 DSH 裏統一盤點、檢查並更新技能與插件

前言

在 DeepSeek Harness(DSH)裏,技能和插件往往來自不同路徑:技能可能在項目目錄、用戶目錄或 skillshare 源裏;插件則掛在 profile 的 package.json 依賴上。DSH 自帶的插件管理器只在你顯式操作時纔會動,技能側又主要監聽本地文件變化,不會主動去拉上游。時間一長,「裝了多少、有沒有新版本、要不要升」容易變成手工對倉庫和 registry 的零散覈對。

dsh-sync-updater(GitHub:Bertli486/dsh-sync-updater)把已安裝技能與 profile 插件收攏到一處,提供側欄面板、三個面向模型的工具,以及可配置的後臺定時檢查。維護者爲 Bertli486,社區目錄分類爲 admin-security;當前 package 版本爲 0.1.0,許可 MIT。

這是什麼

一句話:在 DSH 裏統一查看、檢查並同步更新已安裝的技能(skills)與插件(plugins/bundles)。

它不改變 DSH 核心行爲,而是在現有掃描規則之上做清單、對比上游、按需應用更新,並在「發現」頁通過 skills.sh 搜索新技能(安裝前可走多廠商安全審計)。

核心功能

側欄「同步」面板

重啓 DSH 後,左側欄插件列表下方會出現「同步」入口。面板大致分幾塊:

  • 自動更新:檢查頻率(關閉 / 30 分鐘 / 1 小時 / 6 小時 / 24 小時),以及「檢查到技能更新時自動應用」開關。
  • 操作:檢查更新、按數量更新技能或插件;右側顯示上次檢查時間與結果。
  • 技能列表:名稱、狀態、上游倉庫、最近檢查結論,每行可單獨更新。
  • 插件列表:安裝版本與 registry 最新版本、來源類型(registry / 本地 link / 隨 App 提供),每行可單獨更新。
  • 最近操作:當前會話內的操作與結果摘要。

面板寫入的開關保存在 ~/.dsh/sync-updater/settings.json,優先級高於 cordis.patch.yml 中的默認值,保存後會立刻重排定時器,無需改配置或重啓進程。

發現頁

搜索走 skills.sh 的公開接口,結果包含 owner/repo、skillId 與安裝量。點擊「安裝」前會先拉取安全審計(Gen Agent Trust Hub / Socket / Snyk / Runlayer / ZeroLeaks);結論爲 fail 或 HIGH/CRITICAL 時,按鈕變爲「仍要安裝」,需二次確認。

安裝優先用 git blobless clone 在倉庫裏按 SKILL.md 父目錄名定位技能目錄,再稀疏檢出並複製到 ~/.agents/skills/<skillId>,全程非交互、不依賴 node/npm。裝完後會在 state.json 的 installed 中記錄 source / repoDir,便於後續 sync_check 識別上游。找不到同名目錄時纔回退到 skillshare install(交互式 TUI,非交互場景可能掛起,僅作兜底)。

三個模型工具

工具 作用 聯網
sync_status 技能與插件清單(版本、來源、路徑、自動檢查配置、上次結果) 否
sync_check 檢查更新:插件對比 npm registry;技能對比上游 SKILL.md 哈希或本地 git 分支 是
sync_apply 應用更新:技能走下載 / git pull / skillshare;插件走 pnpm add 是

sync_apply 可選參數包括:targets(['skills'] / ['plugins'])、names(只處理指定項)、dryRun、toLatest(插件是否跨聲明範圍升到 latest,默認關閉)。

覆蓋範圍與更新方式

技能(按 DSH 掃描順序,先到先得):<cwd>/.dsh/skills、<cwd>/.agents/skills、~/.dsh/skills、~/.agents/skills、~/.config/skillshare/skills;軟鏈接會被跟隨。

插件:profile package.json 中的全部依賴;@deepseek-ai/* 與帶 dsh 標記的包視爲「隨 App 提供」,不會嘗試升級;link: / file: / git / tarball 視爲本地或非 registry 來源。

技能更新分三種來源:有 ~/.agents/.skill-lock.json 記錄時用 raw GitHub 上同路徑 SKILL.md 的 sha256 檢測,更新用稀疏 clone 替換目錄且不擅自改 lock 文件;git 工作樹內 tracked 倉庫用 git fetch 與 rev-list 判斷落後,更新用 git pull --ff-only;skillshare 源交給 skillshare update 與 skillshare sync。

插件更新讀 registry 的 dist-tags.latest,默認只在原聲明範圍內升級,安裝時鎖定到具體版本;失敗會還原 package.json 與 pnpm-lock.yaml。

狀態與安全邊界

狀態與日誌路徑包括:settings.json、state.json(含最近 50 條歷史)、plugin.log,以及每次技能替換前的整目錄備份 ~/.dsh/sync-updater/backups/<時間戳>/<技能名>/(不自動清理)。

安全邊界上:不升級隨 DSH 提供的包;不刪除技能,替換前備份;下載內容缺少 SKILL.md 則放棄替換;插件安裝失敗回滾 manifest 與 lockfile;外部命令以數組傳參,不經過 shell。

安裝與啓用

在對應 profile 下執行(將 web 換成你宿主實際的 profile 名):

dsh plugin --profile web add github:Bertli486/dsh-sync-updater

DSH Desktop 也可在「設置 → 插件」中安裝。重啓後左側欄出現「同步」,同時註冊 sync_status、sync_check、sync_apply。

開發時可 link: 掛進 profile,並在 package.json 的 dsh.profile.bundles 中加入 dsh-sync-updater;調試狀態可請求:

curl -s http://127.0.0.1:<port>/sync-updater/api/state | jq .

可選默認配置在 cordis.patch.yml 中,例如:

- id: sync-updater
  name: 'dsh-sync-updater'
  config:
    autoCheckIntervalMinutes: 360   # 0 = 關閉
    autoApplySkills: false
    includeProjectSkills: true
    includeUserSkills: true
    registry: ''
    pnpmCommand: ''
    gitCommand: ''
    skillshareCommand: ''

典型用法

  1. 打開側欄「同步」,點「檢查更新」,在技能與插件列表裏查看是否有可升項。
  2. 需要 agent 代勞時,讓模型調用 sync_check,再根據結果調用 sync_apply(可指定 targets、names 或 dryRun 試跑)。
  3. 在「發現」頁搜索 skills.sh,審閱審計結果後安裝新技能到 ~/.agents/skills。
  4. 將自動檢查設爲 6 小時或 24 小時,按需打開「檢查到技能更新時自動應用」。

改 lib/index.js 或 lib/client.js 後需重啓 DSH 才生效;HMR 只熱重載配置,不重載模塊根。

適用場景與注意

適合長期在 DSH 裏疊加多技能、多社區插件、且希望減少手工對 GitHub 與 npm 覈對工作的開發者。分類 admin-security 也體現在發現頁安裝前的多廠商審計與二次確認流程上。

使用前請注意:插件以當前 DSH 進程權限運行,會執行 git、pnpm、skillshare 等外部命令並可能修改 package.json 與技能目錄;安裝前應閱讀源碼與 MIT 許可證,確認來源可信。已知限制包括:主要跟蹤 SKILL.md 內容變化,同目錄其他文件單獨變更不會單獨提示(但整目錄更新時會一併替換);發現頁依賴 skills.sh 未文檔化的搜索接口,接口變更時搜索可能報錯,不影響已有項的更新;通過發現頁安裝的技能落在 ~/.agents/skills,不會進入 skillshare 源目錄。

社區插件目錄爲獨立站點 skillhub.cn,與 DeepSeek / 幻方無官方從屬關係;本文事實以倉庫 README 與 package 元數據爲準。

結尾

dsh-sync-updater 補的是 DSH 裏「統一清單 + 查上游 + 應用更新」這一環,側欄、模型工具與定時檢查可以並存。目錄頁:https://www.skillhub.cn/plugins/Bertli486/dsh-sync-updater;源碼與完整說明:https://github.com/Bertli486/dsh-sync-updater。

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

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

小夜