# 🌙 AI 夜間持續開發系統

讓 AI 在你睡覺時自動幫你寫程式！

## 📋 系統概述

這是一個完全自動化的 AI 開發系統，能在你睡覺或休息時持續執行開發任務。系統會：

1. ⏰ 每小時的 00, 20, 40 分自動執行（每次間隔 20 分鐘，給 AI 充足時間完成任務）
2. 🤖 調用 AI（Claude/Copilot/Gemini）執行開發任務
3. 📝 自動做 Git commit 記錄每次變更
4. 📊 完整的 Log 追蹤系統
5. 🔄 智能判斷專案是否完成，自動停止

## 🏗️ 系統架構

```
┌─────────────────────────────────────────────────────┐
│                                                       │
│  Cron (每小時 00, 20, 40 分觸發)                     │
│    ↓                                                  │
│  ai-dev-loop.sh (主控腳本)                           │
│    ├─ 讀取 ~/.ai-dev-env (環境變數)                  │
│    ├─ 讀取 .ai-dev-prompt.txt (開發任務)             │
│    ├─ 呼叫 AI CLI 執行開發                           │
│    │   └─ claude/copilot/gemini -p "prompt"          │
│    ├─ 處理 AI 輸出                                   │
│    ├─ Git commit 變更                                │
│    ├─ 寫入 Log                                       │
│    └─ 檢查完成狀態                                   │
│         └─ 如果完成 → 停止                           │
│         └─ 如果未完成 → 等待下次 cron 觸發           │
│                                                       │
└─────────────────────────────────────────────────────┘
```

## 🚀 快速開始

### 1. 給腳本執行權限

```bash
chmod +x ai-dev-loop.sh
chmod +x ai-dev-control.sh
chmod +x install-cron.sh
chmod +x project-configs.sh
```

### 2. 安裝 Cron Job

```bash
./ai-dev-control.sh install-cron
```

### 3. 啟動專案

```bash
# 啟動婚禮 APP 專案
./ai-dev-control.sh start wedding

# 或啟動其他專案
./ai-dev-control.sh start sdd        # SDD 管理系統
./ai-dev-control.sh start iso27001   # ISO27001 系統
./ai-dev-control.sh start blog       # 部落格撰寫
./ai-dev-control.sh start language   # 外語學習系統
```

**新增或修改專案配置**：請參考 `CLAUDE.md` 的「擴展指南」章節，了解如何編輯 `projects.yml` 新增專案。

### 4. 配置專案 Prompt

編輯專案目錄中的 `.ai-dev-prompt.txt` 檔案：

```bash
cd ~/projects/wedding-app
nano .ai-dev-prompt.txt
```

範例 Prompt：

```
# 婚禮規劃 APP - 開發任務

## 當前階段：建立使用者註冊系統

請實作以下功能：
1. 使用者註冊頁面（包含姓名、Email、密碼）
2. 表單驗證
3. 密碼加密
4. 存入資料庫

## 技術棧
- Frontend: React + Tailwind CSS
- Backend: Node.js + Express
- Database: PostgreSQL

## 輸出要求
1. 產生完整可執行的程式碼
2. 包含單元測試
3. 遵循 REST API 最佳實踐
4. 如果此階段完成，請在最後一行輸出: TASK_COMPLETED

## 已完成部分
- 專案初始化
- 資料庫 schema 設計
```

### 5. 查看狀態

```bash
./ai-dev-control.sh status
```

### 6. 立即執行測試（不等 cron）

```bash
./ai-dev-control.sh run
```

## 📝 核心原理說明

### 1. Cron 觸發機制

```bash
# 每小時的 00, 20, 40 分執行
0,20,40 * * * * /path/to/ai-dev-loop.sh
```

**為什麼選擇 20 分鐘間隔？**
- 給 AI 充足時間完成一個開發任務（通常 10-15 分鐘）
- 避免重疊執行
- 一晚 8 小時 = 24 次執行機會

### 2. 環境變數配置

系統使用環境變數控制專案切換：

```bash
# ~/.ai-dev-env
export AI_DEV_PROJECT="wedding-app"
export AI_DEV_PROJECT_DIR="$HOME/projects/wedding-app"
export AI_DEV_AI_PROVIDER="claude"
export AI_DEV_ENABLE="true"
export AI_DEV_MAX_ITERATIONS="50"
```

**動態切換專案：**
```bash
# 切換到不同專案只需更新環境變數
./ai-dev-control.sh start iso27001
# 下次 cron 觸發時就會執行新專案
```

