2026年10月23日 星期五

AGY CLI客製化完整視窗 長截圖神器 (FullSnapShot)

情境:前篇圖片合併工具(最下方,其他提示詞發想運用二),偶有整個視窗截圖需求,但若以切換螢幕解析度又相當不方便(字型比例隨視窗內容每次截圖水準不均),所以同樣有請AGY神器協助生成完整螢幕截圖,生成後又發現截圖需求,有可能是AGY CLI視窗全量截圖需求;但也有可能是CHROME瀏覽器全視窗完整載圖需求。(只要向AI神器再下達PROMPT追加提示詞,如下:  FullSnapShot.py 請協助將CHROME 執行中之視窗,執行 完整快照 )

 FullSnapShot.py 預設行為永久定錨為**「截取目前 Antigravity CLI 視窗」**:

  • 平日使用:直接執行 python FullSnapShot.py 或滑鼠雙擊 執行_FullSnapShot.bat,即自動鎖定當前最新的對話視窗進行長截圖!

  • 網頁模式保留:僅在傳入 --chrome 或 --url <網址> 時才會切換至 Chrome 網頁長截圖模式。

   FullSnapShot.py - Chrome 即時現況與手動執行長截圖生成器

            options:

              -h, --help            show this help message and exit

              --url URL             手動指定目標網址 (預設自動自 Chrome 檢索現況即時瀏覽分頁)

              -m, --manual        手動輸入模式:在終端機提示輸入自訂網址

              -l, --list                 列出 Chrome 最近瀏覽之網頁清單供互動選取

              --width WIDTH     截圖寬度 (預設: 1440)

              --slice-height SLICE_HEIGHT      切片高度 (預設: 2400)


🖥️ 一、第一軌核心(預設行為):永久定錨「截取目前 Antigravity CLI 視窗」

當您直接執行 python FullSnapShot.py 或滑鼠雙擊 執行_FullSnapShot.bat 時,程式無須任何參數,預設鎖定目前互動中的 CLI 視窗。其運作經歷四個精密的工程階段:

【CLI 目前視窗截圖運作鏈條】
 [動態嗅探 Brain 目錄] ──> 自動命中最新修改之 transcript_full.jsonl │ ▼ [數位分身渲染 (HTML)] ──> 注入極黑主題 + 幾何 ASCII Banner + marked.js │ ▼ [Playwright 瓦片引擎] ──> 1440x2400 滾動分頁光柵化 (Snapshot Part 01~06) │ ▼ [Pillow 實體垂直縫合] ──> 產出 12,954px Master Combined PNG + SHA-256 數位指紋

1. 拒絕寫死 ID!自動嗅探當前活體對話(detect_current_conversation)

過去的痛點: 舊程式會將對話 ID 寫死在代碼中(如 CONV_ID = "d38abf7c...")。一旦開啟新對話,就必須手動修改代碼,否則永遠截取到舊紀錄。

🌿 費曼搜救犬機制:
程式一啟動就前往 ~/.gemini/antigravity-cli/brain/ 目錄,過濾掉歷史封存庫 _archive,並實時檢測所有對話資料夾中 transcript_full.jsonl 的磁碟修改時間(mtime)。修改時間最新者,即為使用者當前視窗! 

2. 重建真實終端機的「數位分身 (Digital Twin)」

程式將抽象的 JSONL 文本重構為極具質感的黑暗終端機實體:

  • 視窗外框:精準模擬 macOS / Linux 終端之紅、黃、綠三顆控制圓鈕。
  • 品牌定錨:視窗頂部輸出標誌性的 Antigravity CLI 1.4.3 幾何 ASCII Banner 與模型資訊。
  • 角色徽章:使用者發言掛載紫色 USER (Step N) 徽章;AI 回覆掛載藍色 ANTIGRAVITY (Step N) 徽章。
  • Markdown 語法解析:引入 marked.min.js,將 Markdown 原始碼、表格、代碼區塊語法高亮、Alert 引用框即時轉化為現代網頁元素。

3. 無損瓦片切片(Viewport Slicing Engine)

