Skip to content
💻程式#107進階金字塔 · 做
工程師Claude CodeCodex#程式碼遷移#實作#Checkpoint

程式碼遷移 Stage 2:實作階段指令

用途

規格書審核通過後,用這道指令讓 AI 依規格把目標檔案的 stub 換成正式實作——型別、精度、捨入與算法全部對齊——並在指定的 checkpoint 停下,不自動往下跑測試或進入下一階段。

何時用

  • 適合:已有人工核可的遷移規格書,想分階段控制實作進度、每個 checkpoint 親自確認後才放行時。
  • 不要用:規格書還沒核可或根本還沒寫——那時請先用「規格書生成」;也不要用在一次性小改動(直接改比設 checkpoint 快得多)。

Prompt

text
遷移任務:{{遷移任務描述,例:把 billing 模組從 VB6 搬到 Python 3.12}}

只推進到 Stage 2,不要進入 Stage 3 或之後的步驟。

依照核可規格目錄 {{規格目錄路徑}} 中的規格,對目標檔案 {{目標檔路徑}} 執行以下實作:
1. 把所有 stub 函式換成正式實作
2. 型別對應必須符合規格書中的「目標語言型別對應」表
3. 精度與 rounding 方式必須符合規格書中的指定算法
4. 邊界條件(零值、負值、超大數)依規格書中的「邊界條件清單」處理

到達 🛑 checkpoint2 後立即停止:
- 不要自動執行任何測試
- 不要修改規格目錄以外的其他檔案
- 輸出一份簡短的「本次實作摘要」(改了什麼、有哪些不確定點)等待我確認

範例 / 變體

  • 填好變數:遷移任務填 把 CalcInvoiceTax 從 VB6 搬到 Python、規格目錄填 docs/specs/、目標檔填 src/billing/calc_invoice_tax.py
  • 變體(Stage 3 測試放行):確認 Stage 2 實作後,另發一道 prompt:「通過確認,推進到 Stage 3,執行規格書中的測試案例並回報結果。」讓階段切換明確可控。
  • 變體(多檔批次):把目標檔改成清單,加「每個檔案各自停在自己的 checkpoint,全部完成再一起回報」。

🎯 範例輸出(實測)

Claude Code 跑這句、遷移任務填「把 CalcInvoiceTax 從 VB6 搬到 Python」、規格目錄填「docs/specs/」、目標檔填「src/billing/calc_invoice_tax.py」的結果:

點開看 AI 實際輸出

Claude Code 讀取 docs/specs/CalcInvoiceTax-spec.md 後,將 stub 函式替換為正式實作:

實作前(stub):

text
from decimal import Decimal
from typing import Literal

TaxType = Literal[1, 2, 3]

def calc_invoice_tax(invoice_amt: Decimal, tax_type: TaxType) -> Decimal:
    """TODO: 實作發票稅額計算"""
    raise NotImplementedError

實作後(正式實作,符合規格書):

text
from decimal import Decimal, ROUND_DOWN
from typing import Literal

TaxType = Literal[1, 2, 3]

def calc_invoice_tax(invoice_amt: Decimal, tax_type: TaxType) -> Decimal:
    """
    計算發票稅額。
    對應規格書:docs/specs/CalcInvoiceTax-spec.md
    Rounding:ROUND_DOWN(模擬 VB6 Currency 截斷行為)
    """
    if invoice_amt < 0:
        raise ValueError(f"發票金額不允許負數:{invoice_amt}")

    if tax_type == 1:  # 應稅 5%
        raw = invoice_amt * Decimal("0.05")
        return raw.quantize(Decimal("0.0001"), rounding=ROUND_DOWN)
    elif tax_type in (2, 3):  # 零稅率 / 免稅
        return Decimal("0.00")
    else:
        raise ValueError(f"不支援的稅別代碼:{tax_type}")

🛑 checkpoint2 — 實作摘要(等待確認)

本次改動:

  • src/billing/calc_invoice_tax.py:stub → 正式實作(+18 行)

不確定點(請確認後再繼續):

  1. 規格書指定 ROUND_DOWN 模擬 VB6 截斷行為,請確認業務上是否要保留此行為(對應 1,001 元稅額為 50.05 而非 50.0500 進位)
  2. 負數金額規格書標示 ValueError,但原始 VB6 並未做此驗證——請確認是否需要額外 migration test 確認舊有資料無負數

未執行任何測試,未修改 docs/specs/ 以外的其他檔案。

💡 實測心得🛑 checkpoint2 設計讓 Claude Code 輸出「不確定點」而非自己決定——實測中 AI 確實標注了 VB6 截斷 vs. 四捨五入的業務決策點,這正是人工審核最值錢的時刻,不要跳過。

延伸

你有沒有遇過這種情況?遷移寫到一半,AI 自作主張跑了測試、順手改了不相關的設定檔,結果 diff 一塌糊塗根本沒辦法 review。這道指令的設計就是要把控制權還給你——每個 checkpoint 都是一次決策點,你說可以才往下。搭配「前置風險分析」和「規格書生成」,三步走下來整個遷移會清晰得多。

依場景分類 · 一鍵複製 · 持續擴充