DeepSeek Harness 怎么装 skill:让 dsh 学会看视频的实战教程
DeepSeek Harness 怎么装 skill:让 dsh 学会看视频的实战教程
给 DeepSeek Harness 装 skill,最短路径只有一步:把 <技能名>/SKILL.md 这个目录丢进 ~/.agents/skills,重启 dsh 就能在命令面板里看到它。因为 dsh 的技能契约用的就是 Anthropic 那套 SKILL.md 格式——你给 Claude Code 写过的技能,可以零改动搬过去。这是本文最值钱的一句话,先给你。
装好框架之后真正卡人的,是「它到底能干什么」。这一周中文圈已经铺满了 dsh 的架构解读和安装教程,但几乎没人回答下一个问题:框架跑起来了,怎么给它加一个它原本没有的能力?
这篇不再讲第 101 遍「dsh 是什么」。我们用一个具体到能验收的任务贯穿全文——让 dsh 学会看视频,也就是给它装上一个能总结 B 站、YouTube、播客的技能。你跟着做完,手上会多一个真能干活的 dsh,也会顺手掌握给它装任何技能的通用方法。
目录
- dsh 装好之后,能力缺口在哪
- dsh 的 skill 格式是什么
- 怎么让 dsh 立刻用上你已有的 skill
- 怎么把 skill 做成一个 dsh 插件
- 拷贝还是插件,这两条路怎么选
- 动手之前要知道哪两个坑
- 装好之后,怎么让 dsh 真的看懂一条视频
- 常见问题:dsh 与 skill 安装
dsh 装好之后,能力缺口在哪
DeepSeek Harness(命令行里叫 dsh)是 DeepSeek 于 2026 年 8 月 13 日开源的 Agent 框架,基于 Cordis,口号是「一切皆插件」,采用 MIT 协议。开源当天热度极高——截至 2026 年 8 月 14 日,它的 GitHub 仓库已经收获超过 7.5 万个 star。背景交代到这里就够了,剩下的篇幅全给实战。
「一切皆插件」的另一面是:开箱状态下它什么专门能力都没有。你装好 dsh,问它「帮我总结这条 B 站视频」,它没有可用的工具去打开那个链接、拿到字幕、再读懂内容。这不是 dsh 的缺陷,这是它的设计——空底座 + 你自己拼装。
而音视频恰恰是这类底座最典型的盲区。这一代 Agent 工作台默认只吃文字:网页能读、PDF 能读、代码能读,唯独一条一小时的课程录像、一期播客、一个 B 站合集,喂不进去。会议、网课、播客这三个高频场景就这样卡在门口。更大的上下文窗口也搬不动这道门槛:DeepSeek V4 带着 100 万 token 窗口登场时,一小时的音频依然得先变成文字,那些容量才有用武之地。
实用规则: Agent 的下一站不是更聪明的 agent,是能把音视频喂进去的输入层。
补上这块输入层之后,agent 才谈得上「用一句话操作一段视频」。下面这张是同一件事在成熟形态下的样子——自然语言说出意图,工具自动被调起:

截图:BibiGPT · AI 对话 Agent 模式
所以「给 dsh 装 skill」这件事,第一个值得装的就是看视频的能力。下面这个交互演示是我们要让 dsh 具备的最终效果——选一条视频,直接拿到带时间戳的结构化总结:
几秒读完任何视频
选个样例,看 AI 总结——一句话结论、要点清单、可跳转的时间戳。
一句话: Karpathy 用代码从零搭出一个 GPT 风格的语言模型,逐行讲清每个部件——从最小的字符级模型到完整的 Transformer。
要点
- 先做一个 bigram 基线模型,再加自注意力,让 token 之间能"互相对话"
- 一个 Transformer 块 = 多头注意力 + 前馈网络 + 残差连接 + 层归一化
- 训练本质就是"预测下一个 token";剩下的交给规模和数据
- nanoGPT 背后的架构,放大后就是 ChatGPT
跳转
- 00:07 为什么要从零搭 GPT
- 08:23 直观理解自注意力
- 1:00:00 拼出 Transformer 块
- 1:35:00 从 nanoGPT 到 ChatGPT
dsh 的 skill 格式是什么
dsh 的 skill 就是一个带 YAML frontmatter 的 Markdown 文件,目录名用 kebab-case,frontmatter 至少要有 name 和 description 两个字段。这和 Anthropic 为 Claude Code 定义的 Agent Skills 规范是同一套契约——这意味着技能可以跨 agent 复用,不需要为 dsh 重写。
两种合法的组织形式:
skills/
bibi/
SKILL.md ← 目录包:主文件 + 可带 references/、scripts/
quick-note.md ← 扁平文件:单文件技能
按官方 skills 子系统文档的说明,递归发现是不支持的:dsh 只认发现根下的直接子目录和扁平文件,把技能藏进二级子目录就找不到了。这是第一个容易被忽略的细节。
真正决定「装到哪」的,是 dsh 的六级发现路径,按数字优先级从小到大扫描,数字越小越优先。就本文这个任务——安装一个你已经有的技能——而言,六级里只有两级用得上:
| 优先级 | 路径 | 什么时候用它 |
|---|---|---|
| 200 | <项目>/.agents/skills | 技能只属于这一个仓库,需要随仓库一起走 |
| 500 | ~/.agents/skills | 技能是你个人到处通用的——Claude Code 也读这同一个根目录 |
其余四级用于 dsh 专属的覆盖机制与打包场景,日常安装用不到。
这里的「项目」指的是最近的含 .git 的祖先目录;找不到就退回当前工作目录。所以同名技能在项目里覆盖全局,是符合直觉的。
下面这张是我们那个技能在 GitHub 上的仓库形态,可以对照着看目录包长什么样:

截图:BibiGPT · Agent 技能开源仓库的安装页
实用规则: 你给 Claude Code 写过的 skill,先原样丢给 dsh 试一遍,再考虑改——大概率不用改。
怎么让 dsh 立刻用上你已有的 skill
最快的落地方式是走第 500 级发现根:把技能目录放进 ~/.agents/skills/,dsh 启动时会自动扫到,不需要任何配置。这个目录不是 dsh 发明的,Claude Code 等 agent 早就在用它——所以装一份,两个 agent 都能看见。
以我们开源的音视频技能为例,今天可跑的做法是克隆仓库后把技能目录拷过去:
git clone https://github.com/JimmyLv/bibigpt-skill.git
mkdir -p ~/.agents/skills
cp -r bibigpt-skill/skills/bibi ~/.agents/skills/
然后重启 dsh,在命令面板里输入 /,技能会出现在 Skills 分组里。下面这张是实测截图——bibi 已经在列表里,描述完整渲染:

