Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

openclaw cron

จัดการงาน Cron สำหรับตัวจัดกำหนดการของ Gateway
เรียกใช้ openclaw cron --help เพื่อดูพื้นผิวคำสั่งทั้งหมด ดู งาน Cron สำหรับคู่มือแนวคิด

เซสชัน

--session รับค่า main, isolated, current หรือ session:<id>
  • main ผูกกับเซสชันหลักของเอเจนต์
  • isolated สร้างทรานสคริปต์และรหัสเซสชันใหม่สำหรับการรันแต่ละครั้ง
  • current ผูกกับเซสชันที่ใช้งานอยู่ ณ เวลาสร้าง
  • session:<id> ตรึงกับคีย์เซสชันถาวรที่ระบุอย่างชัดเจน
การรันแบบแยกจะรีเซ็ตบริบทการสนทนารอบข้าง การกำหนดเส้นทางช่องทางและกลุ่ม นโยบายส่ง/เข้าคิว การยกระดับ ต้นทาง และการผูกกับรันไทม์ ACP จะถูกรีเซ็ตสำหรับการรันใหม่ ค่ากำหนดที่ปลอดภัยและโมเดลที่ผู้ใช้เลือกอย่างชัดเจนหรือการแทนที่การยืนยันตัวตนสามารถส่งต่อข้ามการรันได้

การส่งมอบ

openclaw cron list และ openclaw cron show <job-id> แสดงตัวอย่างเส้นทางการส่งมอบที่แก้ค่าแล้ว สำหรับ channel: "last" ตัวอย่างจะแสดงว่าเส้นทางแก้ค่าจากเซสชันหลักหรือเซสชันปัจจุบัน หรือจะล้มเหลวแบบปิด เป้าหมายที่มีคำนำหน้าผู้ให้บริการช่วยแยกแยะช่องประกาศที่ยังแก้ค่าไม่ได้ ตัวอย่างเช่น to: "telegram:123" เลือก Telegram เมื่อ delivery.channel ถูกละไว้หรือเป็น last เฉพาะคำนำหน้าที่ Plugin ที่โหลดโฆษณาไว้เท่านั้นที่เป็นตัวเลือกผู้ให้บริการ หาก delivery.channel ระบุอย่างชัดเจน คำนำหน้าต้องตรงกับช่องนั้น channel: "whatsapp" กับ to: "telegram:123" จะถูกปฏิเสธ คำนำหน้าบริการ เช่น imessage: และ sms: ยังคงเป็นไวยากรณ์เป้าหมายที่ช่องเป็นเจ้าของ
งาน cron add แบบแยกมีค่าเริ่มต้นเป็นการส่งมอบแบบ --announce ใช้ --no-deliver เพื่อเก็บเอาต์พุตไว้ภายใน --deliver ยังคงอยู่ในฐานะนามแฝงที่เลิกใช้แล้วของ --announce

ความเป็นเจ้าของการส่งมอบ

การส่งมอบแชท Cron แบบแยกเป็นความรับผิดชอบร่วมกันระหว่างเอเจนต์และตัวรัน:
  • เอเจนต์สามารถส่งได้โดยตรงโดยใช้เครื่องมือ message เมื่อมีเส้นทางแชทพร้อมใช้งาน
  • announce ส่งมอบสำรองสำหรับคำตอบสุดท้ายเฉพาะเมื่อเอเจนต์ไม่ได้ส่งโดยตรงไปยังเป้าหมายที่แก้ค่าแล้ว
  • webhook โพสต์เพย์โหลดที่เสร็จแล้วไปยัง URL
  • none ปิดการส่งมอบสำรองของตัวรัน
