DeepSeek Harnessでskillを導入する方法:dshに動画を理解させる実践ガイド
DeepSeek Harnessでskillを導入する方法:dshに動画を理解させる実践ガイド
DeepSeek Harnessにskillを導入する最短ルートはたった1つ:<スキル名>/SKILL.mdというディレクトリを~/.agents/skillsに放り込み、dshを再起動すればコマンドパレットに現れます。dshのskill契約はAnthropicのSKILL.md形式そのものだからです——Claude Code向けに書いたskillは、無改修で持ち込めます。これが本記事でいちばん価値のある一文なので、先にお伝えしておきます。
フレームワークを導入した後、本当に人を悩ませるのは「結局これで何ができるのか」という点です。この1週間、dshのアーキテクチャ解説やインストール手順は出尽くしていますが、次の問いに答えている人はほとんどいません——フレームワークが動き出した後、元々備わっていない能力をどう追加するのか。
本記事では「dshとは何か」を101回目に繰り返すことはしません。検証可能な具体的タスクを軸に据えます——dshに動画を理解させること、つまりBilibili・YouTube・ポッドキャストを要約できるskillを組み込むことです。最後までやり遂げれば、手元には本当に働くdshが1つ増え、任意のskillを導入する汎用的な方法も自然と身につきます。
目次
- dshを導入した後、能力のギャップはどこにあるか
- dshのskill形式とは何か
- 手持ちのskillをすぐdshで使う方法
- skillをdshプラグインにする方法
- コピーかプラグインか、この2つの道をどう選ぶか
- 着手前に知っておくべき2つの落とし穴
- 導入後、dshに本当に動画を理解させる方法
- よくある質問:dshとskillのインストール
dshを導入した後、能力のギャップはどこにあるか
DeepSeek Harness(コマンドラインではdshと呼ばれます)は、DeepSeekが2026年8月13日にオープンソース化したAgentフレームワークで、Cordisをベースに「すべてはプラグイン」を掲げ、MITライセンスを採用しています。公開初日から注目度は非常に高く——2026年8月14日時点で、GitHubリポジトリは7.5万個を超えるstarを獲得しています。背景説明はここまでにして、残りはすべて実践に充てます。
「すべてはプラグイン」の裏返しは、箱から出した状態では専用の能力を一切持たないということです。dshを導入して「このBilibili動画を要約して」と頼んでも、そのリンクを開いて字幕を取得し、内容を読み解くためのツールがありません。これはdshの欠陥ではなく、設計そのものです——空の土台に、自分で組み立てていく仕組みです。
そして音声・動画こそ、この種の土台にとって典型的な盲点です。この世代のAgentワークベンチはデフォルトでテキストしか扱えません——ウェブページは読めて、PDFも読めて、コードも読める。しかし1時間の講義動画、1本のポッドキャスト、1つのBilibiliまとめ動画だけは読み込めません。会議・オンライン講座・ポッドキャストという頻度の高い3つの場面が、まさにこの入り口でつまずいています。コンテキストウィンドウを広げても、この入り口は動きません。DeepSeek V4が100万トークンのコンテキストウィンドウを引っさげて登場したときも、1時間分の音声はまずテキストに変換されない限り、その容量が意味を持つことはなかったのです。
実践ルール: Agentの次の一手は、より賢いagentになることではなく、音声・動画を取り込める入力層を持つことです。
この入力層を補って初めて、agentは「ひと言で動画を操作する」と言えるようになります。次の画像は、同じことが成熟した形になったときの姿です——自然言語で意図を伝えると、ツールが自動的に呼び出されます。

