前言¶
用 DeepSeek Harness(DSH)一段時間後,本地 ~/.dsh 下會積累不少資產:自己寫的 skills、歷史會話、profile 配置、全局設置、記憶數據。換機器或重裝時,這些文件散落在不同目錄,手動找齊再拷過去很容易遺漏;想把幾個 skill 發給別人,又不確定文件裏是否帶着本地路徑或密鑰。
dsh-packer 針對的就是這兩件事:把本地 DSH 資產按模塊打包成標準 zip,一條鏈路覆蓋遷移(整套環境搬過去)與分享(只把該給的給別人),打包前的隱私掃描貫穿兩種場景。
這是什麼¶
dsh-packer 是 DSH 的「Agent 配置打包器」插件,由 KLRSL 維護,MIT 許可證,當前版本 v0.2.2(2026-09-05)。DSH 的理念是「一切皆插件」,插件通過 dsh plugin 命令安裝進 profile,這個插件本身也遵循同一套機制。
它的能力分三塊:按模塊組合打包、打包與恢復前後的預覽校驗、隱私安全掃描,全部按需開啓。下面分別介紹。
核心功能¶
模塊化打包與雙模式預設¶
六個模塊任意組合:
| 模塊 | 內容 |
|---|---|
skills |
Skills,位於 ~/.dsh/skills |
sessions |
會話記錄(.zstd 格式),位於 ~/.dsh/sessions |
profiles |
Profile 配置(不含 node_modules),位於 ~/.dsh/profiles |
settings |
全局設置(settings.yaml) |
presets |
Agent 預設(.agent-presets) |
memory |
記憶數據(DSH_MEMORY_ROOT 或 ~/.dsh/memory,不含 backups/) |
兩個預設模式:
1、遷移(migrate):全部模塊默認勾選,適合搬遷整套環境;
2、分享(share):只勾 skills,會話與記憶自動排除,個人 skill 子目錄 _shared 也會排除,讓敏感內容儘可能少進包。
隱私安全掃描¶
打包前對文本文件做掃描,規則包括:本地絕對路徑、用戶目錄路徑、疑似密鑰 / Token(api_key、secret、password、token、bearer、authorization 等賦值)、個人暱稱、Windows 用戶名路徑。
攔截策略按模式區分:分享模式命中任何規則即報錯、強制攔截、不生成包;遷移模式僅報告不攔截,可以先用 /pack scan 或 --dry-run 查看命中點,自行判斷。
另外,.credentials.yaml 與 .anonymous-user-id 永不進包——遍歷任何模塊時一律跳過,無論遷移還是分享。
打包與恢復的可預覽性¶
打包前可以預覽文件級清單,--dry-run 模式不生成 zip;恢復前先出差異報告,按新增 / 變更 / 相同 / 跳過四類列出文件,確認後再應用。
恢復衝突策略¶
對沖突文件三選一:overwrite(覆蓋)、skip(跳過)、merge(文本追加,不覆蓋已有內容)。注意 JSON / YAML 等結構化配置不支持 merge——追加即損壞,這類文件請用覆蓋或手工合併。
清單完整性校驗與路徑安全¶
包內清單 manifest.json 記錄 schemaVersion 與每個文件的 SHA-256 指紋;恢復前做 fail-closed 校驗,任何一項不匹配就整體拒絕、不應用任何文件。恢復路徑還做 containment 校驗,zip-slip 或篡改清單的 ../ 越界一律拒絕。
包管理¶
包列表展示創建時間、大小、包含模塊、備註,支持刪除、重命名,打包時可以填寫備註。分享包會自動生成並附帶一份 README.md 說明包內容。
界面與實現¶
1、設置頁提供「配置打包」標籤頁(模塊勾選 / 預設切換 / 預覽 / 打包 / 恢復 / 包管理),與 /pack 命令等價;
2、打包工作流面板跟隨 DSH 主題做深色模式適配(--dsw-alias-* 變量,雙通道探測);
3、零原生 npm 依賴:使用系統 bsdtar(libarchive)生成標準 zip,任何解壓工具可打開。Windows 10+ 自帶 tar.exe(即 bsdtar),macOS 的 tar 就是 bsdtar。
安裝與啓用¶
從 GitHub 安裝,需要機器上已裝 git:
dsh plugin --profile web add github:KLRSL/dsh-packer
其中 --profile web 是示例,換成自己的 profile 名。安裝完成後需重啓 DSH。
本地開發可以直接 link:
dsh plugin --profile web add link:./dsh-packer
環境要求:
Node.js ≥ 22.19.0
DSH 依賴 ≥ 0.1.1-rc.2(v0.2.2 已適配並實測 0.1.2-rc.1)
peer 依賴:@deepseek-ai/cordis ^4.0.2、@deepseek-ai/dsh-tools ≥0.1.1-rc.2、@deepseek-ai/dsh-session ≥0.1.1-rc.2
安裝後驗證,任選其一:
1、打開設置頁的「配置打包」標籤頁,能看到模塊勾選界面即安裝成功;
2、運行 /pack list,返回包列表(首次爲空)即命令已註冊;
3、運行 /pack create --dry-run,預覽文件清單與掃描結果,確認各模塊路徑可讀。
典型用法¶
先做預覽,確認要打包的內容:
/pack create --mode migrate --dry-run
這一步不生成 zip,只輸出文件清單與掃描結果。確認無誤後再創建遷移包,默認全選模塊:
/pack create --note "遷移到新機器"
或者創建分享包,只含 Skills:
/pack create --share --note "分享給朋友"
打包結果寫入 ~/.dsh/packs/。
恢復時先導入包並查看差異報告:
/pack restore ~/.dsh/packs/dsh-packer-2026-09-05-223045-migrate.zip
再指定衝突策略應用:
/pack restore <zip路徑> --strategy merge
策略取值 overwrite | skip | merge。
其餘兩個常用命令:
/pack list # 列出已有包:時間/大小/模塊/備註
/pack scan # 對所有可打包模塊做隱私掃描
輸出位置由三個環境變量控制,均有默認值:
| 環境變量 | 默認值 | 說明 |
|---|---|---|
DSH_PACKS_DIR |
~/.dsh/packs |
打包輸出目錄 |
DSH_MEMORY_ROOT |
~/.dsh/memory |
memory 模塊數據位置 |
DSH_HOME |
~/.dsh |
各模塊路徑基準 |
適用場景與注意¶
適合兩類人:一是要換機器或重裝、想把整套 DSH 環境完整搬走的用戶;二是想把 skills 分享給別人、又不想手工排查敏感內容的用戶。個人備份用遷移模式即可(僅報告隱私命中),但這類包不要發給別人。
幾點注意:
1、分享模式刻意嚴格,命中任何隱私規則都會攔截。先跑 /pack scan 看哪些文件命中,清理後再打包;
2、JSON / YAML 等結構化配置恢復時不能用 merge,選覆蓋或手工合併;
3、恢復時若 manifest 校驗失敗,說明包缺失清單、版本不兼容或包被改動過,重新生成或重新分發原包,不要手工解壓修改 zip 內容;
4、插件以當前 dsh 進程的權限運行,能讀寫 ~/.dsh 下的文件。安裝任何第三方插件前,建議先檢查其源碼與許可證(本項目爲 MIT)。
小結¶
經過上面的步驟,DSH 本地配置的遷移與分享可以收攏成一條命令鏈路:--dry-run 預覽、/pack create 打包、/pack restore 校驗後恢復,隱私掃描在分享場景強制把關。如果你在維護多臺機器上的 DSH 環境,或者經常給別人發 skill,可以裝一份試試。
倉庫地址:https://github.com/KLRSL/dsh-packer