在日常開發中,有許多任務是反覆執行的:每天檢查部署狀態、定期執行程式碼掃描、監控 CI/CD 流程、定時產生報告等。Claude Code 提供了強大的排程任務(Scheduled Tasks)功能,讓你可以將這些重複性工作自動化,從而專注在更有價值的開發工作上。這篇文章將帶你全面了解 Claude Code 的排程任務系統,從基礎設定到進階應用,打造高效的自動化工作流。
排程任務概觀:三種排程方式
Claude Code 提供三種不同的排程方式,各自適用於不同的使用情境。選擇正確的排程方式是建立穩定自動化工作流的第一步。
| 特性 | Cloud 雲端排程 | Desktop 桌面排程 | /loop 工作階段排程 |
|---|---|---|---|
| 執行環境 | Anthropic 雲端 | 本機 | 本機 |
| 需要開機 | 否 | 是 | 是 |
| 需要開啟工作階段 | 否 | 否 | 是 |
| 重啟後保留 | 是 | 是 | 否(工作階段範圍) |
| 存取本機檔案 | 否(全新 clone) | 是 | 是 |
| 最小間隔 | 1 小時 | 1 分鐘 | 1 分鐘 |
Cloud 雲端排程適合不依賴本機環境的自動化任務,即使電腦關機也能可靠執行。Desktop 桌面排程適合需要存取本機檔案和工具的任務。/loop 指令則適合在開發過程中快速建立臨時性的輪詢任務。
使用 /loop 快速建立排程任務
/loop 是 Claude Code 內建的 Skill,也是建立排程任務最快速的方式。只需要指定間隔時間和要執行的提示詞,Claude 就會自動將其轉換為 cron 表達式並在背景執行。
基本語法
# 每 5 分鐘檢查部署狀態
/loop 5m check if the deployment finished and tell me what happened
# 每 2 小時檢查建置結果
/loop check the build every 2 hours
# 使用預設間隔(每 10 分鐘)
/loop check the build
間隔時間語法
| 寫法 | 範例 | 解析結果 |
|---|---|---|
| 前綴式 | /loop 30m check the build | 每 30 分鐘 |
| 後綴式(every) | /loop check the build every 2 hours | 每 2 小時 |
| 不指定間隔 | /loop check the build | 預設每 10 分鐘 |
支援的時間單位包括:s(秒)、m(分鐘)、h(小時)和 d(天)。由於 cron 的最小粒度為一分鐘,秒數會自動無條件進位至最近的分鐘數。
串接其他指令與 Skill
/loop 的強大之處在於它可以串接其他指令或 Skill。這讓你可以將已經封裝好的工作流程,以排程方式重複執行。
# 每 20 分鐘自動執行 PR Review
/loop 20m /review-pr 1234
# 每 1 小時執行自訂的測試 Skill
/loop 1h /run-tests --suite integration
一次性任務與提醒
除了重複執行的排程任務,Claude Code 也支援一次性任務。你可以用自然語言描述想要在特定時間執行的動作,Claude 會自動解析並排程,任務執行完畢後會自動刪除。
# 在下午 3 點提醒推送 release 分支
remind me at 3pm to push the release branch
# 45 分鐘後檢查整合測試結果
in 45 minutes, check whether the integration tests passed
# 使用 ISO 8601 格式指定精確時間(適用於 Desktop 排程)
# fireAt: "2026-06-11T14:30:00+08:00"
一次性任務特別適合用在:等待長時間建置完成後的檢查、提醒自己執行特定操作、以及在指定時間自動觸發某個流程。
Cron 表達式完整指南
Claude Code 的排程系統使用標準的五欄位 cron 表達式:分鐘 小時 日 月 星期。所有時間都以本地時區解析,而非 UTC。這意味著 0 9 * * * 代表的是你所在時區的早上 9 點。
常用 Cron 表達式範例
| Cron 表達式 | 說明 | 適用情境 |
|---|---|---|
*/5 * * * * | 每 5 分鐘 | 快速輪詢部署狀態 |
0 * * * * | 每小時整點 | 定期健康檢查 |
0 9 * * * | 每天早上 9 點 | 每日報告產生 |
0 9 * * 1-5 | 週一到週五早上 9 點 | 工作日自動化任務 |
30 14 15 3 * | 3 月 15 日下午 2:30 | 特定日期的一次性任務 |
0 0 1 * * | 每月 1 日午夜 | 月度報告或清理任務 |
Cron 欄位支援語法
| 語法 | 說明 | 範例 |
|---|---|---|
* | 萬用字元(任意值) | * * * * * 每分鐘 |
5 | 指定單一值 | 5 * * * * 每小時第 5 分鐘 |
*/15 | 步進值 | */15 * * * * 每 15 分鐘 |
1-5 | 範圍 | 0 9 * * 1-5 週一到週五 |
1,15,30 | 逗號分隔列表 | 0 9,12,18 * * * 9、12、18 點 |
星期欄位中,0 或 7 代表星期日,1 到 6 分別代表星期一到星期六。注意:Claude Code 不支援 L、W、? 等擴充語法,也不支援 MON、JAN 等名稱別名。
任務管理:查詢、更新與刪除
Claude Code 提供了完整的任務管理功能,你可以使用自然語言或直接呼叫底層工具來管理排程任務。
自然語言管理
# 列出所有排程任務
what scheduled tasks do I have?
# 取消特定任務
cancel the deploy check job
# 更新任務的排程時間
change the build check to run every 30 minutes instead
底層工具 API
| 工具名稱 | 用途 | 說明 |
|---|---|---|
CronCreate | 建立新任務 | 接受 5 欄位 cron 表達式、執行提示詞,以及是否為重複任務 |
CronList | 列出所有任務 | 顯示任務 ID、排程和提示詞 |
CronDelete | 刪除任務 | 透過 8 字元任務 ID 取消任務 |
每個排程任務都有一個唯一的 8 字元 ID,可以用來精確指定要操作的任務。單一工作階段最多可以同時擁有 50 個排程任務。
Desktop 排程任務:持久化的自動化
與 /loop 的工作階段範圍不同,Desktop 排程任務會以 SKILL.md 檔案的形式儲存在本機,即使關閉 Claude Code 再重新開啟也會繼續執行。每次任務觸發時會啟動一個全新的工作階段來執行。
SKILL.md 任務檔案格式
# 任務檔案儲存路徑
# ~/Documents/Claude/Scheduled/{taskId}/SKILL.md
# SKILL.md 檔案結構範例
---
description: "每日檢查專案依賴更新"
cronExpression: "0 9 * * 1-5"
enabled: true
---
# 每日依賴更新檢查
請檢查目前專案中所有 npm 依賴套件是否有可用更新,
特別注意安全性更新,並產生一份摘要報告。
## 執行步驟
1. 執行 npm outdated 檢查過期套件
2. 執行 npm audit 檢查安全漏洞
3. 整理結果並產生報告
Desktop 排程任務可以透過 /schedule 指令在 CLI 中建立,也可以透過 Cowork 桌面應用的 UI 介面設定。任務支援啟用/停用切換,方便你暫時暫停某個自動化流程而不需要刪除它。
排程執行機制與注意事項
了解排程任務的內部執行機制,可以幫助你設計出更可靠的自動化工作流。
執行優先順序
排程器每秒檢查是否有到期的任務,並將其排入低優先佇列。排程任務會在你的對話回合之間觸發,而不會在 Claude 正在回應時中斷。如果任務到期時 Claude 正在忙碌,任務會等到當前回合結束後才執行。
Jitter 時間偏移機制
為了避免所有工作階段在同一時刻集中發送 API 請求,排程器會加入一個確定性的偏移量(Jitter)。重複性任務最多會延遲觸發間隔的 10%,上限為 15 分鐘。一次性任務在整點或半點時最多會提前 90 秒觸發。偏移量是根據任務 ID 計算的,因此同一任務的偏移量始終一致。
如果你需要較精確的觸發時間,建議將 cron 的分鐘欄位設為非整點或非半點的時間,例如使用 3 9 * * * 而非 0 9 * * *。
七天自動過期機制
工作階段內的重複性任務會在建立後 7 天自動過期並刪除。這個機制防止了被遺忘的排程任務無限期執行。如果你需要長期運行的排程任務,建議使用 Cloud 或 Desktop 排程任務,或者在過期前手動取消並重新建立。
與系統排程工具的整合
除了 Claude Code 內建的排程功能,你也可以將 Claude Code 與作業系統的 cron 或 CI/CD 工具結合,實現更靈活的自動化流程。
搭配 Linux/macOS Cron
# 編輯 crontab
crontab -e
# 每天早上 9 點執行 Claude Code 任務
0 9 * * * cd /path/to/project && claude -p "檢查昨天的部署日誌並產生摘要" --output-format text > /tmp/daily-report.md
# 每週一早上 8:30 執行程式碼品質檢查
30 8 * * 1 cd /path/to/project && claude -p "執行完整的程式碼品質掃描" --output-format text >> /var/log/code-quality.log 2>&1
搭配 GitHub Actions
# .github/workflows/scheduled-review.yml
name: Scheduled Code Review
on:
schedule:
# 每天 UTC 01:00(台灣時間早上 9:00)
- cron: '0 1 * * 1-5'
workflow_dispatch: # 允許手動觸發
jobs:
daily-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Claude Code Review
run: |
npx @anthropic-ai/claude-code -p \
"Review recent commits and check for potential issues" \
--output-format text
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
監控自動化任務的執行狀態
自動化任務的可觀測性至關重要。你需要知道任務是否按時執行、執行結果如何、以及是否有任何錯誤需要處理。
內建監控方式
# 在 Claude Code 工作階段中查看任務狀態
what scheduled tasks do I have?
# 查看特定任務的執行歷史
show me the results of the last deployment check
# Desktop 排程任務的通知設定
# 建立任務時設定 notifyOnCompletion: true
# 即可在任務完成時收到通知
搭配日誌記錄
# 建立自動化任務的日誌記錄腳本
#!/bin/bash
# scheduled-task-runner.sh
LOG_DIR="$HOME/.claude-tasks/logs"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
TASK_NAME="$1"
LOG_FILE="$LOG_DIR/${TASK_NAME}_${DATE}.log"
mkdir -p "$LOG_DIR"
echo "=== Task: $TASK_NAME ===" >> "$LOG_FILE"
echo "Started: $(date)" >> "$LOG_FILE"
cd /path/to/project && claude -p "$2" \
--output-format text >> "$LOG_FILE" 2>&1
EXIT_CODE=$?
echo "Finished: $(date)" >> "$LOG_FILE"
echo "Exit code: $EXIT_CODE" >> "$LOG_FILE"
# 如果任務失敗,發送通知
if [ $EXIT_CODE -ne 0 ]; then
echo "Task $TASK_NAME failed!" | mail -s "Claude Task Alert" admin@example.com
fi
實際應用範例
以下是幾個常見的排程任務應用場景,展示如何將 Claude Code 的排程功能應用在日常開發工作中。
範例一:每日開發報告
# 使用 /loop 在工作階段中設定
/loop 1d generate a daily development report including:
- git log for today
- open PR status
- failing tests summary
- dependency security alerts
# 或使用 Desktop 排程任務(SKILL.md 格式)
---
description: "每日開發報告"
cronExpression: "0 9 * * 1-5"
enabled: true
---
請產生今日的開發報告,包含以下內容:
1. 今天的 git commit 紀錄摘要
2. 所有開放中的 Pull Request 狀態
3. 失敗的測試案例清單
4. npm audit 安全性警告
範例二:自動化程式碼掃描
# 每週一執行完整程式碼品質掃描
---
description: "週度程式碼品質掃描"
cronExpression: "0 8 * * 1"
enabled: true
---
請對整個專案執行程式碼品質掃描:
1. 檢查是否有未使用的變數和 import
2. 找出重複的程式碼區塊
3. 檢查函式的複雜度(Cyclomatic Complexity)
4. 確認所有 TODO/FIXME 註解是否有對應的 Issue
5. 產生一份 Markdown 格式的報告存到 reports/ 目錄
範例三:定期備份與環境檢查
# 每天檢查備份狀態和環境健康度
---
description: "環境健康度檢查"
cronExpression: "0 7 * * *"
enabled: true
---
請執行以下環境健康度檢查:
1. 確認資料庫備份是否在過去 24 小時內完成
2. 檢查磁碟空間使用率
3. 驗證 SSL 憑證到期日
4. 確認所有必要的環境變數都已設定
5. 測試外部 API 端點的連通性
6. 如果發現任何異常,整理成警告報告
停用排程任務
如果你需要完全停用排程功能,可以設定環境變數 CLAUDE_CODE_DISABLE_CRON=1。啟用此設定後,cron 工具和 /loop 指令將無法使用,所有已排程的任務也會停止觸發。
# 在 shell 設定檔中停用排程功能
export CLAUDE_CODE_DISABLE_CRON=1
# 或在啟動 Claude Code 時臨時停用
CLAUDE_CODE_DISABLE_CRON=1 claude
限制與注意事項
| 限制項目 | 說明 | 建議替代方案 |
|---|---|---|
| 工作階段範圍 | /loop 任務僅在 Claude Code 執行期間有效,關閉後全部清除 | 改用 Desktop 或 Cloud 排程任務 |
| 不補執行 | 如果任務觸發時 Claude 正忙,不會逐一補執行錯過的次數 | 設計任務時考慮冪等性 |
| 7 天自動過期 | 工作階段內的重複任務 7 天後自動刪除 | 使用 Cloud/Desktop 排程或定期重建 |
| 同時任務上限 | 單一工作階段最多 50 個排程任務 | 合併相關任務或使用外部排程 |
| Cloud 最小間隔 | Cloud 排程任務的最小間隔為 1 小時 | 高頻任務改用 Desktop 或 /loop |
延伸閱讀
- Claude Code 官方文件 – Scheduled Tasks
- Claude Code 官方文件 – Desktop Scheduled Tasks
- Claude Code 官方文件 – Cloud Scheduled Tasks
- Claude Code 官方文件 – GitHub Actions 整合
- Claude Code 官方文件 – Skills 系統
排程任務是 Claude Code 自動化能力的核心功能之一。從簡單的 /loop 輪詢到持久化的 Desktop 排程,再到與 GitHub Actions 的整合,你可以根據實際需求選擇最合適的方式。善用排程任務,把重複性的開發工作交給 Claude,讓你把時間花在真正需要創造力的地方。