aethexDocs

Liens de référence

Associez une URL à un agent et Aethex l'explore dans la base de connaissances de l'agent. Rien n'est récupéré pendant un appel.

Fonctionnement

Vous associez une ou plusieurs URLs à un agent. Une tâche en arrière-plan récupère chaque page, la convertit en markdown propre, la divise en fragments, les intègre et enregistre chaque page en tant que document ordinaire de la base de connaissances. À partir de là, la récupération est identique à celle d'un PDF téléversé : une recherche locale de quelques dizaines de millisecondes, sans rien récupérer pendant l'appel. Un lien peut correspondre à une seule page ou à un site entier : en mode `site`, le crawler suit les liens internes de la page, dans les limites indiquées ci-dessous.

PREMIÈRE PASSEattacherune ou plusieurs URLexplorerextraire + intégrerrévisionrien n'est servien servicerépond aux appelsapprouverrejetéfragments supprimésexclureCHAQUE PASSE SUIVANTEré-explorationintervalle fixeinchangé, aucune actionmodifié, remplacé silencieusementréduit, mis en attenteretenuancienne page servieen servicepage courte servieaccepterSeules les flèches étiquetées nécessitent une intervention humaine. Tout le reste s'exécute automatiquement.

Association de liens

Envoyez une liste, pas une URL à la fois. `crawl_mode` est défini par lien, car une racine de documentation mérite d'être explorée en mode `site`, contrairement à une page de tarification. La requête retourne immédiatement avec chaque lien à l'état `queued` : un crawl de cinquante pages avec intégration ne peut pas tenir dans une requête HTTP.

attach_links.sh
bash
curl -X POST "$BASE_URL/agents/$AGENT_ID/reference-links" \
  -H "X-API-Key: $AETHEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "links": [
      { "url": "https://docs.example.com/", "crawl_mode": "site" },
      { "url": "https://example.com/pricing", "crawl_mode": "page" }
    ]
  }'
Remarque
Tout ou rien. Une URL malformée rejette l'ensemble de la requête avec un message l'identifiant, plutôt que de créer les autres liens en vous laissant déterminer lesquels ont abouti. Deux orthographes de la même page, avec et sans paramètres de suivi, comptent comme un seul lien et sont refusées comme doublon.

Rien n'est servi tant que vous ne l'avez pas approuvé

Un crawl ne met rien à disposition de vos appelants. Chaque page stockée attend à l'état `pending_review` jusqu'à ce que vous approuviez le lien, car un scraping défectueux qui passe inaperçu compromet tous les appels futurs. L'aperçu trie les anomalies en premier plutôt que par ordre de crawl. Un candidat en attente, puis tout ce qui est en attente de révision, et au sein de chaque groupe, l'extraction la plus courte en premier, car une page revenue presque vide est le scraping défectueux le plus probable. L'approbation prend l'ensemble du lien, à l'exception des pages que vous excluez ; une page exclue est mémorisée comme rejetée et perd ses fragments, de sorte que l'index ne contient rien qui ne sera jamais servi.

review_and_approve.sh
bash
# What the crawl found, anomalies first.
curl "$BASE_URL/agents/$AGENT_ID/reference-links/$LINK_ID/pages" \
  -H "X-API-Key: $AETHEX_API_KEY"

# Put them into service, minus the ones you do not want.
curl -X POST "$BASE_URL/agents/$AGENT_ID/reference-links/$LINK_ID/approve" \
  -H "X-API-Key: $AETHEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "exclude": ["doc-uuid-of-a-page-you-reject"] }'

Ré-exploration

Chaque lien est relu à intervalle fixe afin qu'une page modifiée ne devienne pas obsolète. Il n'existe pas de paramètre par lien : l'intervalle est identique pour tous les liens, ce qui signifie qu'un lien ne peut pas être fixé pour ne jamais être ré-exploré. Un passage qui trouve la page inchangée ne fait absolument rien : il ne ré-intègre pas et ne vous demande pas d'approuver quoi que ce soit à nouveau.

Remarque
Une page déjà en service ne régresse jamais. Si une ré-exploration détecte que la page a changé, elle la remplace silencieusement et reste en service. Si elle trouve la page inaccessible ou ne peut en extraire aucun texte, elle ne modifie rien et continue de servir ce qu'elle avait. Un contenu obsolète vaut mieux qu'une lacune dans la connaissance de l'agent, à condition que la lacune soit visible sur le lien.

Quand une page se réduit

Un cas ne reçoit aucun des deux traitements : une ré-exploration qui revient avec une fraction du texte qu'elle avait auparavant. C'est ce à quoi ressemble un modèle cassé ou une migration de site, et remplacer un bon contenu par celui-ci serait pire que de ne rien faire. La page continue donc de servir ce qu'elle avait, et la nouvelle extraction est mise de côté en tant que candidat. L'aperçu affiche alors les deux versions : la taille avant, la taille maintenant, et le titre propre du candidat, afin que vous puissiez juger laquelle correspond à la vraie page.

