排程任務與自動化工作流

在日常開發中,有許多任務是反覆執行的:每天檢查部署狀態、定期執行程式碼掃描、監控 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 點

星期欄位中,07 代表星期日,16 分別代表星期一到星期六。注意:Claude Code 不支援 LW? 等擴充語法,也不支援 MONJAN 等名稱別名。

任務管理:查詢、更新與刪除

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 自動化能力的核心功能之一。從簡單的 /loop 輪詢到持久化的 Desktop 排程,再到與 GitHub Actions 的整合,你可以根據實際需求選擇最合適的方式。善用排程任務,把重複性的開發工作交給 Claude,讓你把時間花在真正需要創造力的地方。