--announce คือการส่งมอบสำรองของตัวรันสำหรับคำตอบสุดท้าย --no-deliver ปิดการสำรองนั้น แต่ไม่ลบเครื่องมือ message ของเอเจนต์เมื่อมีเส้นทางแชทพร้อมใช้งาน การแจ้งเตือนที่สร้างจากแชทที่ใช้งานอยู่จะคงเป้าหมายการส่งมอบแชทสดไว้สำหรับการส่งมอบประกาศสำรอง คีย์เซสชันภายในอาจเป็นตัวพิมพ์เล็ก อย่าใช้คีย์เหล่านั้นเป็นแหล่งความจริงสำหรับรหัสผู้ให้บริการที่แยกแยะตัวพิมพ์เล็กใหญ่ เช่น รหัสห้อง Matrix

การส่งมอบเมื่อเกิดข้อผิดพลาด

การแจ้งเตือนข้อผิดพลาดจะถูกแก้ค่าตามลำดับนี้:
  1. delivery.failureDestination ในงาน
  2. cron.failureDestination ส่วนกลาง
  3. เป้าหมายประกาศหลักของงาน (เมื่อไม่ได้ตั้งค่าปลายทางข้อผิดพลาดไว้อย่างชัดเจน)
งานเซสชันหลักใช้ delivery.failureDestination ได้เฉพาะเมื่อโหมดการส่งมอบหลักเป็น webhook งานแบบแยกรับค่านี้ได้ในทุกโหมด
หมายเหตุ: การรัน Cron แบบแยกจะถือว่าความล้มเหลวของเอเจนต์ระดับการรันเป็นข้อผิดพลาดของงาน แม้เมื่อ ไม่มีการสร้างเพย์โหลดคำตอบ ดังนั้นความล้มเหลวของโมเดล/ผู้ให้บริการยังคงเพิ่มตัวนับข้อผิดพลาด และทริกเกอร์การแจ้งเตือนข้อผิดพลาด หากการรันแบบแยกหมดเวลาก่อนคำขอโมเดลแรก openclaw cron show และ openclaw cron runs จะรวมข้อผิดพลาดเฉพาะเฟส เช่น setup timed out before runner start หรือ stalled before first model call (last phase: context-engine) สำหรับผู้ให้บริการที่อิง CLI ตัวเฝ้าระวังก่อนโมเดลจะยังทำงานอยู่จนกว่าเทิร์น CLI ภายนอก จะเริ่มต้น ดังนั้นการติดขัดของการค้นหาเซสชัน hook การยืนยันตัวตน prompt และการตั้งค่า CLI จะถูกรายงานเป็นความล้มเหลวของ Cron ก่อนโมเดล

การจัดกำหนดการ

งานครั้งเดียว

--at <datetime> จัดกำหนดการการรันครั้งเดียว วันที่เวลาแบบไม่มีออฟเซ็ตจะถูกถือเป็น UTC เว้นแต่คุณจะส่ง --tz <iana> ด้วย ซึ่งจะตีความเวลาตามนาฬิกาในเขตเวลาที่กำหนด
งานครั้งเดียวจะลบตัวเองหลังสำเร็จโดยค่าเริ่มต้น ใช้ --keep-after-run เพื่อเก็บไว้

งานที่เกิดซ้ำ

