dsh-packer:把 DSH Agent 配置打成 zip,換機一鍵恢復

前言

在 DeepSeek Harness(DSH)里長期使用,本地會積累不少「帶狀態」的東西:Skills、會話與附件、已裝插件、Profile、全局設置、預設,還有記憶相關的 Markdown 鏡像和 SQLite 真庫。換電腦或重裝時,若只靠手工拷貝目錄,容易漏模塊、路徑和密鑰混進分享包,恢復時也很難在「覆蓋」和「保留本機已有內容」之間做選擇。

下面介紹社區插件 dsh-packer(Agent 配置打包器):按模塊把上述資產封成標準 zip,在新機器上解開並按策略寫回;遷移場景默認儘量全量,分享場景默認只帶 Skills 並強制脫敏。敏感檢測與可選加密、恢復前差異對比和原子寫入,都圍繞「可搬運」和「少泄密」設計。

這是什麼

dsh-packer 是 DSH 的打包與恢復插件,當前版本 v0.7.2(MIT License)。要求 DSH >=0.2.0-rc.2 <0.3.0-0,Node >=22.19.0;README 註明在 DSH 0.2.1-rc.3 桌面版上實測過。

典型用途有兩類:

  • 遷移:整機或 profile 搬遷,默認勾選九大模塊(含已裝插件本體、會話附件、記憶真庫快照等)。
  • 分享:主要導出 Skills;會話、附件、記憶、插件及個人 skill 子目錄等按預設排除,並對命中隱私規則的內容在包內脫敏。

產出爲標準 zip(純 JS 實現,不依賴外部 tar/unzip),默認目錄爲 ~/.dsh/packs/,可用環境變量 DSH_PACKS_DIR 覆蓋。

核心功能

模塊化打包

九個模塊可任意組合:

模塊 含義(摘要)
skills ~/.dsh/skills 下的 Skills
sessions ~/.dsh/sessions 會話(.zstd)
attachments 會話引用的圖片/文件字節(~/.dsh/attachments/v1/objects)
profiles Profile 配置(不含 node_modules)
plugins 已安裝插件本體(體積較大,遷移預設默認帶上)
settings 全局 settings.yaml
presets .agent-presets
memory 記憶 Markdown 鏡像(只讀副本)
memoryDb biomemory.db 的 VACUUM INTO 一致快照

遷移預設默認全選;分享預設只勾 skills。只打包 sessions 而不帶 attachments 時,恢復後會話可開但圖片會缺字節;設置頁裏「會話記錄」組會同時包含 sessions 與 attachments。

.credentials.yaml、.anonymous-user-id 任何模式下都不會進包。

隱私掃描與脫敏

打包前對已知文本類文件做掃描:本地/UNC 路徑、用戶目錄路徑、疑似密鑰賦值、常見密鑰形狀(如 sk-、ghp_、AKIA、JWT)、以及可由 config.personalPatterns 配置的個人暱稱等。

  • 分享模式:命中後強制「清理後打包」(只改 zip 內副本,源文件不動);不允許分享預設之外的模塊。
  • 遷移模式:以報告爲主,可用 --dry-run 或 /pack scan 先看命中,再選清理或直接打包。

脫敏對 .json/.jsonl 會做解析校驗,結構不變才寫入,否則整文件回退並記 warning。

加密、清單與恢復安全

  • 可選 AES-256-GCM + scrypt 口令(PKENC1 容器);無正確口令無法讀清單或恢復。
  • manifest.json 記錄 schemaVersion 與每文件 SHA-256;恢復前校驗,缺指紋或格式非法則拒絕(fail-closed)。
  • 恢復前備份到 packs/.restore-backups/<時間戳>/,臨時文件寫完後 rename 原子替換;失敗中止並回滾。支持 /restore/backups 與設置頁回滾。
  • 衝突策略:覆蓋 / 跳過 / 合併(合併爲追加,不覆蓋已有內容)。
  • 可按模塊選擇性恢復;記憶真庫默認恢復時不寫入,需 --include-db / includeDb: true。

打包與恢復以後臺作業形式運行(/jobs/:id),界面有進度,支持在文件邊界取消。

安裝與啓用

桌面版按包名安裝(推薦)

  1. 打開 DSH 桌面版 → 左側 插件 → 加插件;
  2. 包名填 dsh-packer,點 安裝(安裝後自動啓用)。

命令行等價:

# 把 desktop 換成你的 profile 名
dsh plugin --profile desktop add dsh-packer

從 GitHub 安裝(備選)

# 需要已安裝 git
dsh plugin --profile desktop add github:KLRSL/dsh-packer
dsh plugin --profile desktop add link:./dsh-packer

安裝後需重啓 DSH。驗證方式:設置頁出現 「配置打包」 標籤;或終端執行 /pack list;可用 /pack create --dry-run 預覽清單與掃描結果而不生成 zip。

典型用法

打包

# 遷移包(默認全選模塊)
/pack create --note "遷移到新機器"

# 分享包(僅 Skills,強制脫敏)
/pack create --share --note "分享給朋友"

# 只預覽、不生成 zip
/pack create --mode migrate --dry-run

分享包會自動附帶說明內容的 README.md。

恢復

/pack restore ~/.dsh/packs/dsh-packer-2026-09-05-223045-migrate.zip

/pack restore <zip路徑> --strategy merge

strategy 可取 overwrite、skip、merge。恢復後按需重啓 DSH。若需寫入記憶真庫:

/pack restore <zip路徑> --include-db

適用場景與注意

適合誰

  • 經常在多臺機器間同步 DSH 環境的開發者。
  • 需要把 Skills 交給他人、又不願把會話、密鑰和本機路徑一併帶出的場景。
  • 分類上屬於 admin-security 取向:重視脫敏、加密、清單校驗與恢復回滾。

使用前請知悉

  • 插件隨當前 DSH 進程權限讀寫本機 ~/.dsh 等路徑;安裝前建議閱讀源碼與 MIT 許可證,確認符合你的安全策略。
  • memoryDb 打包用只讀連接做 VACUUM INTO,一般不必先停 DSH;快照失敗時該文件不進包並列入 unreadable。
  • 社區目錄 SkillHub 上的 dsh-packer 條目 與 GitHub 倉庫命名可能不一致;從 GitHub 安裝時請使用 README 中的 github:KLRSL/dsh-packer。SkillHub 爲社區插件站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-packer 把 DSH 裏分散的 Agent 資產收成可校驗、可加密、可分模塊恢復的 zip,用遷移/分享兩套預設區分「整包搬遷」和「只分享 Skills」。若你正在規劃換機或對外分享配置,可從設置頁 配置打包 或 /pack create --dry-run 先看模塊與隱私掃描結果,再決定是脫敏、加密還是全量保真打包。

  • 社區目錄:https://www.skillhub.cn/plugins/K-W7/dsh-packer
  • GitHub(README 倉庫地址):https://github.com/KLRSL/dsh-packer
羽毛球分组比赛记分
小程序二维码

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

小夜