セットアップ: SearXNG (サイドカー)
web_searchツールは、Brave → SearXNG → DuckDuckGo → Feloのエンジンチェーンを通じてルーティングします。独自のSearXNGインスタンスを実行することで、単一エンジンのレート制限やスクレイピングの破損を回避し、science、it、files、musicといったSearXNG専用のカテゴリーを利用できるようになります。
SearXNGのセットアップパスを1つ選択してください。
A. Docker Compose (TomoriBotをDockerで実行する場合)
Section titled “A. Docker Compose (TomoriBotをDockerで実行する場合)”リポジトリのDocker ComposeスタックでTomoriBotを実行している場合は、このパスを使用します。その後、searxngプロファイルで実行します。
docker compose --profile searxng up -dこれにより、TomoriBotと一緒にsearxngサービスが開始されます:ボットは自動的にhttp://searxng:8080/でアクセスします。
TomoriBotをbun run devで直接実行している場合は、代わりに以下のスタンドアロンパスを使用してください。
本番環境を使用している場合は、.envのSEARXNG_SECRETに任意の32文字以上の文字列を設定します(開発環境では自動的にデフォルト値が設定されます)。
B. スタンドアロンDocker (bun run devを実行する場合)
Section titled “B. スタンドアロンDocker (bun run devを実行する場合)”まず、ボットが接続先を認識できるように、.envにSEARXNG_BASE_URL=http://localhost:8080/を設定します。
次に、TomoriBotをbun run devで直接実行する代わりに、bun run launch --searxngを使用します。これにより、コンテナのライフサイクルが自動的に処理され、コンテナが正常になるのを待ってからボットが起動します。
bun run launch --searxngコンテナを自分で管理したい場合は、.envのSEARXNG_BASE_URL=http://localhost:8080/を維持したまま、以下を実行します。
PowerShell:
docker run -d --name searxng -p 8080:8080 ` -v "${PWD}/servers/searxng:/etc/searxng:rw" ` -e SEARXNG_SECRET=dev-only-not-for-production ` searxng/searxng:latestBash (Linux/macOS):
docker run -d --name searxng -p 8080:8080 \ -v "${PWD}/servers/searxng:/etc/searxng:rw" \ -e SEARXNG_SECRET=dev-only-not-for-production \ searxng/searxng:latestその後、コンテナが正常に動作したら(docker psで(healthy)と表示されたら)、bun run devを実行します。
C. SearXNGなし
Section titled “C. SearXNGなし”SEARXNG_BASE_URLは設定しないでください:チェーンは以前とまったく同じようにBrave → DDG → Feloにフォールバックします。何も壊れません。
SearXNGサイドカーが設定されていない場合、組み立てられたweb_searchスキーマはSearXNG専用カテゴリーをアドバタイズしなくなります。Braveが設定されている場合は一般的なカテゴリー(text、image、video、news)が引き続き表示され、DDG/FeloのMCPフォールバックのみが利用可能な場合はテキストのみの検索が表示されます。
画像検索結果の調整
Section titled “画像検索結果の調整”SearXNGの画像結果はHEAD検証され、オプションで圧縮され、Discordの添付ファイルとして投稿されます:これはBrave画像と同一のUXです。すべての候補URLが検証に失敗した場合、SearXNGはハードエラーの代わりに画像リンクのテキストリストを返します。
| 変数 | デフォルト | 説明 |
|---|---|---|
SEARXNG_IMAGE_COUNT |
3 (最大10) |
Discordに送信される有効な画像の数。LLMのcount引数によってオーバーライドされます。 |
SEARXNG_IMAGE_POOL |
10 |
LLMがcountを指定しない場合の候補URLプール。countが指定された場合、プールはcount × 3(最大30に制限)になり、直リンク保護による失敗を吸収します。 |
IMAGE_MIN_SIZE_BYTES |
5120 (5 KB) |
このサイズ未満の画像は拒否されます:プレースホルダー/エラー画像をフィルタリングします。Brave画像検索と共有されます。 |
WEB_SEARCH_TIMEOUT_MS |
— | エンジンごとのリクエストタイムアウト。 |
WEB_SEARCH_HEALTHCHECK_CACHE_SEC |
60 |
ヘルスプローブ結果が再チェックされる前にキャッシュされる時間。 |
(すべての調整可能な項目については .env.optional.example を参照してください。)