前言¶
在 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),界面有進度,支持在文件邊界取消。
安裝與啓用¶
桌面版按包名安裝(推薦)¶
- 打開 DSH 桌面版 → 左側 插件 → 加插件;
- 包名填
dsh-packer,點 安裝(安裝後自動啓用)。
命令行等價:
# 把 desktop 換成你的 profile 名
dsh plugin --profile desktop add dsh-packer
從 GitHub 安裝(備選)¶
# 需要已安裝 git
dsh plugin --profile desktop add github:KLRSL/dsh-packer
本地 link(開發)¶
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