**詳細配置說明**：
- 專案配置管理：請參考 `CLAUDE.md` 的「管理專案配置」章節
- 系統架構：請參考 `docs/ARCHITECTURE.md` 了解配置流程
- 檔案索引：請參考 `docs/INDEX.md` 查看所有配置檔案

### 3. Git 版本控制

每次 AI 執行後自動 commit：

```bash
# Commit message 格式
AI Dev Session - 2025-10-28 02:20:00

Provider: claude
Iteration: 15
Session Log: /home/user/.ai-dev-logs/wedding-app_20251028_022000.log
```

**好處：**
- 每次變更都有記錄
- 可以回溯任何一次 AI 的產出
- 用 `git log` 追蹤開發進度

### 4. Log 追蹤系統

三層 Log 結構：

```
~/.ai-dev-logs/
├── master.log                    # 所有專案的總記錄
├── cron.log                      # Cron 執行記錄
├── wedding-app_20251028_020000.log    # Session 1
├── wedding-app_20251028_022000.log    # Session 2
└── wedding-app_20251028_024000.log    # Session 3
```

**查看方式：**
```bash
# 最新一次執行
./ai-dev-control.sh logs latest

# 所有歷史記錄
./ai-dev-control.sh logs master

# Cron 執行狀況
./ai-dev-control.sh logs cron

# 列出所有 logs
./ai-dev-control.sh logs list
```

### 5. 完成判定機制

**自動偵測專案完成：**

AI 在 prompt 中被告知：
```
如果任務完成，請在最後一行輸出: TASK_COMPLETED
```

系統會：
1. 掃描 AI 輸出
2. 如果發現 `TASK_COMPLETED`
3. 建立 `.project-completed` 標記檔案
4. 下次 cron 執行時自動跳過

**手動控制：**
```bash
# 停止專案（保留進度）
./ai-dev-control.sh stop

# 重置專案（清除進度，重新開始）
./ai-dev-control.sh reset
```

### 6. 迭代次數限制

防止無限循環：

```bash
# 預設最多 50 次迭代
export AI_DEV_MAX_ITERATIONS="50"

# 目前迭代次數存在
~/projects/wedding-app/.ai-dev-iteration
```

**計算範例：**
- 每晚 8 小時 × 3 次/小時 = 24 次
- 50 次迭代 ≈ 約 2 晚的執行量

## 🎯 實際使用案例

### 案例 1：婚禮 APP 開發

**Day 1 晚上（22:00）**
```bash
# 1. 啟動專案
./ai-dev-control.sh start wedding

# 2. 寫好第一階段 prompt
cd ~/projects/wedding-app
cat > .ai-dev-prompt.txt <<EOF
建立基本專案結構：
- React + Vite 初始化
- 安裝 Tailwind CSS
- 建立基本路由
- 首頁設計

完成後輸出: TASK_COMPLETED
EOF

# 3. 去睡覺 😴
```

**Day 2 早上（06:00）**
```bash
# 查看進度
./ai-dev-control.sh logs latest

# 查看 git 歷史
cd ~/projects/wedding-app
git log --oneline

# 測試 AI 產生的程式碼
npm run dev
```

**Day 2 晚上（22:00）**
```bash
# 更新 prompt 為第二階段
cat > .ai-dev-prompt.txt <<EOF
建立使用者註冊系統...
（詳細規格）
EOF

# 繼續睡覺 😴
```

### 案例 2：同時推進多專案

**週一晚上：婚禮 APP**
```bash
./ai-dev-control.sh start wedding
# 8 小時 × 3 次 = 24 次執行
```

**週二晚上：SDD 管理系統**
```bash
./ai-dev-control.sh start sdd
# 切換專案，繼續利用夜間時間
```

**週三白天：查看兩個專案進度**
```bash
# 查看婚禮 APP
cd ~/projects/wedding-app && git log

# 查看 SDD
cd ~/projects/sdd-management && git log
```

## 🛠️ AI Provider 配置

### Claude (推薦)

```bash
# 安裝 Claude CLI
npm install -g @anthropic-ai/claude-cli

# 配置 API key
export ANTHROPIC_API_KEY="your-key"

# 測試
claude -p "Hello"
```

### GitHub Copilot

```bash
# 安裝 Copilot CLI
npm install -g @github/copilot-cli

# 登入
copilot login

# 測試
copilot -p "Hello"
```

### Gemini

```bash
# 安裝 Gemini CLI（如果有的話）
# 或使用 curl 調用 API

# 配置
export GEMINI_API_KEY="your-key"
```