GET .../pages (one entry)
json
{
  "id": "doc-uuid",
  "source_url": "https://docs.example.com/pricing",
  "status": "completed",
  "size_bytes": 7178,
  "chunk_count": 4,
  "candidate": {
    "at": "2026-08-31T12:19:22Z",
    "title": "Pricing",
    "size": 501,
    "previous_size": 7178
  }
}
accept_candidate.sh
bash
# Accept it, and the shorter version takes over without the page
# ever leaving service.
curl -X POST \
  "$BASE_URL/agents/$AGENT_ID/reference-links/$LINK_ID/pages/$DOC_ID/accept-candidate" \
  -H "X-API-Key: $AETHEX_API_KEY"
Attention
Il n'existe aucun moyen de rejeter un candidat, seulement de l'accepter. La mise en attente indique que la source sert actuellement une page ayant perdu la majeure partie de son texte, ce qui reste vrai jusqu'à ce que le site change ; l'état se réinitialise alors automatiquement, car le passage suivant détecte un nouveau contenu et remplace la page intégralement. L'acceptation publie la version plus courte et la réintègre, et la page ne quitte jamais le service pendant cette opération.

Lecture de l'état d'un lien

`crawl_state` répond à une seule question : le crawl a-t-il fonctionné ? Il est écrit par un crawl et rien d'autre ; ainsi, chaque valeur qu'il peut contenir est définitive dès la fin d'un passage.

queued

Attaché, en attente de son premier passage.

crawling

Un passage est en cours d'exécution.

ready

Le crawl a atteint toutes les pages prévues.

partial

Le crawl a perdu des données : il s'est arrêté à la limite de pages ou à son budget de temps, ou certaines pages ont échoué. `last_crawl_error_detail` indique lesquelles.

failed

Le crawl n'a rien rapporté. `last_crawl_error_code` en indique la raison.

Attention
Si vous construisez une interface utilisateur, colorez une ligne sur pages.flagged > 0, et non sur crawl_state. Le compteur de signalements indique qu'une intervention humaine est nécessaire ; il est recalculé à chaque lecture et tombe à zéro dès que vous acceptez un candidat, sans attendre le prochain crawl. Une page dont l'extraction a échoué laisse le lien à l'état ready, car le crawl lui-même a fonctionné.

Pourquoi un lien a échoué

Un échec sur une page découverte n'interrompt pas le crawl : il est enregistré et le passage continue, et `last_crawl_error_detail` résume ce qui s'est passé. Un échec sur l'URL que vous avez attachée fait échouer le lien, et `last_crawl_error_code` contient l'une des valeurs suivantes.

CodeCe qui s'est passéCe que vous pouvez faire
unreachableLe DNS a échoué, la connexion a été refusée, ou les redirections n'ont jamais abouti à une page récupérable.Vérifiez que l'URL se résout et répond depuis l'extérieur de votre réseau.
timeoutLa page n'a pas répondu dans le délai imparti.Réessayez ultérieurement, ou attachez une page qui répond plus rapidement.
http_4xxLe serveur a répondu avec un code 4xx. Le plus souvent, la page n'existe pas.Corrigez l'URL.
http_5xxLe serveur a répondu 5xx.Le site est défaillant ou surchargé ; patientez et réessayez.
paywalled401, 402 ou 403 : ce contenu n'est pas accessible à notre robot.Associez plutôt une page accessible publiquement.
js_onlyLa récupération a réussi, mais le HTML ne contenait aucun texte lisible : la page s'affiche dans le navigateur, ce qui signifie que ce qui a été reçu n'est qu'une coquille vide.Associez une URL qui sert du HTML. Sur une racine de portail, le mode `site` atteint souvent les vraies pages en un clic.
robots_disallowed`robots.txt` interdit ce chemin à notre robot.Aucune action possible : nous le respectons. Associez une URL différente.
too_largeLe corps de la page a dépassé la limite de taille lors de la lecture.Associez une page moins volumineuse.
blocked_hostL'URL a été résolue vers une adresse privée, interne ou de métadonnées cloud.Aucune action possible : refusé pour des raisons de sécurité. Associez une URL publique.
internal_errorLe job d'exploration lui-même a échoué. Il s'agit d'une erreur de notre côté, non du site.Aucune action nécessaire : le passage est replanifié automatiquement.

Limites

Dix liens par agent. Un crawl en mode `site` lit jusqu'à 50 pages, sur trois niveaux de profondeur, et s'arrête après dix minutes. Une page individuelle est lue jusqu'à 5 Mo. Le robot s'identifie, respecte `robots.txt` y compris `Crawl-delay`, et effectue une requête à la fois par hôte avec une pause entre chacune. Il lit le site d'un tiers, il ne le soumet pas à un test de charge. Ces paramètres sont identiques pour tous les comptes et ne sont pas configurables.

Suivant

Les liens de référence et les fichiers téléversés aboutissent au même endroit. Voir la base de connaissances pour en savoir plus sur ce qui arrive à un document une fois en service, et sur la façon dont la récupération l'utilise.