web-search — DSH 駆動 Edge ブラウザ ネット検索
DSH でローカル Edge + Playwright MCP を使い、「本物のブラウザ」によるネット検索を実現します。モデルが MCP ブラウザツールを呼び出して実際の Edge を操作し、Bing で検索を実行。ページのスナップショットを DSH コンテキストに取り込み、セキュリティルールに従って結果をフィルタリングし、要約を出力します。DSH 組み込みの web_search インターフェースではなく、実際のブラウザ検索を行います。
機能構成(2点セット)
| 構成 | 場所 | 説明 |
|---|---|---|
| Playwright MCP 設定 | DSH の cordis.yml(dsh-mcp-client プラグイン) | DSH が Edge を操作できるようにする |
| 本説明スキル | .agents/skills/web-search/SKILL.md | セットアップ手順、検索フロー、セキュリティルールを記録 |
両方が揃って初めて、検索機能が完全に動作します。
一、新しいPCでのセットアップ
前提条件
- Node.js(npm 含む)がインストールされていること
- Microsoft Edge がインストールされていること(Win10/11 標準搭載)
- DSH が起動できる状態であること
手順 1:Playwright MCP パッケージのインストール
PowerShell の実行ポリシーで
.ps1がブロックされる場合は、npm.cmd/npx.cmdを使用してください。
npm install -g @playwright/mcp@latest --no-audit --no-fund
起動確認:
node "$env:APPDATA\npm\node_modules\@playwright\mcp\cli.js" --help
ヘルプオプションが表示されればインストール完了です。
手順 2:DSH の cordis.yml に MCP クライアントを登録
DSH を実行する profile / preset の cordis.yml に、@deepseek-ai/dsh-mcp-client プラグインを追加します(MCP サーバーごとに1つ):
- id: mcp-playwright
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: playwright
transport: stdio
command: npx.cmd
args: ['-y', '@playwright/mcp@latest', '--browser', 'msedge']
--browser msedgeでローカルの Edge を直接使用し、Chromium のダウンロードは不要です。commandにnpx.cmdを指定すると PowerShell の実行ポリシーを回避できます。ブロックされない場合はnpxでも構いません。- DSH は MCP ツールを
mcp__<serverName>__<元のツール名>として登録します。例:mcp__playwright__browser_navigate、mcp__playwright__browser_snapshotなど。
手順 3:再起動して反映
cordis.yml は DSH 起動時に読み込まれ、MCP プラグインは接続時に listTools() を実行してツールを登録します。変更後は DSH を再起動してください。そうしないとツールが利用できません。
二、検索フロー
mcp__playwright__browser_navigateを呼び出して Bing を開く:https://www.bing.com/search?q=<URL エンコードされたキーワード>。mcp__playwright__browser_snapshotを呼び出して結果ページのスナップショット(タイトル/ドメイン/URL/説明)を取得します。スナップショットの情報が不十分な場合は、mcp__playwright__browser_take_screenshotで画像を取得することもできます。- 各結果を以下の「セキュリティレベリング」に従って評価します。
- 「信頼できる」レベルの結果のみ
mcp__playwright__browser_clickで詳細を開いて読み取ります。「疑わしい」と「ブロック」レベルは開きません。 - 「出力フォーマット」に従って結果を整理し、回答を返します。引用する URL はマークダウンリンクにします。
検索のたびに Edge ウィンドウが短時間表示されますが、これは正常な動作です。バックグラウンドで静かに実行したい場合は、MCP パラメータに
--headlessを追加してください。ただし、視覚的な確認ができなくなるため、通常は推奨しません。
三、セキュリティレベリング(中程度のフィルタリング)
検索エンジンの結果は玉石混交です(フィッシングのなりすまし、SEO ファーム、バンドルダウンロード、ウイルス混入ソフトウェアサイトなど)。そのため、結果を1つずつレベル分けする必要があります。外部ライブラリには依存せず、純粋にルールベースでフィルタリングします。
🔒 信頼できる(通常通り詳細を開いてよい)
- 公式サイト(ドメインとブランドが完全に一致しているもの、例:
brand.com/brand.com.cn) - 権威あるサイト:Wikipedia、知乎、公式ドキュメント、
.gov/.eduドメイン、大企業のドメイン - よく知られた成熟した大規模サイト(登録から長期間経過し、評判が確立されているもの)
⚠️ 疑わしい(タイトルとURLのみ表示、詳細は開かず、ダウンロードリンクも表示しない)
- 結果に広告マークが付いているもの(Bing の
adマーク、sp=ad、推广など) - ソフトウェアダウンロード集約サイト / リソースサイト(華軍、太平洋、ソフトウェアハウス、グリーンソフトウェア連盟、xpgod、ZOL ダウンロードなど)
- なりすましドメイン:公式を模倣したもの(例:
brand-official.com、brand-download.net、ハイフンや数字のバリエーションを含むもの) - 新しく登録されたドメイン、HTTPS なし、説明文にキーワードが大量に詰め込まれているもの
🚫 ブロック(赤色で表示し、採用しない)
- 明らかなフィッシング、ギャンブル、ポルノ、exe のダウンロードを要求する疑わしいサイト
- 「クラック版 / グリーン版 / ○○ソフトウェアダウンロードサイト」全般
四、絶対的なルール
- いかなるファイルも自動でダウンロードしない(exe / apk / zip / dmg は一切触れない)
- 疑わしいサイトのダウンロードリンクを直接提示しない
- ソフトウェアが必要な場合は、公式サイトまたはシステムの公式アプリストアのみを推奨する
- デフォルトでは疑わしいページの詳細を開かない。「信頼できる」レベルのみ詳細を読むために開く
五、出力フォーマット
以下の形式で返します(日本語):
🔒 信頼できる結果
1. 【タイトル】(ドメイン) – 一言説明
2. ...
⚠️ 参考情報(未確認)
- タイトル (ドメイン) – 注意:疑わしい理由
- ...
🚫 ブロック(アクセス非推奨)
- タイトル (ドメイン) – 理由
六、なぜフィルタリングルールを使い、検索エンジンを変えないのか
問題は検索エンジンではなく、フィルタリングレイヤーの欠如にあります。検索エンジンを変えても、広告やプロモーション枠が変わるだけです。フィルタリングルールを維持すれば、どの検索エンジンの結果もまずはレベル分けされます。また、サードパーティのURLブラックリスト(例:火绒のURLデータベース)を組み込もうとしないでください。そのようなリストはクローズドソースであり、公開クエリAPIがないため、フロー内で照会できません。