Skip to main content

Պլանավորված առաջադրանքների API

@grant CAT.agent.task

Պլանավորված առաջադրանքների API-ն թույլ է տալիս սկրիպտին ստեղծել Cron արտահայտության վրա հիմնված պլանավորված առաջադրանքներ՝ երկու գործարկման ռեժիմով:

Գործարկման ռեժիմներ

Ներքին ռեժիմ

Կառավարվում է ավտոմատ կերպով Agent համակարգի կողմից՝

  • Ավտոմատ կերպով ստեղծում կամ վերսկսում է զրույց, երբ Cron ժամանակացույցը գործարկվում է
  • Ուղարկում է կարգավորված prompt-ը LLM-ին
  • Կարող է նշվել մոդել և Skills
  • Գործարկման պատմությունը և token օգտագործումը գրանցվում են ավտոմատ կերպով

Իրադարձությունների ռեժիմ

Կառավարվում է հենց սկրիպտի կողմից՝

  • Իրադարձության ծանուցում է ուղարկվում սկրիպտին, երբ Cron ժամանակացույցը գործարկվում է
  • Սկրիպտը լսում է իրադարձությունը addListener-ի միջոցով
  • Մշակման տրամաբանությունը լիովին կաստոմ է

create — առաջադրանքի ստեղծում

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

Պարամետրեր (AgentTaskCreateOptions):

ՊարամետրՏիպՊարտադիրՆկարագրություն
namestringԱյոԱռաջադրանքի անուն
crontabstringԱյոՍտանդարտ Cron արտահայտություն (5 դաշտ. րոպե ժամ օր ամիս շաբաթվա օր)
mode"internal" | "event"ԱյոԳործարկման ռեժիմ
enabledbooleanՈչԱրդյոք միացված է, լռելյայն՝ true
notifybooleanՈչԱրդյոք զննարկչի ծանուցում ուղարկել գործարկման ժամանակ
promptstringՈչՊրոմպտ ներքին ռեժիմի համար
modelIdstringՈչՆերքին ռեժիմում օգտագործվող մոդելի ID
skillsstring[]ՈչՆերքին ռեժիմում բեռնվող Skills
maxIterationsnumberՈչՆերքին ռեժիմի գործիք-կանչերի առավելագույն փուլեր, լռելյայն՝ 10

Վերադարձնում է AgentTask՝

ԴաշտՏիպՆկարագրություն
idstringԱռաջադրանքի ID
namestringԱռաջադրանքի անուն
crontabstringCron արտահայտություն
modestringԳործարկման ռեժիմ
enabledbooleanԱրդյոք միացված է
notifybooleanԱրդյոք ծանուցումներ են ուղարկվում
nextruntimenumberՀաջորդ գործարկման ժամանակի դրոշմ
lastruntimenumberՎերջին գործարկման ժամանակի դրոշմ
conversationIdstringԿապակցված զրույցի ID ներքին ռեժիմում (կամընտիր)
lastRunStatus"success" | "error"Վերջին գործարկման կարգավիճակ
lastRunErrorstringՎերջին գործարկման սխալի հաղորդագրություն
createtimenumberՍտեղծման ժամանակի դրոշմ

Cron արտահայտության օրինակներ՝

ԱրտահայտությունՆկարագրություն
* * * * *Ամեն րոպե
0 9 * * *Ամեն օր 09:00-ին
0 */2 * * *Ամեն 2 ժամը մեկ
30 8 * * 1-5Աշխատանքային օրերին 08:30-ին
0 0 1 * *Ամեն ամսվա 1-ին 00:00-ին

list — ցուցակագրել բոլոր առաջադրանքները

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

Վերադարձնում է ընթացիկ սկրիպտի կողմից ստեղծված բոլոր առաջադրանքները:

get — ստանալ առաջադրանքի մանրամասներ

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

Վերադարձնում է undefined, եթե առաջադրանքը գոյություն չունի:

update — թարմացնել առաջադրանքը

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

Թարմացվող դաշտեր՝

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

nextruntime-ը ավտոմատ կերպով վերահաշվարկվում է թարմացումից հետո:

remove — առաջադրանքի ջնջում

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

runNow — անմիջապես գործարկել

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

Հրահրում է առաջադրանքի գործարկումը մեկ անգամ անմիջապես՝ առանց դրա Cron ժամանակացույցին սպասելու (ոչ արգելափակող, գործարկվում է ֆոնում):

addListener — լսել առաջադրանքի գործարկումները

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

Օգտագործվում է միայն իրադարձությունների ռեժիմի առաջադրանքների համար: Կոլբեքը գործարկվում է, երբ Cron ժամանակացույցը գործարկվում է:

Կոլբեքի պարամետր (AgentTaskTrigger):

ԴաշտՏիպՆկարագրություն
taskIdstringԱռաջադրանքի ID
namestringԱռաջադրանքի անուն
crontabstringCron արտահայտություն
triggeredAtnumberԳործարկման ժամանակի դրոշմ

removeListener — լսողի հեռացում

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

Ամբողջական օրինակներ

Ներքին ռեժիմ — AI-ն գործարկում է այն ավտոմատ կերպով

// ==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));

Իրադարձությունների ռեժիմ — սկրիպտը մշակում է այն ինքը

// ==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");
});