Aller au contenu principal

API de tâches planifiées

@grant CAT.agent.task

L'API de tâches planifiées permet à un script de créer des tâches planifiées basées sur des expressions Cron, avec deux modes d'exécution.

Modes d'exécution

Mode interne

Géré automatiquement par le système Agent :

  • Crée ou reprend automatiquement une conversation lorsque le déclencheur Cron se produit
  • Envoie le prompt configuré au LLM
  • Un modèle et des Skills peuvent être spécifiés
  • L'historique d'exécution et la consommation de jetons sont enregistrés automatiquement

Mode événement

Géré par le script lui-même :

  • Une notification d'événement est envoyée au script lorsque le déclencheur Cron se produit
  • Le script écoute l'événement via addListener
  • La logique de traitement est entièrement personnalisée

create — créer une tâche

const task = await CAT.agent.task.create(options);

Paramètres (AgentTaskCreateOptions) :

ParamètreTypeObligatoireDescription
namestringOuiNom de la tâche
crontabstringOuiExpression Cron standard (5 champs : minute heure jour mois jour de la semaine)
mode"internal" | "event"OuiMode d'exécution
enabledbooleanNonIndique si elle est activée, défaut : true
notifybooleanNonIndique si une notification du navigateur est envoyée lors du déclenchement
promptstringNonInvite pour le mode interne
modelIdstringNonID du modèle à utiliser en mode interne
skillsstring[]NonSkills à charger en mode interne
maxIterationsnumberNonNombre maximal de tours d'appels d'outils pour le mode interne, défaut : 10

Retourne AgentTask :

ChampTypeDescription
idstringID de la tâche
namestringNom de la tâche
crontabstringExpression Cron
modestringMode d'exécution
enabledbooleanIndique si elle est activée
notifybooleanIndique si des notifications sont envoyées
nextruntimenumberHorodatage de la prochaine exécution
lastruntimenumberHorodatage de la dernière exécution
conversationIdstringID de conversation associé en mode interne (facultatif)
lastRunStatus"success" | "error"Statut de la dernière exécution
lastRunErrorstringMessage d'erreur de la dernière exécution
createtimenumberHorodatage de création

Exemples d'expressions Cron :

ExpressionDescription
* * * * *Chaque minute
0 9 * * *Chaque jour à 09:00
0 */2 * * *Toutes les 2 heures
30 8 * * 1-5Jours ouvrés à 08:30
0 0 1 * *Le 1er de chaque mois à 00:00

list — lister toutes les tâches

const tasks = await CAT.agent.task.list();

Retourne toutes les tâches créées par le script courant.

get — obtenir les détails d'une tâche

const task = await CAT.agent.task.get(taskId);

Retourne undefined si la tâche n'existe pas.

update — mettre à jour une tâche

const task = await CAT.agent.task.update(taskId, partial);

Champs modifiables :

await CAT.agent.task.update(task.id, {
name: "New name",
crontab: "0 10 * * *",
enabled: false,
prompt: "New prompt",
notify: true
});

nextruntime est automatiquement recalculé après une mise à jour.

remove — supprimer une tâche

const success = await CAT.agent.task.remove(taskId);

runNow — exécuter immédiatement

await CAT.agent.task.runNow(taskId);

Déclenche l'exécution immédiate de la tâche une fois, sans attendre son planification Cron (non bloquant, s'exécute en arrière-plan).

addListener — écouter les déclencheurs de tâche

const listenerId = await CAT.agent.task.addListener(taskId, callback);

Utilisé uniquement pour les tâches en mode événement. Le rappel s'exécute lorsque le déclencheur Cron se produit.

Paramètre du rappel (AgentTaskTrigger) :

ChampTypeDescription
taskIdstringID de la tâche
namestringNom de la tâche
crontabstringExpression Cron
triggeredAtnumberHorodatage du déclenchement

removeListener — supprimer un écouteur

await CAT.agent.task.removeListener(listenerId);

Exemples complets

Mode interne — l'IA l'exécute automatiquement

// ==UserScript==
// @name Scheduled news digest
// @match *://*/*
// @grant CAT.agent.task
// ==/UserScript==

const task = await CAT.agent.task.create({
name: "Daily news digest",
crontab: "0 9 * * *", // Every day at 9
mode: "internal",
prompt: "Please search today's tech news and save a short summary to OPFS",
skills: ["web-search"],
maxIterations: 10,
notify: true
});

console.log("Task created, next run:", new Date(task.nextruntime));

Mode événement — le script le gère lui-même

// ==UserScript==
// @name Scheduled data collection
// @match *://*/*
// @grant CAT.agent.task
// @grant CAT.agent.dom
// ==/UserScript==

const task = await CAT.agent.task.create({
name: "Stock data collection",
crontab: "*/30 9-15 * * 1-5", // Every 30 minutes, 9-15 on weekdays
mode: "event",
enabled: true,
notify: false
});

await CAT.agent.task.addListener(task.id, async (trigger) => {
console.log(`Task triggered: ${trigger.name} at ${new Date(trigger.triggeredAt)}`);

// Custom collection logic
await CAT.agent.dom.navigate("https://finance.example.com/stock");
const content = await CAT.agent.dom.readPage({ selector: ".stock-table" });

// Process the data...
console.log("Collection complete");
});