blog.dopana

Back

OpenCode đã trở thành một AI coding agent phổ biến trên terminal. Nhưng nếu bạn muốn AI agent của mình tự động chạy — kiểm tra deal lúc 9 giờ sáng, tổng hợp thông báo GitHub vào mỗi thứ Hai, hoặc giám sát website mỗi 6 giờ — mà không cần giữ terminal mở thì sao?

OpenCode Scheduler ra đời để giải quyết vấn đề đó: một plugin chính thức cho OpenCode biến hệ điều hành của bạn thành công cụ lập lịch cho AI agent.

OpenCode Scheduler là gì?#

OpenCode Scheduler là plugin dành cho CLI framework OpenCode cho phép bạn lên lịch các tác vụ AI định kỳ bằng bộ lập lịch native của hệ điều hành — launchd trên macOS, systemd --user trên Linux, schtasks trên Windows, với cron dự phòng khi không có sẵn backend native.

Thay vì chạy một daemon nặng nề hay phụ thuộc vào dịch vụ cron đám mây, plugin hoạt động như một lớp mỏng bao bọc quanh các bộ lập lịch OS đã được kiểm chứng qua nhiều năm.

Tính năng chính#

Lập lịch bằng ngôn ngữ tự nhiên#

Bạn mô tả những gì bạn muốn bằng tiếng Việt. Plugin tự động dịch thành biểu thức cron và cấu hình bộ lập lịch OS phù hợp.

“Lên lịch công việc hàng ngày lúc 9h sáng để tìm kiếm bàn đứng dưới 300 đô la trên Facebook Marketplace và gửi 5 deal tốt nhất vào Telegram của tôi”

Không cần phải nhớ cú pháp cron — nhưng nếu bạn biết, plugin cũng chấp nhận biểu thức cron 5 trường tiêu chuẩn.

Thực thi native trên OS#

Sau khi được lên lịch, công việc chạy tự động. OS đánh thức tác vụ vào thời điểm đã định, chạy script giám sát, và thực thi opencode run với prompt của bạn. Bạn không cần giữ terminal hay bất kỳ tiến trình Node.js nào chạy nền.

Nền tảngBackendTrạng thái
macOSlaunchdHỗ trợ đầy đủ
Linux (systemd)systemd --userHỗ trợ đầy đủ
Linux (POSIX)cron (crontab)Dự phòng
Windowsschtasks (Task Scheduler)Được hỗ trợ

Giám sát thực thi (v1.2.0+)#

Các lần chạy theo lịch được bọc trong một script giám sát cung cấp:

  • Chống chồng lấn — nếu lần chạy trước vẫn đang hoạt động, lần chạy theo lịch tiếp theo sẽ bị bỏ qua
  • Chế độ không tương tác — các lần chạy theo lịch buộc OPENCODE_PERMISSION từ chối các prompt tương tác, đảm bảo công việc không bị treo chờ người dùng
  • Timeout cấu hình được — đặt timeoutSeconds để dừng cứng các tác vụ chạy quá lâu với SIGTERM rồi SIGKILL

Phạm vi theo thư mục làm việc#

Công việc được phân chia theo thư mục làm việc. Điều này có nghĩa các dự án khác nhau không xung đột — mỗi dự án có định nghĩa công việc, khóa, nhật ký và đơn vị lập lịch OS riêng biệt.

Skill template tích hợp sẵn#

Plugin đi kèm skill template @scheduled-job-best-practices. Cài đặt vào bất kỳ repo nào bằng một lệnh duy nhất:

Install the scheduled job best practices skill
text

Template được ghi vào .opencode/skill/scheduled-job-best-practices/SKILL.md, bạn có thể tham chiếu trong các prompt công việc đã lên lịch.

Cài đặt#

Thêm plugin vào opencode.json:

opencode.json
{
  "plugins": ["opencode-scheduler"]
}
json

Vậy là xong. Plugin tự động đăng ký tất cả các tool khi OpenCode khởi động.

Các công cụ có sẵn#

Công cụMô tả
schedule_jobTạo công việc theo lịch mới (ngôn ngữ tự nhiên hoặc cron)
list_jobsLiệt kê tất cả công việc đã lên lịch
get_jobLấy chi tiết và metadata của một công việc
update_jobCập nhật lịch trình, prompt hoặc timeout của công việc
delete_jobXóa công việc đã lên lịch và các artifacts
run_jobThực thi công việc ngay lập tức (fire-and-forget)
job_logsXem nhật ký mới nhất từ một công việc
get_versionHiển thị phiên bản scheduler và OpenCode
get_skillLấy skill template tích hợp sẵn
install_skillCài đặt skill template vào repo của bạn
cleanup_globalXóa artifacts scheduler trên tất cả phạm vi

Use cases thực tế#

Săn deal tự động#

Schedule a daily job at 9am to search for standing desks under $300
text

Agent duyệt các chợ trực tuyến, lọc kết quả và gửi deal tốt nhất đến Telegram hoặc Slack — tất cả trong khi bạn ngủ.

Kiểm toán code hàng tuần#

Schedule a job every Monday at 8am to summarize my GitHub notifications
text

Nhận bản tóm tắt hàng tuần về PR, issue và hoạt động trên các repository của bạn.

Giám sát health#

Schedule a job every 6 hours to check if my website is up and alert me on Slack if it's down
text

Không cần dịch vụ giám sát riêng — AI agent của bạn tự xử lý kiểm tra uptime.

Xử lý dữ liệu nền#

Schedule a daily job from /path/to/project to run my-task
text

Giao phó các tác vụ bảo trì định kỳ, dọn dẹp token, hoặc sinh tài liệu cho các agent nền tự động.

Cách hoạt động#

  1. Bạn mô tả công việc bằng ngôn ngữ tự nhiên hoặc cung cấp biểu thức cron
  2. Plugin ghi file cấu hình công việc vào ~/.config/opencode/scheduler/scopes/<scopeId>/jobs/
  3. Nó cài đặt một bộ định thời native OS — .plist cho launchd, .service+.timer cho systemd, hoặc Task Scheduler trên Windows
  4. Vào thời điểm đã định, OS gọi một script giám sát (~/.config/opencode/scheduler/supervisor.pl)
  5. Script giám sát chạy opencode run -- "<prompt>", ghi nhật ký và cập nhật metadata

Xử lý sự cố#

Nếu công việc không chạy, hãy kiểm tra đăng ký scheduler:

  • macOS: launchctl list | grep opencode
  • Linux: systemctl --user list-timers | grep opencode
  • Windows: schtasks /Query /TN "\OpenCode\opencode-job-*"

Kiểm tra nhật ký: Show logs for my-job trong OpenCode.

Đảm bảo thư mục làm việc có opencode.json với cấu hình MCP server — nếu không, các MCP tools sẽ không có sẵn khi chạy theo lịch.

Triết lý#

OpenCode Scheduler là một lớp mỏng có chủ đích. Nó không cố gắng trở thành một bộ lập lịch công việc phân tán hay thay thế cron đám mây. Thay vào đó, nó tận dụng cơ sở hạ tầng lập lịch đã tồn tại trên mọi hệ điều hành lớn, thêm vào lớp giám sát vừa đủ (chống chồng lấn, timeout, tổng hợp nhật ký) để làm cho các AI agent tự động đủ tin cậy cho môi trường sản xuất.

Kết quả: bạn có thể thiết lập các AI agent tự động trong vài phút, chạy trên máy của chính bạn, mà không tốn thêm chi phí hạ tầng.

Tài liệu tham khảo#