Ga naar hoofdinhoud

API voor geplande taken

@grant CAT.agent.task

Met de API voor geplande taken kan een script geplande taken op basis van Cron-expressies maken, met twee uitvoeringsmodi.

Uitvoeringsmodi

Interne modus

Automatisch afgehandeld door het Agent-systeem:

  • Maakt automatisch een gesprek aan of hervat het wanneer het Cron-schema wordt geactiveerd
  • Verzendt de geconfigureerde prompt naar de LLM
  • Er kunnen een model en Skills worden gespecificeerd
  • Uitvoeringsgeschiedenis en tokenverbruik worden automatisch geregistreerd

Gebeurtenismodus

Afgehandeld door het script zelf:

  • Er wordt een gebeurtenismelding naar het script verzonden wanneer het Cron-schema wordt geactiveerd
  • Het script luistert naar de gebeurtenis via addListener
  • De afhandelingslogica is volledig aangepast

create — een taak maken

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

Parameters (AgentTaskCreateOptions):

ParameterTypeVereistBeschrijving
namestringJaTaaknaam
crontabstringJaStandaard Cron-expressie (5 velden: minuut uur dag maand weekdag)
mode"internal" | "event"JaUitvoeringsmodus
enabledbooleanNeeOf het is ingeschakeld, standaard true
notifybooleanNeeOf er een browsermelding wordt verzonden wanneer het wordt geactiveerd
promptstringNeePrompt voor de interne modus
modelIdstringNeeModel-ID om te gebruiken in de interne modus
skillsstring[]NeeSkills om te laden in de interne modus
maxIterationsnumberNeeMaximaal aantal toolaanroepronden voor de interne modus, standaard 10

Retourneert AgentTask:

VeldTypeBeschrijving
idstringTaak-ID
namestringTaaknaam
crontabstringCron-expressie
modestringUitvoeringsmodus
enabledbooleanOf het is ingeschakeld
notifybooleanOf meldingen worden verzonden
nextruntimenumberTijdstempel van volgende uitvoering
lastruntimenumberTijdstempel van laatste uitvoering
conversationIdstringBijbehorende gespreks-ID in de interne modus (optioneel)
lastRunStatus"success" | "error"Status van de laatste uitvoering
lastRunErrorstringFoutmelding van de laatste uitvoering
createtimenumberAanmaaktijdstempel

Voorbeelden van Cron-expressies:

ExpressieBeschrijving
* * * * *Elke minuut
0 9 * * *Elke dag om 09:00
0 */2 * * *Elke 2 uur
30 8 * * 1-5Weekdagen om 08:30
0 0 1 * *00:00 op de 1e van elke maand

list — alle taken weergeven

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

Retourneert alle taken die door het huidige script zijn gemaakt.

get — taakdetails ophalen

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

Retourneert undefined als de taak niet bestaat.

update — een taak bijwerken

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

Bij te werken velden:

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

nextruntime wordt automatisch opnieuw berekend na een update.

remove — een taak verwijderen

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

runNow — onmiddellijk uitvoeren

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

Laat de taak onmiddellijk één keer draaien, zonder te wachten op het Cron-schema (niet-blokkerend, draait op de achtergrond).

addListener — luisteren naar taaktriggers

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

Wordt alleen gebruikt voor taken in gebeurtenismodus. De callback wordt uitgevoerd wanneer het Cron-schema wordt geactiveerd.

Callback-parameter (AgentTaskTrigger):

VeldTypeBeschrijving
taskIdstringTaak-ID
namestringTaaknaam
crontabstringCron-expressie
triggeredAtnumberTriggetijdstempel

removeListener — een luisteraar verwijderen

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

Volledige voorbeelden

Interne modus — de AI voert het automatisch uit

// ==UserScript==
// @name Gepland nieuwsoverzicht
// @match *://*/*
// @grant CAT.agent.task
// ==/UserScript==

const task = await CAT.agent.task.create({
name: "Dagelijks nieuwsoverzicht",
crontab: "0 9 * * *", // Elke dag om 9 uur
mode: "internal",
prompt: "Zoek het technieuws van vandaag en sla een korte samenvatting op in OPFS",
skills: ["web-search"],
maxIterations: 10,
notify: true
});

console.log("Taak gemaakt, volgende uitvoering:", new Date(task.nextruntime));

Gebeurtenismodus — het script handelt het zelf af

// ==UserScript==
// @name Geplande gegevensverzameling
// @match *://*/*
// @grant CAT.agent.task
// @grant CAT.agent.dom
// ==/UserScript==

const task = await CAT.agent.task.create({
name: "Aandelengegevens verzamelen",
crontab: "*/30 9-15 * * 1-5", // Elke 30 minuten, 9-15 op weekdagen
mode: "event",
enabled: true,
notify: false
});

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

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

// Verwerk de gegevens...
console.log("Verzameling voltooid");
});