งานที่เกิดซ้ำใช้การหน่วงเวลาลองใหม่แบบเอ็กซ์โพเนนเชียลหลังเกิดข้อผิดพลาดติดต่อกัน: 30 วินาที, 1 นาที, 5 นาที, 15 นาที, 60 นาที กำหนดการจะกลับสู่ปกติหลังการรันครั้งถัดไปสำเร็จ การรันที่ถูกข้ามจะถูกติดตามแยกจากข้อผิดพลาดการดำเนินการ การรันเหล่านั้นไม่ส่งผลต่อการหน่วงเวลาลองใหม่ แต่ openclaw cron edit <job-id> --failure-alert-include-skipped สามารถเลือกให้การแจ้งเตือนข้อผิดพลาดรวมการแจ้งเตือนการรันที่ถูกข้ามซ้ำได้ สำหรับงานแบบแยกที่กำหนดเป้าหมายไปยังผู้ให้บริการโมเดลที่กำหนดค่าไว้ในเครื่อง Cron จะรันการตรวจสอบล่วงหน้าผู้ให้บริการแบบเบาก่อนเริ่มเทิร์นเอเจนต์ ผู้ให้บริการ api: "ollama" แบบ Loopback, เครือข่ายส่วนตัว และ .local จะถูกตรวจที่ /api/tags; ผู้ให้บริการที่เข้ากันได้กับ OpenAI ในเครื่อง เช่น vLLM, SGLang และ LM Studio จะถูกตรวจที่ /models หากปลายทางเข้าถึงไม่ได้ การรันจะถูกบันทึกเป็น skipped และลองใหม่ในกำหนดการภายหลัง ปลายทางที่ตายและตรงกันจะถูกแคชไว้ 5 นาทีเพื่อหลีกเลี่ยงไม่ให้งานจำนวนมากกระหน่ำเซิร์ฟเวอร์ภายในเครื่องเดียวกัน หมายเหตุ: คำนิยามงาน Cron อยู่ใน jobs.json ส่วนสถานะรันไทม์ที่รอดำเนินการอยู่ใน jobs-state.json หาก jobs.json ถูกแก้ไขจากภายนอก Gateway จะโหลดกำหนดการที่เปลี่ยนใหม่และล้างสล็อตที่รอดำเนินการที่ล้าสมัย การเขียนใหม่ที่เปลี่ยนเฉพาะการจัดรูปแบบจะไม่ล้างสล็อตที่รอดำเนินการ

การรันด้วยตนเอง

openclaw cron run ส่งคืนทันทีเมื่อการรันด้วยตนเองถูกเข้าคิวแล้ว การตอบกลับที่สำเร็จจะรวม { ok: true, enqueued: true, runId } ใช้ openclaw cron runs --id <job-id> เพื่อติดตามผลลัพธ์สุดท้าย
openclaw cron run <job-id> บังคับรันโดยค่าเริ่มต้น ใช้ --due เพื่อคงพฤติกรรมเก่า “รันเฉพาะเมื่อถึงกำหนด” ไว้

โมเดล

cron add|edit --model <ref> เลือกโมเดลที่อนุญาตสำหรับงาน
หากโมเดลไม่ได้รับอนุญาตหรือแก้ค่าไม่ได้ Cron จะทำให้การรันล้มเหลวพร้อมข้อผิดพลาดการตรวจสอบความถูกต้องที่ชัดเจน แทนที่จะถอยกลับไปใช้การเลือกโมเดลของเอเจนต์ของงานหรือโมเดลเริ่มต้น
Cron --model เป็น ค่าหลักของงาน ไม่ใช่การแทนที่ /model ของเซสชันแชท ซึ่งหมายความว่า:
  • การถอยกลับของโมเดลที่กำหนดค่าไว้ยังคงมีผลเมื่อโมเดลงานที่เลือกไว้ล้มเหลว
  • fallbacks ในเพย์โหลดรายงานจะแทนที่รายการถอยกลับที่กำหนดค่าไว้เมื่อมีอยู่
  • รายการถอยกลับรายงานที่ว่างเปล่า (fallbacks: [] ในเพย์โหลด/API ของงาน) ทำให้การรัน Cron เข้มงวด
  • เมื่องานมี --model แต่ไม่ได้กำหนดค่ารายการถอยกลับ OpenClaw จะส่งการแทนที่การถอยกลับว่างเปล่าอย่างชัดเจน เพื่อไม่ให้ค่าหลักของเอเจนต์ถูกต่อท้ายเป็นเป้าหมายลองใหม่ที่ซ่อนอยู่

ลำดับความสำคัญของโมเดล Cron แบบแยก

Cron แบบแยกแก้ค่าโมเดลที่ใช้งานอยู่ตามลำดับนี้:
  1. การแทนที่จาก Gmail-hook
  2. --model รายงาน
  3. การแทนที่โมเดลของเซสชัน Cron ที่จัดเก็บไว้ (เมื่อผู้ใช้เลือกไว้)
  4. การเลือกโมเดลของเอเจนต์หรือโมเดลเริ่มต้น

