DSH プラグインブートストラップ は何をしますか?
新しいマシンで、既知の正常な DeepSeek Harness(DSH)プラグインセットを復元します。
信頼できる情報源は plugins.json です。すべてのプラグインは正確なバージョンに固定され、メモとオプションのインストール後設定が含まれています。このスクリプトは、ユーザーがパッケージ名を覚える必要なく、セットアップを再現します。
ユーザーストーリー
私は新しいマシンを使っています。他のマシンで使っている DSH プラグインを、同じバージョン、同じ主要な動作でインストールしたい。
このスキルを新しいマシンに導入する
公式の公開コピーは以下にあります:
https://github.com/GGGengXXX/make-dsh-better
新しいマシンで:
git clone https://github.com/GGGengXXX/make-dsh-better.git
mkdir -p ~/.agents/skills
cp -R make-dsh-better/skills/dsh-plugin-bootstrap ~/.agents/skills/
すでにリポジトリをクローンしている場合は、スキルディレクトリをコピーするだけです。その後、新しい DSH セッションを開始します。DSH は ~/.agents/skills/<name>/SKILL.md 以下にあるスキルを認識し、スキル名は dsh-plugin-bootstrap として表示されます。スキルがすでにそのディレクトリにある場合は、コピーをスキップします。
ワークスペースのコピーが編集のための信頼できる情報源です。変更後は再コピーしてください。
このスキルの機能
plugins.json(バージョン固定のプラグインリスト)を読み取ります。- 適切な DSH CLI を検出します。
desktopプロファイルはデスクトップアプリ専用であるため、スキルはアプリにバンドルされた CLI ラッパーを、PATH上の汎用的なdshよりも優先します。 - DSH のバージョンとマニフェストを照合し、不一致があれば警告またはブロックします。
- インストール/更新/スキップの計画を表示し、確認を求めた後、各プラグインを
dsh plugin --profile <profile> add <name>@<version>でインストールします。 - オプションで、プロファイルレベルの
dsh-browser-cdp設定(Chrome パス +--headless)をcordis.patch.ymlに適用します。 - 各プラグインが依存関係としても、選択されたバンドルとしても存在することを確認します。
- オプションで、2つのバージョン固定されたローカルパッチを適用します:
[email protected]:optimizeComposerKeysのデフォルトを true にします。[email protected]: Enter で改行、Cmd/Ctrl+Enter で送信します。
シークレット、API キー、セッション、ワークスペースファイル、~/.dsh ディレクトリ全体はコピーしません。
ユーザーがこのスキルを呼び出したときのワークフロー
スキルディレクトリ(この SKILL.md を含むディレクトリ)から作業します。
1. 何も変更する前に検査する
node scripts/install.mjs --profile desktop --dry-run
計画をユーザーに表示します。計画にインストールや更新が含まれる場合、--dry-run なしで実行する前に明示的な確認を求めます。
ユーザーの対象がデスクトップアプリでない場合は、実際のプロファイルを渡します(例: --profile web または --profile tui)。デスクトップ以外のプロファイルでは、PATH 上の通常の dsh で十分です。スクリプトがそれを処理します。
2. インストール
node scripts/install.mjs --profile desktop --yes
便利なフラグ:
| フラグ | 意味 |
|---|---|
--dry-run | 計画を表示するのみ。変更は行わない |
--yes / -y | 非対話的な確認 |
--json | 標準出力に機械可読な要約を出力(ログは標準エラー出力へ) |
--no-config | cordis.patch.yml を変更しない |
--skip <pkg> | 1つのプラグインをスキップ(繰り返し可能) |
--strict | 正確な DSH バージョンの一致を要求 |
--allow-dsh-mismatch | メジャー.マイナーバージョンが異なっても続行 |
--dsh-cli <path> | 明示的な CLI パス |
--manifest <path> | 別のマニフェストを使用 |
このスクリプトは冪等です。固定されたバージョンですでにインストールされ、バンドルとして選択されているプラグインはスキップされます。
3. オプションのローカルパッチを適用する
ソースマシンとまったく同じキー操作の動作が必要な場合のみ:
node scripts/apply-patches.mjs --profile desktop --dry-run
node scripts/apply-patches.mjs --profile desktop --yes
これにより、インストール済みのサードパーティファイルが node_modules/ 以下で変更されます。バージョンが一致しない場合は、--force が指定されていない限り拒否し、.bak-<timestamp> コピーを保持します。これはローカルパッチであり、将来のプラグイン更新で上書きされる可能性があることをユーザーに伝えてください。更新後は、パッチスクリプトを再実行するか、プラグインの設定で動作を設定してください。
--only keyboard と --only markdown はパッチの範囲を制限します。
4. 再起動 / リフレッシュ
プラグインのインストール後、ユーザーに DeepSeek Harness を再起動するように伝えてください(または Web UI を Cmd+Shift+R でハードリフレッシュ)。クライアントバンドルはページロードごとにキャッシュされるため、通常のリフレッシュでは不十分な場合があります。
5. 確認
インストーラーは確認テーブルを出力します。プラグインが FAIL と表示された場合、以下を確認してください:
- プロファイルの
package.json依存関係とdsh.profile.bundles - パッケージのバージョンが実行中の DSH バージョンと互換性があるか
~/.dsh/profiles/<profile>/.plugin-manager/logs/以下のプラグインマネージャーのログ
マニフェストの更新(ソースマシンで取得)
ユーザーがメインマシンでプラグインをインストール/削除した場合、マニフェストを更新します:
node scripts/capture.mjs --profile desktop --dry-run # プレビュー
node scripts/capture.mjs --profile desktop # plugins.json を書き込む
これにより、プロファイルの選択されたバンドルを読み取り、各プラグインのインストール済みバージョンを記録し、既存の note フィールドを保持します。その後、スキルディレクトリをコミット/プッシュするか(または新しいマシンにコピーしてください)。
デスクトッププロファイルのルール
汎用の DSH CLI は --profile desktop を意図的に拒否します:
error: profile "desktop" is managed exclusively by the Electron application
代わりにデスクトップアプリの CLI ラッパーを使用してください:
/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh
install.mjs は macOS で自動的にそれを見つけます。他のプラットフォーム、またはアプリが別の場所にある場合は、DSH_CLI を設定するか、--dsh-cli を渡してください。
マニフェスト形式
plugins.json:
{
"schemaVersion": 1,
"targetProfile": "desktop",
"dshVersion": "0.2.1-rc.2",
"plugins": [
{ "name": "@scope/plugin", "version": "1.2.3", "note": "why it is here" }
],
"config": {
"dsh-browser-cdp": {
"chromePath": "auto",
"runtimeArgs": "--headless"
}
},
"localPatches": [
{ "package": "dsh-keyboard-shortcut", "version": "0.2.0", "description": "..." }
]
}
dshVersionはマニフェストを取得したときのバージョンです。同じメジャー.マイナーは警告付きで許可されます。異なるメジャー.マイナーは--allow-dsh-mismatchが必要です。targetProfileはデフォルト値にすぎません。--profileで上書きされます。config.dsh-browser-cdp.chromePath: "auto"により、インストーラーは一般的な Chrome/Chromium/Edge/Brave の場所をプローブします。プローブが見つからない場合は、明示的なパスを設定してください。localPatchesは人間のためのドキュメントです。インストーラーは自動的には適用しません。apply-patches.mjsを明示的に実行してください。
含まれるプラグインセット(2026-10-24 取得)
| プラグイン | バージョン | 役割 |
|---|---|---|
@flyer103/dsh-side-chat | 0.6.0 | ネイティブ右サイドバーのサイド会話 |
dsh-browser-cdp | 1.6.0 | Chrome/CDP 経由のエージェントブラウザ。ヘッドレス監視パネル |
dsh-keyboard-shortcut | 0.2.0 | Enter で改行、Cmd/Ctrl+Enter で送信 |
dsh-markdown-bubble | 0.1.5 | Markdown レンダリングされたユーザーメッセージ |
dsh-markdown-input | 0.2.0-alpha.20 | ライブ Markdown コンポーザー(アルファ版) |
dsh-better-sidebar | 0.28.0 | ファイルツリー + 編集可能な CodeMirror + Git/タスク/ターミナル(重い) |
備考:
dsh-markdown-inputはアルファ版です。コンポーザーの乗っ取りが誤動作する場合は、設定 → プラグイン で無効にしてください。dsh-better-sidebarは重く、独自のサイドチャットを含んでいます。@flyer103/dsh-side-chatと共存できますが、ユーザーには2つのサイドチャットエントリーポイントが表示されます。どちらを残すか決定してください。- 組み込みの ファイル と ドキュメントプレビュー は DSH 自体の一部です。このマニフェストには含まれておらず、インストールは不要です。
安全性
- サードパーティの DSH プラグインは インプロセス で実行され、ユーザーの権限で動作する可能性があります。ユーザーが信頼するマニフェストからのみインストールしてください。
- 正確なバージョンが固定されています。それらを
latestに静かに置き換えないでください。 - ローカルパッチは
node_modulesを変更します。これらはオプションであり、バージョン固定で、バックアップされ、元に戻すことが可能です(.bakファイルを復元するか、プラグインを再インストールしてください)。 - 「プラグインのインストール」の一部として、
~/.dsh/.credentials.yaml、セッションログ、ワークスペースファイルをコピーしないでください。
トラブルシューティング
| 症状 | 対処法 |
|---|---|
profile "desktop" is managed exclusively… | デスクトップアプリの CLI ラッパーまたは DSH_CLI を使用。上記参照 |
Could not find a dsh CLI | DSH Desktop をインストールするか、--dsh-cli /path/to/dsh を渡す |
profile "desktop" is not initialized | DSH Desktop を一度開き、~/.dsh/profiles/desktop を作成する |
ECONNRESET / fetch failed | 再試行する。インストーラーは自動的に1回リトライする。ネットワーク/プロキシ/レジストリを確認 |
| プラグインはインストールされたが UI が変わらない | DSH を再起動するか、ハードリフレッシュ(Cmd+Shift+R)。クライアントバンドルはキャッシュされる |
| プラグインはインストールされたが有効にならない | dsh.profile.bundles にあることを確認。プラグインマネージャーの add は通常追加される |
dsh-markdown-input のコンポーザーがない | 設定 → プラグインを確認。アルファ版プラグイン。ハードリフレッシュ。コンソールでスロット/コンポーザーエラーを確認 |
dsh-better-sidebar/サイドチャットの競合 | 両方起動可能。どちらかのサイドチャットエントリを選ぶか、一方のプラグインを削除 |
パッチが already-patched と表示される | 想定内。ファイルはすでに目的の動作を持っている |
パッチが skipped — version … と表示される | マニフェスト/プラグインバージョンが変更された。--force を使用する前に新しいバージョンを確認 |
ファイル
| ファイル | 目的 |
|---|---|
SKILL.md | このワークフロー |
plugins.json | バージョン固定のプラグインマニフェスト |
scripts/install.mjs | ドライラン/インストール/確認 |
scripts/capture.mjs | 稼働中のプロファイルからマニフェストを更新 |
scripts/apply-patches.mjs | オプションのローカルキー操作パッチ |
patches/README.md | パッチの根拠と手動フォールバック |