Skip to content

CH 17 · プラグインインストール

全文字数約 6370 字所要時間約 20 分前提CH 08(プラグインツリー)、CH 12(MCP 統合)難易度手を動かせる

この章の目標

CH 12 で実はすでに 3 つのプラグイン —— dsh-mcp-clientdshmarketdsh-skill-mcp-panel —— をインストール済みですが、それは「途中でインストール、動けばよい」で、3 つのインストール方法を説明しませんでした。この章では系統的にプラグインのインストールを扱います:プラグインはどこから来るのか、どこにインストールされるのか、異なるインストール方法、管理方法、インストール後の検証方法 —— そして最後に実際に 1 つインストールし、dsh に直接インストールさせます。

まず 1 行覚えてください:プラグインのインストール = profile に npm 依存を追加すること。dsh は「すべてはプラグイン」(CH 08 で扱った)ですが、「インストール」自体は標準のパッケージ管理に従います。インストールを理解したら、CH 18 から最初のプラグインを書き始めます。

まず自分のインストール状況を見る

ターミナルを開き、まず dsh 本体のバージョンを確認:

powershell
dsh --version

私の出力:

text
0.1.1-rc.2

次に web profile がすでに持っているプラグインを確認:

powershell
dsh plugin --profile web list

私の出力(CH 12 でインストールした結果):

text
Legend: production dependency, optional only, dev only

dsh-profile-web C:\Users\mortal\.dsh\profiles\web (PRIVATE)

│   dependencies:
├── @deepseek-ai/dsh-mcp-client@0.0.1-rc.1
├── dsh-skill-mcp-panel@2.0.1
└── dshmarket@1.40.0

3 packages

この 3 行が正確に 3 つのインストール方法に対応していることに注意:mcp-clientコマンドライン経由でインストール、dshmarket もコマンドラインでインストールしたマーケット本体、dsh-skill-mcp-panel はマーケットでワンクリックインストール —— そしてこれらが直接設定ツリーに入って効く理由は 3 つ目の仕組み bundle 自動マウント です。1 つずつ下記で説明します。

プラグインはどこから来るか:4 つのソース

プラグインは本質的に npm パッケージで、ソースは次のとおり:

ソース書き方使いどき
npm パッケージ@deepseek-ai/dsh-mcp-client最も一般的。公式パッケージは @deepseek-ai/ 接頭辞、コミュニティは独自スコープ
GitHub ソースgithub:owner/repoリポジトリの main ブランチをインストールしたい、npm 未公開
ローカルディレクトリ. または file:../plugin自作プラグイン、自分のチェックアウトを直接入れて編集・テスト
tarball / Release 成果物.tgz の URL またはローカルパス作者がビルド成果物のみ配布、GitHub Releases の添付など

CH 12 でインストールした**dsh-market(プラグインマーケット)**は新しいソースではなく、グラフィカルエントリ:インストール後は設定で閲覧・検索・コミュニティプラグインの 1 クリックインストールができ、裏側では依然として上記のソースを呼んでいます。

どこにインストールするか:Profile レベル、profile に従う

dsh pluginある profile のプラグインを管理するので、コマンドには --profile <名前> を付ける必要があり、どの環境にインストールするかを決定します。インストール先のパッケージはここに置かれます:

text
$DSH_HOME/profiles/<名前>/node_modules

Windows では C:\Users\<ユーザー名>\.dsh\profiles\web\node_modules で、pnpm で管理され、profile の package.json にも書き込まれます。

混同しやすい点 —— グローバルと Profile の違い:

  • dsh 本体自体はグローバルインストール(CH 03 の npm install -g @deepseek-ai/dsh)、全 profile で同じ dsh を共有。
  • プラグインはデフォルトで profile ごと:dsh plugin --profile web add xxx は web にのみ効く;headless にも使わせたいなら、headless にもインストールする必要あり。
  • マシンレベル設定は別の層:$DSH_HOME/cordis.patch.yml は全 profile で共有(公式用語は「machine-local preferences」)、profile 自身の cordis.patch.yml より優先度が高い —— 全環境に同じ変更を適用したければここに書く。

まずこれらのファイルの場所をはっきりさせ、混同しないでください。profile レベルのものは C:\Users\<ユーザー名>\.dsh\profiles\web\cordis.patch.yml(CH 12 で MCP サーバー設定を書いたあれ);マシンレベルのものは C:\Users\<ユーザー名>\.dsh\cordis.patch.yml —— 注意、このファイルはデフォルトでは存在せず、手動で設定を書いたときにだけ作成され、dsh は起動時に読み、なければスキップします。だから「自分が書いたのはマシンレベルか」を確認するには、.dsh ルート直下にあるか、profiles\<name>\ の下にあるかを見てください。

  • 公式組み込みバンドル(@deepseek-ai/dsh-base@deepseek-ai/dsh-web-app など)は dsh に同梱、グローバルインストールから来る;自分で追加したプラグインは profile 自身の node_modules に入る。