โหมดเร็ว

โหมดเร็วของ Cron แบบแยกจะตามการเลือกโมเดลสดที่แก้ค่าแล้ว การกำหนดค่าโมเดล params.fastMode มีผลโดยค่าเริ่มต้น แต่การแทนที่ fastMode ของเซสชันที่จัดเก็บไว้ยังคงชนะการกำหนดค่า

การลองใหม่เมื่อสลับโมเดลสด

หากการรันแบบแยกโยน LiveSessionModelSwitchError Cron จะคงผู้ให้บริการและโมเดลที่สลับแล้ว (และการแทนที่โปรไฟล์การยืนยันตัวตนที่สลับแล้วเมื่อมี) สำหรับการรันที่ใช้งานอยู่ก่อนลองใหม่ วงรอบการลองใหม่ด้านนอกถูกจำกัดไว้ที่การลองใหม่จากการสลับสองครั้งหลังความพยายามแรก จากนั้นจะยกเลิกแทนที่จะวนซ้ำตลอดไป

เอาต์พุตการรันและการปฏิเสธ

การระงับการตอบรับที่ล้าสมัย

เทิร์น Cron แบบแยกจะระงับคำตอบที่เป็นเพียงการตอบรับล้าสมัย หากผลลัพธ์แรกเป็นเพียงการอัปเดตสถานะชั่วคราวและไม่มีการรันซับเอเจนต์สืบทอดที่รับผิดชอบคำตอบสุดท้าย Cron จะ prompt ซ้ำหนึ่งครั้งเพื่อขอผลลัพธ์จริงก่อนส่งมอบ

การระงับโทเค็นเงียบ

หากการรัน Cron แบบแยกส่งคืนเฉพาะโทเค็นเงียบ (NO_REPLY หรือ no_reply) Cron จะระงับทั้งการส่งออกโดยตรงและเส้นทางสรุปที่เข้าคิวสำรอง ดังนั้นจะไม่มีสิ่งใดถูกโพสต์กลับไปยังแชท

การปฏิเสธแบบมีโครงสร้าง

การรัน Cron แบบแยกต้องการเมทาดาทาการปฏิเสธการดำเนินการแบบมีโครงสร้างจากการรันที่ฝังอยู่ก่อน จากนั้นจึงถอยกลับไปใช้ตัวบ่งชี้การปฏิเสธที่รู้จักในเอาต์พุตสุดท้าย เช่น SYSTEM_RUN_DENIED, INVALID_REQUEST และวลีปฏิเสธการผูกกับการอนุมัติ cron list และประวัติการรันจะแสดงเหตุผลการปฏิเสธแทนการรายงานคำสั่งที่ถูกบล็อกเป็น ok

การเก็บรักษา

การเก็บรักษาและการตัดทอนถูกควบคุมใน config:
  • cron.sessionRetention (ค่าเริ่มต้น 24h) ตัดทอนเซสชันการรันแบบแยกที่เสร็จแล้ว
  • cron.runLog.maxBytes และ cron.runLog.keepLines ตัดทอน ~/.openclaw/cron/runs/<jobId>.jsonl

การย้ายงานเก่า

หากคุณมีงาน Cron จากก่อนรูปแบบการส่งมอบและที่เก็บปัจจุบัน ให้รัน openclaw doctor --fix Doctor จะทำให้ฟิลด์ Cron เดิมเป็นมาตรฐาน (jobId, schedule.cron, ฟิลด์การส่งมอบระดับบนรวมถึง threadId เดิม, นามแฝงการส่งมอบ provider ของเพย์โหลด) และย้ายงาน Webhook สำรองแบบง่าย notify: true ไปเป็นการส่งมอบ Webhook ที่ชัดเจนเมื่อกำหนดค่า cron.webhook ไว้

การแก้ไขทั่วไป