スクリーンショット:BibiGPT · AI対話Agentモード
つまり「dshにskillを入れる」というテーマにおいて、最初に導入する価値があるのは動画を理解する能力です。次のインタラクティブデモは、dshに最終的に持たせたい効果そのものです——動画を1本選ぶと、タイムスタンプ付きの構造化された要約がそのまま手に入ります。
どんな動画も数秒で要約
サンプルを選ぶと AI 要約が表示——結論ひとこと、要点リスト、ジャンプできるタイムスタンプ。
ひとこと: Karpathy が GPT 風の言語モデルをコードでゼロから構築。小さな文字レベルモデルから完全な Transformer まで、各パーツを丁寧に解説。
要点
- まず bigram モデル、次に自己注意を加えてトークン同士を"対話"させる
- Transformer ブロック = マルチヘッド注意 + 順伝播 + 残差接続 + 層正規化
- 学習は「次のトークン予測」だけ。あとは規模とデータ次第
- nanoGPT の背後の構造を拡大したものが ChatGPT
ジャンプ
- 00:07 なぜゼロから作るのか
- 08:23 自己注意を直感的に
- 1:00:00 Transformer ブロックの組み立て
- 1:35:00 nanoGPT から ChatGPT へ
dshのskill形式とは何か
dshのskillは、YAML frontmatterを持つMarkdownファイルです。ディレクトリ名はkebab-caseを使い、frontmatterには少なくともnameとdescriptionの2つのフィールドが必要です。これはAnthropicがClaude Code向けに定義したAgent Skills仕様と同一の契約です——つまりskillはagentをまたいで再利用でき、dsh向けに書き直す必要はありません。
有効な構成方法は2種類あります:
skills/
bibi/
SKILL.md ← ディレクトリパッケージ:メインファイル + references/、scripts/ を含められる
quick-note.md ← フラットファイル:単一ファイルのskill
公式のskillsサブシステムドキュメントによれば、再帰的な発見はサポートされていません:dshは発見ルート直下の子ディレクトリとフラットファイルしか認識せず、skillを二階層目のサブディレクトリに隠すと見つかりません。これが見落とされがちな最初のポイントです。
「どこに導入するか」を実際に決めるのは、dshの6段階の発見パスで、数値の小さい順に優先度が高くなります。本記事のタスク——すでに持っているskillを導入すること——に関係するのは、この6段階のうち2段階だけです。
| 優先度 | パス | 使うタイミング |
|---|---|---|
| 200 | <プロジェクト>/.agents/skills | そのskillが1つのリポジトリに属し、リポジトリと一緒に持ち運びたいとき |
| 500 | ~/.agents/skills | そのskillをどこでも自分用に使いたいとき——Claude Codeも同じルートを読み込みます |
残り4段階はdsh固有のオーバーライドやパッケージング向けで、日常的な導入では使いません。
ここでいう「プロジェクト」とは、.gitを含む最も近い祖先ディレクトリを指します。見つからなければ現在の作業ディレクトリにフォールバックします。そのため、同名のskillはプロジェクト側がグローバルを上書きするという、直感どおりの挙動になります。
次の画像は、私たちのskillがGitHub上でどのようなリポジトリ構成になっているかを示したものです。ディレクトリパッケージの形を見比べてみてください。

スクリーンショット:BibiGPT · Agent skillオープンソースリポジトリのインストールページ
実践ルール: Claude Code向けに書いたskillは、まずそのままdshに渡して試してみてください。手直しを考えるのはそれからでも遅くありません——たいていは何も直す必要がありません。
手持ちのskillをすぐdshで使う方法
もっとも手早い方法は、第500段階の発見ルートを使うことです:skillディレクトリを~/.agents/skills/に置くだけで、dsh起動時に自動的にスキャンされ、設定は一切不要です。このディレクトリはdshが考案したものではなく、Claude Codeなどのagentがすでに使っているものです——つまり1回配置するだけで、2つのagentどちらからも見えるようになります。
私たちがオープンソース化した音声・動画skillを例にすると、現時点で動く方法はリポジトリをクローンしてskillディレクトリをコピーすることです:
git clone https://github.com/JimmyLv/bibigpt-skill.git
mkdir -p ~/.agents/skills
cp -r bibigpt-skill/skills/bibi ~/.agents/skills/
その後dshを再起動し、コマンドパレットで/を入力すると、skillがSkillsグループに表示されます。次の画像は実際の検証スクリーンショットです——bibiがすでにリストに入っており、説明文も完全にレンダリングされています。

