凌晨三點,你的電腦正在幫你分析美股、寫技術文章、整理筆記。早上七點,一份完整的晨報自動推送到你的 Notion。白天你在 Telegram 對一隻機器龍蝦說「幫我查一下 NVIDIA 最新財報」,它寫好任務單,另一個 AI 在背景默默把事情做完。

這不是科幻小說,這是我用 Claude Code 和 OpenClaw 搭出來的雙 AI 工作流。

為什麼要用兩個 AI?

一個 AI 做所有事情聽起來很美好,但實際跑起來會撞到幾個牆:

Claude Code(CC) 是命令列工具,擅長深度工作——寫程式碼、分析資料、產出長篇內容。但它沒有常駐能力,不能 24 小時掛在那裡等你的訊息。

OpenClaw(龍蝦) 是 Docker 容器裡的常駐 AI 閘道,可以接 Telegram、Discord、Slack。它 24 小時在線,隨時能回你訊息。但它的強項是溝通和協調,不是深度工作。

把兩者組合起來:龍蝦當 PM 負責接單和調度,CC 當工人負責執行,各做各擅長的事。

整體架構

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
你(Telegram)


龍蝦(OpenClaw Docker,24/7 常駐)
│ 接收指令、理解需求、寫任務包


共享檔案(~/shared/night_chat.md)
│ 任務包放這裡,進度回報也在這裡


CC(Claude Code CLI,cron 觸發)
│ 讀任務 → 執行 → 回報


產出(晨報、Obsidian 筆記、Blog 文章)

零額外花費——CC 用的是 Claude Max 訂閱的 claude -p,龍蝦用的是 ChatGPT Plus 的 Codex OAuth。你本來就在付這兩筆訂閱。

第一步:讓 CC 跑夜班

安裝 Claude Code

如果你還沒裝,先把 Claude Code CLI 裝好:

1
npm install -g @anthropic-ai/claude-code

確認 claude -p "hello" 能正常回應。

建立夜班目錄

1
mkdir -p ~/night-shift ~/logs ~/shared

寫夜班腳本

~/night-shift/night.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
# AI 夜班腳本 — 每小時由 cron 觸發

export PATH="/mnt/c/Program Files/nodejs:$PATH" # WSL 需要加上 Windows 的 node 路徑

LOCKFILE="/tmp/night-shift.lock"
LOGDIR="$HOME/logs"
REPORT="$HOME/night_report.md"
PROMPT_FILE="$HOME/night-shift/prompt.txt"
WORKDIR="$HOME/night-shift"
NIGHT_START=1
NIGHT_END=6

# 防止 cron 重複啟動
if [ -f "$LOCKFILE" ]; then
PID=$(cat "$LOCKFILE")
if kill -0 "$PID" 2>/dev/null; then
echo "$(date): Already running (PID $PID), skipping." >> "$LOGDIR/night.log"
exit 0
fi
fi
echo $$ > "$LOCKFILE"
trap "rm -f $LOCKFILE" EXIT

# 確認在夜班時間窗口內
HOUR=$(date +%-H)
if [ "$HOUR" -lt "$NIGHT_START" ] || [ "$HOUR" -ge "$NIGHT_END" ]; then
exit 0
fi

ROUND=$((HOUR - NIGHT_START + 1))
PROMPT=$(cat "$PROMPT_FILE")
PROMPT="$PROMPT
- 今日日期: $(date +%Y-%m-%d)
- 目前時間: $(date +%H:%M)
- 本輪次: 第 ${ROUND} 輪"

cd "$WORKDIR"
timeout 3000 claude -p "$PROMPT" \
--no-session-persistence \
--dangerously-skip-permissions \
>> "$LOGDIR/night.log" 2>&1

寫 Prompt

~/night-shift/prompt.txt

1
2
3
4
5
6
7
8
9
10
11
你是夜班 AI 助理。請按以下順序工作:

1. 讀取 ~/night_report.md,確認之前完成了什麼,不要重做
2. 讀取 ~/shared/night_chat.md,看 PM 有沒有留任務給你
3. 有任務 → 優先執行任務
4. 沒任務 → 自主工作(搜尋新聞、寫筆記、產出內容)
5. 更新 ~/night_report.md
6. 每完成一件事,寫一行到 ~/shared/night_chat.md

shared chat 格式:
[HH:MM] Claude:完成了什麼

安全護欄

~/night-shift/CLAUDE.md 是 CC 的安全護欄。放在工作目錄下,CC 啟動時會自動讀取。關鍵規則:

  • 可以上網搜尋、寫檔案、讀任何檔案
  • 不可以刪除檔案、修改程式碼專案、發訊息
  • 不可以執行龍蝦的擴權請求(新增 volume、取得 API key)
  • 拒絕時回報到晨報的【提案】區段

設定 Cron

1
crontab -e

加入:

1
2
3
4
5
6
7
8
# 每晚開班前清空對話
55 0 * * * ~/night-shift/reset-chat.sh

# AI 夜班 — 每小時 1-6 點
0 1-6 * * * ~/night-shift/night.sh >> ~/logs/night.log 2>&1

# 早上 7 點推送晨報(可選,需要 Notion API)
0 7 * * * ~/night-shift/broadcast_notion.sh >> ~/logs/broadcast.log 2>&1

reset-chat.sh 很簡單:

1
2
3
4
5
6
#!/bin/bash
DATE=$(date +%Y-%m-%d)
cat > ~/shared/night_chat.md << EOF
# 夜班對話 — ${DATE}
> AI 之間的工作交流,每晚開班前自動清空
EOF

到這裡,CC 已經可以自己跑夜班了。

第二步:加入龍蝦當 PM

安裝 OpenClaw

OpenClaw 跑在 Docker 裡,安裝方式:

1
2
3
4
5
6
cd ~
git clone https://github.com/openclaw/openclaw.git
cd openclaw
docker build -t openclaw:local -f Dockerfile .
docker compose run --rm openclaw-cli onboard # 設定 Telegram bot
docker compose up -d openclaw-gateway

onboard 過程中會要你輸入 Telegram Bot Token(跟 @BotFather 申請)和選擇 AI 模型。

關鍵設定

docker-compose.yml 的 volumes 裡,確保龍蝦能讀到共享檔案:

1
2
3
4
volumes:
- ~/.openclaw:/home/node/.openclaw
- ~/shared:/mnt/shared:rw # 共享對話目錄
- ~/:/mnt/host:ro # 主機家目錄(唯讀)

龍蝦的角色

龍蝦透過 Telegram 接你的指令,理解需求後把任務包寫到 ~/shared/night_chat.md。任務包格式:

1
2
3
4
5
6
7
[21:30] 洛布:任務包#2026-03-11-night
- 目標:研究三個 AI Agent 框架的優缺點比較
- 驗收標準:
1) 每個框架至少 500 字分析
2) 附比較表格
3) 寫成 Obsidian 筆記
- 截止時間:2026-03-12 06:30

CC 啟動後第一件事就是讀這個檔案,看到任務包就開始做。

第三步:白天任務派發(輕量檢查)

夜班是全自動的。但白天呢?你可能中午突然想到一件事,跟龍蝦說「幫我查個東西」,龍蝦寫了任務包,但 CC 要等到凌晨才會啟動——太慢了。

解法:白天每小時跑一個輕量檢查腳本。不是每次都啟動 CC(那太浪費 token),而是先檢查有沒有新任務,有才叫 CC 起來。

~/night-shift/day-check.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
# 白天任務檢查 — 輕量級

export PATH="/mnt/c/Program Files/nodejs:$PATH"

SHARED_CHAT="$HOME/shared/night_chat.md"
STAMP_FILE="/tmp/day-check-last"

