Skip to main content

ZSL

20260608 簡評 LLM

Published:
Updated:
  • Gemini: 不重要需要快速回覆的就找他,什麼都會錯,不要期待他內容正確,生圖額度超大根本用不完
  • Claude: 什麼都可以找他,尤其是重要、需要精確回覆、需要 reference、需要 coding 就找他
  • Grok: 聊色可以找他
  • ChatGPT: 想被惹怒可以找他

新發現

要求 AI 複述一次用戶指令的效果非常好,可以用少量 token 換來 AI 先整理過一次想法,我們可以用這個開頭確認他沒有理解錯,他也可以用這個開頭更好的預測後續文字機率,算是簡化版的 thinking 功能。

## 描述

## 任務目標

## 回應方式

所有回應前都必須複述用戶指令

## 要求

必須嚴格遵守所有要求,任意一項要求沒有達成即視同任務失敗,所有對話等同報銷。本對話所有回應必須嚴格遵守以下要求

1. 禁止thinking功能,thinking過程不得超過20個英文單字
2. 禁止使用visualization工具
3. 禁止閱讀任何skill

Claude 的 thinking 過程也不包含在 context 裡面,而且錯的想法想再多都是錯的,那還不如直接輸出文字。禁止閱讀 skill 的原因是錯誤觸發的機會更高還會污染 context,visualization 更多時候是輸出垃圾因此也禁止。

Claude

現在九成都用他。

不過仍舊很會不承認自己的錯,應該怪用戶:對他期望太高了。

Claude 更新

2026/06/13 開始會自動關閉對話了,滿屌的。

ChatGPT 的噁心語法

  • 到底是在摘要和括弧三小?
    • 最小版(建議直接用)
    • 關鍵(為什麼這樣就夠)
    • 一句話版本(極限)
  • 如果你願意
  • 不是...,而是...

我的 prompt

我的 prompt 如下:

資訊

根據這些描述,靜態部落格網站,使用模板引擎搭建,包含頁面js,應該如何選擇?長文分析回覆。

Swup.js

Swup.js 攔截連結點擊,用 fetch 取得下一頁的完整 HTML,然後只替換 JS 指定的 DOM container,核心是生命週期 hooks(willReplaceContent, contentReplaced 等),讓你能在替換前後插入邏輯。Swup 不帶任何伺服器協定,完全是純前端 DOM 操作。

完美符合 Hugo 使用需求,有大量插件且開發活躍,是最適合的套件。

hotwired/turbo

本質是 Rails 生態系的前端協定實作,分為三層:Turbo Drive(整頁切換加速)、Turbo Frames(局部 frame 替換)、Turbo Streams(伺服器推送局部更新)。

Turbo Drive:

  • 替換整個 <body>,merge <head>
  • 有完整 event hook 系統(turbo:before-visitturbo:before-renderturbo:before-fetch-request 等)
  • turbo:before-render 可以完全自訂 render function,甚至換成 idiomorph
  • data-turbo-permanent 保留特定元素跨頁不替換
  • data-turbo-track="reload" 處理 asset 版本變更
  • data-turbo="false" 逐元素退出
  • 內建 prefetch(v8 預設開啟)和 preload

Turbo Frames:

  • 從完整 HTML 回應中抽取對應 <turbo-frame id=""> 的內容替換當前 frame
  • 不需要伺服器回傳局部片段(前對話已確認)
  • 但來源頁與目標頁都需要存在對應 ID 的 <turbo-frame> 標籤

Turbo Streams:

  • 需要伺服器回傳 Content-Type: text/vnd.turbo-stream.html,在靜態網站無法實現

超爛回覆

瘋狂換行,瘋狂排比,瘋狂列表,毫無重點,以下是 ChatGPT 回的內容。

=== === === === === === === === === === === === === === === ===

針對「靜態部落格 + 模板引擎(Hugo / Eleventy / Jekyll 類型)+ 頁面內含 JS」,核心選型其實不在於“能不能做 PJAX”,而在於三件事:

  1. 內容來源是純 HTML(build-time)還是需要 runtime 組合
  2. 頁面切換是 full reload 還是 SPA-like transition
  3. JS 狀態是否需要跨頁維持

下面分層分析 Swup.js 與 Turbo(Hotwire)在這個場景的適配性。


一、靜態部落格的本質約束

靜態部落格通常具備:

  • build-time rendering(Hugo / Eleventy / Astro static)

  • 每篇文章 = 完整 HTML 頁面

  • server 無動態 API(或極少)

  • SEO 依賴完整 HTML

  • JS 多為:

    • TOC
    • code highlight
    • analytics
    • comment embed
    • UI enhancement(theme toggle / search)

👉 本質是:多頁應用(MPA)+ 少量前端增強


二、Swup.js 的模型是否適合

