前言¶
DSH 的理念是一切皆插件。实际装一个第三方 skill 时,问题有两个:既要让它被 harness 发现,又不能动已有的 skill 配置——补丁对目标配置行是整行替换而不是合并,如果在基础 provider 那一行上直接覆盖,原来配置好的 skill root 就会被清掉。
riffkit/dsh-plugin 处理的就是这两件事:它把 Riffkit 的 agent skill 打包成一条命令可安装的 DSH bundle,用 insert 方式注册自己的 skill root,不碰已有配置。下面介绍它的定位、实现和用法。
这是什么¶
riffkit/dsh-plugin,GitHub 仓库 riffkit/dsh-plugin,包名 @riffkit/dsh-plugin,当前版本 1.4.0,MIT 许可证。它对自身的定位写得很克制——「A packaging layer, nothing more」:这个包只装一样东西,就是 Riffkit 的 agent skill,并通过 cordis.patch.yml 把包内目录注册为一个额外的 skill root。skill 源文件由 riffkit.ai 提供。
Riff 的含义是:分析一条跑赢了的短视频为什么有效——hook、节奏、情绪节拍——再用你的产品、你的角色、你的语言,把这套配方重建为新素材。
核心能力:延续的是结构,不是画面¶
Riff 的过程分两步:先分析,再重建。
1、分析源视频为何有效:hook 怎么立住、节奏怎么推进、情绪节拍怎么铺;
2、用你的产品、你的角色、你的语言,把这套配方重建为新素材。
有一条边界值得单独说明:源视频从不重新上传,延续的是结构而不是任何一帧。新素材里有什么,取决于你提供的要素,原片画面不会被带过去。
安装¶
在 DSH 环境里一条命令完成安装:
dsh plugin add @riffkit/dsh-plugin
安装后不需要手动注册 skill root,注册逻辑由包内的补丁承担,见下一节。
补丁设计:用 insert 注册独立 root¶
包的 package.json 里带有 dsh.bundle.patch 字段,指向 ./cordis.patch.yml。补丁内容用 insert 方式注册一个新的 skill root:
- insert:
- id: riffkit-skill-root
name: '@deepseek-ai/dsh-skill-filesystem'
config:
providerName: riffkit-bundle
includeDefaultRoots: false
customSkillDirs: [ …包内的 skills/ 目录… ]
三个关键点:
1、provider 用的是 DSH 自身的 @deepseek-ai/dsh-skill-filesystem,providerName 取名 riffkit-bundle;
2、includeDefaultRoots: false,customSkillDirs 只指向包内的 skills/ 目录,因此这个 provider 只能看到自己这一个 root;
3、用 insert 而不是覆盖基础 provider 行——patch 替换目标行的整份配置而不是合并进去,覆盖会把你在那里已有的配置清掉。
经过这样的设计,这个 provider 与你已有的 skills 互不遮蔽:它看不见你的 skills,你的 skills 也不会挡住它。
不用 DSH 的环境¶
README 写得很直白:不用 DSH 就不需要这个包。skill 本体是一个 Markdown 文件,任何能读 skills root 的 harness 都可以直接加载:
mkdir -p ~/.agents/skills/riffkit
curl -sSL https://riffkit.ai/SKILL.md -o ~/.agents/skills/riffkit/SKILL.md
~/.agents/skills 是多个 harness 共同扫描的 skill root,放一份副本,这些 harness 就都能注册到 Riffkit。skill 本体、示例以及 Claude Code、Cursor、Codex 的安装命令,见 github.com/riffkit/skill。
典型用法¶
使用方式从给一个来源开始:一个 TikTok 链接、一个上传的视频,或者一个已经分析过的模板。后端把这条来源的情绪配方 riff 成你自己的 AI 视频——可以直接发布的短视频,或 UGC 风格的广告素材。数字角色、产品植入和语言是可选项,按需给。
内容如何保持最新¶
这个包里没有手写维护的内容,更新靠一条每日工作流:
1、从 riffkit.ai 拉取 SKILL.md、HEARTBEAT.md 和 SKILL.json,这是单一事实来源,随应用部署更新;
2、用 scripts/generate.mjs 从这三个文件派生出 package.json 和 cordis.patch.yml;
3、用 scripts/smoke.mjs 验证派生结果仍能被 DSH 自身的 provider 发现;
4、发布 registry 中尚缺的版本。
另外,skill 自带 24 小时 version heartbeat,已安装的副本会在两次 package 更新之间自行重同步。
适用场景与注意¶
适合谁:
1、在 DSH 里工作、想让某条跑赢的短视频变成自己素材的人——给一条来源,让 agent 完成分析和重建;
2、不用 DSH 的,直接装 skill 本体即可,不必安装这个包。
安装前注意:
1、插件以当前 dsh 进程的权限运行,装之前先过一遍源码再决定;
2、许可证为 MIT,README 末尾与 package.json 的 license 字段一致;
3、这个包只是打包层,能力全部来自 Riffkit skill 本身,评估功能可以直接看 github.com/riffkit/skill。
结尾¶
回顾一下:riffkit/dsh-plugin 做的事不大,但做法规范——一个 Markdown skill,一条安装命令,insert 补丁注册独立 root 不覆盖已有配置,每日工作流加 24 小时 heartbeat 保证内容不过期。想在 DSH 里 riff 短视频,或者想参考一个外部 skill 接入 DSH 的写法,可以从它开始。
- GitHub 仓库:https://github.com/riffkit/dsh-plugin
- 社区目录收录页:https://www.skillhub.cn/plugins/riffkit/dsh-plugin
社区目录为独立第三方站点,与 DeepSeek 无官方从属关系。