อัปเดตการตั้งค่าการส่งมอบโดยไม่เปลี่ยนข้อความ:
openclaw cron edit <job-id> --announce --channel telegram --to "123456789"
ปิดการส่งมอบสำหรับงานแบบแยก:
openclaw cron edit <job-id> --no-deliver
เปิดใช้บริบทบูตสแตรปแบบเบาสำหรับงานแบบแยก:
openclaw cron edit <job-id> --light-context
ประกาศไปยังช่องที่ระบุ:
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
ประกาศไปยังหัวข้อฟอรัม Telegram:
openclaw cron edit <job-id> --announce --channel telegram --to "-1001234567890" --thread-id 42
สร้างงานแบบแยกพร้อมบริบทบูตสแตรปแบบเบา:
openclaw cron add \
  --name "Lightweight morning brief" \
  --cron "0 7 * * *" \
  --session isolated \
  --message "Summarize overnight updates." \
  --light-context \
  --no-deliver
--light-context ใช้กับงานเทิร์นเอเจนต์แบบแยกเท่านั้น สำหรับการรัน Cron โหมดเบาจะเก็บบริบทบูตสแตรปให้ว่างเปล่าแทนการฉีดชุดบูตสแตรปเวิร์กสเปซทั้งหมด

คำสั่งผู้ดูแลทั่วไป

การรันด้วยตนเองและการตรวจสอบ:
openclaw cron list
openclaw cron list --agent ops
openclaw cron get <job-id>
openclaw cron show <job-id>
openclaw cron run <job-id>
openclaw cron run <job-id> --due
openclaw cron runs --id <job-id> --limit 50
openclaw cron list แสดงงานที่ตรงกันทั้งหมดโดยค่าเริ่มต้น ส่ง --agent <id> เพื่อแสดงเฉพาะงานที่รหัสเอเจนต์ที่ปรับเป็นมาตรฐานและมีผลตรงกัน งานที่ไม่มีรหัสเอเจนต์ที่จัดเก็บไว้จะนับเป็นเอเจนต์เริ่มต้นที่กำหนดค่าไว้ openclaw cron get <job-id> ส่งคืน JSON งานที่จัดเก็บไว้โดยตรง ใช้ cron show <job-id> เมื่อคุณต้องการมุมมองที่มนุษย์อ่านได้พร้อมตัวอย่างเส้นทางการส่งมอบ cron list --json และ cron show <job-id> --json รวมฟิลด์ status ระดับบนในแต่ละงาน ซึ่งคำนวณจาก enabled, state.runningAtMs และ state.lastRunStatus ค่า: disabled, running, ok, error, skipped หรือ idle สิ่งนี้สะท้อนคอลัมน์สถานะที่มนุษย์อ่านได้ เพื่อให้เครื่องมือภายนอกอ่านสถานะงานได้โดยไม่ต้องคำนวณใหม่ รายการ cron runs รวมการวินิจฉัยการส่งมอบพร้อมเป้าหมาย Cron ที่ตั้งใจไว้ เป้าหมายที่แก้ค่าแล้ว การส่งด้วยเครื่องมือ message การใช้การสำรอง และสถานะการส่งมอบ การกำหนดเป้าหมายเอเจนต์และเซสชันใหม่:
openclaw cron edit <job-id> --agent ops
openclaw cron edit <job-id> --clear-agent
openclaw cron edit <job-id> --session current
openclaw cron edit <job-id> --session "session:daily-brief"
openclaw cron add เตือนเมื่อ --agent ถูกละไว้ในงานเทิร์นเอเจนต์และถอยกลับไปใช้เอเจนต์เริ่มต้น (main) ส่ง --agent <id> ตอนสร้างเพื่อตรึงเอเจนต์เฉพาะ การปรับแต่งการส่งมอบ:
openclaw cron edit <job-id> --announce --channel slack --to "channel:C1234567890"
openclaw cron edit <job-id> --best-effort-deliver
openclaw cron edit <job-id> --no-best-effort-deliver
openclaw cron edit <job-id> --no-deliver

ที่เกี่ยวข้อง