Thiết lập: SearXNG (Sidecar)
Công cụ web_search định tuyến qua một chuỗi các engine: Brave → SearXNG → DuckDuckGo → IAsk. Bằng cách chạy phiên bản SearXNG của riêng mình, chúng ta tránh được các giới hạn tần suất của từng engine đơn lẻ cũng như sự cố trích xuất dữ liệu, đồng thời mở khóa các danh mục chỉ có trên SearXNG: science, it, files, và music.
Chọn một phương thức thiết lập SearXNG:
A. Docker Compose (khi TomoriBot chạy trong Docker)
Phần tiêu đề “A. Docker Compose (khi TomoriBot chạy trong Docker)”Sử dụng phương thức này nếu bạn chạy TomoriBot bằng ngăn xếp Docker Compose của kho lưu trữ. Sau đó chạy với profile searxng:
docker compose --profile searxng up -dLệnh này khởi động dịch vụ searxng cùng với TomoriBot. Bot sẽ tự động kết nối tới dịch vụ tại http://searxng:8080/.
Nếu bạn chạy TomoriBot trực tiếp bằng bun run dev, hãy sử dụng phương thức độc lập bên dưới.
Nếu sử dụng trong môi trường production, hãy đặt SEARXNG_SECRET trong .env thành bất kỳ chuỗi nào từ 32 ký tự trở lên (biến này được tự động gán mặc định trong môi trường dev).
B. Docker độc lập (khi chạy bun run dev)
Phần tiêu đề “B. Docker độc lập (khi chạy bun run dev)”Trước tiên, hãy đặt SEARXNG_BASE_URL=http://localhost:8080/ trong .env để bot biết nơi kết nối.
Sau đó, thay vì chạy TomoriBot trực tiếp bằng bun run dev, hãy sử dụng bun run launch --searxng. Lệnh này sẽ tự động xử lý vòng đời của container và đợi container ở trạng thái hoạt động tốt trước khi khởi động bot:
bun run launch --searxngNếu bạn thích tự quản lý container, hãy giữ SEARXNG_BASE_URL=http://localhost:8080/ trong .env và chạy:
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:latestSau đó chạy bun run dev khi container đã ở trạng thái hoạt động tốt (docker ps hiển thị (healthy)).
C. Không sử dụng SearXNG
Phần tiêu đề “C. Không sử dụng SearXNG”Để trống SEARXNG_BASE_URL. Chuỗi tìm kiếm sẽ tự động chuyển sang Brave → DuckDuckGo → IAsk.
Khi không có sidecar SearXNG nào được cấu hình, schema web_search được tổng hợp sẽ không còn thông báo các danh mục chỉ có trên SearXNG. Các danh mục thông thường (text, image, video, news) vẫn xuất hiện khi Brave được cấu hình, và tìm kiếm chỉ dạng văn bản xuất hiện khi chỉ có phương án dự phòng MCP DuckDuckGo/IAsk.
Tinh chỉnh kết quả hình ảnh
Phần tiêu đề “Tinh chỉnh kết quả hình ảnh”Kết quả hình ảnh từ SearXNG được xác thực bằng yêu cầu HEAD, có thể nén tùy chọn và được gửi dưới dạng tệp đính kèm Discord: trải nghiệm người dùng giống hệt với tìm kiếm hình ảnh của Brave. Nếu tất cả các URL ứng viên đều không vượt qua xác thực, SearXNG sẽ trả về danh sách liên kết hình ảnh dạng văn bản thay vì báo lỗi nghiêm trọng.
| Biến | Mặc định | Mô tả |
|---|---|---|
SEARXNG_IMAGE_COUNT | 3 (tối đa 10) | Số lượng hình ảnh hợp lệ được gửi tới Discord. Bị ghi đè bởi đối số count của LLM. |
SEARXNG_IMAGE_POOL | 10 | Tập hợp các URL ứng viên khi LLM không chỉ định count. Khi count được chỉ định, tập hợp sẽ là count × 3 (tối đa 30) để xử lý các lỗi chặn hotlink. |
IMAGE_MIN_SIZE_BYTES | 5120 (5 KB) | Các hình ảnh dưới kích thước này sẽ bị từ chối: lọc bỏ hình ảnh giữ chỗ/báo lỗi. Dùng chung với tìm kiếm hình ảnh Brave. |
WEB_SEARCH_TIMEOUT_MS | không đặt | Thời gian chờ yêu cầu cho từng engine. |
WEB_SEARCH_HEALTHCHECK_CACHE_SEC | 60 | Thời gian lưu tạm kết quả kiểm tra tình trạng trước khi kiểm tra lại. |
(Xem .env.optional.example để biết tất cả các tùy chọn cấu hình.)