## 📊 效益分析

### Token 使用優化

假設每次 AI session 使用 10K tokens：

```
一晚 8 小時 × 3 次 = 24 sessions
24 sessions × 10K tokens = 240K tokens/晚

如果是 Claude Sonnet：
240K tokens ≈ $0.72/晚
一個月 30 晚 ≈ $21.6

但你獲得：
- 192 小時的 AI 開發時間
- 完全自動化
- 不影響白天工作
```

### 開發速度對比

| 方式 | 一週進度 | 時間利用 |
|------|---------|---------|
| 純手動 | 20 小時 | 僅白天工作時間 |
| AI 輔助（白天） | 40 小時 | 白天 + AI 加速 |
| **夜間 AI 系統** | **60+ 小時** | **白天 + 夜間 24/7** |

## 🔧 進階配置

### 自訂 AI Prompt 策略

**循序漸進式：**
```bash
# 第一晚：基礎建設
# 第二晚：核心功能
# 第三晚：進階功能
# 第四晚：測試與優化
```

**平行開發式：**
```bash
# 專案 A (週一三五)
# 專案 B (週二四六)
# 專案 C (週日)
```

### 整合其他工具

**加入測試自動化：**
```bash
# 在 ai-dev-loop.sh 中加入
npm test
if [ $? -eq 0 ]; then
    git commit -m "Tests passed"
else
    git commit -m "Tests failed - needs review"
fi
```

**加入 CI/CD：**
```bash
# git commit 後自動推送
git push origin auto-dev-branch
```

## ⚠️ 注意事項

### 1. AI 產出需要驗證

- 每天早上檢查 AI 的產出
- 運行測試確保功能正確
- 必要時手動修正

### 2. Prompt 設計很重要

- **好的 Prompt**：清楚、具體、有範例
- **壞的 Prompt**：模糊、過於籠統、沒有輸出格式

### 3. Token 預算控制

```bash
# 設定迭代上限
export AI_DEV_MAX_ITERATIONS="20"  # 約 2 晚

# 監控使用量
./ai-dev-control.sh logs master | grep "Session"
```

### 4. Git 管理

```bash
# 定期整理 commits
git rebase -i HEAD~10

# 建立清楚的 branch 策略
git checkout -b ai-dev/wedding-app-auth
```

## 🎓 最佳實踐

### 1. 分階段開發

```
階段 1：專案初始化（1-2 晚）
階段 2：核心功能開發（3-5 晚）
階段 3：進階功能（2-3 晚）
階段 4：測試與優化（1-2 晚）
```

### 2. 清楚的 Prompt 結構

```markdown
# 專案名稱 - 當前階段

## 目標
（清楚描述這個階段要做什麼）

## 技術要求
（技術棧、框架版本等）

## 輸入
（當前專案狀態、已完成部分）

## 輸出要求
1. 完整可執行的程式碼
2. 包含註解
3. 包含測試
4. 如果完成輸出: TASK_COMPLETED

## 範例
（如果有的話，給 AI 一個參考）
```

### 3. 定期檢查點

```bash
# 每天早上的例行檢查
./ai-dev-control.sh status
./ai-dev-control.sh logs latest
cd ~/projects/<project> && git log --oneline -10
```

### 4. 備份策略

```bash
# 自動推送到 GitHub
cd ~/projects/wedding-app
git remote add origin <your-repo>
git push origin main

# 或在 ai-dev-loop.sh 中自動推送
```

## 🐛 故障排除

### Cron 沒有執行

```bash
# 檢查 cron 服務
sudo systemctl status cron

# 查看 cron log
./ai-dev-control.sh logs cron

# 測試腳本
./ai-dev-control.sh run
```

### AI CLI 找不到

```bash
# 檢查 PATH
echo $PATH

# 查看 AI CLI 位置
which claude
which copilot

# 在 cron 中使用完整路徑
/usr/local/bin/claude -p "..."
```

### 權限問題

```bash
# 確保腳本可執行
chmod +x ai-dev-loop.sh

# 確保 log 目錄可寫
chmod 755 ~/.ai-dev-logs
```

## 📚 相關資源

- [Claude CLI 文件](https://docs.anthropic.com/en/docs/claude-cli)
- [GitHub Copilot CLI](https://github.com/github/copilot-cli)
- [Cron 教學](https://crontab.guru/)

## 🤝 貢獻

歡迎提交 Issue 或 PR！

## 📄 授權

MIT License

---

**Happy Coding While Sleeping! 😴💻**