Playwright 無頭瀏覽器載入渲染好的 HTML 檔案,偵測當前終端總高度為 12,954 像素:

  • 以固定 1440 x 2400 視口向下步進滾動。
  • 切片 01:Y=0 ~ 2400 (幾何 Banner 與 Q46 出題,瀏覽歷程一)
  • 切片 02:Y=2400 ~ 4800 (Q46 作答判定與 原卷排雷)
  • 切片 03:Y=4800 ~ 7200 (Q47 KNN 交叉驗證出題)
  • 切片 04:Y=7200 ~ 9600 (視頻科學對位報告)
  • 切片 05:Y=9600 ~ 12000 (Chrome 快照引擎架構歷程)
  • 切片 06:Y=12000 ~ 12954 (視口自適應縮短至 954px 完美收尾)

4. 垂直無縫拼接與物理密碼學見證

Pillow 建立一張 1440 x 12954 的純黑底畫布,將 6 張切片無縫縫合,並進行物理 SHA-256 數位指紋認證:

Combined PNG: 1440 x 12954 px | 5.10 MB

🌐 二、第二軌模式(相容保留):Chrome 網頁長截圖模式

當您需要截取外部網頁時,只需加上參數(例如 python FullSnapShot.py --chrome 或 python FullSnapShot.py ZdNet),程式即刻切換為網頁長截圖專用引擎。本模式徹底擊破了兩大常見的網頁截圖陷阱:

1. 破解「永遠等不到的 Networkidle(網路閒置)」陷阱

陷阱本質: 部落格(如 WordPress home.blog)背後含有長輪詢廣告與追蹤腳本,若使用 wait_until="networkidle",瀏覽器會空等 30 秒直到超時崩潰。

🌿 費曼解法:將加載門禁改為 wait_until="domcontentloaded"(只要 HTML 主結構就緒即可),搭配 2 秒實體緩衝,不論背景流量如何轉動,3 秒內極速安全通過!

2. 破解「滑鼠滑到才肯長出來」的懶加載(Lazy Loading)

陷阱本質: 現代網頁為節省流量,頁面下方的圖片在初載入時只有空白佔位符,直接截圖下半部全黑或全白。

🌿 費曼解法(整頁預滾動引擎):拍照前,無頭瀏覽器自動以 1500px 為一步,高速從頂部刷到底部(每步微停 100ms),強制觸發所有圖片的 JavaScript 滾動監聽事件,把所有隱藏內容「誘騙出來」渲染,再瞬間滾回頁首(window.scrollTo(0, 0))開始分片拍照。

3. 關鍵字智慧模糊配對(Smart Fuzzy Match)

支援以關鍵字直達分頁(如輸入 ZdNet),系統自動至 Chrome 資料庫搜尋並精確命中 https://japan.zdnet.com/,產出 9,619px 完整長截圖!

⚖️ 三、雙軌架構對比速查表

比較維度 預設模式:目前 CLI 視窗 輔助模式:Chrome 網頁長截圖
觸發方式 python FullSnapShot.py(直接執行)
或雙擊 執行_FullSnapShot.bat
python FullSnapShot.py --chrome
或 python FullSnapShot.py ZdNet
目標資料來源 當前對話 transcript_full.jsonl 指定 URL 或 Chrome 活動網址
視覺渲染引擎 專屬極黑終端機主題 + marked.js 外部網站原生 CSS / JavaScript
加載防護機制 本地端微秒級靜態 HTML 加載 domcontentloaded + 整頁預滾動解鎖懶加載
主產出檔案 FullSnapShot_Combined.png (12,954px) FullSnapShot_April_Combined.png (9,619px)
核心應用場景 永久備份教練考紀錄、報告與系統對話 完整採集線上技術部落格、論文教學與長網頁

🎯 四、總結與最佳實踐

💡 記住一句話:
💜平日留存對話與教練考成果:滑鼠雙擊 執行_FullSnapShot.bat,它自動鎖定當前對話視窗;
💜需要備份技術文章時:命令列帶上關鍵字(如 FullSnapShot.py ZdNet),它秒變專業網頁爬蟲長截圖神器!

⚠️ 底層技術限制真相:

在 Chromium/WebKit 與 Blink 繪圖底層(Skia 渲染庫),單一 Canvas 與 GPU 顯存紋理長度通常有 16,384px ~ 32,768px 的硬性上限。任何超過此高度的單次 page.screenshot(full_page=True) 都會遭遇截斷或空白崩潰。視圖瓦片切片引擎(Viewport Slicing Engine)是解決此問題唯一的工業級標準!

相關資訊: