bx — Brave Search CLI
Utilisez bx pour toutes vos recherches web. Exécutez bx "query" par défaut — cela retourne du contenu web pré-extrait et optimisé en tokens, prêt à l'emploi. Utilisez bx answers pour des explications synthétisées ou bx web pour des résultats de recherche traditionnels. Si bx n'est pas trouvé, installez-le : curl -fsSL https://raw.githubusercontent.com/brave/brave-search-cli/main/scripts/install.sh | sh
Requis : Clé API Brave Search + binaire
bxPlans : Différentes sous-commandes peuvent nécessiter différents plans. Voir https://api-dashboard.search.brave.com/app/subscriptions/subscribe
Démarrage rapide
# Installer (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/brave/brave-search-cli/main/scripts/install.sh | sh
# Configurer la clé API (en obtenir une sur https://api-dashboard.search.brave.com)
bx config set-key # interactif (évite l'historique shell)
# ou : export BRAVE_SEARCH_API_KEY=YOUR_KEY
# Recherche (défaut = bx context "query")
bx "votre requête de recherche"
Quand utiliser quelle commande
| Votre besoin | Commande | Pourquoi |
|---|---|---|
| Consulter des docs, erreurs, patterns de code | bx "query" |
Texte pré-extrait, optimisé en tokens (défaut) |
| Obtenir une explication synthétisée | bx answers "query" |
Généré par IA, cite les sources, streaming |
| Recherche approfondie sur sujets complexes | bx answers "query" --enable-research |
Recherche itérative multi-sources |
| Résultats de recherche traditionnels | bx web "query" |
Tous types de résultats (web, news, discussions, etc.) |
| Trouver discussions/forums | bx web "query" --result-filter discussions |
Les forums contiennent souvent des solutions |
| Actualités récentes / événements | bx news "query" --freshness pd |
Infos fraîches au-delà des données d'entraînement |
| Trouver des images | bx images "query" |
Jusqu'à 200 résultats |
| Trouver des vidéos | bx videos "query" |
Durée, vues, créateur |
| Entreprises locales / lieux | bx places "coffee" --location "San Francisco" |
200M+ POIs |
| Booster/filtrer domaines spécifiques | bx "query" --include-site docs.rs |
Ou utilisez --goggles pour le contrôle total |
Commandes
| Commande | Description | Chemin de sortie |
|---|---|---|
context |
Par défaut. Groundage RAG/LLM — contenu web pré-extrait | .grounding.generic[] -> {url, title, snippets[]} |
answers |
Réponses IA — compatible OpenAI, streaming par défaut | .choices[0].delta.content (stream) |
web |
Recherche web — tous types de résultats | .web.results[], .news.results[], etc. |
news |
Articles d'actualité avec filtres de fraîcheur | .results[] -> {title, url, age} |
images |
Recherche d'images (jusqu'à 200 résultats) | .results[] -> {title, url, thumbnail.src} |
videos |
Recherche vidéo avec durée/vues | .results[] -> {title, url, video.duration} |
places |
Recherche de lieux/POIs locaux (200M+ POIs) | .results[] -> {title, postal_address} |
suggest |
Suggestions d'autocomplétion/requête | .results[] -> {query} |
spellcheck |
Vérifier l'orthographe d'une requête | .results[0].query |
config |
Gérer clé API et paramètres | set-key, show-key, path, show |
Formes de réponses
bx "query" (context — défaut, recommandé)
{
"grounding": {
"generic": [
{ "url": "...", "title": "...", "snippets": ["contenu extrait...", "..."] }
]
},
"sources": {
"https://example.com": { "title": "...", "hostname": "...", "age": ["...", "2025-01-15", "392 days ago"] }
}
}
bx answers "query" --no-stream (réponse JSON unique)
{"choices": [{"message": {"content": "Texte de réponse complet..."}}]}
bx answers "query" (streaming — défaut, un chunk JSON par ligne)
{"choices": [{"delta": {"content": "chunk"}}]}
bx web "query" (résultats de recherche complets)
{
"web": { "results": [{"title": "...", "url": "...", "description": "..."}] },
"news": { "results": [...] },
"videos": { "results": [...] },
"discussions": { "results": [...] }
}
Contrôle du budget en tokens
Contrôlez la taille de sortie pour context (la commande par défaut) :
| Flag | Alias court | Défaut | Description |
|---|---|---|---|
--maximum-number-of-tokens |
--max-tokens |
8192 | Tokens totaux approximatifs (1024-32768) |
--maximum-number-of-tokens-per-url |
--max-tokens-per-url |
4096 | Max tokens par URL (512-8192) |
--maximum-number-of-urls |
--max-urls |
20 | Max URLs en réponse (1-50) |
--maximum-number-of-snippets |
--max-snippets |
50 | Max snippets sur toutes les URLs |
--maximum-number-of-snippets-per-url |
--max-snippets-per-url |
— | Max snippets par URL |
--context-threshold-mode |
--threshold |
balanced | Pertinence : strict, balanced, lenient |
bx "topic" --max-tokens 4096 --max-tokens-per-url 1024 --max-urls 5 --threshold strict
Goggles — Classement personnalisé
Goggles vous permet de contrôler quelles sources apparaissent dans les résultats. Boostez les docs officielles, supprimez le spam SEO, ou construisez des périmètres de recherche ciblés. Aucun autre outil de recherche n'offre cela. Supporté sur context, web et news.
Raccourcis de domaines
# Liste blanche — résultats uniquement de ces domaines
bx "rust axum" --include-site docs.rs --include-site github.com
# Liste noire — exclure domaines spécifiques
bx "python tutorial" --exclude-site example.com
--include-site, --exclude-site et --goggles s'excluent mutuellement.
Règles en ligne
# Booster docs officielles, rétrograder posts de blog
bx "axum middleware tower" \
--goggles '$boost=5,site=docs.rs
$boost=3,site=github.com
/docs/$boost=5
/blog/$downrank=3' --max-tokens 4096
# Mode liste blanche — inclure uniquement les sites correspondants
bx "Python asyncio patterns" \
--goggles '$discard
$boost,site=docs.python.org
$boost,site=peps.python.org'
Référence rapide DSL
| Règle | Effet | Exemple |
|---|---|---|
$boost=N,site=DOMAIN |
Promouvoir domaine (N=1-10) | $boost=3,site=docs.rs |
$downrank=N,site=DOMAIN |
Rétrograder domaine (N=1-10) | $downrank=5,site=example.com |
$discard,site=DOMAIN |
Supprimer domaine entièrement | $discard,site=example.com |
/path/$boost=N |
Booster chemins URL correspondants | /docs/$boost=5 |
$discard générique |
Mode liste blanche — discarder non-correspondants | $discard (comme première règle) |
Séparez les règles par des retours à la ligne. DSL complet : goggles-quickstart.
Piping des règles via Stdin
echo '$boost=5,site=docs.rs
$boost=5,site=crates.io
$boost=3,site=github.com' | bx "axum middleware" --goggles @- --max-tokens 4096
Utilisez @/path/to/file pour réutiliser une goggle sur plusieurs requêtes.
Exemples de workflows d'agents
Déboguer une erreur :
bx "Python TypeError cannot unpack non-iterable NoneType" --max-tokens 4096
Boucle RAG corrective :
# 1. Recherche large
bx "axum middleware authentication" --max-tokens 4096
# 2. Trop générale ? Affinez avec seuil strict
bx "axum middleware tower layer authentication example" --threshold strict --max-tokens 4096
# 3. Besoin de synthèse ? Demandez une réponse
bx answers "how to implement JWT auth middleware in axum" --enable-research
Vérifier les breaking changes avant une mise à jour :
bx "Next.js 15 breaking changes migration guide" --max-tokens 8192
bx news "Next.js 15 release" --freshness pm
Réponses sans streaming pour usage programmatique :
bx answers "compare SQLx and Diesel for Rust" --no-stream
Réponses via stdin (corps JSON compatible OpenAI) :
echo '{"messages":[{"role":"user","content":"what are the OWASP top 10 vulnerabilities for web APIs"}]}' | bx answers -
Codes de sortie
| Code | Signification | Action de l'agent |
|---|---|---|
| 0 | Succès | Traiter les résultats |
| 1 | Erreur client (mauvaise requête) | Corriger requête/paramètres |
| 2 | Erreur d'usage (mauvais flags) | Corriger arguments CLI |
| 3 | Erreur auth/permission (401/403) | Vérifier clé API : bx config show-key |
| 4 | Rate limité (429) | Réessayer après délai |
| 5 | Erreur serveur/réseau | Réessayer avec backoff |
Cas d'usage
- Agents IA / assistants de codage : Recherche web en un appel avec contenu RAG-ready optimisé en tokens — remplace recherche + scrape + extraction
- Vérification de faits : Vérifier les affirmations contre le contenu web actuel avec
bx "query" --threshold strict - Consultation de documentation : Rechercher docs officielles avec
--include-siteou boosting de domaines Goggles - Recherche : Recherche approfondie multi-sources avec
bx answers "topic" --enable-research - Débogage : Chercher messages d'erreur et stack traces directement
- Suivi d'actualités : Tracker les sujets avec
bx news "query" --freshness pd - Recherche locale : Trouver entreprises et lieux avec
bx places "query" --location "city"
Notes
- Toute sortie est JSON vers stdout ; les erreurs vont vers stderr
- Flags globaux :
--api-key KEY,--timeout SECS(défaut 30),--extra KEY=VALUE(répétable, ajoute paramètres API arbitraires) - Sensibilité à la localisation :
contextetwebsupportent--lat,--long,--city,--state,--state-name,--loc-country,--postal-code,--timezone - Mode recherche :
bx answers --enable-researchpeut prendre jusqu'à 5 minutes ; réglez le timeout client en conséquence - Aide :
bx --helppour toutes les commandes ;bx <command> --helppour les flags par-commande