1 行で:dsh 本体はグローバル、プラグインは profile に従う、マシンレベル patch はサイト全体。

3 つのインストール方法

① コマンドライン dsh plugin:最も基本的

最も基礎的な方法。dsh plugin --profile <name> は引数をそのまま pnpm に渡す —— つまり addremoveupdatewhylist などの pnpm 動詞がすべて使え、構文も npm パッケージ管理の構文:

powershell
dsh plugin --profile web add @deepseek-ai/dsh-mcp-client

公式ドキュメントの典型例は 2 つのサブエージェントプラグインをインストールするもの(これらは任意のバンドル):

powershell
dsh plugin --profile web add @deepseek-ai/dsh-subagent-codex @deepseek-ai/dsh-subagent-claude-code
dsh plugin --profile web remove @deepseek-ai/dsh-subagent-codex

自作プラグインをローカルディレクトリからインストールするのもこの方法 —— プラグインのソースディレクトリで dsh plugin --profile web add . を実行、インストールされるのは現在のチェックアウト(相対パスはコマンド実行時のディレクトリに固定され、profile ディレクトリではない)。

② プラグインマーケット dsh-market:最も手軽

グラフィカルインストール。まずマーケット本体をインストール:

powershell
dsh plugin --profile web add dshmarket

インストール後、dsh を再起動(bundle 変更には再起動が必要、下記参照)、設定に新しい「プラグインマーケット」が現れ、カテゴリ別閲覧、検索、コミュニティプラグインの 1 クリックインストールができます。マーケット経由で入れたプラグインはほぼページ更新だけで有効、dsh の再起動は不要;ホストレベルの一部プラグインは「再起動が必要」と表示するので、その指示に従ってください。CH 12 の dsh-skill-mcp-panel はマーケットで検索して 1 クリックでインストールしたものです。

設定 → プラグインマーケット:発見 / テーマ / インストール済みタブ、カテゴリ + 検索ボックス + インストールボタン付きプラグインカード

③ Bundle 自動マウント:インストールして設定ツリーへ

必ず疑問に思ったはずの現象に答えます:なぜ mcp-client はインストール後にサーバー設定のため cordis.patch.yml の手動 insert が必要で、dshmarketdsh-skill-mcp-panel はインストール後設定なしで効くのか?答えはプラグイン自身の package.json にあります —— dsh.bundle を宣言しているかどうかの違い。「インストール時に自動で設定ツリーに入りたい」プラグインは、マニフェストでこのフィールドを宣言する必要があります:

json
{
  "dsh": {
    "bundle": {
      "patch": "./cordis.patch.yml"
    }
  }
}

dsh は毎回の dsh plugin 実行成功後に** bundle リストを調整**します:dependencies 内で dsh.bundle を宣言して解決されたパッケージは、自動的にその profile の bundle 層(CH 08 で扱った設定ツリー最下部の基盤層)に追加され、手動で insert する必要なし

例として、宣言ありの 2 つのプラグインの package.json を見ましょう。dshmarket@1.40.0:

json
"dsh": {
  "bundle": { "patch": "./cordis.patch.yml" },
  "client": { "inject": ["@deepseek-ai/dsh-client-connection", "..."], "platform": "web" }
}

dsh-skill-mcp-panel@2.0.1:

json
"dsh": {
  "client": { "platform": "web", "inject": ["@deepseek-ai/dsh-client-runtime", "..."] },
  "bundle": { "patch": "./cordis.patch.yml" }
}

両方とも bundle.patch 宣言があるので、両方とも profile マニフェストの bundle リストに自動入ります。web profile の package.json を開くと、bundle 層はこうなっています:

json
"dsh": {
  "profile": {
    "bundles": [
      "@deepseek-ai/dsh-base",
      "@deepseek-ai/dsh-web-app",
      "dsh-skill-mcp-panel",
      "dshmarket"
    ]
  }
}

最初の 2 つは公式組み込みバンドル(グローバル dsh インストールに同梱)、最後の 2 つが自分でインストールして自動マウントされたものです。dsh-mcp-client はどう?これは dsh.bundle 宣言がないので、ただの通常依存 —— profile の package.jsondependencies には現れるが、bundles リストには入らない。比喩:bundle プラグインは「取扱説明書付きのすぐ使える道具」、通常依存は「ただの道具、説明なし」 —— 荷物は届いたが、dsh はその能力を自動でロードしない、自分で設定する必要がある。

