รันคำสั่งตามกำหนดเวลา
ใช้ /loop และ cron scheduling tools เพื่อรัน prompt ซ้ำ ๆ สำรวจสถานะ หรือตั้งการเตือนครั้งเดียวภายใน Claude Code session
หมายเหตุ: Scheduled tasks ต้องใช้ Claude Code v2.1.72 หรือใหม่กว่า ตรวจสอบเวอร์ชันด้วย
claude --version
Scheduled tasks ช่วยให้ Claude รัน prompt ซ้ำอัตโนมัติตามช่วงเวลา ใช้เพื่อสำรวจการ deploy บ้าง ดูแล PR บ้าง ตรวจสอบ build ที่รันนาน หรือเตือนตัวเองให้ทำสิ่งต่าง ๆ ในภายหลังของ session
Tasks มีขอบเขตเฉพาะ session: ชีวิตอยู่ใน conversation ปัจจุบันและหยุดเมื่อเริ่ม session ใหม่ การ resume ด้วย --resume หรือ --continue จะคืน task ที่ยังไม่หมดอายุ
เปรียบเทียบตัวเลือกการกำหนดเวลา
Claude Code มีสามวิธีกำหนดเวลางานที่เกิดซ้ำหรือครั้งเดียว:
| Cloud | Desktop | /loop | |
|---|---|---|---|
| รันบน | Anthropic cloud | เครื่องของคุณ | เครื่องของคุณ |
| ต้องเปิดเครื่องทิ้งไว้ | ไม่ | ใช่ | ใช่ |
| ต้องมี session เปิด | ไม่ | ไม่ | ใช่ |
| คงอยู่หลัง restart | ใช่ | ใช่ | Restore ใน --resume ถ้ายังไม่หมดอายุ |
รัน Prompt ซ้ำด้วย /loop
คำสั่ง /loop เป็นวิธีเร็วที่สุดในการรัน prompt ซ้ำในขณะที่ session ยังเปิดอยู่
| สิ่งที่ระบุ | ตัวอย่าง | สิ่งที่เกิดขึ้น |
|---|---|---|
| Interval และ prompt | /loop 5m check the deploy | Prompt รันตามกำหนดเวลาที่กำหนด |
| Prompt เท่านั้น | /loop check the deploy | Prompt รันตามช่วงที่ Claude เลือก |
| Interval เท่านั้น หรือไม่มีอะไร | /loop | Built-in maintenance prompt รัน |
รันตามช่วงเวลาที่กำหนด
เมื่อระบุ interval Claude จะแปลงเป็น cron expression และยืนยัน cadence:
/loop 5m check if the deployment finished and tell me what happened
ช่วงเวลาสนับสนุน unit: s สำหรับวินาที, m สำหรับนาที, h สำหรับชั่วโมง, d สำหรับวัน
ให้ Claude เลือก Interval
เมื่อไม่ระบุ interval Claude จะเลือกเองแบบ dynamic:
/loop check whether CI passed and address any review comments
รัน Built-in Maintenance Prompt
เมื่อไม่ระบุ prompt Claude ใช้ maintenance prompt ในตัว:
/loop
ปรับแต่ง Default Prompt ด้วย loop.md
ไฟล์ loop.md แทนที่ built-in maintenance prompt ด้วยคำสั่งของคุณ:
| Path | ขอบเขต |
|---|---|
.claude/loop.md | Project-level ใช้ก่อนเมื่อทั้งสองไฟล์มีอยู่ |
~/.claude/loop.md | User-level ใช้ใน project ใด ๆ ที่ไม่ได้กำหนดของตัวเอง |
ตัวอย่าง loop.md:
Check the `release/next` PR. If CI is red, pull the failing job log,
diagnose, and push a minimal fix. If new review comments have arrived,
address each one and resolve the thread.
หยุด Loop
หากต้องการหยุด /loop ขณะรอการ iterate ครั้งถัดไป กด Esc
ตั้งการเตือนครั้งเดียว
สำหรับการเตือนแบบ one-shot ให้อธิบายสิ่งที่ต้องการใน natural language:
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed
จัดการ Scheduled Tasks
ถาม Claude ใน natural language เพื่อแสดงหรือยกเลิก tasks:
what scheduled tasks do I have?
cancel the deploy check job
Tools ที่ใช้งานเบื้องหลัง
| Tool | วัตถุประสงค์ |
|---|---|
CronCreate | กำหนด task ใหม่ รับ 5-field cron expression |
CronList | แสดง scheduled tasks ทั้งหมดพร้อม ID และกำหนดการ |
CronDelete | ยกเลิก task ตาม ID |
วิธีที่ Scheduled Tasks ทำงาน
Scheduler ตรวจสอบทุกวินาทีว่า task ใดถึงกำหนด และเพิ่มใน queue ด้วย priority ต่ำ
เวลาทั้งหมดถูก interpret ใน timezone ของคุณ cron expression เช่น 0 9 * * * หมายถึง 9 โมงเช้า ที่ใดก็ตามที่คุณรัน Claude Code ไม่ใช่ UTC
Jitter
เพื่อหลีกเลี่ยงทุก session กดบน API พร้อมกัน scheduler เพิ่ม offset:
- Recurring tasks ยิงได้สูงสุด 30 นาทีหลังเวลาที่กำหนด
- One-shot tasks ที่กำหนดที่ต้น/กลางชั่วโมงยิงเร็วขึ้นได้ถึง 90 วินาที
หมดอายุ 7 วัน
Recurring tasks หมดอายุอัตโนมัติ 7 วันหลังสร้าง task ยิงครั้งสุดท้ายแล้วลบตัวเอง
Cron Expression Reference
CronCreate รับ 5-field cron expressions: minute hour day-of-month month day-of-week
| ตัวอย่าง | ความหมาย |
|---|---|
*/5 * * * * | ทุก 5 นาที |
0 * * * * | ทุกชั่วโมงเต็ม |
7 * * * * | ทุกชั่วโมงที่นาทีที่ 7 |
0 9 * * * | ทุกวันเวลา 9 โมงเช้า local |
0 9 * * 1-5 | วันทำงานเวลา 9 โมงเช้า local |
30 14 15 3 * | 15 มีนาคม เวลา 14:30 local |
ปิดใช้งาน Scheduled Tasks
ตั้งค่า CLAUDE_CODE_DISABLE_CRON=1 ใน environment ของคุณเพื่อปิด scheduler ทั้งหมด
ข้อจำกัด
- Tasks ยิงได้เฉพาะเมื่อ Claude Code รันและไม่ได้ใช้งาน ปิด terminal จะหยุดการยิง
- ไม่มี catch-up สำหรับ fires ที่พลาดไป
- เริ่ม conversation ใหม่จะลบ session-scoped tasks ทั้งหมด
สำหรับ automation แบบ cron ที่ต้องรันแบบ unattended:
- Routines: รันบน Anthropic-managed infrastructure
- GitHub Actions: ใช้
scheduletrigger ใน CI - Desktop scheduled tasks: รันในเครื่อง local ของคุณ