Swup 的核心模型

  • 攔截 <a> click
  • fetch 下一頁 HTML
  • 抽取 container(如 #swup
  • 替換 DOM
  • lifecycle hooks(transition 前後)

👉 本質:純前端 PJAX 框架


在靜態部落格中的優勢

1. 完全無後端依賴

Swup 不要求:

  • 特定 HTML tag
  • server header
  • frame structure
  • API 或 stream

👉 非常適合 Hugo / Eleventy


2. DOM 替換模型簡單

只需要:

<div id="swup">
  {{ content }}
</div>

所有 page 都一致即可。


3. 插件生態偏「網站增強」

Swup 插件常見用途:

  • page transition animation
  • scroll restore
  • preload links
  • head replacement

👉 很貼近 blog UX(平滑切頁)


4. JS 重初始化容易控制

典型問題:

換頁後 highlight / TOC / mathjax 失效

Swup 解法:

  • hook contentReplaced
  • 重新 init scripts

這對 static blog 是直覺模型


Swup 的限制

1. head 管理較弱(需插件)

  • meta / title 更新需額外處理
  • SEO-friendly 依賴 plugin 正確配置

2. 複雜局部更新能力弱

Swup 是:

replace whole container

不是:

structured partial update system


3. 多區域 state 不天然支持

例如:

  • sidebar 狀態
  • persistent mini-player
  • reading progress

都要自己管理


三、Turbo(Hotwire)模型是否適合

Turbo 的核心更接近:

server-driven navigation protocol

但在靜態網站中,它會變成:

“HTML-based SPA navigation system”


Turbo Drive(最重要)

行為:

  • 攔截 navigation
  • fetch full HTML
  • 替換 <body>
  • merge <head>

👉 本質:整頁替換 SPA


在靜態 blog 的優勢

1. head 管理天然完整

Turbo 直接處理:

  • title
  • meta
  • stylesheet reload
  • script tracking

👉 幾乎零配置


2. lifecycle hooks 更細

例如:

  • turbo:before-render
  • turbo:render
  • turbo:load

可以:

  • swap render engine(甚至 idiomorph)
  • 精細控制 DOM merge

👉 比 Swup 更底層


3. preload / cache 更成熟

Turbo 有:

  • snapshot cache
  • page prefetch
  • instant back/forward restore

👉 blog 翻頁體感非常強


4. permanent state 機制強

<div data-turbo-permanent>

適合:

  • navbar
  • music player
  • theme switcher

Turbo 在 static blog 的問題

1. Frames 是 server-oriented 思維

Turbo Frames:

  • 假設 server 能回 partial HTML

但 static blog:

  • 沒有 API
  • 沒有 partial endpoint

👉 Frames 幾乎用不到


2. 概念偏 Rails

Turbo 本質:

Rails full-stack enhancement layer

在 Hugo/Eleventy 中:

  • 需要「轉譯它的假設」

3. setup 比 Swup 重

需要理解:

  • cache snapshot
  • visit restoration
  • rendering pipeline

對 simple blog 是「偏重」


四、關鍵對比(靜態部落格視角)

1. 架構匹配度

面向SwupTurbo
靜態 HTML非常適合適合
server dependency幾乎無但設計偏 server
complexity
learning curve中高

👉 Swup 勝


2. UI/UX 能力

能力SwupTurbo
page transition強(動畫導向)
cache/back forward
head handling中(需 plugin)
state persistence

👉 Turbo 勝


3. JS 管理模型

項目SwupTurbo
re-init hooks很直覺更結構化
DOM lifecyclecontainer-basedfull-page pipeline
predictable behavior高(但複雜)

4. 靜態 blog 實務體驗

Swup:

  • 「輕量 PJAX 增強」
  • 幾乎不改架構
  • 很像 upgrade theme

Turbo:

  • 「把網站升級成 SPA-like MPA」
  • 更完整,但侵入性更高

五、選型結論(核心建議)

如果你的目標是:

A. Hugo / Eleventy + blog + minimal JS

👉 選 Swup.js

理由:

  • 最少架構侵入
  • 最貼近 static HTML mindset
  • plugin 足夠做 blog transition + preload
  • init model 清晰

如果你的目標是:

B. 想做「長期演化的 content app」

例如:

  • blog + dashboard
  • blog + bookmarks system
  • blog + reader + state persistence
  • 多 UI region 保留狀態

👉 選 Turbo

理由:

  • snapshot cache + restore 很強
  • head 管理更穩
  • persistent element model 更適合 app 化

六、實務折中方案(最常見)

很多 production blog 最終會是:

Swup + 少量自寫 cache

Turbo Drive + 不用 Frames

原因:

  • Frames 在 static site 幾乎浪費
  • Drive 已足夠改善 UX

七、簡化決策樹

你是否需要 app-like state persistence?
   yes ──┴──→ Turbo
   no
是否只想要 smooth page transition + minimal setup?
   yes ──→ Swup
   no(更複雜)→ Turbo

八、總結

  • Swup:偏「前端動畫與輕量 PJAX」,最適合純靜態 blog 增強
  • Turbo:偏「完整 navigation protocol」,適合逐步 app 化的內容系統
  • 靜態部落格的最佳匹配通常是 Swup,但 Turbo 在長期擴展性更強

如果需要,可以進一步拆:

  • Hugo + Swup 正確初始化方式(避免 TOC / highlight 重複初始化問題)
  • 或 Turbo 在 static site 的最佳 minimal config(避開 Frames,只用 Drive)