前言¶
长期维护一个 DSH 实例时,$DSH_HOME 下的配置资源很容易变成一笔糊涂账:文件是手工复制进去的,改坏了不知道动了哪里,两份配置包先后写入同一个文件时互相覆盖,出问题之后既查不到来源也回不去。DSH 的理念是「一切皆插件」,但把数据型配置资源的分发和卸载做成可审计的事务,此前并没有现成工具。
下面介绍的 dsh-vibe-pack 就是针对这个问题:把资源的安装做成先预览、再安装、可回滚的事务,并在全过程追踪文件归属。
这是什么¶
dsh-vibe-pack 是一个面向 DeepSeek Harness 的事务性、纯数据配置包管理器,由 LeemanCheung 维护,许可证为 MIT。它围绕 $DSH_HOME 提供预览、安装、Diff、导出、卸载五类操作,配套完整性校验、所有权追踪与失败回滚。
当前版本 1.0.1,声明兼容 DSH 0.1.2-rc.1 的 web profile(>=0.1.2-rc.1 <0.1.3-0),经 Windows QA 验证。
核心功能¶
纯数据包格式¶
一个包的来源是本地目录,或包含 dshpack.yaml 与清单所列全部载荷的 .dshpack/.zip 归档。严格的 v1 清单包含 id、版本、兼容范围、1–10000 个文件、每文件 SHA-256、create/replace/merge 模式与所有权元数据。
接受的载荷只有数据:JSON/YAML/.dshskin、Markdown/文本/TOML/INI、PNG/JPEG/WebP/GIF 图片。脚本、hook、shell 命令、JS 模块、URL 抓取、symlink、YAML alias/tag/anchor、内嵌凭据、路径穿越、重复归档路径一律拒绝,可执行文件和未知扩展名也被拒。归档在载荷使用前按压缩、展开、单文件、字节与条目数限制检查。
预览与所有权确认¶
安装前强制预览,报告 create/replace/merge 动作与冲突,安装动作与预览 digest 绑定。以下四种情况需要显式 force 选择:
- 无主文件
- 他包所有的文件
- create 模式冲突
- 安装后被修改的资源
force 只转移清单列出的所有权,不会被隐式触发。
事务与回滚¶
安装和卸载由磁盘事务锁串行化。写入前先备份每个目标,再按固定顺序原子写入;失败时按逆序恢复,并报告部分回滚错误。账本原子写入 $DSH_HOME/.dsh-vibe-pack/ledger.json。卸载同样保护被修改的资源,除非显式 force。
符号链接与 junction 越界防护¶
每次受管理的读取和写入都先解析真实文件系统位置。在预览、备份、导出、目录创建、写入或移除之前,符号链接或 Windows junction 一旦离开配置的 DSH 根即被拒绝。
合并与导出¶
合并模式接受 JSON 或 YAML 对象,递归合并对象键,数组与标量整体替换,拒绝原型键与机密,输出确定性数据。导出前先校验已安装资源仍与账本一致,再生成可移植的 .dshpack 归档。
UI 与 CLI¶
安装后,DSH Web 的 Settings → Vibe Pack 面板提供强制预览、digest 绑定安装、账本历史、Diff、需独立确认的卸载和 .dshpack 下载,生成的 Typert 命名空间为 vibePack。命令行提供 dsh-pack 工具,子命令为 inspect/plan/install/history/diff/export/uninstall,--root 默认 $DSH_HOME,只在管理显式指定的测试根时才需要传。
安装与启用¶
dsh plugin --profile web add github:LeemanCheung/dsh-vibe-pack
安装完成后,重启现有的 DSH Web 进程并刷新页面,Settings 中即可看到 Vibe Pack 面板。
典型用法¶
先检查一个包目录的清单与载荷是否合规:
dsh-pack --root $env:DSH_HOME inspect ./my-pack
安装前生成动作计划,确认 create/replace/merge 与冲突情况:
dsh-pack --root $env:DSH_HOME plan ./my-pack.dshpack
确认无误后执行安装:
dsh-pack --root $env:DSH_HOME install ./my-pack.dshpack
经过上面的步骤,可以用 history 查看账本历史、diff 对比当前差异、export 导出归档、uninstall 卸载:
dsh-pack --root $env:DSH_HOME history
dsh-pack --root $env:DSH_HOME diff my-pack
dsh-pack --root $env:DSH_HOME export my-pack > my-pack.dshpack
dsh-pack --root $env:DSH_HOME uninstall my-pack
上述示例使用 PowerShell 的 $env:DSH_HOME 语法。只有在审查完报告的所有权或修改冲突之后,才应使用 --force。
想参与开发,可在仓库根目录运行 corepack pnpm typecheck、corepack pnpm test、corepack pnpm build 和 corepack pnpm pack:check。CI 会在 Windows 和 Linux 上重建已提交的 lib 产物并拒绝任何差异,安全验收用例见 TEST_PLAN.md。
适用场景与注意¶
适合需要把 $DSH_HOME 下的数据资源打包备份、迁移、分享,并且在意「哪次变更动了哪些文件、能不能回退」的开发者。
使用前注意以下几点:
- 插件不向模型添加 prompt、工具、消息、token 用量或 KV-cache 内容,所有检查与变更都通过 Host 上的 UI/CLI 显式执行。
- 事务锁在进程异常退出后会报错(fail loud),确认无 Vibe Pack 进程活动后可能需手动移除。
- 远程操作与同一 DSH Web 组合中的受信任客户端共享。
- 包格式提供 SHA-256 完整性与所有权校验,不提供发布者签名或网络分发。
- 1.0.1 仅声明兼容 DSH 0.1.2-rc.1 的
webprofile。 - 插件以当前 dsh 进程的权限运行,安装前应审查插件源码并确认许可证(MIT,见仓库 LICENSE)。
结尾¶
dsh-vibe-pack 的价值在于把配置资源的安装从「手工复制、改完靠记忆」变成一次可预览、可追踪、可回滚的事务。社区目录页见 https://www.skillhub.cn/plugins/LeemanCheung/dsh-vibe-pack ,源码与文档见 https://github.com/LeemanCheung/dsh-vibe-pack 。