標籤: Claude Code

  • 用 Claude Code 把回歸測試交給 AI 寫

    用 Claude Code 把回歸測試交給 AI 寫

    📌 本文重點

    • 用 /init 讓 Claude Code 讀懂你的 repo
    • 用 skill.md 固化團隊測試與安全規則
    • 讓 Claude Code 生成並在 CI 中跑 Playwright 測試
    • 維持「AI 生成 + 人類審核」的測試節奏

    一句話說完:用一個指令 /init 加上一份 skill.md,讓 Claude Code 讀懂你的前端專案與測試習慣,然後自動幫你生成 Playwright 測試腳本,再用 GitHub Action 接到每一次 PR 上跑。

    原文靈感來源: How to Use Claude Code for QA Automation (Skills, Playwright, and CI)


    核心功能:三步就能把 QA 工作流交給 AI

    這套組合主要有三個關鍵:專案上下文載入、skills 規則、和與 Playwright 的互動方式。

    💡 關鍵: 把「專案上下文 + 團隊規則」一起交給 Claude Code,才能生成真正可用、符合你團隊風格的測試碼。

    1. 用 /init 載入專案上下文

    Claude Code 不只是在聊天視窗裡「猜」你的專案,而是直接讀你 repo。

    可以馬上做的事:

    • 在本機或雲端開好 Claude Code(例如透過 Claude.ai 的 Code 模式,或官方提供的 IDE Plugin / MCP 客戶端)。
    • 在專案根目錄啟動 Claude Code、輸入:

    bash
    /init

    • 等它掃完後,直接問:

    請幫我針對 checkout flow 生成 Playwright 測試,大致流程是:登入 → 加入購物車 → 結帳

    效果:Claude Code 會以「已讀專案」的視角來寫測試,會參考現有路由、元件命名、可能已有的測試風格,而不是空想一組流程。

    2. 用 skill.md 固化團隊測試規則

    skill.md 是給 Claude Code 的「團隊手冊」。裡面寫:你們怎麼命名測試、怎麼處理登入、怎麼避開敏感資訊、Playwright 檔案放哪裡。

    範例 skill.md 內容:

    # QA skills for this repo
    
    ## 檔案結構
    - 所有 E2E 測試放在 `tests/e2e` 底下,使用 TypeScript。
    - 每個 user flow 使用一個檔案,例如:`checkout.spec.ts`.
    
    ## Playwright 規則
    - 優先使用 `data-testid` 作為 selector,不使用純 class 名稱。
    - 測試帳號從環境變數讀取,例如 `process.env.TEST_USER_EMAIL`。
    - 不在測試碼中出現明碼密碼。
    
    ## 測試風格
    - 使用 `test.step` 標記關鍵步驟。
    - 針對主要 user flow 須包含:登入成功、關鍵操作成功、畫面上關鍵文案存在。
    

    放好 skill.md 後,在 Claude Code 裡輸入:

    /load skills/skill.md
    

    或依工具介面選擇「載入技能檔」,之後它寫的 Playwright 測試就會遵守這些規則。

    3. 讓 Claude Code 寫 Playwright 測試並實際跑

    Playwright 是這條鏈的「手腳」,負責開瀏覽器跑流程。Claude Code 則負責:依你描述的 user flow + 專案上下文 + skills 規則,寫出測試碼。

    基本互動方式:

    • 先在專案中安裝 Playwright:

    bash
    npm init playwright@latest

    • 在 Claude Code 中告訴它:

    請根據 `skill.md`,為 /checkout 頁面寫一個 smoke test,檔案放在 tests/e2e/checkout.spec.ts。

    • 拿到程式碼後,貼回 repo,然後本機跑:

    bash
    npx playwright test tests/e2e/checkout.spec.ts

    如果你有 Playwright MCP 或 CLI 工具接到 Claude Code,還可以讓它幫你直接觸發測試並閱讀報告,再根據錯誤修正測試碼。原文中稱這類工具為「browser tool」,核心概念是:Claude Code 不只寫檔案,還能操作 Playwright 執行測試,再回饋結果。


    適合誰用:三個典型場景

    1. 無 QA 團隊的小組,快速補上回歸測試

    情境:3–5 人前端/全端小組,平常只有少量手動測試,每次改動都怕踩到舊功能。

    可以這樣用:

    • 先用 /init 讓 Claude Code 讀 repo,再寫一份簡單 skill.md 定義「基本防線」:登入、主要頁面打開、關鍵按鈕能點。
    • 每次新功能 PR 前,讓它根據描述生成一個 E2E smoke test 檔案,補在 tests/e2e。

    好處:不用從零學完整 Playwright API,只要能說清楚「使用者會怎麼操作」,就能生成第一版測試,之後再手動微調。

    💡 關鍵: 小團隊在沒有專職 QA 的情況下,可以用 Claude Code 快速建立最小可用的回歸測試網。

    2. 重構時自動生成 smoke test

    情境:你準備大幅重構某個頁面或路由結構,原本完全沒有 E2E 測試。

    操作方式:

    1. 重構前,用 Claude Code:

    請依目前程式碼與 skill.md,替 /profile /settings 產生 smoke test,確認能載入、主要按鈕可點擊、表單可送出。

    1. 跑過一次 Playwright 測試,確認初版綠燈。
    2. 進行重構,再跑同一套測試,看是否有關鍵 flow 失效。

    這樣即使沒有完整回歸清單,也有一層「AI 生成 + 人類審核」的最小防護網。

    3. SaaS 產品針對關鍵 user flow 建 AI 輔助防護網

    情境:B2B SaaS,核心收入來自幾個關鍵流程:註冊、升級方案、付款、邀請成員。

    建議 workflow:

    • 列出 3–5 個最關鍵 user flow,寫入 skill.md(包含帳號類型、環境變數使用方式)。
    • 用 Claude Code 生成相對應的 Playwright 測試檔,命名清楚如 upgrade-plan.spec.ts、invite-member.spec.ts。
    • 接到 CI 上,對每一個 PR 都跑這幾個測試。任何破壞關鍵 flow 的改動,都會在合併前被攔下。

    怎麼開始:從安裝到第一次 PR 自動測試

    步驟 1:準備環境(Claude Code、Playwright、GitHub Action)

    工具組合可以整理成這樣的比較表:

    名稱 核心功能 免費方案 適合誰
    Claude Code 讀 repo、生成測試碼、用 skills 套團隊規則 有(視方案而定) 想讓 AI 寫測試的前端/全端工程師
    Playwright 瀏覽器自動化、E2E/UI 測試 完全免費、開源 任何需要瀏覽器測試的團隊
    anthropics/claude-code-action 在 CI 中呼叫 Claude Code GitHub Action 免費層可用 想在 PR 自動跑 AI 輔助測試的團隊

    💡 關鍵: 利用 GitHub Action 免費層,就能在每次 PR 上跑 AI 輔助的測試建議,而不需要額外建置複雜基礎設施。

    安裝重點:

    • Playwright:

    bash
    npm init playwright@latest

    依指示選擇 TypeScript / E2E 等選項即可。

    • Claude Code:視你使用的介面而定,可從 Anthropic 官方文件 找到 IDE 插件、MCP 客戶端或 API 方式。
    • GitHub Action:在 repo 建立 .github/workflows/claude-code-qa.yml,稍後填入設定。

    步驟 2:寫一份實用的 skill.md

    建議從最少但有用的規則開始,放在 skills/skill.md:

    # QA skills for web-app
    
    ## 測試檔命名
    - 放在 `tests/e2e`,檔名以頁面或流程命名,例如 `login.spec.ts`.
    
    ## Selector 規則
    - 優先使用 `data-testid`,若無,再考慮 `role` 或文字。
    - 不使用易變動的 CSS class 作 selector。
    
    ## 帳號與敏感資訊
    - 測試帳號使用環境變數:`TEST_USER_EMAIL`、`TEST_USER_PASSWORD`。
    - 測試碼中不得出現明碼密碼或真實金流資訊。
    

    然後在 Claude Code 介面內載入它,再要求:

    依照 skill.md,替登入流程寫一個 Playwright 測試檔,檔名 login.spec.ts。
    

    步驟 3:在 PR 上跑第一次自動測試

    使用官方的 GitHub Action anthropics/claude-code-action(可在 GitHub Marketplace 搜尋)。下面是一個簡化版的 YAML 範例:

    name: Claude Code QA
    
    on:
      pull_request:
        types: [opened, synchronize]
    
    jobs:
      qa-tests:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout repo
            uses: actions/checkout@v4
    
          - name: Setup Node
            uses: actions/setup-node@v4
            with:
              node-version: '20'
    
          - name: Install dependencies
            run: |
              npm ci
    
          - name: Run Playwright tests
            run: |
              npx playwright install --with-deps
              npx playwright test
    
          - name: Claude Code QA suggestions
            uses: anthropics/claude-code-action@v1
            env:
              ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
            with:
              command: |
                /init
                /load skills/skill.md
                請根據此 PR 的變更,建議需要新增或更新的 Playwright 測試檔案,並在輸出中附上完整程式碼。
    

    這個 workflow 做兩件事:

    • 先跑你現有的 Playwright 測試。
    • 再呼叫 Claude Code,根據 PR 內容、專案上下文與 skill.md,提出「要加哪些測試」的建議與程式碼(通常會顯示在 Action log 裡)。

    你可以把這些建議複製回本地、經過審查後再送新的 commit。


    實務注意事項:一定要有人審

    AI 生成的測試碼不會自動保證品質,原文也特別提醒幾點:

    • Selector 審查:確認沒有用到短命 class 名稱,也沒有過度依賴容易變動的文字文案。
    • 敏感資訊:確保沒有把真實密碼、金流 token 或內部帳號寫死在測試碼裡,全部改用環境變數或假資料。
    • 錯誤判斷:有些流程「成功」的定義很細(例如後端有隱藏錯誤),需要你在 skill.md 內明確說明檢查方式,或手動補上斷言。

    只要保持「AI 幫你寫第一版,人類負責審核與修正」的節奏,Claude Code + Playwright 就能在幾天內幫你補上一整層過去一直欠著的 QA 防護網。

    🚀 你現在可以做的事

    • 在現有前端專案中建立 skills/skill.md,寫下你們的基本測試與安全規則,並在 Claude Code 中執行 /init 與 /load skills/skill.md
    • 安裝 Playwright,為一個目前沒有測試的關鍵流程(例如登入或結帳)請 Claude Code 生成第一個 E2E 測試檔並在本機跑一次
    • 在 GitHub repo 中新增 .github/workflows/claude-code-qa.yml,接上 anthropics/claude-code-action,讓每次 PR 自動跑現有測試與 AI 測試建議
  • Claude Code 自動模式:開發者必玩實測

    Claude Code 自動模式:開發者必玩實測

    📌 本文重點

    • Auto 模式會自動判斷你在寫新功能、改舊程式或除錯
    • 能整合看錯誤、改程式、再執行的完整 workflow
    • 適合用來快速理解專案結構並分階段重構
    • Claude Code 是雲端 AI pair programmer,可搭配既有 IDE / Git

    Claude Code 的 Auto 模式,就是一個會自己判斷你現在在寫新功能、改舊程式還是除錯,主動選工具幫你的 AI 助手,讓你少切視窗、多寫程式。


    一句話先懂:Auto 模式在解決什麼事?

    一般用 AI 寫程式,你要自己決定「現在是要叫它生程式碼、還是幫我跑測試、還是查錯?」;Claude Code 的 Auto 模式直接幫你讀懂上下文與指令,自己決定要:

    • 生成程式碼(Code generation)
    • 讀檔案、理解專案結構
    • 執行程式或測試來 debug
    • 對現有程式碼做重構與優化

    你只要「像對同事講話」描述需求,它會自己選對功能、跑對步驟。

    Auto 模式介紹原文(英):https://claude.com/blog/auto-mode-default-in-claude-code


    核心功能:你可以拿它來做什麼?

    1. 程式碼生成:從需求到檔案結構,一次到位

    Auto 模式不只會產生一個函式,而是會:

    1. 根據你的描述設計檔案與目錄結構
    2. 建立/修改多個檔案
    3. 必要時幫你寫簡單測試或使用說明

    實際用法:

    在 Claude Code 裡直接丟一句:

    幫我用 Node.js + Express 寫一個簡單的 REST API,有 /users CRUD,資料先用記憶體暫存就好,請建立基本專案結構,包含入口 index.js 和路由檔。

    Auto 模式會:

    • 自動建立 index.js、routes/users.js 等檔案草稿
    • 解釋怎麼啟動 server
    • 提出可以加測試或 logging 的建議(你可以選要不要做)

    你可以立刻把這些檔案複製到本機專案,或之後改用 API / IDE 插件串接。

    💡 關鍵: Auto 模式會從需求一路幫你拉到完整檔案結構與啟動方式,減少你查 boilerplate 的時間


    2. 錯誤修正:看 log、改程式、再跑一次

    Auto 模式最大的差別是:它能整合「看錯誤 +改程式+再執行」的流程,而不是只回你「原因可能是什麼」。

    基本 workflow:

    1. 貼上錯誤訊息或測試失敗 log
    2. 說你想要的結果
    3. 讓 Auto 模式決定哪個檔案要改、改什麼

    範例 prompt:

    這是 pytest 的錯誤輸出,test_calculate_price 一直 fail。請幫我找出原因並修改對的檔案,然後給我修正後的程式碼片段就好。

    Auto 模式會:

    • 根據 stack trace 推斷是哪個函式有問題
    • 在對應檔案裡標出問題區塊,提出修改
    • 說明為什麼這樣改可以解決測試失敗

    如果你在 Claude Code 裡有上傳整個 repo,它還能 cross-file 看「其他地方怎麼用這個函式」,避免修一個地方壞一片。


    3. 重構與優化:不只是「換個寫法」

    Auto 模式的重構能力,不只做到「把程式碼變漂亮」,而是會考慮:

    • 函式命名與責任分界
    • 檔案拆分與模組化
    • 重複邏輯抽取
    • 加上必要的 docstring 或註解

    實際用法:

    我這個檔案功能太多了,請你先幫我讀完整檔,整理現在的功能清單,再給一個重構計畫,最後一步一步修改程式碼(可以分成幾個 commit 的建議)。

    你可以照它的「重構計畫」拆成多次對話,逐步套用變更,避免一次大改爆掉。


    4. 多檔案理解:真正懂你的專案結構

    Claude Code 可以讓你上傳整個專案(zip 或接 repo),Auto 模式就能:

    • 建立專案索引(檔案、目錄、framework)
    • 在回答時引用相關檔案片段
    • 針對特定模組做修改而不干擾其他部分

    建議使用方式:

    • Side project:直接把整個專案 zip 上去
    • 公司專案:選擇跟要改的功能相關的子資料夾(避免洩漏敏感資訊)

    之後問問題時,多加一句:

    以上是整個 backend/ 資料夾,請先幫我看懂架構,再建議要改哪個檔案比較安全。


    適合誰用?4 個常見場景 workflow

    1. Side project:快速起專案 + 小步調整

    目標: 少查 boilerplate,多花時間在核心功能。

    建議 workflow:

    1. 在 Claude Code 開一個新 Project,upload 空白或半成品 repo
    2. 用 Auto 模式下指令:
    3. 「幫我補上 basic auth middleware」
    4. 「加一個簡單的設定檔,讓環境變數可以統一管理」
    5. 每次改完都讓它幫你檢查:
    6. 「請確認這個改動不會影響現有路由」

    2. LeetCode / 刷題:不只拿答案,而是練思路

    目標: 用 Claude 當「教練」,不是答案機器。

    建議用法:

    1. 先自己寫出初版解法,貼上程式碼
    2. 對 Auto 模式說:

    這題是 LeetCode [題號],我現在這個解法是 O(n^2),你先不要直接給最優解,請先用中文講解我這個解法的缺點,再給我 1~2 個提示,讓我自己改成更好的做法。

    1. 如果真的卡住再說:

    好,我卡住了,請給我最優解程式碼,並註解標註關鍵步驟。

    💡 關鍵: 明講「先不要給最優解」,能把 Auto 模式變成教練角色,幫你訓練思路而不是只抄答案


    3. 公司專案 debug:看 log + 看多檔案一次搞定

    目標: 把時間留在理解業務邏輯,而不是瞎猜錯在哪。

    安全建議:不要上傳含敏感資料的設定檔(例如 .env、金鑰)。

    實際流程:

    1. 上傳與出錯功能相關的資料夾(例如 services/ + routes/)
    2. 貼上 production log(可匿名化部分內容)
    3. 指令範例:

    這個錯誤只會在特定客戶出現,請幫我看 log 和程式碼,推論最可能的 2–3 個原因,並給我修正建議,請避免大改架構,先以最小修補為主。

    Auto 模式會:

    • 依 log 指到對應函式
    • 確認相關呼叫鏈(跨檔案)
    • 提出幾種修法(你可以挑最保守的)

    4. 重構舊程式碼:從「先讀懂」到「分階段改」

    目標: 讓 AI 先幫你梳理舊專案,再陪你一起拆成小改動。

    建議 prompt 流程:

    1. 先丟整個舊模組:

    這是 5 年前寫的舊模組,請幫我用中文整理:主要功能、依賴關係、明顯的技術債。

    1. 再要求重構計畫:

    請幫我規劃三個階段的重構:第一階段只做安全重構(不改 public API),第二階段開始調整資料結構,第三階段再考慮換框架。

    1. 每個階段再開新對話,讓 Auto 模式只針對相關檔案提出修改建議。

    怎麼開始用 Claude Code Auto 模式?

    1. 入口在哪?怎麼開啟 Auto 模式

    1. 進入 Claude 網站:https://claude.com
    2. 登入帳號(目前有免費層級)
    3. 左側選單點 Claude Code
    4. 建立一個新的 Code project
    5. Auto 模式現在是預設啟用,你在對話框直接輸入需求即可

    在 Auto 模式下,你會看到它自動在右側「檔案區」建立或修改檔案,並標示變更。

    💡 關鍵: Auto 模式預設啟用,加上有免費層級,讓你幾乎沒有門檻就能開始實驗這套 workflow


    2. 上傳專案與基本設定

    上傳方式:

    • 直接拖曳 zip 檔到 Claude Code 頁面
    • 或選擇多個檔案 / 資料夾上傳

    實際設定建議:

    上傳完第一件事,先講明規則:

    這個專案是 Next.js + Prisma,請你之後所有建議都遵守現有架構與命名規則,不要改動資料庫 schema,除非我有明講可以改。

    這可以避免 Auto 模式「好心重構」結果打壞你既有設計。


    3. Prompt 寫法:幾個好用範例

    你可以用這幾個模板直接改關鍵字使用:

    1. 加新功能

    現在的程式已經有 [功能 A],我想加一個 [功能 B]。請先說明你打算改哪些檔案,然後一步一步給我要新增的程式碼片段,避免一次大改。

    1. 找 bug

    這裡是錯誤 log + 相關程式碼。請幫我推論可能原因,優先從最小修補開始,並標出你建議修改的行數與內容。

    1. 重構

    請先用中文說明這個檔案目前在專案裡的角色,再幫我做「不改行為」的重構:只優化可讀性與結構,不要改動任何輸入輸出格式。


    4. 和現有 IDE / Repo 搭配的方式

    目前 Claude Code 本身是「雲端工作區」,典型搭配方式:

    1. Repo 主控權在 Git
    2. 在本機 / 公司標準 Git flow 照常開分支
    3. 把要改的檔案複製到 Claude Code(或壓成 zip 上傳)
    4. 讓 Auto 模式生成 /修改程式碼
    5. 再把修改貼回本機,自己下 commit

    6. 與 IDE 搭配的建議

    7. 在 IDE 裡跑程式與測試(確保環境一致)
    8. Claude Code 負責「看多檔案、出建議」
    9. 你在 IDE 裡套用變更並做最後檢查

    這樣你不用完全換工作環境,只是多一個「雲端 AI pair programmer」,專門處理跨檔案的理解與改動建議。


    延伸比較:Claude Code 跟其他工具怎麼選?

    如果你也在看 Muse Code 或 Codex CLI,可以參考 Towards AI 的架構比較文:
    https://pub.towardsai.net/muse-code-vs-claude-code-vs-codex-cli-7-architecture-differences-worth-evaluating-428c935997f2

    以下是簡化後的使用情境比較:

    名稱 核心功能 免費方案 適合誰
    Claude Code 雲端對話式 Auto 模式、讀多檔案 有免費層級 想用瀏覽器做 code review、重構
    Muse Code 偏 IDE 插件、即時補全 依產品方案而定 喜歡在原本 IDE 即時輔助
    Codex CLI 命令列整合、腳本自動化 視使用方案而定 愛用 terminal、寫自動化腳本

    如果你常在瀏覽器看 PR、或需要快速理解陌生 repo,Claude Code + Auto 模式會特別合用;要深度整合 IDE 再考慮搭配其他工具。


    小結:先讓 Auto 模式幫你「看懂專案」,再叫它出手

    建議第一次使用 Claude Code Auto 模式時,不要直接叫它改一大堆,而是:

    1. 先上傳你要改的部分專案
    2. 叫它用中文整理架構與風格
    3. 再從小需求開始讓它出手(修一個 bug、重構一個檔案)

    習慣這種「先理解、再修改」的工作流後,你會發現 Auto 模式最適合拿來處理那些「自己看得懂但看很久」的問題,把時間留給真正需要你決策的設計與產品細節。


    🚀 你現在可以做的事

    • 到 https://claude.com 開一個新的 Claude Code 專案,試著用 Auto 模式生成一個小型 REST API
    • 把你現在一個正在 debug 的 side project 壓成 zip 上傳,請 Auto 模式依 log 幫你找出 2–3 個可能原因
    • 挑一個舊專案模組,上傳後讓 Auto 模式先用中文整理架構,照文中「三階段重構」流程實驗一次
  • Claude Prompt Caching 長對話成本優化實戰

    Claude Prompt Caching 長對話成本優化實戰

    📌 本文重點

    • 只為「新算的 token」付錢才省成本
    • 穩定前綴(system、tools、長期記憶)要被快取
    • cache key 必須含模型、租戶與權限版本
    • 長對話可降 30–60% 推理成本

    長對話裡真正燒錢的不是「整個 context 有幾個 token」,而是每一輪新算了多少 token。Claude 的 prompt caching 就是把那些每輪都重複出現的前綴(system prompt、tool schema、長期記憶等)標記成可重用的計算結果,只為「新出現的部分」付錢。實務上,你可以在 RAG、Agent、Code Assistant 裡大幅壓低長會話成本,同時讓模型保持完整上下文。

    💡 關鍵: 掌握「每輪新算 token」才是控成本的核心,而不是只看整個 context 長度。


    重點說明:為什麼「重用前綴」省錢

    1. 計費與計算模型:只對「新算過的 token」付錢

    現代 LLM(包含 Claude)推理時,會對輸入序列做一次注意力與前向計算。若供應商支援 前綴快取,就能把已算過的 embedding / KV cache 重新使用,對於已快取的部分:

    • 計費:只收少量或不收額外費用(依供應商設計)
    • 計算:避免重跑 attention / matmul

    • 快取什麼:可穩定重複的 prefix

    典型可快取區塊:

    • System prompt:角色、風格、平台規範
    • Tool schema:function calling / tools JSON schema
    • 長期記憶 / 專案上下文:repo 結構、domain handbook、RAG 長期摘要
    • 長期對話前半段:幾十輪以上的歷史,只要不會被頻繁重寫

    • API 層設計:cache key + 失效策略是核心

    要讓 prompt caching 在多模型、多供應商環境可維護,必須明確管理:

    • cache key 組成:模型版本 + system prompt hash + tools hash + tenant + 權限版本
    • 失效策略:
      • 模型升級(model_version 變更)
      • 工具清單或 schema 改動
      • tenant 權限/角色變更

    💡 關鍵: 把模型 ID、租戶與權限版本都放進 cacheKey,才能避免快取錯配與資料洩漏。


    實作範例:切分前綴與多層快取

    1. Prompt 結構切分策略

    我們先定義一個標準化的 prompt 結構:

    // TypeScript / Node pseudo-code
    interface PromptSegments {
      system: string;          // 系統指令
      toolsSchema: object[];   // 工具定義 (OpenAI / Claude tools 格式)
      longTermContext: string; // 長期記憶 / 專案說明 / RAG summary
      shortHistory: string;    // 近期對話 (例如最後 10 輪)
      userInput: string;       // 本輪使用者輸入
    }
    
    function buildMessages(segments: PromptSegments) {
      return [
        { role: "system", content: segments.system },
        { role: "system", content: `TOOLS_SCHEMA:\n${JSON.stringify(segments.toolsSchema)}` },
        { role: "system", content: `LONG_TERM_CONTEXT:\n${segments.longTermContext}` },
        { role: "assistant", content: segments.shortHistory },
        { role: "user", content: segments.userInput },
      ];
    }
    

    前 3 段(system / toolsSchema / longTermContext)就是要被 prompt caching 鎖定的 prefix;shortHistory 則保留可替換的空間,避免整個對話歷史變成難以管理的快取。

    2. Node 版 cache middleware(多模型、多供應商共用)

    假設你有一個抽象的 LLMClient,在呼叫前注入 cache metadata:

    // Node.js pseudo-code
    import crypto from "crypto";
    
    interface CacheMetadata {
      cacheKey: string;
      cacheTtlSec: number;
    }
    
    function buildCacheKey({
      provider,
      model,
      system,
      toolsSchema,
      tenantId,
      permissionsVersion,
    }: {
      provider: string;
      model: string;
      system: string;
      toolsSchema: object[];
      tenantId: string;
      permissionsVersion: string;
    }): string {
      const hashInput = JSON.stringify({ system, toolsSchema, tenantId, permissionsVersion });
      const hash = crypto.createHash("sha256").update(hashInput).digest("hex");
      return `${provider}:${model}:${hash}`; // 核心:模型 + 前綴內容 + 租戶/權限
    }
    
    async function withPromptCache(llmClient, segments: PromptSegments, ctx) {
      const cacheKey = buildCacheKey({
        provider: ctx.provider,          // "anthropic" / "openai" / "azure-openai" ...
        model: ctx.model,                // 例如 "claude-3.7-sonnet"
        system: segments.system,
        toolsSchema: segments.toolsSchema,
        tenantId: ctx.tenantId,
        permissionsVersion: ctx.permissionsVersion,
      });
    
      const messages = buildMessages(segments);
    
      const response = await llmClient.chat({
        messages,
        // 自定義或供應商原生字段
        metadata: {
          // 自家 caching layer 用
          promptCache: {
            cacheKey,
            segmentsCached: ["system", "toolsSchema", "longTermContext"],
            ttlSec: 3600, // 長期 context 一小時有效
          },
        },
      });
    
      return response;
    }
    

    在多供應商環境下的重點:

    • cacheKey 必須在抽象層就固定格式,不要依賴各家私有的 cache token。
    • 將「哪些 segment 可快取」「TTL 設定」寫在自家 metadata.promptCache,再由底層 adapter 映射到各家 API(例如 Anthropic 的 prompt caching 參數、OpenAI 未來的前綴重用機制等)。

    3. Python 版:RAG + Agent + Code Assistant 共用策略

    示範一個 Python middleware,處理三種場景:

    # Python pseudo-code
    import hashlib
    from typing import List, Dict, Any
    
    class PromptCacheMiddleware:
        def __init__(self, backend):
            self.backend = backend  # Redis / in-memory / provider-native
    
        def _hash(self, payload: Dict[str, Any]) -> str:
            raw = repr(payload).encode("utf-8")
            return hashlib.sha256(raw).hexdigest()
    
        def build_cache_key(self, provider: str, model: str, tenant: str,
                             system: str, tools: List[Dict[str, Any]],
                             perm_version: str) -> str:
            hash_part = self._hash({"system": system, "tools": tools,
                                    "tenant": tenant, "perm": perm_version})
            return f"{provider}:{model}:{hash_part}"
    
        def call(self, llm_client, segments, ctx, scenario: str):
            # scenario: "rag" | "agent" | "code"
            cache_key = self.build_cache_key(
                ctx["provider"], ctx["model"], ctx["tenant"],
                segments.system, segments.tools_schema,
                ctx["permissions_version"],
            )
    
            ttl = 3600 if scenario in ("rag", "code") else 600
    
            messages = build_messages(segments)
    
            # 自家 cache backend,也可以是 provider 的 prompt cache
            cached_prefix = self.backend.get(cache_key)
            if cached_prefix:
                # 若使用 provider-native KV cache,可在這裡直接標記使用
                pass
    
            resp = llm_client.chat(
                messages=messages,
                metadata={
                    "prompt_cache": {
                        "cache_key": cache_key,
                        "ttl_sec": ttl,
                        "segments_cached": ["system", "toolsSchema", "longTermContext"],
                    }
                },
            )
            self.backend.set(cache_key, "USED", ttl)
            return resp
    

    這樣你就可以在同一層 middleware 裡:

    • 為 RAG 保留穩定的 long-term summary 前綴
    • 為 Agent 快取工具清單與角色設定
    • 為 Code Assistant 快取 repo / 專案上下文

    建議與注意事項:幾個常見坑

    1. 工具清單動態變化 → cache 大量失效

    2. 問題:Agent 工具列表若每次請求都依據情境動態調整,toolsSchema hash 會頻繁變動,導致 cacheKey 不可重用。

    3. 建議:

      • 將工具分成「核心必備工具」與「情境工具」,只對核心工具段做 caching。
      • 使用 mid-conversation tool changes(例如 Claude Opus 5 的 beta 功能)讓工具權限在對話中調整,而不觸發整個 prefix 重算。
    4. 模型升級 → 快取錯配

    5. 問題:模型從 claude-3.6 換到 claude-3.7,如果 cacheKey 沒把 model / version 納入,就會拿舊模型算出的 prefix 餵給新模型,出現行為差異。

    6. 建議:

      • 必須把 model id / version 放在 cacheKey 開頭(前面範例已包含)。
      • 建多供應商兼容測試(對齊「同一前綴 + 不同模型」在工具呼叫、輸出格式上的差異),參考 LLM Provider Quirks 文章的思路。
    7. 多租戶 SaaS:tenant 隔離

    8. 問題:如果 cacheKey 沒包含 tenant / 權限版本,在多租戶環境下可能把 A 客戶的長期記憶前綴給 B 客戶用,造成嚴重資料洩漏。

    9. 建議:

      • tenantId 與 permissionsVersion 必須是 cacheKey 的一部分。
      • 權限變更(role / scope 調整)時,明確 bump permissionsVersion,強制快取失效。
      • 對於敏感工具(例如能查詢客戶資料庫的 tool),可直接標記為 不參與 prompt caching,或使用獨立 cache 空間。
    10. 避免 cache 污染:RAG + Agent + Code Assistant

    11. 污染範例:

      • RAG summary 中意外混入使用者敏感資料,然後被快取成長期前綴。
      • Agent 工具列表在某次測試中加入 dev-only 工具,被 cache,之後所有 production 對話都看得到。
    12. 建議:
      • 在產生長期 context / tools schema 前,做一次 安全與敏感資料清洗。
      • 長期前綴內容最好由後端控制(例如固定的 RAG summary service),而不是讓使用者直接寫入。
      • 為 dev / staging / prod 分別建立獨立 cache namespace。

    實際好處:你專案會得到什麼

    引入 Claude Code Prompt Caching 這類前綴快取機制後,對典型專案有幾個直接好處:

    • 長對話成本顯著下降:像 code assistant 或長期顧問型 Agent,一整天會話的 token 數看起來驚人,但前 70–90% 的前綴計算可以重用。實務上常見是 30–60% 推理成本下降。
    • 維持完整上下文又不必瘋狂裁剪:有快取後,你可以保留更多長期記憶與工具說明,而不是每次都為了成本把 context 切到只剩最近幾輪。
    • 跨供應商、多模型快速試錯:抽象層設計好 cacheKey 與前綴切分後,就能在不同模型間切換時,維持一致的成本控制策略,不怕「換模型就打回重算」。

    💡 關鍵: 只要一開始就設計好前綴切分與快取策略,prompt caching 就能變成穩定的基礎設施,而不是事後補救。

    只要在專案一開始就規劃好 prompt 結構、cache key、失效策略,你就能把 prompt caching 當成基礎設施來使用,而不是事後補上去的微調。

    🚀 你現在可以做的事

    • 在現有專案裡明確切分 system、toolsSchema、longTermContext 等前綴區塊
    • 為你的 LLM 抽象層加入統一的 cacheKey 與 metadata.promptCache 設計
    • 在開發環境先測試 RAG、Agent、Code Assistant 三種場景的快取策略與失效機制
  • Graphify:讓 AI 助手看懂整個專案

    Graphify:讓 AI 助手看懂整個專案

    📌 本文重點

    • Graphify 把整個專案轉成可查詢的知識圖譜
    • 讓 Claude Code、Cursor 等助手理解「整個系統」而非單檔
    • 特別適合接手專案、Code review、排錯與重構場景

    Graphify 就是替 Claude Code、Cursor 等 AI 編碼助手建立專案的知識底層,把程式碼、SQL、腳本、文件通通轉成可查詢的圖譜,讓 AI 回答不再只看單檔,而是理解整個系統。

    專案連結:Graphify-Labs/graphify(GitHub)


    核心功能:把「專案」變成可對話的地圖

    1. 把任何專案資料夾變成知識圖譜

    Graphify 支援:

    • 程式碼:Python、JavaScript 等一般 repo
    • 資料庫:SQL schema
    • 腳本:R、shell scripts
    • 文件:docs、論文
    • 多媒體:圖片、影片(以檔案與路徑資訊的形式收錄)

    實際可做的事:

    1. 選一個專案資料夾,例如 ~/projects/legacy-crm
    2. 讓 Graphify 掃描後生成知識圖譜
    3. 把「圖譜」接到你的 AI 助手,開始用自然語言查專案

    效果:你可以問 AI:

    • 「這個專案所有跟訂單狀態相關的函式和 SQL 表有哪些?」
    • 「從 API 收到請求到入庫,整個流程經過哪些檔案?」

    行動建議:先挑一個你覺得難接手的專案,當作 Graphify 的第一個練習對象。


    2. 一次整合:程式碼 + DB schema + 基礎設施

    Graphify 強調的是「整個系統放進同一張圖」:

    • App code:API、service、models
    • Database schema:tables、relations
    • Infrastructure:scripts、部署設定、CI/CD

    這意味著 AI 助手不只看到某個函式,而是可以沿著圖譜一路追:

    • 「這支 API 最後寫進哪個資料表?」
    • 「這張資料表在哪裡被讀取/更新?」
    • 「這個 Cron job 觸發哪些腳本,再改變哪些表?」

    💡 關鍵: 把代碼、資料庫與基礎設施放進同一張圖,才能讓 AI 追蹤完整的請求與資料流向。

    行動建議:如果你常在大型專案裡迷路,優先把 App code + DB schema 一起餵給 Graphify,請 AI 幫你畫出「從前端到資料庫」的完整路徑。


    3. 支援主流 AI 編碼助手與本地模型

    Graphify 自稱是「AI coding assistant skill」,專門替各種助手提供專案知識底層,目前支援:

    • Claude Code
    • Cursor
    • Codex / OpenCode
    • Gemini CLI
    • 以及其他可透過 CLI / API 串接的助手

    好處是:你不用換開發工具,只是多了一層「專案圖譜」,讓原本的 AI 助手變得更懂上下文。

    行動建議:先選一個你已經在用的助手(例如 Cursor),只做一件事:把 Graphify 生成的圖譜加進你的 Prompt 或工具設定,看 AI 回答專案問題的精準度差異。


    適合誰用:3 個具體場景

    1. 接手大型專案:用 Graphify 做「三小時系統導覽」

    接手舊專案最常遇到:

    • 文件缺失
    • 系統邏輯分散在各層
    • 找不到「這個功能到底怎麼跑」

    操作範例:

    1. 從 Git 拉下專案:

    bash
    git clone <your-legacy-repo>
    cd <your-legacy-repo>

    1. 用 Graphify 掃描整個 repo,生成圖譜(假設有 CLI 指令 graphify scan):

    bash
    graphify scan . -o graph.json

    1. 在 Claude Code 或 Cursor 裡,附上 graph.json(或指向 Graphify server),向 AI 提問:
    2. 「列出與『會員等級計算』相關的所有檔案與流程,並畫文字流程圖。」
    3. 「說明訂單取消從 API 到資料庫寫入的完整路徑。」

    行動建議:把你接手的新專案都跑一次 Graphify,強制自己在第一天就用 AI 做一輪「系統導覽問答」。


    2. Code review:從「看單檔」變成「看整條影響路徑」

    傳統 Code review 很容易只盯著 diff,看不到改動在整個系統的影響。

    用 Graphify 的方式:

    1. 在 PR 對應的分支跑 graphify scan,生成該版本的圖譜。
    2. 在 AI 助手裡,輸入:
    3. 「這個 PR 修改的函式,影響到哪些上游呼叫點與下游資料表?」
    4. 「幫我列出這個改動所有可能破壞的流程。」

    AI 可以沿著圖譜追蹤呼叫鏈、資料流向,給你一份「改動影響報告」,你再決定要多測哪些地方。

    💡 關鍵: 利用圖譜讓 AI 做「改動影響分析」,可以系統性找出需要回歸測試的區域,而不是只憑經驗猜。

    行動建議:選一個你覺得風險高的 PR,讓 Graphify + AI 助手一起做一次「影響分析」,當作試驗。


    3. 排錯與系統重構:先畫圖,再動手

    排錯時最痛苦的是:

    • 找不到錯誤在哪條鏈路上爆
    • 重構時不敢動,怕牽一髮動全身

    Graphify 的知識圖譜可以幫你:

    • 快速列出某個錯誤堆疊涉及的所有節點(檔案、函式、表)
    • 在重構前問 AI:「我要拆分 user_service,請列出所有依賴它的模組與路徑。」

    實戰問句示例:

    • 「根據圖譜,payment_timeout_error 這個錯誤從觸發到記錄經過哪些模組?幫我列出路徑。」
    • 「如果我要把 orders 表拆成兩張表,請告訴我所有讀寫 orders 的程式碼位置。」

    行動建議:下一次遇到棘手 bug,不要先改碼,先用 Graphify + AI 把「錯誤路徑」問清楚,再決定從哪個節點下手。


    工具與助手比較:怎麼搭配使用?

    以下是 Graphify 與常見 AI 編碼助手的定位差異與搭配方式:

    名稱 核心功能 免費方案 適合誰
    Graphify 專案知識圖譜;整合代碼、DB、腳本等 開源,GitHub 可用 想讓 AI 助手「看懂整個專案」的人
    Claude Code 雲端 AI 編碼助手,強自然語言理解 有免費使用額度 想用對話方式改碼/理解代碼的人
    Cursor VS Code 風格編輯器 + AI 補全與聊天 有免費方案 想把 AI 深度融入 IDE 的工程師
    Gemini CLI Google Gemini 命令列助手 有免費配額 喜歡在終端機用 AI 的開發者

    行動建議:先選一個你主要的開發環境(例如 Cursor),再把 Graphify 當成「增強模組」接上去,而不是全部一起嘗試,降低學習成本。


    怎麼開始:從 GitHub 到「可用工作流」

    官方入口:https://github.com/Graphify-Labs/graphify

    以下示範兩個「從零到可用」的最短路徑,以你已有的開發工具為中心來設計。


    工作流 1:接手專案 + Claude Code 問答

    步驟一:安裝與掃描專案

    1. 安裝(假設使用 Python pip,依實際 README 為準):

    bash
    pip install graphify

    1. 進入你的專案目錄,掃描並輸出圖譜:

    bash
    cd ~/projects/legacy-crm
    graphify scan . -o graph.json

    步驟二:把圖譜交給 Claude Code

    1. 在 Claude Code 裡開啟專案,將 graph.json 上傳或貼到系統提示(System Prompt),例如:

    「你可以使用以下專案知識圖譜回答問題。請依圖譜中的檔案關係、表結構與腳本依賴,協助我理解和修改系統。」

    1. 問第一組問題:

    2. 「請整理出『會員等級計算』相關的所有模塊與資料表。」

    3. 「依據圖譜,畫出從前端呼叫到 DB 的完整流程(文字版即可)。」

    做到這一步,你就完成了:接手專案 → 建立圖譜 → 用 AI 做系統導覽 的基本工作流。

    💡 關鍵: 把圖譜丟給 AI 之後,每一個新問題都在累積你對整個系統的結構化理解。


    工作流 2:Cursor 裡做 Code review 影響分析

    步驟一:在 PR 分支生成圖譜

    1. 切換到 PR 對應分支:

    bash
    git checkout feature/new-pricing

    1. 跑 Graphify:

    bash
    graphify scan . -o pr-graph.json

    步驟二:在 Cursor 裡使用圖譜

    1. 打開 Cursor,載入這個專案,並在 AI 設定中把 pr-graph.json 放進系統提示,說明:

    「這是目前分支的專案知識圖譜。做 Code review 時,請根據圖譜分析改動的上游呼叫和下游資料影響。」

    1. 在看 diff 的同時詢問 Cursor:

    2. 「這次修改的 calculate_discount 函式,上游有哪些呼叫者?下游有哪些寫入或查詢動作?」

    3. 「依據圖譜,列出最需要回歸測試的 5 個功能。」

    這樣你就有一套:看 diff → 問圖譜 → 寫測試計畫 的 Code review 工作流。

    行動建議:先把上述其中一個工作流完整跑一次,感受「AI 從看單檔」變成「看整個系統圖」的差異,再決定要不要把 Graphify變成團隊標準工具。


    小結:把 AI 助手升級成「系統顧問」

    Graphify 的本質,是幫你的 AI 助手補上一層「專案整體結構」:

    • 不再只依靠目前開啟的 1–2 個檔案
    • 而是能沿著代碼、資料庫、腳本和設定,追到整條路徑

    如果你已經在用 Claude Code、Cursor 這類助手,下一步值得做的事,就是讓它們不只會寫函式,而是真的看懂你的系統——Graphify 正好是那一層缺少的底座。

    🚀 你現在可以做的事

    • 到 Graphify GitHub 把專案 clone 下來並跑一次 graphify scan
    • 挑一個現有專案,把產生的圖譜接到你最常用的 AI 助手(如 Cursor 或 Claude Code)
    • 在下一次接手專案或處理高風險 PR 時,用 Graphify + AI 做一次完整的系統導覽或影響分析
  • OmniRoute:一個 Endpoint 玩遍 200+ 模型

    OmniRoute:一個 Endpoint 玩遍 200+ 模型

    📌 本文重點

    • OmniRoute 用一個 Endpoint 串接 200+ 模型供應商
    • 內建 RTK + Caveman 壓縮,可節省 15–95% token 成本
    • 支援 MCP / A2A、多代理、多模態 Workflow
    • 適合多模型整合與成本優化的開發者

    用一句話先說清楚:OmniRoute 是一個多雲、多模型的一站式 AI 總機,讓你用同一個 API Endpoint,同時接上 Claude、GPT、Cursor、Copilot 等 200+ 家模型供應商,還順手幫你壓縮 token、自動跳備援模型。

    官方開源庫:https://github.com/diegosouzapw/OmniRoute


    核心功能 1:一個 Endpoint 管理多供應商+自動備援

    傳統做法是:每接一個模型,就要再接一個 SDK / API Key / Base URL。結果是:

    • 前端要切換模型,就得改環境變數
    • 後端要做 fallback,要自己寫 retry + 陣痛的錯誤處理

    OmniRoute 的做法是:所有模型統一走一個 OmniRoute Endpoint,後面怎麼分流、切換供應商、失敗改用誰,全都在 OmniRoute 的設定檔完成。

    💡 關鍵: 把所有模型統一進一個 Endpoint,可以一次解決多家供應商整合與備援問題,前後端只維護單一接點。

    你可以怎麼用

    以「同一個 Code Agent,要能在 Claude / GPT / 本地模型之間切換」為例:

    1. 在 OmniRoute 設定三個 provider:
    2. anthropic/claude-3.5(主力)
    3. openai/gpt-4.1(備援)
    4. local/deepseek(成本最低版)
    5. 設定路由策略:
    6. 主 Endpoint:先走 Claude
    7. 當 Claude timeout 或額度用完,自動 fallback 到 GPT
    8. 夜間批量任務改走本地模型
    9. 在你的程式碼中,只保留一個 OMNIROUTE_API_URL:

    ts
    const response = await fetch(process.env.OMNIROUTE_API_URL, {
    method: "POST",
    headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.OMNIROUTE_API_KEY}`,
    },
    body: JSON.stringify({
    model: "code-agent", // 這是 OmniRoute 裡定義的邏輯模型名
    messages,
    }),
    });

    可行動建議:

    • 手上的專案如果同時接了 Anthropic + OpenAI + 本地模型,可以先挑一個 API Call 練手,把三個 Base URL 改成一個 OmniRoute URL,測試 auto-fallback 是否生效。

    核心功能 2:RTK + Caveman 壓縮,節省 15–95% token 成本

    OmniRoute 內建兩種壓縮:

    • RTK(Reversible Tokenization Kernel):對常見 prompt 做結構化壓縮,適合長系統提示、多輪聊天歷史
    • Caveman 壓縮:偏「野蠻」但更激進,會重寫聊天記錄,把冗長表述變成精簡語句

    效果:

    • 系統長 prompt:省 15–40% token
    • 帶大量上下文(如文檔 QA):最高可到 95% token 減少

    💡 關鍵: 啟用 RTK 與 Caveman 壓縮後,長上下文任務可大幅降低 15–95% token 成本,直接反映在帳單與模型限額上。

    你可以怎麼用

    以「把整份 API 文檔塞給模型當『長期記憶』」為例:

    1. 在 OmniRoute 後台或設定檔,為 doc-assistant 這條路由開啟壓縮:

    yaml
    routes:
    - id: doc-assistant
    model: anthropic/claude-3.5
    compression:
    rtk: true
    caveman: true

    1. 程式端依然用原本的 messages 結構呼叫,不用自己壓縮:

    jsonc
    {
    "model": "doc-assistant",
    "messages": [
    {"role": "system", "content": "你是某某專案的文檔助手..."},
    {"role": "user", "content": "請根據附件 API 文檔..."}
    ]
    }

    1. OmniRoute 會在轉給底層模型前自動壓縮,再在輸出時解壓(對你來說是透明的)。

    可行動建議:

    • 先挑「最長」的那支 API(例如:聊天歷史超長、帶多篇 PDF 的 QA),在 OmniRoute 上開 RTK+獵人模式(Caveman),觀察一次請求的 token 使用量與帳單變化。

    核心功能 3:MCP / A2A、多代理、多模態 Workflow

    OmniRoute 支援:

    • MCP(Model Context Protocol):讓不同工具 / 代理共享同一套上下文與工具列表
    • A2A(Agent-to-Agent):代理之間可互相呼叫,形成多步驟協作
    • 多模態 API:文字 + 圖片(甚至影音)混合輸入

    這讓你可以把原本散落在不同工具的能力,集中到一條 Workflow 裡。例如:

    • Code Agent 負責寫程式
    • Doc Agent 負責查文件、對比版本
    • Vision Agent 負責讀錯誤截圖

    💡 關鍵: 利用 MCP 與 A2A,可以把多個專職 Agent 串成一條 Workflow,讓 Code、Doc、Vision 等能力在同一上下文中協作。

    你可以怎麼用

    以「Side Project 的 Code Agent + 文檔助手」為例:

    • Code Agent:
    • 模型:Claude 3.5 Sonnet
    • 任務:生成程式碼、重構
    • 文檔助手:
    • 模型:GPT-4.1 / Gemini
    • 任務:閱讀 API 文檔、產生說明
    • 多模態:
    • 模型:如 Gemini / GPT-4o
    • 任務:讀錯誤截圖

    在 OmniRoute 裡定義三條路由,讓 Code Agent 能直接「轉接」給 Doc Agent:

    routes:
      - id: code-agent
        model: anthropic/claude-3.5
        a2a:
          doc-agent: true
          vision-agent: true
      - id: doc-agent
        model: openai/gpt-4.1
      - id: vision-agent
        model: google/gemini-1.5
    

    可行動建議:

    • 先只做兩個代理(Code + Doc),在 OmniRoute 設定 A2A,讓 Code Agent 遇到「不知道 API 用法」時,把問題轉給 Doc Agent,再把結果回傳給使用者。

    實作示範:Side Project 串三家模型的 Code Agent + 文檔助手

    來做一個具體場景:

    需求:在同一個 Side Project 裡,整合三家模型,做一個簡單的「程式碼助理 + 文檔助手」,前端只有一個 Chat UI,後端只有一個 OmniRoute Endpoint。

    架構示意

    • 前端(Next.js / React):
    • 單一聊天框
    • 輸入模式按鈕:寫程式 / 問文檔
    • 後端:
    • 全部請求送到 OMNIROUTE_URL
    • model 欄位用來指定走哪個 logical route(code-agent or doc-assistant)
    • OmniRoute:
    • code-agent → Claude(主)+ GPT(備)
    • doc-assistant → GPT + Caveman 壓縮
    • vision-agent → Gemini,多模態

    前端呼叫範例(TypeScript):

    async function callAgent(mode: "code" | "doc", messages) {
      const model = mode === "code" ? "code-agent" : "doc-assistant";
    
      const resp = await fetch(process.env.NEXT_PUBLIC_OMNIROUTE_URL!, {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: `Bearer ${process.env.NEXT_PUBLIC_OMNIROUTE_KEY}`,
        },
        body: JSON.stringify({ model, messages }),
      });
    
      return resp.json();
    }
    

    後端與前端都不用知道「底下到底是 Claude 還是 GPT」,只認 model: "code-agent" 與 model: "doc-assistant" 兩種邏輯角色即可。


    10 分鐘開箱:從零到第一條 OmniRoute

    以下是一條「最短路徑」,讓你在 10 分鐘內把現有專案換成 OmniRoute。

    1. 註冊與安裝(3 分鐘)

    1. 打開 GitHub 專案:https://github.com/diegosouzapw/OmniRoute
    2. 把 repo 拉下來:

    bash
    git clone https://github.com/diegosouzapw/OmniRoute
    cd OmniRoute
    pnpm install # 或 yarn / npm

    1. 照 README 建一個 .env,填入你現有的 OpenAI / Anthropic 等 API Key。

    2. 啟動 OmniRoute Server(2 分鐘)

    pnpm dev # 或對應的 start 指令
    

    啟動後會有一個本地 URL,例如:http://localhost:8787/v1/chat/completions,這就是你的「總機 Endpoint」。

    3. 設定第一個路由 + 壓縮策略(3 分鐘)

    在 config/routes.yaml(實際以專案為準)中:

    routes:
      - id: code-agent
        model: anthropic/claude-3.5
        fallback:
          - openai/gpt-4.1
        compression:
          rtk: true
          caveman: false
    
      - id: doc-assistant
        model: openai/gpt-4.1
        compression:
          rtk: true
          caveman: true
    

    完成後重新啟動 OmniRoute(若需要)。

    4. 把前端 / 後端改成單一 OmniRoute URL(2 分鐘)

    無論你原本用什麼 SDK(OpenAI, Anthropic, Cursor plugin):

    • 把 baseURL 改成你的 OMNIROUTE_URL
    • 把 model 改成 OmniRoute 裡定義的 id(例如 code-agent)

    以 OpenAI SDK 為例:

    import OpenAI from "openai";
    
    const client = new OpenAI({
      baseURL: process.env.OMNIROUTE_URL,
      apiKey: process.env.OMNIROUTE_KEY,
    });
    
    await client.chat.completions.create({
      model: "code-agent",
      messages,
    });
    

    到這一步,你已經:

    • 用一個 Endpoint 串起至少兩家模型
    • 開啟 basic 的 token 壓縮
    • 為之後加上更多 provider / 代理 / 模態預留位置

    適合誰用?

    使用者類型 具體場景
    獨立開發者 Side Project 同時想用 Claude + GPT + 免費模型,又懶得寫一堆整合
    小團隊 / Startups 想 A/B 測試不同供應商,控制成本,還要有 auto-fallback 防止掛點
    AI Agent Builder 需要多代理協作(Code + Doc + Vision),又希望前端只接一個 Endpoint
    教學 / 實驗環境 需要一鍵切換教學用模型、控制學生 token 使用量

    如果你符合其中一項,可以先把 OmniRoute 當成:

    「把所有 AI 模型集中管理的一支 API Gateway」,再視需要逐步開啟壓縮、A2A、多模態。


    OmniRoute 與其他多模型工具比較

    名稱 核心功能 免費方案 適合誰
    OmniRoute 多供應商整合、auto-fallback、RTK/Caveman 壓縮、MCP/A2A、多模態 開源,支援 50+ 免費供應商 想統一管理多家模型、做複雜 Workflow 的開發者
    直接用 OpenAI 單供應商模型 API 有免費試用額度 只用 GPT 系列、需求簡單的專案
    直接用 Anthropic 單供應商 Claude 模型 有免費試用額度 只想專注 Claude Code / Sonnet

    如果你只接一個模型供應商,OmniRoute 可以先當「統一壓縮 + 路由層」;當你的模型越來越多,它就自然變成你的多雲總機。


    🚀 你現在可以做的事

    • 打開 OmniRoute GitHub 專案,依照 README 在本地啟動一個測試伺服器
    • 挑一支現有的 API 呼叫,將 baseURL 改成 OMNIROUTE_URL,並在 routes.yaml 設好對應的 model id
    • 在同一條路由上開啟 RTK 或 Caveman 壓縮,對比啟用前後的 token 使用量與費用差異
  • Claude Code 供應鏈危機:AI 開發者太天真了

    Claude Code 供應鏈危機:AI 開發者太天真了

    📌 本文重點

    • AI coding agent 正在成為新攻擊面
    • 供應鏈攻擊已專門鎖定 AI 開發工具
    • AI 工具必須被當成高風險資安系統管理

    這次 Claude Code 事件真正可怕的地方,不是幾個 npm 套件被下毒,而是 AI coding agent 本身正在變成新的「攻擊面」。如果開發生態繼續只談效率、不談安全,下一個被入侵的,不會只是開發機器,而是整個企業的內部資料與用戶隱私。AI 工具與開發流程,必須被當成高風險資安系統,而不是玩具。


    一場「從 Red Hat 憑證到你的 Claude Code」的蠕蟲式攻擊

    先把時間線拉清楚:

    • 攻擊者先取得一名 Red Hat 員工的 GitHub 憑證,直接往 @redhat-cloud-services 旗下 32 個 npm 套件下手,這些套件週下載量約 11.7 萬次。
    • 由於 CI/CD 已與 npm 發布流程自動串接,攻擊者等於「合法地」用 Red Hat 的身份,把惡意程式碼發佈給整個開發者社群——這就是典型的 供應鏈攻擊。
    • 惡意程式碼安裝後,並不只藏在 node_modules,而是主動修改你的開發環境:
    • 植入 Claude Code 啟動設定
    • 修改 VS Code 專案設定
    • 之後 只要你打開 VS Code 或 Claude Code,惡意程式就會自動執行,
    • 靜默收集機器上的所有憑證(token、SSH key、雲端憑證……)
    • 傳回攻擊者伺服器
    • 更糟的是,就算你卸載 npm 套件,惡意碼仍活在 IDE 設定裡,持續運作
    • 若你試圖「先撤 token 再清 malware」,某些版本還會觸發毀滅性 payload:刪除整個 home 目錄並覆寫,降低復原可能性。
    • 幾天後,研究者在 npm 上又發現第二波、更高明的變種,包裝更隱密、具蠕蟲特性,持續透過自動安裝與開發工具擴散。

    💡 關鍵: 一組被盜用的 GitHub 憑證,串起了從 CI/CD 到 IDE、再到 AI 助手設定的整條自動化惡意供應鏈。

    關鍵不是一個 Red Hat 帳號被偷,而是:攻擊鏈一路打穿「憑證 → CI/CD → 套件 → IDE → AI 助手設定」,形成一條完全自動化的惡意供應鏈。

    這條鏈的最後一站,偏偏就是你以為「只是在幫你寫程式」的 Claude Code。


    AI coding agent 追求效率,卻默默放大了供應鏈風險

    這起 Red Hat / Claude Code 事件,和最近 Microsoft 開源套件被植入 credential stealer 的攻擊,實際上指向同一個趨勢:攻擊者已開始專門設計「針對 AI coding agent」的惡意程式。

    在 Microsoft 的案例中:

    • 73 個微軟持有的加簽開源套件被植入進階憑證竊取程式碼。
    • 惡意程式碼會在開發者透過 AI coding agent 開啟這些套件時被觸發——研究者直接點名這是針對 AI agent 的攻擊;AI 會幫你讀檔、跑 script、補依賴,攻擊者只要等 AI「乖乖照做」。
    • 這些套件最初是被 GitHub 自動系統下架,但平台一開始只用「違反服務條款」這種模糊說法,沒有明講「這是惡意攻擊、請假設你已被入侵」,讓不少開發者完全沒有警覺。

    把兩起事件放在一起看,可以看到幾個結構性問題:

    1. AI agent 天然信任依賴與腳本

    AI coding agent 的賣點,是幫你:

    • 自動安裝缺的套件
    • 自動修改設定
    • 自動產生/執行 script

    這看起來是「開發效率神器」,但在攻擊者眼中,這是一台可以遠端操控的自動化執行引擎。惡意套件只要被 AI 讀到、被 agent 視為「為了專案正常運作需要執行的 code」,攻擊就啟動了。

    2. DevSecOps 思維還停留在「人手動操作」時代

    大多數安全流程是為了人設計的:

    • 「請開發者檢查 pull request」
    • 「請手動審視依賴變更」
    • 「請不要執行不明腳本」

    但今天的問題是:AI 會幫你點掉所有這些紅燈。在 Claude Code 事件裡,惡意程式碼躲到 VS Code 與 Claude 設定檔中,只要開啟工作區或啟動 AI 助手,就會自動跑。

    3. 供應鏈攻擊變成「AI 時代的新常態」,不是個案

    • Red Hat / Claude Code:利用 GitHub 憑證 + CI/CD + IDE/AI 設定,形成蠕蟲式擴散。
    • Microsoft 套件:利用 加簽開源套件 + GitHub 生態 + AI coding agent 的自動操作,鎖定開發者憑證。

    它們都不是「某個工程師不小心點錯」這種等級,而是系統性利用 AI 進入開發供應鏈的空窗期。

    💡 關鍵: 供應鏈攻擊已從零星事件,演變成專門針對 AI 開發流程設計的「新常態」風險。

    真正的問題是:AI 工具商與生態平台,把自己當成「效率工具提供者」,沒有把自己當成「新一代 DevSecOps 基礎設施」來設計。


    這不是 Prompt Injection 問題,是「Agent 執行權限」問題

    今天的主角已經不是 prompt injection。攻擊者要的,不是讓模型講錯話,而是讓 agent 替他「按下執行鍵」。

    在 MCP(Model Context Protocol)與各種 Agent 框架被廣泛實驗的同時,安全研究者早就示警:

    • 當 AI 代理有「讀檔、寫檔、跑指令、打 API」等多重能力時,它就變成一個新的 高權限執行環境。
    • 文章《Red Teaming MCP Servers: 24 Attack Payloads and the Blueprint for Agentic Defense-in-Depth》做了 24 種紅隊測試,證明:
    • 單靠輸入過濾完全不夠
    • 必須從 輸入 → 代理決策 → 執行層 → 系統權限 做多層防禦

    再把這跟機器身份與憑證管理放在一起看:

    • 如《Your Secrets Are Probably Leaking》指出:大多數團隊只強化「使用者登入安全」,卻讓 API key、token、CI 變數、雲端憑證到處亂飛,形成 credential sprawl。
    • 在 Claude Code 與 Microsoft 事件中,惡意碼收割的正是這一整片「第二身份平面」:
    • .env 裡的密鑰
    • CI/CD pipeline 的 token
    • Terraform state、K8s manifest 裡的憑證

    當 AI agent 同時掌握「程式碼執行能力」與「存取這些機器身份憑證」,它就成了攻擊者最想控制的跳板。

    現在的主流 AI IDE 插件,多半只談:「我們如何讓你寫程式更快」。
    很少有人認真回答:「這個 agent 在你的機器上,到底能做多可怕的事?誰在監控?誰能審計?誰負責出事時的鑑識?」

    💡 關鍵: AI agent 一旦擁有執行權限與憑證存取能力,就等同於新的「高權限使用者」,安全設計必須對齊這個等級。


    開發者與企業現在就該做的事:把 AI 當成高風險資安系統來管理

    這不是「選不選用 Claude Code 或某個特定工具」的問題,而是你要不要承認:AI coding agent 已經是你 DevOps 流程的一級資產,而不是附加小幫手。

    對不同角色,建議也不同——

    1. AI 工具商(OpenAI / Anthropic / 微軟 等)

    • 預設零信任執行模型:
    • 插件/Agent 若要寫檔、跑命令、裝套件,應有細粒度權限 prompt,而不是一鍵授權整個專案。
    • 對高風險操作提供 可審計的執行日誌,預設加密留存,方便事後鑑識。
    • 把安全能力產品化,而不是當白皮書宣傳:
    • 內建 惡意依賴檢測、憑證泄漏掃描,而不是交給第三方插件救火。
    • 對應 MCP / Agent 生態,提供官方的 安全測試 sandbox(類似 mcp-probe-agent)與紅隊工具。

    2. 生態平台(npm / GitHub / VS Code 市集)

    • 事件揭露要說人話:像這次 GitHub 只說「違反服務條款」是嚴重失職。遭下架的套件,必須清楚標註「已確認惡意,請假設憑證外洩並執行 incident response」。
    • 加強供應鏈風險信號:
    • 對於高權限組織(如 Red Hat、Microsoft)發布的套件變更,提供額外的 異常行為檢測與人工審核。
    • 在 IDE / CLI 層面,當套件被標記惡意時,主動警示並提供修復腳本,而不是只在網頁上放通知。

    3. 企業開發與安全團隊

    • 把 AI 開發工具納入 DevSecOps 範圍,而不是當個人玩具:
    • 使用哪些 AI 插件、可開哪些權限,寫成政策並落地到 IAM / MDM 管理上。
    • 公司內部專案一律使用 企業控管的 AI 開發環境,禁止在個人亂裝的 VS Code 上操作敏感 repo。
    • 整頓「機器身份」與憑證管理:
    • 把 .env、CI variables、Terraform state、K8s yaml 裡的 secrets 全面盤點,導入 專業密鑰管理系統(如 Vault、Secrets Manager 等)。
    • 對應這次事件,預設所有受影響開發機器的 token 與 key 都已外洩,執行 rotate + log 監控。
    • 訓練團隊用「AI 安全威脅模型」思考:
    • 每導入一個新 AI 工具,都問三個問題:
      1. 它可以看到哪些 code / 資料?
      2. 它可以對我的環境做什麼?(讀/寫檔、跑指令、改 CI?)
      3. 一旦被接管,最大爆炸半徑是什麼?

    Claude Code 這次暴露的,不是單一產品的缺陷,而是整個產業對「AI 時代的 DevSecOps」普遍缺位。未來幾年,攻擊者會持續把 AI agent、CI/CD、開源套件、機器憑證串成一條條自動化攻擊鏈——而我們能做的,不是祈禱自己不要被點名,而是現在就把 AI 工具當成高風險系統,納入完整的安全設計、監控與治理。
    否則,AI 幫你省下的開發時間,很可能會全部補課在 incident response 上,而且還不一定補得回來。

    🚀 你現在可以做的事

    • 盤點並審視團隊現用的所有 AI 開發工具與 IDE 插件,標記其可存取的程式碼與憑證範圍
    • 在組織內導入或強化密鑰管理系統,將 .env、CI 變數等敏感資訊集中管控並定期輪替
    • 為團隊安排一場「AI + DevSecOps」安全工作坊,針對 AI agent 權限與供應鏈風險建立共同威脅模型
  • Claude Code 動態工作流實戰指南

    Claude Code 動態工作流實戰指南

    📌 本文重點

    • 動態工作流讓 Claude Code 變成能總包整個 repo 的工程助手
    • Opus 4.8 提升程式推理與錯誤自查效率,並提供快速模式省時省錢
    • Ultracode 把大規模 code review 與安全審計變成一個指令可完成

    用一句話講清楚:Claude Code 的「動態工作流」讓你把「重構整個 repo、語言遷移、資安審計」交給一個會自己拆分任務、開數百個子 Agent 平行跑、還會自我驗證結果的代碼工地總包商。


    核心功能:從「聊天寫程式」升級成「工程總包」

    1. 動態工作流:自動拆分、平行執行、自己驗收

    Anthropic 在 Claude Code 中加的 dynamic workflows,關鍵不是「多 Agent」本身,而是:

    • 由模型自己寫協調腳本(orchestration scripts)
    • 自動把工作拆成數十到數百個子任務
    • 每個子任務對應一個子 Agent 平行跑
    • 結束前先做一輪自我驗證,只把過檢的結果給你

    最典型的實戰案例,是 Bun 作者用它做 Zig→Rust 遷移:

    近 75 萬行代碼、約 11 天完成,測試通過率 99.8%(來源:Reddit 動態工作流介紹)

    💡 關鍵: 對接近 75 萬行程式碼的遷移專案來說,11 天達到 99.8% 測試通過率,代表這套動態工作流足以接住大型、原本高風險的重構工程。

    實際會怎麼跑? 以「整個 repo 重構」為例,dynamic workflows 大致會:

    1. 掃描 repo,產生檔案與模組地圖
    2. 規劃任務圖(Task graph):例如先改 domain 層,再跑 API 層,最後是 UI
    3. 平行啟動子 Agent:每個 Agent 負責一組檔案或一類修改(型別調整、logging 統一、錯誤處理強化…)
    4. 在背景自動做 diff、測試、靜態檢查
    5. 聚合結果,過一輪總審查後才丟回給你

    你可以這樣用(行動建議):

    • 想重構:
    • 在 Claude Code(或 API)裡給它:
      • 專案簡介 + 技術棧
      • 現在的痛點(例如:循環依賴、例外亂飛、型別不嚴謹)
      • 你願意接受的改動範圍(例如:可以改 public API?可以拆模組嗎?)
    • 下指令像:「為這個 monorepo 設計一個 2 週內可以完成的重構計畫,用動態工作流分批執行。」

    • 想做資安審計:

    • 給它 repo,說明:框架、使用的雲服務、資料敏感區
    • 指令示例:「用動態工作流做一次安全掃描,重點找:未驗證的輸入、SQL injection 風險、憑證硬編碼、弱 JWT 驗證。」

    2. Opus 4.8:程式推理更穩、錯誤自查率變 4 倍

    根據 Anthropic 官方與社群測試(如 Decoder 報導 和 r/artificial 整理):

    • 程式錯誤檢測能力較 4.7 提升約 4 倍:更容易自己指出「這裡可能 NPE」「這裡 race condition」「這裡忽略錯誤」。
    • 在瀏覽器 / 電腦代理 benchmark(Online-Mind2Web)上,Opus 4.8 優於 GPT-5.5,也就是比較會自己「操作工具」而不是只寫字。
    • 使用者回報的特點:更常誠實承認「沒做完」「這裡有風險」,對長流程開發很重要。

    更關鍵的是新增了「快速模式」(fast mode):

    • 約 2.5 倍速度
    • 成本約是完整模式的 1/3 左右(數字隨官方調整,但量級在這附近,來源:r/ClaudeAI)

    💡 關鍵: 在程式錯誤檢測提升約 4 倍的同時,fast mode 還能以約 1/3 成本提供 2.5 倍速度,讓你可以先用低成本掃全 repo,再用完整模式精修關鍵部分。

    怎麼選模式才划算?

    • 用快速模式的情境:
    • 寫 template、樣板 code(CRUD、UI 元件鋪排)
    • 大量簡單檔案轉換(例如 config 重排、註解補齊)
    • 先跑一輪粗略掃描(安全 / style / dead code)

    • 改用完整(非快速)模式的情境:

    • 棘手 bug 定位(多執行緒、邊界條件)
    • 關鍵底層邏輯(交易撮合、金流、權限系統)
    • 產出要長期維護的設計文件或核心 API 介面

    實作建議:先用快速模式跑全 repo 掃描 → 把它標出的高風險區塊,再交給完整模式精修。


    3. Ultracode:把「大規模 code review」變成一個指令

    Ultracode 是 Claude Code 裡針對程式碼審查的強化工作流(參考 r/ClaudeAI 討論):

    • 你只需要丟一個 diff、Pull Request 或整個子資料夾
    • Ultracode 會在背景開子工作流做:
    • 分檔案審查
    • 風險排序(安全 > 穩定性 > 可維護性)
    • 驗證自己的意見是否一致,再回傳整理過的 review

    實際效果偏向:一個很嚴格、沒情緒的資深工程師,會吐槽你 data2 這種變數名(參考「讓 Claude 審查 Claude」的案例)。

    你可以這樣用(行動建議):

    • 小團隊 / Side project:把 PR 丟給 Ultracode,要求:
    • 「請只標出會導致 bug / 安全問題的變更,逐一解釋原因。」
    • 「另外列一份『可選優化清單』,讓我有時間再慢慢改。」

    • 個人練功:

    • 把自己最近寫的一個模組丟給 Ultracode,問:
      • 「請假裝你是 code reviewer,列出你會擔心的 10 個點。」
      • 把每個問題的建議重構方式具體寫出來,附簡短範例。

    適合誰用?幾種典型場景

    1. 重寫或升級舊系統

    典型痛點:老專案沒測試、沒文件、沒人敢動。

    可以這樣切:

    1. 用 Claude Code 建一份系統地圖:
    2. 指令:「為這個 repo 建一份架構圖,包含模組依賴、資料流、外部服務。」
    3. 問它「若想把 A 模組替換成 B 技術棧,請設計一個最小風險的遷移計畫」,讓它給分批 PR 設計。
    4. 啟用動態工作流分批套改(例如先把 logging 換掉,再換 ORM)。

    2. 大規模代碼審計與安全掃描

    結合 dynamic workflows + Ultracode:

    • 全 repo 掃描:
    • 找硬編碼密鑰、弱加密、未驗證輸入
    • 為每類問題產生「修復模板」和自動修正 PR 草案

    • 持續使用方式:

    • 在 CI 加一步,用 Claude API 對每個 PR 跑 Ultracode 審查(可參考 Cloudflare 的 AI code review 實務 思路)。

    3. 多語言遷移(Zig→Rust、Python→TypeScript 等)

    Bun 的 Zig→Rust 遷移是一個極端例子,你可以用同樣思路做「比較小但現實」的版本:

    • Python backend → TypeScript(Express / Nest / tRPC)
    • JS 老專案 → TypeScript + stricter ESLint
    • PHP legacy → Laravel / Symfony 新專案

    實作建議:

    1. 先選一個獨立、低風險模組試轉,例如:
    2. 「通知系統」「報表匯出」「第三方 API 包裝」
    3. 指令示例:
    4. 「把這個 Python 資料轉換模組遷移到 TypeScript,目標環境是 Node 20 + TypeScript 5,型別要寫滿。」
    5. 測試穩了,再用動態工作流把相同 pattern 套到其他模組。

    4. 一人公司 / Side Project 的開發流程

    把 Claude Code 當作:

    • 一個幫你拉腳手架、寫樣板、整理測試的 junior dev
    • 再加上一個幫你審 PR、找安全洞的 senior reviewer

    你可以設計一個固定節奏:

    1. 功能草圖 → 讓 Claude 產生目錄結構與初版 code
    2. 自己補關鍵業務邏輯
    3. 用 Ultracode 做一次 code review + 測試覆蓋率建議
    4. 每個 sprint 最後,用動態工作流掃一次「錯誤處理 / logging / metrics 是否一致」

    怎麼開始:從免費聊天到整 repo 動態工作流

    1. 最低門檻:claude.ai 免費方案能做到什麼?

    入口:https://claude.ai

    目前免費帳號:

    • 可以使用新版模型(通常是 Sonnet / 部分場景下可用 Opus fast)
    • 適合:
    • 單檔 / 小模組的重構、bug debug
    • 讓它幫你讀一份錯誤訊息、log、或小型程式片段

    實際用法建議:

    1. 先貼一個單檔(或小於幾百行的檔案),請它:
    2. 「幫我找 bug / 重構 / 改風格」
    3. 再貼一個小 repo 的 zip / 關鍵檔案集合,問:
    4. 「請幫我畫出這個專案的架構圖與資料流程。」

    當你開始需要:

    • 長時間、多輪的代碼工作
    • 跑動態工作流、Ultracode、Opus 4.8 完整能力

    就會需要升級到 Claude Pro / Max / Team 或企業方案(具體功能以官方頁面為準)。


    2. 在終端安裝開源版 anthropics/claude-code

    GitHub:https://github.com/anthropics/claude-code

    基本安裝流程(概念):

    # 1. 安裝
    pip install claude-code  # 或依照 repo README 指示
    
    # 2. 設定 API Key(以官方 Claude API 為例)
    export ANTHROPIC_API_KEY="你的 API Key"
    
    # 3. 在專案根目錄啟動
    cd 你的專案目錄
    claude-code
    

    然後你就可以在終端跟它對話:

    > 幫我找出 src 下面所有可能的 race condition,並建議重構方式。
    > 幫我寫一個腳本,批次把 React class component 改成 function + hooks。
    

    動態工作流、Ultracode 會隨著你帳號權限與版本逐步釋出;用開源終端版的好處是:更容易和你自己的工具鏈(git、CI、測試框架)接軌。


    3. 透過 API / Bedrock / Vertex AI 調用動態工作流

    如果你要把這些能力塞進自己的內部平台或 CI:

    • Claude API:https://www.anthropic.com/api
    • Amazon Bedrock:在 Bedrock 控制台選擇 Claude Opus / Claude Code 相關 model
    • Google Vertex AI:在 Model Garden 選擇 Claude / Claude Code

    動態工作流目前通常以「研究預覽」方式提供給 Max / Team / Enterprise,透過:

    • 在請求中指定對應的 model / capability 標誌
    • 或使用官方提供的 workflow endpoint / 模板(需看當下文件)

    工程整合建議:

    • 在 CI 裡新增一個步驟:
    • 將本次 PR 的 patch / diff 打包
    • 呼叫 Ultracode / dynamic workflows 做審查
    • 把審查結果回寫成 bot comment

    4. 一個「從小到大」的漸進式實驗腳本

    你可以照這個順序,逐步加深依賴,而不會一開始就把整個 repo 丟給它:

    1. 單檔小任務(claude.ai 免費即可)
    2. 目標:讓它幫你修一個 bug / 重構一個 utility
    3. 檢查點:看它產出的 code 是否可讀、是否真的有幫你省時間。

    4. 小 repo(1–3 個模組) + Claude Code 終端版

    5. 目標:讓它在終端幫你跑測試、改幾個檔案、整理 commit
    6. 指令示例:「設計一組 PR,把這個小專案升級到最新框架版本。」

    7. 整個代碼庫 + 動態工作流 / Ultracode

    8. 目標:一次性做一個「人力不想做」的大工程:
      • 全 repo 錯誤處理統一
      • 安全掃描 + 自動修復草案
      • 語言 / 框架遷移的一個大模組
    9. 檢查點:
      • 先在 staging / feature branch 跑
      • 用你自己的測試 + Claude 的自我驗證雙重把關

    照這個步驟,你會很快感受到:Claude Code 已經不只是「幫你補幾行程式碼」,而是可以接下「這個季度我們一直不想動的那一坨技術債」,而你只需要負責決策方向與最後拍板。

    🚀 你現在可以做的事

    • 到 claude.ai 用免費帳號先丟一個單檔,實測一次 bug 修正或小重構流程
    • 在自己的專案根目錄安裝並啟動 anthropics/claude-code,讓它對一個小模組跑動態工作流或 Ultracode
    • 在現有 CI 流程中,挑一條非關鍵分支試接 Claude API,讓 Ultracode 對 PR 自動產生第一次 code review 評語
  • 用 Claude.md 做一個不會爛掉的長跑代理

    用 Claude.md 做一個不會爛掉的長跑代理

    📌 本文重點

    • 用 CLAUDE.md 嚴格約束代理行為,避免長跑爛掉
    • 核心原則是「行動+證據」,禁止空談與無限迴圈
    • 透過上下文壓力自查與簡潔憲法,讓代理長時間穩定運作

    用一份不到 100 行的 CLAUDE.md,就能讓你的 Claude 代理連跑幾小時都不會開始胡言亂語、卡住不動或重複修同一個 bug。

    參考原作者在 Reddit 的分享:
    – 長跑 Claude Code 代理的設定檔開源文:https://www.reddit.com/r/ClaudeAI/comments/1tjy3sk/i_opensourced_the_operating_file_that_keeps_my/
    – 100 條個人 AI 代理實戰心得:https://www.reddit.com/r/ClaudeAI/comments/1thi6nh/100_tips_tricks_for_building_your_own_personal_ai/


    核心功能:這份 CLAUDE.md 到底做了什麼?

    1. 只允許「行動與證據」,禁止長篇空談

    長跑代理會爛掉,通常是這三個症狀:

    1. 開始寫「我將會…」「接下來我要…」但不真的執行工具
    2. 一直說「應該已修好」但沒有測試結果
    3. 花很多篇幅重複解釋計畫,實際變更很少

    CLAUDE.md 的核心規則,就是把這些行為全部關掉:

    • 輸出只允許三種型態:
    • 已完成的動作(例如:檔案修改、指令執行、API 呼叫)
    • 具體問題 / 需要決策的提問
    • 極短的進度摘要
    • 聲稱「完成」前要附證據:如測試輸出、報表截圖路徑、命令列結果

    💡 關鍵: 將輸出限制為「行動+證據」,能大幅減少長篇空談與無效迴圈,讓長跑代理真正持續推進任務

    你可以做的事:
    – 在你的專案根目錄放一份 CLAUDE.md,明確寫出:
    – 「不要描述你要做什麼,只要直接做並回報結果」
    – 「任何『應該已修好』前,必須貼出測試輸出」

    2. 內建「上下文壓力」自我檢查

    長跑幾小時後,對話上下文會變超長,Claude 開始:

    • 忘記早期需求
    • 無法把握目前專案狀態
    • 回答變模糊或重覆

    原作者在 CLAUDE.md 裡加了一條關鍵原則:

    代理要定期自查上下文壓力:發現自己搞不清狀態,就主動整理摘要、刪除多餘上下文、或要求人類幫它重設現狀。

    具體做法通常包含:

    • 每完成一個階段任務,就輸出一個「短摘要 + 關鍵檔案清單」
    • 長度過大時,優先保留:
    • 最新的決策
    • 目前版本的檔案 / 結構
    • 尚未完成的待辦

    你可以做的事:
    – 在 CLAUDE.md 寫明:
    – 「當你感覺自己不確定目前狀態時,先輸出一份 10 行內的現況摘要,再繼續工作。」
    – 「如需要,可要求人類提供『目前唯一真實狀態』說明,並用這份說明覆蓋舊假設。」

    3. 任務憲法:不靠「一長串 Prompt」,靠幾條簡潔原則

    多數人用代理會寫一大段 prompt,結果 Claude 讀不完、也記不住。CLAUDE.md 的思路是:

    • 用 10–20 條簡短規則,定義這個代理的「憲法」
    • 每條都要能對應到實際行為約束,例如:
    • 「若有工具可以做某事,優先用工具,不要手寫模擬輸出」
    • 「對同一錯誤連續嘗試 3 次仍失敗,就停下來請人類決策,不要無限迴圈」

    💡 關鍵: 把 10–20 條行為規則寫成固定「憲法」,比灌輸一大段單次 prompt 更能在長跑中維持穩定行為

    參考 Reddit 另一篇實戰文:https://www.reddit.com/r/ClaudeAI/comments/1thi6nh/100_tips_tricks_for_building_your_own_personal_ai/

    你可以做的事:
    – 先列出你的代理最常「爛掉」的 3 個行為,逐條寫進 CLAUDE.md,用「禁止 / 應改為」的格式:
    – 「禁止:連續兩次貼出幾乎相同的錯誤訊息。應改為:第二次失敗時,整理你已試過的方法,請人類選下一步。」


    適合誰用:3 個實戰場景

    1. 單機腳本型代理:排程任務、批次資料處理

    你有這些需求時,很適合:

    • 每晚跑一次報表轉檔腳本
    • 每週整理一批 CSV / Excel 檔,把欄位標準化
    • 定期爬某個網站的資料、存到本地或資料庫

    做法:

    1. 用 Claude Code 或本地腳本,讓代理可以:
    2. 讀寫特定資料夾
    3. 執行 shell 指令(或以 PowerShell / bash 包一層)
    4. 把 CLAUDE.md 放在專案根目錄,寫清楚:
    5. 允許改動哪些檔案
    6. 批次任務完成的判定方式(例如輸出檔案數量、檔名規則)
    7. 用排程工具觸發:
    8. macOS / Linux:cron 或 systemd timer
    9. Windows:排程工作排程器 + 命令列啟動代理腳本

    2. 長連線開發代理:Claude Code / VS Code / Cursor 類工作流

    如果你常用 Claude 來寫程式、改大型專案,長時間開著一個 session,很容易出現:

    • 忘記三小時前的設計決定
    • 重複修同一支檔案
    • 一直在講解架構,但實際 commit 很少

    這時 CLAUDE.md 非常好用:

    實際操作:

    1. 在 VS Code 專案根目錄新增 CLAUDE.md,內容包含:
    2. 專案簡述
    3. 允許的工具(例如:跑測試、執行 npm test、pytest 等)
    4. 「行動 > 敘述」與「證據 > 猜測」等規則
    5. 在 Claude Code / Cursor 內重新開啟專案,確保代理會讀到這個檔案
    6. 開發時明確下指令:
    7. 「請遵守 CLAUDE.md,連續工作直到完成以下任務…」
    8. 「每完成一個子任務,產出最多 5 行的進度摘要」

    進階:也可以搭配多代理流程,參考:https://www.reddit.com/r/ClaudeAI/comments/1thi16y/how_i_built_a_9agent_team_where_my_agents/

    3. 自建小型自動化服務:抓報表、清理資料

    你想做一些「半自動」小工具,例如:

    • 每週自動登入內部系統下載報表
    • 讀取資料夾裡的新檔案,做資料清洗 / 格式標準化
    • 根據最新資料,產出簡短摘要寄 Email

    可用的整合方式:

    • MCP / shell 指令:
    • 透過 Model Context Protocol 暴露一組工具給 Claude,例如:
      • list_files, read_file, run_command
    • 規則寫進 CLAUDE.md:

      • 「處理檔案時,一律用工具列出檔名,不要從記憶猜」
    • Power Automate:

    • 由 Power Automate 排程觸發 HTTP / CLI,呼叫你的 Claude 代理後端
    • 回傳的結果可再串 Outlook 寄信、寫入 Excel、更新 SharePoint

    你可以做的事:
    – 先選一個最小自動化任務,例如「每週整理銷售報表」,只把這一個流程寫入 CLAUDE.md,確保跑穩,再慢慢加其他任務。


    10 分鐘上手:從 fork 到跑起你自己的代理

    以下是一條「10 分鐘內能動起來」的最短路徑,你可以依你使用的工具微調。

    Step 1:fork 開源專案

    1. 前往 Reddit 原文查看作者提供的 repo(通常會在貼文內):https://www.reddit.com/r/ClaudeAI/comments/1tjy3sk/i_opensourced_the_operating_file_that_keeps_my/
    2. 在 GitHub 上 fork 到自己的帳號
    3. 本地 git clone 下來

    Step 2:複製 CLAUDE.md 到你的專案

    1. 打開作者的 CLAUDE.md,通讀一遍規則
    2. 複製到你自己的專案根目錄
    3. 只做三種修改:
    4. 把專案描述改成你的任務(例如:財報整理、數據清洗、網站爬蟲)
    5. 調整允許使用的工具(例如是否允許 rm / 刪檔)
    6. 加上 2–3 條你最在意的「不准爛掉」條款

    💡 關鍵: 只動專案描述、工具白名單與 2–3 條關鍵禁令,能在 10 分鐘內把通用 CLAUDE.md 變成專屬代理憲法

    Step 3:綁定你常用的工作環境

    依你用的平台選一條:

    • Claude Code / VS Code / Cursor:
    • 在這個專案資料夾內開啟編輯器
    • 確認工具(跑測試、shell、檔案操作)已啟用
    • 對 Claude 說:「請讀 CLAUDE.md 並照裡面的規則長時間工作」

    • MCP + shell 指令:

    • 建立一個 MCP server,提供 run_shell, read_file, write_file 等工具
    • 在 CLAUDE.md 明確寫出「所有系統操作一律經由 MCP 工具」
    • 用你偏好的前端(例如自寫 CLI、簡單 Web)呼叫 Claude

    • Power Automate / 其他自動化:

    • 建一個小型後端服務(可用 Python FastAPI / Node.js)包住 Claude API
    • 後端每次呼叫 Claude 時,都把專案檔案+CLAUDE.md 帶入 context
    • 用 Power Automate 定期觸發這個 API

    Step 4:跑一個「能觀察的」任務,調整規則

    1. 選一個 30–60 分鐘的任務給代理連續跑(例如重構某一個資料夾的程式碼)
    2. 觀察:
    3. 什麼時候開始廢話變多?
    4. 哪種情況會卡在同一個錯誤?
    5. 直接把這些「失敗模式」寫回 CLAUDE.md 變成新條款

    重複兩三輪,你會得到一份專屬於你工作流、而且真的能「長跑不爛」的代理憲法。


    小結:先管好行為,再管工具

    長跑 AI 代理很容易越跑越爛,通常問題不在模型,而在缺乏清楚的行為規則。透過一份設計良好的 CLAUDE.md:

    • 把輸出限制在「行動+證據」
    • 讓代理主動監控上下文壓力
    • 用幾條簡單原則當作「憲法」

    你可以在單機腳本、開發環境、多工具自動化裡,得到一個穩定得多的 Claude 代理。

    建議從今天開始:先為你最常用的一個專案寫一份 CLAUDE.md,跑一個完整任務,看看它能連續跑多久還保持專注。那會是你感受到「長跑代理真的可用」的第一步。

    🚀 你現在可以做的事

    • 在一個常用專案根目錄新建 CLAUDE.md,寫入「行動+證據」與上下文自查規則後實際跑一次長任務
    • 從 Reddit 原文 fork 作者 repo,閱讀並複製其中 CLAUDE.md,依你的工作流做 2–3 處客製調整
    • 列出你代理常見的 3 個「爛掉模式」,逐條轉寫成禁止條款加進 CLAUDE.md,並在下一次工作中觀察效果
  • 本地 AI 代理寫程式,也要有 AI 幫你審 PR

    本地 AI 代理寫程式,也要有 AI 幫你審 PR

    📌 本文重點

    • AI 寫程式一定要搭配 AI 審查流程
    • adamsreview 提供多代理、分階段 PR 審查
    • React Doctor 專治 AI 產出的 React 小雷
    • 組合成「AI 寫 + AI 審 + 人類決策」完整 workflow

    當你開始大量用 AI 寫程式時,真正的風險不在「寫不出來」,而在「錯誤、壞味道、性能坑」靜靜被合進主幹,所以現在比起寫程式,更需要好的 AI 審查與補救工具。

    下面用兩個最近爆紅的開源工具 adamsreview 和 React Doctor,帶你組一條「AI 寫程式 + AI 審 PR/修 bug」的實戰流程。


    核心功能:兩個工具,一條龍

    工具總覽

    名稱 核心功能 免費方案 適合誰
    adamsreview 多代理分工的 PR 審查,深度檢查邏輯與安全 完全開源 用 GitHub / GitLab、有 PR 流程的後端或全端團隊
    React Doctor 自動檢測、修正 AI 產出的 React 程式碼 完全開源 用 Claude/ChatGPT 產生 React/TSX 的前端團隊

    接下來分別講清楚:

    1. adamsreview 怎麼把 PR 審查拆給多個 AI 代理,使錯誤更難漏掉。
    2. React Doctor 怎麼專門處理「AI 產生 React code 一堆小雷」這件事。
    3. 最後用這兩個工具,組裝一條可直接抄走的開發 workflow。

    一、adamsreview:多代理分工的嚴謹 PR 審查

    核心功能

    adamsreview 是一個專為 Claude Code 設計的插件(slash commands),重點是:

    1. 多階段、多代理 PR 審查
    2. 不是一次跑完,而是分成好幾個階段:整體變更 → 文件/測試 → 安全/性能 → 修正建議。
    3. 每個階段可啟動平行子代理(sub-agents),例如一個看 API 變更,一個看錯誤處理。
    4. 審查狀態存在本地 JSON 裡,可以在不同命令之間保持上下文。

    5. 更少漏網 bug、更少誤報

    作者在 HN 上提到,它在實戰中比:

    • Claude 內建 /review、/ultrareview
    • CodeRabbit、Greptile

    更常抓到真實 bug,同時少講廢話。

    實際上常被抓到的包括:

    • 新增邏輯沒有對錯誤狀況做邊界檢查
    • 漏更新單元測試或 fixture
    • API 變更與文件不一致
    • 可預期的性能問題(例如重複查詢、無 cache)

    💡 關鍵: 多階段、多代理的拆解方式,讓 adamsreview 比一般單次 /review 更容易抓到真正 bug,且減少冗長誤報。

    1. 直接嵌入現有 PR 工作流
    2. 提供像 /review、/codex-review、/fix 等命令,照著你原本用 Claude Code 的習慣延伸。
    3. 可搭配 Codex CLI 與 PR bot,在 PR 上直接留下 AI 審查留言。
    4. 狀態存在檔案裡,方便在 CI 或本地反覆跑不同階段的檢查。

    適合誰用

    幾個具體場景:

    • 有正式 PR 流程的後端/平台團隊

    例如:用本地 LLM 或 Claude 幫你生成 service / handler,透過 adamsreview 做一輪「AI 審 PR」,再交給人類最後確認。

    • 資深工程師很忙的小團隊

    初階工程師用 AI 寫功能,先交給 adamsreview 初審,減少 reviewer 花時間抓基礎錯誤。

    • 正在導入 AI coding,但怕品質失控的團隊

    讓「AI 生成程式碼」必須經過「AI 多代理審查」,有規則可循,而不是全憑 reviewer 心情。

    怎麼開始:最小安裝步驟

    原始專案:https://github.com/adamjgmiller/adamsreview

    以下是一個「最短路徑」,讓你在現有 GitHub PR 流程中接上 adamsreview:

    1. 準備環境

    2. 需要:

      • 有權使用 Claude Code 並可安裝插件(通常是付費方案)。
      • 本機有 git + Node.js(或作者指定的執行環境)。
    3. 安裝與設定

    在你的開發機或開發容器中:

    bash
    git clone https://github.com/adamjgmiller/adamsreview
    cd adamsreview
    # 若有提供安裝腳本
    npm install # 或 pnpm/yarn

    • 依照 repo README 設定環境變數(通常包含 Claude/Codex API key)。

    • 在 Claude Code 中載入插件

    • 打開 Claude Code(或支援的 IDE 插件)。

    • 依 README 說明匯入 slash commands。
    • 你會看到新增的命令,例如:/review、/fix。

    • 在 CI / PR 流程中接上(GitHub Actions 範例)

    在 .github/workflows/pr-review.yml 增加一個簡化版 workflow:

    “`yaml
    name: AI PR Review

    on:
    pull_request:
    types: [opened, synchronize]

    jobs:
    ai-review:
    runs-on: ubuntu-latest

       steps:
         - name: Checkout
           uses: actions/checkout@v4
    
         - name: Setup Node
           uses: actions/setup-node@v4
           with:
             node-version: '20'
    
         - name: Install adamsreview
           run: |
             git clone https://github.com/adamjgmiller/adamsreview
             cd adamsreview && npm install
    
         - name: Run adamsreview
           env:
             CLAUDE_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
           run: |
             cd adamsreview
             # 依專案提供的 CLI 指令
             npm run review -- ../
    

    “`

    這樣每次有人開 PR,就會自動觸發 AI 審查並在 PR 留言(實際指令依 repo 說明調整)。


    二、React Doctor:專治 AI 產出的 React 小雷

    官方 repo:https://github.com/millionco/react-doctor

    它在 README 的第一句就是:「Your agent writes bad React. This catches it」。重點就是:AI 幫你產生的 React/TSX 常常「能跑,但不安心」。

    核心功能

    1. 針對 React/TSX 的靜態檢測與修復

    2. 專門用來掃描 React 專案(JSX/TSX),找到常見的壞味道與 bug。

    3. 例如:
      • 在 useEffect 中漏依賴
      • 不必要的 re-render
      • 不穩定的 key
      • props 型別不一致
    4. 部分問題可以自動產生修正 patch,直接套用。

    5. 和 AI 代理配合運作

    它假設你已經在用 AI(Claude、ChatGPT、Cursor 等)生成元件或 hook:

    • 先讓 AI 產出 code
    • commit 前跑 React Doctor:快速找出「AI style 錯誤」
    • 必要時讓 React Doctor 幫你修補。

    • TypeScript 友善

    • 專案本身用 TypeScript 寫,也善用現有型別資訊。

    • 如果你本來就用 TS + React,導入成本很低,直接把現有 tsconfig、型別檔當基礎。

    💡 關鍵: React Doctor 把「AI 寫得能跑」提升到「依 React/TS 最佳實務可維護」,特別適合大量由 AI 生成的 UI 程式碼。

    適合誰用

    幾個典型情境:

    • 用 Claude/ChatGPT 幫你生 UI 元件

    例如設計稿轉 React Component:

    • AI 負責「寫得出來」。
    • React Doctor 負責「寫得對、好維護」。

    • React 新手 + AI 輔助開發

    新手可能看不出 AI 產生的 code 有哪些壞習慣,React Doctor 可以當成「自動 code review 老師」。

    • 已有大型 TypeScript + React 專案

    部分模組開始用 AI 重構或新增功能,用 React Doctor 當 Safety Net,避免 AI 把舊 code 改壞。

    怎麼開始:在 TS 專案快速啟用

    假設你有一個現成的 React + TypeScript 專案:

    1. 安裝 React Doctor

    專案目錄下:

    bash
    npm install react-doctor --save-dev
    # 或
    pnpm add -D react-doctor

    1. 新增設定檔(若有需要)

    參考 repo 中的樣板(實際檔名跟範例以官方 README 為準):

    bash
    npx react-doctor init

    這通常會產生一個設定檔,例如 react-doctor.config.ts,你可以指定:

    • 要掃描的資料夾(例如 src)
    • 要啟用的規則

    • 在 package.json 加上腳本

    json
    {
    "scripts": {
    "doctor": "react-doctor check src",
    "doctor:fix": "react-doctor fix src"
    }
    }

    1. 在 Git hooks / CI 中啟用

    2. 透過 Husky 或 lint-staged,在 pre-commit 或 pre-push 跑:

      bash
      npx react-doctor check src

    3. 或在 GitHub Actions 加一個 job:

      yaml
      - name: React Doctor
      run: npm run doctor

    這樣每次有人把 AI 產的 React code 推上來,就會被 React Doctor 先掃過一次。


    三、組裝一條「AI coding + AI code review/repair」工作流

    最後用文字幫你拼成一個可以直接採用的流程,從「AI 寫 code」到「AI 審查 + 修正」:

    1. 開發階段:AI 寫程式

    2. 使用本地 LLM、Claude Code 或 ChatGPT:

      • 讓 AI 產出後端 handler、service、React 元件。
      • 人類工程師只負責寫 prompt + 調整架構。
    3. 前端部分:React Doctor 抓小雷

    4. 每次 AI 生成或修改 React/TSX 檔案:

      • 本地跑 npm run doctor 檢查。
      • 對於可自動修正的問題,跑 npm run doctor:fix。
    5. 把這個步驟固定在:

      • pre-commit hook
      • 或 VS Code Task / npm script
    6. 提交 PR:adamsreview 做多階段 PR 審查

    7. 開 PR 後,GitHub Actions 觸發 adamsreview:

      • 階段 1:總覽差異,找出風險區域。
      • 階段 2:針對測試、錯誤處理、安全性做專門檢查。
      • 階段 3:產生具體修正建議或 patch。
    8. PR 上自動留下 AI comment,方便 reviewer 快速聚焦真正問題。

    9. 人類最後把關

    10. Reviewer 看:

      • React Doctor 的報告(前端)
      • adamsreview 的 PR 評論(後端/全端)
    11. 決定哪些建議要採用,哪些視情況忽略。
    12. 合併前至少確保:
      • 所有必跑的 React Doctor / adamsreview 任務都綠燈。

    💡 關鍵: 重點不是「全自動合併」,而是用 AI 把最耗時、最容易忽略的細節掃一遍,再由人類做最後決策。

    這條工作流的重點不是「全自動」,而是:

    • 把 AI 寫程式變成可控的流程,而不是隨意貼 paste code。
    • 把最耗時、最容易忽略的細節(React 小雷、邊界條件、安全性)交給專門的 AI 工具來抓。

    實作上,你可以先選一個小模組試行:

    • 前端導入 React Doctor。
    • 後端/全端導入 adamsreview。
    • 兩週後檢查:PR 審查時間、有 bug 的 PR 比例是否下降,再決定要不要擴大到整個 repo。

    用 AI 寫程式已經變成常態,下一步是在你的團隊裡,建立一套 「AI 寫 + AI 審 + 人類決策」的固定流程,讓速度與品質可以同時兼顧。

    🚀 你現在可以做的事

    • 打開 GitHub,分別把 adamsreview 與 React Doctor repo 加到你的星標與閱讀清單
    • 在一個側專案或小模組上,先實驗接上 React Doctor 的 npm run doctor / doctor:fix 腳本
    • 在現有 repo 新增一個簡單 GitHub Actions workflow,試跑一次 adamsreview 的 AI PR 審查流程
  • Claude Code:把你的一人開發組變成小團隊

    Claude Code:把你的一人開發組變成小團隊

    📌 本文重點

    • Claude Code 扛「從 issue 到 PR」整條開發流程
    • 百萬 token 上下文,能做跨檔案大規模重構
    • 與 issue 管理工具整合,連動任務與代碼
    • 把它當工作流 Agent,而不是單純寫程式助手

    Claude Code 要解決的問題很單純:不要只幫你「寫幾行程式」,而是幫你「從 issue 到 PR 到 release note」整條開發流程一起扛掉。

    Claude Code 官方頁面|參考閱讀:Claude Code Isn’t a Coding Tool. It’s Your Team’s New Workflow Engine.


    核心功能:不只是會寫程式的 Chatbot

    1. 百萬上下文 + 跨檔案重構

    Claude Code 的關鍵不是「會寫程式」,而是一次看得懂整個專案:

    💡 關鍵: 百萬 token 上下文讓 Claude Code 能一次理解整個大型 repo,支援跨模組重構與設計級別調整。

    • 支援百萬 token 上下文,實務上可以:
    • 一次讀完整個 monorepo 的關鍵目錄
    • 同時理解前後端、infra、文件
    • 實際能做的事:
    • 統一命名規則、API 介面:
      • 指令範例:

        「請在整個 apps/web 和 packages/api 裡,把 user profile 統一改成 UserProfile 類型,並更新相關型別定義與呼叫點。」

    • 大規模重構:改 routing、auth、logging 邏輯,而不是只改單一檔案

    行動建議:
    – 第一次用時,直接把「專案關鍵資料夾」拖進 Claude Code,請它輸出:
    – 架構圖
    – 主要模組關聯
    – 技術債/風險清單

    2. 代碼審查 + 任務追蹤

    Claude Code 把「code reviewer + 小 PM」包在一起用:

    • 代碼審查:
    • 貼 PR diff 或讓它自己產生 patch,請它從幾個角度審查:
      • 可讀性
      • 安全性
      • 可測試性
    • 指令範例:
      > 「這個 PR 幫我做 code review,重點看:1) SQL 注入風險 2) log 裡有沒有可能洩漏個資。」
    • 任務追蹤:
    • 你丟一串 TODO、散落在註解、issue 裡,它可以:
      • 幫你整理成任務列表
      • 按複雜度排序
      • 標註依賴關係

    行動建議:
    – 把你專案裡的 // TODO 集中給 Claude Code,看它幫你:
    – 分成「1 小時內可完成」「需要討論設計」兩類
    – 生成對應 Issue 描述(等下一小節接管理工具)

    3. 與 Linear / Jira 等管理工具整合

    重點不是「Claude Code 會寫 issue」,而是它能 自己對應任務 ↔ 代碼:

    • 典型流程:
    • 從 Linear / Jira 拉某個 issue 描述
    • Claude Code:
      • 解析需求
      • 找出相關檔案
      • 建議實作方案
      • 產生 patch / commit 訊息
    • 回寫到對應 issue(附 PR link、測試說明)
    • 這讓你可以用一句話驅動整個流程:
    • 「幫我處理 Linear 上 FE-1234 這張 ticket,照 acceptance criteria 寫完測試再開 PR。」

    行動建議:
    – 把團隊目前的 issue 模板、PR 模板貼給 Claude Code,請它:
    – 照樣學習格式
    – 以後所有「產生 PR 描述 / 測試計畫」都統一風格


    適合誰用?三種典型場景

    1. 單人開發者:讓 Claude Code 當你的 PM + Reviewer

    你一個人接案或做 side project,沒人幫你看架構、沒人幫你 review。Claude Code 可以扮演:

    • 專案 PM:
    • 幫你把「腦中需求」變成 roadmap:
      • 「這個月要完成:會員系統 v1、簡單報表」
    • 轉成 task list:db schema、API、UI、測試
    • code reviewer:
    • 每次 commit 前,請它檢查:
      • 功能風險
      • 重複邏輯
      • 可抽共用函式的地方

    具體做法:
    – 建立一個持續使用的 Claude Code 專案,放:
    – README、需求文件、todo list
    – 一份「我寫程式的偏好」(語言、框架、lint 風格)
    – 每天開工前一句:

    「根據目前 repo 與 TODO,幫我排今天 3 個最值得做的 task,控制在 3 小時內。」

    2. 小團隊:讓它維護 issue、測試、技術文件

    對 3–10 人團隊,Claude Code 好用在「把大家都懶得做的事」接走:

    💡 關鍵: 對 3–10 人的小團隊,把 issue 清理、測試補齊與文件生成交給 Claude Code,可顯著減少非核心開發時間。

    • Issue 維護:
    • 每週讓 Claude Code:
      • 清理過期 / 重複 issue
      • 把描述不清的 issue 重新改寫
    • 測試補齊:
    • 對於已存在的功能程式碼:
      • 要求它列出「目前缺哪些層級的測試」
      • 自動產生 test skeleton(unit / integration)
    • 技術文件:
    • 從 commit / PR 摘要產出:
      • 變更日誌
      • ADR(Architecture Decision Record)草稿

    具體做法:
    – 選一個模組先試點,例如「會員系統」:
    1. 把現有 PR、issue 歷史餵給 Claude Code
    2. 要它輸出一份「會員系統說明文件 v0」
    3. 團隊一起 review,修改後當作標準模板

    3. 大批量重構 / 遷移專案:讓它拆成可執行任務

    當你在做:
    – 從 JS → TS
    – 從 REST → GraphQL / gRPC
    – 從單體 → 模組化

    這時 Claude Code 的長上下文 + 任務拆解很實用:

    • 一次吃下:
    • 主要模組目錄
    • 現有測試
    • 部署設定
    • 輸出:
    • 分階段遷移計畫
    • 每階段具體改哪些檔、會壞掉什麼

    具體做法:
    – 問 Claude Code:

    「假設我要在 4 週內把 services/auth 從 JS 遷移到 TS,請在不影響現在線上環境的前提下,拆成 4 週計畫,每週列出可以單獨合併的 PR 列表。」


    怎麼開始:從註冊到跑完一條完整 workflow

    步驟 1:註冊與開啟 Claude Code

    1. 到 claude.ai 註冊帳號(可用 Google / Email)。
    2. 登入後,點右上角 Code 進入 Claude Code 介面。
    3. 建議準備:
    4. GitHub repo 連結
    5. 專案 README、需求文件

    步驟 2:連接 GitHub / 專案庫

    目前常見兩種用法:

    • 直接拖拉檔案夾:
    • 小專案、side project 最快
    • 接 GitHub:
    • 依照介面授權,把指定 repo 掛上去
    • 在對話裡直接叫它打開某個檔案路徑,再請它操作

    行動建議:
    – 先選一個風險較低的 repo(side project 或工具庫)當實驗場,不要一開始就丟公司核心系統。

    步驟 3:示範一條具體 workflow

    以「從 TODO issue → 產生 PR → 自動寫 release note」為例:

    1. 整理 TODO
      在 Claude Code 裡貼上:
    2. 一個 Linear / Jira issue 內容,或
    3. 散落在程式裡的 TODO 註解

    請它:

    「幫我把這些 TODO 整理成一個明確的 issue 描述,列出 acceptance criteria。」

    1. 讓它實作並產生 PR
      接著說:

      「根據這個 issue,在目前 repo 裡完成實作,請:1)列出要改的檔案 2)給我完整 patch 3)附上測試建議。」

    你可以:
    – 先人工 review patch
    – 把 patch 套進本地分支
    – 提交 GitHub PR

    1. 自動寫 release note
      PR 開好後,把:
    2. PR diff / 連結
    3. 關聯 issue 連結

    貼給 Claude Code,指令:

    「幫我寫一段 release note,給非工程同事看的,限制 150 字內,列出 2-3 個 bullet point。」

    若你有一份既有 release note 模板,也一起貼上,請它照模板格式輸出。

    做完一次,你就有一條可重複的最小 workflow,之後只要換 issue 就能重跑。


    進階玩法:把 Claude Code 變成「小開發團隊」的一員

    1. 和輕量模型分工,省錢跑批量任務

    很多工作不需要 Claude 這種大模型,例如:
    – 大量 JSON 重新排版
    – 批次分類檔案
    – 從文字裡抽欄位

    參考這篇 Reddit 實作:Most of my Claude usage was on work that didn’t need Claude

    做法:
    – 另外架一個便宜的小模型 API(例如 DeepSeek V4 Flash)
    – 在 Claude Code 這邊只放一個規則:
    – 「遇到格式轉換、摘要這種機械工作,一律呼叫那個外部工具,不要自己算」

    💡 關鍵: 把機械式任務交給便宜模型,可將大量批次任務成本壓到原本的約 1/10。

    效果:
    – 大量批次任務成本可壓到原本的 1/10 甚至更低

    2. 搭配 Relay 這類插件,讓多個 Claude Code 會話互通

    如果你常同時開:
    – 一個 session 管 backend
    – 一個 session 管 frontend
    – 另一個管 infra / CI

    可以照這篇的做法:built a plugin so my parallel Claude Code sessions can message each other

    概念是:
    – 用像 Relay 這種小工具,讓不同 Claude Code 視窗可以互相發訊息
    – 例如:
    – 前端 session 問:「User object 現在長怎樣?」
    – 後端 session 直接回,結果推回前端視窗顯示

    實際好處:
    – 你不用在多個對話間複製貼上
    – 等於有好幾個專職「子工程師」在各自 repo 幫你跑任務,互相同步狀態


    小結:把 Claude Code 視為「工作流 Agent」,不是「更聰明的 Copilot」

    使用 Claude Code 的關鍵心態是:
    – 不要只問「幫我寫這個 function」
    – 要改成「幫我把這個 issue 從需求 → 設計 → 實作 → 測試 → 文件,一次帶完」

    先從一條最小 workflow 開始做起(例如本文的 TODO → PR → release note),再逐步接上 issue 管理、測試、自動文件,Claude Code 才會真正變成你開發流程的一部分,而不是多一個可以聊天的 IDE 工具。

    🚀 你現在可以做的事

    • 選一個風險低的 repo,丟進 Claude Code,請它產出架構圖與技術債清單
    • 把現有的 issue / PR 模板貼給 Claude Code,讓它學會之後統一產生描述與測試計畫
    • 實做一次「TODO → issue → PR → release note」完整 workflow,確認能在團隊內重複使用