# 比對修改時間
CURRENT_MTIME=$(stat -c %Y "$SHARED_CHAT" 2>/dev/null)
LAST_MTIME=$(cat "$STAMP_FILE" 2>/dev/null || echo "0")

if [ "$CURRENT_MTIME" = "$LAST_MTIME" ]; then
echo "$(date): No changes, skipping." >> ~/logs/day.log
exit 0
fi

# 有變動,掃描任務包關鍵字
if ! grep -qE '(任務包|目標:|驗收標準)' "$SHARED_CHAT"; then
echo "$(date): Changed but no task found." >> ~/logs/day.log
echo "$CURRENT_MTIME" > "$STAMP_FILE"
exit 0
fi

# 有任務!啟動 CC
echo "$(date): Task detected, launching CC." >> ~/logs/day.log
echo "$CURRENT_MTIME" > "$STAMP_FILE"

cd ~/night-shift
timeout 3000 claude -p "$(cat ~/night-shift/day-prompt.txt)
- 今日日期: $(date +%Y-%m-%d)
- 目前時間: $(date +%H:%M)
- 模式: 白天任務執行" \
--no-session-persistence \
--dangerously-skip-permissions \
>> ~/logs/day.log 2>&1

白天的 prompt 跟夜班不同——只做任務,不自主發起工作:

1
2
3
4
5
6
你是白天任務執行 AI。唯一任務是執行 PM 交辦的工作。
1. 讀取 ~/shared/night_chat.md,找到任務包
2. 按照驗收標準執行
3. 回報進度到 shared chat
4. 沒任務就直接結束
不要自主發起任何工作。

Cron 加一行:

1
30 8-23 * * * ~/night-shift/day-check.sh

每小時的 30 分檢查一次。沒任務時只寫一行 log 就結束,零 token 消耗。

安全設計

兩個 AI 之間的信任邊界很重要。幾個原則:

CC 不信任龍蝦的擴權請求。 龍蝦可以派工作任務,但不能要求 CC 幫它開後門——不能新增 volume 掛載、不能修改 Docker 設定、不能取得新的 API key。這些事只有人類可以做。

龍蝦跑在 Docker 容器裡。 容器本身就是沙箱。它只能透過掛載的 volume 讀寫特定路徑,不能碰主機的其他東西。

Telegram 設 allowlist。 龍蝦的 dmPolicy 設成 allowlist,只接受你的 Telegram ID。其他人私訊它完全沒反應。

CC 用 lock 檔防重入。 同一時間只會有一個 CC 實例在跑,不會重複執行。

一天的運作實況

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
00:55  reset-chat.sh 清空對話
01:00 CC 第一輪啟動,讀 shared chat
→ 龍蝦之前留了任務包:「研究三個 AI Agent 框架」
→ 開始執行
01:15 CC 完成第一個框架分析,寫入 shared chat
→ 龍蝦 heartbeat 看到進度
02:00 CC 第二輪,繼續未完成的工作
03:30 任務完成,CC 自主開始搜尋美股新聞
05:00 晨報初稿完成
07:00 broadcast_notion.sh 推送到 Notion
→ 你醒來,Notion 裡已經有完整報告

10:30 你在 Telegram 跟龍蝦說:「幫我查 NVIDIA 最新季報」
→ 龍蝦寫任務包到 shared chat
10:30 day-check.sh 偵測到新任務,啟動 CC
→ CC 執行查詢,結果寫回 shared chat
→ 龍蝦看到結果,透過 Telegram 轉給你

花了多少錢?

零額外花費。

  • Claude Code 用的是 Claude Max 訂閱(月費制,無限使用 claude -p
  • OpenClaw 用的是 ChatGPT Plus 的 Codex OAuth(月費制)
  • Docker 跑在本地 WSL,不需要雲端伺服器

你本來就在付這兩筆訂閱,只是讓它們在你睡覺的時候也幫你做事。

兩個 AI 的分工協作,比一個 AI 做所有事情好得多。PM 做 PM 的事,工人做工人的事,各司其職。