跳轉至

🔥 Boring 實戰展示:10 分鐘讓你見識 AI 開發的未來

「不會寫程式沒關係,Boring 幫你搞定一切。」

這不是誇大——這是 Vibe Coding 的真諦。


🎯 什麼是 Boring?

想像你有一個架構師級別的 AI 軍師,它不只會寫程式碼,還會:

🏛️ 設計架構      →  在寫程式碼之前,先幫你規劃全局
🔍 審查代碼      →  像資深工程師一樣 Review 你的代碼  
🛡️ 保護安全      →  自動檢測安全漏洞和敏感資訊外洩
🔄 自動修復      →  一鍵解決 Lint、格式、測試問題
🧠 學習你的風格  →  記住你喜歡怎麼寫程式碼

一句話總結:Boring = 你的 AI 開發團隊(架構師 + 資深工程師 + QA)


🚀 實戰案例 1:從 0 到 1 建立專案

場景:你想建立一個 FastAPI 後端

傳統方式

1. 手動建立專案目錄
2. 初始化 Git
3. 設定虛擬環境
4. 安裝依賴
5. 建立檔案結構
6. 開始寫程式碼...
(30 分鐘後,你還在設定環境)

Boring 方式

你: "幫我建立一個 FastAPI 認證服務,要有 JWT 和 OAuth2"

Boring 架構師: 
  "等等,在開始之前我需要了解幾個問題..."

  🤔 問題 1: 資料庫要用什麼?PostgreSQL 還是 SQLite?
  🤔 問題 2: 需要支援社交登入嗎(Google/GitHub)?
  🤔 問題 3: Token 過期時間多久?

你: "PostgreSQL,要 GitHub 登入,Token 24 小時"

Boring: 
  ✅ 生成架構設計...
  ✅ 建立專案結構...
  ✅ 實作認證邏輯...
  ✅ 撰寫測試...
  ✅ 驗證通過!

  📁 你的專案已準備就緒:
  src/
  ├── main.py           # FastAPI 入口
  ├── auth/
  │   ├── jwt.py        # JWT 實作
  │   ├── oauth.py      # GitHub OAuth
  │   └── middleware.py # 認證中介軟體
  ├── models/           # 資料模型
  └── tests/            # 測試(覆蓋率 85%)

核心指令 (Vibe Coder Style)

你: "幫我建立一個 FastAPI 認證服務,要有 JWT 和 GitHub OAuth"

# 或使用 CLI
boring-route "建立 FastAPI 認證服務"


🛠️ 實戰案例 2:自動修復代碼問題

場景:你的代碼有一堆 Lint 錯誤

傳統方式

$ ruff check src/
Found 47 errors in 12 files.

(然後你開始一個一個修)
# 30 分鐘後...

Boring 方式

你: "/quick_fix"

Boring:
  🔍 掃描中...
  📊 發現 47 個問題:
     - 23 個格式問題
     - 15 個未使用的 import
     - 9 個類型問題

  ⚡ 自動修復中...
  ✅ 47/47 問題已修復
  ✅ 格式化完成
  ✅ 所有測試通過

  總耗時:8.3 秒

這背後發生了什麼

boring-route "/quick_fix"
boring_verify → 找出所有問題
boring_auto_fix → 自動修復
ruff format → 格式化
pytest → 確認沒壞掉

💡 V14.0 提示:使用 boring-route CLI 或自然語言對話,系統會自動路由到正確的工具。


🔒 實戰案例 3:安全掃描與防護

場景:你不小心把 API Key 寫死在程式碼裡

傳統方式

# 你可能到 Push 到 GitHub 後才發現...
# 然後接到 GitHub Secret Scanning 的警告
# 接著緊急 Rotate Key、Force Push...

Boring 方式

你: "/security_scan"

Boring:
  🔍 安全掃描中...

  🚨 發現 3 個嚴重問題!

  ┌─────────────────────────────────────────────────┐
  │ HIGH: 發現硬編碼的 API Key                      │
  │ 位置: src/config.py:23                          │
  │ 內容: STRIPE_API_KEY = "sk_live_..."            │
  │ 建議: 使用環境變數 os.getenv("STRIPE_API_KEY")  │
  └─────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────┐
  │ MEDIUM: 使用已知有漏洞的套件                    │
  │ 套件: requests==2.25.0 (CVE-2023-32681)         │
  │ 建議: 升級到 requests>=2.31.0                   │
  └─────────────────────────────────────────────────┘

  🛡️ 是否自動修復?[Y/n]


🧠 實戰案例 4:RAG 語義搜尋

場景:你接手一個 10 萬行的遺留專案

傳統方式