スクリーンショット:dsh 0.1.0-rc.6のWeb画面。画面内のAPI key is invalidという表示は、プレースホルダーのキーで切り分け検証を行った際の想定どおりの結果であり、インストール失敗ではありません——skillの認識とモデル呼び出しは別の話です。
同じセッション内にはContext injection · skill-catalogという痕跡も見えます。これはskillディレクトリが実際にモデルのコンテキストへ注入されたことを示しており、UIに名前が並んでいるだけではありません。「導入に成功したかどうか」を判断するもっとも確実なシグナルです。
特定のプロジェクトだけで有効にしたい場合は?同じディレクトリをそのプロジェクトの.agents/skills/(第200段階)に置けば、優先度が高く、グローバルを汚染することもありません。
skillをdshプラグインにする方法
ディレクトリをコピーする方法でも動きますが、更新が地味に辛いところです:skillがアップデートされるたびに、また手動でコピーし直すのを覚えておく必要があります。プラグインはインストールと更新を1つのコマンドに圧縮します——これがプラグインの存在意義そのものです。
dshプラグインの核心は、package.jsonにpatchファイルを宣言することです:
{
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" }
}
}
cordis.patch.ymlがprofileに1行の設定を追加すると、ユーザー側のインストールは1つのコマンドに凝縮されます。私たちの音声・動画skillを例にすると、次のコマンドは今日そのまま実行できます:
dsh plugin --profile web add "github:JimmyLv/bibigpt-skill#path:/dsh-plugin"
引用符を省かないでください——shellでは#がコメントの開始とみなされ、引用符を付けないと引数の後半が飲み込まれてしまいます。
このコマンドには単独で覚える価値のある知識が隠れています:dsh pluginは引数をpnpmに転送しているだけで、pnpm自体がgitリポジトリのサブディレクトリから直接パッケージをインストールできます。つまりdshプラグインを作るのにnpmパッケージを公開する必要はまったくありません——ソースをGitHubにpushすれば、誰でも1コマンドで導入でき、リポジトリの更新にも追従できます。
プラグインは実行時にctx.skills.register()を通じてskillを登録します。ファイルシステムskillプロバイダーのcustomSkillDirsを書き換えるわけではありません。理由は実務的です:dshのpatch行はconfig全体を丸ごと置き換える方式で、深いマージは行われません。他人のその1行に手を入れると、そのすべてのキーを書き直す必要が生じ、同じ行を変更したい別のパッケージとも衝突します。
SkillRegistrationにはオプションフィールドresourceBaseがあり、directory / url / opaqueの3形態をサポートします。あなたのskillが単一ファイルではなく、references/やscripts/を含むディレクトリパッケージなら、必ずこれを宣言してください。宣言しないと、skill本文中の相対パス参照がすべて機能しなくなります。すでに公開されているPicGo公式dshプラグインは単一のSKILL.mdなのでこの問題に当たりません——そのままその実装をコピーすると落とし穴にはまります。
残りの契約仕様——SkillRegistrationの全フィールド一覧、優先順位が明確な6つのdiscoveryルート、そして公式のskills互換ツール一覧になぜまだdshが載っていないのか——は公式の skills サブシステムドキュメント を参照してください。
プラグインエコシステムの立ち上がりは速く、GitHubでdsh-pluginタグが付いたリポジトリは、2026年8月14日時点ですでに1200個を超えており、今も急速に増え続けています。GitHubのdsh-pluginトピックページで直接ざっと眺めることができます。
手を動かす前にフレームワーク自体のプラグイン哲学を一通り見ておきたいなら、次の動画が「すべてはプラグイン」を比較的わかりやすく説明しています:
動画出典:YouTube · DevsKingdom · Deepseek Harness: Everything is a plugin(12分)
ここまでで、2つの道はどちらも今日そのまま動きます:上のプラグインコマンド(1コマンドで導入でき、更新にも追従できる)か、前節のディレクトリコピー(依存ゼロで、しかもClaude Codeとdshが同じ1部を共有できる)です。次節でどちらを選ぶかを整理します。
コピーかプラグインか、この2つの道をどう選ぶか
一言でいえば:自分用ならディレクトリをコピーし、他人に配布するならプラグインにする、です。比較できるよう4つの観点に分解します:
| 観点 | ~/.agents/skillsにコピー | dshプラグインにする |
|---|---|---|
| 誰向きか | 自分専用・ローカル利用のみ | 配布したい、他人にワンコマンドで導入してほしい |
| 導入コスト | cpコマンド1つ | package.json + patchファイルの作成が必要 |
| 更新方法 | 手動で再度コピー | パッケージマネージャーで一括アップグレード |
| agentをまたいだ再利用 | 可能、Claude Codeからも同時に見える | 不可、dsh専用 |
3行目こそが本当の分かれ目です。skillは製品の能力の進化に合わせて変わっていくもので、月に3回も変更されるskillを手動コピーだけで維持するのは長くは続きません。逆に、安定して変化しない個人用skillにとっては、プラグイン化はむしろオーバーエンジニアリングです。
4行目も個別に触れる価値があります:~/.agents/skillsはagentをまたぐ共通ディレクトリですが、プラグイン登録はdshにしか効きません。もし2つのagentを同時に使っているなら、ディレクトリ方式のコストパフォーマンスは圧倒的に高くなります。
判断基準: 自分だけが使う → ディレクトリをコピー。他人に使わせたい、かつ継続的に更新する → プラグインにする。
着手前に知っておくべき2つの落とし穴
この2つの落とし穴は0.1.0-rc.6で実際に検証すると必ず遭遇し、どちらも「導入に失敗した」と誤判断させてきます。
落とし穴1:DEEPSEEK_API_KEYがないとそもそも起動できません。 dshは起動時にこの環境変数を厳格に要求し、なければMISSING_CREDENTIALで終了します——画面すら開けず、skillが導入されているかどうかを確認するチャンスすらありません。存在チェックのみを行うため、切り分け検証の際はプレースホルダーの値でも起動チェックを通過できます:モデル呼び出しは失敗しますが、セッションとワークスペースの記録は通常どおり作成され、コマンドパレットも使えるため、skillが認識されているかを検証するには十分です。
落とし穴2:Web画面のワークスペースセレクターがクリックできないことがあります。 これはrc版の既知の粗さです。回避策として、まず対象ディレクトリでヘッドレスモードを1回実行し、セッション記録を作っておきます:
dsh --profile headless "現在のディレクトリにあるファイルを一覧表示して"
実行が終わったらWeb画面に戻ると、サイドバーにそのワークスペースが表示されます。その際にプレースホルダーのキーのせいで認証エラーになっていても問題ありません——記録はすでにディスクに書き込まれています。
ちょっとしたヒントもあります:dshのログはプラグインのログを標準出力に出さないため、ctx.logger.infoは見えません。ログで登録成功を確認しようとしても無駄です。確認したいならコマンドパレットのSkillsグループと、セッション内のContext injection · skill-catalogを見てください。
ついでにバージョンにも触れておくと、本記事の検証はすべて0.1.0-rc.6上で行っており、2026年8月14日時点ではまだ開発者向けプレビューです。dshコマンドラインパッケージのソースディレクトリはリリースごとに更新されるので、着手する前に現在の番号を確認してください。上で紹介したAPI(特にresourceBaseのような比較的新しいフィールド)は正式版で変わる可能性があるため、プラグインを作るならバージョンを固定することをおすすめします。
次の画像は、skillの背後にあるコマンドラインツールのヘルプ画面です。どんな引数を受け付けるか、先にざっと見ておきましょう:

スクリーンショット:BibiGPT · コマンドラインツールのhelp出力
実践ルール: rc版はまず隔離した
DSH_HOMEで試し、ホームディレクトリを実験場にしないこと——ホームディレクトリが汚れず、検証結果も初めて成立します。
導入後、dshに本当に動画を理解させる方法
skillがパネルに表示されるのは最初の一歩にすぎません。本当の検収基準は、リンクを1つ投げ込んで、使えるレベルの構造化されたノートが返ってくることです。完全なループは5つのステップです:
- BibiGPTデスクトップ版を導入する——skillが依存するコマンドラインツールも同時に入ります
- 前述のいずれかの方法でskillをdshに導入する
- dshを再起動し、コマンドパレットのSkillsグループに表示されることを確認する
- 普通の言葉で「この動画を要約して」と伝え、リンクを添える
- タイムスタンプ付きのセクション別要約を受け取り、タイムスタンプをクリックして元動画に戻り確認する
このskillはClaude CodeやOpenClawなど複数のagentに同時対応しており、skill本文は完全に同一です——これが私たちがSKILL.mdという標準形式にこだわる理由でもあります。他のagentでの完全な使い方を見たいなら、AI Agentに音声・動画要約能力を組み込む完全ガイドを、「音声・動画をagentに取り込む」という全体的な考え方を理解したいなら、音声・動画をAI Agentに取り込むワークフローがより体系的にまとまっています。AI動画要約そのものにまだ馴染みがなければ、AI動画要約完全ガイドから始めるのがおすすめです。

