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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye