Automation and tasks
Tác vụ đã lên lịch
Cron là bộ lập lịch tích hợp sẵn của Gateway. Nó lưu trữ các job lâu bền, đánh thức tác nhân vào đúng thời điểm và có thể gửi đầu ra trở lại một kênh trò chuyện hoặc điểm cuối Webhook.
Bắt đầu nhanh
Add a one-shot reminder
openclaw cron add \
--name "Reminder" \
--at "2026-02-01T16:00:00Z" \
--session main \
--system-event "Reminder: check the cron docs draft" \
--wake now \
--delete-after-run
Check your jobs
openclaw cron list
openclaw cron show <job-id>
See run history
openclaw cron runs --id <job-id>
Cách cron hoạt động
- Cron chạy bên trong tiến trình Gateway (không chạy bên trong mô hình).
- Định nghĩa job được lưu lâu bền tại
~/.openclaw/cron/jobs.jsonđể các lần khởi động lại không làm mất lịch. - Trạng thái thực thi runtime được lưu cạnh đó trong
~/.openclaw/cron/jobs-state.json. Nếu bạn theo dõi định nghĩa cron trong git, hãy theo dõijobs.jsonvà đưajobs-state.jsonvào gitignore. - Sau khi tách ra, các phiên bản OpenClaw cũ hơn có thể đọc
jobs.jsonnhưng có thể coi job là mới vì các trường runtime hiện nằm trongjobs-state.json. - Khi
jobs.jsonđược chỉnh sửa trong lúc Gateway đang chạy hoặc đã dừng, OpenClaw so sánh các trường lịch đã thay đổi với siêu dữ liệu slot runtime đang chờ và xóa các giá trịnextRunAtMsđã lỗi thời. Các lần viết lại chỉ thay đổi định dạng hoặc thứ tự khóa vẫn giữ nguyên slot đang chờ. - Tất cả lần thực thi cron đều tạo bản ghi tác vụ nền.
- Khi Gateway khởi động, các job lượt tác nhân cô lập đã quá hạn được lập lịch lại ra ngoài khoảng kết nối kênh thay vì phát lại ngay lập tức, nhờ đó quá trình khởi động Discord/Telegram và thiết lập lệnh gốc vẫn phản hồi tốt sau khi khởi động lại.
- Job chạy một lần (
--at) mặc định tự động xóa sau khi thành công. - Các lần chạy cron cô lập cố gắng đóng các tab/quy trình trình duyệt được theo dõi cho phiên
cron:<jobId>của chúng khi lần chạy hoàn tất, để tự động hóa trình duyệt tách rời không để lại quy trình mồ côi. - Các lần chạy cron cô lập nhận được quyền tự dọn dẹp cron hẹp vẫn có thể đọc trạng thái bộ lập lịch và danh sách tự lọc của job hiện tại của chúng, để kiểm tra trạng thái/Heartbeat có thể xem lịch của chính chúng mà không có quyền thay đổi cron rộng hơn.
- Các lần chạy cron cô lập cũng bảo vệ khỏi phản hồi xác nhận lỗi thời. Nếu kết quả đầu tiên chỉ là một cập nhật trạng thái tạm thời (
on it,pulling everything togethervà các gợi ý tương tự) và không có lần chạy tác nhân con nào vẫn chịu trách nhiệm cho câu trả lời cuối cùng, OpenClaw sẽ nhắc lại một lần để lấy kết quả thực tế trước khi gửi. - Các lần chạy cron cô lập ưu tiên siêu dữ liệu từ chối thực thi có cấu trúc từ lần chạy nhúng, rồi quay về các dấu hiệu tóm tắt/đầu ra cuối đã biết như
SYSTEM_RUN_DENIEDvàINVALID_REQUEST, để một lệnh bị chặn không bị báo cáo là lượt chạy thành công. - Các lần chạy cron cô lập cũng coi lỗi tác nhân cấp lượt chạy là lỗi job ngay cả khi không tạo payload phản hồi, để lỗi mô hình/nhà cung cấp làm tăng bộ đếm lỗi và kích hoạt thông báo lỗi thay vì xóa job như thể đã thành công.
- Khi một job lượt tác nhân cô lập đạt
timeoutSeconds, cron hủy lần chạy tác nhân bên dưới và cho nó một khoảng ngắn để dọn dẹp. Nếu lần chạy không thoát hết, quá trình dọn dẹp do Gateway sở hữu sẽ buộc xóa quyền sở hữu phiên của lần chạy đó trước khi cron ghi nhận timeout, để công việc trò chuyện trong hàng đợi không bị kẹt sau một phiên xử lý đã lỗi thời.
Kiểu lịch
| Loại | Cờ CLI | Mô tả |
|---|---|---|
at |
--at |
Dấu thời gian chạy một lần (ISO 8601 hoặc tương đối như 20m) |
every |
--every |
Khoảng thời gian cố định |
cron |
--cron |
Biểu thức cron 5 trường hoặc 6 trường với --tz tùy chọn |
Dấu thời gian không có múi giờ được xử lý là UTC. Thêm --tz America/New_York để lập lịch theo giờ địa phương.
Các biểu thức lặp lại vào đầu giờ được tự động rải lệch tối đa 5 phút để giảm đỉnh tải. Dùng --exact để buộc thời điểm chính xác hoặc --stagger 30s cho một cửa sổ rõ ràng.
Ngày trong tháng và ngày trong tuần dùng logic OR
Biểu thức cron được phân tích bằng croner. Khi cả trường ngày trong tháng và ngày trong tuần đều không phải ký tự đại diện, croner khớp khi một trong hai trường khớp — không phải cả hai. Đây là hành vi cron Vixie tiêu chuẩn.
# Intended: "9 AM on the 15th, only if it's a Monday"
# Actual: "9 AM on every 15th, AND 9 AM on every Monday"
0 9 15 * 1
Điều này kích hoạt khoảng 5–6 lần mỗi tháng thay vì 0–1 lần mỗi tháng. OpenClaw dùng hành vi OR mặc định của Croner ở đây. Để yêu cầu cả hai điều kiện, hãy dùng bộ sửa đổi ngày trong tuần + của Croner (0 9 15 * +1) hoặc lập lịch trên một trường và kiểm tra trường còn lại trong prompt hoặc lệnh của job.
Kiểu thực thi
| Kiểu | Giá trị --session |
Chạy trong | Phù hợp nhất cho |
|---|---|---|---|
| Phiên chính | main |
Lượt Heartbeat kế tiếp | Nhắc việc, sự kiện hệ thống |
| Cô lập | isolated |
cron:<jobId> chuyên dụng |
Báo cáo, việc nền |
| Phiên hiện tại | current |
Ràng buộc tại thời điểm tạo | Công việc lặp lại có nhận biết ngữ cảnh |
| Phiên tùy chỉnh | session:custom-id |
Phiên đặt tên lâu bền | Quy trình công việc xây dựng trên lịch sử |
Main session vs isolated vs custom
Job phiên chính đưa một sự kiện hệ thống vào hàng đợi và tùy chọn đánh thức Heartbeat (--wake now hoặc --wake next-heartbeat). Các sự kiện hệ thống đó không kéo dài độ mới của đặt lại hằng ngày/khi nhàn rỗi cho phiên đích. Job cô lập chạy một lượt tác nhân chuyên dụng với phiên mới. Phiên tùy chỉnh (session:xxx) duy trì ngữ cảnh qua các lần chạy, cho phép các quy trình công việc như standup hằng ngày xây dựng dựa trên các bản tóm tắt trước đó.
What 'fresh session' means for isolated jobs
Với job cô lập, "phiên mới" nghĩa là một transcript/id phiên mới cho mỗi lần chạy. OpenClaw có thể mang theo các tùy chọn an toàn như thiết lập suy nghĩ/nhanh/chi tiết, nhãn và các ghi đè mô hình/xác thực do người dùng chọn rõ ràng, nhưng không kế thừa ngữ cảnh hội thoại xung quanh từ một hàng cron cũ hơn: định tuyến kênh/nhóm, chính sách gửi hoặc xếp hàng, nâng quyền, nguồn gốc hoặc ràng buộc runtime ACP. Dùng current hoặc session:<id> khi một job lặp lại được chủ ý xây dựng trên cùng ngữ cảnh hội thoại.
Runtime cleanup
Với job cô lập, quá trình tháo dỡ runtime hiện bao gồm dọn dẹp trình duyệt theo nỗ lực tốt nhất cho phiên cron đó. Lỗi dọn dẹp được bỏ qua để kết quả cron thực tế vẫn quyết định.
Các lần chạy cron cô lập cũng giải phóng mọi phiên bản runtime MCP đóng gói được tạo cho job thông qua đường dọn dẹp runtime dùng chung. Điều này khớp với cách các máy khách MCP của phiên chính và phiên tùy chỉnh được tháo dỡ, để job cron cô lập không rò rỉ quy trình con stdio hoặc kết nối MCP sống lâu qua các lần chạy.
Subagent and Discord delivery
Khi các lần chạy cron cô lập điều phối các tác nhân con, việc gửi cũng ưu tiên đầu ra cuối cùng của hậu duệ hơn văn bản tạm thời lỗi thời của cha. Nếu hậu duệ vẫn đang chạy, OpenClaw sẽ chặn cập nhật cha một phần đó thay vì thông báo nó.
Với mục tiêu thông báo Discord chỉ văn bản, OpenClaw gửi văn bản trợ lý cuối cùng chuẩn một lần thay vì phát lại cả payload văn bản được stream/trung gian và câu trả lời cuối cùng. Payload Discord dạng phương tiện và có cấu trúc vẫn được gửi dưới dạng payload riêng để tệp đính kèm và thành phần không bị bỏ.
Tùy chọn payload cho job cô lập
--messagestringrequiredVăn bản prompt (bắt buộc cho cô lập).
--modelstringGhi đè mô hình; dùng mô hình được phép đã chọn cho job.
--thinkingstringGhi đè mức suy nghĩ.
--light-contextbooleanBỏ qua việc chèn tệp bootstrap workspace.
--toolsstringHạn chế các công cụ job có thể dùng, ví dụ --tools exec,read.
--model dùng mô hình được phép đã chọn làm mô hình chính của job đó. Nó không giống ghi đè /model của phiên trò chuyện: các chuỗi dự phòng đã cấu hình vẫn áp dụng khi mô hình chính của job thất bại. Nếu mô hình được yêu cầu không được phép hoặc không thể phân giải, cron làm lần chạy thất bại với lỗi xác thực rõ ràng thay vì âm thầm quay về lựa chọn mô hình tác nhân/mặc định của job.
Nếu các mục jobs.json cũ hơn hoặc được chỉnh tay lưu payload.model là "default", "null", chuỗi trống hoặc JSON null, hãy chạy openclaw doctor --fix. Doctor xóa các sentinel ghi đè đã lưu không hợp lệ đó; runtime không hỗ trợ chúng làm bí danh dự phòng. Bỏ qua trường mô hình để dùng lựa chọn mô hình tác nhân/mặc định thông thường.
Job Cron cũng có thể mang fallbacks cấp payload. Khi có mặt, danh sách đó thay thế chuỗi dự phòng đã cấu hình cho job. Dùng fallbacks: [] trong payload/API của job khi bạn muốn một lần chạy cron nghiêm ngặt chỉ thử mô hình đã chọn. Nếu một job có --model nhưng không có dự phòng payload hoặc dự phòng đã cấu hình, OpenClaw truyền một ghi đè dự phòng rỗng rõ ràng để mô hình chính của tác nhân không được thêm làm mục tiêu thử lại ẩn.
Thứ tự ưu tiên chọn mô hình cho job cô lập là:
- Ghi đè mô hình hook Gmail (khi lần chạy đến từ Gmail và ghi đè đó được phép)
modeltrong payload của từng job- Ghi đè mô hình phiên cron đã lưu do người dùng chọn
- Lựa chọn mô hình tác nhân/mặc định
Chế độ nhanh cũng đi theo lựa chọn trực tiếp đã phân giải. Nếu cấu hình mô hình đã chọn có params.fastMode, cron cô lập mặc định dùng cấu hình đó. Ghi đè fastMode của phiên đã lưu vẫn thắng cấu hình theo cả hai hướng.
Nếu một lần chạy cô lập gặp bàn giao chuyển đổi mô hình trực tiếp, cron thử lại với nhà cung cấp/mô hình đã chuyển đổi và lưu lâu bền lựa chọn trực tiếp đó cho lần chạy đang hoạt động trước khi thử lại. Khi chuyển đổi cũng mang theo một hồ sơ xác thực mới, cron cũng lưu lâu bền ghi đè hồ sơ xác thực đó cho lần chạy đang hoạt động. Số lần thử lại có giới hạn: sau lần thử ban đầu cộng với 2 lần thử lại chuyển đổi, cron hủy thay vì lặp mãi mãi.
Trước khi một lần chạy cron cô lập đi vào trình chạy tác nhân, OpenClaw kiểm tra các điểm cuối nhà cung cấp cục bộ có thể truy cập cho các nhà cung cấp api: "ollama" và api: "openai-completions" đã cấu hình mà baseUrl là local loopback, mạng riêng hoặc .local. Nếu điểm cuối đó ngừng hoạt động, lần chạy được ghi là skipped với lỗi nhà cung cấp/mô hình rõ ràng thay vì bắt đầu một lệnh gọi mô hình. Kết quả điểm cuối được lưu đệm trong 5 phút, nên nhiều job đến hạn dùng cùng một máy chủ Ollama, vLLM, SGLang hoặc LM Studio cục bộ đã chết sẽ dùng chung một phép thăm dò nhỏ thay vì tạo bão yêu cầu. Các lần chạy bị bỏ qua do kiểm tra trước nhà cung cấp không làm tăng backoff lỗi thực thi; bật failureAlert.includeSkipped khi bạn muốn thông báo bỏ qua lặp lại.
Gửi và đầu ra
| Chế độ | Điều xảy ra |
|---|---|
announce |
Gửi dự phòng văn bản cuối cùng đến đích nếu agent chưa gửi |
webhook |
POST payload sự kiện đã hoàn tất đến một URL |
none |
Không có phân phối dự phòng của trình chạy |
Dùng --announce --channel telegram --to "-1001234567890" để phân phối qua kênh. Với các chủ đề diễn đàn Telegram, dùng -1001234567890:topic:123; các trình gọi RPC/cấu hình trực tiếp cũng có thể truyền delivery.threadId dưới dạng chuỗi hoặc số. Các đích Slack/Discord/Mattermost nên dùng tiền tố tường minh (channel:<id>, user:<id>). ID phòng Matrix phân biệt chữ hoa chữ thường; dùng ID phòng chính xác hoặc dạng room:!room:server từ Matrix.
Khi phân phối announce dùng channel: "last" hoặc bỏ qua channel, một đích có tiền tố nhà cung cấp như telegram:123 có thể chọn kênh trước khi cron quay về lịch sử phiên hoặc một kênh đã cấu hình duy nhất. Chỉ các tiền tố được Plugin đã tải quảng bá mới là bộ chọn nhà cung cấp. Nếu delivery.channel là tường minh, tiền tố đích phải đặt tên cùng nhà cung cấp; ví dụ, channel: "whatsapp" với to: "telegram:123" sẽ bị từ chối thay vì để WhatsApp diễn giải ID Telegram như một số điện thoại. Các tiền tố loại đích và dịch vụ như channel:<id>, user:<id>, imessage:<handle>, và sms:<number> vẫn là cú pháp đích do kênh sở hữu, không phải bộ chọn nhà cung cấp.
Với các tác vụ tách biệt, phân phối trò chuyện được chia sẻ. Nếu có tuyến trò chuyện, agent có thể dùng công cụ message ngay cả khi tác vụ dùng --no-deliver. Nếu agent gửi đến đích đã cấu hình/hiện tại, OpenClaw bỏ qua announce dự phòng. Nếu không, announce, webhook, và none chỉ kiểm soát cách trình chạy xử lý phản hồi cuối cùng sau lượt agent.
Khi agent tạo một lời nhắc tách biệt từ một cuộc trò chuyện đang hoạt động, OpenClaw lưu đích phân phối trực tiếp được bảo toàn cho tuyến announce dự phòng. Khóa phiên nội bộ có thể là chữ thường; đích phân phối của nhà cung cấp không được tái tạo từ các khóa đó khi ngữ cảnh trò chuyện hiện tại có sẵn.
Phân phối announce ngầm định dùng danh sách cho phép của kênh đã cấu hình để xác thực và định tuyến lại các đích cũ. Các phê duyệt từ kho ghép cặp DM không phải là người nhận tự động hóa dự phòng; đặt delivery.to hoặc cấu hình mục allowFrom của kênh khi một tác vụ đã lên lịch cần chủ động gửi đến DM.
Thông báo lỗi đi theo một đường dẫn đích riêng:
cron.failureDestinationđặt mặc định toàn cục cho thông báo lỗi.job.delivery.failureDestinationghi đè thiết lập đó cho từng tác vụ.- Nếu cả hai đều chưa được đặt và tác vụ đã phân phối qua
announce, thông báo lỗi hiện quay về đích announce chính đó. delivery.failureDestinationchỉ được hỗ trợ trên các tác vụsessionTarget="isolated"trừ khi chế độ phân phối chính làwebhook.failureAlert.includeSkipped: trueđưa chính sách cảnh báo cron toàn cục hoặc của tác vụ vào các cảnh báo lần chạy bị bỏ qua lặp lại. Các lần chạy bị bỏ qua giữ một bộ đếm bỏ qua liên tiếp riêng, nên chúng không ảnh hưởng đến backoff lỗi thực thi.
Ví dụ CLI
Lời nhắc một lần
openclaw cron add \
--name "Calendar check" \
--at "20m" \
--session main \
--system-event "Next heartbeat: check calendar." \
--wake now
Tác vụ tách biệt lặp lại
openclaw cron add \
--name "Morning brief" \
--cron "0 7 * * *" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Summarize overnight updates." \
--announce \
--channel slack \
--to "channel:C1234567890"
Ghi đè mô hình và suy nghĩ
openclaw cron add \
--name "Deep analysis" \
--cron "0 6 * * 1" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Weekly deep analysis of project progress." \
--model "opus" \
--thinking high \
--announce
Webhook
Gateway có thể cung cấp các điểm cuối HTTP Webhook cho trình kích hoạt bên ngoài. Bật trong cấu hình:
{
hooks: {
enabled: true,
token: "shared-secret",
path: "/hooks",
},
}
Xác thực
Mọi yêu cầu phải bao gồm mã thông báo hook qua header:
Authorization: Bearer <token>(khuyến nghị)x-openclaw-token: <token>
Mã thông báo trong chuỗi truy vấn bị từ chối.
POST /hooks/wake
Đưa một sự kiện hệ thống vào hàng đợi cho phiên chính:
curl -X POST http://127.0.0.1:18789/hooks/wake \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"text":"New email received","mode":"now"}'
textstringrequiredMô tả sự kiện.
modestringnow hoặc next-heartbeat.
POST /hooks/agent
Chạy một lượt agent tách biệt:
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.4"}'
Trường: message (bắt buộc), name, agentId, wakeMode, deliver, channel, to, model, fallbacks, thinking, timeoutSeconds.
OPENCLAW_DOCS_MARKER:accordionOpen:IHRpdGxlPSJIb29rIMSRw6Mgw6FuaCB44bqhIChQT1NUIC9ob29rcy88bmFtZQ
)">
Tên hook tùy chỉnh được phân giải qua hooks.mappings trong cấu hình. Ánh xạ có thể biến đổi payload bất kỳ thành hành động wake hoặc agent bằng mẫu hoặc phép biến đổi mã.
Tích hợp Gmail PubSub
Nối trình kích hoạt hộp thư đến Gmail với OpenClaw qua Google PubSub.
Thiết lập bằng trình hướng dẫn (khuyến nghị)
openclaw webhooks gmail setup --account [email protected]
Lệnh này ghi cấu hình hooks.gmail, bật preset Gmail, và dùng Tailscale Funnel cho điểm cuối push.
Tự khởi động Gateway
Khi hooks.enabled=true và hooks.gmail.account được đặt, Gateway khởi động gog gmail watch serve khi boot và tự động gia hạn watch. Đặt OPENCLAW_SKIP_GMAIL_WATCHER=1 để chọn không dùng.
Thiết lập thủ công một lần
Chọn dự án GCP
Chọn dự án GCP sở hữu OAuth client được gog dùng:
gcloud auth login
gcloud config set project <project-id>
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
Tạo topic và cấp quyền truy cập push cho Gmail
gcloud pubsub topics create gog-gmail-watch
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
--member=serviceAccount:[email protected] \
--role=roles/pubsub.publisher
Bắt đầu watch
gog gmail watch start \
--account [email protected] \
--label INBOX \
--topic projects/<project-id>/topics/gog-gmail-watch
Ghi đè mô hình Gmail
{
hooks: {
gmail: {
model: "openrouter/meta-llama/llama-3.3-70b-instruct:free",
thinking: "off",
},
},
}
Quản lý tác vụ
# List all jobs
openclaw cron list
# Show one job, including resolved delivery route
openclaw cron show <jobId>
# Edit a job
openclaw cron edit <jobId> --message "Updated prompt" --model "opus"
# Force run a job now
openclaw cron run <jobId>
# Run only if due
openclaw cron run <jobId> --due
# View run history
openclaw cron runs --id <jobId> --limit 50
# Delete a job
openclaw cron remove <jobId>
# Agent selection (multi-agent setups)
openclaw cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --message "Check ops queue" --agent ops
openclaw cron edit <jobId> --clear-agent
Cấu hình
{
cron: {
enabled: true,
store: "~/.openclaw/cron/jobs.json",
maxConcurrentRuns: 1,
retry: {
maxAttempts: 3,
backoffMs: [60000, 120000, 300000],
retryOn: ["rate_limit", "overloaded", "network", "server_error"],
},
webhookToken: "replace-with-dedicated-webhook-token",
sessionRetention: "24h",
runLog: { maxBytes: "2mb", keepLines: 2000 },
},
}
maxConcurrentRuns giới hạn cả việc điều phối cron theo lịch và thực thi lượt agent tách biệt. Các lượt agent cron tách biệt dùng nội bộ làn thực thi cron-nested chuyên dụng của hàng đợi, nên việc tăng giá trị này cho phép các lần chạy LLM cron độc lập tiến triển song song thay vì chỉ khởi động các wrapper cron bên ngoài của chúng. Làn nested không thuộc cron dùng chung không được mở rộng bởi thiết lập này.
Sidecar trạng thái runtime được dẫn xuất từ cron.store: một kho .json như ~/clawd/cron/jobs.json dùng ~/clawd/cron/jobs-state.json, trong khi đường dẫn kho không có hậu tố .json sẽ nối thêm -state.json.
Nếu bạn chỉnh sửa thủ công jobs.json, hãy để jobs-state.json ngoài kiểm soát mã nguồn. OpenClaw dùng sidecar đó cho slot đang chờ, marker đang hoạt động, siêu dữ liệu lần chạy gần nhất, và định danh lịch cho bộ lập lịch biết khi nào một tác vụ được chỉnh sửa bên ngoài cần nextRunAtMs mới.
Tắt cron: cron.enabled: false hoặc OPENCLAW_SKIP_CRON=1.
Hành vi thử lại
Thử lại một lần: lỗi tạm thời (giới hạn tốc độ, quá tải, mạng, lỗi máy chủ) thử lại tối đa 3 lần với backoff lũy thừa. Lỗi vĩnh viễn bị tắt ngay.
Thử lại định kỳ: backoff lũy thừa (30 giây đến 60 phút) giữa các lần thử lại. Backoff đặt lại sau lần chạy thành công tiếp theo.
Bảo trì
cron.sessionRetention (mặc định 24h) cắt tỉa các mục phiên chạy tách biệt. cron.runLog.maxBytes / cron.runLog.keepLines tự động cắt tỉa các tệp nhật ký chạy.
Khắc phục sự cố
Thang lệnh
openclaw status
openclaw gateway status
openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20
openclaw system heartbeat last
openclaw logs --follow
openclaw doctor
Cron không kích hoạt
- Kiểm tra biến môi trường
cron.enabledvàOPENCLAW_SKIP_CRON. - Xác nhận Gateway đang chạy liên tục.
- Với lịch
cron, xác minh múi giờ (--tz) so với múi giờ của máy chủ. reason: not-duetrong đầu ra lần chạy nghĩa là lần chạy thủ công đã được kiểm tra bằngopenclaw cron run <jobId> --duevà tác vụ chưa đến hạn.
Cron đã kích hoạt nhưng không có chuyển phát
- Chế độ chuyển phát
nonenghĩa là không kỳ vọng runner gửi dự phòng. Agent vẫn có thể gửi trực tiếp bằng công cụmessagekhi có tuyến trò chuyện. - Thiếu/không hợp lệ mục tiêu chuyển phát (
channel/to) nghĩa là đầu ra đã bị bỏ qua. - Với Matrix, các tác vụ được sao chép hoặc cũ có ID phòng
delivery.toviết thường có thể thất bại vì ID phòng Matrix phân biệt chữ hoa chữ thường. Chỉnh sửa tác vụ thành đúng giá trị!room:serverhoặcroom:!room:servertừ Matrix. - Lỗi xác thực kênh (
unauthorized,Forbidden) nghĩa là chuyển phát đã bị chặn bởi thông tin xác thực. - Nếu lượt chạy cô lập chỉ trả về token im lặng (
NO_REPLY/no_reply), OpenClaw sẽ chặn chuyển phát đầu ra trực tiếp và cũng chặn đường dẫn tóm tắt dự phòng được xếp hàng, nên sẽ không có gì được đăng lại vào cuộc trò chuyện. - Nếu agent cần tự nhắn tin cho người dùng, hãy kiểm tra rằng tác vụ có tuyến dùng được (
channel: "last"với một cuộc trò chuyện trước đó, hoặc một kênh/mục tiêu rõ ràng).
Cron hoặc Heartbeat có vẻ ngăn rollover /new-style
- Độ mới của đặt lại hằng ngày và khi nhàn rỗi không dựa trên
updatedAt; xem Quản lý phiên. - Các lần đánh thức Cron, lượt chạy Heartbeat, thông báo thực thi và sổ sách Gateway có thể cập nhật hàng phiên cho định tuyến/trạng thái, nhưng chúng không kéo dài
sessionStartedAthoặclastInteractionAt. - Với các hàng cũ được tạo trước khi những trường đó tồn tại, OpenClaw có thể khôi phục
sessionStartedAttừ header phiên JSONL của bản ghi khi tệp vẫn còn có sẵn. Các hàng nhàn rỗi cũ không cólastInteractionAtsử dụng thời gian bắt đầu đã khôi phục đó làm mốc nhàn rỗi.
Các điểm dễ nhầm về múi giờ
- Cron không có
--tzsử dụng múi giờ của máy chủ Gateway. - Lịch
atkhông có múi giờ được xử lý là UTC. activeHourscủa Heartbeat sử dụng cách phân giải múi giờ đã cấu hình.
Liên quan
- Tự động hóa & Tác vụ — tất cả cơ chế tự động hóa trong một cái nhìn tổng quan
- Tác vụ nền — sổ cái tác vụ cho các lần thực thi cron
- Heartbeat — các lượt phiên chính định kỳ
- Múi giờ — cấu hình múi giờ