スクリーンショット:BibiGPT · Agent skillのskillマーケットプレイスページ
フレームワークの価値はフレームワーク自体にあるのではなく、そこに何を組み込むかにあります。dshは「何を組み込むか」というハードルを1つのMarkdownファイルにまで下げました——本当に希少なのは、agentが読めないものを読めるものに変えるskillのほうです。
あなたのdshに音声・動画のピースを補う——インストールを飛ばしてブラウザで試すこともできます:
- ▶️ ブラウザで要約(dsh不要): BilibiliまたはYouTubeのリンクを貼る
- 🌐 デスクトップ版ダウンロード: https://bibigpt.co/ja/desktop
- 🧩 skillソースコード: https://github.com/JimmyLv/bibigpt-skill
- 🎬 実際の効果を見る: Bilibili動画のAI要約
よくある質問:dshとskillのインストール
Q1:Claude Code向けに書いたskillは、本当にそのままdshで使えますか?
A: 使えます。両者とも<スキル名>/SKILL.md + YAML frontmatterという同じ契約を使っており、frontmatterには少なくともnameとdescriptionが必要です。skillディレクトリを~/.agents/skills/に置けば、2つのagentが同じファイルを読み込みます。どちらか一方だけの専用機能(特定のツール呼び出し規約など)を使っているごく一部のskillだけ、修正が必要になります。
Q2:skillはどのディレクトリに導入すべきですか?
A: 自分だけで使うなら~/.agents/skills/(第500段階)に置けば、agentをまたいで共通利用できます。特定のプロジェクトだけで有効にしたいなら、そのプロジェクトの.agents/skills/(第200段階)に置けば優先度が高くなります。注意点として、「プロジェクト」とは.gitを含む最も近い祖先ディレクトリを指し、たまたまcdした任意のフォルダではありません。
Q3:dshが起動せず、MISSING_CREDENTIALと表示されるのはなぜですか?
A: dshは起動時にDEEPSEEK_API_KEY環境変数を厳格に要求しており、なければ即座に終了し、画面にすら入れません。本物のキーを設定すれば通常どおり使えます。skillが認識されているかを確認したいだけなら、プレースホルダーの値でも起動チェックは通過します。モデル呼び出しは失敗しますが、コマンドパレットは使えます。
Q4:Web画面でワークスペースが選択できないときはどうすればいいですか?
A: これは0.1.0-rc.6の既知の粗さです。まず対象ディレクトリでヘッドレスモード(dsh --profile headless、適当なタスクを1つ与える)を1回実行し、セッション記録ができたらWeb画面に戻ると、サイドバーにそのワークスペースが表示されます。
Q5:どんなときにディレクトリコピーではなくプラグインにすべきですか?
A: 判断基準は「更新されるかどうか」と「他人に使わせるかどうか」です。skillが継続的に改良される、あるいは他人に1コマンドで導入してほしいなら、プラグインにします。自分のローカルだけで使う安定したskillなら、ディレクトリコピーのほうが手っ取り早く、ついでにClaude Codeからも見えるようになります。
BibiGPT チーム
人気のツール