Vibe Coding — Stage 3 · 造系統
M3-4

Vibe Coding 實戰課 — Stage 3 · 造系統

GitHub Actions +
Cloudflare Worker

電腦關機也能跑 — 而且你永遠不止一個選項

M3-4 2 小時 6 輪循環 畢業

按 → 或空白鍵開始

六輪循環,最後一堂

Round 1
三種自動化
Round 2
Actions 實作
Round 3
TG 通知閉環
Round 4
Worker 講師 Demo
Round 5
AI 系統藍圖
Round 6
畢業

這堂課的核心問題
你的系統什麼時候需要「自動跑」?
而且 — 你永遠不止一種選擇

M3-3 回顧:spec.md 與四元素架構

spec.md
UI
資料
邏輯
外部服務
M3-3 你帶走的能力

用 spec.md 讓 AI 理解你的系統全貌
四元素拆解讓複雜系統變可控

今天的問題

系統做好了 — 但你不可能 24 小時盯著電腦
如何讓系統在你關機後繼續運行?

ROUND 1 · 0:00–0:15

你的系統
什麼時候需要自動跑

三種自動化機制,對應三種真實需求

真實案例 1:每日新聞 Pipeline

每天早上 9 點
自動收集新聞
AI 摘要
推送 TG
觸發方式

定時排程 — 不管有沒有新聞,時間到就執行
就像每天早上的鬧鐘

3
次/天
0
人力介入
365
天不間斷

真實案例 2:表單觸發 AI 分析

有人提交表單
自動觸發 AI
分析結果
存 Google Sheet
觸發方式

事件觸發 — 不是時間到了才做,而是有人做了什麼才啟動
就像有人打電話給你才接

真實案例 3:自動週報 + 通知

每週五
AI 產出週報
Commit 到 GitHub
TG 通知
觸發方式

AI 排程 — Claude /schedule 設定後
AI 自己決定什麼時候執行、執行什麼

三種自動化機制

定時排程 Cron

像鬧鐘
時間到就執行
不管外界變化

GitHub Actions

事件觸發 Event

像電話
有人做了某件事才啟動
即時回應

Cloudflare Worker

AI 排程 /schedule

像智慧助理
AI 自己決定何時執行
自主判斷

Claude /schedule

排程 vs 事件驅動

排程(鬧鐘)

固定時間執行

  • 每天 9 點收新聞
  • 每週五產報告
  • 每月 1 號備份

不管有沒有事,時間到就做

事件驅動(電話)

有事才執行

  • 有人提交表單
  • 有人打 API
  • 有人 push 程式碼

沒事不消耗資源,有事即時回應

Round 1 小結

自動化的本質是把「人盯著」變成「系統自己跑」
接下來用 GitHub Actions 實作第一種:定時排程
三個關鍵字

Cron = 鬧鐘 / Event = 電話 / /schedule = 智慧助理

ROUND 2 · 0:15–0:45

GitHub Actions
實作排程

在 M3-3 的專案裡加上自動化 Workflow

操作指令

對 AI 說
幫我建 GitHub Actions workflow
每天早上 9 點執行 Python 腳本
把結果 commit 到 repo
前提

在 M3-3 的專案裡操作
AI 會在你的專案中生成 .github/workflows/daily.yml

AI 生成的 Workflow 結構

給概念用,不用抄 — 4 個區塊串起來

.github/workflows/daily.yml(精簡)
name: Daily Script

on:
  schedule:
    - cron: '0 1 * * *'    # 每天台灣 09:00 跑
  workflow_dispatch:        # 手動觸發按鈕

jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: python main.py

下一頁拆解這 4 個區塊在做什麼

Workflow 四個區塊

1
name

Workflow 的名稱,顯示在 Actions 頁面

2
on

觸發條件 — schedule / push / workflow_dispatch

3
jobs

要執行的任務 — 在什麼環境跑什麼指令

4
steps

具體步驟 — checkout / setup / run / commit

Cron 時區:UTC vs 台灣

常見錯誤

cron: '0 9 * * *'

以為是台灣 9 點
實際是 UTC 9 點 = 台灣 17 點

正確寫法

cron: '0 1 * * *'

UTC 1 點 = 台灣 9 點
台灣時間 - 8 = UTC 時間

記法

台灣想要幾點跑,減 8 就是 cron 要填的數字
台灣 9 點 → 9-8 = 1 → cron: '0 1 * * *'

API Key 放 GitHub Secrets

1
Settings → Secrets → Actions

在 GitHub repo 的設定頁面找到 Secrets

2
New repository secret

名稱填 API_KEY,值填你的 Key

3
Workflow 中引用

${{ secrets.API_KEY }}

絕對不要

把 API Key 直接寫在 YAML 或程式碼裡
Public repo 全世界都看得到你的 Key

Secrets 在 YAML 中的引用

Workflow 中引用 Secret
steps:
  - run: python main.py
    env:
      API_KEY: ${{ secrets.API_KEY }}
      TG_TOKEN: ${{ secrets.TG_TOKEN }}
機制

Secret 在 log 裡會自動被遮蔽成 ***
即使 workflow 出錯,也不會洩漏你的 Key

Push → 觀察 Actions

1
git push

把 workflow 檔案推上 GitHub

2
Actions 頁面

打開 GitHub → Actions → 看到你的 Workflow

3
手動觸發

按 Run workflow → 看 Log → 確認成功

4
檢查結果

回 repo → 看新 commit → 由 github-actions 自動提交

注意:YAML 縮排

錯誤
jobs:
run:
  runs-on: ubuntu-latest

run 沒縮排 → YAML 解析失敗

正確
jobs:
  run:
    runs-on: ubuntu-latest

每層縮排 2 格,層次分明

YAML 格式敏感 — 一個空格的差異就會讓 workflow 完全不跑
讓 AI 幫你生成,出錯就貼 error log 給 AI 修

GitHub Actions 免費額度

PUBLIC REPO
無限
分鐘/月

完全免費
不限次數

PRIVATE REPO
2,000
分鐘/月

免費帳號額度
每天跑一次綽綽有餘

學習階段建議用 Public repo — 無限額度
有敏感內容才需要 Private

講師的真實 Actions

SecondBrain
每日巡檢

每天自動掃描知識庫
編譯 wiki + 推送 Notion
有異常發 TG 告警

AI 新聞
Pipeline

每天 3 次自動收集
AI 摘要 + 配圖
發布到 GitHub Pages

論文收集
Pipeline

每日搜 Scholar + PubMed
自動建 BibTeX
推送摘要到 Notion

這些全部是 GitHub Actions + Python 腳本
跟你剛才做的結構完全一樣

Round 2 小結

Push 完不用管,GitHub 自動跑
你關掉電腦,Actions 依然準時執行
Workflow YAML 已建立

.github/workflows/daily.yml

API Key 放 Secrets

不寫在程式碼裡

手動觸發成功

Actions 頁面看到綠燈

ROUND 3 · 0:45–1:00

通知閉環
不需要你盯著

成功通知你,失敗也告警你

什麼是「閉環」

排程觸發
腳本執行
成功/失敗
TG 通知你
沒有閉環

Actions 跑完了
你不知道跑沒跑
失敗了也沒人告訴你

有閉環

成功 → 手機收到結果
失敗 → 手機收到告警
不需要開電腦就知道狀況

在 Workflow 加上 TG 通知

成功時推送結果
- name: Notify Success
  if: success()
  run: |
    curl -s -X POST \
      "https://api.telegram.org/bot${{ secrets.TG_TOKEN }}/sendMessage" \
      -d chat_id=${{ secrets.TG_CHAT_ID }} \
      -d text="Daily update done"
失敗時推送告警
- name: Notify Failure
  if: failure()
  run: |
    curl -s -X POST \
      "https://api.telegram.org/bot${{ secrets.TG_TOKEN }}/sendMessage" \
      -d chat_id=${{ secrets.TG_CHAT_ID }} \
      -d text="ALERT: Daily update failed"

TG Token 也放 Secrets

1
TG_TOKEN

Telegram Bot 的 Token — 從 @BotFather 取得

2
TG_CHAT_ID

你的 Chat ID — 發訊息給 @userinfobot 取得

注意事項

TG Token 寫在 YAML 裡 → Public repo 全世界看得到
別人可以用你的 Bot 發垃圾訊息

驗證:觸發 → 手機收到

1
Push 更新後的 Workflow

包含 TG 通知的 YAML 推上去

2
Actions → Run workflow

手動觸發一次

3
打開手機 Telegram

看到 Bot 推送的訊息 → 閉環完成

全自動閉環

從 Actions 觸發到手機收到通知
全程不需要你開電腦

Round 3 小結

閉環 = 不需要你盯著
有結果通知你,有問題也告警你
排程
執行
Commit
通知

ROUND 4 · 1:00–1:25

Cloudflare Worker
第二個選擇

講師展示 — 理解差異,不用動手

為什麼需要第二個選擇

1
GAS 有六分鐘限制

M1-3 學的 Google Apps Script,複雜任務跑不完

2
Actions 是排程型的

適合定時跑,不適合即時回應 HTTP 請求

3
Worker 補上即時回應的缺口

有人打你的網址 → 毫秒內回應

Demo:瀏覽器打開 → 即時回應

打開網址
Worker 收到請求
毫秒回應
講師展示

已部署好的 Cloudflare Worker
瀏覽器輸入網址 → 看到即時回應的結果
跟 M1-4 的 GAS doGet 概念相同

關鍵差異

GAS doGet 跑在 Google 的伺服器
Worker 跑在離你最近的 Cloudflare 邊緣節點 — 更快

Worker 程式碼結構

index.js — 跟 GAS 的 doGet 一樣簡單
export default {
  async fetch(request) {
    const url = new URL(request.url)

    if (url.pathname === '/api/hello') {
      return new Response(
        JSON.stringify({ message: 'Hello from Worker' }),
        { headers: { 'Content-Type': 'application/json' } }
      )
    }

    return new Response('Not Found', { status: 404 })
  }
}

GAS 用 doGet/doPost,Worker 用 fetch
概念完全相同 — 收到請求,回傳結果

部署方式:一行指令

透過 IDE 用 CLI 部署
npx wrangler deploy
講師展示

wrangler 是 Cloudflare 的 CLI 工具
一行指令把程式碼推到全球 300+ 個邊緣節點
不需要管伺服器、不需要開 port

這段是講師示範
你需要理解的是:部署可以很簡單,一行搞定

GAS vs Worker vs Actions

GASCloudflare WorkerGitHub Actions
觸發表單/時間/HTTPHTTP Request時間/Push/手動
限制6 分鐘10ms CPU(免費)6 小時
部署手動IDE + CLI自動
免費無限(有速率限制)10 萬次/天Public 無限
適合Google 生態API Proxy/邊緣CI/CD/排程

什麼時候用哪個

GAS

你的資料在 Google
Sheet / Form / Gmail
簡單自動化

Worker

需要即時回應
API Proxy
邊緣運算

Actions

定時排程任務
CI/CD 部署
長時間運算

不是選最好的,而是選最適合你場景的
三個工具解決不同問題

注意:Worker 免費版 CPU 10ms

免費版限制

CPU 時間只有 10ms — 不是 10 秒,是 10 毫秒
只適合輕量運算(轉發請求、格式轉換)
不適合跑 AI 推論或大量資料處理

解法

Worker 當入口(收請求、轉發)
重運算交給後端 API 或 Actions

Round 4 小結

永遠有第二個選擇
GAS 六分鐘限制 → Actions 排程 → Worker 即時回應
工具是為你服務的,不是你被工具綁住

ROUND 5 · 1:25–1:45

我的 AI
系統藍圖

把三個 Stage 學到的能力串成一張圖

AI 系統藍圖

資訊來源
收集
Actions
處理
AI
儲存
GitHub/Sheet
查詢
Pages/Worker
通知
TG
操作

每人畫出自己的 AI 系統藍圖
用這個架構填入你的專案 — 你的資訊來源是什麼?要做什麼處理?存在哪裡?

畫你的藍圖

1
資訊來源

新聞 / 論文 / 表單 / 社群 / API

2
收集方式

Actions 排程 / Worker 接收 / GAS 觸發

3
AI 處理

摘要 / 分類 / 翻譯 / 分析

4
儲存 → 查詢 → 通知

GitHub/Sheet → Pages/Worker → TG/Email

三階段能力棧:你學到了什麼

從 M1-1 到 M3-4,十二堂課堆疊出完整的 AI 系統能力

Stage 1
用 AI
Stage 2 · 串 AI
把 AI 接進產品與流程
Stage 3
造系統

能力棧(上)

能力工具學於
做作品AI 聊天 / IDE / CLIM1-1, M2-3, M3-1
封裝助手GPT / Gem / ProjectM1-2
圖文生成Gemini Gem 多模態M1-2
自動化GAS 觸發器 / ActionsM1-3, M3-4
做網頁GAS / GitHub PagesM1-4, M2-1

能力棧(下)

能力工具學於
安全.env / Secrets / ProxyM2-2, M2-3
API 串接Groq / Gemini / CFM1-4, M2-4
AI 擴展MCP / Skills / CLAUDE.mdM3-1
架構spec.md / 四元素M2-2, M3-3
24/7 運轉Actions / WorkerM3-4

十種能力,十二堂課
每一層都是前一層的延伸

你永遠
有選擇

學習不是只學一種工具
而是讓自己永遠有選擇

你永遠有選擇(一)

做網頁

AI 聊天
GAS doGet
GitHub Pages

存資料

localStorage
Google Sheet
Firebase

部署

GAS
GitHub Pages
Cloudflare Worker

你永遠有選擇(二)

自動化

GAS 觸發器
GitHub Actions
Claude /schedule

通知

Telegram Bot
Email

AI API

Gemini
Groq
HuggingFace
Cloudflare AI

你永遠有選擇(三)

IDE

VS Code
Cursor
Windsurf

CLI

Claude Code
Codex
Gemini CLI

選擇的本質

不是每個都要精通
而是知道有哪些選項,需要時能找到路

Round 5 小結

你不是只會一種工具的人
你是有系統藍圖、有多種選擇的人

ROUND 6 · 1:45–2:00

畢業
與新的開始

六維度反思 + 三階段回顧 + 下一步

六維度反思

最有收穫的一堂
哪一堂課改變了你的做事方式
最挫折的一次
踩過最深的坑是什麼
最意外的發現
原本沒預期能做到的事
最想繼續深入的
哪個方向讓你最有動力
學到的思維轉變
跟開課前相比,想法有什麼不同
想對自己說的話
完成這十二堂課的你

Stage 1 回顧:用 AI

M1-1

AI 聊天做作品
Prompt 四要素
指令品質 = 產出品質

M1-2

封裝 AI 助手
GPTs / Gems
圖文多模態生成

M1-3

AI 自動化流程
GAS 觸發器
表單 → AI → Sheet

M1-4

AI 做網頁
GAS doGet 部署
API 串接初體驗

Stage 1 帶走的核心

會用 AI 產出作品,會做網頁,會接 API,會設自動化

Stage 2 · 串 AI 回顧

M2-1

GitHub Pages
版本控制
正式部署

M2-2

.env / .gitignore
安全三件套
架構拆分

M2-3

IDE + AI
Cursor / Windsurf
AI 不是萬能的

M2-4

API 批量串接
Groq / Gemini
Rate Limit 實戰

Stage 2 · 串 AI 帶走的核心

會部署產品、會保護密鑰、會用 IDE、會串 API

Stage 3 回顧:造系統

M3-1

CLI + MCP
Skills / CLAUDE.md
AI 能力擴展

M3-2

開源社群
供應鏈安全
站在巨人肩上

M3-3

spec.md
四元素架構
系統設計思維

M3-4

Actions / Worker
通知閉環
24/7 自動運轉

Stage 3 帶走的核心

會用 CLI 擴展 AI、會讀開源、會寫 spec、會讓系統自動跑

三階段:完整的能力堆疊

Stage 1
用 AI
Stage 2 · 串 AI
把 AI 接進產品與流程
Stage 3
造系統

你從「用 AI 聊天」走到「讓 AI 系統 24/7 自動運轉」
這不是終點,是起點

帶走清單

本堂定位 持續運作的開始

不只學了什麼,是想法怎麼變了
從「我做事」→ 我設計系統持續做事

從「自動化都差不多」
節奏決定系統型態
從「我按下去才會動」
事件可以接手行動
從「有跑就算好了」
閉環才讓人放心
從「雲端只是主機」
邊緣能成為執行者
從「作品是一個工具」
作品可以長成系統
從「課程到此結束」
我能設計運作世界

M3-4 注意事項總覽

#常見問題學到什麼
1YAML 縮排錯YAML 格式敏感
2cron 時區 UTC時區意識
3Worker CPU 10ms 限制免費版限制
4TG Token 寫在 YAMLGitHub Secrets
5Public vs Private 額度差repo 可見性選擇

M3-4 你帶走的

GitHub Actions 排程 Workflow

電腦關機也能定時執行

Cloudflare Worker 概念

即時回應 HTTP 請求的第二選項

TG 通知閉環

成功通知、失敗告警,不需盯著

AI 系統藍圖

資訊 → 收集 → 處理 → 儲存 → 查詢 → 通知

「永遠有選擇」的認知

不被單一工具綁住

學習是帶入門

學習是帶入門
讓你永遠有選擇的機會和權力

基礎已掌握
接下來選你想深入的方向

應用模組預告

基礎課程畢業後,選擇你想深入的方向

A-1
知識系統

SecondBrain
個人知識庫
自動收集 + 編譯 + 推送

A-2
學術研究

Paper Pipeline
論文收集 + 分析
文獻圖譜 + 寫作輔助

A-3
AI Agent

OpenClaw / Hermes
多 Agent 系統
自主決策 + 協作

選擇你的方向

不需要全選

選一個最有動力的方向開始
基礎課程教的技能在每個方向都用得上

你已經有的
  • Prompt 工程
  • API 串接
  • GitHub + Actions
  • spec.md 架構
  • MCP / Skills
  • 通知閉環
應用模組會加上
  • 領域專業知識
  • 進階系統整合
  • 真實場景實戰
  • 獨立專案產出

Vibe Coding 基礎課程

畢業快樂

從 AI 聊天做作品,到讓 AI 系統 24/7 自動運轉

Stage 1 · 用 AI Stage 2 · 串 AI Stage 3 · 造系統
A-1 知識系統 A-2 學術研究 A-3 AI Agent

M3-4 完成 · 基礎課程結業

1 / 61
章節