$ grep -r "authentication" src/
# 得到 500 行結果
# 然後你開始一行行看...

Boring 方式

你: "我想找處理 JWT Token 驗證的函數"

Boring (🌟 **Universal Router 自動路由到 `boring_rag_search`**)::

  🔍 語義搜尋結果:

  1️⃣ src/auth/jwt.py:45 - validate_token()
     相關度: 98%
     "驗證 JWT token 的簽名和過期時間"

  2️⃣ src/middleware/auth.py:23 - require_auth()
     相關度: 87%
     "裝飾器,確保 request 帶有有效 token"

  3️⃣ src/utils/security.py:78 - decode_jwt()
     相關度: 82%
     "解碼 JWT payload,返回 user_id"

  📊 依賴關係圖:
  decode_jwt() ← validate_token() ← require_auth()
                              routes/users.py


🔄 實戰案例 5:安全重構(Transaction)

場景:你要重構核心模組,但怕搞砸

傳統方式

1. git checkout -b refactor-auth
2. 開始改...
3. 改到一半發現思路錯了
4. 手動 git reset 或 revert
5. 心累...

Boring 方式

你: "/safe_refactor 重構認證模組,改用策略模式"

Boring:
  📦 開始事務...

  💾 已建立還原點 [txn-a8f3c2]

  🏛️ 架構師分析:
     "策略模式很適合這個場景,因為..."

  💻 Coder 開始重構...

  🔍 Reviewer 審查中...
     ⚠️ 發現潛在問題: 缺少向後兼容
     💡 建議: 保留舊函數作為 alias

  🧪 驗證結果:
     ✅ 測試通過 (58/58)
     ✅ Lint 通過
     ✅ 類型檢查通過

  ✅ 重構完成!

  是否提交?[Y/n/rollback]

你: "rollback"  # 如果後悔了

Boring:
  ⏪ 已回滾到 [txn-a8f3c2]
  📄 所有檔案已還原


🧠 實戰案例 7:自動學習與進化 (Auto-Learning V14.0 Updated)

場景:AI 老是犯同樣的錯

傳統方式

你: "這不對,這裡要用 `check_password_hash` 不是 `check_password`"
AI: "抱歉我改..."
(第二天,新的對話)
AI: "我又用了 `check_password`..."
(你崩潰...)

Boring 方式 (Auto-Sense Mode)

你: "這不對,這裡要用 `check_password_hash`"
Boring: (修正代碼)

[系統背景運作]:
🔍 偵測到用戶修正 -> 提取模式 -> 存入知識庫

(第二天,新的對話)
你: "幫我寫登入功能"
Boring: 
  ✅ 讀取專案記憶...
  💡 發現學習模式: "Password Hashing Preference"

  "好的,我會使用 `check_password_hash` 進行驗證..."

主動教學: 你也可以主動教它:

你: "/learn 這裡的 API 回傳格式必須包在 `data` 欄位裡"
Boring: ✅ 已學習規則:[API Response Format]


🤖 實戰案例 8:Multi-Agent 協作

場景:複雜任務需要多個角色

你: "建立一個完整的用戶管理系統,包含 CRUD、權限控制和 Audit Log"

Boring:
  ═══════════════════════════════════════
  🏛️ ARCHITECT PHASE
  ═══════════════════════════════════════

  設計決策:
  • 採用 RBAC 權限模型
  • Audit Log 使用 Event Sourcing
  • 用戶資料採用軟刪除

  生成文件:
  • implementation_plan.md
  • database_schema.sql
  • api_spec.yaml

  ═══════════════════════════════════════
  💻 CODER PHASE
  ═══════════════════════════════════════

  實作進度:
  [████████░░] 80%

  已完成:
  ✅ User CRUD endpoints
  ✅ Role model & permissions
  ✅ Audit event dispatcher

  進行中:
  🔄 Permission decorator

  ═══════════════════════════════════════
  🔍 REVIEWER PHASE  
  ═══════════════════════════════════════

  審查報告:
  ┌──────────────────────────────────────┐
  │ 程式碼品質: ⭐⭐⭐⭐☆ (4.2/5)          │
  │ 測試覆蓋率: 78%                       │
  │ 安全評估: 通過                        │
  │ 效能評估: 良好                        │
  └──────────────────────────────────────┘

  建議:
  • 考慮加入 rate limiting
  • 建議對敏感操作加入 2FA

⚡ 常用快捷指令速查表

