DeepSeek Harness 怎么装 skill:让 dsh 学会看视频的实战教程
教程指南

DeepSeek Harness 怎么装 skill:让 dsh 学会看视频的实战教程

发布于 · 作者: BibiGPT 团队
把 BibiGPT 设为 Google 优先来源 在热门报道和 AI 概览里看到更多 BibiGPT。

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 装好之后,能力缺口在哪

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 才谈得上「用一句话操作一段视频」。下面这张是同一件事在成熟形态下的样子——自然语言说出意图,工具自动被调起:

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 至少要有 namedescription 两个字段。这和 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 上的仓库形态,可以对照着看目录包长什么样:

dsh skill 的 SKILL.md 目录包在 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 已经在列表里,描述完整渲染:

DeepSeek Harness 命令面板 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 这类较新字段)在正式版可能会变,做插件的话建议锁版本。

下面这张是技能背后那个命令行工具的帮助界面,可以先看一眼它能接受哪些参数:

dsh 技能背后的音视频总结命令行工具帮助界面

截图:BibiGPT · 命令行工具的 help 输出

实用规则: rc 版本先用隔离的 DSH_HOME 试,别拿主目录当实验场——家目录不会被写脏,验证结论也才成立。

装好之后,怎么让 dsh 真的看懂一条视频

技能出现在面板里只是第一步,真正的验收标准是:扔一个链接进去,拿回一份能用的结构化笔记。完整闭环是五步:

  1. 装好 BibiGPT 桌面端,它会带上技能依赖的命令行工具
  2. 按上文任一条路把技能装进 dsh
  3. 重启 dsh,确认命令面板 Skills 分组里能看到它
  4. 直接说人话:「帮我总结这条视频」并附上链接
  5. 拿到带时间戳的分段总结,点时间戳回跳原视频核对

这套技能同时服务 Claude Code、OpenClaw 等 agent,技能正文完全一样——这也是我们坚持用 SKILL.md 标准格式的原因。想看它在其他 agent 上的完整用法,可以读给 AI Agent 装上音视频总结能力的完整指南;想理解「把音视频喂进 agent」这件事的整体思路,音视频喂给 AI Agent 的工作流讲得更系统;对 AI 视频总结本身还不熟的话,AI 视频总结完全指南是更好的起点。

Agent 技能在技能市场页面的展示与安装入口

截图:BibiGPT · Agent 技能在技能市场的页面

框架的价值不在框架本身,在你往里装了什么。dsh 把「装什么」这件事的门槛降到了一个 Markdown 文件——真正稀缺的,是那些能把 agent 读不了的东西变成它能读的东西的技能。

给你的 dsh 补上音视频这一块——也可以跳过安装,直接在网页里试:

常见问题:dsh 与 skill 安装

Q1:给 Claude Code 写的 skill 真的能直接在 dsh 里用吗?

A: 能。两边用的都是 <技能名>/SKILL.md + YAML frontmatter 的契约,frontmatter 至少要有 namedescription。把技能目录放进 ~/.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 团队

查看「AI 视频总结」全部 59 篇 →

试试这些 AI 工具