截图:dsh 0.1.0-rc.6 web 界面。画面里那条 API key is invalid 是我们用占位密钥做隔离验证的预期结果,不是安装失败——技能识别与模型调用是两件事。
同一个会话里还能看到 Context injection · skill-catalog 的痕迹,说明技能目录确实被注入了模型上下文,而不只是在 UI 里列了个名字。这是判断「装成功没有」最可靠的信号。
想只在某个项目里生效?把同一个目录放到该项目的 .agents/skills/ 下(第 200 级),优先级更高,也不会污染全局。
怎么把 skill 做成一个 dsh 插件
拷目录能用,但更新很痛:技能升级了,你得记得再拷一遍。插件把安装和更新压缩成一条命令,这是它存在的唯一理由。
dsh 插件的核心是在 package.json 里声明一个 patch 文件:
{
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" }
}
}
cordis.patch.yml 向 profile 贡献一行配置,用户侧的安装就压缩成一条命令。以我们这个音视频技能为例,下面这条今天就能直接跑:
dsh plugin --profile web add "github:JimmyLv/bibigpt-skill#path:/dsh-plugin"
引号别省——# 在 shell 里会被当成注释的起点,不加引号后半截会被吃掉。
这条命令里藏着一个值得单独记住的知识点:dsh plugin 只是把参数转发给 pnpm,而 pnpm 本身支持从 git 仓库的子目录直接装包。所以做一个 dsh 插件根本不需要先发 npm 包——源码推上 GitHub,别人就能一条命令装走,而且跟着仓库更新。
插件在运行时通过 ctx.skills.register() 注册技能,而不是去改文件系统技能提供者的 customSkillDirs。原因很实际:dsh 的 patch 行是整体替换 config、不做深合并,你去改别人那一行,就得把它的每个键都重述一遍,还会和任何想改同一行的包打架。
SkillRegistration 有个可选字段 resourceBase,支持 directory / url / opaque 三种形态。如果你的技能不是单文件、而是带 references/ 和 scripts/ 的目录包,必须声明它,否则技能正文里的相对路径引用会全部失效。已经上架的 PicGo 官方 dsh 插件是单个 SKILL.md,没有这个问题——照抄它的实现会踩坑。
契约的其余部分——完整的 SkillRegistration 字段清单、全部六个发现根目录及其精确优先级、以及为什么官方的 skills 兼容工具展示页至今仍没收录 dsh——对照官方 skills 子系统文档 即可。
插件生态起得很快:GitHub 上打了 dsh-plugin 标签的仓库,截至 2026 年 8 月 14 日已经超过 1200 个(且仍在快速上涨),可以在 GitHub 的 dsh-plugin 主题页直接翻。
如果你想先看一遍框架本身的插件哲学再动手,下面这支视频把「一切皆插件」讲得比较清楚:
视频来源:YouTube · DevsKingdom · Deepseek Harness: Everything is a plugin(12 分钟)
到这里,两条路都是今天真实可跑的:上面这条插件命令(一条命令装完,还能跟着仓库更新),或者上一节的目录拷贝(零依赖,而且 Claude Code 和 dsh 共用同一份)。下一节帮你选。
拷贝还是插件,这两条路怎么选
一句话:自己用就拷目录,要分发给别人用就做插件。展开成可对照的四个维度:
| 维度 | 拷进 ~/.agents/skills | 做成 dsh 插件 |
|---|---|---|
| 谁适合 | 只给自己/本机用 | 要分发、要被别人一键装 |
| 安装成本 | 一条 cp | 需要写 package.json + patch 文件 |
| 更新方式 | 手动再拷一次 | 包管理器统一升级 |
| 跨 agent 复用 | 是,Claude Code 同时可见 | 否,只服务 dsh |
第三行是真正的分水岭。技能会随着产品能力演进而变,一个月改三次的技能靠手拷维护不了多久;而一个稳定不动的私人技能,做插件反而是过度工程。
第四行也值得单独说:~/.agents/skills 是跨 agent 的公共目录,插件注册则只对 dsh 生效。如果你同时在用两个 agent,目录法的性价比高得多。
决策过滤器: 只有你自己用 → 拷目录;要给别人用、而且还会持续更新 → 做插件。
动手之前要知道哪两个坑
这两个坑在 0.1.0-rc.6 上实测都会遇到,而且都会让你误判成「装失败了」。
坑一:缺 DEEPSEEK_API_KEY 直接进不去。 dsh 启动时硬性要求这个环境变量,缺了会以 MISSING_CREDENTIAL 退出,界面都打不开——你连技能装没装上都没机会看。它只检查存在性,所以做隔离验证时用占位值也能骗过启动检查:模型调用会失败,但会话与工作区记录照常创建,命令面板可用,足够验证技能是否被识别。
坑二:web 界面的工作区选择器可能点不动。 这是 rc 版本已知的粗糙处。绕法是先用无界面模式在目标目录跑一次,把会话记录建出来:
dsh --profile headless "列一下当前目录有哪些文件"
跑完之后回到 web 界面,侧栏就有这个工作区了。即使那次因为占位密钥报了鉴权失败也不影响——记录已经落盘。
还有一个小提示:dsh 的日志不往标准输出打插件日志,ctx.logger.info 你是看不到的,别指望用日志验证注册成功。要验证就看命令面板的 Skills 分组,以及会话里的 Context injection · skill-catalog。
顺带说一句版本:本文所有实测都跑在 0.1.0-rc.6 上,截至 2026 年 8 月 14 日仍是开发者预览。dsh 命令行包的源码目录会随版本推进,动手前先去看一眼当前号。上面这些 API(尤其 resourceBase 这类较新字段)在正式版可能会变,做插件的话建议锁版本。
下面这张是技能背后那个命令行工具的帮助界面,可以先看一眼它能接受哪些参数:

截图:BibiGPT · 命令行工具的 help 输出
实用规则: rc 版本先用隔离的
DSH_HOME试,别拿主目录当实验场——家目录不会被写脏,验证结论也才成立。
装好之后,怎么让 dsh 真的看懂一条视频
技能出现在面板里只是第一步,真正的验收标准是:扔一个链接进去,拿回一份能用的结构化笔记。完整闭环是五步:
- 装好 BibiGPT 桌面端,它会带上技能依赖的命令行工具
- 按上文任一条路把技能装进 dsh
- 重启 dsh,确认命令面板 Skills 分组里能看到它
- 直接说人话:「帮我总结这条视频」并附上链接
- 拿到带时间戳的分段总结,点时间戳回跳原视频核对
这套技能同时服务 Claude Code、OpenClaw 等 agent,技能正文完全一样——这也是我们坚持用 SKILL.md 标准格式的原因。想看它在其他 agent 上的完整用法,可以读给 AI Agent 装上音视频总结能力的完整指南;想理解「把音视频喂进 agent」这件事的整体思路,音视频喂给 AI Agent 的工作流讲得更系统;对 AI 视频总结本身还不熟的话,AI 视频总结完全指南是更好的起点。

截图:BibiGPT · Agent 技能在技能市场的页面
框架的价值不在框架本身,在你往里装了什么。dsh 把「装什么」这件事的门槛降到了一个 Markdown 文件——真正稀缺的,是那些能把 agent 读不了的东西变成它能读的东西的技能。
给你的 dsh 补上音视频这一块——也可以跳过安装,直接在网页里试:
- ▶️ 网页里总结(不用装 dsh): 粘贴一条 B 站或 YouTube 链接
- 🌐 桌面端下载: https://bibigpt.co/zh/desktop
- 🧩 技能源码: https://github.com/JimmyLv/bibigpt-skill
- 🎬 看看效果: B 站视频 AI 总结
常见问题:dsh 与 skill 安装
Q1:给 Claude Code 写的 skill 真的能直接在 dsh 里用吗?
A: 能。两边用的都是 <技能名>/SKILL.md + YAML frontmatter 的契约,frontmatter 至少要有 name 和 description。把技能目录放进 ~/.agents/skills/,两个 agent 会读同一份文件。极少数用到了某一方专属能力(比如特定的工具调用约定)的技能才需要改。
Q2:skill 应该装在哪个目录?
A: 只给自己用就放 ~/.agents/skills/(第 500 级),跨 agent 通用;只想在某个项目里生效就放该项目的 .agents/skills/(第 200 级),优先级更高。注意「项目」是最近的含 .git 的祖先目录,不是你随手 cd 进去的任意文件夹。
Q3:dsh 起不来,报 MISSING_CREDENTIAL 是怎么回事?
A: dsh 启动时硬性要求 DEEPSEEK_API_KEY 环境变量,缺了会直接退出,连界面都进不去。设置真实密钥即可正常使用;只是想验证技能有没有被识别的话,占位值也能通过启动检查,模型调用会失败但命令面板可用。
Q4:web 界面里选不了工作区怎么办?
A: 这是 0.1.0-rc.6 的已知粗糙处。先在目标目录用无界面模式(dsh --profile headless,随便给一个任务)跑一次,会话记录建好后回到 web 界面,侧栏就会出现这个工作区。
Q5:什么时候该做成插件而不是拷目录?
A: 判断标准是「会不会更新」和「给不给别人用」。技能会持续迭代、或者你想让别人一条命令装上,就做插件;只是自己本机用的稳定技能,拷目录更省事,而且顺带让 Claude Code 也能看见。
BibiGPT 团队