Scheduled task cho phép Claude tự chạy lại một prompt theo chu kỳ. Dùng để poll một deployment, theo dõi PR, kiểm tra lại build đang chạy lâu, hay tự nhắc mình làm gì đó sau trong phiên. Muốn phản ứng theo sự kiện thay vì poll, xem Channels - CI có thể đẩy lỗi thẳng vào phiên. Muốn phiên tiếp tục làm việc từng lượt cho đến khi đạt điều kiện thay vì theo chu kỳ thời gian, xem /goal.
Task gắn với phiên hiện tại: sống trong hội thoại đang mở và dừng khi bạn bắt đầu hội thoại mới. Resume bằng --resume hoặc --continue sẽ khôi phục lại task chưa hết hạn (task lặp lại tạo trong 7 ngày gần nhất, hoặc task một lần chưa tới giờ chạy). Muốn lập lịch độc lập với phiên, dùng Routines (chạy trên hạ tầng Anthropic), Desktop scheduled task, hoặc GitHub Actions.
So sánh các cách lập lịch
Phần tiêu đề “So sánh các cách lập lịch”| Cloud (Routines) | Desktop | /loop | |
|---|---|---|---|
| Chạy trên | Cloud của Anthropic | Máy bạn | Máy bạn |
| Cần máy bật | Không | Có | Có |
| Cần phiên đang mở | Không | Không | Có |
| Bền vững qua restart | Có | Có | Khôi phục khi --resume nếu chưa hết hạn |
| Truy cập file cục bộ | Không (clone mới) | Có | Có |
| MCP server | Connector cấu hình theo từng task | File config và connector | Kế thừa từ phiên |
| Permission prompt | Không (chạy tự động) | Cấu hình theo từng task | Kế thừa từ phiên |
| Lịch tuỳ chỉnh | Qua /schedule trong CLI | Có | Có |
| Chu kỳ tối thiểu | 1 giờ | 1 phút | 1 phút |
Chạy prompt lặp lại với /loop
Phần tiêu đề “Chạy prompt lặp lại với /loop”/loop là skill đóng gói sẵn, cách nhanh nhất để chạy lặp một prompt trong khi phiên vẫn mở. Cả interval lẫn prompt đều tuỳ chọn, tuỳ bạn cung cấp gì mà loop hoạt động khác nhau:
| Bạn cung cấp | Ví dụ | Điều gì xảy ra |
|---|---|---|
| Interval + prompt | /loop 5m check the deploy | Prompt chạy theo lịch cố định |
| Chỉ prompt | /loop check the deploy | Prompt chạy theo interval do Claude tự chọn mỗi lần lặp |
| Chỉ interval, hoặc không có gì | /loop | Chạy prompt bảo trì mặc định, hoặc loop.md nếu có |
Bạn cũng có thể truyền một skill làm prompt, ví dụ /loop 20m /review-pr 1234, để lặp lại skill đó mỗi vòng.
Chạy theo chu kỳ cố định
Phần tiêu đề “Chạy theo chu kỳ cố định”Khi bạn cung cấp interval, Claude chuyển nó thành biểu thức cron, lên lịch job, và xác nhận chu kỳ cùng job ID.
/loop 5m check if the deployment finished and tell me what happenedInterval có thể đứng trước prompt (30m) hoặc sau như một mệnh đề (every 2 hours). Đơn vị hỗ trợ: s (giây), m (phút), h (giờ), d (ngày). Giây được làm tròn lên phút gần nhất vì cron chỉ có độ chi tiết theo phút. Interval không khớp bước cron sạch (như 7m hay 90m) sẽ được làm tròn về interval gần nhất và Claude cho bạn biết đã chọn gì.
Để Claude tự chọn interval
Phần tiêu đề “Để Claude tự chọn interval”Khi bỏ trống interval, Claude chọn động thay vì chạy theo lịch cố định. Sau mỗi vòng, Claude chọn độ trễ từ 1 phút đến 1 giờ dựa trên những gì quan sát được - chờ ngắn khi build sắp xong hay PR đang hoạt động, chờ dài hơn khi không có gì đang chờ. Độ trễ và lý do được in ra cuối mỗi vòng.
/loop check whether CI passed and address any review commentsKhi yêu cầu lịch động, Claude có thể dùng trực tiếp Monitor tool - chạy script nền và stream từng dòng output, tránh việc phải poll và thường tiết kiệm token hơn.
Loop lịch động cũng xuất hiện trong danh sách scheduled task như bình thường. Quy tắc jitter không áp dụng cho nó, nhưng thời hạn 7 ngày vẫn áp dụng.
Chạy prompt bảo trì mặc định
Phần tiêu đề “Chạy prompt bảo trì mặc định”Khi bỏ trống cả prompt, Claude dùng prompt bảo trì có sẵn. Mỗi vòng, Claude lần lượt: tiếp tục việc dang dở trong hội thoại → chăm sóc PR của branch hiện tại (review comment, CI fail, merge conflict) → chạy các đợt dọn dẹp (tìm bug, đơn giản hoá) khi không còn việc gì khác. Claude không tự khởi xướng việc mới ngoài phạm vi này, và hành động không thể hoàn tác (như push hay xoá) chỉ thực hiện khi tiếp nối việc transcript đã cho phép.
/loop/loop trơn chạy prompt này theo interval động. Thêm interval, ví dụ /loop 15m, để chạy cố định. Muốn thay prompt mặc định bằng của riêng bạn, xem phần loop.md bên dưới.
Tuỳ biến prompt mặc định bằng loop.md
Phần tiêu đề “Tuỳ biến prompt mặc định bằng loop.md”File loop.md thay thế prompt bảo trì mặc định bằng chỉ dẫn của riêng bạn. Nó định nghĩa một prompt mặc định duy nhất cho /loop trơn, không phải danh sách nhiều task, và bị bỏ qua khi bạn cung cấp prompt trực tiếp trên dòng lệnh.
Claude tìm file ở hai vị trí, dùng cái đầu tiên tìm thấy:
| Đường dẫn | Phạm vi |
|---|---|
.claude/loop.md | Cấp dự án, ưu tiên hơn nếu cả hai cùng tồn tại |
~/.claude/loop.md | Cấp user, áp dụng cho mọi dự án không có file riêng |
File là Markdown thuần, không cần cấu trúc bắt buộc. Viết như thể bạn đang gõ trực tiếp prompt cho /loop:
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. If everything is green andquiet, say so in one line.Chỉnh sửa loop.md có hiệu lực từ vòng lặp kế tiếp. Khi không có loop.md ở đâu cả, loop dùng lại prompt bảo trì mặc định. Giữ file ngắn gọn - nội dung vượt quá 25.000 byte sẽ bị cắt.
Dừng loop
Phần tiêu đề “Dừng loop”Muốn dừng /loop khi đang chờ vòng kế tiếp, nhấn Esc - thao tác này xoá lần đánh thức đang chờ nên loop không chạy lại nữa. Task lên lịch bằng cách hỏi trực tiếp Claude không bị ảnh hưởng bởi Esc, vẫn giữ nguyên đến khi bạn xoá.
Ở chế độ tự chọn interval, Claude cũng có thể tự kết thúc loop khi thấy việc đã xong, bằng cách gọi tool ScheduleWakeup với stop: true. Nếu một vòng kết thúc mà không lên lịch lại cũng không dừng, Claude Code tự đặt một lần đánh thức dự phòng sau khoảng 20 phút và kết thúc loop nếu vòng đó cũng không lên lịch lại.
Loop theo lịch cố định chạy đến khi bạn dừng hoặc hết 7 ngày.
Đặt nhắc nhở một lần
Phần tiêu đề “Đặt nhắc nhở một lần”Với nhắc nhở một lần, mô tả bằng ngôn ngữ tự nhiên thay vì dùng /loop. Claude lên lịch một task chạy một lần rồi tự xoá.
remind me at 3pm to push the release branchin 45 minutes, check whether the integration tests passedClaude ghim giờ chạy vào đúng phút bằng biểu thức cron và xác nhận thời điểm sẽ chạy.
Quản lý scheduled task
Phần tiêu đề “Quản lý scheduled task”Hỏi Claude bằng ngôn ngữ tự nhiên để liệt kê hoặc huỷ task:
what scheduled tasks do I have?cancel the deploy check jobBên dưới, Claude dùng các tool sau:
| Tool | Mục đích |
|---|---|
CronCreate | Lên lịch task mới. Nhận biểu thức cron 5 trường, prompt, và có lặp lại hay chỉ chạy một lần |
CronList | Liệt kê mọi task đang lên lịch cùng ID, lịch, prompt |
CronDelete | Huỷ task theo ID |
Mỗi task có ID 8 ký tự để truyền cho CronDelete. Một phiên chứa tối đa 50 task cùng lúc.
Cách task chạy
Phần tiêu đề “Cách task chạy”Bộ lập lịch kiểm tra mỗi giây xem có task nào đến hạn và đưa vào hàng đợi ưu tiên thấp. Prompt lên lịch chạy giữa các lượt của bạn, không chạy khi Claude đang trả lời dở. Nếu Claude đang bận khi task đến hạn, prompt chờ đến khi lượt hiện tại kết thúc.
Mọi thời gian được hiểu theo múi giờ địa phương của bạn. Biểu thức cron như 0 9 * * * nghĩa là 9 giờ sáng nơi bạn chạy Claude Code, không phải UTC.
Jitter
Phần tiêu đề “Jitter”Để tránh mọi phiên gọi API cùng một thời điểm, bộ lập lịch thêm một độ lệch xác định vào giờ chạy:
- Task lặp lại chạy trễ tối đa 30 phút so với lịch (hoặc tối đa nửa chu kỳ, với task chạy thường xuyên hơn mỗi giờ)
- Task một lần đặt vào đúng giờ hoặc nửa giờ chạy sớm tối đa 90 giây
Độ lệch được suy ra từ ID task, nên cùng một task luôn nhận cùng độ lệch. Nếu cần chính xác về thời gian, chọn phút không phải :00 hay :30, ví dụ 3 9 * * * thay vì 0 9 * * *.
Hết hạn sau 7 ngày
Phần tiêu đề “Hết hạn sau 7 ngày”Task lặp lại tự động hết hạn 7 ngày sau khi tạo - chạy lần cuối rồi tự xoá. Điều này giới hạn thời gian một loop bị quên có thể chạy. Nếu cần task lặp lại tồn tại lâu hơn, huỷ và tạo lại trước khi hết hạn, hoặc dùng Routines/Desktop scheduled task.
Tham khảo biểu thức cron
Phần tiêu đề “Tham khảo biểu thức cron”CronCreate nhận biểu thức cron 5 trường chuẩn: phút giờ ngày-trong-tháng tháng ngày-trong-tuần. Hỗ trợ wildcard (*), giá trị đơn (5), bước (*/15), khoảng (1-5), danh sách phân tách bằng dấu phẩy (1,15,30).
| Ví dụ | Ý nghĩa |
|---|---|
*/5 * * * * | Mỗi 5 phút |
0 * * * * | Đầu mỗi giờ |
7 * * * * | Phút thứ 7 mỗi giờ |
0 9 * * * | 9 giờ sáng mỗi ngày theo giờ địa phương |
0 9 * * 1-5 | 9 giờ sáng các ngày trong tuần |
30 14 15 3 * | 14:30 ngày 15 tháng 3 |
Ngày-trong-tuần dùng 0 hoặc 7 cho Chủ nhật, 6 cho thứ Bảy. Cú pháp mở rộng như L, W, ?, hay tên viết tắt (MON, JAN) không được hỗ trợ. Khi cả ngày-trong-tháng và ngày-trong-tuần đều bị ràng buộc, một ngày khớp nếu một trong hai trường khớp (theo ngữ nghĩa vixie-cron chuẩn).
Tắt scheduled task
Phần tiêu đề “Tắt scheduled task”Đặt CLAUDE_CODE_DISABLE_CRON=1 trong môi trường để tắt hoàn toàn bộ lập lịch. Các tool cron và /loop không còn khả dụng, và task đã lên lịch ngừng chạy.
Giới hạn
Phần tiêu đề “Giới hạn”Lập lịch gắn với phiên có một số giới hạn cố hữu:
- Task chỉ chạy khi Claude Code đang chạy và rảnh. Đóng terminal hay để phiên thoát sẽ dừng chúng lại. Đưa phiên vào chạy nền vẫn giữ task
/loopchạy tiếp. - Không có “catch-up” cho lần chạy bị lỡ - nếu giờ chạy trôi qua khi Claude đang bận, task chỉ chạy một lần khi Claude rảnh, không chạy bù từng lần đã lỡ.
- Bắt đầu hội thoại mới xoá mọi task gắn phiên. Resume bằng
--resume/--continuekhôi phục task chưa hết hạn. Bash và monitor chạy nền không bao giờ được khôi phục khi resume. - Claude Code lưu danh sách scheduled task trong thư mục
.claudecủa dự án; việc lên lịch sẽ báo lỗi nếu thư mục đó, hoặc file task bên trong, là một symlink.
Với tự động hoá cần chạy không giám sát dựa trên cron:
- Routines: chạy trên hạ tầng Anthropic theo lịch, qua API call, hoặc theo sự kiện GitHub
- GitHub Actions: dùng trigger
scheduletrong CI - Desktop scheduled task: chạy cục bộ trên máy bạn
lượt xem