Yurak urishi (Gateway)¶
Heartbeat yoki Cron? Qaysi birini qachon ishlatish bo‘yicha yo‘riqnoma uchun Cron vs Heartbeat sahifasiga qarang.
Heartbeat asosiy sessiyada davriy agent yurishlarini ishga tushiradi, shunda model sizni bezovta qilmasdan e’tibor talab qiladigan narsalarni ko‘rsatib bera oladi.
Nosozliklarni aniqlash: /automation/troubleshooting
Tezkor boshlash (boshlovchilar uchun)¶
- Heartbeat’ni yoqilgan holda qoldiring (standart
30m, yoki Anthropic OAuth/setup-token uchun1h) yoki o‘zingiz interval belgilang. - Agent ish maydonida kichik
HEARTBEAT.mdcheklist yarating (ixtiyoriy, lekin tavsiya etiladi). - Heartbeat xabarlari qayerga yuborilishini belgilang (
target: "last"— standart). - Ixtiyoriy: shaffoflik uchun heartbeat reasoning yetkazilishini yoqing.
- Ixtiyoriy: heartbeat’ni faqat faol soatlar bilan cheklang (mahalliy vaqt).
Misol konfiguratsiya:
{
agents: {
defaults: {
heartbeat: {
every: "30m",
target: "last",
// activeHours: { start: "08:00", end: "24:00" },
// includeReasoning: true, // ixtiyoriy: alohida `Reasoning:` xabarini ham yuboradi
},
},
},
}
Standart sozlamalar¶
- Interval:
30m(yoki aniqlangan autentifikatsiya rejimi Anthropic OAuth/setup-token bo‘lsa1h).agents.defaults.heartbeat.everyyoki har bir agent uchunagents.list[].heartbeat.everyorqali sozlanadi; o‘chirish uchun0mqo‘ying. - Prompt matni (
agents.defaults.heartbeat.promptorqali sozlanadi):Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. - Heartbeat prompti o‘zgarishsiz (verbatim) foydalanuvchi xabari sifatida yuboriladi. System prompt ichida “Heartbeat” bo‘limi mavjud va ishga tushirish ichki tarzda belgilab qo‘yiladi.
- Faol soatlar (
heartbeat.activeHours) belgilangan vaqt zonasiga ko‘ra tekshiriladi. Oyna tashqarisida heartbeat’lar keyingi oynadagi tick’gacha o‘tkazib yuboriladi.
Heartbeat prompti nima uchun kerak¶
Standart prompt ataylab keng qamrovli:
- Fon vazifalari: “Consider outstanding tasks” agentni ochiq qolgan ishlarni (inbox, kalendar, eslatmalar, navbatdagi ishlar) ko‘rib chiqishga va shoshilinchlarini ko‘rsatishga undaydi.
- Inson bilan aloqa: “Checkup sometimes on your human during day time” vaqti-vaqti bilan yengil “sizga nimadir kerakmi?” xabarini yuborishga undaydi, lekin kechasi spam bo‘lmasligi uchun siz sozlagan mahalliy vaqt zonasidan foydalanadi (qarang: /concepts/timezone).
Agar heartbeat juda aniq bir ishni bajarishi kerak bo‘lsa (masalan, “Gmail PubSub statistikasini tekshir” yoki “gateway holatini tasdiqla”), agents.defaults.heartbeat.prompt (yoki agents.list[].heartbeat.prompt) ni maxsus matn bilan belgilang (o‘zgarishsiz yuboriladi).
Javob shartnomasi¶
- Agar e’tibor talab qiladigan narsa bo‘lmasa,
HEARTBEAT_OKbilan javob bering. - Heartbeat ishga tushirilganda, agar
HEARTBEAT_OKjavobning boshida yoki oxirida bo‘lsa, OpenClaw uni tasdiq (ack) sifatida qabul qiladi. Token olib tashlanadi va agar qolgan matn ≤ackMaxChars(standart: 300) bo‘lsa, javob yuborilmaydi. - Agar
HEARTBEAT_OKjavobning o‘rtasida bo‘lsa, u maxsus talqin qilinmaydi. - Ogohlantirishlar uchun
HEARTBEAT_OKni qo‘shmang; faqat ogohlantirish matnini qaytaring.
Heartbeat’dan tashqarida, xabar boshida/oxirida tasodifan kelgan HEARTBEAT_OK olib tashlanadi va log qilinadi; faqat HEARTBEAT_OK dan iborat xabar yuborilmaydi.
Config¶
{
agents: {
defaults: {
heartbeat: {
every: "30m", // standart: 30m (0m o‘chiradi)
model: "anthropic/claude-opus-4-6",
includeReasoning: false, // standart: false (mavjud bo‘lsa alohida Reasoning: xabar yuboradi)
target: "last", // last | none | <channel id> (core yoki plugin, masalan "bluebubbles")
to: "+15551234567", // ixtiyoriy kanalga xos override
accountId: "ops-bot", // ixtiyoriy multi-account kanal id
prompt: "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.",
ackMaxChars: 300, // HEARTBEAT_OK dan keyin ruxsat etilgan maksimal belgilar soni
},
},
},
}
Qamrov va ustuvorlik¶
agents.defaults.heartbeatglobal heartbeat xatti-harakatini belgilaydi.agents.list[].heartbeatustiga qo‘shiladi; agar biror agentdaheartbeatbloki bo‘lsa, faqat o‘sha agentlar heartbeat ishga tushiradi.channels.defaults.heartbeatbarcha kanallar uchun ko‘rinish standartlarini belgilaydi.channels.<channel>.heartbeatkanal standartlarini bekor qiladi.channels.<channel>.accounts.<id>.heartbeat(multi-account kanallar) kanal sozlamalarini bekor qiladi.
Har bir agent uchun heartbeat¶
Agar agents.list[] ichida biror element heartbeat blokiga ega bo‘lsa, faqat o‘sha agentlar heartbeat ishga tushiradi. Per-agent blok agents.defaults.heartbeat ustiga qo‘shiladi (umumiy standartlarni bir marta belgilab, agent bo‘yicha o‘zgartirishingiz mumkin).
Misol: ikki agent, faqat ikkinchi agent heartbeat ishga tushiradi.
{
agents: {
defaults: {
heartbeat: {
every: "30m",
target: "last",
},
},
list: [
{ id: "main", default: true },
{
id: "ops",
heartbeat: {
every: "1h",
target: "whatsapp",
to: "+15551234567",
prompt: "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.",
},
},
],
},
}
Faol soatlar misoli¶
Heartbeat’ni ma’lum vaqt zonasidagi ish soatlari bilan cheklash:
{
agents: {
defaults: {
heartbeat: {
every: "30m",
target: "last",
activeHours: {
start: "09:00",
end: "22:00",
timezone: "America/New_York", // ixtiyoriy; agar userTimezone o‘rnatilgan bo‘lsa o‘sha, aks holda host tz
},
},
},
},
}
Bu oraliqdan tashqarida (Sharqiy vaqt bilan 9:00 dan oldin yoki 22:00 dan keyin) heartbeat’lar o‘tkazib yuboriladi. Oyna ichidagi keyingi rejalashtirilgan tick odatdagidek ishlaydi.
Multi account misoli¶
Telegram kabi multi-account kanallarda ma’lum akkauntni tanlash uchun accountId dan foydalaning:
{
agents: {
list: [
{
id: "ops",
heartbeat: {
every: "1h",
target: "telegram",
to: "12345678",
accountId: "ops-bot",
},
},
],
},
channels: {
telegram: {
accounts: {
"ops-bot": { botToken: "YOUR_TELEGRAM_BOT_TOKEN" },
},
},
},
}
Maydonlar bo‘yicha izohlar¶
every: heartbeat intervali (davomiylik satri; standart birlik = daqiqa).model: heartbeat ishga tushirishlari uchun ixtiyoriy model override (provider/model).includeReasoning: yoqilganda, mavjud bo‘lsa alohidaReasoning:xabarini ham yuboradi (/reasoning onbilan bir xil format).session: heartbeat ishga tushirishlari uchun ixtiyoriy sessiya kaliti.main(standart): agentning asosiy sessiyasi.- Aniq sessiya kaliti (
openclaw sessions --jsonyoki sessions CLI orqali). - Sessiya kaliti formatlari: qarang Sessions va Groups.
target:last(standart): oxirgi ishlatilgan tashqi kanalga yuboradi.- aniq kanal:
whatsapp/telegram/discord/googlechat/slack/msteams/signal/imessage. none: heartbeat ishga tushadi, lekin tashqariga yuborilmaydi.to: ixtiyoriy qabul qiluvchi override (kanalga xos id, masalan WhatsApp uchun E.164 yoki Telegram chat id).accountId: multi-account kanallar uchun ixtiyoriy akkaunt id.target: "last"bo‘lsa, agar oxirgi kanal akkauntlarni qo‘llab-quvvatlasa qo‘llanadi; aks holda e’tiborga olinmaydi. Agar akkaunt id mos kelmasa, yuborish o‘tkazib yuboriladi.prompt: standart prompt matnini to‘liq almashtiradi (merge qilinmaydi).ackMaxChars:HEARTBEAT_OKdan keyin yuborishga ruxsat etilgan maksimal belgilar soni.activeHours: heartbeat ishga tushirishlarini vaqt oynasi bilan cheklaydi.start(HH:MM, inclusive),end(HH:MM exclusive;24:00ruxsat etiladi) va ixtiyoriytimezone.- Kiritilmagan yoki
"user": agar mavjud bo‘lsaagents.defaults.userTimezone, aks holda host tizim vaqt zonasi. "local": har doim host tizim vaqt zonasi.- Har qanday IANA identifikatori (masalan
America/New_York): bevosita ishlatiladi; noto‘g‘ri bo‘lsa"user"xatti-harakatiga qaytadi. - Faol oynadan tashqarida heartbeat’lar keyingi ichki tick’gacha o‘tkazib yuboriladi.
Yetkazish xatti-harakati¶
- Heartbeat odatda agentning asosiy sessiyasida ishlaydi (
agent:<id>:<mainKey>), yokisession.scope = "global"bo‘lsaglobal. Ma’lum kanal sessiyasiga o‘tkazish uchunsessionni sozlang (Discord/WhatsApp va hokazo). sessionfaqat ishga tushirish kontekstiga ta’sir qiladi; yuborishtargetvatoorqali boshqariladi.- Ma’lum kanal/qabul qiluvchiga yuborish uchun
target+toni sozlang.
target: "last"bo‘lsa, yuborish o‘sha sessiyaning oxirgi tashqi kanalidan foydalanadi. - Agar asosiy navbat band bo‘lsa, heartbeat o‘tkazib yuboriladi va keyinroq qayta urinadi.
- Agar
targettashqi manzilga mos kelmasa, ishga tushirish amalga oshadi, lekin tashqi xabar yuborilmaydi. - Faqat heartbeat javoblari sessiyani faol saqlab turmaydi; oxirgi
updatedAttiklanadi, shunda idle muddati odatdagidek ishlaydi.
Ko‘rinish boshqaruvlari¶
Standart bo‘yicha, HEARTBEAT_OK tasdiqlari yashiriladi, ogohlantirish mazmuni esa yuboriladi. Buni kanal yoki akkaunt bo‘yicha sozlashingiz mumkin:
channels:
defaults:
heartbeat:
showOk: false # HEARTBEAT_OK ni yashirish (standart)
showAlerts: true # Ogohlantirish xabarlarini ko‘rsatish (standart)
useIndicator: true # UI holat indikatorlarini yuborish (standart)
telegram:
heartbeat:
showOk: true # Telegram’da OK tasdiqlarini ko‘rsatish
whatsapp:
accounts:
work:
heartbeat:
showAlerts: false # Ushbu akkaunt uchun ogohlantirish yuborishni o‘chirish
Ustuvorlik: per-account → per-channel → kanal standartlari → ichki standartlar.
Har bir flag nima qiladi¶
showOk: model faqat OK javob qaytarsa,HEARTBEAT_OKtasdig‘ini yuboradi.showAlerts: model OK bo‘lmagan javob qaytarsa, ogohlantirish mazmunini yuboradi.useIndicator: UI holati uchun indikator hodisalarini yuboradi.
Agar uchalasi ham false bo‘lsa, OpenClaw heartbeat ishga tushirishni butunlay o‘tkazib yuboradi (model chaqirilmaydi).
Per-channel va per-account misollar¶
channels:
defaults:
heartbeat:
showOk: false
showAlerts: true
useIndicator: true
slack:
heartbeat:
showOk: true # barcha Slack akkauntlari
accounts:
ops:
heartbeat:
showAlerts: false # faqat ops akkaunti uchun ogohlantirishlarni o‘chirish
telegram:
heartbeat:
showOk: true
Keng tarqalgan andozalar¶
| Maqsad | Config |
|---|---|
| Standart xatti-harakat (OK yashirin, ogohlantirishlar yoqilgan) | (config talab qilinmaydi) |
| To‘liq jim (xabar yo‘q, indikator yo‘q) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false } |
| Faqat indikator (xabar yo‘q) | channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true } |
| Faqat bitta kanalda OK ko‘rsatish | channels.telegram.heartbeat: { showOk: true } |
HEARTBEAT.md (ixtiyoriy)¶
Agar ish maydonida HEARTBEAT.md fayli mavjud bo‘lsa, standart prompt agentga uni o‘qishni aytadi. Uni o‘zingizning “heartbeat cheklist”ingiz deb tasavvur qiling: kichik, barqaror va har 30 daqiqada qo‘shishga xavfsiz.
Agar HEARTBEAT.md mavjud bo‘lsa, lekin amalda bo‘sh bo‘lsa (faqat bo‘sh qatorlar va # Heading kabi markdown sarlavhalari), OpenClaw API chaqiruvlarini tejash uchun heartbeat’ni o‘tkazib yuboradi.
Agar fayl mavjud bo‘lmasa, heartbeat baribir ishlaydi va model nima qilishni o‘zi hal qiladi.
Prompt hajmi oshib ketmasligi uchun uni kichik saqlang (qisqa cheklist yoki eslatmalar).
Misol HEARTBEAT.md:
# Heartbeat checklist
- Quick scan: anything urgent in inboxes?
- If it’s daytime, do a lightweight check-in if nothing else is pending.
- If a task is blocked, write down _what is missing_ and ask Peter next time.
Agent HEARTBEAT.md ni yangilay oladimi?¶
Ha — agar siz undan so‘rasangiz.
HEARTBEAT.md agent ish maydonidagi oddiy fayl, shuning uchun oddiy chatda shunday deyishingiz mumkin:
- “
HEARTBEAT.mdga har kunlik kalendar tekshiruvini qo‘sh.” - “
HEARTBEAT.mdni qisqaroq qilib, inbox follow-up’lariga yo‘naltirib qayta yoz.”
Agar bu jarayon proaktiv bo‘lishini istasangiz, heartbeat promptiga shunday qatorda qo‘shishingiz mumkin: “Agar cheklist eskirsa, HEARTBEAT.md ni yaxshiroq variant bilan yangila.”
Xavfsizlik eslatmasi: maxfiy ma’lumotlarni (API kalitlari, telefon raqamlari, private tokenlar) HEARTBEAT.md ichiga qo‘ymang — u prompt kontekstining bir qismiga aylanadi.
Qo‘lda uyg‘otish (talab bo‘yicha)¶
Quyidagi buyruq bilan tizim hodisasini navbatga qo‘yib, darhol heartbeat ishga tushirishingiz mumkin:
openclaw system event --text "Check for urgent follow-ups" --mode now
Agar bir nechta agentda heartbeat sozlangan bo‘lsa, qo‘lda uyg‘otish ularning har birini darhol ishga tushiradi.
Keyingi rejalashtirilgan tick’ni kutish uchun --mode next-heartbeat dan foydalaning.
Reasoning yetkazish (ixtiyoriy)¶
Standart bo‘yicha, heartbeat faqat yakuniy “answer” yuklamasini yuboradi.
Shaffoflik kerak bo‘lsa, quyidagini yoqing:
agents.defaults.heartbeat.includeReasoning: true
Yoqilganda, heartbeat alohida Reasoning: prefiksli xabarni ham yuboradi (/reasoning on bilan bir xil format). Bu agent bir nechta sessiya/codex bilan ishlayotganda nega sizni ping qilganini ko‘rish uchun foydali bo‘lishi mumkin — lekin keragidan ortiq ichki tafsilotlarni ham oshkor qilishi mumkin. Guruh chatlarida o‘chiq holda qoldirish tavsiya etiladi.
Xarajatni hisobga olish¶
Heartbeat to‘liq agent yurishlarini bajaradi. Qisqaroq interval ko‘proq token sarflaydi.
HEARTBEAT.md ni kichik saqlang va agar faqat ichki holat yangilanishi kerak bo‘lsa, arzonroq model yoki target: "none" dan foydalanishni ko‘rib chiqing.