Compétence d'ingestion de source
Utilisez cette compétence pour des collections bornées telles que des canaux de discussion, des flux de tickets, des fils d'actualité ou des boîtes aux lettres où des exécutions ultérieures peuvent chevaucher une couverture antérieure. Lisez les conventions partagées, la publication et le protocole de manifeste. Après l'acquisition, acheminez les documents et conversations via knowledge-ingest, qui utilise knowledge-entities pour l'enrichissement des entités. Acheminez les réunions via knowledge-meeting-ingest. Cette compétence possède l'identité et la couverture de la source ; les flux de travail d'ingestion transforment le contenu conservé en connaissances connectées utiles. Pour créer des travaux d'ingestion récurrents, utilisez d'abord knowledge-automation.
Contrat
- Résolvez une clé fournisseur/source stable avant de lire le contenu. Les étiquettes d'affichage sont des libellés, jamais une identité.
- Maintenez une page
sourcecanonique unique avecsource_role: canonical,provideretsource_key. Réutilisez-la à chaque exécution. - Pour chaque observation bornée, conservez le manifeste généré en tant que pièce jointe sur une page
sourceavecsource_role: snapshot, couverture exacte, heure d'observation, hachage du manifeste, nombre, exhaustivité, marqueur de progression (watermark) et dépendance vers la page source canonique. - Les manifestes conservent des identifiants d'élément stables et des hachages de contenu, pas le texte source. Conservez le contenu original/exporté séparément comme preuve lorsque cela est autorisé.
- Interrogez les pages d'instantanés précédentes pour la même clé fournisseur/source avant de planifier. Téléchargez leurs manifestes, vérifiez les hachages des pièces jointes et transmettez tous les instantanés qui se chevauchent au planificateur. Ne vous fiez pas à la mémoire de la conversation.
- Réutilisez les octets source inchangés et les enregistrements existants. Continuez l'enrichissement précédemment omis à partir de ces sources conservées lorsque cela est demandé ; un manifeste inchangé ne signifie pas que l'enrichissement des entités a déjà eu lieu. Ingérez les éléments ajoutés. Réconciliez les éléments modifiés avec les pages/déclarations existantes. Considérez la suppression comme un état source observé, pas une autorisation à effacer Knowledge ; corrigez ou retirez uniquement lorsque les preuves le justifient.
- Un instantané complet peut établir une absence dans sa couverture exacte. Les instantanés partiels ou inconnus ne le peuvent pas ; les identifiants manquants non résolus restent non résolus.
Procédure
- Inspectez
knowledge_statusetknowledge_ontologypour la portée prévue du coffre (vault) et les champssource, puis recherchez dans Knowledge la source canonique et les instantanés antérieurs par clé fournisseur/source. Si une ingestion privée au propriétaire se résout de manière inattendue en une portée de conversation ou un coffre vide après un redémarrage, arrêtez-vous avant d'écrire et restaurez la portée autorisée prévue ; n'inférez jamais que la couverture antérieure est absente de la mauvaise portée. - Acquérez une exportation bornée avec un lecteur approuvé. Pour Discrawl, exécutez
scripts/discrawl-normalize.mjsavec son archive en lecture seule configurée, l'ID de canal exact lorsqu'il est connu, et les bornes RFC3339[since,before). Le payload normalisé inclut des ID d'auteur stables ainsi que des champs d'affichage observés dans l'archive. Conservez le JSONL brut et créez une transcription lisible ligne par ligne séparée lorsque la relecture humaine ou les citations de ligne sont nécessaires. - Générez un manifeste déterministe avec
scripts/source-manifest.mjs snapshot. Attachez-le avant de publier la page d'instantané ; enregistrez le SHA-256 renvoyé. - Téléchargez tous les manifestes antérieurs qui se chevauchent et exécutez
scripts/source-manifest.mjs plan. Inspectez les intervalles couverts/non couverts et les listes ajouté/modifié/supprimé/inchangé/non résolu. - Testez 3 à 5 éléments ou discussions substantiels, puis ingérez via
knowledge-ingest(ouknowledge-meeting-ingestpour les réunions). Pour les discussions, regroupez les messages associés avec leur contexte de réponse ; utilisezknowledge-entitiespour enrichir les personnes, entreprises, projets et concepts pertinents à partir de leurs contributions. Reportez les développements pris en charge dans l'État (State), des chronologies datées et des rétroliens contextuels, pas seulement un résumé de canal. Utilisez des ID externes stables dans les citations de source et l'instantané conservé comme dépendance. Réutilisez ses originaux plutôt que de télécharger une copie par discussion. - Publiez ou mettez à jour les enregistrements dérivés, puis publiez la page d'instantané. Un instantané est
completeuniquement lorsque l'acquisition et la création du manifeste ont couvert l'intervalle déclaré ; l'extraction dérivée peut encore être partielle et doit être signalée comme telle. - Relisez la page canonique, la page d'instantané, la pièce jointe, les enregistrements dérivés et les connexions dépendantes de la source. Vérifiez les hachages et la couverture exacte.
Exemple Discrawl
node scripts/discrawl-normalize.mjs --config /approved/discrawl.yaml \
--channel 1234567890 --since 2026-09-21T00:00:00-07:00 \
--before 2026-09-28T00:00:00-07:00 --output messages.jsonl
node scripts/source-manifest.mjs snapshot --provider discord \
--source-key discord:GUILD_ID:1234567890 \
--coverage-start 2026-09-21T00:00:00-07:00 \
--coverage-end 2026-09-28T00:00:00-07:00 \
--input messages.jsonl --output manifest.jsonl.gz --summary snapshot.json
node scripts/source-manifest.mjs plan --current manifest.jsonl.gz \
--previous prior-1.jsonl.gz --previous prior-2.jsonl.gz --output plan.json
N'incluez pas d'identifiants, de chemins d'archive ou de contenu brut privé dans le texte des pages Knowledge. Aucun planificateur, démon de connecteur ou tâche d'ingestion appartenant à un plugin n'est créé ; la compétence et les scripts prennent en charge un flux de travail exécuté par un agent autorisé.