dsh-mcp-client は後者:MCP サーバーに接続する「エンジン」、接続方法は知っているが、どれに接続するかは知らない。自分でどのサーバーに接続するか、住所、キーの渡し方を教えなければならない —— その動作が cordis.patch.yml への insert 記述(設定ツリーにサーバー設定行を挿入)。CH 12 で書いた Firecrawl の設定はまさしくそういう insert でした。

もう一点注意:これら 2 プラグインは dsh.client 宣言もしています(platform: web + クライアントプラグイン inject リスト)。だからこそ Web UI 設定に界面を追加できる(プラグインマーケット、MCP 管理)—— bundle でもあり(設定ツリーに入る)、クライアント注入も宣言している(界面に入る)。

必ず覚えるべき境界:bundle メンバー(bundles リストにあるもの)を変更したあとは、profile を再起動しないと効かない —— 実行中の profile は起動時の bundle セットを保持し、新規インストール bundle は次の起動でのみロード。注意、「再起動」は自動ロードさせるためだけで、何か設定させるためではない —— bundle プラグインがロードされればすぐ使えます、設定を触る必要なし。通常の cordis.patch.yml 編集はホットリロードで、再起動不要ですが、bundle の追加/削除/更新には再起動が必須。CH 12 で dshmarket インストール後に再起動したのは、自動ロードさせるためでした。

管理コマンド早見表

コマンド効果
dsh plugin --profile web listこの profile がインストール済みのものを一覧(pnpm list 相当)
dsh plugin --profile web add <source>インストール、ソースは上記の 4 種
dsh plugin --profile web remove <パッケージ>削除
dsh plugin --profile web update <パッケージ>最新版へ更新(bundle 宣言ありは新と調整)
dsh plugin --profile web why <パッケージ>なぜこれがインストールされたかを見る(誰が依存しているか)

インストール完了後の検証は 2 つ:

  • 依存と bundle 所属を見る:dsh plugin --profile web list で依存を表示;bundle 層にあるかは profile の package.json(上記の dsh.profile.bundles)を直接見る。
  • 設定ツリーに実際にマウントされているか見る:dsh --profile web --dump-config で完全な設定ツリーが出力され、プラグイン名を検索;bundle 基盤層のみ見たいなら dsh --profile web --dump-default-config

本当に使える 3 つのコミュニティプラグインをインストール

これまでインストールしたものは仕組み説明のためで、同時にプロセスで実際に必要だったものでもありました —— dsh はまさにそういうもの、欲しいものをインストール、すべてはプラグイン。今度は「即体験向上」のコミュニティプラグインを 3 つインストール、ちょうど GitHub ソースと npm ソースから。コマンドは自分で打たず、dsh に任せましょう。

dsh-theme:Web UI にスキンを

独立したテーマプラグイン;インストール後、設定に新しい「Appearance」が現れます:

  • 3 つの外観モード:ライト / ダーク / システム追従
  • 厳選テーマ 15 種(うち 5 種は読書向け、1 種は Carbon Code テーマ)
  • 各テーマは色レベル、UI フォント、コードフォント、フォントサイズを統一設定にまとめ、ワンクリックで切替
  • アクセントカラー、背景、前景、サーフェス、サイドバー色を個別にリアルタイム調整
  • 設定はブラウザローカルに保存、リフレッシュでも失われない(ブラウザ・profile 跨ぎ同期はなし)

dsh にインストールさせるには、入力欄に:

text
dsh-theme プラグインを web profile にインストールし、動くことを確認してください;GitHub の oil-oil/dsh-theme リポジトリにあります。

オープンソース:oil-oil/dsh-theme。インストール後に web profile を再起動、設定 → Appearance でテーマ切替可能、下の図のような見た目:

dsh-theme インストール後の設定 → Appearance ページ、テーマ切替可能、アクセント / 背景 / テキスト色を調整可能

dsh-oil-sticky-prompt:スクロール中、最新ユーザーメッセージを上部に固定

長い返答をスクロールしているとき、最新のユーザーメッセージがコンパクトな全幅バーとして会話の上部にピン留めされ、クリックで元の位置にジャンプ:

  • 単一の sticky バー、複数トピックで競合なし
  • 元の改行は空白に折り畳まれ、最大 2 行
  • メッセージを変更せず、セッションログに触れず、設定も保存しない

dsh にインストールさせるには、入力欄に:

text
dsh-oil-sticky-prompt プラグインを web profile にインストールし、動くことを確認してください;GitHub の oil-oil/dsh-oil-sticky-prompt リポジトリにあります。

オープンソース:oil-oil/dsh-oil-sticky-prompt。インストール後に dsh を再起動。下の図は dsh が私のために実際にインストールしてくれた会話 —— Peer dependency 警告が想定動作であることの説明と、次回 web profile 再起動時に有効になる旨が記されています:

dsh が dsh-oil-sticky-prompt を実際にインストールする会話:Peer dependency 警告を説明、有効化の方法を記述

dsh-better-sidebar:サイドバーを完全作業台に

最も機能豊富なもので、右サイドバーを「作業台」にアップグレード。レイアウト哲学は Codex のような AI プログラミングツールのサイドバーと同じ —— ファイル、ターミナル、Git を Agent の隣に置き、働きながら見る:

  • ファイル作業台:ディレクトリツリー + コードエディタ、画像 / Markdown / HTML / PDF / Office のインラインプレビュー
  • 組み込みブラウザ:複数ウェブページタブ、コンテンツは sandbox iframe で実行
  • 実ターミナル:xterm + node-pty で実シェル実行、切断時再接続、ターミナルツールをモデルに任意で注入可能
  • Git パネル:実 diff、履歴、右クリックで stage / commit / revert
  • バックグラウンド Job ページ:サブエージェントトポロジーとバックグラウンド Job(終了コード / ライブ出力 / 強制終了)
  • 右サイドバー + 下部パネルのデュアル作業台、レイアウトはセッションごとに記憶

dsh にインストールさせるには、入力欄に:

text
dsh-better-sidebar プラグインを web profile にインストールし、動くことを確認してください;GitHub の omdsh-dev/DSH-better-sidebar リポジトリにあります(npm パッケージ名 dsh-better-sidebar)。

オープンソース:omdsh-dev/DSH-better-sidebar。インストール後に dsh を再起動、ブラウザをハードリフレッシュするとサイドバーが見えます(bundle メンバーのため、再起動でのみロード)、右側のファイルブラウザ + 下部ターミナルが同時に出現:

dsh-better-sidebar:右側ファイルブラウザ + 下部ターミナル、Codex のサイドバー作業台のような見た目

この 3 つすべてが bundle 宣言を持ち、インストール時に自動マウントされます(③ の仕組み)。GitHub ソースの 2 つを初めてインストールするとき、pnpm の allowBuilds でブロックされたら、「よくある落とし穴」の項目に従って処理してください。

よくある落とし穴

問題何が起きているか対処
インストールしたのに UI 変化なし?bundle メンバーをインストールしたなら、実行中 profile は自動リロードしないdsh を再起動し、設定を再確認
GitHub ソースプラグインの初回 add で allowBuilds エラー?pnpm ≥10 はデフォルトでソースパッケージの prepare ビルドスクリプト実行を阻止エラー内に表示されるヒントに従い、allow キーを profile ディレクトリ下の pnpm-workspace.yaml にコピーし、add を再実行
dsh-better-sidebar インストール時に「Ignored build scripts」と表示?pnpm 11 が node-pty などネイティブモジュールのビルドスクリプトを遮断profile ディレクトリ(C:\Users\<ユーザー名>\.dsh\profiles\web)で pnpm approve-builds --all を実行、その後ハードリフレッシュ
インストール後にサイドバーが 2 つ出る?以前手動マウントした行が自動バンドルと二重マウントされたcordis.patch.yml の古い - insert: ... better-sidebar ... 手動マウント行を削除
間違った環境にインストールした?--profile がインストール先を決めるコマンドの profile 名が望むもの(web / headless ...)か確認
インストールしたのに効果なし、エラーもなし?通常依存(dsh.bundle 宣言なし)をインストールしたかもしれないただ「荷物が届いた」だけ、能力は自分で cordis.patch.yml に insert して接続する必要あり(mcp-client が典型)

この章で学んだこと

下の項目を自力で達成できれば合格です:

  • [ ] プラグインの 4 ソース(npm / GitHub / ローカルディレクトリ / tarball)を言え、プラグインマーケットはソースではなくグラフィカルエントリであることを言える
  • [ ] dsh plugin --profile <name> が profile のプラグインを管理し、その node_modules にインストールされることを知っている
  • [ ] 区別できる:dsh 本体はグローバルインストール、プラグインは profile ごと、$DSH_HOME/cordis.patch.yml はマシンレベルでサイト全体に適用
  • [ ] 3 つのインストール方法を知っている:コマンドライン add / マーケット 1 クリックインストール / dsh.bundle 宣言あり依存は自動マウント
  • [ ] 3 つのコミュニティプラグイン(dsh-theme スキン / dsh-oil-sticky-prompt 吸着プロンプトバー / dsh-better-sidebar サイドバー作業台)の目的を言え、自分でインストールできる
  • [ ] bundle メンバー変更には profile 再起動が必要、通常の patch 編集はホットリロードであることを知っている
  • [ ] list / remove / update でプラグインを管理でき、--dump-config で設定ツリーにマウントされたか検証できる

Open Source · MIT · Community Driven