想做什麼 輸入 Boring 會做什麼
🚀 新專案開發 /vibe_start 完整 Spec-Driven 流程
🔧 修復所有問題 /quick_fix Lint + Format + Test
🛡️ 安全掃描 /security_scan SAST + Secret Detection
🔍 搜尋代碼 /semantic_search RAG 語義搜尋
🔄 安全重構 /safe_refactor Transaction + Verify
📊 品質評估 /evaluate_code LLM Judge 評分
💾 智能提交 /smart_commit Auto-generate commit msg
🗺️ 查看進度 /roadmap 生成甘特圖
🧠 學習風格 /learn_patterns AI 學習你的寫法
❓ 健康檢查 /vibe_check 專案健康度評分

🎮 互動式對話範例

範例 1:Debug 一個詭異的 Bug

你: 我的 API 回傳 500,錯誤是 "TypeError: 'NoneType' object is not iterable"

Boring:
  🔍 分析錯誤...

  📍 Root Cause 定位:
  位置: src/services/user.py:67
  函數: get_user_orders()

  問題:
    orders = db.query(Order).filter_by(user_id=user_id).all()
    return [order.to_dict() for order in orders]  # ← 這裡爆了

  原因: 
    當 user_id 不存在時,返回 None 而非空列表

  🏛️ 架構師建議:
    這是典型的「Null Object Pattern」缺失。
    建議永遠返回空列表 [] 而非 None,
    讓調用方可以安全地遍歷。

  修復:
    orders = db.query(Order).filter_by(user_id=user_id).all() or []

  是否自動修復?[Y/n]

範例 2:效能優化建議

你: "/optimize_performance"

Boring:
  🔍 掃描效能問題...

  ⚠️ 發現 N+1 Query 問題

  位置: src/routes/users.py:34

  問題程式碼:
    users = User.query.all()
    for user in users:
        orders = user.orders  # 每個 user 都觸發一次 DB query

  建議:
    users = User.query.options(
        joinedload(User.orders)
    ).all()

  預估效能提升: 10x (100 users → 1 query vs 101 queries)

🏆 為什麼選擇 Boring?

特性 傳統 AI 助手 Boring
代碼生成
架構設計 ✅ 架構師人設
需求釐清 ✅ SpecKit 五部曲
安全掃描 ✅ SAST + Secret Detection
自動修復 ✅ 一鍵修復
代碼審查 ✅ Multi-Agent Review
風險控制 ✅ Shadow Mode
可回滾 ✅ Transaction
語義搜尋 ✅ RAG Vector Search
學習適應 ✅ 知識庫持久化

🚀 馬上開始

🎮 方式 1:MCP/Smithery(推薦!最簡單)

直接在 Gemini CLICursor 中使用,無需額外設定:

# 安裝到 Gemini CLI
npx -y @smithery/cli@latest install boring/boring --client gemini-cli

然後在 Gemini CLI 中直接對話:

你: "幫我建立一個 FastAPI 認證服務"
Boring: 「好的,讓我先問你幾個問題...」

不需要 PROMPT.md
不需要 boring-setup
✅ 互動式對話,隨時可停


🤖 方式 2:自主循環模式(進階用戶)

用於 全自動、長時間 開發任務,在 CMD/PowerShell 中執行:

# Step 1: 安裝 (只需一次)
pip install boring-aicoding

# Step 2: 建立專案結構 (只有這種模式需要 boring-setup!)
# 注意:在 CMD 執行 boring start 前,*必須* 先執行 boring-setup 初始化專案!
boring-setup my-awesome-app
cd my-awesome-app

# Step 3: 編輯 PROMPT.md,告訴 AI 要做什麼
# Step 4: 啟動自主循環
boring start                         # 使用自動偵測的 CLI
boring start --provider claude-code  # 使用 Claude Code CLI
boring start --provider gemini-cli   # 使用 Gemini CLI

boring-setup 做了什麼?

my-awesome-app/
├── PROMPT.md      # ✅ 必要 - 你要寫的任務說明
├── @fix_plan.md   # 任務清單
├── GEMINI.md      # 專案說明
└── .boring/brain/ # AI 知識庫


📊 兩種方式比較

MCP/Smithery boring start
安裝方式 npx @smithery/cli ... pip install boring-aicoding (必須)
需要 boring-setup ❌ 不需要 ✅ 需要
需要 PROMPT.md ❌ 不需要 ✅ 需要
運行方式 對話式 全自動循環
適合場景 互動開發 長時間自動開發
中斷方式 隨時 Ctrl+C

注意:如果你只使用 Smithery 安裝,是無法在終端機執行 boring start 的!只有 pip 安裝才會提供 boring 指令。


🎯 記住這句話

「專業玩家不記 Tool 名稱,因為 Prompt 已經幫你準備好所有戰術組合。」

你只需要告訴 Boring 你想要什麼,剩下的交給它。


Built with ❤️ by the Boring206


📚 延伸閱讀


最後更新: V14.0.0