GCW — Gao Copy Website
研究一個公開網站實際運作的方式,重現其中重要的部分,並在真實瀏覽器中驗證結果。優先採用真實原始碼與可觀察的執行時證據,而非看似合理的 AI 猜測。
謹記三個原則:
- 在實作之前先找到證據。
- 在重構之前先讓它執行。
- 在打磨之前先進行比對。
邊界
- 僅在目標為使用者所有、已取得預期用途授權或獲得明確授權時才進行。僅在授權不明確時提問。
- 將需驗證、僅限密碼及私人內容視為超出範圍,除非獲得明確授權。
- 不得繞過存取控制,也不得復原、傳輸或提交憑證。
- 在公開重複使用前,分別檢查程式碼、字型、圖片、模型與品牌的權利。
- 將不確定的技術主張標記為
SOURCE、PARTIAL或GUESS。 - 不得將已部署的套件呈現為原始創作原始碼。
1. 先選擇目標,再選擇工具
閱讀 references/clone-modes.md 並選擇一種主要模式:
TEARDOWN:了解真實的設計與實作,不承諾重建。FAITHFUL_CLONE:盡可能忠實地重現可觀察的網站。CREATIVE_REBUILD:保留選定的結構、節奏或互動想法,同時更換品牌與內容。PRODUCTION_RECOVERY:在無法取得可維護原始碼時,復原已擁有的已部署網站。
記錄簡短的飛行前檢查:
- 目標:
- 網站類型:
- 原始碼可用性:
- 重複使用邊界:
- 高信心範圍:
- 近似或排除範圍:
- 建議路徑:
不要讓每個專案都承擔生產環境復原的成本。使用能支援所選目標的最輕量證據與驗證方式。
2. 首先尋找真實的實作
在爬取或重建之前:
- 搜尋網站名稱、產品名稱、網域擁有者與部署 slug,尋找官方公開儲存庫。
- 檢查原始碼映射、框架元資料與公開部署工件。
- 驗證儲存庫與資產授權;公開可用不代表可以重新部署。
- 保持原始碼、已部署工件與你可編輯的實作清晰分離。
- 使用最終的規範 HTTP(S) URL。GCW 拒絕帶有憑證的 URL 以及會離開設定來源的重新導向。
當官方可重複使用原始碼存在時,從它開始。當不存在時,繼續進行執行時偵察,並說明哪些部分仍然未知。
3. 初始化專案記錄
閱讀工作區的 AGENTS.md。如果此機器尚未驗證,請在 GCW 儲存庫中執行 npm install、npm run install:browser 與 npm run check。
建立一個非破壞性的專案記錄:
python scripts/init_reconstruction.py <workspace> --url <canonical-url> --authorization <owned|licensed|authorized>
使用 .gcw/ 來存放清單、螢幕截圖、報告與已知缺口。請勿在未告知的情況下覆蓋現有證據。
4. 偵察網站並分類其表面
在 Node.js 與 Playwright 可用時執行盤點:
node scripts/site_inventory.mjs --url <canonical-url> --out <workspace>/.gcw/evidence/network/site-inventory.json
然後驗證自動化無法可靠推斷的項目:
- 路由、頁面系列、深層連結與響應式斷點
- DOM 根節點、固定覆蓋層與內部滾動容器
- 懸停、點擊、拖曳、滾動、時間、縮放、主題與儲存狀態
- Canvas、WebGL、WebGPU、工作執行緒、iframe、影片、音訊與延遲資源
- 載入狀態與穩定應用程式狀態
- 需要本地 fixure 的公開 API 與資料依賴
對於 Canvas/WebGL/WebGPU 的擁有權、著色器與渲染管線,使用 web-shader-extractor。當目標是保留排版、間距、色板、佈局、動態或視覺語言,而非位元組層級工件時,使用 design-dna。
5. 選擇實作路徑
根據證據與網站類型選擇路徑:
| 證據或網站類型 | 預設路徑 |
|---|---|
| 官方可重複使用原始碼 | 在其授權範圍內執行並調整原始碼 |
| 簡單靜態網站 | 保留公開檔案與 URL 路徑,然後移除追蹤並更換內容 |
| 內容豐富的 React/Vue/Next 網站 | 重建頁面模板,使用公開或本地的 fixure 資料 |
| 多頁行銷網站 | 在建立共享模板前,先對應路由與頁面系列 |
| 互動豐富的網站 | 先擷取狀態,再重現狀態轉換 |
| WebGL/Canvas 網站 | 在專案化之前,先復原其渲染/輸入/輸出模型 |
| 僅視覺靈感 | 提取 Design DNA 並建立原創實作 |
| 遺失原始碼的正式網站 | 閱讀 references/recovery-tiers.md 與 references/gates.md,然後建立一個經過驗證的回放預言機 |
不要封存或複製所選模式不需要的第三方工件。
6. 建立可運行的本地專案
- 在編輯新專案時,保持穩定的參考或證據記錄。
- 還原每個在範圍內的路由,而不只是首頁。
- 在所選主機上保留導航與深層連結行為。
- 使用明確的 fixure 或安全後備方案來取代不可用的伺服器行為。
- 驗證正式環境建置和靜態預覽,而不只是開發伺服器。
在適用的情況下執行路由檢查:
python scripts/route_smoke.py --base-url <preview-url> --route / --route /example
7. 在真實瀏覽器中驗證
閱讀 references/qa-scenarios.md 與 references/tooling.md。
定義來源與候選情境,然後擷取匹配狀態:
node scripts/capture_compare.mjs --config <capture-scenarios.json> --output <results-dir>
python scripts/batch_image_diff.py <results-dir> --diff-dir <results-dir>/diff
匹配視窗尺寸、DPR、路由、游標、滾動、隨機種子、就緒狀態與時間階段。檢查螢幕截圖與差異影像;單一全域分數無法解釋互動或合成器失敗的原因。
不要透過調整顏色、偏移或動畫速度來隱藏缺失的配線。將階段敏感的區域與確定性故障分開處理。
8. 傳遞學習成果,而不只是克隆
僅輸出所選模式要求的文件:
TEARDOWN.md:真實實作、證據等級與可轉移技術DESIGN_DNA.json:為創意重建而準備的設計系統、視覺語言與效果REPLACE_GUIDE.md:文字、媒體、顏色、字型、模型與資料的置換位置CLONE_REPORT.md:原始碼與本地版本的比較、取捨與已知缺口- 可運行的專案、建置指令與部署備註
對於進階資產案例(例如烘焙入 GLTF/GLB 幾何的內嵌文字),請閱讀 references/special-cases.md,而不是擴充主要工作流程。
9. 僅在需要時強化
對於維護中的專案或正式環境復原,安裝螢幕截圖回歸執行器:
python scripts/install_ci.py <project-root> --source-url <canonical-url>
對於一次性的拆解或學習練習,CI 是選用的。當安裝時,即使閾值失敗,它也必須上傳螢幕截圖、差異與報告。
10. 誠實地結案
- 重新執行飛行前檢查中承諾的建置與 QA 情境。
- 記錄已知缺口與下一個所需的證據;絕不發明成功的互動。
- 在發布改編版本前,移除追蹤與原始品牌殘留。
- 留下乾淨的 Git 檢查點;未經使用者授權絕不推送。
- 區分原始想法、重複使用的授權資產、觀察到的行為與你自己的實作。