<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI工具 on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/categories/ai%E5%B7%A5%E5%85%B7/</link>
        <description>Recent content in AI工具 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Mon, 25 May 2026 00:24:36 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/categories/ai%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CLI-Anything：把軟體變成 Agent 可用的命令列</title>
        <link>https://knightli.com/zh-tw/2026/05/25/cli-anything-agent-native-cli/</link>
        <pubDate>Mon, 25 May 2026 00:24:36 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/25/cli-anything-agent-native-cli/</guid>
        <description>&lt;p&gt;CLI-Anything 是 HKUDS 開源的 Agent 工具化專案，目標是把原本面向人類 GUI 操作的軟體，轉成 AI Agent 更容易呼叫的命令列介面。它不是重新實作一個簡化版軟體，而是圍繞既有程式碼庫和真實後端生成 CLI harness，讓 Agent 可以透過穩定命令、狀態會話和結構化輸出來完成任務。&lt;/p&gt;
&lt;p&gt;這個方向解決的是 Agent 使用軟體時最常見的斷層：GUI 自動化依賴截圖、點擊和座標，容易受介面變化影響；單一 API 又經常覆蓋不完整，Agent 需要自己拼接大量上下文。CLI-Anything 選擇把軟體能力收斂成命令列，因為命令天然適合被模型讀取、組合、驗證，也便於接入腳本和自動化流程。&lt;/p&gt;
&lt;h2 id=&#34;它怎麼工作&#34;&gt;它怎麼工作
&lt;/h2&gt;&lt;p&gt;官方倉庫把 CLI-Anything 描述為一套自動生成 CLI 的流水線。給它一個本機軟體原始碼路徑或 GitHub 倉庫地址後，流程會分析程式碼結構、識別後端和資料模型，設計命令分組，再實作 CLI、測試和文件。&lt;/p&gt;
&lt;p&gt;生成出來的 CLI 通常包含兩種使用方式：一種是面向連續工作的 REPL，會保留專案狀態；另一種是子命令模式，適合腳本和流水線。命令還會提供 JSON 輸出，方便 Agent 直接解析結果，同時保留人類可讀的格式用於除錯。&lt;/p&gt;
&lt;p&gt;官方範例裡，Claude Code 外掛可以這樣使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin marketplace add HKUDS/CLI-Anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install cli-anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/cli-anything &amp;lt;software-path-or-repo&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已經生成某個軟體的 harness，後續使用方式會更接近普通 Python CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd &amp;lt;software&amp;gt;/agent-harness
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt; --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cli-anything-&amp;lt;software&amp;gt; --json &amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;CLI-Anything 更適合那些「能力在真實軟體裡，但 Agent 不好穩定操作」的場景。例如影像、影片、音訊、辦公文件、3D 建模、資料分析或 AI/ML 工具鏈，只要專案有可分析的程式碼庫、可呼叫的後端或清晰的資料模型，就有機會被包裝成 Agent 可用的命令集。&lt;/p&gt;
&lt;p&gt;它的價值不只是在命令列裡多一層封裝，而是把軟體的關鍵操作變成可發現、可組合、可測試的介面。Agent 可以先透過 &lt;code&gt;--help&lt;/code&gt; 理解能力，再用 JSON 輸出接收結果，並把多個命令串成工作流。對於需要批次處理、自動驗證和持續迭代的任務，這比臨時讓 Agent 點擊介面更可控。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的邊界&#34;&gt;需要注意的邊界
&lt;/h2&gt;&lt;p&gt;CLI-Anything 並不等於任何軟體都能立刻無成本接入。它依賴目標軟體的原始碼、後端能力、檔案格式和可測試性；如果一個軟體高度封閉、關鍵邏輯只存在於 GUI 層，生成高品質 CLI 的難度會明顯上升。&lt;/p&gt;
&lt;p&gt;官方方法論也強調真實後端和測試驗證，這意味著生成 harness 不是只寫幾個命令包裝腳本就結束。要讓它用於嚴肅工作，還需要確認命令覆蓋範圍、輸出格式、依賴安裝、真實軟體呼叫和端到端測試是否可靠。更現實的用法，是先為一個明確工作流生成 CLI，再透過 refine、test、validate 等命令逐步補齊能力。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;CLI-Anything 的思路很直接：不要讓 Agent 去適應脆弱的人類介面，而是為現有軟體補上一層穩定、結構化、可測試的命令列入口。它適合想把專業軟體納入 Agent 工作流的人，也適合研究「Agent 原生軟體」形態的開發者。真正落地時，重點不在於一句命令生成了多少程式碼，而在於生成的 CLI 是否能呼叫真實能力、保持狀態、輸出結構化結果，並經得起測試。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GitHub Spec Kit 是什麼？用規格驅動開發約束 AI 編程</title>
        <link>https://knightli.com/zh-tw/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;GitHub 的 &lt;strong&gt;Spec Kit&lt;/strong&gt; 是一個面向 AI 編程的新工具包，目標是幫助開發者實踐 &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;，也就是規格驅動開發。&lt;/p&gt;
&lt;p&gt;它解決的問題很直接：現在很多 AI 編程工作流太像「邊聊邊寫」。人類給一個大概想法，Agent 立刻開始改代碼，短期看很快，但需求邊界、驗收標準、技術取捨和任務拆分往往沒有沉澱下來。項目稍微複雜一點，就容易變成一次性的 vibe coding。&lt;/p&gt;
&lt;p&gt;Spec Kit 的思路是反過來：先把規格寫清楚，再進入計劃、任務和實作。代碼不再是第一步，規格才是第一步。&lt;/p&gt;
&lt;h2 id=&#34;spec-kit-是什麼&#34;&gt;Spec Kit 是什麼？
&lt;/h2&gt;&lt;p&gt;Spec Kit 是 GitHub 開源的規格驅動開發工具包。它提供 &lt;code&gt;specify&lt;/code&gt; CLI、模板、腳本和面向 AI coding agent 的命令，讓團隊可以圍繞同一套結構化產物推進開發。&lt;/p&gt;
&lt;p&gt;它強調的不是「讓 AI 少問問題」，而是讓 AI 在寫代碼前先生成並完善這些內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;項目原則：團隊對品質、測試、體驗、性能等方面的約束；&lt;/li&gt;
&lt;li&gt;功能規格：要做什麼、為什麼做、使用者故事和功能需求；&lt;/li&gt;
&lt;li&gt;技術計劃：使用什麼技術棧、如何落地、有哪些架構決策；&lt;/li&gt;
&lt;li&gt;任務清單：把計劃拆成可執行步驟；&lt;/li&gt;
&lt;li&gt;實作過程：按任務逐步修改代碼，而不是一次性亂改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套流程讓 AI 編程更像工程協作，而不是一次提示詞表演。&lt;/p&gt;
&lt;h2 id=&#34;基本使用流程&#34;&gt;基本使用流程
&lt;/h2&gt;&lt;p&gt;官方 README 給出的入門流程大致是這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;初始化後，項目裡會生成 &lt;code&gt;.specify&lt;/code&gt; 目錄、模板、腳本和與 Agent 整合的命令。隨後在支援的 AI coding agent 中使用 &lt;code&gt;/speckit.*&lt;/code&gt; 命令推進開發。&lt;/p&gt;
&lt;p&gt;典型順序是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;/speckit.constitution&lt;/code&gt; 用來建立項目原則，&lt;code&gt;/speckit.specify&lt;/code&gt; 描述產品需求，&lt;code&gt;/speckit.clarify&lt;/code&gt; 補齊模糊點，&lt;code&gt;/speckit.plan&lt;/code&gt; 生成技術計劃，&lt;code&gt;/speckit.tasks&lt;/code&gt; 拆任務，最後由 &lt;code&gt;/speckit.implement&lt;/code&gt; 執行實作。&lt;/p&gt;
&lt;p&gt;這和直接對 Agent 說「幫我做一個應用」差別很大。Spec Kit 要求你把「做什麼」和「怎麼驗收」先說清楚，再讓 Agent 動手。&lt;/p&gt;
&lt;h2 id=&#34;它改變了-ai-編程的入口&#34;&gt;它改變了 AI 編程的入口
&lt;/h2&gt;&lt;p&gt;傳統 AI 編程經常從代碼開始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我想做一個任務管理應用，幫我寫出來。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spec Kit 更像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先定義這個任務管理應用的使用者、場景、功能邊界、驗收標準和非目標；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再根據這些規格選擇技術方案；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;然後拆成任務；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最後逐步實作。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個變化很重要。因為 AI 最擅長根據上下文執行，但如果上下文本身是鬆散的，執行速度越快，偏離方向也可能越快。Spec Kit 把上下文變成文件和模板，讓需求、計劃和任務都能被 review、修改和版本管理。&lt;/p&gt;
&lt;p&gt;換句話說，它不是讓 AI 更「自由」，而是讓 AI 在更清晰的工程軌道上自由發揮。&lt;/p&gt;
&lt;h2 id=&#34;核心命令怎麼理解&#34;&gt;核心命令怎麼理解？
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是項目的「憲法」。它會生成或更新 &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;，用於記錄項目長期遵守的原則，例如代碼品質、測試標準、使用者體驗一致性、性能要求和技術決策規則。&lt;/p&gt;
&lt;p&gt;這一步適合寫團隊共識，而不是單個功能需求。&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是功能規格階段。你需要描述要構建什麼、使用者是誰、解決什麼問題、有哪些核心流程。&lt;/p&gt;
&lt;p&gt;官方特別強調：這一階段不要過早關注技術棧。先把 what 和 why 寫清楚，再討論 how。&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是補問題的階段。很多需求第一次寫出來都會有空洞：權限怎麼處理？異常狀態是什麼？數據是否持久化？邊界條件如何驗收？&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt; 的價值，是讓 Agent 主動發現規格中的不確定點，並把回答記錄回規格文件，減少後面返工。&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是技術計劃階段。到了這裡，才開始明確框架、數據庫、架構、API、測試策略和約束。&lt;/p&gt;
&lt;p&gt;如果說 &lt;code&gt;/speckit.specify&lt;/code&gt; 是產品語言，&lt;code&gt;/speckit.plan&lt;/code&gt; 就是工程語言。&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這一步把計劃拆成可執行任務。好的任務清單應該能讓 Agent 逐步推進，也能讓人類看懂每一步的目的。&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;最後才進入實作。Agent 根據前面沉澱的規格、計劃和任務修改代碼。這時它不再是憑一段大 prompt 猜需求，而是在一組結構化文件裡執行。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它適合-ai-編程&#34;&gt;為什麼它適合 AI 編程？
&lt;/h2&gt;&lt;p&gt;Spec Kit 的價值不在於某個神奇命令，而在於它把 AI 編程中最容易缺失的東西補了回來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求可審查；&lt;/li&gt;
&lt;li&gt;計劃可討論；&lt;/li&gt;
&lt;li&gt;任務可追蹤；&lt;/li&gt;
&lt;li&gt;決策有上下文；&lt;/li&gt;
&lt;li&gt;產物可以進入 Git 歷史；&lt;/li&gt;
&lt;li&gt;團隊可以複用模板和原則；&lt;/li&gt;
&lt;li&gt;Agent 的實作不再只依賴一次性聊天記錄。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這對複雜項目尤其有用。越是多人協作、長期維護、品質要求高的項目，越不能只靠臨時 prompt 驅動開發。&lt;/p&gt;
&lt;h2 id=&#34;擴展和-preset&#34;&gt;擴展和 Preset
&lt;/h2&gt;&lt;p&gt;Spec Kit 還提供了兩類自訂能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;：增加新命令、新模板或外部工具整合；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;：改變現有規格、計劃、任務模板的格式和術語。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單理解：如果要新增能力，用 Extension；如果要改造工作流風格，用 Preset。&lt;/p&gt;
&lt;p&gt;例如，團隊可以透過 Preset 強制加入安全審查、合規追蹤、領域術語或測試優先規則；也可以透過 Extension 增加 Jira 整合、代碼審查、項目健康檢查等新階段。&lt;/p&gt;
&lt;p&gt;這說明 Spec Kit 並不想把所有團隊鎖進同一種流程，而是提供一個可擴展的規格驅動骨架。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用？
&lt;/h2&gt;&lt;p&gt;Spec Kit 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI coding agent 做新項目原型；&lt;/li&gt;
&lt;li&gt;想把 vibe coding 變成可複盤流程；&lt;/li&gt;
&lt;li&gt;團隊希望統一 AI 生成代碼前的需求和計劃格式；&lt;/li&gt;
&lt;li&gt;項目需要明確驗收標準和測試要求；&lt;/li&gt;
&lt;li&gt;希望把需求、計劃、任務和實作過程都納入版本管理；&lt;/li&gt;
&lt;li&gt;正在探索 GitHub Copilot、Claude Code、Codex CLI 等工具的團隊化用法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定適合非常小的一次性腳本。對於幾行代碼能解決的問題，完整規格流程可能顯得重。但只要任務開始涉及多個頁面、多個模組、狀態管理、權限、數據模型或長期維護，Spec Kit 的結構化收益就會變明顯。&lt;/p&gt;
&lt;h2 id=&#34;我的理解&#34;&gt;我的理解
&lt;/h2&gt;&lt;p&gt;Spec Kit 代表的是 AI 編程工具的一種重要轉向：從「讓 Agent 更快寫代碼」，轉向「讓 Agent 更可靠地參與軟件工程」。&lt;/p&gt;
&lt;p&gt;過去的 AI 編程關注提示詞和模型能力，Spec Kit 更關注流程、產物和約束。它提醒我們：AI 寫代碼越快，規格、計劃和驗收就越不能省。&lt;/p&gt;
&lt;p&gt;如果你已經習慣讓 AI 直接實作功能，可以嘗試用 Spec Kit 改變起手式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;先讓 AI 幫你把需求寫成規格，再讓它寫代碼。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;這一步看似變慢，實際是在減少後面「代碼寫完了，但不是我想要的」的返工。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI Symphony 是什麼？Codex 編排、Issue 驅動與 AI Agent 開發工作流</title>
        <link>https://knightli.com/zh-tw/2026/05/25/openai-codex-orchestration-symphony/</link>
        <pubDate>Mon, 25 May 2026 00:17:32 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/25/openai-codex-orchestration-symphony/</guid>
        <description>&lt;p&gt;OpenAI 最近開源了一個很有意思的 Codex 編排規範：&lt;strong&gt;Symphony&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它不是另一個聊天式編程助手，也不是一個完整的新 IDE。更準確地說，Symphony 是一套面向 Codex 的「工作編排方式」：把類似 Linear 的 issue tracker 變成編程智能體的控制平面，讓每一個未關閉的任務都能對應一個持續運行的 Agent。&lt;/p&gt;
&lt;p&gt;官方文章裡有一句話很能概括它的方向：過去工程師要同時盯著多個 Codex 會話，不斷分配任務、審查輸出、糾偏和重啟；Symphony 想解決的，正是這個上下文切換瓶頸。&lt;/p&gt;
&lt;h2 id=&#34;symphony-解決的不是寫代碼而是管理-agent&#34;&gt;Symphony 解決的不是寫代碼，而是管理 Agent
&lt;/h2&gt;&lt;p&gt;單個 Codex 會話適合互動式開發：你給它一個任務，它修改代碼，你 review，再繼續追問。但當團隊開始同時使用多個 Agent 時，問題會從「代碼能不能寫出來」變成「誰在做哪件事、做到哪一步、失敗後誰來接手」。&lt;/p&gt;
&lt;p&gt;OpenAI 的做法是把工作重心從「會話」切到「任務」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;issue 是真正的工作單元；&lt;/li&gt;
&lt;li&gt;每個未關閉 issue 都可以映射到一個獨立 Agent 工作空間；&lt;/li&gt;
&lt;li&gt;Symphony 負責持續輪詢任務看板，決定哪些任務需要啟動、重試、停止或回收；&lt;/li&gt;
&lt;li&gt;Codex 在工作空間裡執行實作、測試、提交、建立 PR、更新狀態等動作；&lt;/li&gt;
&lt;li&gt;人類不再微操每個會話，而是審查結果、調整目標和維護邊界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這背後的變化很關鍵：Agent 不再只是一個被人類臨時喚起的工具，而是開發流程裡持續運行的一類執行者。&lt;/p&gt;
&lt;h2 id=&#34;為什麼是-issue-tracker&#34;&gt;為什麼是 issue tracker？
&lt;/h2&gt;&lt;p&gt;因為團隊已經用 issue tracker 管理真實工作。&lt;/p&gt;
&lt;p&gt;需求、bug、重構、遷移、調研、優先級、阻塞關係、負責人、里程碑，這些資訊本來就沉澱在 Linear、GitHub Issues 或類似系統裡。Symphony 沒有重新發明一個龐大的控制台，而是把這些現有系統當作 Agent 的任務入口。&lt;/p&gt;
&lt;p&gt;這樣做有幾個好處：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;工作不必從 issue 複製到聊天視窗裡。&lt;/li&gt;
&lt;li&gt;人類可以繼續按熟悉的方式建立、拆分、排期和關閉任務。&lt;/li&gt;
&lt;li&gt;Agent 的狀態變化能回寫到同一個工作系統裡，方便團隊非同步協作。&lt;/li&gt;
&lt;li&gt;任務依賴可以自然形成 DAG，讓未阻塞的任務並行推進。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果把傳統 CI 看成「代碼提交後的自動化」，Symphony 更像是「issue 建立後的自動化」。&lt;/p&gt;
&lt;h2 id=&#34;它的核心工作流&#34;&gt;它的核心工作流
&lt;/h2&gt;&lt;p&gt;一個典型的 Symphony 流程可以理解為：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;创建 issue
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Symphony 轮询到可执行任务
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 为该 issue 创建独立 workspace
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 启动 Codex agent session
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; Agent 阅读任务、修改代码、运行测试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 创建或更新 PR
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 写回任务状态、评论、证据和交付物
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -&amp;gt; 人类 review、合并或要求修改
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方規範裡還強調了幾個工程化點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每個 issue 使用獨立工作空間，降低相互污染；&lt;/li&gt;
&lt;li&gt;編排器維護重試、並發和恢復狀態；&lt;/li&gt;
&lt;li&gt;工作流策略放在倉庫內的 &lt;code&gt;WORKFLOW.md&lt;/code&gt;，讓團隊把 Agent 應該如何處理任務寫成可版本化的規則；&lt;/li&gt;
&lt;li&gt;實作需要保留可觀測性，至少要有結構化日誌；&lt;/li&gt;
&lt;li&gt;成功狀態不一定是 &lt;code&gt;Done&lt;/code&gt;，也可以是交給人類 review 的中間狀態。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明 Symphony 不是簡單地「讓 AI 自動寫代碼」，而是在定義一套可運行、可恢復、可審計的 Agent 工作系統。&lt;/p&gt;
&lt;h2 id=&#34;目標驅動而不是死板狀態機&#34;&gt;目標驅動，而不是死板狀態機
&lt;/h2&gt;&lt;p&gt;OpenAI 在文章裡提到一個重要轉變：早期他們嘗試把很多動作寫死在外層 harness 裡，例如提交代碼、跑測試、處理 GitHub 流程。但隨著 Codex 能力增強，這種方式反而限制了 Agent。&lt;/p&gt;
&lt;p&gt;後來的方向是給 Agent 設定目標，而不是把每一步都寫成固定狀態轉換。&lt;/p&gt;
&lt;p&gt;比如，一個任務的目標可以是「完成 Vite 遷移並確保 CI 通過」。Agent 可以自己判斷是否需要改配置、修測試、讀 CI 日誌、處理 review feedback，甚至拆出新的後續 issue。Symphony 負責提供邊界、上下文和運行框架，而不是替 Agent 規定每一個動作。&lt;/p&gt;
&lt;p&gt;這也是它和傳統自動化腳本的區別：腳本擅長重複確定流程；Symphony 面向的是帶有不確定性的工程任務。&lt;/p&gt;
&lt;h2 id=&#34;和普通-codex-使用方式有什麼不同&#34;&gt;和普通 Codex 使用方式有什麼不同？
&lt;/h2&gt;&lt;p&gt;普通 Codex 會話更像「人帶著 AI 寫代碼」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人類打開會話；&lt;/li&gt;
&lt;li&gt;人類描述任務；&lt;/li&gt;
&lt;li&gt;人類觀察輸出；&lt;/li&gt;
&lt;li&gt;人類隨時糾偏；&lt;/li&gt;
&lt;li&gt;任務結束後再開下一個會話。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Symphony 更像「團隊把任務池交給一組 Agent 執行」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人類寫清楚 issue；&lt;/li&gt;
&lt;li&gt;系統持續發現可執行任務；&lt;/li&gt;
&lt;li&gt;Agent 在獨立環境裡推進；&lt;/li&gt;
&lt;li&gt;結果以 PR、評論、測試狀態、影片或分析報告的形式返回；&lt;/li&gt;
&lt;li&gt;人類在關鍵節點做 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是替代工程師，而是把工程師從「同時照看多個會話」的負擔裡解放出來。OpenAI 在官方文章中提到，在部分團隊中，合併到主分支的 PR 數量有明顯提升；但更值得注意的是工作方式的變化：試驗一個想法、發起一次重構、驗證一個假設的啟動成本變低了。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景？
&lt;/h2&gt;&lt;p&gt;Symphony 更適合這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常規功能實作；&lt;/li&gt;
&lt;li&gt;已有代碼庫裡的小型重構；&lt;/li&gt;
&lt;li&gt;基礎設施遷移；&lt;/li&gt;
&lt;li&gt;依賴升級；&lt;/li&gt;
&lt;li&gt;測試補齊；&lt;/li&gt;
&lt;li&gt;CI 修復；&lt;/li&gt;
&lt;li&gt;調研後生成實作計劃；&lt;/li&gt;
&lt;li&gt;根據 review feedback 繼續修改 PR。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定適合高度模糊、需要強業務判斷或架構拍板的任務。對這類問題，互動式 Codex 會話仍然更自然，因為人類需要在過程中持續參與。&lt;/p&gt;
&lt;h2 id=&#34;風險和邊界&#34;&gt;風險和邊界
&lt;/h2&gt;&lt;p&gt;Symphony 的吸引力很強，但真正落地時不能只看「自動化」這一面。&lt;/p&gt;
&lt;p&gt;幾個邊界要提前想清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;issue 必須寫清楚，否則 Agent 會把模糊需求放大成錯誤實作；&lt;/li&gt;
&lt;li&gt;Agent 的權限要收斂，尤其是倉庫、密鑰、生產環境和第三方服務訪問；&lt;/li&gt;
&lt;li&gt;每個工作空間要隔離，避免多個任務相互污染；&lt;/li&gt;
&lt;li&gt;CI、測試、lint 和 review 仍然是必須的質量門；&lt;/li&gt;
&lt;li&gt;任務狀態、PR 連結、日誌和失敗原因要可追蹤；&lt;/li&gt;
&lt;li&gt;人類 review 不能省，尤其是涉及安全、計費、資料遷移和權限邏輯的改動。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方倉庫也把 Symphony 定位為 trusted environment 裡的工程預覽和參考實作，而不是一個拿來就能無腦替代研發流程的成品平台。&lt;/p&gt;
&lt;h2 id=&#34;我對-symphony-的理解&#34;&gt;我對 Symphony 的理解
&lt;/h2&gt;&lt;p&gt;Symphony 最有價值的地方，不在於它用了 Linear，也不在於參考實作選擇了 Elixir，而在於它重新定義了編程 Agent 的入口。&lt;/p&gt;
&lt;p&gt;過去我們習慣從聊天視窗啟動 AI 編程：這很靈活，但規模一大，人類注意力就成了瓶頸。Symphony 把入口放回 issue tracker，讓 Agent 圍繞真實任務持續工作。這樣一來，AI 編程從「個人效率工具」開始向「團隊工作流基礎設施」靠近。&lt;/p&gt;
&lt;p&gt;如果你已經在使用 Codex、Claude Code、Cursor Agent 或類似工具，Symphony 值得關注的不是某個具體實作，而是它背後的模式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不要只管理 Agent 會話，要管理需要完成的工作。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;這可能會成為下一階段 AI 編程工具的關鍵分水嶺。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/zh-Hans-CN/index/open-source-codex-orchestration-symphony/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex 編排的開源規範：Symphony&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/symphony&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;openai/symphony&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Qwen3.6-35B-A3B 越獄版本地部署：無審查 GGUF、llama.cpp 與安全邊界</title>
        <link>https://knightli.com/zh-tw/2026/05/24/qwen36-35b-a3b-local-deployment-llamacpp-gguf/</link>
        <pubDate>Sun, 24 May 2026 23:52:16 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/24/qwen36-35b-a3b-local-deployment-llamacpp-gguf/</guid>
        <description>&lt;p&gt;零度博客最近介紹了一款熱度很高的本地模型：&lt;code&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive&lt;/code&gt;。原文把它稱為「越獄版」「無審查」開源模型，並給出了 GGUF 量化包、llama.cpp 啟動方式和 Agent 對接思路。&lt;/p&gt;
&lt;p&gt;這類模型值得關注，但更適合冷靜理解：它的重點不只是「限制少」，而是把幾個本地 AI 關鍵能力放到了一起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MoE 架構下的 35B 級模型。&lt;/li&gt;
&lt;li&gt;GGUF 量化後可在消費級顯卡上運行。&lt;/li&gt;
&lt;li&gt;透過 llama.cpp 提供 OpenAI API 相容介面。&lt;/li&gt;
&lt;li&gt;搭配 &lt;code&gt;mmproj&lt;/code&gt; 支援多模態視覺輸入。&lt;/li&gt;
&lt;li&gt;可以接入 Hermes、OpenClaw 等本地 Agent 工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你關心本地模型，這篇更值得看的不是「越獄」噱頭，而是它代表的趨勢：本地模型正在從「能聊天」走向「能接入工具、能看圖、能做 Agent 後端」。&lt;/p&gt;
&lt;h2 id=&#34;這個模型是什麼&#34;&gt;這個模型是什麼
&lt;/h2&gt;&lt;p&gt;原文提到的模型全名是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從名字可以拆出幾個關鍵資訊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6&lt;/code&gt;：基於 Qwen 系列模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;35B&lt;/code&gt;：總參數規模約 35B。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A3B&lt;/code&gt;：每次推理啟用參數約 3B，屬於 MoE 思路。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Uncensored&lt;/code&gt; / &lt;code&gt;Aggressive&lt;/code&gt;：經過更少安全限制或更激進風格調整的版本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GGUF&lt;/code&gt;：面向 llama.cpp 等本地推理工具的量化格式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡要特別注意：&lt;code&gt;Uncensored&lt;/code&gt; 並不等於「更可靠」。它通常意味著模型更少拒答，也更可能產生不受約束、未經事實核驗或有風險的內容。對技術研究來說可以實驗，但不適合直接接入公開服務、生產系統或無人值守任務。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-35b-模型還能在本地跑&#34;&gt;為什麼 35B 模型還能在本地跑
&lt;/h2&gt;&lt;p&gt;很多人看到 &lt;code&gt;35B&lt;/code&gt; 會以為必須用伺服器或高階多卡機器。原文強調的關鍵點是：這個模型採用 MoE 架構。&lt;/p&gt;
&lt;p&gt;MoE 可以簡單理解為：模型總參數很大，但每次推理不會啟用全部參數，而是只啟用其中一部分專家。原文稱它每次實際運行大約啟用 3B 參數，因此在一定量化下，速度和顯存壓力會比傳統 dense 35B 模型低很多。&lt;/p&gt;
&lt;p&gt;再疊加 GGUF 量化後，它就有機會在消費級顯卡上運行。原文提到最小量化版本約 11GB，6G/8G 顯存也能嘗試，但更建議至少 8G 顯存。&lt;/p&gt;
&lt;p&gt;更現實的理解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;6G 顯存：可以嘗試低比特量化，但上下文和速度都要降低預期。&lt;/li&gt;
&lt;li&gt;8G 顯存：更適合入門測試，建議選更小量化。&lt;/li&gt;
&lt;li&gt;16G 顯存：體驗會明顯寬鬆，適合更長上下文和更多 GPU offload。&lt;/li&gt;
&lt;li&gt;24G 顯存：更適合 Q4_K_M、Q4_K_P 這類品質更好的量化版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地模型能不能「好用」，不能只看能不能啟動，還要看上下文長度、生成速度、顯存餘量、KV cache、是否啟用多模態、並發需求和實際任務類型。&lt;/p&gt;
&lt;h2 id=&#34;推薦量化怎麼理解&#34;&gt;推薦量化怎麼理解
&lt;/h2&gt;&lt;p&gt;原文給出的選擇大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_P&lt;/code&gt;：更適合 RTX 4090 等 24G 顯存機器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;：偏穩定、品質較好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IQ4_NL&lt;/code&gt;：高壓縮同時盡量保留品質。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;IQ2_M&lt;/code&gt;：面向 6G/8G 顯存使用者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以把它理解為品質和資源占用的取捨：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q4 類量化通常品質更穩，但顯存占用更高。&lt;/li&gt;
&lt;li&gt;IQ2 / IQ3 類量化更省資源，但回答品質、長文本穩定性和細節能力可能下降。&lt;/li&gt;
&lt;li&gt;如果你只是測試 Agent 調用和本地 API，低量化可以先跑通流程。&lt;/li&gt;
&lt;li&gt;如果你要長時間寫程式、讀圖、做複雜推理，盡量選更高品質量化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要只因為「能跑」就認為「適合長期用」。低顯存能啟動是一回事，能否穩定完成任務是另一回事。&lt;/p&gt;
&lt;h2 id=&#34;llamacpp-部署思路&#34;&gt;llama.cpp 部署思路
&lt;/h2&gt;&lt;p&gt;原文推薦使用 &lt;code&gt;llama.cpp&lt;/code&gt;，原因是它支援 Windows、Linux、macOS，也支援 NVIDIA CUDA、AMD、Intel、Vulkan 和純 CPU 等多種後端。&lt;/p&gt;
&lt;p&gt;一個典型啟動方式類似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;模型路徑.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-mmproj&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mmproj.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;131072&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;8192&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-host&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;127.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-port&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;8080&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-jinja&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;幾個參數值得單獨理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-m&lt;/code&gt;：主模型 GGUF 檔案路徑。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--mmproj&lt;/code&gt;：多模態投影檔案，啟用視覺能力時需要。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ngl&lt;/code&gt;：盡量把層 offload 到 GPU，具體效果取決於顯存和後端。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-c&lt;/code&gt;：上下文長度，越大越吃記憶體和顯存。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt;：單次生成 token 上限。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--host 127.0.0.1&lt;/code&gt;：只監聽本機，安全性比暴露公網高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port 8080&lt;/code&gt;：本地 API 服務端口。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--jinja&lt;/code&gt;：新版 Qwen 模型常需要正確聊天模板，否則可能出現格式錯亂、重複或中文異常。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡最容易踩坑的是上下文長度。&lt;code&gt;-c 131072&lt;/code&gt; 看起來很誘人，但長上下文會顯著增加 KV cache 占用。低顯存機器不建議盲目拉滿，應該先用較小上下文跑通，再逐步增加。&lt;/p&gt;
&lt;h2 id=&#34;多模態能力怎麼用&#34;&gt;多模態能力怎麼用
&lt;/h2&gt;&lt;p&gt;原文提到這個版本支援多模態視覺識圖，可以分析圖片、截圖、OCR、複雜 UI 和程式碼截圖。&lt;/p&gt;
&lt;p&gt;在 llama.cpp 裡，多模態通常需要主模型和 &lt;code&gt;mmproj&lt;/code&gt; 檔案配套。沒有正確載入 &lt;code&gt;--mmproj&lt;/code&gt; 時，前端裡的圖片上傳能力可能不可用，或者模型無法正確理解圖像。&lt;/p&gt;
&lt;p&gt;多模態本地模型的實用場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析截圖裡的 UI。&lt;/li&gt;
&lt;li&gt;OCR 識別圖片文字。&lt;/li&gt;
&lt;li&gt;閱讀程式碼截圖或報錯截圖。&lt;/li&gt;
&lt;li&gt;給本地 Agent 提供視覺輸入。&lt;/li&gt;
&lt;li&gt;在不上傳雲端的情況下處理隱私圖片。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也有邊界：視覺理解不等於嚴格 OCR，不適合作為唯一事實來源。涉及帳單、合約、證件、醫療圖像等高風險內容時，仍然需要人工複核。&lt;/p&gt;
&lt;h2 id=&#34;openai-api-相容介面&#34;&gt;OpenAI API 相容介面
&lt;/h2&gt;&lt;p&gt;llama.cpp 的 &lt;code&gt;llama-server&lt;/code&gt; 可以提供類似 OpenAI API 的本地介面。原文給出的本地 base URL 是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這意味著很多支援自訂 OpenAI-compatible provider 的工具，可以把請求轉到本地模型上。API key 通常可以隨便填一個占位值，具體取決於客戶端是否強制校驗。&lt;/p&gt;
&lt;p&gt;這類能力的意義很大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不需要雲端 API key。&lt;/li&gt;
&lt;li&gt;不產生按 token 計費。&lt;/li&gt;
&lt;li&gt;資料可以留在本機。&lt;/li&gt;
&lt;li&gt;可以接入本地 Agent、程式碼助手或聊天前端。&lt;/li&gt;
&lt;li&gt;可以作為 OpenAI API 的本地替代後端做實驗。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但不要把本地介面直接暴露到公網。即使模型在本地，API 一旦開放到區域網路或公網，也可能被別人濫用，導致機器資源被打滿，甚至讓模型輸出你不希望生成的內容。&lt;/p&gt;
&lt;h2 id=&#34;對接-hermes-和-openclaw-的意義&#34;&gt;對接 Hermes 和 OpenClaw 的意義
&lt;/h2&gt;&lt;p&gt;原文提到，將這個本地模型接入 Hermes 或 OpenClaw，才能真正體現它的價值。&lt;/p&gt;
&lt;p&gt;這句話的意思是：模型本身只是推理核心，Agent 工具才負責把它接到真實任務裡。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寫程式碼。&lt;/li&gt;
&lt;li&gt;調用工具。&lt;/li&gt;
&lt;li&gt;讀取檔案。&lt;/li&gt;
&lt;li&gt;分析圖片。&lt;/li&gt;
&lt;li&gt;聯網搜尋。&lt;/li&gt;
&lt;li&gt;執行多步驟任務。&lt;/li&gt;
&lt;li&gt;維護長上下文工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本地模型如果只用來聊天，價值有限；如果能穩定作為 Agent 後端，才更接近「本地 AI 工作站」。&lt;/p&gt;
&lt;p&gt;不過，無審查模型接入 Agent 時要更謹慎。Agent 能操作檔案、運行命令、訪問網頁、調用工具時，模型的輸出會轉化為真實動作。模型越少限制，越需要外層權限控制、人工確認和審計日誌。&lt;/p&gt;
&lt;h2 id=&#34;無審查模型的風險邊界&#34;&gt;無審查模型的風險邊界
&lt;/h2&gt;&lt;p&gt;這類模型最大賣點通常是「少拒答」。但少拒答也意味著更大的風險。&lt;/p&gt;
&lt;p&gt;需要注意幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它可能更容易輸出違法、危險或誤導性內容。&lt;/li&gt;
&lt;li&gt;它可能不會主動提醒安全邊界。&lt;/li&gt;
&lt;li&gt;它可能在高風險問題上給出過度自信的建議。&lt;/li&gt;
&lt;li&gt;它可能被提示詞誘導執行不合適的任務。&lt;/li&gt;
&lt;li&gt;它不適合直接面向公眾開放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更穩妥的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在本機或受控區域網路內測試。&lt;/li&gt;
&lt;li&gt;不把它接入高權限工具。&lt;/li&gt;
&lt;li&gt;不讓它自動執行刪除、支付、發文、批量提交等不可逆操作。&lt;/li&gt;
&lt;li&gt;給 Agent 工具設定檔案、命令、網路和瀏覽器權限邊界。&lt;/li&gt;
&lt;li&gt;對高風險輸出保持人工複核。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，越是「自由」的模型，越需要外層系統約束。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;這類模型適合以下使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究本地大模型部署的人。&lt;/li&gt;
&lt;li&gt;有 8G 以上顯存，願意折騰 GGUF 和 llama.cpp 的使用者。&lt;/li&gt;
&lt;li&gt;想把本地模型接入 OpenAI-compatible 客戶端的人。&lt;/li&gt;
&lt;li&gt;關注本地多模態、截圖分析和 Agent 後端的人。&lt;/li&gt;
&lt;li&gt;想離線處理部分隱私資料的開發者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合以下場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不想調參數的新手。&lt;/li&gt;
&lt;li&gt;需要穩定生產 SLA 的服務。&lt;/li&gt;
&lt;li&gt;對安全合規要求高的團隊。&lt;/li&gt;
&lt;li&gt;需要嚴格事實可靠性的業務流程。&lt;/li&gt;
&lt;li&gt;想把模型直接公開給外部使用者的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;簡單結論&#34;&gt;簡單結論
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-35B-A3B Uncensored HauhauCS Aggressive&lt;/code&gt; 這類模型的出現，說明本地 AI 的能力邊界正在快速往前推：消費級顯卡可以跑更大模型，GGUF 量化讓部署門檻下降，llama.cpp 讓本地模型具備 OpenAI API 相容介面，多模態和 Agent 工具又把它從聊天推進到任務執行。&lt;/p&gt;
&lt;p&gt;但不要把它只理解成「越獄模型」。更有價值的角度是：本地 AI 正在成為可組合的基礎設施。模型、推理引擎、API 服務、前端、Agent 工具、權限控制，會一起決定最終體驗。&lt;/p&gt;
&lt;p&gt;如果你要嘗試，建議先從低風險本地測試開始：選合適量化，降低上下文長度，確認 &lt;code&gt;--jinja&lt;/code&gt; 和 &lt;code&gt;--mmproj&lt;/code&gt; 配置正確，再接入客戶端。等穩定後，再考慮接入 Agent 工作流。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;零度博客原文：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24284.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24284.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp GitHub：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness 的 domain skills 機制：讓 AI Agent 不再重複踩網頁自動化的坑</title>
        <link>https://knightli.com/zh-tw/2026/05/24/browser-harness-domain-skills-summary/</link>
        <pubDate>Sun, 24 May 2026 23:43:35 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/24/browser-harness-domain-skills-summary/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 最有意思的地方，不只是讓 AI Agent 能控制真實 Chrome，而是它把網頁操作中的經驗變成了可以重用的 &lt;code&gt;domain skills&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這件事很關鍵。瀏覽器自動化真正困難的地方，往往不是「能不能點擊按鈕」，而是每個網站都有自己的細節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些頁面必須登入。&lt;/li&gt;
&lt;li&gt;哪些資料可以直接走 API。&lt;/li&gt;
&lt;li&gt;哪些按鈕用普通 DOM 點擊無效。&lt;/li&gt;
&lt;li&gt;哪些 iframe、shadow DOM、彈窗會擋住流程。&lt;/li&gt;
&lt;li&gt;哪些選擇器穩定，哪些只是臨時 class。&lt;/li&gt;
&lt;li&gt;哪些操作涉及帳號、支付或不可逆變更，必須讓人確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些經驗只留在一次任務日誌裡，Agent 下次還會重新踩坑。&lt;code&gt;domain skills&lt;/code&gt; 的作用，就是把這些經驗沉澱下來，讓 Agent 不必每次都像第一次打開網站。&lt;/p&gt;
&lt;h2 id=&#34;domain-skills-是什麼&#34;&gt;domain skills 是什麼
&lt;/h2&gt;&lt;p&gt;可以把 &lt;code&gt;domain skills&lt;/code&gt; 理解成「給 Agent 看的站點操作手冊」。&lt;/p&gt;
&lt;p&gt;它不是普通的使用者文件，也不是一次性腳本。它更像一組經過實測的站點級知識：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這個站點適不適合用瀏覽器。&lt;/li&gt;
&lt;li&gt;如果有 API，應該優先用哪個 API。&lt;/li&gt;
&lt;li&gt;如果必須操作網頁，應該從哪個 URL 進入。&lt;/li&gt;
&lt;li&gt;哪些 DOM 結構、aria-label、按鈕行為經過驗證。&lt;/li&gt;
&lt;li&gt;哪些常見寫法會失敗。&lt;/li&gt;
&lt;li&gt;哪些場景要停止並請求人類介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類內容既能被人類審查，也能被 Agent 在任務中讀取。它把「臨場摸索」變成「可維護經驗」。&lt;/p&gt;
&lt;h2 id=&#34;它不是讓-agent-盲目點擊&#34;&gt;它不是讓 Agent 盲目點擊
&lt;/h2&gt;&lt;p&gt;一個好的瀏覽器 Agent，不應該把所有問題都變成打開網頁、看截圖、點按鈕。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 裡很重要的一類經驗，恰恰是在告訴 Agent：什麼時候不要用瀏覽器。&lt;/p&gt;
&lt;p&gt;比如 ArXiv 這類站點，論文搜尋、元資料和摘要可以透過 Atom API 或 HTML meta 標籤直接拿到。用 HTTP 請求通常比打開瀏覽器更快、更穩，也更容易解析。&lt;/p&gt;
&lt;p&gt;GitHub 也是類似思路。倉庫、使用者、release 資料優先用 REST API；檔案內容優先讀 &lt;code&gt;raw.githubusercontent.com&lt;/code&gt;；只有 GitHub Trending 這類沒有等價 API 的頁面，才需要進入瀏覽器。&lt;/p&gt;
&lt;p&gt;這說明 browser-harness 的思路不是「瀏覽器萬能」，而是把瀏覽器放在正確位置：當 API、HTTP、靜態頁面無法解決問題時，再讓 Agent 操作真實頁面。&lt;/p&gt;
&lt;h2 id=&#34;它記錄的是站點級知識&#34;&gt;它記錄的是站點級知識
&lt;/h2&gt;&lt;p&gt;傳統自動化腳本通常圍繞一次任務寫，比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;打開頁面 -&amp;gt; 輸入關鍵詞 -&amp;gt; 點擊按鈕 -&amp;gt; 下載文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這種腳本可以完成任務，但經驗很容易散落在程式碼裡。站點一改版，腳本失效；換一個任務，很多經驗也沒法重用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 的粒度更接近站點級知識庫。它關心的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Amazon 搜尋結果裡哪個容器選擇器穩定。&lt;/li&gt;
&lt;li&gt;GitHub 哪些資料應該走 REST API。&lt;/li&gt;
&lt;li&gt;LinkedIn 邀請管理頁的按鈕 aria-label 有什麼差異。&lt;/li&gt;
&lt;li&gt;Shopify Admin 裡哪些頁面是嵌入式 app。&lt;/li&gt;
&lt;li&gt;Shopify Polaris 輸入框為什麼不能只用普通 JS 設定 value。&lt;/li&gt;
&lt;li&gt;Browser Use Cloud 的瀏覽器實例如何建立、列出和清理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些經驗不是一次任務的步驟，而是以後很多任務都會用到的判斷依據。&lt;/p&gt;
&lt;h2 id=&#34;例子amazon-商品搜尋&#34;&gt;例子：Amazon 商品搜尋
&lt;/h2&gt;&lt;p&gt;Amazon 商品搜尋的經驗，重點不只是「怎麼搜尋商品」，而是哪些路徑更穩定。&lt;/p&gt;
&lt;p&gt;比較可靠的做法是直接使用搜尋 URL，而不是每次都打開首頁再模擬輸入。搜尋結果可以從 &lt;code&gt;[data-component-type=&amp;quot;s-search-result&amp;quot;]&lt;/code&gt; 這樣的容器中提取。欄位提取也有細節：標題、價格、評分、評論數、是否贊助，都有各自更穩的 DOM 來源。&lt;/p&gt;
&lt;p&gt;這種經驗對 Agent 很有價值。沒有它時，Agent 可能會從截圖裡猜按鈕、反覆嘗試選擇器；有了它之後，Agent 可以直接進入更穩定的資料提取路徑。&lt;/p&gt;
&lt;p&gt;更重要的是，這類 skill 還會記錄陷阱。例如某些看似可用的選擇器，在贊助結果或交叉推薦區域裡會誤讀。這種坑只有實測過才知道。&lt;/p&gt;
&lt;h2 id=&#34;例子linkedin-邀請管理&#34;&gt;例子：LinkedIn 邀請管理
&lt;/h2&gt;&lt;p&gt;LinkedIn 這類站點更接近真實帳號工作流，風險也更高。&lt;/p&gt;
&lt;p&gt;在邀請管理頁裡，Accept 和 Ignore 按鈕的 &lt;code&gt;aria-label&lt;/code&gt; 格式不同，不能簡單地從一個推導另一個。有些邀請卡片裡的 Accept 控件甚至不是 &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;，而是 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;，普通 CDP 點擊不一定能觸發接受動作。&lt;/p&gt;
&lt;p&gt;這種細節說明，真實網頁自動化不是「定位到元素就結束」。按鈕標籤、事件綁定、軟導航、元件實作方式，都會影響操作是否真的生效。&lt;/p&gt;
&lt;p&gt;對 Agent 來說，這類經驗還有一個安全含義：涉及社交帳號、邀請、消息、發文的操作，不應該完全託管。skill 可以記錄路徑和陷阱，但批量接受邀請、對外發送內容、修改帳號資料這類動作，最好保留人工確認。&lt;/p&gt;
&lt;h2 id=&#34;例子shopify-admin&#34;&gt;例子：Shopify Admin
&lt;/h2&gt;&lt;p&gt;Shopify Admin 的經驗說明了另一個問題：後台系統往往不是一個頁面，而是一堆嵌入式應用和複雜元件的組合。&lt;/p&gt;
&lt;p&gt;很多 Shopify app 會運行在 iframe 裡。Polaris React 輸入框、Web Components、嵌入式 app 的互動方式也不同。某些輸入框不能只用 &lt;code&gt;element.value = ...&lt;/code&gt;，需要使用更接近真實鍵盤輸入的 CDP keystrokes。&lt;/p&gt;
&lt;p&gt;這類 skill 的價值在於，它讓 Agent 先判斷目前頁面屬於哪類 UI，再選擇合適的操作方式。&lt;/p&gt;
&lt;p&gt;同時，Shopify 的經驗也強調「能不用瀏覽器就不用瀏覽器」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;唯讀商品和庫存資料，優先用 Storefront API。&lt;/li&gt;
&lt;li&gt;有 Admin API token 時，優先用 Admin API。&lt;/li&gt;
&lt;li&gt;編輯主題程式碼時，優先用 Shopify CLI。&lt;/li&gt;
&lt;li&gt;只有沒有 API、一次性設定、探索後台時，才適合讓瀏覽器介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這才是成熟的 Agent 工具選擇邏輯。&lt;/p&gt;
&lt;h2 id=&#34;例子browser-use-cloud&#34;&gt;例子：Browser Use Cloud
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 不只服務網頁點擊，也可以記錄圍繞瀏覽器執行環境的 API 經驗。&lt;/p&gt;
&lt;p&gt;Browser Use Cloud 的經驗裡，會記錄如何透過 REST API 建立 cloud browser、列出正在運行的瀏覽器、清理 zombie browser、取得 &lt;code&gt;liveUrl&lt;/code&gt; 和 &lt;code&gt;cdpUrl&lt;/code&gt; 等資訊。&lt;/p&gt;
&lt;p&gt;這說明 skill 的邊界並不侷限於「某個網頁按鈕怎麼點」。只要某類任務會反覆出現，而且有穩定做法，就可以沉澱成 skill：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 呼叫方式。&lt;/li&gt;
&lt;li&gt;鑑權頭格式。&lt;/li&gt;
&lt;li&gt;請求和回應結構。&lt;/li&gt;
&lt;li&gt;已驗證狀態碼。&lt;/li&gt;
&lt;li&gt;常見失敗模式。&lt;/li&gt;
&lt;li&gt;清理和回收資源的方法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對 Agent 來說，這些都是可重用能力。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這比臨場推理更可靠&#34;&gt;為什麼這比臨場推理更可靠
&lt;/h2&gt;&lt;p&gt;很多人期待大模型每次都能「自己看懂網頁」。但真實任務裡，只靠臨場推理並不穩定。&lt;/p&gt;
&lt;p&gt;原因很簡單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;網頁 UI 經常變化。&lt;/li&gt;
&lt;li&gt;同一按鈕可能有多種實作。&lt;/li&gt;
&lt;li&gt;看得見不代表點得動。&lt;/li&gt;
&lt;li&gt;能點擊不代表操作真的生效。&lt;/li&gt;
&lt;li&gt;有些任務本來就應該用 API，而不是瀏覽器。&lt;/li&gt;
&lt;li&gt;有些操作需要人類確認，不能讓模型自己決定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 把這些經驗寫成文件後，有幾個好處：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人類可以 review。&lt;/li&gt;
&lt;li&gt;錯誤經驗可以修正。&lt;/li&gt;
&lt;li&gt;同一站點的經驗可以持續積累。&lt;/li&gt;
&lt;li&gt;新 Agent 可以直接繼承舊經驗。&lt;/li&gt;
&lt;li&gt;臨時任務發現可以變成長期知識。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比把一切都塞進 prompt 或聊天上下文更穩。&lt;/p&gt;
&lt;h2 id=&#34;團隊可以怎麼用&#34;&gt;團隊可以怎麼用
&lt;/h2&gt;&lt;p&gt;如果把 browser-harness 用在團隊裡，&lt;code&gt;domain skills&lt;/code&gt; 可以變成一種輕量自動化知識庫。&lt;/p&gt;
&lt;p&gt;比較適合沉澱的內容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;內部後台的登入後路徑。&lt;/li&gt;
&lt;li&gt;報表匯出流程。&lt;/li&gt;
&lt;li&gt;常見彈窗處理方式。&lt;/li&gt;
&lt;li&gt;哪些按鈕需要人工確認。&lt;/li&gt;
&lt;li&gt;哪些頁面有 API 替代方案。&lt;/li&gt;
&lt;li&gt;哪些選擇器經過實測可靠。&lt;/li&gt;
&lt;li&gt;哪些任務不允許 Agent 自動執行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類知識不必一開始就很完整。更實際的做法是從低風險、高頻、可回復的流程開始：先讓 Agent 做唯讀、下載、整理、檢查類任務。等流程穩定後，再把經驗整理成 skill。&lt;/p&gt;
&lt;p&gt;對團隊管理者來說，skill 文件還有一個好處：它讓自動化邊界變得可見。你可以審查 Agent 知道什麼、能做什麼、應該停在哪裡。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的邊界&#34;&gt;需要注意的邊界
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 能提高 Agent 成功率，但它不應該讓高風險操作完全自動化。&lt;/p&gt;
&lt;p&gt;幾個邊界要守住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不記錄密碼、Cookie、token、客戶資料和內部敏感 URL。&lt;/li&gt;
&lt;li&gt;支付、刪除、批量提交、帳號變更、對外發布內容，要保留人工確認。&lt;/li&gt;
&lt;li&gt;skill 要寫明驗證日期和適用範圍。&lt;/li&gt;
&lt;li&gt;站點改版後，要允許 skill 失效並重新驗證。&lt;/li&gt;
&lt;li&gt;不要把繞過風控、規避平台限制當成目標。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，domain skill 是讓 Agent 更穩，不是讓 Agent 無限制地做事。&lt;/p&gt;
&lt;h2 id=&#34;簡單結論&#34;&gt;簡單結論
&lt;/h2&gt;&lt;p&gt;browser-harness 的 &lt;code&gt;domain skills&lt;/code&gt; 機制說明了一件事：AI Agent 的瀏覽器自動化，不能只靠模型臨場發揮。&lt;/p&gt;
&lt;p&gt;一個可用的瀏覽器 Agent，至少需要三層能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;底層控制能力：截圖、點擊、輸入、下載、CDP、HTTP。&lt;/li&gt;
&lt;li&gt;站點級知識：API 優先級、穩定選擇器、元件陷阱、登入邊界。&lt;/li&gt;
&lt;li&gt;人類安全規則：憑據不交給模型，高風險操作要確認，敏感資訊不寫進 skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 補的是第二層。它讓 Agent 帶著驗證過的經驗進入網頁任務，而不是每次都重新摸索。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-harness domain skills：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Amazon product-search skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ArXiv scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkedIn invitation-manager skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shopify admin skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Browser Use Cloud skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness、Playwright、Puppeteer 怎麼選？瀏覽器自動化工具對比</title>
        <link>https://knightli.com/zh-tw/2026/05/24/browser-harness-playwright-puppeteer-comparison/</link>
        <pubDate>Sun, 24 May 2026 17:51:28 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/24/browser-harness-playwright-puppeteer-comparison/</guid>
        <description>&lt;p&gt;在瀏覽器自動化和自動化測試領域，&lt;code&gt;Playwright&lt;/code&gt; 和 &lt;code&gt;Puppeteer&lt;/code&gt; 是最常被拿來比較的兩個工具。它們都可以控制瀏覽器、點擊頁面、抓取內容、產生截圖或 PDF，也都和 Chrome DevTools Protocol 有很深關係。&lt;/p&gt;
&lt;p&gt;但如果把 &lt;code&gt;browser-use/browser-harness&lt;/code&gt; 放進來，問題就不只是「哪個測試框架更強」，而是變成兩類工具的對比：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Playwright&lt;/code&gt; / &lt;code&gt;Puppeteer&lt;/code&gt;：面向人類工程師寫確定性腳本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;browser-harness&lt;/code&gt;：面向 AI Agent 操作真實瀏覽器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者適合測試、爬蟲和工程化自動化；後者更像給 Claude Code、Codex CLI、Gemini 這類 Agent 準備的瀏覽器控制層。&lt;/p&gt;
&lt;h2 id=&#34;playwright-和-puppeteer-的關係&#34;&gt;Playwright 和 Puppeteer 的關係
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Puppeteer&lt;/code&gt; 最早由 Google Chrome 團隊推出，天然服務於 Chromium 和 Chrome 自動化。它的 API 簡潔，生態成熟，特別適合圍繞 Chrome 做截圖、PDF、頁面抓取和輕量自動化。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 由 Microsoft 維護，背後團隊和早期 Puppeteer 有很深淵源。它吸收了 Puppeteer 的很多經驗，同時把跨瀏覽器、自動等待、上下文隔離、測試報告和調試工具鏈做得更完整。&lt;/p&gt;
&lt;p&gt;簡單說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只圍繞 Chrome 做輕量任務，&lt;code&gt;Puppeteer&lt;/code&gt; 仍然很順手。&lt;/li&gt;
&lt;li&gt;做跨瀏覽器 E2E 測試、複雜 SPA 自動化和團隊測試工程，&lt;code&gt;Playwright&lt;/code&gt; 通常更合適。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;核心區別總覽&#34;&gt;核心區別總覽
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;維度&lt;/th&gt;
          &lt;th&gt;Puppeteer&lt;/th&gt;
          &lt;th&gt;Playwright&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;主導方&lt;/td&gt;
          &lt;td&gt;Google&lt;/td&gt;
          &lt;td&gt;Microsoft&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;瀏覽器支援&lt;/td&gt;
          &lt;td&gt;主要面向 Chrome / Chromium&lt;/td&gt;
          &lt;td&gt;Chromium、Firefox、WebKit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;語言支援&lt;/td&gt;
          &lt;td&gt;主要是 JavaScript / TypeScript&lt;/td&gt;
          &lt;td&gt;JavaScript / TypeScript、Python、Java、.NET&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自動等待&lt;/td&gt;
          &lt;td&gt;需要更多顯式等待&lt;/td&gt;
          &lt;td&gt;Locator 和 auto-waiting 更完整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多上下文隔離&lt;/td&gt;
          &lt;td&gt;支援，但不是最突出的優勢&lt;/td&gt;
          &lt;td&gt;BrowserContext 體驗很強&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工具鏈&lt;/td&gt;
          &lt;td&gt;簡潔、成熟、偏基礎&lt;/td&gt;
          &lt;td&gt;Codegen、Trace Viewer、測試報告更完整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;典型場景&lt;/td&gt;
          &lt;td&gt;Chrome 自動化、截圖、PDF、輕量抓取&lt;/td&gt;
          &lt;td&gt;跨瀏覽器 E2E 測試、複雜前端應用自動化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;瀏覽器支援&#34;&gt;瀏覽器支援
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Puppeteer&lt;/code&gt; 的優勢在 Chrome。它和 Chromium 結合緊密，如果你的目標就是控制 Chrome、產生 PDF、截圖、跑簡單爬蟲，Puppeteer 的心智負擔很低。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 的優勢在跨瀏覽器。它原生支援 Chromium、Firefox 和 WebKit。WebKit 這一點很關鍵，因為很多 Safari 相關問題不能只靠 Chrome 測出來。對需要覆蓋桌面端、行動端和不同瀏覽器核心的應用來說，Playwright 更適合作為主力工具。&lt;/p&gt;
&lt;p&gt;這也是兩者選擇的第一道分界線：只看 Chrome，可以用 Puppeteer；要認真做跨瀏覽器測試，優先 Playwright。&lt;/p&gt;
&lt;h2 id=&#34;自動等待與穩定性&#34;&gt;自動等待與穩定性
&lt;/h2&gt;&lt;p&gt;瀏覽器自動化最煩人的問題，往往不是「不會點擊」，而是頁面還沒準備好。元素可能還沒掛到 DOM，可能被遮擋，可能正在動畫中，可能按鈕還是 disabled。&lt;/p&gt;
&lt;p&gt;Puppeteer 裡經常會寫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForSelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這沒有問題，但等待邏輯需要工程師自己想清楚。頁面越複雜，腳本裡越容易出現各種 &lt;code&gt;waitForSelector&lt;/code&gt;、&lt;code&gt;waitForTimeout&lt;/code&gt; 和重試邏輯。&lt;/p&gt;
&lt;p&gt;Playwright 的 Locator 機制和自動等待更完整：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;locator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在點擊之前，Playwright 會自動檢查元素是否可見、可操作、穩定、沒有被遮擋，並在合理時間內重試。這對 React、Vue、Next.js 這類非同步渲染很多的現代 Web 應用尤其重要，可以明顯減少 flaky test。&lt;/p&gt;
&lt;h2 id=&#34;多帳號和上下文隔離&#34;&gt;多帳號和上下文隔離
&lt;/h2&gt;&lt;p&gt;如果你要模擬多個使用者，或者想讓多個任務共享同一個瀏覽器行程但隔離 Cookie、LocalStorage 和 Session，&lt;code&gt;BrowserContext&lt;/code&gt; 就很重要。&lt;/p&gt;
&lt;p&gt;Puppeteer 也支援上下文隔離，但 Playwright 把這件事做成了核心能力。你可以在一個瀏覽器實例裡快速建立多個獨立 context，每個 context 像一個乾淨的瀏覽器環境，卻不需要反覆啟動完整瀏覽器行程。&lt;/p&gt;
&lt;p&gt;這對這些場景很有價值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多帳號並發測試。&lt;/li&gt;
&lt;li&gt;多角色協作流程測試。&lt;/li&gt;
&lt;li&gt;電商、IM、協作文檔等多使用者場景。&lt;/li&gt;
&lt;li&gt;需要隔離 Cookie 和登入狀態的爬取任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;工具鏈差異&#34;&gt;工具鏈差異
&lt;/h2&gt;&lt;p&gt;Playwright 是更工程化的方案。它內建了很多測試開發會用到的工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;codegen&lt;/code&gt;：在網頁上操作，自動產生腳本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Trace Viewer&lt;/code&gt;：失敗後回看每一步的截圖、DOM、網路請求和 console 日誌。&lt;/li&gt;
&lt;li&gt;Test Runner：支援斷言、並行、重試、報告和專案矩陣。&lt;/li&gt;
&lt;li&gt;Locator：支援按文字、角色、label、test id 等方式定位元素。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puppeteer 則更像一個輕量瀏覽器控制庫。它不臃腫，API 直接，適合嵌入腳本、服務端任務和自定義自動化流程。&lt;/p&gt;
&lt;p&gt;如果你要搭企業級測試體系，Playwright 的配套工具會省很多事。如果你只是要寫一個 Node.js 腳本，把網頁轉 PDF 或定時截圖，Puppeteer 反而更乾脆。&lt;/p&gt;
&lt;h2 id=&#34;browser-harness-放在哪裡&#34;&gt;browser-harness 放在哪裡
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;browser-harness&lt;/code&gt; 和 Playwright、Puppeteer 不是同一類工具。&lt;/p&gt;
&lt;p&gt;Playwright 和 Puppeteer 主要假設「人類寫腳本」。人類工程師要決定選擇器、等待條件、斷言邏輯和異常處理。它們追求的是確定性：同樣的腳本，在同樣的頁面狀態下，應該給出同樣的結果。&lt;/p&gt;
&lt;p&gt;browser-harness 主要假設「AI Agent 操作瀏覽器」。它的目標不是提供一套巨大的高階 API，而是透過 CDP 連接真實 Chrome，把截圖、座標點擊、DOM、網路請求和 helper 暴露給 Agent。Agent 可以觀察頁面、判斷下一步、遇到缺能力時補 helper，再把站點經驗沉澱成 skill。&lt;/p&gt;
&lt;p&gt;這就讓它更適合開放任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登入後台後下載帳單。&lt;/li&gt;
&lt;li&gt;在內部系統裡填一組表單。&lt;/li&gt;
&lt;li&gt;處理經常改版的 OA 或 SaaS 頁面。&lt;/li&gt;
&lt;li&gt;按使用者目標探索頁面，而不是執行固定腳本。&lt;/li&gt;
&lt;li&gt;讓 Claude Code、Codex CLI 這類工具擁有瀏覽器操作能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;三者核心對比&#34;&gt;三者核心對比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;維度&lt;/th&gt;
          &lt;th&gt;Puppeteer&lt;/th&gt;
          &lt;th&gt;Playwright&lt;/th&gt;
          &lt;th&gt;browser-harness&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;面向對象&lt;/td&gt;
          &lt;td&gt;人類工程師&lt;/td&gt;
          &lt;td&gt;人類工程師和測試團隊&lt;/td&gt;
          &lt;td&gt;AI Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要目標&lt;/td&gt;
          &lt;td&gt;控制 Chrome&lt;/td&gt;
          &lt;td&gt;穩定跨瀏覽器自動化&lt;/td&gt;
          &lt;td&gt;讓 Agent 操作真實瀏覽器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;腳本方式&lt;/td&gt;
          &lt;td&gt;手寫 JS/TS 自動化&lt;/td&gt;
          &lt;td&gt;手寫腳本 + 測試框架&lt;/td&gt;
          &lt;td&gt;使用者下目標，Agent 分步執行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;元素定位&lt;/td&gt;
          &lt;td&gt;CSS、XPath、DOM API&lt;/td&gt;
          &lt;td&gt;Locator、文字、角色、CSS&lt;/td&gt;
          &lt;td&gt;截圖視覺、座標、DOM、CDP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;等待機制&lt;/td&gt;
          &lt;td&gt;更多手動控制&lt;/td&gt;
          &lt;td&gt;自動等待很強&lt;/td&gt;
          &lt;td&gt;由 Agent 觀察和調整&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;瀏覽器環境&lt;/td&gt;
          &lt;td&gt;通常啟動自動化瀏覽器&lt;/td&gt;
          &lt;td&gt;通常啟動測試瀏覽器&lt;/td&gt;
          &lt;td&gt;常連接真實 Chrome&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最適合&lt;/td&gt;
          &lt;td&gt;Chrome 腳本、截圖、PDF、輕量抓取&lt;/td&gt;
          &lt;td&gt;E2E 測試、跨瀏覽器驗證、複雜 SPA&lt;/td&gt;
          &lt;td&gt;AI 助手、開放網頁任務、真實帳號工作流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;程式碼體感對比&#34;&gt;程式碼體感對比
&lt;/h2&gt;&lt;p&gt;Puppeteer 更像直接控制 Chrome：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;puppeteer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;puppeteer&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;puppeteer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://example.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForSelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Playwright 更強調 Locator 和自動等待：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chromium&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;playwright&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;chromium&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://example.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;locator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;#submit-btn&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;click&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;browser-harness 的使用體感則完全不同。你通常不是寫完整腳本，而是在 Agent 環境裡下達目標：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;幫我打開後台，下載上個月的帳單，並整理成報銷用的文件。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 會借助 browser-harness 反覆執行類似流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;截圖，理解目前頁面。&lt;/li&gt;
&lt;li&gt;點擊某個座標或定位某個元素。&lt;/li&gt;
&lt;li&gt;輸入文字、上傳檔案、下載檔案。&lt;/li&gt;
&lt;li&gt;遇到彈窗時判斷如何關閉。&lt;/li&gt;
&lt;li&gt;缺少 helper 時補充程式碼。&lt;/li&gt;
&lt;li&gt;把可重用流程沉澱為 domain skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是傳統測試腳本的寫法，而是瀏覽器 Agent 的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;選擇 &lt;code&gt;Puppeteer&lt;/code&gt;，通常是因為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案主要跑在 Node.js 裡。&lt;/li&gt;
&lt;li&gt;只需要 Chrome 或 Chromium。&lt;/li&gt;
&lt;li&gt;任務是截圖、PDF、簡單頁面抓取或輕量自動化。&lt;/li&gt;
&lt;li&gt;你希望 API 簡潔、依賴少，自己控制更多細節。&lt;/li&gt;
&lt;li&gt;你對 Chrome DevTools Protocol 有較深依賴。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;選擇 &lt;code&gt;Playwright&lt;/code&gt;，通常是因為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你要做標準 UI 自動化或 E2E 測試。&lt;/li&gt;
&lt;li&gt;需要覆蓋 Chromium、Firefox 和 WebKit。&lt;/li&gt;
&lt;li&gt;團隊主語言可能是 Python、Java 或 C#。&lt;/li&gt;
&lt;li&gt;頁面是複雜 SPA，非同步狀態多，容易出現 flaky test。&lt;/li&gt;
&lt;li&gt;你需要 codegen、Trace Viewer、測試報告和並行測試。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;選擇 &lt;code&gt;browser-harness&lt;/code&gt;，通常是因為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在開發或使用 AI Agent。&lt;/li&gt;
&lt;li&gt;你希望模型像人一樣操作真實瀏覽器。&lt;/li&gt;
&lt;li&gt;任務步驟不固定，需要邊看頁面邊判斷。&lt;/li&gt;
&lt;li&gt;目標網站經常改版，或者彈窗、iframe、shadow DOM 很多。&lt;/li&gt;
&lt;li&gt;你想把真實網頁工作流交給 Claude Code、Codex CLI 等工具處理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;簡單結論&#34;&gt;簡單結論
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; 和 &lt;code&gt;Puppeteer&lt;/code&gt; 是瀏覽器自動化工具，核心是讓人寫出可靠腳本。兩者相比，Puppeteer 更輕、更貼近 Chrome；Playwright 更完整、更適合跨瀏覽器測試和複雜前端應用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;browser-harness&lt;/code&gt; 則是另一個方向：它不是為了取代 Playwright 或 Puppeteer 寫測試，而是為了讓 AI Agent 接管真實瀏覽器。它犧牲了一部分傳統腳本的確定性，換來更強的開放任務適應能力。&lt;/p&gt;
&lt;p&gt;所以答案不是三選一，而是按任務分層：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;測試工程：優先 Playwright。&lt;/li&gt;
&lt;li&gt;Chrome 輕量腳本：Puppeteer 很合適。&lt;/li&gt;
&lt;li&gt;AI Agent 上網辦事：看 browser-harness。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-use/browser-harness：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Playwright 官方文件：&lt;a class=&#34;link&#34; href=&#34;https://playwright.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://playwright.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Puppeteer 官方文件：&lt;a class=&#34;link&#34; href=&#34;https://pptr.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://pptr.dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chrome DevTools Protocol：&lt;a class=&#34;link&#34; href=&#34;https://chromedevtools.github.io/devtools-protocol/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://chromedevtools.github.io/devtools-protocol/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>browser-harness 是什麼？讓 AI Agent 接管真實 Chrome 的瀏覽器自動化工具</title>
        <link>https://knightli.com/zh-tw/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</link>
        <pubDate>Sun, 24 May 2026 17:19:54 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/24/browser-use-browser-harness-ai-agent-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 是一個面向 AI Agent 的瀏覽器控制工具。它的目標不是再做一層複雜的自動化框架，而是把大模型直接連到真實 Chrome，透過 CDP 完成瀏覽、點擊、截圖、下載、上傳和表單操作。&lt;/p&gt;
&lt;p&gt;專案 README 對自己的定位很明確：用一層很薄、可編輯的 CDP harness，讓 LLM 直接連接真實瀏覽器；當任務中缺少 helper 時，Agent 可以在執行過程中補上程式碼，並把可重用經驗沉澱成 domain skills。&lt;/p&gt;
&lt;p&gt;這類工具值得關注，是因為瀏覽器仍然是很多真實工作的入口：後台系統、SaaS 面板、電商頁面、招聘網站、CRM、報銷系統、雲控制台、文件平台，往往沒有穩定 API，或者 API 權限比網頁權限更難拿到。讓 Agent 能可靠操作瀏覽器，本質上是在補齊自動化的最後一段距離。&lt;/p&gt;
&lt;h2 id=&#34;browser-harness-是什麼&#34;&gt;browser-harness 是什麼
&lt;/h2&gt;&lt;p&gt;從結構看，browser-harness 更像一個給 Agent 用的瀏覽器執行環境，而不是普通使用者手動點擊的瀏覽器外掛。&lt;/p&gt;
&lt;p&gt;它的核心思路有幾個：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接連接 Chrome 或 Chromium。&lt;/li&gt;
&lt;li&gt;透過 CDP WebSocket 操作頁面。&lt;/li&gt;
&lt;li&gt;讓 Agent 組合截圖、座標點擊、DOM、網路請求和原始 CDP 完成任務。&lt;/li&gt;
&lt;li&gt;把任務相關 helper 放在 &lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;把站點相關經驗沉澱到 &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;保持核心很薄，避免做成龐大的自動化平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;README 提到，專案核心架構大約是 4 個核心檔案、約 1000 行程式碼，主要包括 &lt;code&gt;install.md&lt;/code&gt;、&lt;code&gt;SKILL.md&lt;/code&gt;、&lt;code&gt;src/browser_harness/&lt;/code&gt;、&lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt; 和 &lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這種設計的重點不是內建所有網站能力，而是給 Agent 一個足夠貼近真實瀏覽器的操作層，讓它在具體任務裡補齊缺失能力。&lt;/p&gt;
&lt;h2 id=&#34;它和傳統瀏覽器自動化有什麼不同&#34;&gt;它和傳統瀏覽器自動化有什麼不同
&lt;/h2&gt;&lt;p&gt;傳統瀏覽器自動化通常圍繞測試框架展開，例如 Playwright、Selenium 或 Puppeteer。它們適合寫確定性的測試腳本：打開頁面、定位元素、點擊、斷言結果。&lt;/p&gt;
&lt;p&gt;browser-harness 面向的是另一類任務：使用者說一句目標，Agent 自己探索頁面、判斷狀態、處理彈窗、補 helper、複用站點經驗。它強調的是互動過程中的適應性。&lt;/p&gt;
&lt;p&gt;差異可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playwright 更適合人寫腳本，Agent 執行腳本。&lt;/li&gt;
&lt;li&gt;browser-harness 更適合 Agent 邊看頁面邊行動。&lt;/li&gt;
&lt;li&gt;傳統自動化偏固定流程。&lt;/li&gt;
&lt;li&gt;browser-harness 偏開放任務。&lt;/li&gt;
&lt;li&gt;傳統腳本常依賴選擇器。&lt;/li&gt;
&lt;li&gt;browser-harness 鼓勵先截圖、再按可見介面行動，必要時再回到 DOM 或 CDP。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不表示它要取代 Playwright。對穩定測試來說，Playwright 仍然更成熟。browser-harness 的價值在於把真實網頁變成 Agent 可操作的環境，尤其適合頁面結構複雜、步驟不固定、需要臨場判斷的任務。&lt;/p&gt;
&lt;h2 id=&#34;為什麼強調真實-chrome&#34;&gt;為什麼強調真實 Chrome
&lt;/h2&gt;&lt;p&gt;很多瀏覽器 Agent 工具會使用隔離的無頭瀏覽器。這樣部署簡單，也適合批量任務，但它有一個現實問題：使用者真實工作裡的登入狀態、擴充功能、歷史記錄、書籤和日常瀏覽器環境，不一定能直接複用。&lt;/p&gt;
&lt;p&gt;browser-harness 支援連接本機 Chrome，也支援 Browser Use cloud browser。對本機瀏覽器，它提供兩種方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;透過 &lt;code&gt;chrome://inspect/#remote-debugging&lt;/code&gt; 允許目前 Chrome 實例被連接。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;--remote-debugging-port=9222 --user-data-dir=...&lt;/code&gt; 啟動一個隔離 profile。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要讓 Agent 幫你處理真實帳號裡的任務，專案文件更傾向第一種方式，因為它能複用日常 Chrome 的登入狀態、擴充功能和書籤。如果要做無人值守自動化，或者不希望被彈窗打斷，則更適合使用隔離 profile 或雲瀏覽器。&lt;/p&gt;
&lt;p&gt;這裡的取捨很清楚：真實瀏覽器更貼近使用者工作流，但安全邊界也更敏感；隔離瀏覽器更適合自動化，但需要重新處理登入和環境。&lt;/p&gt;
&lt;h2 id=&#34;可編輯-helper-與-domain-skills&#34;&gt;可編輯 helper 與 domain skills
&lt;/h2&gt;&lt;p&gt;browser-harness 最有意思的地方，是它把「Agent 會學到什麼」設計進了專案結構。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/agent_helpers.py&lt;/code&gt; 用來放任務中臨時補出的 helper。比如 Agent 做檔案上傳時發現現有能力不夠，可以補一個穩定的上傳函式；下次再遇到類似頁面，就不用從零開始。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;agent-workspace/domain-skills/&lt;/code&gt; 則用來放站點級經驗。README 裡舉的方向包括 LinkedIn outreach、Amazon 下單、報銷系統等。專案建議不要手寫這些 skill，而是讓 Agent 在真實任務中發現可重用流程後再生成，這樣更貼近實際頁面行為。&lt;/p&gt;
&lt;p&gt;這個思路很適合瀏覽器自動化。因為網頁自動化的難點往往不是「怎麼點擊按鈕」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某個網站的登入後頁面怎麼跳轉。&lt;/li&gt;
&lt;li&gt;哪些彈窗會擋住主流程。&lt;/li&gt;
&lt;li&gt;哪些 selector 穩定，哪些只是臨時樣式名。&lt;/li&gt;
&lt;li&gt;上傳、下載、iframe、shadow DOM、跨域元件怎麼處理。&lt;/li&gt;
&lt;li&gt;某個後台系統有哪些隱藏等待和非同步狀態。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些知識如果只留在一次執行日誌裡，很快就會丟掉。把它們沉澱成 domain skills，才可能讓 Agent 越用越順。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;browser-harness 更適合以下任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;幫使用者操作真實網頁後台。&lt;/li&gt;
&lt;li&gt;在沒有 API 的系統裡完成重複流程。&lt;/li&gt;
&lt;li&gt;登入狀態依賴強的個人或企業網頁任務。&lt;/li&gt;
&lt;li&gt;需要截圖判斷頁面狀態的複雜互動。&lt;/li&gt;
&lt;li&gt;Agent 需要在執行中補工具、補站點經驗。&lt;/li&gt;
&lt;li&gt;多個子 Agent 各自使用獨立瀏覽器執行任務。&lt;/li&gt;
&lt;li&gt;研究瀏覽器 Agent 的執行環境設計。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具體例子包括：整理網頁表格、提交內部系統表單、下載帳單、上傳檔案、處理報銷流程、檢查訂單狀態、在 SaaS 控制台裡配置資源、從登入後的網頁提取資訊。&lt;/p&gt;
&lt;p&gt;如果任務只是抓取靜態網頁，未必需要瀏覽器。專案自己的 &lt;code&gt;SKILL.md&lt;/code&gt; 也提到，靜態頁面可以直接用 HTTP 批量取得；瀏覽器應該留給真正需要頁面狀態、登入狀態和互動的場景。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的風險&#34;&gt;需要注意的風險
&lt;/h2&gt;&lt;p&gt;讓 AI Agent 接管真實 Chrome，很強，也很危險。&lt;/p&gt;
&lt;p&gt;第一，權限邊界要清楚。真實 Chrome 裡可能有信箱、支付後台、雲控制台、公司系統和個人帳號。Agent 一旦能操作瀏覽器，就等於獲得了這些網頁權限的一部分。&lt;/p&gt;
&lt;p&gt;第二，不要把憑證交給模型。遇到登入頁、支付驗證、二次確認等敏感步驟，應該讓使用者自己處理。Agent 可以等待登入完成，但不應該從截圖裡讀取或輸入密碼、驗證碼、支付資訊。&lt;/p&gt;
&lt;p&gt;第三，自動化不等於可託管。很多網頁任務看似簡單，但中間可能出現風控、誤點擊、資料刪除、批量提交、不可逆操作。適合先從唯讀、低風險、可回復的流程開始。&lt;/p&gt;
&lt;p&gt;第四，domain skills 需要避免洩露隱私。站點經驗可以公開，但不要把帳號、內部 URL、客戶資料、座標流水或一次性任務細節寫進去。&lt;/p&gt;
&lt;p&gt;第五，真實瀏覽器連接方式要謹慎選擇。如果要複用日常登入狀態，使用目前 Chrome 很方便；如果要跑長時間自動化，隔離 profile 或雲瀏覽器更可控。&lt;/p&gt;
&lt;h2 id=&#34;對-ai-agent-工具的意義&#34;&gt;對 AI Agent 工具的意義
&lt;/h2&gt;&lt;p&gt;browser-harness 代表了一種很務實的 Agent 工具路線：少做平台，多給模型一個可以直接觸達真實環境的介面。&lt;/p&gt;
&lt;p&gt;過去很多 Agent 失敗在兩端。一端是模型會推理，但摸不到真實頁面；另一端是自動化框架很強，但需要人先把流程寫死。browser-harness 試圖把這兩端接起來：瀏覽器負責真實世界的狀態，Agent 負責觀察、判斷和補工具。&lt;/p&gt;
&lt;p&gt;這也是「自我改進 harness」的意義。它不是說 Agent 會神奇地變聰明，而是把可重用的操作經驗放到專案結構裡，讓下一次任務少走彎路。&lt;/p&gt;
&lt;p&gt;對開發者來說，browser-harness 的價值主要在三個層面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作為個人 Agent 的瀏覽器控制層。&lt;/li&gt;
&lt;li&gt;作為研究瀏覽器自動化和 Agent 工作流的樣本。&lt;/li&gt;
&lt;li&gt;作為把網頁流程變成可重用技能的實驗框架。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是所有瀏覽器自動化問題的答案，但它給出了一個清晰方向：當 Agent 真正要幫人做事時，工具層不只要能呼叫 API，也要能理解和操作人類每天使用的網頁介面。&lt;/p&gt;
&lt;h2 id=&#34;簡單結論&#34;&gt;簡單結論
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 值得關注，不是因為它包裝了多少高階功能，而是因為它把瀏覽器 Agent 的幾個關鍵問題擺在了台面上：真實 Chrome、CDP、截圖驅動、可編輯 helper、站點技能沉澱，以及使用者權限邊界。&lt;/p&gt;
&lt;p&gt;如果你只是寫穩定端到端測試，繼續用 Playwright 或 Selenium 就很好。如果你想讓 Codex、Claude Code 這類 Agent 直接幫你處理真實網頁任務，browser-harness 提供了一個更貼近 Agent 工作方式的入口。&lt;/p&gt;
&lt;p&gt;真正使用時，建議從低風險任務開始：先讓它讀頁面、截圖、提取資訊，再逐步嘗試點擊和提交。等你確認它能穩定識別頁面狀態，再考慮讓它接管更長的流程。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安裝文件：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/install.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/install.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;使用說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 3.5 Flash 的定位及優勢：為什麼它更適合高頻、多模態和低延遲場景</title>
        <link>https://knightli.com/zh-tw/2026/05/24/gemini-35-flash-positioning-advantages-low-latency-multimodal/</link>
        <pubDate>Sun, 24 May 2026 08:43:24 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/24/gemini-35-flash-positioning-advantages-low-latency-multimodal/</guid>
        <description>&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的關鍵詞不是「最強」，而是「高頻、快速、便宜、好接入」。它更像是 Gemini 系列裡的主力工作模型：不一定負責最難的推理題，但適合承接大量真實業務請求，例如問答、摘要、客服、內容處理、多模態理解、輕量程式碼輔助和自動化工作流。&lt;/p&gt;
&lt;p&gt;理解 Flash 的關鍵，是不要把它當成 Pro 類旗艦模型的替代品，而要把它當成一個面向吞吐量和響應速度優化的模型層。對開發者和企業來說，很多 AI 應用真正的成本不在單次最強能力，而在每天成千上萬次請求的延遲、穩定性、價格和上下文處理能力。&lt;/p&gt;
&lt;h2 id=&#34;flash-的產品定位&#34;&gt;Flash 的產品定位
&lt;/h2&gt;&lt;p&gt;Gemini 系列通常會把模型拆成不同層級：旗艦模型負責更複雜的推理、規劃和高難度任務；Flash 模型則強調速度、成本和規模化呼叫。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的定位可以概括為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比 Pro 更適合高頻呼叫。&lt;/li&gt;
&lt;li&gt;比輕量小模型更適合複雜輸入。&lt;/li&gt;
&lt;li&gt;面向低延遲和高吞吐。&lt;/li&gt;
&lt;li&gt;適合多模態輸入和長上下文處理。&lt;/li&gt;
&lt;li&gt;更適合作為應用裡的預設模型，而不是只在少數困難任務中呼叫。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類模型最適合做「每天都要跑很多次」的任務。它的價值不只是單次回答品質，而是能否在成本可控的前提下穩定處理大量文字、圖片、音訊、影片或結構化資訊。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-flash-很重要&#34;&gt;為什麼 Flash 很重要
&lt;/h2&gt;&lt;p&gt;AI 產品落地時，經常會遇到一個現實問題：最強模型很好，但不是每個請求都值得用最強模型。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者問一個普通客服問題。&lt;/li&gt;
&lt;li&gt;系統要總結一段會議記錄。&lt;/li&gt;
&lt;li&gt;後台要分類一批工單。&lt;/li&gt;
&lt;li&gt;App 要解釋一張圖片。&lt;/li&gt;
&lt;li&gt;自動化流程要從郵件裡抽取欄位。&lt;/li&gt;
&lt;li&gt;Agent 要先讀一批文件，再決定下一步。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些任務需要模型可靠、便宜、快，但不一定需要旗艦模型的全部推理能力。Flash 的意義就在這裡：它把「夠強」和「夠快」放在同一個位置上。&lt;/p&gt;
&lt;p&gt;如果一個 AI 應用要面向大量使用者，預設模型往往不能只看峰值能力，而要看平均請求成本、響應速度、併發能力和失敗率。Flash 就是這種應用層模型。&lt;/p&gt;
&lt;h2 id=&#34;主要優勢一低延遲和高吞吐&#34;&gt;主要優勢一：低延遲和高吞吐
&lt;/h2&gt;&lt;p&gt;Flash 最直觀的優勢是速度。&lt;/p&gt;
&lt;p&gt;對聊天產品、搜尋增強、客服機器人、即時寫作輔助和 Agent 工作流來說，延遲會直接影響體驗。使用者不一定知道模型參數或 benchmark，但能感覺到「是不是等得煩」。&lt;/p&gt;
&lt;p&gt;低延遲帶來的價值包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對話更像即時互動。&lt;/li&gt;
&lt;li&gt;多輪工具呼叫更不容易拖慢。&lt;/li&gt;
&lt;li&gt;Agent 可以更頻繁地做中間判斷。&lt;/li&gt;
&lt;li&gt;後台批處理能更快跑完。&lt;/li&gt;
&lt;li&gt;產品可以把 AI 能力放進更多細小流程裡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是 Agent 類應用，模型不是只回答一次，而是要反覆判斷、呼叫工具、讀上下文、生成下一步動作。單次延遲降低後，整條鏈路的體驗會明顯改善。&lt;/p&gt;
&lt;h2 id=&#34;主要優勢二成本更適合規模化&#34;&gt;主要優勢二：成本更適合規模化
&lt;/h2&gt;&lt;p&gt;Flash 的另一個核心價值是成本。&lt;/p&gt;
&lt;p&gt;企業和開發者真正上線 AI 應用時，通常會關心三個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次呼叫多少錢。&lt;/li&gt;
&lt;li&gt;每天總呼叫量是多少。&lt;/li&gt;
&lt;li&gt;峰值併發時成本和延遲是否可控。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個任務每天跑幾十萬次，哪怕單次差價很小，長期成本也會被放大。Flash 這類模型的定位，就是讓更多請求不必直接打到最貴、最重的模型上。&lt;/p&gt;
&lt;p&gt;常見做法是分層呼叫：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通請求預設走 Flash。&lt;/li&gt;
&lt;li&gt;難題、複雜規劃、長鏈路推理再升級到 Pro。&lt;/li&gt;
&lt;li&gt;簡單分類、固定格式抽取也可以進一步下沉到更輕量模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣可以讓 AI 系統既保留上限，又控制日常成本。&lt;/p&gt;
&lt;h2 id=&#34;主要優勢三多模態輸入更適合真實應用&#34;&gt;主要優勢三：多模態輸入更適合真實應用
&lt;/h2&gt;&lt;p&gt;Gemini 系列一直強調多模態能力。Flash 的優勢在於，它不是只服務文字請求，也適合處理圖片、音訊、影片和文件等輸入。&lt;/p&gt;
&lt;p&gt;這對真實產品很重要。很多業務資料並不是純文字：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者上傳截圖諮詢問題。&lt;/li&gt;
&lt;li&gt;客服要理解一張故障照片。&lt;/li&gt;
&lt;li&gt;教育產品要看題目圖片。&lt;/li&gt;
&lt;li&gt;內容平台要處理影片片段。&lt;/li&gt;
&lt;li&gt;辦公場景要讀取 PDF、表格和簡報。&lt;/li&gt;
&lt;li&gt;電商場景要分析商品圖和使用者描述。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果多模態能力只能依賴昂貴的旗艦模型，很多高頻場景就很難鋪開。Flash 的意義在於，把多模態理解下放到更適合規模化呼叫的模型層。&lt;/p&gt;
&lt;h2 id=&#34;主要優勢四長上下文讓它適合讀材料&#34;&gt;主要優勢四：長上下文讓它適合讀材料
&lt;/h2&gt;&lt;p&gt;長上下文是 Gemini 系列的重要能力之一。對 Flash 來說，長上下文的價值不是「把所有東西塞進去就完事」，而是讓它能承擔更多資訊整理型任務。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;總結長文件。&lt;/li&gt;
&lt;li&gt;閱讀產品手冊。&lt;/li&gt;
&lt;li&gt;分析會議紀要。&lt;/li&gt;
&lt;li&gt;整理多頁 PDF。&lt;/li&gt;
&lt;li&gt;對比多份合約或方案。&lt;/li&gt;
&lt;li&gt;給 Agent 提供較大的任務背景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;長上下文和低成本結合起來，適合做「先讀大量材料，再給出可操作結果」的工作流。它不一定每次都要做極難推理，但能把更多上下文納入同一次處理，這對辦公、客服、知識庫、研發輔助都很有用。&lt;/p&gt;
&lt;h2 id=&#34;主要優勢五適合作為預設模型&#34;&gt;主要優勢五：適合作為預設模型
&lt;/h2&gt;&lt;p&gt;很多 AI 產品需要一個「預設模型」。這個模型不一定是最貴最強，但要滿足幾個條件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大多數問題回答品質穩定。&lt;/li&gt;
&lt;li&gt;響應足夠快。&lt;/li&gt;
&lt;li&gt;成本可控。&lt;/li&gt;
&lt;li&gt;多模態輸入能處理。&lt;/li&gt;
&lt;li&gt;長上下文能力夠用。&lt;/li&gt;
&lt;li&gt;容易接入 API 和既有產品鏈路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的優勢正是在這裡。它適合做預設入口：先承接大多數請求，如果遇到複雜任務，再路由到更強模型。&lt;/p&gt;
&lt;p&gt;這種模式會越來越常見。未來很多 AI 系統不是「只選一個模型」，而是「Flash 做主力，Pro 做升級，輕量模型做邊緣任務」。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 更適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客服問答和知識庫檢索後的回答生成。&lt;/li&gt;
&lt;li&gt;長文件摘要、報告整理、會議紀要。&lt;/li&gt;
&lt;li&gt;圖片、截圖、PDF、影片片段的多模態理解。&lt;/li&gt;
&lt;li&gt;App 內即時 AI 助手。&lt;/li&gt;
&lt;li&gt;內容審核、分類、標籤生成。&lt;/li&gt;
&lt;li&gt;郵件、工單、表單的資訊抽取。&lt;/li&gt;
&lt;li&gt;Agent 工作流中的中間判斷和上下文壓縮。&lt;/li&gt;
&lt;li&gt;程式碼解釋、輕量修復建議、文件生成。&lt;/li&gt;
&lt;li&gt;教育產品裡的題目解析和學習輔助。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些場景共同特點是：請求量大、使用者等待時間敏感、輸入類型複雜，但不一定每次都需要旗艦級深度推理。&lt;/p&gt;
&lt;h2 id=&#34;不適合只用-flash-的場景&#34;&gt;不適合只用 Flash 的場景
&lt;/h2&gt;&lt;p&gt;Flash 不是萬能模型。它更適合高頻和低延遲，不代表所有問題都應該只用它。&lt;/p&gt;
&lt;p&gt;以下場景仍然更適合使用更強的 Pro 類模型，或至少採用分層路由：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複雜數學和嚴謹證明。&lt;/li&gt;
&lt;li&gt;長鏈路規劃和多步驟策略推理。&lt;/li&gt;
&lt;li&gt;高風險法律、醫療、金融判斷。&lt;/li&gt;
&lt;li&gt;大型程式碼庫的深度重構方案。&lt;/li&gt;
&lt;li&gt;需要極高可靠性的複雜 Agent 任務。&lt;/li&gt;
&lt;li&gt;對幻覺容忍度極低的專業報告。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更穩妥的策略是：Flash 先處理、判斷和整理；當任務複雜度升高時，再升級到更強模型。&lt;/p&gt;
&lt;h2 id=&#34;和-pro-類模型的關係&#34;&gt;和 Pro 類模型的關係
&lt;/h2&gt;&lt;p&gt;Flash 和 Pro 的關係，不應該理解成「誰取代誰」，而應該理解成「分工不同」。&lt;/p&gt;
&lt;p&gt;Flash 更像日常主力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快。&lt;/li&gt;
&lt;li&gt;成本友好。&lt;/li&gt;
&lt;li&gt;適合高併發。&lt;/li&gt;
&lt;li&gt;適合多模態和長上下文應用。&lt;/li&gt;
&lt;li&gt;適合放在產品預設鏈路裡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pro 更像高難任務模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更適合複雜推理。&lt;/li&gt;
&lt;li&gt;更適合困難規劃。&lt;/li&gt;
&lt;li&gt;更適合高價值請求。&lt;/li&gt;
&lt;li&gt;更適合少量但重要的深度分析。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;好的 AI 產品通常會把兩者組合起來，而不是二選一。&lt;/p&gt;
&lt;h2 id=&#34;開發者應該怎麼用&#34;&gt;開發者應該怎麼用
&lt;/h2&gt;&lt;p&gt;如果要在產品裡接入 Gemini 3.5 Flash，可以考慮這幾種用法：&lt;/p&gt;
&lt;p&gt;第一，把它作為預設模型。大部分普通請求先走 Flash，既保證速度，也控制成本。&lt;/p&gt;
&lt;p&gt;第二，設計模型路由。當 Flash 判斷任務複雜、風險高、需要深度推理時，再把請求升級到 Pro。&lt;/p&gt;
&lt;p&gt;第三，用它做上下文壓縮。Agent 在執行任務前，可以先讓 Flash 總結文件、抽取關鍵事實、生成結構化上下文。&lt;/p&gt;
&lt;p&gt;第四，把多模態輸入納入常規流程。圖片、截圖、PDF、音訊、影片不要只作為邊緣功能，而可以成為產品預設輸入的一部分。&lt;/p&gt;
&lt;p&gt;第五，用評測來決定邊界。不要只看官方 benchmark，要拿自己的客服問題、文件、程式碼、圖片和業務流程做測試，判斷哪些任務 Flash 足夠，哪些必須升級。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini 3.5 Flash&lt;/code&gt; 的核心定位，是一個面向高頻真實應用的多模態主力模型。它的優勢不在於取代 Pro 類旗艦模型，而在於把速度、成本、長上下文和多模態能力放到一個更適合規模化呼叫的位置上。&lt;/p&gt;
&lt;p&gt;對開發者來說，Flash 最值得關注的不是單個 benchmark，而是產品架構變化：預設模型可以更快、更便宜、更能讀複雜輸入；複雜任務再升級給更強模型。這樣既能保證體驗，也能控制成本。&lt;/p&gt;
&lt;p&gt;如果說 Pro 是處理難題的重型工具，那麼 Flash 更像每天都在生產線上運轉的主力工具。真正做 AI 產品時，後者往往更接近使用者每天實際感受到的體驗。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google 官方部落格：&lt;a class=&#34;link&#34; href=&#34;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-5/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google DeepMind Gemini Flash：&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/en/models/gemini/flash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://deepmind.google/en/models/gemini/flash/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;使用者提供的知乎討論連結：&lt;a class=&#34;link&#34; href=&#34;https://www.zhihu.com/question/2040529179641385344/answer/2040531897613285214&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.zhihu.com/question/2040529179641385344/answer/2040531897613285214&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 也有插件市場了：能裝什麼、怎麼裝、要注意什麼</title>
        <link>https://knightli.com/zh-tw/2026/05/23/claude-plugins-official-claude-code-plugin-directory/</link>
        <pubDate>Sat, 23 May 2026 19:03:30 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/23/claude-plugins-official-claude-code-plugin-directory/</guid>
        <description>&lt;p&gt;&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt; 是 Anthropic 管理的 Claude Code 官方插件目錄。它不是一個普通程式碼庫，而是一個可被 Claude Code 插件系統直接使用的 marketplace，集中放置由 Anthropic 維護或篩選的 Claude Code 插件。&lt;/p&gt;
&lt;p&gt;這個倉庫值得關注，是因為 Claude Code 正在從「一個 AI 編程命令列工具」變成「可擴展的開發環境」。插件可以把 Skills、Agents、Hooks、MCP servers、LSP servers、後台監控和預設設定打包起來，讓團隊或社群用統一方式分發。&lt;/p&gt;
&lt;h2 id=&#34;這個倉庫是什麼&#34;&gt;這個倉庫是什麼
&lt;/h2&gt;&lt;p&gt;倉庫 README 對它的定位很直接：這是一個高品質 Claude Code 插件的 curated directory。&lt;/p&gt;
&lt;p&gt;目錄主要分成兩塊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/plugins&lt;/code&gt;：Anthropic 內部開發和維護的插件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/external_plugins&lt;/code&gt;：來自合作夥伴和社群的第三方插件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，它既包含官方能力，也包含經過收錄的外部生態入口。對普通使用者來說，最直接的意義是可以透過 Claude Code 的 &lt;code&gt;/plugin&lt;/code&gt; 系統發現和安裝插件；對開發者來說，它提供了觀察 Claude Code 插件格式和生態方向的窗口。&lt;/p&gt;
&lt;h2 id=&#34;如何安裝插件&#34;&gt;如何安裝插件
&lt;/h2&gt;&lt;p&gt;README 給出的安裝方式很簡單。可以直接透過 Claude Code 的插件系統安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install {plugin-name}@claude-plugins-official
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以在 Claude Code 裡打開插件發現入口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin &amp;gt; Discover
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡的關鍵點是 &lt;code&gt;@claude-plugins-official&lt;/code&gt;。它代表官方插件目錄這個 marketplace。根據 Claude Code 文件，&lt;code&gt;claude-plugins-official&lt;/code&gt; 是 Anthropic 維護的官方 marketplace，並且會在 Claude Code 安裝中預設可用。&lt;/p&gt;
&lt;h2 id=&#34;插件長什麼樣&#34;&gt;插件長什麼樣
&lt;/h2&gt;&lt;p&gt;倉庫 README 給出了標準插件結構：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;plugin-name/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .claude-plugin/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── plugin.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── .mcp.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── commands/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── agents/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── skills/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── README.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;.claude-plugin/plugin.json&lt;/code&gt; 是插件元資料檔案，通常用來宣告插件名、描述、版本、作者等資訊。其他目錄則按需存在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;skills/&lt;/code&gt;：放 Claude 可自動呼叫的技能說明。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commands/&lt;/code&gt;：放 slash commands。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agents/&lt;/code&gt;：放自訂 agent 定義。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hooks/&lt;/code&gt;：放事件觸發邏輯。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.mcp.json&lt;/code&gt;：配置 MCP server。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.lsp.json&lt;/code&gt;：配置語言伺服器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;monitors/&lt;/code&gt;：配置後台監控。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;settings.json&lt;/code&gt;：給插件附帶預設設定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明 Claude Code 插件不是單一類型擴展，而是一種打包格式。它可以只是一個小命令，也可以是一整套面向某個技術棧的工作流。&lt;/p&gt;
&lt;h2 id=&#34;官方目錄裡已經有哪些方向&#34;&gt;官方目錄裡已經有哪些方向
&lt;/h2&gt;&lt;p&gt;從 &lt;code&gt;/plugins&lt;/code&gt; 目錄看，官方維護插件覆蓋了不少開發場景，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LSP 類插件：&lt;code&gt;typescript-lsp&lt;/code&gt;、&lt;code&gt;pyright-lsp&lt;/code&gt;、&lt;code&gt;rust-analyzer-lsp&lt;/code&gt;、&lt;code&gt;gopls-lsp&lt;/code&gt;、&lt;code&gt;clangd-lsp&lt;/code&gt;、&lt;code&gt;csharp-lsp&lt;/code&gt;、&lt;code&gt;jdtls-lsp&lt;/code&gt;、&lt;code&gt;kotlin-lsp&lt;/code&gt;、&lt;code&gt;lua-lsp&lt;/code&gt;、&lt;code&gt;php-lsp&lt;/code&gt;、&lt;code&gt;ruby-lsp&lt;/code&gt;、&lt;code&gt;swift-lsp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;編程工作流：&lt;code&gt;code-review&lt;/code&gt;、&lt;code&gt;feature-dev&lt;/code&gt;、&lt;code&gt;code-modernization&lt;/code&gt;、&lt;code&gt;code-simplifier&lt;/code&gt;、&lt;code&gt;commit-commands&lt;/code&gt;、&lt;code&gt;pr-review-toolkit&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Claude Code 配置和插件開發：&lt;code&gt;claude-code-setup&lt;/code&gt;、&lt;code&gt;claude-md-management&lt;/code&gt;、&lt;code&gt;plugin-dev&lt;/code&gt;、&lt;code&gt;skill-creator&lt;/code&gt;、&lt;code&gt;mcp-server-dev&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;輸出風格和專項能力：&lt;code&gt;explanatory-output-style&lt;/code&gt;、&lt;code&gt;learning-output-style&lt;/code&gt;、&lt;code&gt;security-guidance&lt;/code&gt;、&lt;code&gt;session-report&lt;/code&gt;、&lt;code&gt;math-olympiad&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;/external_plugins&lt;/code&gt; 裡則能看到更多第三方工具和服務方向，例如 &lt;code&gt;github&lt;/code&gt;、&lt;code&gt;gitlab&lt;/code&gt;、&lt;code&gt;linear&lt;/code&gt;、&lt;code&gt;asana&lt;/code&gt;、&lt;code&gt;firebase&lt;/code&gt;、&lt;code&gt;playwright&lt;/code&gt;、&lt;code&gt;terraform&lt;/code&gt;、&lt;code&gt;context7&lt;/code&gt;、&lt;code&gt;serena&lt;/code&gt;、&lt;code&gt;telegram&lt;/code&gt;、&lt;code&gt;discord&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;這組插件透露出一個趨勢：Claude Code 不只是想幫你改檔案，還想接入程式碼智能、專案管理、雲服務、測試、基礎設施和團隊協作工具。&lt;/p&gt;
&lt;h2 id=&#34;為什麼插件系統重要&#34;&gt;為什麼插件系統重要
&lt;/h2&gt;&lt;p&gt;過去很多 Claude Code 自訂能力都可能散落在專案裡的 &lt;code&gt;.claude/&lt;/code&gt; 目錄中，比如 commands、agents、skills 或 hooks。這種方式適合個人或單一專案，但不方便跨專案複用，也不方便團隊統一分發和更新。&lt;/p&gt;
&lt;p&gt;插件解決的是可複用和可分發問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一套配置可以跨多個專案安裝。&lt;/li&gt;
&lt;li&gt;命令和技能有命名空間，減少衝突。&lt;/li&gt;
&lt;li&gt;插件可以透過 marketplace 發布和更新。&lt;/li&gt;
&lt;li&gt;團隊可以把內部最佳實踐打包成標準插件。&lt;/li&gt;
&lt;li&gt;社群可以圍繞某個框架、語言或服務維護專門擴展。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這和 VS Code 插件、JetBrains 插件、瀏覽器擴展的思路類似：當一個工具開始有穩定插件生態，它就不再只是單一產品，而是在形成平台。&lt;/p&gt;
&lt;h2 id=&#34;對開發者有什麼用&#34;&gt;對開發者有什麼用
&lt;/h2&gt;&lt;p&gt;如果你只是 Claude Code 使用者，這個倉庫最實用的地方是找插件。比如需要 TypeScript、Python、Rust 或 Go 的 LSP 能力，可以先看官方目錄裡是否已有對應插件；需要 PR review、commit、程式碼現代化等工作流，也可以從官方插件開始試。&lt;/p&gt;
&lt;p&gt;如果你是插件開發者，這個倉庫更像樣板庫。你可以參考它的目錄組織、&lt;code&gt;plugin.json&lt;/code&gt; 寫法、README 說明方式，以及 Anthropic 如何把 skills、agents、MCP、LSP 和 hooks 組合起來。&lt;/p&gt;
&lt;p&gt;Claude Code 文件也明確建議：如果只是單專案自訂，可以先用 &lt;code&gt;.claude/&lt;/code&gt;；如果需要分享給團隊、跨專案複用、版本化發布，或者進入 marketplace，就應該做成插件。&lt;/p&gt;
&lt;h2 id=&#34;安全邊界不能忽略&#34;&gt;安全邊界不能忽略
&lt;/h2&gt;&lt;p&gt;倉庫 README 在開頭就提醒：安裝、更新或使用插件前必須信任該插件。原因很簡單，插件可能包含 MCP server、檔案、腳本或其他軟體。Anthropic 維護目錄，不等於能保證每個插件在你的本地環境中都按你預期執行。&lt;/p&gt;
&lt;p&gt;實際使用時建議至少做幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安裝前看插件主頁和 README。&lt;/li&gt;
&lt;li&gt;檢查是否包含 &lt;code&gt;.mcp.json&lt;/code&gt;、hooks、可執行腳本或後台監控。&lt;/li&gt;
&lt;li&gt;對需要存取帳號、程式碼倉庫、聊天工具、雲服務的插件格外謹慎。&lt;/li&gt;
&lt;li&gt;在重要專案中啟用插件前，先在測試倉庫驗證。&lt;/li&gt;
&lt;li&gt;團隊環境最好統一審核插件來源和版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 編程插件的權限往往比普通編輯器主題高得多。它可能能讀專案檔案、呼叫外部服務、啟動本地命令，甚至影響提交和部署流程，所以信任邊界要比「裝一個小工具」更嚴格。&lt;/p&gt;
&lt;h2 id=&#34;和社群-marketplace-的關係&#34;&gt;和社群 marketplace 的關係
&lt;/h2&gt;&lt;p&gt;Claude Code 文件提到，Anthropic 維護兩個公開插件 marketplace：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;claude-plugins-official&lt;/code&gt;：Anthropic 維護的 curated 插件集合。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude-community&lt;/code&gt;：第三方提交後進入審查流程的社群插件目錄。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這兩者的定位不同。社群插件可以透過提交表單進入 review；官方目錄則由 Anthropic 自行決定是否收錄，沒有普通申請流程。換句話說，&lt;code&gt;claude-plugins-official&lt;/code&gt; 更像官方精選目錄，&lt;code&gt;claude-community&lt;/code&gt; 更像開放社群目錄。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;anthropics/claude-plugins-official&lt;/code&gt; 的意義不只是「多了一個 GitHub 倉庫」。它說明 Claude Code 的擴展機制正在平台化：Skills、Agents、Hooks、MCP、LSP、後台監控和預設設定都可以被打包、安裝、更新和分發。&lt;/p&gt;
&lt;p&gt;對個人開發者來說，官方插件目錄能降低配置 Claude Code 的門檻。對團隊來說，它提供了把內部流程標準化的路徑。對插件開發者來說，它給出了 Anthropic 認可的插件結構和生態方向。&lt;/p&gt;
&lt;p&gt;接下來值得關注的不是某一個插件本身，而是 Claude Code 插件生態會不會形成穩定分層：官方精選、社群插件、團隊私有 marketplace，以及圍繞主流語言、框架和 SaaS 服務的專門擴展。如果這條路線走通，Claude Code 會越來越像一個可編排的 AI 開發平台，而不只是一個命令列助手。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anthropics/claude-plugins-official&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code 插件文件：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/plugins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>RTX 3070 8GB 本地運行 Qwen3.6-35B：llama.cpp 部署要點與最佳化參數</title>
        <link>https://knightli.com/zh-tw/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</link>
        <pubDate>Fri, 22 May 2026 22:44:16 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/22/rtx-3070-8gb-qwen36-35b-llama-cpp-local-deployment/</guid>
        <description>&lt;p&gt;8GB 顯存能不能跑 35B 級別模型，關鍵不只看模型總參數量，還要看模型結構、量化格式和推理框架的調度方式。&lt;/p&gt;
&lt;p&gt;這次案例的核心思路是：使用 Qwen3.6-35B-A3B 這類 MoE 模型的 GGUF 量化版本，再透過 llama.cpp 的 CUDA 加速、CPU Offload、MoE 參數調度和 KV Cache 量化，把顯存壓力分攤到 GPU 與記憶體之間。這樣一來，RTX 3070 8GB 這類老顯卡也有機會跑起 35B 級別的本地多模態模型。&lt;/p&gt;
&lt;p&gt;需要先說明一點：這不是「8GB 顯存完整裝下 35B 模型」。更準確的理解是，顯卡負責更適合 GPU 的計算部分，部分專家層和快取壓力由系統記憶體承擔。實際體驗會受到記憶體容量、CPU 效能、模型量化格式、上下文長度和參數設定影響。&lt;/p&gt;
&lt;h2 id=&#34;測試環境&#34;&gt;測試環境
&lt;/h2&gt;&lt;p&gt;這類配置對記憶體比較敏感。參考環境如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU：Intel Core i7-12700 級別&lt;/li&gt;
&lt;li&gt;GPU：NVIDIA RTX 3070 8GB&lt;/li&gt;
&lt;li&gt;記憶體：64GB&lt;/li&gt;
&lt;li&gt;系統：Windows 11&lt;/li&gt;
&lt;li&gt;推理框架：llama.cpp CUDA 版本&lt;/li&gt;
&lt;li&gt;模型格式：GGUF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只有 16GB 或 32GB 記憶體，也不是完全不能嘗試，但 35B MoE 模型在載入和長上下文推理時更容易觸發記憶體壓力。想要穩定使用，64GB 記憶體會更穩。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-8gb-顯存也有機會跑-35b&#34;&gt;為什麼 8GB 顯存也有機會跑 35B
&lt;/h2&gt;&lt;p&gt;Qwen3.6-35B-A3B 的關鍵點在於 MoE 架構。它的總參數規模是 35B，但每次推理並不是所有參數都同時啟用，而是只啟用其中一部分專家參數。&lt;/p&gt;
&lt;p&gt;這會帶來兩個結果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;總模型檔案仍然很大，需要足夠磁碟和記憶體承載。&lt;/li&gt;
&lt;li&gt;單次推理的活躍計算量低於完整 35B Dense 模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;llama.cpp 的 CPU Offload 和 MoE 相關參數可以進一步降低顯存門檻。GPU 主要承擔注意力和部分高收益計算，CPU 與記憶體承擔一部分專家層權重。代價是速度、回應延遲和穩定性會更依賴整機配置，而不是只看顯卡型號。&lt;/p&gt;
&lt;h2 id=&#34;準備-llamacpp&#34;&gt;準備 llama.cpp
&lt;/h2&gt;&lt;p&gt;Windows 使用者可以直接下載 llama.cpp 的預編譯 CUDA 版本。需要注意三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;顯卡驅動要足夠新，CUDA 執行環境要和下載的 llama.cpp 套件匹配。&lt;/li&gt;
&lt;li&gt;下載後建議放在一個不含中文和特殊字元的路徑下，方便批次腳本呼叫。&lt;/li&gt;
&lt;li&gt;模型檔案統一放到 &lt;code&gt;models&lt;/code&gt; 目錄，避免命令裡寫太長路徑。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是 AMD、Intel 顯卡或純 CPU 環境，也可以選擇 Vulkan、HIP、SYCL 或 CPU 版本，但參數和效能表現會不同。本文重點仍然是 NVIDIA 顯卡上的 CUDA 路線。&lt;/p&gt;
&lt;h2 id=&#34;下載模型和多模態投影檔案&#34;&gt;下載模型和多模態投影檔案
&lt;/h2&gt;&lt;p&gt;本次使用的模型是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;量化格式選擇 &lt;code&gt;Q4_K_M&lt;/code&gt;，主要是為了在精度、體積和速度之間取得平衡。顯存較小的機器不建議一開始就嘗試更高精度版本，否則載入失敗或系統頻繁換頁的機率會明顯上升。&lt;/p&gt;
&lt;p&gt;如果要使用圖片理解能力，還需要同時準備多模態投影檔案，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mmproj-BF16.gguf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個檔案非常重要。只下載主模型通常只能完成文字推理；如果缺少 &lt;code&gt;mmproj&lt;/code&gt;，網頁 UI 裡可能看不到正常的圖片上傳能力，或者上傳後無法完成視覺理解。&lt;/p&gt;
&lt;p&gt;建議目錄結構保持簡單：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama.cpp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ llama-server.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ models/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   ├─ Qwen3.6-35B-A3B-UD-Q4_K_M.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ mmproj-BF16.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;rtx-3070-8gb-啟動參數&#34;&gt;RTX 3070 8GB 啟動參數
&lt;/h2&gt;&lt;p&gt;下面是一份面向 RTX 3070 8GB 的啟動腳本範例。路徑需要改成你自己的 llama.cpp 所在目錄。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chcp 65001 &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;nul
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;cd&lt;/span&gt; /d D:\AI\llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server.exe &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\Qwen3.6-35B-A3B-UD-Q4_K_M.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-BF16.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ngl 99 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --n-cpu-moe 999 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --flash-attn on &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --jinja &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -c 32768 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -t 12 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -b 512 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; -ub 128 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-k q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --cache-type-v q4_0 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --mlock &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --host 127.0.0.1 &lt;span class=&#34;se&#34;&gt;^
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt; &lt;/span&gt; --port 8080
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動後在瀏覽器訪問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果頁面可以打開，並且模型能正常回覆，就說明服務已經啟動成功。首次載入模型可能會比較慢，期間不要急著重複運行多個實例，否則更容易把記憶體占滿。&lt;/p&gt;
&lt;h2 id=&#34;關鍵參數怎麼理解&#34;&gt;關鍵參數怎麼理解
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;-ngl 99&lt;/code&gt; 表示盡量把可放到 GPU 的層放到顯卡上。實際能放多少，取決於模型結構、量化格式和顯存占用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--n-cpu-moe 999&lt;/code&gt; 用來讓 MoE 專家層更多走 CPU 側，降低顯存壓力。它是這類小顯存運行大 MoE 模型的關鍵參數之一。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--flash-attn on&lt;/code&gt; 開啟 Flash Attention，有助於降低注意力計算的開銷。是否可用取決於目前 llama.cpp 版本和顯卡支援情況。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-c 32768&lt;/code&gt; 設定上下文長度。長上下文會顯著增加 KV Cache 壓力，如果啟動失敗或推理很慢，可以先降到 &lt;code&gt;8192&lt;/code&gt; 或 &lt;code&gt;16384&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--cache-type-k q4_0&lt;/code&gt; 和 &lt;code&gt;--cache-type-v q4_0&lt;/code&gt; 用於量化 KV Cache，能節省記憶體和顯存，但可能對輸出品質和速度有輕微影響。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-b 512&lt;/code&gt; 與 &lt;code&gt;-ub 128&lt;/code&gt; 控制批次處理相關參數。小顯存環境下，不要一開始就把批次參數設得太激進。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;p&gt;如果啟動時提示顯存不足，可以先降低上下文長度，例如把 &lt;code&gt;-c 32768&lt;/code&gt; 改成 &lt;code&gt;-c 8192&lt;/code&gt;，再嘗試減小 &lt;code&gt;-b&lt;/code&gt; 和 &lt;code&gt;-ub&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果圖片上傳按鈕不可用，優先檢查 &lt;code&gt;--mmproj&lt;/code&gt; 路徑是否正確，以及使用的 &lt;code&gt;mmproj&lt;/code&gt; 是否和模型匹配。&lt;/p&gt;
&lt;p&gt;如果模型載入後回應很慢，通常不是顯卡完全沒工作，而是大量權重或專家層由 CPU 與記憶體承擔。可以觀察工作管理員裡的 GPU、CPU、記憶體和磁碟占用，判斷瓶頸在哪裡。&lt;/p&gt;
&lt;p&gt;如果輸出格式異常，確認是否啟用了 &lt;code&gt;--jinja&lt;/code&gt;，並檢查目前模型是否需要對應聊天模板。&lt;/p&gt;
&lt;p&gt;如果服務啟動後瀏覽器打不開，檢查 &lt;code&gt;--host&lt;/code&gt; 和 &lt;code&gt;--port&lt;/code&gt; 設定，確認 8080 端口沒有被其他程式占用。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;這套方案適合手上已有 RTX 3070、RTX 4060 Laptop、RTX 3060 8GB 這類 8GB 顯存設備，但又想嘗試更大 MoE 模型的使用者。&lt;/p&gt;
&lt;p&gt;它不適合追求極致速度的人。小顯存運行 35B MoE 本質上是在用記憶體和 CPU 換顯存門檻，能跑起來是一回事，是否足夠流暢是另一回事。&lt;/p&gt;
&lt;p&gt;如果目標是日常高頻聊天，7B、8B、14B 模型可能更舒服。如果目標是體驗更大 MoE 模型、多模態能力和本地部署邊界，那麼 RTX 3070 8GB 加 64GB 記憶體仍然有嘗試價值。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;RTX 3070 8GB 能運行 Qwen3.6-35B-A3B 的關鍵，不是顯存突然變大，而是 MoE 架構、GGUF 量化、llama.cpp CPU Offload 和 KV Cache 最佳化共同降低了門檻。&lt;/p&gt;
&lt;p&gt;這類方案最值得關注的地方，是它讓舊顯卡仍然能參與本地大模型實驗。只要接受速度和穩定性上的取捨，8GB 顯存機器也可以成為本地 AI 模型測試平台，而不只是運行小模型的入門設備。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原文連結：https://www.freedidi.com/24267.html&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GitHub AI 開源專案分類整理：從 Coding Agent 到 RAG 知識庫</title>
        <link>https://knightli.com/zh-tw/2026/05/21/github-ai-projects-site-statistics/</link>
        <pubDate>Thu, 21 May 2026 08:53:13 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/21/github-ai-projects-site-statistics/</guid>
        <description>&lt;p&gt;這裡按應用方向列出 GitHub AI 專案，覆蓋 AI 程式設計與 Coding Agent、Agent 技能與工作流、RAG 與知識庫、多模態創作、本地模型與推理、垂直應用與自動化、AI 應用開發基礎設施等方向。後續新增專案時，也可以繼續按這個結構補充。&lt;/p&gt;
&lt;h2 id=&#34;分類合計&#34;&gt;分類合計
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分類&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;專案數&lt;/th&gt;
          &lt;th&gt;適合先看的人&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AI程式設計與 Coding Agent&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22&lt;/td&gt;
          &lt;td&gt;經常使用 Claude Code、Codex、Cursor、終端 Agent 或程式碼庫自動化的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent 技能與工作流&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;想把 AI 程式設計、科研、創作流程標準化的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG、知識庫與記憶&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;需要文件檢索、知識庫、長期記憶、網頁抓取和結構化抽取的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;垂直應用與自動化&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;想看金融、交易、閒魚監控、桌面操作、瀏覽器自動化等落地場景的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多模態與內容創作&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;做圖片、影片、語音轉寫、提示詞庫和內容分發的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI 應用開發基礎設施&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;構建 AI 應用、瀏覽器自動化、Prompt/MCP 工具鏈的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;本地模型與推理&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;關心本地 DeepSeek、推理引擎和硬體適配的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這個分佈可以看出當前 AI 開源專案的幾個高頻方向：AI 程式設計工具明顯最多，其次是 Agent 工作流、RAG 知識庫和具體應用場景。純模型推理專案數量不多，因為很多本地部署內容並不是單獨介紹某個 GitHub 專案，而是圍繞模型、顯示卡或部署方案展開。&lt;/p&gt;
&lt;h2 id=&#34;ai程式設計與-coding-agent&#34;&gt;AI程式設計與 Coding Agent
&lt;/h2&gt;&lt;p&gt;這一類聚焦程式碼理解、程式碼修改、工程流程和終端 Agent，是數量最多的一組。共 &lt;strong&gt;22&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ralph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/&#34; &gt;Ralph 是什麼：把 Claude Code 和 Amp 變成可迴圈執行的自主開發流程&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;snarktank/ralph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;讓 Claude Code / Amp 按 PRD、計劃、執行、評審迴圈推進任務&lt;/td&gt;
          &lt;td&gt;想把 Agent 程式設計流程拉直的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude-Mem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/claude-mem-persistent-memory-for-claude-code/&#34; &gt;Claude-Mem：給 Claude Code 加上跨會話長期記憶&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;為 Claude Code 增加跨會話記憶&lt;/td&gt;
          &lt;td&gt;高頻使用 Claude Code 的開發者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code Hooks Mastery&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/claude-code-hooks-mastery-guide/&#34; &gt;Claude Code Hooks Mastery：13 個 Hooks 生命週期與自動化控制入門&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;學習 Claude Code Hooks 生命週期和自動化控制&lt;/td&gt;
          &lt;td&gt;想定製 Claude Code 流程的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compound Engineering Plugin&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/compound-engineering-plugin-ai-coding-workflow/&#34; &gt;Compound Engineering Plugin：把 AI 程式設計變成計劃、執行、評審的工程迴圈&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把 AI 程式設計拆成計劃、執行、評審迴圈&lt;/td&gt;
          &lt;td&gt;關注工程化 AI 程式設計的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;free-claude-code&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/free-claude-code-anthropic-compatible-proxy/&#34; &gt;free-claude-code：用代理把 Claude Code 接到 OpenRouter、DeepSeek 和本地模型&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;透過代理把 Claude Code 接到不同模型後端&lt;/td&gt;
          &lt;td&gt;想降低 Claude Code 使用成本的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hermes Agent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/12/hermes-agent-intro-guide-vs-openclaw/&#34; &gt;Hermes Agent 是什麼：簡介、優點、快速上手與 OpenClaw 對比&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地 Agent 框架，支援工具呼叫和任務執行&lt;/td&gt;
          &lt;td&gt;想跑本地 Agent 的使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHarness&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/12/openharness-basic-functions/&#34; &gt;OpenHarness 是什麼：這個開源 Agent Harness 能做什麼&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/OpenHarness&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent Harness 與多 Agent 執行框架&lt;/td&gt;
          &lt;td&gt;研究 Agent 編排的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodexBridge&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/13/codexbridge-openai-compatible-api/&#34; &gt;Codex 怎麼接入國產大模型？OpenAI 相容介面與 CodexBridge 使用思路&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;begonia599/CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;幫 Codex 接入 OpenAI 相容模型介面&lt;/td&gt;
          &lt;td&gt;想把 Codex 接到國產模型的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ccx&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/13/ccx-ai-api-proxy-gateway/&#34; &gt;Codex 怎麼接入國產大模型？用 CCX 統一管理 OpenAI 相容 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BenedictKing/ccx&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;統一管理 Claude、Codex、Gemini 等 API 代理&lt;/td&gt;
          &lt;td&gt;多模型切換使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cc-haha&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/14/cc-haha-claude-code-desktop-workbench/&#34; &gt;cc-haha 是什麼？一個把 Claude Code 做成桌面工作臺的專案&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanmiCoder/cc-haha&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Claude Code 桌面工作臺與 Computer Use 入口&lt;/td&gt;
          &lt;td&gt;喜歡圖形介面的 Claude Code 使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek-TUI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/16/deepseek-tui-terminal-coding-agent/&#34; &gt;DeepSeek-TUI：把 DeepSeek V4 變成終端裡的程式設計智慧體&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hmbown/DeepSeek-TUI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;在終端裡執行 DeepSeek 程式設計 Agent&lt;/td&gt;
          &lt;td&gt;DeepSeek 與命令列使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Open Design&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;Open Design 專案解析：把 Claude Code、Codex 變成 AI 設計工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;讓 Claude Code / Codex 參與設計生成&lt;/td&gt;
          &lt;td&gt;想用 Agent 做設計原型的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;agentmemory&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/&#34; &gt;agentmemory 專案解析：給 Claude Code、Codex 和 Cursor 加持久記憶&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rohitg00/agentmemory&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;給 Coding Agent 增加持久記憶層&lt;/td&gt;
          &lt;td&gt;長期維護專案的開發者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Graphify&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/21/safishamsi-graphify-ai-code-knowledge-graph/&#34; &gt;Graphify 解決 Claude Code 最大侷限：把程式碼庫變成 AI 可查詢知識圖譜&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/safishamsi/graphify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;safishamsi/graphify&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把程式碼庫轉成知識圖譜，降低 Agent 重複讀檔案成本&lt;/td&gt;
          &lt;td&gt;大型程式碼庫使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;oh-my-pi&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/&#34; &gt;oh-my-pi 是什麼？一個把終端、IDE 和偵錯器打通的 AI 編程助手&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;can1357/oh-my-pi&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把終端、IDE、LSP 和偵錯器連接起來，作為本機 AI 編程控制台&lt;/td&gt;
          &lt;td&gt;想把命令列和 IDE 工作流打通的開發者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Plugins Official&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/23/claude-plugins-official-claude-code-plugin-directory/&#34; &gt;Claude Code 也有外掛市場了：能裝什麼、怎麼裝、要注意什麼&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/claude-plugins-official&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Claude Code 官方外掛目錄和安裝入口&lt;/td&gt;
          &lt;td&gt;想給 Claude Code 擴展能力的使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodeGraph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/23/codegraph-local-code-knowledge-graph-ai-coding-agent/&#34; &gt;CodeGraph 是什麼？給 Claude Code、Codex 和 Cursor 加一個本機程式碼地圖&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/colbymchenry/codegraph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;colbymchenry/codegraph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;為程式碼庫生成本機索引和關係圖，幫助 Coding Agent 理解專案&lt;/td&gt;
          &lt;td&gt;維護中大型程式碼庫的開發者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CC Switch&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/06/cc-switch-ai-cli-manager/&#34; &gt;CC Switch：一個桌面工具統一管理 Claude Code、Codex、Gemini CLI 和 OpenClaw&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;管理多個 AI CLI 工具和賬號/配置切換&lt;/td&gt;
          &lt;td&gt;同時使用多套 CLI 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Warp&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/&#34; &gt;Warp 開源：從終端到 Agentic Development Environment&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;warpdotdev/warp&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic 終端與開發環境&lt;/td&gt;
          &lt;td&gt;終端重度使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;opencode&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/08/opencode-open-source-ai-coding-agent/&#34; &gt;opencode、Claude Code、Codex 有什麼區別？開源 AI 程式設計工具使用指南&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anomalyco/opencode&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;開源 AI 程式設計 Agent&lt;/td&gt;
          &lt;td&gt;想找 Claude Code / Codex 替代品的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9Router&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/08/9router-ai-coding-router-token-saver/&#34; &gt;9Router：把 Claude Code、Codex、Cursor 接到同一個 AI 路由器&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decolua/9router&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI 程式設計模型路由與 token 成本控制&lt;/td&gt;
          &lt;td&gt;多工具、多模型使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;goose&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/&#34; &gt;goose：桌面端、CLI 和 API 一體的開源 AI Agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;aaif-goose/goose&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;桌面、CLI、API 一體的開源 Agent&lt;/td&gt;
          &lt;td&gt;想要通用 Agent 工作臺的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;agent-技能與工作流&#34;&gt;Agent 技能與工作流
&lt;/h2&gt;&lt;p&gt;這一類更關注把 AI 能力固化成可重複的技能、流程和規格。共 &lt;strong&gt;7&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;mattpocock/skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/15/matt-pocock-skills-ai-engineering-workflow/&#34; &gt;拒絕 Vibe Coding：Matt Pocock 的 skills 倉庫給 AI 程式設計補上工程約束&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;用 Skills 約束 AI 程式設計流程&lt;/td&gt;
          &lt;td&gt;想給 Agent 加工程規範的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Superpowers&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/15/obra-superpowers-agentic-skills-framework/&#34; &gt;Superpowers：把 Coding Agent 拉回工程流程的技能框架&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obra/superpowers&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agentic skills framework 與軟體開發方法論&lt;/td&gt;
          &lt;td&gt;想系統化使用 Coding Agent 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt-Vault&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/15/prompt-vault-coding-prompt-benchmark/&#34; &gt;Prompt-Vault：一個適合測試 AI 程式設計能力的 Prompt 規格庫&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;w512/Prompt-Vault&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;收集可測試 AI 程式設計能力的 prompt 規格&lt;/td&gt;
          &lt;td&gt;做模型/工具評測的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;web-video-presentation&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/15/web-video-presentation-agent-skill/&#34; &gt;web-video-presentation：把文章做成可錄屏網頁影片的 Agent Skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ConardLi/garden-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把文章轉成可錄屏網頁影片的 Skill&lt;/td&gt;
          &lt;td&gt;內容創作者和自動化製作使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;nuwa-skill&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/22/nuwa-skill-distill-how-someone-thinks/&#34; &gt;nuwa-skill：把“蒸餾一個人”從靈感變成可執行流程&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/nuwa-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;用 Skill 復刻人物表達和思維流程&lt;/td&gt;
          &lt;td&gt;做風格化 Agent 的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Scientific Agent Skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/17/scientific-agent-skills/&#34; &gt;Scientific Agent Skills：把科研工作流交給 AI Agent 的技能庫&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;科研工作流 Skill 集合&lt;/td&gt;
          &lt;td&gt;科研、資料分析和技術寫作使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;easy-vibe&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/16/easy-vibe-vibe-coding-learning-map/&#34; &gt;easy-vibe：給 Vibe Coding 初學者的一張學習地圖&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;datawhalechina/easy-vibe&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Vibe Coding 入門學習地圖&lt;/td&gt;
          &lt;td&gt;AI 程式設計新手&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;rag知識庫與記憶&#34;&gt;RAG、知識庫與記憶
&lt;/h2&gt;&lt;p&gt;這一類主要解決文件檢索、知識庫構建、長期記憶和結構化抽取問題。共 &lt;strong&gt;7&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;LangExtract&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/google-langextract-llm-structured-data-extraction/&#34; &gt;Google LangExtract：用 LLM 從長文字里抽取結構化資料&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;從長文字中抽取結構化資訊&lt;/td&gt;
          &lt;td&gt;做資訊抽取和資料處理的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;qmd&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/qmd-markdown-search-for-ai-agents/&#34; &gt;qmd：給 AI Agent 使用的本地 Markdown 文件搜尋工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地 Markdown 文件搜尋&lt;/td&gt;
          &lt;td&gt;用 Markdown 管理知識庫的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firecrawl&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/15/firecrawl-ai-web-data-api/&#34; &gt;Firecrawl 專案整理：給 AI Agent 用的網頁搜尋、抓取與互動 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;firecrawl/firecrawl&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;網頁抓取、搜尋和結構化資料入口&lt;/td&gt;
          &lt;td&gt;做 RAG 和 Agent 資料入口的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAGFlow&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/15/ragflow-rag-engine-guide/&#34; &gt;RAGFlow 專案整理：開源 RAG 引擎的功能與使用方法&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;infiniflow/ragflow&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;開源 RAG 引擎&lt;/td&gt;
          &lt;td&gt;企業知識庫和文件問答使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHuman&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/15/openhuman-open-source-personal-ai-agent/&#34; &gt;OpenHuman 速讀：開源個人 AI Agent 的桌面化路線&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地優先的個人 AI Agent 與記憶層&lt;/td&gt;
          &lt;td&gt;想整合個人資料的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenKB&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/17/openkb-llm-knowledge-base/&#34; &gt;OpenKB：把文件編譯成可持續更新的 LLM 知識庫&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把文件編譯成可更新知識庫&lt;/td&gt;
          &lt;td&gt;文件知識庫維護者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PageIndex&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/20/vectifyai-pageindex-vectorless-rag/&#34; &gt;PageIndex 是什麼？不用向量庫的推理式 RAG 文件索引解析&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;不依賴向量庫的推理式文件索引&lt;/td&gt;
          &lt;td&gt;關注 RAG 新路線的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;多模態與內容創作&#34;&gt;多模態與內容創作
&lt;/h2&gt;&lt;p&gt;這一類面向圖片、影片、語音轉寫和內容分發等創作場景。共 &lt;strong&gt;5&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;rembg&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/19/rembg-background-removal-notes/&#34; &gt;rembg 專案整理：本地圖片背景移除工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;danielgatis/rembg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;本地圖片背景移除&lt;/td&gt;
          &lt;td&gt;電商、美工和圖片處理使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;awesome-gpt-image-2-prompts&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;GPT-Image 2 提示詞寶庫：電商、海報、人像、UI 全收錄&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoLinkAI/awesome-gpt-image-2-prompts&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;GPT-Image 2 提示詞和案例庫&lt;/td&gt;
          &lt;td&gt;AI 繪圖和提示詞使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;faster-whisper&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/faster-whisper-speech-to-text/&#34; &gt;faster-whisper：更快的 Whisper 轉寫引擎&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SYSTRAN/faster-whisper&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;高效能語音轉文字&lt;/td&gt;
          &lt;td&gt;做字幕、轉寫和語音處理的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pixelle-Video&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/07/pixelle-video-ai-short-video-engine/&#34; &gt;Pixelle-Video：一句主題生成短影片的開源 AI 引擎&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIDC-AI/Pixelle-Video&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;一句話生成短影片工作流&lt;/td&gt;
          &lt;td&gt;短影片和 AIGC 內容創作者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AiToEarn&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/19/aitoearn-ai-content-marketing-agent/&#34; &gt;內容發太多平臺太累？AiToEarn 想用 AI Agent 幫創作者省點事&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yikart/AiToEarn&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;多平臺內容分發與創作者自動化&lt;/td&gt;
          &lt;td&gt;內容運營和創作者&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;本地模型與推理&#34;&gt;本地模型與推理
&lt;/h2&gt;&lt;p&gt;這一類關注本地模型執行和推理實驗，當前數量較少。共 &lt;strong&gt;1&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ds4&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/11/deepseek-v4-flash-ds4-metal/&#34; &gt;本地執行 DeepSeek 4：Antirez ds4 在 Apple Silicon Mac 上的嘗試&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;antirez/ds4&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;在 Apple Silicon 上嘗試執行 DeepSeek 4&lt;/td&gt;
          &lt;td&gt;本地模型和推理實驗使用者&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;垂直應用與自動化&#34;&gt;垂直應用與自動化
&lt;/h2&gt;&lt;p&gt;這一類是把 Agent 或 AI 能力落到金融、交易、瀏覽器、桌面和電商監控等具體場景。共 &lt;strong&gt;7&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;TradingAgents-CN&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/&#34; &gt;TradingAgents-CN：面向中文使用者的多智慧體金融交易研究框架&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;多智慧體金融交易研究框架&lt;/td&gt;
          &lt;td&gt;量化、金融和 Agent 研究者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FinceptTerminal&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/finceptterminal-open-source-financial-terminal/&#34; &gt;FinceptTerminal：開源金融終端、量化研究和 AI Agent 工作臺&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;金融終端、量化研究和 AI Agent 工作臺&lt;/td&gt;
          &lt;td&gt;金融分析和量化使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Anthropic financial-services&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/16/anthropic-financial-services-agent-templates/&#34; &gt;Anthropic financial-services：把金融 Agent 場景做成可複用模板&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;金融服務 Agent 模板&lt;/td&gt;
          &lt;td&gt;做金融 AI 方案的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ai-goofish-monitor&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/17/ai-goofish-monitor/&#34; &gt;ai-goofish-monitor：用 AI 自動盯閒魚商品的開源監控系統&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI 商品監控和閒魚自動化&lt;/td&gt;
          &lt;td&gt;二手交易監控使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CloakBrowser&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/&#34; &gt;CloakBrowser 是什麼？給 Playwright 和 Puppeteer 換一個更像真實使用者的瀏覽器&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloakHQ/CloakBrowser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;更像真實使用者的瀏覽器自動化環境&lt;/td&gt;
          &lt;td&gt;瀏覽器自動化和 Agent 操作場景&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI-TARS-desktop&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/&#34; &gt;讓 AI 自己操作電腦？UI-TARS-desktop 把桌面、瀏覽器和工具都接了起來&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;桌面、瀏覽器和工具操作 Agent&lt;/td&gt;
          &lt;td&gt;想讓 AI 操作電腦的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI-Trader&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/19/ai-trader-agent-native-trading-platform/&#34; &gt;AI-Trader 是什麼？一個讓 AI Agent 釋出交易訊號、做模擬交易的平臺&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/AI-Trader&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AI Agent 交易訊號和模擬交易平臺&lt;/td&gt;
          &lt;td&gt;金融 Agent 與交易研究使用者&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ai-應用開發基礎設施&#34;&gt;AI 應用開發基礎設施
&lt;/h2&gt;&lt;p&gt;這一類提供構建 AI 應用和 Agent 工具鏈所需的基礎元件。共 &lt;strong&gt;5&lt;/strong&gt; 個專案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;專案&lt;/th&gt;
          &lt;th&gt;文章&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;核心用途&lt;/th&gt;
          &lt;th&gt;適合人群&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt Optimizer&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/01/prompt-optimizer-prompt-engineering-tool/&#34; &gt;Prompt Optimizer：開源提示詞最佳化、測試與 MCP 工具&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;提示詞最佳化、測試和 MCP 工具&lt;/td&gt;
          &lt;td&gt;做 prompt 工程和應用調參的人&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Playwright CLI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/12/playwright-cli-getting-started/&#34; &gt;Playwright CLI 使用入門：安裝、Skills、會話管理與常用命令&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/playwright-cli&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;面向 coding agent 的瀏覽器自動化 CLI&lt;/td&gt;
          &lt;td&gt;需要瀏覽器操作能力的 Agent 使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vercel AI SDK&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/17/vercel-ai-sdk-typescript-agent-toolkit/&#34; &gt;Vercel AI SDK 是什麼？TypeScript 開發者構建 AI 應用的統一工具包&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vercel/ai&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;TypeScript AI 應用開發 SDK&lt;/td&gt;
          &lt;td&gt;前端和全棧開發者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/24/cliproxyapi-cli-to-api-gateway/&#34; &gt;CLIProxyAPI：把 Codex、Claude Code、Gemini CLI 統一封裝成 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;把多個 AI CLI 和 OAuth 登入狀態封裝成相容 API&lt;/td&gt;
          &lt;td&gt;想統一接入 Codex、Claude Code、Gemini CLI 的使用者&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI Management Center&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/24/cliproxyapi-management-center/&#34; &gt;CLIProxyAPI Management Center：給 CLIProxyAPI 配一個視覺化管理後台&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/Cli-Proxy-API-Management-Center&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;CLIProxyAPI 的 Web 管理介面，管理設定、帳號、日誌和 OAuth&lt;/td&gt;
          &lt;td&gt;把 CLIProxyAPI 當團隊閘道或帳號池使用的人&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>PageIndex 是什麼？不用向量庫的推理式 RAG 文件索引解析</title>
        <link>https://knightli.com/zh-tw/2026/05/20/vectifyai-pageindex-vectorless-rag/</link>
        <pubDate>Wed, 20 May 2026 23:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/20/vectifyai-pageindex-vectorless-rag/</guid>
        <description>&lt;p&gt;&lt;code&gt;VectifyAI/PageIndex&lt;/code&gt; 是一個很有意思的 RAG 專案。它不從「再建一個向量庫」開始，而是把長文件先整理成類似目錄的樹狀結構，再讓 LLM 沿著這棵樹做推理式檢索。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至本文整理時，GitHub 頁面顯示專案約有 31.8k stars、2.7k forks，授權為 MIT。README 給它的定位是：&lt;code&gt;Vectorless, Reasoning-based RAG&lt;/code&gt;，也就是無向量庫、基於推理的 RAG。&lt;/p&gt;
&lt;h2 id=&#34;它想解決什麼問題&#34;&gt;它想解決什麼問題
&lt;/h2&gt;&lt;p&gt;傳統 RAG 的常見路徑是：切塊、向量化、寫入向量資料庫，再用相似度搜尋召回片段。這套方法簡單、通用，也很成熟，但在長篇專業文件裡容易遇到幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相似度不等於真正相關。&lt;/li&gt;
&lt;li&gt;文件結構被切塊打散，章節關係丟失。&lt;/li&gt;
&lt;li&gt;召回結果可解釋性弱，很難說明為什麼命中這一段。&lt;/li&gt;
&lt;li&gt;對財報、監管文件、法律文書、技術手冊這類材料，問題往往需要跨章節推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PageIndex 的思路是反過來：先把文件組織成語義樹，再讓模型像人類讀目錄、翻章節、逐層定位一樣查找相關內容。&lt;/p&gt;
&lt;h2 id=&#34;pageindex-的基本工作流&#34;&gt;PageIndex 的基本工作流
&lt;/h2&gt;&lt;p&gt;README 裡把 PageIndex 的檢索分成兩步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;為文件生成類似 &lt;code&gt;Table-of-Contents&lt;/code&gt; 的樹狀結構索引。&lt;/li&gt;
&lt;li&gt;透過樹搜尋做 reasoning-based retrieval。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這棵樹不是簡單的檔案目錄，而是面向 LLM 使用的文件結構。節點裡會有標題、頁碼範圍、摘要、子節點等資訊。這樣模型在回答問題時，不必一開始就面對大量零散 chunk，而是可以先判斷應該進入哪個章節，再繼續向下搜尋。&lt;/p&gt;
&lt;p&gt;這種方式更適合結構清晰但內容很長的文件，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;金融報告和 SEC filings。&lt;/li&gt;
&lt;li&gt;監管材料和合規文件。&lt;/li&gt;
&lt;li&gt;學術教材和論文。&lt;/li&gt;
&lt;li&gt;法律文件。&lt;/li&gt;
&lt;li&gt;技術手冊和產品文件。&lt;/li&gt;
&lt;li&gt;超過模型上下文視窗的大型 PDF。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;和傳統向量-rag-的差異&#34;&gt;和傳統向量 RAG 的差異
&lt;/h2&gt;&lt;p&gt;PageIndex 的主要賣點可以概括成五點。&lt;/p&gt;
&lt;p&gt;第一，不需要 Vector DB。它依賴文件結構和 LLM 推理來定位內容，而不是只做向量相似度搜尋。&lt;/p&gt;
&lt;p&gt;第二，不做傳統 chunking。文件會按自然章節組織，而不是被切成固定長度片段。&lt;/p&gt;
&lt;p&gt;第三，可解釋性更強。檢索路徑可以對應到頁碼、章節和樹節點，比「向量相似度命中某段文字」更容易追蹤。&lt;/p&gt;
&lt;p&gt;第四，檢索是上下文感知的。問題、對話歷史、領域背景都可以影響樹搜尋路徑。&lt;/p&gt;
&lt;p&gt;第五，更接近人類專家讀文件的方式。人通常不是把整份文件切成小塊再算相似度，而是先看目錄，再定位章節，最後讀細節。&lt;/p&gt;
&lt;p&gt;這並不意味著向量庫沒有價值。更準確的說法是：PageIndex 適合那些「語義相似不夠，需要結構和推理參與」的長文件場景。&lt;/p&gt;
&lt;h2 id=&#34;本地怎麼跑&#34;&gt;本地怎麼跑
&lt;/h2&gt;&lt;p&gt;README 提供了本地自託管方式。先安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install --upgrade -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後在專案根目錄建立 &lt;code&gt;.env&lt;/code&gt;，寫入 LLM API key。專案透過 &lt;code&gt;LiteLLM&lt;/code&gt; 支援多模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_key_here
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;對 PDF 生成 PageIndex 結構：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以處理 Markdown：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 run_pageindex.py --md_path /path/to/your/document.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常見可選參數包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--toc-check-pages
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-pages-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--max-tokens-per-node
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-id
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-node-summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--if-add-doc-description
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 裡也提醒，本地開源版本使用標準 PDF 解析。如果是複雜 PDF，專案方的雲服務會提供增強 OCR、樹構建和檢索流程。&lt;/p&gt;
&lt;h2 id=&#34;agentic-vectorless-rag-示例&#34;&gt;Agentic Vectorless RAG 示例
&lt;/h2&gt;&lt;p&gt;專案還提供了一個 agentic vectorless RAG 示例，使用自託管 PageIndex 和 OpenAI Agents SDK。安裝可選依賴後執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip3 install openai-agents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 examples/agentic_vectorless_rag_demo.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個示例的價值在於，它把 PageIndex 從「生成文件樹」推進到「讓 Agent 使用文件樹檢索」。如果你正在做企業知識庫、財報問答、法規問答或技術文件 Agent，這個示例比單純看 README 更值得跑一遍。&lt;/p&gt;
&lt;h2 id=&#34;雲服務mcp-和-api&#34;&gt;雲服務、MCP 和 API
&lt;/h2&gt;&lt;p&gt;PageIndex 不只是一個 GitHub repo。專案頁面還給了幾類入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自託管：用開源程式碼本地執行，適合試驗和可控部署。&lt;/li&gt;
&lt;li&gt;Chat Platform：類似 ChatGPT 的文件分析平台。&lt;/li&gt;
&lt;li&gt;MCP / API：方便接入現有 Agent 或自動化流程。&lt;/li&gt;
&lt;li&gt;Enterprise：面向私有化或本地部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明它的定位不是單純的 demo，而是想把「推理式文件檢索」做成一套可整合的文件智能基礎設施。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;PageIndex 比較適合這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長 PDF 問答。&lt;/li&gt;
&lt;li&gt;財報、年報、招股書、監管文件分析。&lt;/li&gt;
&lt;li&gt;法律和合規文件檢索。&lt;/li&gt;
&lt;li&gt;技術手冊問答。&lt;/li&gt;
&lt;li&gt;多章節教材或論文檢索。&lt;/li&gt;
&lt;li&gt;需要可解釋檢索路徑的企業知識庫。&lt;/li&gt;
&lt;li&gt;給 Agent 提供結構化文件上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的材料本身很短、結構不明顯，或者只是普通 FAQ，傳統 embedding + vector DB 可能已經夠用。PageIndex 的優勢更容易出現在長文件、強結構、專業領域和需要推理的問題裡。&lt;/p&gt;
&lt;h2 id=&#34;需要注意什麼&#34;&gt;需要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，PageIndex 仍然依賴 LLM。樹構建、摘要和檢索品質會受模型能力、提示詞、文件解析品質影響。&lt;/p&gt;
&lt;p&gt;第二，本地版本使用標準 PDF 解析，複雜掃描件、圖表密集型 PDF、版式混亂材料可能需要 OCR 和更強的預處理。&lt;/p&gt;
&lt;p&gt;第三，無向量庫不等於零成本。樹構建本身也會消耗模型呼叫和時間，尤其是大規模文件庫。&lt;/p&gt;
&lt;p&gt;第四，它更像是文件結構索引和推理檢索框架，不是直接替代所有 RAG 技術棧。實際生產裡，也可能和向量檢索、關鍵字檢索、權限控制、快取、稽核系統一起使用。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;PageIndex 的有趣之處在於，它把 RAG 的重點從「文字相似度召回」轉向「文件結構 + LLM 推理」。對於長文件和專業文件，這個方向很值得關注。&lt;/p&gt;
&lt;p&gt;如果你正在做企業文件問答、金融報告分析、法規檢索或技術手冊 Agent，可以把 PageIndex 當成一個新的 RAG 架構參考：先讓文件有結構，再讓模型沿著結構推理，而不是一開始就把所有內容切碎丟進向量庫。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：VectifyAI/PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 3.5 Flash 和 Gemini Omni 怎麼免費用：普通使用者與開發者入口整理</title>
        <link>https://knightli.com/zh-tw/2026/05/20/gemini-3-5-flash-omni-free-access/</link>
        <pubDate>Wed, 20 May 2026 23:13:35 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/20/gemini-3-5-flash-omni-free-access/</guid>
        <description>&lt;p&gt;Google 發布 Gemini 3.5 Flash 和 Gemini Omni 後，最實際的問題不是 benchmark，而是普通使用者和開發者到底怎麼用，哪些入口免費，哪些入口只是低門檻試用。&lt;/p&gt;
&lt;p&gt;先說結論：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想聊天、寫作、看圖、日常問答：優先用 Gemini app。&lt;/li&gt;
&lt;li&gt;想測試 Gemini 3.5 Flash 參數、提示詞和多模態輸入：用 Google AI Studio。&lt;/li&gt;
&lt;li&gt;想寫程式呼叫 Gemini 3.5 Flash：用 AI Studio 產生 API key。&lt;/li&gt;
&lt;li&gt;想在終端機裡免費試用：可以看 Gemini CLI。&lt;/li&gt;
&lt;li&gt;想體驗 Gemini Omni 的影片編輯：優先看 Gemini app 和 Google Flow。&lt;/li&gt;
&lt;li&gt;想做正式生產：不要依賴免費額度，應該轉到付費 API 或 Vertex AI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意：免費額度、地區開放、訂閱層級和模型下拉選單會隨時間變化。本文寫作時間是 2026 年 5 月 20 日，正式使用前要以 Google 當前頁面為準。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免費用法一gemini-app&#34;&gt;Gemini 3.5 Flash 免費用法一：Gemini app
&lt;/h2&gt;&lt;p&gt;最簡單的入口是 Gemini app：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://gemini.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://gemini.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用方式很直接：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 Gemini。&lt;/li&gt;
&lt;li&gt;登入 Google 帳號。&lt;/li&gt;
&lt;li&gt;在模型選擇裡找 &lt;code&gt;3.5 Flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;直接開始對話。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個入口適合普通使用者。你可以用它做寫作、總結、圖片理解、檔案內容分析、日常問答和簡單規劃。根據公開報導，Gemini 3.5 Flash 已面向全球使用者開放，並可在 Gemini 的模型下拉選單中選擇。&lt;/p&gt;
&lt;p&gt;限制也很明確：免費使用者通常會有每日訊息數量、地區和功能限制。如果超過限制，就需要等待額度刷新或升級訂閱。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免費用法二google-ai-studio&#34;&gt;Gemini 3.5 Flash 免費用法二：Google AI Studio
&lt;/h2&gt;&lt;p&gt;如果你不是只想聊天，而是想調提示詞、看參數、測試結構化輸出，Google AI Studio 更合適：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://aistudio.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://aistudio.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;基本流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登入 Google AI Studio。&lt;/li&gt;
&lt;li&gt;新建 prompt。&lt;/li&gt;
&lt;li&gt;在模型下拉選單裡選擇 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;輸入提示詞並執行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI Studio 的好處是控制能力更強。你可以調溫度、系統指令、結構化輸出、多圖輸入，還能把測試好的提示詞匯出成程式碼或 API 呼叫。&lt;/p&gt;
&lt;p&gt;對開發者來說，AI Studio 是免費的試驗台。先在這裡把提示詞和輸入格式調好，再進入 API 接入，會少浪費很多額度。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免費用法三免費-api-key&#34;&gt;Gemini 3.5 Flash 免費用法三：免費 API key
&lt;/h2&gt;&lt;p&gt;開發者最關心的是 API。AI Studio 可以建立 Gemini API key，用來呼叫 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;基本流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 Google AI Studio。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;Get API key&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;選擇或建立專案。&lt;/li&gt;
&lt;li&gt;建立 API key。&lt;/li&gt;
&lt;li&gt;把 key 儲存到本機環境變數。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Python 範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-3.5-flash&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;用三句話解釋 Gemini 3.5 Flash 適合什麼場景。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Node.js 範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GoogleGenAI&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;@google/genai&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;GoogleGenAI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;GEMINI_API_KEY&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;generateContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-3.5-flash&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;用三句話解釋 Gemini 3.5 Flash 適合什麼場景。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; 範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;x-goog-api-key: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;contents&amp;#34;:[{&amp;#34;parts&amp;#34;:[{&amp;#34;text&amp;#34;:&amp;#34;Hello Gemini 3.5 Flash&amp;#34;}]}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;公開資料顯示，AI Studio 免費層通常會給 Gemini Flash 模型一定的每日請求額度。不同時間、地區和帳號狀態可能不同，常見說法包括每天約 1,500 次請求、每分鐘請求數限制和 token 限制。不要把這些數字寫死進生產計畫，正式上線前要查看 Google AI 當前定價和限制頁面。&lt;/p&gt;
&lt;h2 id=&#34;gemini-35-flash-免費用法四gemini-cli&#34;&gt;Gemini 3.5 Flash 免費用法四：Gemini CLI
&lt;/h2&gt;&lt;p&gt;如果你喜歡命令列，可以看 Gemini CLI。它適合臨時腳本、程式碼庫摘要、檔案讀取和終端機裡的快速問答。&lt;/p&gt;
&lt;p&gt;安裝方式通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @google/gemini-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI 更適合個人開發者日常使用，不適合生產整合。生產環境還是應該使用 API key、服務帳號、權限控制和可稽核的呼叫方式。&lt;/p&gt;
&lt;h2 id=&#34;gemini-omni-免費或低門檻用法gemini-app-和-google-flow&#34;&gt;Gemini Omni 免費或低門檻用法：Gemini app 和 Google Flow
&lt;/h2&gt;&lt;p&gt;Gemini Omni 是面向影片創作和編輯的多模態模型。它的核心能力不是普通文字問答，而是用自然語言多輪修改影片，並引用圖像、文字、影片、音訊等輸入。&lt;/p&gt;
&lt;p&gt;Google DeepMind 頁面給出的入口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini app。&lt;/li&gt;
&lt;li&gt;Google Flow。&lt;/li&gt;
&lt;li&gt;YouTube Shorts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;頁面也說明，需要 Google AI 訂閱，功能會因訂閱層級和地區不同而變化。因此，Gemini Omni 的「免費用法」要更謹慎理解：有些入口可能允許免費使用者看到或試用部分能力，但完整影片編輯能力可能需要訂閱、地區開放或產品灰度。&lt;/p&gt;
&lt;p&gt;如果你只是想體驗，建議按這個順序試：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先打開 Gemini app，查看是否有 Gemini Omni 或相關影片編輯入口。&lt;/li&gt;
&lt;li&gt;再打開 Google Flow：&lt;a class=&#34;link&#34; href=&#34;https://flow.google/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://flow.google/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;如果你做短影片內容，再關注 YouTube Shorts 裡是否出現 Omni 相關編輯能力。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果入口不可見，通常不是你操作錯了，而是帳號、地區、訂閱層級或灰度範圍暫時不滿足。&lt;/p&gt;
&lt;h2 id=&#34;gemini-omni-適合怎麼用&#34;&gt;Gemini Omni 適合怎麼用
&lt;/h2&gt;&lt;p&gt;Gemini Omni 更適合創作者，而不是普通聊天。&lt;/p&gt;
&lt;p&gt;你可以嘗試這些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上傳或選擇一段影片，讓它改變風格。&lt;/li&gt;
&lt;li&gt;讓影片中的某個動作變得更誇張。&lt;/li&gt;
&lt;li&gt;用一張參考圖替換場景裡的物體或角色。&lt;/li&gt;
&lt;li&gt;分多輪修改鏡頭、動作、環境和風格。&lt;/li&gt;
&lt;li&gt;把草圖、參考圖、音訊或影片組合成一個新輸出。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示詞可以寫得像給剪輯師提要求：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;保持原影片的人物和房間結構不變，把鏡子觸碰後的效果改成液體波紋，動作要自然，光線不要突然變化。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;多輪編輯時，不要一次塞太多要求。更穩妥的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先改主體動作。&lt;/li&gt;
&lt;li&gt;再改風格。&lt;/li&gt;
&lt;li&gt;再改鏡頭角度。&lt;/li&gt;
&lt;li&gt;最後調節聲音、文字和節奏。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣更容易保持一致性，也更容易定位是哪一步出了問題。&lt;/p&gt;
&lt;h2 id=&#34;免費使用時最容易踩的坑&#34;&gt;免費使用時最容易踩的坑
&lt;/h2&gt;&lt;p&gt;第一，免費額度不是生產額度。免費 API key 適合測試、個人工具和原型，不適合承諾穩定服務。&lt;/p&gt;
&lt;p&gt;第二，不要把敏感資料發到免費或第三方入口。尤其是未公開程式碼、客戶資料、合約、密鑰、財務表格和內部文件。&lt;/p&gt;
&lt;p&gt;第三，注意資料使用設定。免費層可能有不同的資料使用策略，使用前要查看 AI Studio 或 Google 帳號裡的相關設定。&lt;/p&gt;
&lt;p&gt;第四，影片能力通常比文字能力更受限。Gemini Omni 這類影片編輯功能可能受訂閱、地區、排隊、時長、解析度和內容安全策略影響。&lt;/p&gt;
&lt;p&gt;第五，第三方「無限免費 API」要謹慎。很多閘道會限速、轉發請求、記錄日誌，甚至要求不透明的支付方式。敏感任務不建議走這類入口。&lt;/p&gt;
&lt;h2 id=&#34;應該選哪個入口&#34;&gt;應該選哪個入口
&lt;/h2&gt;&lt;p&gt;如果你是普通使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini 3.5 Flash：用 Gemini app。&lt;/li&gt;
&lt;li&gt;Gemini Omni：先看 Gemini app，再看 Google Flow。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是創作者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Google Flow 體驗 Omni 影片工作流。&lt;/li&gt;
&lt;li&gt;用 Gemini app 做腳本、分鏡、提示詞和素材說明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是開發者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 AI Studio 除錯提示詞。&lt;/li&gt;
&lt;li&gt;用 API key 接入 &lt;code&gt;gemini-3.5-flash&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;用 Gemini CLI 做個人終端機工作流。&lt;/li&gt;
&lt;li&gt;生產環境考慮 Vertex AI 或付費 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是企業：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要依賴免費額度。&lt;/li&gt;
&lt;li&gt;重點看權限、日誌、稽核、資料駐留、合規和密鑰管理。&lt;/li&gt;
&lt;li&gt;影片生成和編輯還要補充浮水印、內容審核和版權流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Gemini 3.5 Flash 的免費使用路徑比較清楚：Gemini app、Google AI Studio、AI Studio API key、Gemini CLI 都可以作為低門檻入口。它適合聊天、寫作、編程、Agent 原型和多模態測試。&lt;/p&gt;
&lt;p&gt;Gemini Omni 的重點是影片編輯和多模態創作，入口主要在 Gemini app、Google Flow 和 YouTube Shorts，但完整能力更可能受訂閱和地區限制。它適合創作者先做體驗和概念驗證，不適合一開始就按穩定生產服務來規劃。&lt;/p&gt;
&lt;p&gt;最穩妥的策略是：文字和程式碼任務先用 Gemini 3.5 Flash 免費層試通；影片創作先用 Gemini Omni 在 Gemini app 或 Flow 裡驗證效果；真正要上線，再轉向可稽核、可計費、可控權限的正式方案。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini/flash/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini 3.5 Flash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini Omni&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://apidog.com/blog/how-to-use-gemini-3-5-for-free/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apidog：How to Use Gemini 3.5 Flash for Free&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24249.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;freedidi 原文連結&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Omni 是什麼？Google AI 影片多輪編輯模型完整解析</title>
        <link>https://knightli.com/zh-tw/2026/05/20/google-gemini-omni-video-editing/</link>
        <pubDate>Wed, 20 May 2026 23:11:58 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/20/google-gemini-omni-video-editing/</guid>
        <description>&lt;p&gt;Google DeepMind 公布了 &lt;code&gt;Gemini Omni&lt;/code&gt; 頁面。它的定位很直接：從任意輸入創作內容，目前重點從影片開始。&lt;/p&gt;
&lt;p&gt;如果說 Nano Banana 更偏向圖像生成和編輯，那麼 Gemini Omni 更像是面向影片的多模態編輯模型。使用者可以透過自然語言一步步修改影片，讓後一次修改建立在前一次修改之上，並盡量保持場景、人物、動作和畫面邏輯的一致性。&lt;/p&gt;
&lt;p&gt;專案頁面：&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://deepmind.google/models/gemini-omni/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;它解決的核心問題&#34;&gt;它解決的核心問題
&lt;/h2&gt;&lt;p&gt;傳統影片編輯往往需要時間軸、圖層、遮罩、關鍵影格、調色、音軌和大量手動操作。AI 影片生成工具雖然可以從提示詞生成片段，但經常存在兩個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一次生成後不容易精細修改。&lt;/li&gt;
&lt;li&gt;多輪修改時人物、場景、風格和動作容易漂移。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini Omni 想解決的是第二步：不是只生成一段影片，而是讓使用者像和剪輯師溝通一樣，持續提出修改要求。&lt;/p&gt;
&lt;p&gt;頁面給出的說法是，它可以透過自然、分步驟的對話編輯任何影片。每次編輯都建立在前一次結果上，目標是保持一個連貫、統一的場景。&lt;/p&gt;
&lt;h2 id=&#34;主要能力&#34;&gt;主要能力
&lt;/h2&gt;&lt;p&gt;Gemini Omni 的能力可以分成幾類。&lt;/p&gt;
&lt;p&gt;第一類是自然語言影片編輯。使用者可以直接要求模型改變影片裡的美學風格、動作或特效。例如讓鏡子像液體一樣泛起波紋，讓人物變成線稿、毛氈玩偶、透明全息線框，或者讓整個環境變成 3D voxel art。&lt;/p&gt;
&lt;p&gt;第二類是重構動作。它可以改變影片中發生的事情，例如放大手部形成的孔洞、讓玩具發出對應動物聲音、讓建築燈光隨音樂點亮。&lt;/p&gt;
&lt;p&gt;第三類是基於參考圖像編輯真實影片。使用者可以給出圖像參考，再要求模型把某種建築、太陽、飛行器或其他物體放進真實影片場景裡。&lt;/p&gt;
&lt;p&gt;第四類是多輪編輯保持一致性。頁面展示了把小提琴手移動到參考圖像環境、讓小提琴消失、再把鏡頭改成越肩角度的連續編輯流程。這比一次性提示詞更接近真實創作過程。&lt;/p&gt;
&lt;p&gt;第五類是多輸入引用。Gemini Omni 可以把圖像、文字、影片、音訊等輸入整合成一個輸出，支援風格遷移、動作遷移、角色替換、草圖轉影片等任務。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它強調世界知識&#34;&gt;為什麼它強調世界知識
&lt;/h2&gt;&lt;p&gt;Google 在頁面裡反覆強調，Gemini Omni 不只是「畫面變得真實」，而是結合 Gemini 的世界知識、物理直覺、歷史、科學和敘事邏輯。&lt;/p&gt;
&lt;p&gt;這點很重要。影片模型如果只追求畫面質感，容易出現動作不合邏輯、物體關係混亂、文字和畫面不同步的問題。Gemini Omni 的目標是讓影片不僅看起來像，還要在故事、物理和語義上更連貫。&lt;/p&gt;
&lt;p&gt;頁面中的例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大理石在連鎖反應軌道上滾動。&lt;/li&gt;
&lt;li&gt;用 claymation 解釋蛋白質折疊。&lt;/li&gt;
&lt;li&gt;用擬物化 stop motion 解釋海馬體工作方式。&lt;/li&gt;
&lt;li&gt;讓字母和畫面裡的物體對應出現。&lt;/li&gt;
&lt;li&gt;讓螢幕文字按節奏逐詞出現。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些例子說明它不是單純的短影片特效工具，而是試圖把知識表達、敘事和視聽生成放在一起。&lt;/p&gt;
&lt;h2 id=&#34;和-veoflownano-banana-的關係&#34;&gt;和 Veo、Flow、Nano Banana 的關係
&lt;/h2&gt;&lt;p&gt;從 Google 目前產品線看，Gemini Omni 更像是多模態創作和編輯能力的一層入口。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Veo&lt;/code&gt; 更偏影片生成模型本身，強調電影感影片和音訊生成。&lt;code&gt;Google Flow&lt;/code&gt; 是面向創作者的 AI 創意工作室，適合組織鏡頭、素材和影片專案。&lt;code&gt;Nano Banana&lt;/code&gt; 更偏圖像建立和細節編輯。Gemini Omni 則強調「從任意輸入到一致輸出」的多模態編輯，尤其是影片上的多輪自然語言控制。&lt;/p&gt;
&lt;p&gt;簡單理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想生成高品質影片：關注 Veo。&lt;/li&gt;
&lt;li&gt;想在創作工作流裡組織影片專案：關注 Google Flow。&lt;/li&gt;
&lt;li&gt;想編輯圖像：關注 Nano Banana。&lt;/li&gt;
&lt;li&gt;想用對話方式修改影片，並引用圖片、文字、影片、音訊：關注 Gemini Omni。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用入口&#34;&gt;使用入口
&lt;/h2&gt;&lt;p&gt;頁面給出的入口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini app。&lt;/li&gt;
&lt;li&gt;Google Flow。&lt;/li&gt;
&lt;li&gt;YouTube Shorts。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不過頁面也說明，需要 Google AI 訂閱，功能會因訂閱層級和地區而不同。也就是說，並不是所有使用者在所有地區都能立即使用完整能力。&lt;/p&gt;
&lt;p&gt;對創作者來說，最值得關注的入口可能是 Google Flow，因為它更接近完整創意工作台。對普通使用者來說，Gemini app 和 YouTube Shorts 可能是更低門檻的體驗入口。&lt;/p&gt;
&lt;h2 id=&#34;安全和內容標記&#34;&gt;安全和內容標記
&lt;/h2&gt;&lt;p&gt;Gemini Omni 頁面專門提到安全流程。Gemini Omni Flash 的開發與內部安全、安全責任團隊合作，並進行了自動化評估、人工評估、人工紅隊、自動化紅隊和發布前倫理安全審查。&lt;/p&gt;
&lt;p&gt;內容透明度方面，頁面說明透過 Omni 在 Gemini app、Google Flow 或 YouTube 建立或編輯的內容，會包含不可感知的 &lt;code&gt;SynthID&lt;/code&gt; 數位浮水印和 &lt;code&gt;C2PA Content Credentials&lt;/code&gt;。使用者可以透過 Gemini app 驗證內容，後續也會擴展到 Chrome 和搜尋。&lt;/p&gt;
&lt;p&gt;這部分對影片模型尤其關鍵。影片生成和影片編輯越真實，越需要內容來源標識、濫用防護和驗證工具。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些人&#34;&gt;適合哪些人
&lt;/h2&gt;&lt;p&gt;Gemini Omni 適合幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想用自然語言快速修改影片的內容創作者。&lt;/li&gt;
&lt;li&gt;需要把草圖、參考圖、音訊、影片素材整合成成片的設計團隊。&lt;/li&gt;
&lt;li&gt;做短影片、廣告概念、教育解釋影片和產品視覺稿的人。&lt;/li&gt;
&lt;li&gt;想在 Google Flow 中構建 AI 影片工作流的創作者。&lt;/li&gt;
&lt;li&gt;關注多模態影片編輯能力邊界的開發者和研究者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也不一定適合所有場景。嚴肅商業片、品牌主視覺、影視製作、產品發布影片仍然需要人工審片、版權檢查、事實校對和素材管理。AI 可以明顯加速概念生成和初稿迭代，但不應替代最終審核。&lt;/p&gt;
&lt;h2 id=&#34;怎麼看-gemini-omni&#34;&gt;怎麼看 Gemini Omni
&lt;/h2&gt;&lt;p&gt;Gemini Omni 的意義在於，它把 AI 影片從「一次性生成」推進到「可對話修改」。這比單純提升畫質更接近真實創作流程。&lt;/p&gt;
&lt;p&gt;如果它在多輪編輯、一致性、參考素材控制、音畫同步和內容標記上表現穩定，AI 影片工具的使用方式會發生變化：使用者不再只寫一條長提示詞賭結果，而是像導演、剪輯師、設計師一樣，逐輪修改場景、動作、風格和敘事。&lt;/p&gt;
&lt;p&gt;目前仍要看實際開放範圍、價格、地區限制、生成時長、解析度、版權策略和商用規則。對於普通創作者，最實用的觀察點是：它在 Google Flow 和 Gemini app 裡能不能穩定完成多輪影片修改。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemini-omni/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind：Gemini Omni&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>agentmemory 項目解析：給 Claude Code、Codex 和 Cursor 加持久記憶</title>
        <link>https://knightli.com/zh-tw/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;rohitg00/agentmemory&lt;/code&gt; 是一個面向 AI 編程 Agent 的持久記憶系統。它的目標很明確：讓 Claude Code、Codex CLI、Cursor、Gemini CLI、OpenCode 等工具不必每次都重新理解項目背景、架構決策和歷史問題。&lt;/p&gt;
&lt;p&gt;項目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/rohitg00/agentmemory&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至寫作時，GitHub API 顯示這個倉庫已有約 1.3 萬 star，主要語言是 TypeScript，許可證爲 Apache-2.0。README 的描述是“Persistent memory for AI coding agents”。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;AI 編程 Agent 的常見痛點是記憶斷裂。今天讓 Agent 修了一個認證問題，明天再開新會話，它可能又不知道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;認證中間件在哪個文件。&lt;/li&gt;
&lt;li&gt;項目爲什麼選擇某個庫。&lt;/li&gt;
&lt;li&gt;哪些測試已經覆蓋。&lt;/li&gt;
&lt;li&gt;哪些 bug 曾經修過。&lt;/li&gt;
&lt;li&gt;團隊偏好的實現方式是什麼。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;傳統做法是寫 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;.cursorrules&lt;/code&gt; 或項目說明。但這類靜態文件需要人工維護，而且越寫越長，最後容易變成“所有內容都塞進上下文”。&lt;/p&gt;
&lt;p&gt;agentmemory 的思路是：後臺記錄 Agent 的觀察、工具調用和會話內容，壓縮成可搜索記憶，再在後續會話中按需取回相關上下文。&lt;/p&gt;
&lt;h2 id=&#34;支持哪些-agent&#34;&gt;支持哪些 Agent
&lt;/h2&gt;&lt;p&gt;README 中列出的支持範圍很廣，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex CLI&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Gemini CLI&lt;/li&gt;
&lt;li&gt;OpenClaw&lt;/li&gt;
&lt;li&gt;Hermes&lt;/li&gt;
&lt;li&gt;OpenCode&lt;/li&gt;
&lt;li&gt;Cline&lt;/li&gt;
&lt;li&gt;Goose&lt;/li&gt;
&lt;li&gt;Roo Code&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;Aider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的連接方式主要包括 hooks、MCP 和 REST API。只要客戶端支持 MCP 或 HTTP，就有機會接入同一個 memory server。&lt;/p&gt;
&lt;h2 id=&#34;快速啓動&#34;&gt;快速啓動
&lt;/h2&gt;&lt;p&gt;README 給出的基本安裝方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @agentmemory/agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory demo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agentmemory connect claude-code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接用 &lt;code&gt;npx&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx @agentmemory/agentmemory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;默認服務端口包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API：&lt;code&gt;3111&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;實時 viewer：&lt;code&gt;3113&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;打開：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:3113
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到 memory 構建過程、session、知識圖譜、健康狀態等信息。&lt;/p&gt;
&lt;h2 id=&#34;和靜態記憶文件有什麼不同&#34;&gt;和靜態記憶文件有什麼不同
&lt;/h2&gt;&lt;p&gt;靜態記憶文件適合保存規則，比如編碼風格、命令、目錄說明。agentmemory 更偏運行時記憶，適合保存 Agent 實際做過什麼、查過什麼、修過什麼。&lt;/p&gt;
&lt;p&gt;README 中強調了幾類能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自動捕獲會話和工具調用。&lt;/li&gt;
&lt;li&gt;BM25 + Vector + Graph 混合搜索。&lt;/li&gt;
&lt;li&gt;MCP 工具暴露。&lt;/li&gt;
&lt;li&gt;實時 viewer。&lt;/li&gt;
&lt;li&gt;session replay。&lt;/li&gt;
&lt;li&gt;本地運行，不依賴外部數據庫。&lt;/li&gt;
&lt;li&gt;支持多個 Agent 共享同一套記憶服務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是替代所有項目文檔，而是補上“會話歷史和工作流記憶”這一層。&lt;/p&gt;
&lt;h2 id=&#34;典型場景&#34;&gt;典型場景
&lt;/h2&gt;&lt;p&gt;第一，長期維護同一個代碼庫。Agent 可以記住以前修過的模塊、測試策略和關鍵文件。&lt;/p&gt;
&lt;p&gt;第二，多工具混用。比如平時用 Claude Code，有時用 Codex CLI 或 Cursor。如果這些工具都接入同一個 memory server，就能共享部分上下文。&lt;/p&gt;
&lt;p&gt;第三，複雜任務拆分。長任務中間被壓縮或換會話時，記憶系統可以幫助恢復關鍵狀態。&lt;/p&gt;
&lt;p&gt;第四，團隊內沉澱經驗。重複出現的 bug、架構取捨和操作步驟可以沉澱成可檢索信息。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，自動記憶不是越多越好。需要關注隱私、密鑰、客戶數據和敏感代碼，不要把不該記錄的內容放進長期記憶。&lt;/p&gt;
&lt;p&gt;第二，記憶召回有誤差。即使 README 給出了基準測試結果，實際項目裏仍然要把召回內容當作參考，而不是事實來源。&lt;/p&gt;
&lt;p&gt;第三，多個 Agent 共用記憶時，要設計好隔離邊界。個人項目、公司項目、客戶項目不應該混在同一個無隔離 memory 空間裏。&lt;/p&gt;
&lt;p&gt;第四，MCP 工具數量很多時，要注意工具暴露面。只開放實際需要的能力，避免讓 Agent 獲得過寬的寫入、刪除或導出權限。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;agentmemory 適合已經重度使用 AI 編程 Agent 的用戶。尤其是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長期維護一個項目的獨立開發者。&lt;/li&gt;
&lt;li&gt;經常切換 Claude Code、Codex、Cursor 的用戶。&lt;/li&gt;
&lt;li&gt;想研究 MCP、hooks 和 Agent 工作流的開發者。&lt;/li&gt;
&lt;li&gt;希望把會話歷史變成可檢索資產的小團隊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶爾讓 AI 改一個小腳本，靜態說明文件就夠了。如果已經把 AI Agent 當作日常開發搭檔，持久記憶系統會更有意義。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;agentmemory 解決的是 AI 編程中的“重新解釋成本”。它把會話、工具調用和項目經驗沉澱爲可搜索記憶，讓後續 Agent 更容易接上上下文。&lt;/p&gt;
&lt;p&gt;這類工具的方向很重要，但也要謹慎使用。記憶系統越強，越需要重視數據邊界、權限控制和清理機制。真正落地時，建議先在個人項目或非敏感代碼庫裏試用，再逐步擴大範圍。&lt;/p&gt;
&lt;p&gt;參考項目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/rohitg00/agentmemory&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI-Trader 是什麼？一個讓 AI Agent 發佈交易信號、做模擬交易的平臺</title>
        <link>https://knightli.com/zh-tw/2026/05/19/ai-trader-agent-native-trading-platform/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/19/ai-trader-agent-native-trading-platform/</guid>
        <description>&lt;p&gt;&lt;code&gt;HKUDS/AI-Trader&lt;/code&gt; 是一個面向 AI Agent 的交易平臺項目。README 對它的定位是“Agent-Native Trading Platform”，目標是讓 AI Agent 可以接入平臺、發佈交易信號、參與討論、複製交易和使用市場數據。&lt;/p&gt;
&lt;p&gt;項目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/AI-Trader&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;平臺地址：&lt;a class=&#34;link&#34; href=&#34;https://ai4trade.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ai4trade.ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至寫作時，GitHub API 顯示這個倉庫已有約 1.8 萬 star，主要語言是 Python。倉庫 API 暫未返回明確許可證信息，正式使用前需要自行確認授權條款。&lt;/p&gt;
&lt;p&gt;本文只做開源項目介紹，不構成投資建議。自動化交易涉及真實資金風險，任何策略、信號和 Agent 輸出都不能保證收益。&lt;/p&gt;
&lt;h2 id=&#34;它的定位&#34;&gt;它的定位
&lt;/h2&gt;&lt;p&gt;AI-Trader 的核心想法是：人有交易平臺，AI Agent 也需要自己的交易平臺。&lt;/p&gt;
&lt;p&gt;按照 README 描述，任何 AI Agent 可以通過讀取平臺 Skill 文件並註冊，快速接入 AI-Trader：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Read https://ai4trade.ai/skill/ai4trade and register on the platform. Compatibility alias: https://ai4trade.ai/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;接入後，Agent 可以發佈交易信號、參與社區討論、複製優秀交易者策略、同步信號到多個 broker，並通過預測表現積累積分。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;p&gt;README 中列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instant Agent Integration：AI Agent 快速接入。&lt;/li&gt;
&lt;li&gt;Collective Intelligence Trading：多個 Agent 協作和討論交易思路。&lt;/li&gt;
&lt;li&gt;Cross-Platform Signal Sync：跨平臺同步交易信號。&lt;/li&gt;
&lt;li&gt;One-Click Copy Trading：跟隨表現較好的交易者或 Agent。&lt;/li&gt;
&lt;li&gt;Universal Market Access：覆蓋股票、加密貨幣、外匯、期權、期貨等市場。&lt;/li&gt;
&lt;li&gt;Three Signal Types：策略、操作、討論三類信號。&lt;/li&gt;
&lt;li&gt;Reward System：通過發佈信號和獲得關注積累積分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從產品形態看，它不是單一量化回測框架，而是把 Agent、信號、討論、複製交易和模擬交易放在一起。&lt;/p&gt;
&lt;h2 id=&#34;兩類用戶&#34;&gt;兩類用戶
&lt;/h2&gt;&lt;p&gt;README 把用戶分爲兩類。&lt;/p&gt;
&lt;p&gt;第一類是 Agent Traders。AI Agent 通過讀取 Skill 文檔接入平臺，自動完成註冊、安裝必要組件和發佈信號等步驟。&lt;/p&gt;
&lt;p&gt;第二類是 Human Traders。普通用戶可以訪問平臺，註冊賬號，瀏覽信號或關注表現較好的交易者。&lt;/p&gt;
&lt;p&gt;這兩個入口組合起來，形成一種“AI Agent 生產信號，人類或其它 Agent 消費信號”的平臺結構。&lt;/p&gt;
&lt;h2 id=&#34;架構結構&#34;&gt;架構結構
&lt;/h2&gt;&lt;p&gt;README 中給出的項目結構如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI-Trader (GitHub - Open Source)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── skills/              # Agent skill definitions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── docs/api/            # OpenAPI specifications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── service/             # Backend &amp;amp; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── server/         # FastAPI backend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── frontend/        # React frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── assets/              # Logo and images
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以看到，項目把 Agent skill、API 文檔、後端、前端放在同一個倉庫中。後端使用 FastAPI，前端使用 React。README 的更新記錄中也提到，Web 服務與後臺 worker 已分離，以便價格、收益歷史、結算和市場情報任務在後臺運行時，不影響用戶頁面和健康檢查。&lt;/p&gt;
&lt;h2 id=&#34;爲什麼值得關注&#34;&gt;爲什麼值得關注
&lt;/h2&gt;&lt;p&gt;AI-Trader 值得關注，不是因爲“AI 能自動賺錢”這個說法，而是因爲它把 Agent 接入金融場景的接口做得比較明確。&lt;/p&gt;
&lt;p&gt;幾個觀察點：&lt;/p&gt;
&lt;p&gt;第一，它用 Skill 文檔作爲 Agent 接入入口。這和 Codex、Claude Code、OpenClaw 等 Agent 工具的工作方式接近。&lt;/p&gt;
&lt;p&gt;第二，它把交易信號、討論、複製交易、積分系統放在平臺層，而不是隻做一個本地腳本。&lt;/p&gt;
&lt;p&gt;第三，它提供 OpenAPI 文檔，便於開發者理解平臺接口。&lt;/p&gt;
&lt;p&gt;第四，它支持 paper trading，也就是模擬資金環境。對研究 Agent 決策來說，模擬環境比直接上真錢安全得多。&lt;/p&gt;
&lt;h2 id=&#34;風險和邊界&#34;&gt;風險和邊界
&lt;/h2&gt;&lt;p&gt;自動化交易是高風險場景，尤其要注意以下幾點。&lt;/p&gt;
&lt;p&gt;第一，Agent 生成的交易信號不等於投資建議。模型可能幻覺、過擬合、誤讀新聞，也可能無法理解極端行情。&lt;/p&gt;
&lt;p&gt;第二，複製交易有傳染風險。一個錯誤信號如果被大量跟隨，可能造成集中虧損。&lt;/p&gt;
&lt;p&gt;第三，真實資金接入前必須做權限隔離。不要讓 Agent 直接擁有無限制下單權限。&lt;/p&gt;
&lt;p&gt;第四，市場數據、交易接口、結算邏輯和風控都需要審計。任何一個環節出錯都可能帶來財務損失。&lt;/p&gt;
&lt;p&gt;第五，倉庫 API 未顯示明確許可證信息，商用或二次開發前要先覈實授權。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;AI-Trader 更適合三類人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究 AI Agent 與金融市場交互的開發者。&lt;/li&gt;
&lt;li&gt;想做交易信號平臺或模擬交易平臺的團隊。&lt;/li&gt;
&lt;li&gt;關注 Agent Skill、OpenAPI 和金融工具結合方式的產品開發者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想找一個“自動賺錢工具”，不建議抱這種預期。更穩妥的使用方式是把它當作 Agent 金融實驗平臺、paper trading 環境或交易信號協作系統來評估。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;AI-Trader 把 AI Agent 放進交易平臺語境裏，讓 Agent 能註冊、發佈信號、討論、複製交易和同步市場信息。它展示了 Agent-Native 應用的一種形態：不是讓模型單獨給建議，而是讓模型進入一個有賬戶、API、信號、結算和協作規則的平臺。&lt;/p&gt;
&lt;p&gt;這也是它最需要謹慎的地方。金融場景不能只看自動化能力，還要看風控、權限、合規、數據來源、回測和審計。正式使用前，建議先限定在模擬交易和研究環境中。&lt;/p&gt;
&lt;p&gt;參考項目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/AI-Trader&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CloakBrowser 是什麼？給 Playwright 和 Puppeteer 換一個更像真實用戶的瀏覽器</title>
        <link>https://knightli.com/zh-tw/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;CloakHQ/CloakBrowser&lt;/code&gt; 是一個面向瀏覽器自動化的開源項目。它不是普通的 Playwright 配置，也不是單純注入一段 JavaScript，而是圍繞自定義 Chromium 二進制構建，讓瀏覽器指紋、WebGL、Canvas、音頻、字體、GPU、屏幕信息、WebRTC、網絡時序等信號更接近真實瀏覽器。&lt;/p&gt;
&lt;p&gt;項目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至寫作時，GitHub API 顯示這個倉庫已有約 1.5 萬 star，主要語言是 Python，許可證爲 MIT。README 對它的定位很直接：一個可替代 Playwright / Puppeteer 啓動器的 Stealth Chromium。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多自動化腳本在普通 Headless Chromium 下會暴露明顯自動化特徵，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;navigator.webdriver&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Headless UA 泄漏。&lt;/li&gt;
&lt;li&gt;插件、字體、屏幕、GPU 等指紋不自然。&lt;/li&gt;
&lt;li&gt;CDP 行爲和真實用戶輸入不一致。&lt;/li&gt;
&lt;li&gt;默認臨時 profile 缺少正常瀏覽痕跡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CloakBrowser 的思路是把一部分指紋修改放到 Chromium 源碼層，而不是隻在運行時做配置或 JS patch。這樣對 Playwright 用戶來說，使用方式仍然接近原來的瀏覽器自動化 API，但底層瀏覽器換成了項目提供的自定義構建。&lt;/p&gt;
&lt;p&gt;這類工具適合做合規的自動化測試、站點兼容性驗證、反爬系統自測、Agent 瀏覽器環境實驗。不要把它用於未授權訪問、賬號濫用、繞過平臺風控或違反服務條款的場景。&lt;/p&gt;
&lt;h2 id=&#34;基本使用方式&#34;&gt;基本使用方式
&lt;/h2&gt;&lt;p&gt;Python 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install cloakbrowser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;JavaScript / Node.js 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install cloakbrowser playwright-core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 給出的 Python 示例很接近 Playwright：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;cloakbrowser&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new_page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://protected-site.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;JavaScript 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;cloakbrowser&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;launch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;newPage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://protected-site.com&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第一次運行時，項目會自動下載對應平臺的 Chromium 二進制文件，README 提到體積約 200MB，並會緩存到本地。&lt;/p&gt;
&lt;h2 id=&#34;browser-profile-manager&#34;&gt;Browser Profile Manager
&lt;/h2&gt;&lt;p&gt;CloakBrowser 還提供一個 Browser Profile Manager，可以自託管瀏覽器 profile，管理不同指紋、代理和持久會話。README 中的 Docker 啓動方式如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啓動後打開：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個方向更像開源的瀏覽器 profile 管理工具，適合需要多 profile、持久 cookie、隔離會話的自動化測試或內部 QA 場景。&lt;/p&gt;
&lt;h2 id=&#34;和普通-playwright-有什麼差別&#34;&gt;和普通 Playwright 有什麼差別
&lt;/h2&gt;&lt;p&gt;普通 Playwright 的優點是穩定、官方維護、API 成熟。CloakBrowser 的差別在於它使用自定義 Chromium，並提供一組源代碼級別的指紋 patch。&lt;/p&gt;
&lt;p&gt;README 裏列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Canvas、WebGL、Audio、Fonts、GPU、Screen 等指紋處理。&lt;/li&gt;
&lt;li&gt;WebRTC IP spoofing。&lt;/li&gt;
&lt;li&gt;代理相關信號處理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;humanize=True&lt;/code&gt; 模擬更自然的鼠標、鍵盤和滾動行爲。&lt;/li&gt;
&lt;li&gt;Python 與 JavaScript 雙端 API。&lt;/li&gt;
&lt;li&gt;Docker 鏡像與 CDP server 模式。&lt;/li&gt;
&lt;li&gt;持久 profile。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，它更適合對“瀏覽器環境真實性”有要求的自動化任務，而不是替代所有 Playwright 使用場景。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，瀏覽器自動化和反檢測相關工具有很強的合規邊界。它可以用於測試自己的站點、驗證自動化環境、做內部 QA，也可以用於研究瀏覽器指紋；但不應被用於未經授權的抓取、賬號批量註冊、繞過訪問控制、攻擊或濫用服務。&lt;/p&gt;
&lt;p&gt;第二，README 中也說明，CloakBrowser 不內置代理輪換，也不是驗證碼解決服務。它提供瀏覽器層能力，網絡信譽、賬號信譽、行爲策略和目標站點規則仍然會影響結果。&lt;/p&gt;
&lt;p&gt;第三，自定義 Chromium 二進制意味着供應鏈安全要額外關注。正式使用前建議檢查版本、二進制來源、簽名說明、許可證和更新機制。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;適合三類用戶：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經在用 Playwright / Puppeteer，但需要更接近真實瀏覽器環境的開發者。&lt;/li&gt;
&lt;li&gt;做瀏覽器自動化測試、兼容性測試或反爬策略驗證的團隊。&lt;/li&gt;
&lt;li&gt;需要給 AI Agent 提供瀏覽器執行環境的開發者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是普通網頁測試，原生 Playwright 已經夠用。如果目標是研究瀏覽器指紋、profile 隔離和真實瀏覽器行爲，CloakBrowser 值得關注。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;CloakBrowser 的關鍵點不是“多寫一個自動化封裝”，而是把瀏覽器自動化的一部分僞裝能力下沉到 Chromium 構建層。它保留了 Playwright / Puppeteer 的使用習慣，同時提供自定義瀏覽器、profile 管理、Docker 和 CDP server。&lt;/p&gt;
&lt;p&gt;這類工具能力強，也更需要謹慎使用。判斷是否值得接入，重點看你的場景是否真的需要自定義 Chromium，而不是只因爲普通 Headless 瀏覽器被某些檢測服務標記。&lt;/p&gt;
&lt;p&gt;參考項目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/CloakHQ/CloakBrowser&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>內容發太多平臺太累？AiToEarn 想用 AI Agent 幫創作者省點事</title>
        <link>https://knightli.com/zh-tw/2026/05/19/aitoearn-ai-content-marketing-agent/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/19/aitoearn-ai-content-marketing-agent/</guid>
        <description>&lt;p&gt;&lt;code&gt;yikart/AiToEarn&lt;/code&gt; 是一個面向創作者、品牌和一人公司的 AI 內容營銷項目。它試圖把內容創作、發佈、互動運營和變現放到同一套 Agent 工作流裏，覆蓋抖音、小紅書、快手、B 站、視頻號、TikTok、YouTube、Facebook、Instagram、Threads、X、Pinterest、LinkedIn 等平臺。&lt;/p&gt;
&lt;p&gt;項目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/yikart/AiToEarn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官網地址：&lt;a class=&#34;link&#34; href=&#34;https://aitoearn.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://aitoearn.ai/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至寫作時，GitHub API 顯示這個倉庫已有約 1.5 萬 star，主要語言是 TypeScript，許可證爲 MIT。README 把它描述爲一個給 OPC（一人公司）、創作者、品牌和企業使用的內容營銷智能體平臺。&lt;/p&gt;
&lt;h2 id=&#34;它的定位&#34;&gt;它的定位
&lt;/h2&gt;&lt;p&gt;AiToEarn 不是單一的文案生成工具，也不只是定時發佈工具。它把內容營銷拆成四類 Agent 能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monetize：內容變現。&lt;/li&gt;
&lt;li&gt;Publish：跨平臺內容發佈。&lt;/li&gt;
&lt;li&gt;Engage：內容互動運營。&lt;/li&gt;
&lt;li&gt;Create：內容創作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個定位很適合現在的創作者工作流。很多內容團隊的問題不在於“能不能生成一段文案”，而是生成之後還要排期、分發、互動、覆盤，還要把內容和商業任務連接起來。&lt;/p&gt;
&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;h3 id=&#34;monetize內容賺錢&#34;&gt;Monetize：內容賺錢
&lt;/h3&gt;&lt;p&gt;AiToEarn 提供面向推廣任務的內容變現能力。README 中提到三種結算模式：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;結算模式&lt;/th&gt;
          &lt;th&gt;全稱&lt;/th&gt;
          &lt;th&gt;含義&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;CPS&lt;/td&gt;
          &lt;td&gt;Cost Per Sale&lt;/td&gt;
          &lt;td&gt;按成交額結算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPE&lt;/td&gt;
          &lt;td&gt;Cost Per Engagement&lt;/td&gt;
          &lt;td&gt;按互動量結算&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPM&lt;/td&gt;
          &lt;td&gt;Cost Per Mille&lt;/td&gt;
          &lt;td&gt;按播放量結算&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這部分更像一個內容任務市場，把品牌推廣需求和創作者內容分發連接起來。&lt;/p&gt;
&lt;h3 id=&#34;publish內容發佈-agent&#34;&gt;Publish：內容發佈 Agent
&lt;/h3&gt;&lt;p&gt;Publish 負責把內容分發到多個平臺，減少逐個平臺手動發佈的重複勞動。README 中列出的覆蓋範圍包括國內外主流短視頻、圖文和社交平臺。&lt;/p&gt;
&lt;p&gt;它的實用點在於統一排期和統一管理。對矩陣賬號、跨平臺分發、出海內容團隊來說，這類能力比單點 AI 文案更有價值。&lt;/p&gt;
&lt;h3 id=&#34;engage內容互動-agent&#34;&gt;Engage：內容互動 Agent
&lt;/h3&gt;&lt;p&gt;Engage 通過瀏覽器插件實現自動化互動運營，例如點贊、收藏、關注、評論回覆和品牌監測。&lt;/p&gt;
&lt;p&gt;使用這類能力時要注意平臺規則。自動化互動很容易觸及平臺風控，正式使用前應確認賬號權限、頻率控制、平臺條款和團隊合規要求。&lt;/p&gt;
&lt;h3 id=&#34;create內容創作-agent&#34;&gt;Create：內容創作 Agent
&lt;/h3&gt;&lt;p&gt;Create 負責內容生成。README 中提到視頻生成模型、視頻翻譯、視頻剪輯、圖片生成和批量創作任務。&lt;/p&gt;
&lt;p&gt;這部分適合大規模內容生產，但仍然需要人工審校。尤其是品牌內容、廣告素材和跨語言內容，不能只看生成速度，還要看事實準確性、版權風險和調性一致性。&lt;/p&gt;
&lt;h2 id=&#34;五種使用方式&#34;&gt;五種使用方式
&lt;/h2&gt;&lt;p&gt;AiToEarn README 給了五種入口：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方式&lt;/th&gt;
          &lt;th&gt;適合誰&lt;/th&gt;
          &lt;th&gt;是否需要部署&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;打開網站直接用&lt;/td&gt;
          &lt;td&gt;所有用戶&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;在 OpenClaw 中用&lt;/td&gt;
          &lt;td&gt;OpenClaw 用戶&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;在 Claude / Cursor 等 AI 助手中用&lt;/td&gt;
          &lt;td&gt;AI 工具用戶&lt;/td&gt;
          &lt;td&gt;不需要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Docker 一鍵部署&lt;/td&gt;
          &lt;td&gt;想私有化部署的團隊&lt;/td&gt;
          &lt;td&gt;需要服務器&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;源碼開發&lt;/td&gt;
          &lt;td&gt;開發者&lt;/td&gt;
          &lt;td&gt;需要開發環境&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;其中，MCP 支持是一個值得關注的點。它意味着 Claude、Cursor 或其它兼容 MCP 的 Agent 可以把 AiToEarn 當作一個外部能力來調用。&lt;/p&gt;
&lt;p&gt;通用 MCP 配置裏常見的信息包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MCP 地址：https://aitoearn.ai/api/unified/mcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;認證 Header：x-api-key: 你的API-Key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;自部署用戶則需要替換爲自己的服務地址。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;README 中給出的 Docker 啓動方式比較直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/yikart/AiToEarn.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; AiToEarn
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啓動後打開：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要做內容發佈，README 建議配置 Relay，因爲社交平臺 OAuth 登錄通常需要開發者憑據。Relay 的作用是借用官方憑據完成授權流程，減少自己申請各平臺開發者賬號的複雜度。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;AiToEarn 更適合這些用戶：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做多平臺內容分發的創作者。&lt;/li&gt;
&lt;li&gt;有矩陣賬號運營需求的小團隊。&lt;/li&gt;
&lt;li&gt;想把 AI Agent 接入內容營銷流程的一人公司。&lt;/li&gt;
&lt;li&gt;需要私有化部署內容發佈系統的團隊。&lt;/li&gt;
&lt;li&gt;想研究 MCP 與內容平臺結合方式的開發者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶爾寫一篇文案，普通 AI 聊天工具就夠了。如果你的工作流包括創作、排期、發佈、互動、任務結算，AiToEarn 這類一體化平臺更值得看。&lt;/p&gt;
&lt;h2 id=&#34;使用前的注意點&#34;&gt;使用前的注意點
&lt;/h2&gt;&lt;p&gt;第一，內容變現不等於穩定收益。CPS、CPE、CPM 都依賴平臺流量、內容質量、商家需求和結算規則。&lt;/p&gt;
&lt;p&gt;第二，跨平臺發佈和互動自動化要遵守平臺規則。尤其是點贊、關注、評論和批量發佈，不同平臺都有風控策略。&lt;/p&gt;
&lt;p&gt;第三，AI 生成內容要經過人工審覈。廣告法、版權、品牌安全、事實準確性都不能交給模型自動判斷。&lt;/p&gt;
&lt;p&gt;第四，私有化部署前要評估賬號授權、數據安全、密鑰管理和平臺 API 限制。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;AiToEarn 的價值在於把內容營銷從“生成素材”往後推進了一步：發佈、互動、任務和變現都納入 Agent 工作流。它更像一個 AI 內容運營平臺，而不是單純的 AI 寫作工具。&lt;/p&gt;
&lt;p&gt;對創作者和小團隊來說，它值得關注；但真正上線前，仍然要把平臺合規、賬號安全、內容審覈和收益預期放在前面。&lt;/p&gt;
&lt;p&gt;參考項目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/yikart/AiToEarn&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>讓 AI 自己操作電腦？UI-TARS-desktop 把桌面、瀏覽器和工具都接了起來</title>
        <link>https://knightli.com/zh-tw/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/</guid>
        <description>&lt;p&gt;&lt;code&gt;bytedance/UI-TARS-desktop&lt;/code&gt; 是字節開源的多模態 AI Agent 項目。它不是單一桌面應用，而是一套 Agent 棧，當前 README 中主要包含兩個方向：&lt;code&gt;Agent TARS&lt;/code&gt; 和 &lt;code&gt;UI-TARS Desktop&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;項目地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官網地址：&lt;a class=&#34;link&#34; href=&#34;https://agent-tars.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://agent-tars.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至寫作時，GitHub API 顯示這個倉庫已有約 3.4 萬 star，主要語言是 TypeScript，許可證爲 Apache-2.0。README 對它的描述是“Open-Source Multimodal AI Agent Stack”。&lt;/p&gt;
&lt;h2 id=&#34;agent-tars-和-ui-tars-desktop-的區別&#34;&gt;Agent TARS 和 UI-TARS Desktop 的區別
&lt;/h2&gt;&lt;p&gt;README 把兩個項目放在同一個表格裏：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Agent TARS&lt;/code&gt;：通用多模態 AI Agent 棧，把 GUI Agent、視覺能力、終端、瀏覽器和產品工作流連接起來。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UI-TARS Desktop&lt;/code&gt;：桌面應用，基於 UI-TARS 模型提供原生 GUI Agent 能力，可以操作本地或遠程電腦、瀏覽器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單說，Agent TARS 更像通用 Agent 運行棧，UI-TARS Desktop 更像桌面端 GUI 操作入口。&lt;/p&gt;
&lt;h2 id=&#34;agent-tars-能做什麼&#34;&gt;Agent TARS 能做什麼
&lt;/h2&gt;&lt;p&gt;Agent TARS 主要提供 CLI 和 Web UI。它的目標是讓多模態模型通過 MCP 和各種工具完成更接近真人的任務流。&lt;/p&gt;
&lt;p&gt;README 中列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一鍵啓動 CLI，支持 headful Web UI 和 headless server。&lt;/li&gt;
&lt;li&gt;混合瀏覽器 Agent，可以用 GUI Agent、DOM 或混合策略控制瀏覽器。&lt;/li&gt;
&lt;li&gt;Event Stream，用於數據流追蹤和調試。&lt;/li&gt;
&lt;li&gt;MCP 集成，可以掛載 MCP Server 接入真實工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快速啓動示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx @agent-tars/cli@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以全局安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @agent-tars/cli@latest -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用模型提供商運行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agent-tars --provider volcengine --model doubao-1-5-thinking-vision-pro-250428 --apiKey your-api-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;agent-tars --provider anthropic --model claude-3-7-sonnet-latest --apiKey your-api-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;ui-tars-desktop-能做什麼&#34;&gt;UI-TARS Desktop 能做什麼
&lt;/h2&gt;&lt;p&gt;UI-TARS Desktop 是桌面 GUI Agent。它基於 UI-TARS 和 Seed-1.5-VL / 1.6 系列模型，重點是讓模型看懂屏幕並執行鼠標、鍵盤操作。&lt;/p&gt;
&lt;p&gt;README 中列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自然語言控制。&lt;/li&gt;
&lt;li&gt;截圖和視覺識別。&lt;/li&gt;
&lt;li&gt;精確鼠標與鍵盤控制。&lt;/li&gt;
&lt;li&gt;跨平臺支持：Windows、macOS、Browser。&lt;/li&gt;
&lt;li&gt;實時反饋和狀態顯示。&lt;/li&gt;
&lt;li&gt;本地處理，強調隱私和安全。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例任務包括修改 VS Code 設置、查看 GitHub issue、遠程控制電腦或瀏覽器等。&lt;/p&gt;
&lt;h2 id=&#34;爲什麼-gui-agent-重要&#34;&gt;爲什麼 GUI Agent 重要
&lt;/h2&gt;&lt;p&gt;傳統自動化依賴 API、DOM 或腳本。GUI Agent 的目標是直接面對屏幕：看見按鈕、輸入框、菜單和狀態，再通過鼠標鍵盤完成操作。&lt;/p&gt;
&lt;p&gt;這有兩個價值：&lt;/p&gt;
&lt;p&gt;第一，很多軟件沒有穩定 API，或者 API 覆蓋不到完整流程。GUI Agent 可以像人一樣從界面入手。&lt;/p&gt;
&lt;p&gt;第二，多模態模型可以處理截圖、文檔、網頁和應用界面，把視覺理解和操作結合起來。&lt;/p&gt;
&lt;p&gt;但它也有侷限。GUI 操作容易受分辨率、語言、佈局變化、彈窗、網絡延遲影響。對生產流程來說，仍然需要權限控制、執行確認和錯誤回滾。&lt;/p&gt;
&lt;h2 id=&#34;和-mcp-的關係&#34;&gt;和 MCP 的關係
&lt;/h2&gt;&lt;p&gt;Agent TARS 強調 MCP 集成。MCP 的價值在於把瀏覽器、文件、命令行、數據庫、內部服務等工具統一給 Agent 調用。&lt;/p&gt;
&lt;p&gt;對複雜任務來說，單靠 GUI 點擊不夠穩定。更好的方式往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能用 API 的地方走 API。&lt;/li&gt;
&lt;li&gt;需要看頁面狀態時用視覺。&lt;/li&gt;
&lt;li&gt;需要真實網頁交互時用瀏覽器。&lt;/li&gt;
&lt;li&gt;需要本地軟件操作時用 GUI Agent。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;UI-TARS-desktop 這類項目正在探索的，就是把這些能力放到同一個 Agent 棧裏。&lt;/p&gt;
&lt;h2 id=&#34;使用前要注意什麼&#34;&gt;使用前要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，桌面 Agent 有執行風險。它能操作鼠標、鍵盤和瀏覽器，就必須限制權限，避免誤操作文件、賬號、支付或生產系統。&lt;/p&gt;
&lt;p&gt;第二，遠程電腦和遠程瀏覽器操作要注意安全邊界。不要把未認證的控制入口暴露到公網。&lt;/p&gt;
&lt;p&gt;第三，多模態模型可能誤識別界面。關鍵操作前最好有人確認，尤其是刪除、提交、支付、發帖、交易等不可逆操作。&lt;/p&gt;
&lt;p&gt;第四，模型供應商、API key 和本地數據要分開管理，不要把敏感憑據寫進公開配置。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究 GUI Agent 和 Computer Use 的開發者。&lt;/li&gt;
&lt;li&gt;需要讓 AI 操作桌面應用或瀏覽器的團隊。&lt;/li&gt;
&lt;li&gt;想把 MCP 工具、瀏覽器操作和視覺模型組合起來的 Agent 開發者。&lt;/li&gt;
&lt;li&gt;需要遠程電腦 / 遠程瀏覽器操作實驗環境的用戶。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是簡單網頁自動化，普通 Playwright 或 Selenium 可能更直接。如果任務涉及桌面軟件、多模態理解和複雜工具鏈，UI-TARS-desktop 更值得看。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop 的看點在於它不是隻做一個“會點按鈕”的桌面助手，而是把 GUI Agent、視覺模型、瀏覽器、CLI、MCP 和遠程操作放進同一套多模態 Agent 棧。&lt;/p&gt;
&lt;p&gt;這類項目代表了 AI Agent 的一個重要方向：從文本對話走向真實軟件環境。但越接近真實操作，越需要權限管理、執行審計和人工確認。試用時建議先從低風險任務開始。&lt;/p&gt;
&lt;p&gt;參考項目：&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp b9196 更新：Windows 預編譯版支援 CUDA 13.1、Vulkan、HIP 和 SYCL</title>
        <link>https://knightli.com/zh-tw/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</link>
        <pubDate>Mon, 18 May 2026 23:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 最近的 Windows 版本對本地大模型使用者更友好了。以前在 Windows 上跑 GGUF 模型，很多人卡在環境問題上：CUDA 版本不匹配、DLL 缺失、驅動不相容、CMake 編譯失敗、環境變數錯誤，或者 Vulkan / HIP / SYCL 設定太麻煩。&lt;/p&gt;
&lt;p&gt;現在官方 Release 已經提供多種 Windows 預編譯包。很多場景下，使用者不再需要從源碼編譯，下載對應版本、解壓、放入模型文件後，就可以直接啟動本地推理服務。&lt;/p&gt;
&lt;h2 id=&#34;llamacpp-適合做什麼&#34;&gt;llama.cpp 適合做什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 是目前最常用的本地 GGUF 模型推理框架之一。它的特點是輕量、跨平台，既能跑 CPU，也能利用 GPU，並且圍繞 GGUF 生態累積了大量模型資源。&lt;/p&gt;
&lt;p&gt;常見模型路線包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qwen&lt;/li&gt;
&lt;li&gt;Llama&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Gemma&lt;/li&gt;
&lt;li&gt;Mistral&lt;/li&gt;
&lt;li&gt;Mixtral&lt;/li&gt;
&lt;li&gt;Hermes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;隨著 GGUF 量化模型越來越普及，很多開源模型都會提供適合本地部署的 GGUF 版本。對普通使用者來說，&lt;code&gt;llama.cpp&lt;/code&gt; 的價值主要在於：不用搭一整套複雜推理框架，也能在本機跑一個可用的聊天服務。&lt;/p&gt;
&lt;h2 id=&#34;windows-預編譯版本怎麼選&#34;&gt;Windows 預編譯版本怎麼選
&lt;/h2&gt;&lt;p&gt;目前 Windows 使用者可以根據硬體選擇不同構建版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows x64 CPU&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 12.4&lt;/li&gt;
&lt;li&gt;Windows x64 CUDA 13.1&lt;/li&gt;
&lt;li&gt;Windows x64 Vulkan&lt;/li&gt;
&lt;li&gt;Windows x64 HIP Radeon&lt;/li&gt;
&lt;li&gt;Windows x64 SYCL&lt;/li&gt;
&lt;li&gt;Windows ARM64 CPU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是 NVIDIA 顯卡，通常優先考慮 CUDA 版本。RTX 3060、4060、4070、4080、4090 這類顯卡都更適合走 CUDA 路線。&lt;/p&gt;
&lt;p&gt;如果是 AMD 顯卡，可以嘗試 HIP 或 Vulkan。實際體驗裡，Vulkan 的相容性有時比 HIP 更省心，尤其適合不想折騰完整 ROCm 環境的使用者。&lt;/p&gt;
&lt;p&gt;如果是 Intel 核顯或 Arc 獨顯，可以嘗試 SYCL 或 Vulkan。性能通常不如 NVIDIA CUDA 路線，但跑一些中小型 GGUF 模型已經足夠測試。&lt;/p&gt;
&lt;p&gt;CPU 版本適合沒有獨顯、只是想驗證模型或跑小參數模型的使用者。速度不會太快，但部署最簡單。&lt;/p&gt;
&lt;h2 id=&#34;啟動普通-gguf-模型&#34;&gt;啟動普通 GGUF 模型
&lt;/h2&gt;&lt;p&gt;假設你已經下載好 &lt;code&gt;llama.cpp&lt;/code&gt; Windows 預編譯包，並把模型放到 &lt;code&gt;models&lt;/code&gt; 目錄。進入 &lt;code&gt;llama.cpp&lt;/code&gt; 解壓目錄後，可以用類似命令啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;your-model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;gguf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡的 &lt;code&gt;-m&lt;/code&gt; 指向 GGUF 模型文件，&lt;code&gt;-ngl 999&lt;/code&gt; 表示盡量把模型層載入到 GPU。實際能載入多少，取決於顯存容量、模型大小和量化格式。&lt;/p&gt;
&lt;p&gt;啟動成功後，在瀏覽器打開：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;就可以進入本地網頁聊天介面。&lt;/p&gt;
&lt;p&gt;如果顯存不足，可以換更小的模型，或者換更低量化版本，例如 Q4、Q5 這類 GGUF 文件。不要只看模型參數量，也要看量化格式和上下文長度設定。&lt;/p&gt;
&lt;h2 id=&#34;啟動多模態視覺模型&#34;&gt;啟動多模態視覺模型
&lt;/h2&gt;&lt;p&gt;多模態視覺模型通常不只需要一個主模型文件，還需要一個 &lt;code&gt;mmproj&lt;/code&gt; 視覺投影文件。啟動時要同時指定主模型和 &lt;code&gt;mmproj&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-server&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\main-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-mmproj&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj-model.gguf&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ngl&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;999&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常見用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OCR 識別&lt;/li&gt;
&lt;li&gt;截圖理解&lt;/li&gt;
&lt;li&gt;網頁截圖分析&lt;/li&gt;
&lt;li&gt;圖片問答&lt;/li&gt;
&lt;li&gt;簡單視覺內容判斷&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如 Qwen2-VL / Qwen2.5-VL 這類視覺模型，在中文截圖理解、OCR 和圖文問答上比較實用。使用時要注意主模型和 &lt;code&gt;mmproj&lt;/code&gt; 文件是否匹配，版本不匹配很容易導致載入失敗或效果異常。&lt;/p&gt;
&lt;h2 id=&#34;用-bat-腳本管理多個模型&#34;&gt;用 bat 腳本管理多個模型
&lt;/h2&gt;&lt;p&gt;如果本地同時放了多個模型，可以寫一個簡單的 &lt;code&gt;.bat&lt;/code&gt; 腳本做選單切換。下面是一個示例，路徑和模型名需要改成你自己的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bat&#34; data-lang=&#34;bat&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; off
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chcp 65001 &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;nul
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;cd&lt;/span&gt; /d C:\path\to\llama-b9196-bin-win-cuda-13.1-x64
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 请选择模型：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 1. Gemma
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 2. Qwen VL 多模态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;echo&lt;/span&gt; 3. DeepSeek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;/p&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;choice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;输入数字：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\gemma.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\qwen-vl.gguf&amp;#34;&lt;/span&gt; --mmproj &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\mmproj.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%choice%&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;==&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt; llama-server.exe -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;models\deepseek.gguf&amp;#34;&lt;/span&gt; -ngl 999
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;pause&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;保存時建議使用 UTF-8 編碼，再把文件後綴改成 &lt;code&gt;.bat&lt;/code&gt;。這樣雙擊腳本後，就可以透過數字選擇不同模型。&lt;/p&gt;
&lt;h2 id=&#34;模型選擇要看三件事&#34;&gt;模型選擇要看三件事
&lt;/h2&gt;&lt;p&gt;第一，看硬體。顯存越大，能跑的模型越大；顯存不足時，不要硬上大模型，可以先從 7B、8B 或更低量化版本開始。&lt;/p&gt;
&lt;p&gt;第二，看用途。如果只是日常問答、總結、改寫，小模型和中等量化通常夠用。如果要做程式碼、長文件分析或多模態理解，就需要更強模型和更多顯存。&lt;/p&gt;
&lt;p&gt;第三，看授權和安全邊界。網上有很多社群改版模型，能力、限制和授權都不一樣。下載前要確認來源、授權、適用場景和風險，不建議把生產任務直接交給來源不明的模型。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;p&gt;如果啟動時報 DLL 缺失，先確認下載的包和顯卡路線是否匹配。例如 NVIDIA 使用者不要誤下載 HIP 版本，AMD 使用者也不要下載 CUDA 版本。&lt;/p&gt;
&lt;p&gt;如果模型載入很慢，可能是模型太大、硬碟速度慢，或者顯存不足導致部分層回落到 CPU。&lt;/p&gt;
&lt;p&gt;如果網頁打不開，先看命令列是否已經成功啟動服務，再確認端口是不是 &lt;code&gt;8080&lt;/code&gt;。如果端口被佔用，可以查閱 &lt;code&gt;llama-server&lt;/code&gt; 參數換端口。&lt;/p&gt;
&lt;p&gt;如果多模態模型效果不對，優先檢查 &lt;code&gt;mmproj&lt;/code&gt; 文件是否和主模型配套，而不是只換提示詞。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;這次 Windows 預編譯包的價值在於降低了本地 AI 的入門門檻。以前很多使用者卡在編譯和依賴環境，現在可以更快進入「下載模型、啟動服務、測試效果」的階段。&lt;/p&gt;
&lt;p&gt;對 Windows 使用者來說，選擇路線可以簡單理解為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA：優先 CUDA。&lt;/li&gt;
&lt;li&gt;AMD：優先嘗試 Vulkan，再看 HIP。&lt;/li&gt;
&lt;li&gt;Intel：嘗試 SYCL 或 Vulkan。&lt;/li&gt;
&lt;li&gt;沒有獨顯：用 CPU 版本跑小模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正使用前，仍然要確認模型來源、授權、顯存需求和實際效果。本地 AI 的好處是可控、離線、低延遲，但它不等於沒有成本：模型管理、硬體資源和輸出品質都需要自己負責。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24211.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24211.html&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>市面上主流 AI PPT 工具大盤點：自動生成、網頁簡報、PPTX 和圖像路線怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/05/18/ai-ppt-skills-selection-guide/</link>
        <pubDate>Mon, 18 May 2026 22:29:43 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/ai-ppt-skills-selection-guide/</guid>
        <description>&lt;p&gt;AI 做 PPT 已經不只是「輸入標題，套一個模板」。在 Claude Code、Codex、Cursor 這類 AI 編程環境裡，PPT 生成正在變成一組可安裝、可複用的 Agent Skill：有的輸出網頁簡報，有的生成真正可編輯的 &lt;code&gt;.pptx&lt;/code&gt;，有的直接用圖像模型把每頁做成視覺稿，還有的透過 MCP 讓 AI 操作 PowerPoint 文件。&lt;/p&gt;
&lt;p&gt;這次整理了一批主流 PPT 相關 Skill。真正有價值的地方不只是榜單，而是把這類工具按交付形態拆開來看。選工具前，先問一句：最終交付物到底要給誰改、在哪裡播放、是否需要繼續協作？&lt;/p&gt;
&lt;h2 id=&#34;幾條路線&#34;&gt;幾條路線
&lt;/h2&gt;&lt;h3 id=&#34;1-html-網頁簡報&#34;&gt;1. HTML 網頁簡報
&lt;/h3&gt;&lt;p&gt;代表項目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;這條路線的優勢是視覺表現力強。CSS 動畫、Canvas、WebGL、響應式佈局都能用，瀏覽器打開即可展示，適合技術分享、產品發布、Demo Day 和個人風格強烈的演講。&lt;/p&gt;
&lt;p&gt;代價也很明確：交付後不太適合讓客戶逐字改。客戶如果拿到的是 HTML，而不是 PowerPoint 文件，後續修改往往還要回到生成流程。&lt;/p&gt;
&lt;p&gt;如果只看 HTML 簡報，&lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt; 更像高星通用入口，&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt; 強在審美約束和主題風格，&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt; 則勝在主題數量、佈局數量和演講者模式。&lt;/p&gt;
&lt;h3 id=&#34;2-原生-pptx&#34;&gt;2. 原生 PPTX
&lt;/h3&gt;&lt;p&gt;代表項目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;claude-office-skills&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;這是商業交付最穩的路線。只要客戶要求「能在 PowerPoint 裡改字、改圖、套公司模板」，最終就要落到 &lt;code&gt;.pptx&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;其中 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt; 很值得單獨關注。它的思路是先讓 LLM 生成 SVG，再轉成 PowerPoint 原生 DrawingML 物件，目標是讓文字框、形狀、圖表都能在 PPTX 裡繼續編輯。它還支援從 PDF、DOCX、URL、Markdown 生成 PPTX，並能做模板復刻、動畫、旁白和本地預覽。&lt;/p&gt;
&lt;p&gt;這條路線適合諮詢交付、公司匯報、白皮書簡報、長報告壓縮成 PPT 等場景。缺點是視覺上限通常受 PowerPoint 本身限制，複雜效果不如 HTML 或圖像路線自由。&lt;/p&gt;
&lt;h3 id=&#34;3-ai-圖像驅動&#34;&gt;3. AI 圖像驅動
&lt;/h3&gt;&lt;p&gt;代表項目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;這條路線先把每一頁當成視覺圖來生成，再把圖片放進 PPTX 或其它容器裡。優點是完成度高，尤其適合封面、社群媒體圖、視覺提案、傳播型內容。&lt;/p&gt;
&lt;p&gt;問題是可編輯性差。頁面本質上是一張圖，後面要改一個標題、換一段文案、挪一個圖標，可能就要重新生成。它適合「看起來要好」，不適合「客戶要反覆改」。&lt;/p&gt;
&lt;h3 id=&#34;4-mcp--協議層&#34;&gt;4. MCP / 協議層
&lt;/h3&gt;&lt;p&gt;代表項目包括 &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Office-PowerPoint-MCP-Server&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;這類工具不一定直接生成完整 PPT，而是給 AI 一個操作 PowerPoint 的介面。接入 MCP 後，模型可以讀、改、寫 &lt;code&gt;.pptx&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;這條路線適合已經有 PPT 文件、需要 AI 輔助修改的工作流。比如批量改格式、根據回饋重排頁面、讓模型檢查每頁是否符合目標。&lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PPTAgent&lt;/a&gt; 強調反思式生成，也就是每生成一頁後再回頭檢查，這個方向對減少「AI PPT 很粗糙」的問題有啟發。&lt;/p&gt;
&lt;h3 id=&#34;5-綜合設計平台&#34;&gt;5. 綜合設計平台
&lt;/h3&gt;&lt;p&gt;代表項目包括 &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; 和 &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;這類項目已經超出 PPT 生成本身。&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; 更像本地優先的設計平台，可以生成原型、slides、images、videos，並支援多種匯出格式。&lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent&lt;/a&gt; 不是 PPT 工具，但能索引和對話本地文件，適合作為 PPT 生成前的資料整理層。&lt;/p&gt;
&lt;p&gt;如果你的需求不是單次做 PPT，而是從資料、設計、原型到交付的一整套流程，這類平台更值得看。&lt;/p&gt;
&lt;h2 id=&#34;skill-元資訊&#34;&gt;Skill 元資訊
&lt;/h2&gt;&lt;p&gt;Star 數來自原文 2026-05-15 的抓取結果，只適合作為熱度參考，實際使用前建議再打開倉庫確認維護狀態、README 和 LICENSE。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Skill&lt;/th&gt;
          &lt;th&gt;作者&lt;/th&gt;
          &lt;th&gt;連結地址&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Star&lt;/th&gt;
          &lt;th&gt;語言&lt;/th&gt;
          &lt;th&gt;路線&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;frontend-slides&lt;/td&gt;
          &lt;td&gt;@zarazhangrui&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;zarazhangrui/frontend-slides&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17,530&lt;/td&gt;
          &lt;td&gt;Shell&lt;/td&gt;
          &lt;td&gt;HTML 網頁簡報&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;guizang-ppt-skill&lt;/td&gt;
          &lt;td&gt;@op7418（歸藏）&lt;/td&gt;
          &lt;td&gt;站內文章: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;&lt;br&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/guizang-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8,832&lt;/td&gt;
          &lt;td&gt;HTML&lt;/td&gt;
          &lt;td&gt;HTML 網頁簡報&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;html-ppt-skill&lt;/td&gt;
          &lt;td&gt;@lewislulu&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lewislulu/html-ppt-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3,834&lt;/td&gt;
          &lt;td&gt;HTML/CSS/JS&lt;/td&gt;
          &lt;td&gt;HTML 網頁簡報&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;mckinsey-pptx&lt;/td&gt;
          &lt;td&gt;@seulee26&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;seulee26/mckinsey-pptx&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;426&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-agent-skills&lt;/td&gt;
          &lt;td&gt;@sunbigfly&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sunbigfly/ppt-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;714&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;claude-office-skills&lt;/td&gt;
          &lt;td&gt;@tfriedel&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/tfriedel/claude-office-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tfriedel/claude-office-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;631&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-master&lt;/td&gt;
          &lt;td&gt;@hugohe3&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hugohe3/ppt-master&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16,626&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;原生 PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NanoBanana-PPT-Skills&lt;/td&gt;
          &lt;td&gt;@op7418（歸藏）&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/NanoBanana-PPT-Skills&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,668&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 圖像驅動&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;gpt_image_2_skill&lt;/td&gt;
          &lt;td&gt;@wuyoscar&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wuyoscar/gpt_image_2_skill&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2,102&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 圖像驅動&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ppt-image-first&lt;/td&gt;
          &lt;td&gt;@NyxTides&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NyxTides/ppt-image-first&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;799&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;AI 圖像驅動&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Office-PowerPoint-MCP-Server&lt;/td&gt;
          &lt;td&gt;@GongRzhe&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/GongRzhe/Office-PowerPoint-MCP-Server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GongRzhe/Office-PowerPoint-MCP-Server&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1,708&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / 協議層&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PPTAgent&lt;/td&gt;
          &lt;td&gt;@icip-cas&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;icip-cas/PPTAgent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4,354&lt;/td&gt;
          &lt;td&gt;Python&lt;/td&gt;
          &lt;td&gt;MCP / 協議層&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;open-design&lt;/td&gt;
          &lt;td&gt;@nexu-io&lt;/td&gt;
          &lt;td&gt;站內文章: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt;&lt;br&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40,822&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;綜合設計平台&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;docsagent&lt;/td&gt;
          &lt;td&gt;@docsagent&lt;/td&gt;
          &lt;td&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/docsagent/docsagent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;docsagent/docsagent&lt;/a&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;687&lt;/td&gt;
          &lt;td&gt;TypeScript&lt;/td&gt;
          &lt;td&gt;綜合設計平台&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;選型可以這樣判斷&#34;&gt;選型可以這樣判斷
&lt;/h2&gt;&lt;p&gt;如果客戶要繼續編輯，優先看原生 PPTX 路線，尤其是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/hugohe3/ppt-master&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-master&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/seulee26/mckinsey-pptx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mckinsey-pptx&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/sunbigfly/ppt-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-agent-skills&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果是自己演講，且視覺表現比後續編輯更重要，優先看 HTML 路線，尤其是 &lt;a class=&#34;link&#34; href=&#34;https://github.com/zarazhangrui/frontend-slides&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;frontend-slides&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/lewislulu/html-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;html-ppt-skill&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果目標是海報感、封面感、傳播圖，優先看圖像路線，比如 &lt;a class=&#34;link&#34; href=&#34;https://github.com/NyxTides/ppt-image-first&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ppt-image-first&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/wuyoscar/gpt_image_2_skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpt_image_2_skill&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/NanoBanana-PPT-Skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanoBanana-PPT-Skills&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;如果已經有 PPT 文件，只想讓 AI 幫你讀、改、重排，可以看 MCP 路線。&lt;/p&gt;
&lt;p&gt;如果是學術、行銷、翻譯、長報告壓縮這類明確場景，也可以繼續找垂直 Skill，而不是拿通用 PPT 生成器硬做。&lt;/p&gt;
&lt;h2 id=&#34;最後要注意的事&#34;&gt;最後要注意的事
&lt;/h2&gt;&lt;p&gt;開源項目不能只看 Star。真正使用前還要確認三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LICENSE 是否允許你的使用方式。&lt;/li&gt;
&lt;li&gt;生成物是否滿足交付要求，尤其是可編輯性。&lt;/li&gt;
&lt;li&gt;成本是否可接受，包括模型調用、圖像生成、大上下文模型和可能的雲服務費用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類工具變化很快，Star 數會變，項目維護狀態也會變。但選型邏輯相對穩定：先確定交付形態，再看具體工具。PPT 是給人講、給人改、還是給人看，這三個答案往往會把選擇範圍直接縮小一大半。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>wx-cli 專案解讀：用命令列查詢本機微信聊天記錄</title>
        <link>https://knightli.com/zh-tw/2026/05/18/wx-cli-wechat-local-data-command-line-tool/</link>
        <pubDate>Mon, 18 May 2026 21:02:21 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/wx-cli-wechat-local-data-command-line-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 是一個用 Rust 編寫的本機微信資料命令列工具，目標是在命令列裡查詢自己的微信會話、聊天記錄、聯絡人、群成員、收藏、朋友圈、公眾號文章、附件和統計資訊。&lt;/p&gt;
&lt;p&gt;它不是雲端微信同步服務，也不是聊天機器人。它更像是一個本機唯讀資料檢索層：微信仍然在本機執行，資料仍然留在本機，&lt;code&gt;wx-cli&lt;/code&gt; 負責按需解密、快取和查詢本機資料庫，再把結果以 YAML 或 JSON 形式輸出給人或 Agent 使用。&lt;/p&gt;
&lt;p&gt;這個專案有兩個值得關注的點：一是它把微信本機資料查詢做成了跨平台 CLI；二是它專門考慮了 Claude Code、Cursor、Codex 這類 AI Agent 的使用場景，提供了 &lt;code&gt;SKILL.md&lt;/code&gt; 和帶 &lt;code&gt;meta&lt;/code&gt; 的結構化輸出。&lt;/p&gt;
&lt;h2 id=&#34;wx-cli-能做什麼&#34;&gt;wx-cli 能做什麼
&lt;/h2&gt;&lt;p&gt;按專案 README 的描述，&lt;code&gt;wx-cli&lt;/code&gt; 覆蓋的功能很完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看最近會話和未讀會話。&lt;/li&gt;
&lt;li&gt;查詢某個聯絡人或群的聊天歷史。&lt;/li&gt;
&lt;li&gt;全庫搜尋關鍵字。&lt;/li&gt;
&lt;li&gt;查看新增訊息。&lt;/li&gt;
&lt;li&gt;查詢聯絡人、群成員和群暱稱。&lt;/li&gt;
&lt;li&gt;查詢收藏。&lt;/li&gt;
&lt;li&gt;查詢朋友圈通知、朋友圈時間線和朋友圈正文。&lt;/li&gt;
&lt;li&gt;查詢公眾號文章推送。&lt;/li&gt;
&lt;li&gt;列出和提取聊天圖片附件。&lt;/li&gt;
&lt;li&gt;做聊天統計。&lt;/li&gt;
&lt;li&gt;匯出聊天記錄為 Markdown 或 JSON。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些能力讓它不只是「查聊天記錄」，而是把微信本機資料變成了可搜尋、可統計、可匯出的本機資料庫。&lt;/p&gt;
&lt;h2 id=&#34;為什麼適合-ai-agent&#34;&gt;為什麼適合 AI Agent
&lt;/h2&gt;&lt;p&gt;很多命令列工具只是給人看的，輸出是一段文字。&lt;code&gt;wx-cli&lt;/code&gt; 則明顯考慮了 Agent 讀取。&lt;/p&gt;
&lt;p&gt;README 提到，&lt;code&gt;history&lt;/code&gt;、&lt;code&gt;search&lt;/code&gt;、&lt;code&gt;sessions&lt;/code&gt;、&lt;code&gt;unread&lt;/code&gt;、&lt;code&gt;new-messages&lt;/code&gt;、&lt;code&gt;stats&lt;/code&gt;、&lt;code&gt;attachments&lt;/code&gt; 等命令會附帶 &lt;code&gt;meta&lt;/code&gt; 資訊。&lt;code&gt;meta&lt;/code&gt; 裡包含結果狀態、未知分片、命中資料的最新時間、session 記錄的最新時間等資訊。&lt;/p&gt;
&lt;p&gt;這對 Agent 很有用。因為 AI 不只需要「查到了什麼」，還需要知道「結果新不新」「有沒有可能漏訊息」「是不是需要重新 init」。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; 可以提示結果是否 &lt;code&gt;ok&lt;/code&gt; 或 &lt;code&gt;possibly_stale&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown_shards&lt;/code&gt; 可以提示是否存在 daemon 目前沒有 key 的資料庫分片。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chat_latest_timestamp&lt;/code&gt; 可以告訴 Agent 目前命中資料裡的最新訊息時間。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_last_timestamp&lt;/code&gt; 可以幫助判斷本機 session 記錄是否明顯領先於查詢結果。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類元資訊可以減少 AI 誤判，讓 Claude Code、Cursor、Codex 這類工具在處理微信資料時更穩。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;專案推薦透過 npm 全平台安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @jackwener/wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也支援 macOS / Linux 的 curl 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/jackwener/wx-cli/main/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows 可以在系統管理員 PowerShell 中執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jackwener&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;wx-cli&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要從原始碼建置，也可以直接用 Rust：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@github.com:jackwener/wx-cli.git &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo build --release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;建置產物是 &lt;code&gt;target/release/wx&lt;/code&gt;，Windows 下是 &lt;code&gt;wx.exe&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;和-agent-skill-的關係&#34;&gt;和 Agent Skill 的關係
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 還提供了面向 AI Agent 的 Skill。可以透過 skills CLI 一鍵安裝到 Claude Code、Cursor、Codex 等支援 Skills 的環境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add jackwener/wx-cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;全域安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add jackwener/wx-cli -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝後，Agent 會讀取倉庫裡的 &lt;code&gt;SKILL.md&lt;/code&gt;，知道如何安裝、初始化和呼叫 &lt;code&gt;wx-cli&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這意味著你可以讓 Agent 幫你做一些本機資訊整理任務，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找某段時間某個群聊裡討論過的關鍵字。&lt;/li&gt;
&lt;li&gt;彙總最近未讀訊息。&lt;/li&gt;
&lt;li&gt;從某個會話裡匯出最近聊天記錄。&lt;/li&gt;
&lt;li&gt;搜尋公眾號文章推送連結。&lt;/li&gt;
&lt;li&gt;分析某個群聊裡的發言統計。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前提仍然是：這些資料必須是你本機、你自己的微信資料。&lt;/p&gt;
&lt;h2 id=&#34;基本使用方式&#34;&gt;基本使用方式
&lt;/h2&gt;&lt;p&gt;初始化前需要保持微信正在執行。不同平台要求不同。&lt;/p&gt;
&lt;p&gt;Linux 上可以執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo wx init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows 上需要用系統管理員 PowerShell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wx&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;init&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;macOS 上更複雜。README 說明，預設路徑需要先對 WeChat 做 ad-hoc 簽名，才能掃描程序記憶體；重新簽名後還要清理舊 TCC 授權記錄，否則截圖、視訊通話、麥克風等權限可能出現「看起來已開啟但實際拒絕」的問題。專案文件也提醒，重新簽名會帶來 macOS 頻繁彈出存取其他 App 資料提示的副作用。&lt;/p&gt;
&lt;p&gt;初始化後，可以用下面的命令驗證：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sessions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;能看到最近會話，說明基本鏈路已經可用。daemon 會在首次呼叫時自動啟動。&lt;/p&gt;
&lt;h2 id=&#34;常用命令示例&#34;&gt;常用命令示例
&lt;/h2&gt;&lt;p&gt;查看最近會話：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sessions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看未讀會話：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx unread
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只看真人未讀，過濾公眾號和摺疊入口：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx unread --filter private,group
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看某個會話最近聊天記錄：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;張三&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;拉取更多歷史訊息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;張三&amp;#34;&lt;/span&gt; -n &lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按時間範圍查詢群聊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;history&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --since 2026-04-01 --until 2026-04-15
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;全庫搜尋：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx search &lt;span class=&#34;s2&#34;&gt;&amp;#34;關鍵詞&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;搜尋某個群中的關鍵字：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx search &lt;span class=&#34;s2&#34;&gt;&amp;#34;會議&amp;#34;&lt;/span&gt; --in &lt;span class=&#34;s2&#34;&gt;&amp;#34;工作群&amp;#34;&lt;/span&gt; --since 2026-01-01
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;匯出聊天記錄：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;張三&amp;#34;&lt;/span&gt; --format markdown -o chat.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --since 2026-01-01 --format json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些命令都比較適合被腳本或 Agent 呼叫，尤其是加上 &lt;code&gt;--json&lt;/code&gt; 後。&lt;/p&gt;
&lt;h2 id=&#34;朋友圈和公眾號文章&#34;&gt;朋友圈和公眾號文章
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 不只查聊天。&lt;/p&gt;
&lt;p&gt;朋友圈相關命令分成通知和貼文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-notifications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-feed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx sns-search &lt;span class=&#34;s2&#34;&gt;&amp;#34;關鍵詞&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意，朋友圈資料只覆蓋你本機刷到過的內容。微信客戶端按需下載，沒在本機出現過的資料，工具也不會憑空拿到。&lt;/p&gt;
&lt;p&gt;公眾號文章則透過獨立命令查詢：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --account &lt;span class=&#34;s2&#34;&gt;&amp;#34;返朴&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --since 2026-05-01 --until 2026-05-10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx biz-articles --json &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq &lt;span class=&#34;s1&#34;&gt;&amp;#39;.[].url&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它會回傳公眾號名稱、標題、URL、摘要、封面、時間等欄位。對做資料整理、文章收集和本機知識庫的人來說，這個功能很實用。&lt;/p&gt;
&lt;h2 id=&#34;附件提取&#34;&gt;附件提取
&lt;/h2&gt;&lt;p&gt;微信聊天裡的圖片附件通常不是直接可讀的普通圖片檔，而是存在 &lt;code&gt;xwechat_files/&amp;lt;wxid&amp;gt;/msg/attach/...&lt;/code&gt; 下的 &lt;code&gt;.dat&lt;/code&gt; 檔案。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 提供了兩步流程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx attachments &lt;span class=&#34;s2&#34;&gt;&amp;#34;張三&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx attachments &lt;span class=&#34;s2&#34;&gt;&amp;#34;AI群&amp;#34;&lt;/span&gt; --kind image -n &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先拿到 &lt;code&gt;attachment_id&lt;/code&gt; 後，再提取：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx extract &amp;lt;attachment_id&amp;gt; -o ~/Desktop/photo.jpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出報告裡會帶 &lt;code&gt;md5&lt;/code&gt;、&lt;code&gt;dat_path&lt;/code&gt;、&lt;code&gt;dat_size&lt;/code&gt;、&lt;code&gt;output&lt;/code&gt;、&lt;code&gt;format&lt;/code&gt;、&lt;code&gt;decoder&lt;/code&gt; 等資訊。README 中說明它支援 legacy XOR、V1 fixed-AES、V2 AES + XOR 等解碼檔位，不同平台的 image key 提取方式也不同。&lt;/p&gt;
&lt;p&gt;這部分能力很強，但也更需要謹慎使用：只處理自己的資料，不要把它用於未經授權的資料存取。&lt;/p&gt;
&lt;h2 id=&#34;daemon-架構為什麼重要&#34;&gt;daemon 架構為什麼重要
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 的效能點在 daemon。&lt;/p&gt;
&lt;p&gt;README 中給出的結構大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wx (CLI) ──Unix socket──▶ wx-daemon (背景程序)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ┌─────────┴──────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               DBCache               聯絡人快取
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           (mtime 感知複用)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;daemon 首次解密後，會把資料庫和 mtime 資訊持久化到 &lt;code&gt;~/.wx-cli/cache/&lt;/code&gt;。如果資料庫檔案 mtime 沒變，後續呼叫就可以複用快取，不需要每次重新解密。&lt;/p&gt;
&lt;p&gt;這對命令列查詢和 Agent 循環都很關鍵。Agent 可能會連續查詢多個會話、搜尋多個關鍵字、再做統計和匯出。如果每次都重新掃描和解密，體驗會很差；daemon 快取讓它更接近一個本機查詢服務。&lt;/p&gt;
&lt;h2 id=&#34;原理簡述&#34;&gt;原理簡述
&lt;/h2&gt;&lt;p&gt;專案 README 對原理有直接說明：微信 4.x 使用 SQLCipher 4 加密本機資料庫，WCDB 會在程序記憶體中快取派生後的 raw key。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 會根據平台使用不同方式掃描微信程序記憶體，匹配 key 模式後提取密鑰，再由 daemon 按需解密和快取資料庫。&lt;/p&gt;
&lt;p&gt;不同平台的底層機制不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS 使用 Mach VM API。&lt;/li&gt;
&lt;li&gt;Linux 使用 &lt;code&gt;/proc/&amp;lt;pid&amp;gt;/mem&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Windows 使用 &lt;code&gt;VirtualQueryEx&lt;/code&gt; 和 &lt;code&gt;ReadProcessMemory&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些能力解釋了為什麼初始化通常需要較高權限，也解釋了為什麼 macOS 上會涉及簽名和隱私授權。&lt;/p&gt;
&lt;h2 id=&#34;使用邊界和風險&#34;&gt;使用邊界和風險
&lt;/h2&gt;&lt;p&gt;這類工具必須先講邊界。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; README 的免責聲明寫得很明確：工具僅用於學習和研究目的，用於解密自己的微信資料，並要求遵守相關法律法規，不得用於未經授權的資料存取。&lt;/p&gt;
&lt;p&gt;實際使用時也建議注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在自己的電腦、自己的微信帳號上使用。&lt;/li&gt;
&lt;li&gt;不要把匯出的聊天記錄隨意上傳到雲端模型。&lt;/li&gt;
&lt;li&gt;用 Agent 分析聊天記錄時，先確認 API 供應商和資料跨境風險。&lt;/li&gt;
&lt;li&gt;匯出 Markdown / JSON 後要注意檔案權限和備份位置。&lt;/li&gt;
&lt;li&gt;公司或多人裝置上使用前，先確認合規和授權。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本機工具不等於沒有隱私風險。它減少了資料離開本機的預設路徑，但如果你把輸出交給雲端模型、網盤或第三方腳本，風險又會回來。&lt;/p&gt;
&lt;h2 id=&#34;適合誰使用&#34;&gt;適合誰使用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在本機快速搜尋自己的微信歷史訊息。&lt;/li&gt;
&lt;li&gt;需要把某個會話匯出為 Markdown 或 JSON。&lt;/li&gt;
&lt;li&gt;想統計某個群聊在一段時間內的發言情況。&lt;/li&gt;
&lt;li&gt;想讓 Claude Code、Cursor、Codex 等 Agent 幫忙整理本機微信資料。&lt;/li&gt;
&lt;li&gt;想把公眾號文章推送連結整理進本機知識庫。&lt;/li&gt;
&lt;li&gt;想研究微信本機資料庫結構和解密流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想做雲端微信同步。&lt;/li&gt;
&lt;li&gt;想繞過他人裝置或帳號權限。&lt;/li&gt;
&lt;li&gt;想無腦圖形介面操作，不接觸命令列。&lt;/li&gt;
&lt;li&gt;不願意處理 macOS 權限、Windows 系統管理員權限或 Linux sudo 的使用者。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; 的價值，不只是「命令列查微信聊天記錄」。更準確地說，它把本機微信資料變成了一個可查詢、可匯出、可被 Agent 消費的本機資料源。&lt;/p&gt;
&lt;p&gt;它的 daemon 架構解決了反覆解密和查詢效能問題；&lt;code&gt;meta&lt;/code&gt; wrapper 讓 AI Agent 更容易判斷結果是否新鮮；&lt;code&gt;SKILL.md&lt;/code&gt; 則把安裝和使用方式交給 Claude Code、Cursor、Codex 這類工具理解。&lt;/p&gt;
&lt;p&gt;如果你經常需要從微信裡找資訊、整理群聊、匯出記錄或建構個人資料庫，&lt;code&gt;wx-cli&lt;/code&gt; 很值得關注。但使用它時也要始終記住一條底線：只處理自己的資料，並且謹慎管理匯出結果。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/jackwener/wx-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;jackwener/wx-cli GitHub 倉庫&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Open Design 專案解析：把 Claude Code、Codex 變成 AI 設計工具</title>
        <link>https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/</link>
        <pubDate>Mon, 18 May 2026 18:57:16 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/open-design-open-source-claude-design-alternative/</guid>
        <description>&lt;p&gt;Open Design 是 nexu-io 推出的開源 AI 設計專案，定位是 local-first、open-source 的 Claude Design / Figma 替代方案。&lt;/p&gt;
&lt;p&gt;它想解決的問題很明確：Claude Design 證明了大模型可以直接生成設計製品，但這類能力如果只存在於閉源、雲端、單一模型的產品裡，使用者就很難自託管、接入自己的 Agent、替換模型、沉澱私有設計系統，或者把產物放進本地工作流。&lt;/p&gt;
&lt;p&gt;Open Design 的思路不是重新造一個大模型，而是把你電腦上已有的 coding-agent CLI 接進一個設計工作台。Claude Code、Codex、Cursor Agent、Gemini CLI、OpenCode、Qwen、Copilot CLI、Kimi、DeepSeek TUI 等工具，都可以成為它的「設計引擎」。&lt;/p&gt;
&lt;h2 id=&#34;open-design-是什麼&#34;&gt;Open Design 是什麼
&lt;/h2&gt;&lt;p&gt;Open Design 可以理解為三個部分的組合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個 Web UI，用來對話、預覽、管理專案和匯出產物。&lt;/li&gt;
&lt;li&gt;一個本地 daemon，負責調度 Agent、管理文件、保存專案和提供 API。&lt;/li&gt;
&lt;li&gt;一組 Skills、Design Systems 和模板，用來約束 Agent 生成更像設計作品，而不是隨手拼出來的 AI 頁面。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用者輸入需求後，Open Design 不只是把一句話丟給模型。它會先讓使用者補充設計簡報，選擇場景和方向，再把專案元資料、目前設計系統、Skill 文件、模板、檢查清單等上下文注入給 Agent。Agent 在真實文件夾裡讀寫文件，最後生成可在沙盒 iframe 中預覽的 artifact。&lt;/p&gt;
&lt;p&gt;這讓它更接近「AI 設計工作流」，而不是單次網頁生成器。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它和普通-ai-生成網頁不一樣&#34;&gt;為什麼它和普通 AI 生成網頁不一樣
&lt;/h2&gt;&lt;p&gt;很多 AI 工具都能生成一個 HTML 頁面，但 Open Design 的重點不是「讓模型寫頁面」，而是「讓模型按設計流程交付可預覽、可匯出、可迭代的製品」。&lt;/p&gt;
&lt;p&gt;它強調幾個設計：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先問問題，再生成。新設計 brief 會先出現互動式 question form，用來鎖定受眾、語氣、品牌上下文、約束和視覺方向。&lt;/li&gt;
&lt;li&gt;Skills 是文件，不是黑盒外掛。每個 Skill 由 &lt;code&gt;SKILL.md&lt;/code&gt;、&lt;code&gt;assets/&lt;/code&gt;、&lt;code&gt;references/&lt;/code&gt; 組成，可以被閱讀、替換和擴展。&lt;/li&gt;
&lt;li&gt;Design Systems 是 Markdown，不是固定主題 JSON。顏色、字體、間距、元件、動效、品牌語氣和反模式都可以寫進 &lt;code&gt;DESIGN.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Agent 在真實專案目錄裡工作。它能讀模板、寫文件、生成圖片、輸出 &lt;code&gt;.pptx&lt;/code&gt;、&lt;code&gt;.pdf&lt;/code&gt;、&lt;code&gt;.zip&lt;/code&gt; 等文件。&lt;/li&gt;
&lt;li&gt;產物在沙盒 iframe 中預覽，減少直接執行不受控程式碼的風險。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套結構的目標，是讓 AI 更像一個有規範、有素材、有檢查清單的設計協作者。&lt;/p&gt;
&lt;h2 id=&#34;它支援哪些-agent&#34;&gt;它支援哪些 Agent
&lt;/h2&gt;&lt;p&gt;Open Design 的一個亮點是「把 Agent 當運行時」，而不是綁定某一家模型。&lt;/p&gt;
&lt;p&gt;README 中列出的支援對象包括 Claude Code、Codex CLI、Devin for Terminal、Cursor Agent、Gemini CLI、OpenCode、Qwen Code、Qoder CLI、GitHub Copilot CLI、Hermes、Kimi、Pi、Kiro、Kilo、Mistral Vibe、DeepSeek TUI 等。它會從 &lt;code&gt;PATH&lt;/code&gt; 中自動檢測這些 CLI，並允許使用者切換。&lt;/p&gt;
&lt;p&gt;如果本地沒有合適的 CLI，也可以走 OpenAI-compatible 的 BYOK proxy，把自己的 &lt;code&gt;baseUrl&lt;/code&gt;、&lt;code&gt;apiKey&lt;/code&gt; 和模型填進去，讓 daemon 把串流輸出規範化成同一套聊天流。&lt;/p&gt;
&lt;p&gt;這種設計的好處是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不鎖定單一模型。&lt;/li&gt;
&lt;li&gt;可以複用使用者已經安裝和配置好的 Agent。&lt;/li&gt;
&lt;li&gt;本地文件讀寫由 daemon 管理，權限邊界更清楚。&lt;/li&gt;
&lt;li&gt;對企業或重度使用者來說，更容易接入自己的模型和 API 供應商。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skills-和-design-systems-是它的核心資產&#34;&gt;Skills 和 Design Systems 是它的核心資產
&lt;/h2&gt;&lt;p&gt;Open Design 內建了大量 Skills 和 Design Systems。README 中提到，專案內建的 Skills 覆蓋網頁原型、SaaS landing page、dashboard、mobile app、gamified app、社群輪播圖、雜誌海報、PPT、週報、財務報告、HR onboarding、invoice、kanban、OKR 等場景。&lt;/p&gt;
&lt;p&gt;Design Systems 則用於給 Agent 提供品牌級視覺約束。倉庫介紹中列出了 Linear、Stripe、Vercel、Airbnb、Tesla、Notion、Apple、Anthropic、Cursor、Supabase、Figma、小紅書等設計系統來源。&lt;/p&gt;
&lt;p&gt;這兩者的關係可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill 決定「這次要交付什麼類型的作品」。&lt;/li&gt;
&lt;li&gt;Design System 決定「作品應該長成什麼品牌風格」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果沒有這兩層約束，AI 很容易生成那種看起來熟悉但缺少判斷的通用頁面。有了 Skill 和 Design System，模型至少有了清楚的任務邊界、視覺參考和檢查規則。&lt;/p&gt;
&lt;h2 id=&#34;它能生成什麼&#34;&gt;它能生成什麼
&lt;/h2&gt;&lt;p&gt;Open Design 不是只做網頁原型。&lt;/p&gt;
&lt;p&gt;按 README 的描述，它覆蓋 web、desktop、mobile prototypes、slides、images、videos、HyperFrames 等方向，並支援 HTML、PDF、PPTX、ZIP、Markdown 等匯出形式。媒體生成方面，它把圖片、影片、音訊也放在同一個設計循環裡，例如海報、頭像、資訊圖、地圖插畫、短影片和 HTML 轉 MP4 動效。&lt;/p&gt;
&lt;p&gt;這意味著它的使用場景可以很寬：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;創業團隊快速做 pitch deck。&lt;/li&gt;
&lt;li&gt;產品團隊生成 landing page 或功能原型。&lt;/li&gt;
&lt;li&gt;營運團隊做活動頁、社群圖、週報。&lt;/li&gt;
&lt;li&gt;設計師用它做 moodboard、視覺方向和第一版 layout。&lt;/li&gt;
&lt;li&gt;開發者把需求轉成可運行的前端 artifact。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的價值不只是「生成一個頁面」，而是把多個內容形態放進同一套 Agent 工作流。&lt;/p&gt;
&lt;h2 id=&#34;本地優先是什麼意思&#34;&gt;本地優先是什麼意思
&lt;/h2&gt;&lt;p&gt;Open Design 強調 local-first。它不是把所有東西都交給一個遠端 SaaS 後端，而是在本地跑 daemon 和專案工作區。&lt;/p&gt;
&lt;p&gt;倉庫 README 裡描述的架構大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端是 Next.js / React / TypeScript。&lt;/li&gt;
&lt;li&gt;本地 daemon 使用 Node、Express、SQLite 和 SSE。&lt;/li&gt;
&lt;li&gt;專案、會話、訊息、tab、模板等資料保存在本地 SQLite 和 &lt;code&gt;.od/projects/&amp;lt;id&amp;gt;/&lt;/code&gt; 目錄。&lt;/li&gt;
&lt;li&gt;Agent 透過 &lt;code&gt;child_process.spawn&lt;/code&gt; 啟動，並在專案 artifact 文件夾中讀寫。&lt;/li&gt;
&lt;li&gt;預覽透過沙盒 iframe 渲染。&lt;/li&gt;
&lt;li&gt;匯出包括 HTML、PDF、PPTX、ZIP、Markdown。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種結構更適合希望把設計產物留在本機、接入本地 Agent、控制 API key、維護私有工作區的使用者。&lt;/p&gt;
&lt;p&gt;不過 local-first 不等於完全離線。實際生成仍然取決於你使用的 Agent 和模型。如果你用的是雲端模型 API，內容仍然會發往對應供應商。Open Design 更準確的定位，是把工作區、調度、文件和預覽放回本地，把模型層交給使用者自己選擇。&lt;/p&gt;
&lt;h2 id=&#34;和-claude-design--figma-的關係&#34;&gt;和 Claude Design / Figma 的關係
&lt;/h2&gt;&lt;p&gt;Open Design 在 README 中明確把自己稱為 Claude Design / Figma 的開源替代方向，但它並不是傳統意義上的 Figma 複刻。&lt;/p&gt;
&lt;p&gt;Figma 是設計師手動編輯、協作和交付設計稿的專業工具；Open Design 更偏 Agent-native：使用者透過自然語言、表單、Skills 和設計系統驅動 Agent 產出可運行 artifact。&lt;/p&gt;
&lt;p&gt;它更像是把幾個東西合在一起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Design 的 artifact-first 體驗。&lt;/li&gt;
&lt;li&gt;Figma 的設計系統意識。&lt;/li&gt;
&lt;li&gt;Claude Code / Codex 這類 Agent 的文件讀寫和執行能力。&lt;/li&gt;
&lt;li&gt;本地 daemon 的專案管理和沙盒預覽。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它未必會替代專業設計師的全流程工具，但很適合做「從想法到可預覽原型」的快速通道。&lt;/p&gt;
&lt;h2 id=&#34;適合誰使用&#34;&gt;適合誰使用
&lt;/h2&gt;&lt;p&gt;Open Design 更適合這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經在使用 Claude Code、Codex、Cursor、Gemini CLI 等 Agent 的開發者。&lt;/li&gt;
&lt;li&gt;想把 AI 設計產物放到本地專案目錄裡管理的人。&lt;/li&gt;
&lt;li&gt;需要快速生成網頁原型、PPT、海報、營運素材的創業團隊。&lt;/li&gt;
&lt;li&gt;希望自定義 Skills、Design Systems、提示詞棧的進階使用者。&lt;/li&gt;
&lt;li&gt;不想被單一模型或單一雲端產品鎖住的團隊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只想打開網頁、輸入一句話、立刻下載圖片的輕量使用者。&lt;/li&gt;
&lt;li&gt;完全不想碰 Node、pnpm、daemon、CLI 和本地配置的人。&lt;/li&gt;
&lt;li&gt;需要成熟多人協作、設計評審和向量編輯能力的專業 Figma 流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，Open Design 更像給 Agent 使用者和技術型設計團隊準備的工具，而不是面向所有人的輕量設計 SaaS。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的地方&#34;&gt;需要注意的地方
&lt;/h2&gt;&lt;p&gt;Open Design 的 README 標註了 &lt;code&gt;0.8.0-preview&lt;/code&gt;，並說明專案仍在快速迭代。這類專案的活力很強，但也意味著 API、資料目錄、桌面版遷移、Skills 結構和匯出流程可能還會變化。&lt;/p&gt;
&lt;p&gt;使用前最好注意幾點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把它當成穩定企業級設計平台。&lt;/li&gt;
&lt;li&gt;先用測試專案體驗工作流，再匯入重要資料。&lt;/li&gt;
&lt;li&gt;如果要遷移 &lt;code&gt;.od/&lt;/code&gt; 資料，先備份，確保 daemon 和桌面應用都已停止。&lt;/li&gt;
&lt;li&gt;BYOK 時注意 API key、代理地址和本地私有網路存取風險。&lt;/li&gt;
&lt;li&gt;生成的設計仍需要人工審查，尤其是品牌、版權、文案和視覺一致性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;開源專案最大的好處是可檢查、可改、可貢獻；代價是你需要接受一定的工程摩擦。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Open Design 的看點，不只是「開源版 Claude Design」。它真正有意思的地方，是把 Agent CLI、Skills、Design Systems、本地 daemon 和沙盒預覽組織成一個設計工作流。&lt;/p&gt;
&lt;p&gt;它把設計生成從單次 prompt 推向了更結構化的流程：先問問題，選方向，載入設計系統，讀取 Skill，寫入真實文件，預覽 artifact，再匯出結果。&lt;/p&gt;
&lt;p&gt;如果你已經習慣用 Claude Code、Codex 或 Cursor 處理程式碼，那麼 Open Design 值得關注。它代表了一種新的產品形態：不是 AI 幫你畫一張圖，而是 AI 在本地專案空間裡，按設計系統和任務技能，生成一組可以繼續迭代的設計製品。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design GitHub 倉庫&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 省 Token 指南：模型、MCP、CLAUDE.md 和 Skills 怎麼影響快取</title>
        <link>https://knightli.com/zh-tw/2026/05/18/claude-code-prompt-cache-token-optimization/</link>
        <pubDate>Mon, 18 May 2026 18:30:24 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/claude-code-prompt-cache-token-optimization/</guid>
        <description>&lt;p&gt;Claude Code 長任務裡，Prompt Cache 命中率會直接影響成本和速度。很多人只知道「快取能省 Token」，但不清楚哪些操作會讓快取突然失效。&lt;/p&gt;
&lt;p&gt;理解它並不難：每次請求都可以看成一條從左到右的上下文鏈條：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tools -&amp;gt; system -&amp;gt; CLAUDE.md / skills -&amp;gt; messages
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;越靠左的內容越穩定，快取收益越大；越靠左的內容一變，後面的快取也更容易跟著失效。反過來，越靠右的內容變化，影響範圍越小。&lt;/p&gt;
&lt;p&gt;所以優化 Claude Code 的 Prompt Cache，不是靠玄學，而是靠一個原則：任務開始前把模型、MCP、Skills、CLAUDE.md 等基礎上下文準備好，任務中途盡量不要改。&lt;/p&gt;
&lt;h2 id=&#34;prompt-cache-快取的不是文字本身&#34;&gt;Prompt Cache 快取的不是文字本身
&lt;/h2&gt;&lt;p&gt;Prompt Cache 不是簡單地把提示詞字串存起來。對 Transformer 模型來說，更關鍵的是前綴上下文經過注意力層計算後的 Key/Value 狀態，也就是常說的 KV cache。&lt;/p&gt;
&lt;p&gt;這意味著兩個事實：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一段上下文，只要前綴保持穩定，就可以在後續請求中複用一部分計算結果。&lt;/li&gt;
&lt;li&gt;如果模型、工具定義、系統提示詞或前綴訊息發生變化，之前的快取就可能無法複用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic 官方文件也把失效層級概括為 &lt;code&gt;tools -&amp;gt; system -&amp;gt; messages&lt;/code&gt;。工具定義變化會影響整段快取，系統層變化會影響 system 和 messages，messages 層變化則主要影響訊息快取。&lt;/p&gt;
&lt;p&gt;Claude Code 裡還會額外涉及 &lt;code&gt;CLAUDE.md&lt;/code&gt;、Skills、MCP、外掛和子代理等上下文，所以實際使用時更容易踩到快取失效點。&lt;/p&gt;
&lt;h2 id=&#34;快取殺手一中途切換模型&#34;&gt;快取殺手一：中途切換模型
&lt;/h2&gt;&lt;p&gt;切模型是影響最大的操作。&lt;/p&gt;
&lt;p&gt;Prompt Cache 是按模型隔離的。Opus、Sonnet、Haiku 這類模型的結構和權重不同，同一段文字算出來的 KV cache 也不同。你在 Opus 裡跑了很長上下文，再切到 Sonnet，並不能讓 Sonnet 複用 Opus 的快取。&lt;/p&gt;
&lt;p&gt;這會帶來一個反直覺結果：中途為了省錢切模型，可能反而讓前面已經累積的快取全部失效。原本可以按 cache read 價格讀取的上下文，需要重新寫入和計算。&lt;/p&gt;
&lt;p&gt;更穩妥的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主對話盡量固定一個模型。&lt;/li&gt;
&lt;li&gt;需要便宜模型處理支線任務時，用 subagent 隔離出去。&lt;/li&gt;
&lt;li&gt;讓支線代理完成搜尋、探索、整理，再把結果摘要交回主對話。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣主對話的長上下文盡量不動，快取命中率更穩定。&lt;/p&gt;
&lt;h2 id=&#34;快取殺手二中途新增-mcp-或重載外掛&#34;&gt;快取殺手二：中途新增 MCP 或重載外掛
&lt;/h2&gt;&lt;p&gt;MCP 會向 Claude Code 提供工具。新增 MCP 伺服器後，工具列表會變化，而工具定義處在上下文鏈條最左側。&lt;/p&gt;
&lt;p&gt;從 Prompt Cache 的角度看，工具列表一變，後面的 system 和 messages 都可能需要重新計算。尤其是 MCP 很多時，工具定義本身就可能占用大量 Token，快取失效的代價會很明顯。&lt;/p&gt;
&lt;p&gt;不過有一個細節：Claude Code 通常在會話啟動時讀取 MCP 配置。你中途改了配置，當前 session 不一定立刻受影響。真正需要小心的是觸發重新載入的動作，例如重啟、恢復會話、重新載入外掛或讓工具列表重新組裝。&lt;/p&gt;
&lt;p&gt;建議是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;開始長任務前，一次性裝好需要的 MCP。&lt;/li&gt;
&lt;li&gt;不要做一半才發現缺工具，再安裝並重載。&lt;/li&gt;
&lt;li&gt;對大型 MCP 工具集，優先考慮按需載入或減少預設啟用數量。&lt;/li&gt;
&lt;li&gt;不常用的 MCP 不要長期掛在預設配置裡。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果工具定義穩定，Prompt Cache 才有長期命中的基礎。&lt;/p&gt;
&lt;h2 id=&#34;快取殺手三中途修改-claudemd&#34;&gt;快取殺手三：中途修改 CLAUDE.md
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 的專案記憶文件，適合放構建命令、測試命令、架構約定、程式碼風格和專案注意事項。&lt;/p&gt;
&lt;p&gt;它對 Claude Code 很有用，但也會進入上下文。官方說明指出，&lt;code&gt;CLAUDE.md&lt;/code&gt; 會在 session 開始時讀取，並作為使用者訊息提供給 Claude；它也會使用 Anthropic 的 Prompt Cache。首次請求會按完整輸入計費，後續請求如果在快取有效期內命中，就按更低的 cache read 成本處理。&lt;/p&gt;
&lt;p&gt;問題在於：&lt;code&gt;CLAUDE.md&lt;/code&gt; 是內容定址的。你一改文件內容，舊快取就對不上了。&lt;/p&gt;
&lt;p&gt;所以不要在長任務中途頻繁改 &lt;code&gt;CLAUDE.md&lt;/code&gt;。更好的方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任務開始前先檢查 &lt;code&gt;CLAUDE.md&lt;/code&gt; 是否夠用。&lt;/li&gt;
&lt;li&gt;把穩定規則寫進去，把臨時指令放在目前對話裡。&lt;/li&gt;
&lt;li&gt;如果只是一次性任務，不要為了臨時需求修改長期記憶文件。&lt;/li&gt;
&lt;li&gt;如果必須改，最好在一個階段結束後再開始新 session。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 應該是穩定的專案說明，而不是每輪任務都改的便條。&lt;/p&gt;
&lt;h2 id=&#34;快取殺手四中途安裝或更新-skills&#34;&gt;快取殺手四：中途安裝或更新 Skills
&lt;/h2&gt;&lt;p&gt;Skills 也是上下文的一部分。安裝新 Skill、更新 Skill，或者讓 Skill 列表發生變化，都會讓注入到會話裡的上下文不同。&lt;/p&gt;
&lt;p&gt;這類變化通常不會在目前 session 裡立刻完整生效，而是在重新載入、恢復會話或新開會話時體現出來。問題是，一旦重新組裝 messages，舊快取就可能命中不了。&lt;/p&gt;
&lt;p&gt;建議和 MCP 類似：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;開始任務前先確認需要哪些 Skills。&lt;/li&gt;
&lt;li&gt;同一類任務盡量固定 Skill 集合。&lt;/li&gt;
&lt;li&gt;不要在一個長任務中途邊做邊裝 Skill。&lt;/li&gt;
&lt;li&gt;如果安裝了新 Skill，最好把它當成新階段的開始。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對經常做內容生產、程式碼審查、部署、翻譯的工作流，可以把常用 Skills 固定下來，讓上下文結構盡量穩定。&lt;/p&gt;
&lt;h2 id=&#34;快取殺手五空閒時間超過-ttl&#34;&gt;快取殺手五：空閒時間超過 TTL
&lt;/h2&gt;&lt;p&gt;Prompt Cache 不是永久保存。常見預設有效期是幾分鐘級別，Anthropic 文件和 Claude Code 相關說明裡都提到過 5 分鐘左右的快取窗口。超過 TTL 後，即使你發送完全一樣的請求，服務端也可能已經清掉快取。&lt;/p&gt;
&lt;p&gt;這也是很多長任務使用者的體感來源：剛才還很省，去喝杯咖啡回來，再發下一步，Token 又突然漲上去了。&lt;/p&gt;
&lt;p&gt;長任務尤其容易遇到這個問題。你可能要看 Claude Code 的輸出、檢查文件、跑測試、思考下一步，這些操作一不小心就超過 5 分鐘。&lt;/p&gt;
&lt;p&gt;如果你的使用環境支援，可以在長任務前啟用 1 小時 Prompt Cache TTL：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 Windows PowerShell 裡可以寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:ENABLE_PROMPT_CACHING_1H&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意的是，1 小時快取寫入成本通常會高於 5 分鐘快取寫入成本。它不適合所有短任務，但對大型程式碼庫、長對話、複雜多步驟開發任務，往往比頻繁快取過期更划算。&lt;/p&gt;
&lt;h2 id=&#34;怎麼安排一次更省-token-的-claude-code-長任務&#34;&gt;怎麼安排一次更省 Token 的 Claude Code 長任務
&lt;/h2&gt;&lt;p&gt;比較穩的流程可以這樣做：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;任務開始前選定模型，不要中途頻繁切換。&lt;/li&gt;
&lt;li&gt;提前啟用需要的 MCP，不用的 MCP 先關掉。&lt;/li&gt;
&lt;li&gt;檢查 &lt;code&gt;CLAUDE.md&lt;/code&gt;，只保留穩定、關鍵、長期有效的規則。&lt;/li&gt;
&lt;li&gt;提前準備好本次任務需要的 Skills。&lt;/li&gt;
&lt;li&gt;如果是複雜任務，考慮啟用 1 小時 TTL。&lt;/li&gt;
&lt;li&gt;把大任務拆成幾個階段，但每個階段內部盡量保持上下文結構穩定。&lt;/li&gt;
&lt;li&gt;需要探索支線問題時，用 subagent 或單獨 session，不要污染主對話。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這套做法的目標不是絕對不讓快取失效，而是避免那些代價最高、最容易被忽略的失效。&lt;/p&gt;
&lt;h2 id=&#34;一個簡單判斷標準&#34;&gt;一個簡單判斷標準
&lt;/h2&gt;&lt;p&gt;你可以用一句話判斷某個操作是否危險：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;這個操作會不會改變模型、工具定義、系統上下文或會話開頭的固定訊息？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果答案是會，那它大概率會影響 Prompt Cache。越靠近上下文鏈條左側，影響越大。&lt;/p&gt;
&lt;p&gt;常見操作可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切模型：高風險，模型快取隔離。&lt;/li&gt;
&lt;li&gt;新增 MCP 或重載外掛：高風險，工具列表變化。&lt;/li&gt;
&lt;li&gt;修改 &lt;code&gt;CLAUDE.md&lt;/code&gt;：中高風險，專案記憶變化。&lt;/li&gt;
&lt;li&gt;安裝 Skills：中高風險，注入上下文變化。&lt;/li&gt;
&lt;li&gt;普通對話繼續追問：低風險，主要追加 messages。&lt;/li&gt;
&lt;li&gt;空閒超過 TTL：高風險，服務端快取過期。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Claude Code 的 Prompt Cache 優化，關鍵不是背參數，而是讓會話前綴穩定。&lt;/p&gt;
&lt;p&gt;模型不要隨便切，MCP 和 Skills 不要邊做邊裝，&lt;code&gt;CLAUDE.md&lt;/code&gt; 不要當臨時草稿頻繁改，複雜任務盡量延長 TTL。只要這些基礎動作穩定下來，Claude Code 在長任務裡的 Token 成本和回應速度都會更可控。&lt;/p&gt;
&lt;p&gt;最實用的一句話是：開始前配好，開始後少動。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-use-with-prompt-caching&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Tool use with prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/14553240-give-claude-context-claude-md-and-better-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Help Center：CLAUDE.md and prompt caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/mcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code Docs：Connect Claude Code to tools via MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Midjourney vs Stable Diffusion：AI 繪圖工具怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/05/18/midjourney-vs-stable-diffusion-ai-image-generator/</link>
        <pubDate>Mon, 18 May 2026 18:23:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/midjourney-vs-stable-diffusion-ai-image-generator/</guid>
        <description>&lt;p&gt;Midjourney 和 Stable Diffusion 是目前 AI 繪圖領域最常被放在一起比較的兩類工具。它們都能生成高品質圖片，但背後的產品邏輯完全不同。&lt;/p&gt;
&lt;p&gt;Midjourney 更像一台調校好的高階相機：閉源、雲端、付費、省心，輸入幾句話就能得到很有審美完成度的結果。Stable Diffusion 更像一套可自由組裝的專業攝影棚：開源、可本地部署、可深度改造，但需要你理解模型、參數、工作流和硬體。&lt;/p&gt;
&lt;p&gt;所以這不是簡單的「誰更強」，而是「你要什麼」。如果你追求快速出圖和審美穩定，Midjourney 更輕鬆；如果你追求精準控制、批量生產、私有化和可客製工作流，Stable Diffusion 更有空間。&lt;/p&gt;
&lt;h2 id=&#34;一句話結論&#34;&gt;一句話結論
&lt;/h2&gt;&lt;p&gt;如果你是自媒體作者、獨立設計師、插畫靈感創作者，想快速做封面、海報、概念圖、情緒板，優先選 Midjourney。&lt;/p&gt;
&lt;p&gt;如果你要做電商商品圖、AI 模特兒換裝、建築室內渲染、遊戲美術資產、批量生成、私有部署或自動化介面，優先選 Stable Diffusion。&lt;/p&gt;
&lt;p&gt;如果你只是想體驗 AI 繪圖，不想折騰電腦和參數，Midjourney 的學習成本低得多。&lt;/p&gt;
&lt;p&gt;如果你願意研究 ComfyUI、LoRA、ControlNet、Checkpoint，並且手裡有不錯的 NVIDIA 顯卡，Stable Diffusion 的上限更高。&lt;/p&gt;
&lt;h2 id=&#34;核心差異一個是產品一個是生態&#34;&gt;核心差異：一個是產品，一個是生態
&lt;/h2&gt;&lt;p&gt;Midjourney 首先是一個完整產品。你透過官網或 Discord 使用它，模型、算力、佇列、風格、參數、影片功能都由官方維護。它的優勢是預設效果好、審美穩定、出圖速度快，缺點是你不能真正進入底層改模型，也不能把工作流完全搬到自己的機器上。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 則更像一個開放生態。你可以用 SDXL、SD3.5、Flux 等模型，也可以透過 WebUI、ComfyUI、本地腳本或第三方平台運行。它的優勢是可控、可訓練、可批量、可私有化，缺點是安裝、顯卡、模型管理和參數調試都需要時間。&lt;/p&gt;
&lt;p&gt;這決定了兩者的使用體驗：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 讓你少做選擇，換來更穩定的預設審美。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 給你更多選擇，也把更多複雜度交給你。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;畫面品質midjourney-更容易出第一眼好圖&#34;&gt;畫面品質：Midjourney 更容易出第一眼好圖
&lt;/h2&gt;&lt;p&gt;Midjourney 的優勢是首圖驚艷度。你只寫一句「電影感人像」「未來城市海報」「高級香水廣告」，它通常會自動補足光影、構圖、材質和氛圍。對不懂攝影和繪畫的人來說，這種預設審美非常友好。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 的基礎模型也能生成高品質圖片，但預設效果不一定總是穩定。很多時候，你需要合適的模型、LoRA、採樣器、提示詞、負面提示詞和後處理，才能得到同樣驚艷的結果。&lt;/p&gt;
&lt;p&gt;簡單說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 的平均下限更高。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 的最高上限很高，但需要配置和經驗。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要快速做社群封面、部落格配圖、靈感板，Midjourney 通常更省時間。&lt;/p&gt;
&lt;h2 id=&#34;控制力stable-diffusion-更適合嚴肅工作流&#34;&gt;控制力：Stable Diffusion 更適合嚴肅工作流
&lt;/h2&gt;&lt;p&gt;AI 繪圖最難的不是「畫得漂亮」，而是「按要求畫對」。&lt;/p&gt;
&lt;p&gt;比如你希望人物保持同一張臉，姿勢必須符合指定骨骼，商品不能變形，衣服圖案不能亂，建築線稿要轉成真實渲染圖，或者同一個角色要出現在多張分鏡裡。這類需求更考驗控制力。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 在這裡優勢明顯。ControlNet 可以用姿勢、線稿、深度圖、邊緣圖等條件控制畫面結構；LoRA 可以訓練特定人物、產品、服裝、畫風；ComfyUI 可以把生成、放大、去背、重繪、換臉、換裝、批處理串成完整流程。&lt;/p&gt;
&lt;p&gt;Midjourney 也有風格參考、角色參考、局部編輯、圖片參考等能力，最新版本對提示詞理解和細節保持也在增強。但它仍然更適合創意探索，而不是高約束的工業化工作流。&lt;/p&gt;
&lt;h2 id=&#34;提示詞邏輯一個偏審美一個偏工程&#34;&gt;提示詞邏輯：一個偏審美，一個偏工程
&lt;/h2&gt;&lt;p&gt;Midjourney 更像是在理解你的審美意圖。你寫一句自然語言，它會主動補足很多「好看」的東西。對普通使用者來說，這是優點，因為你不需要把燈光、鏡頭、材質、構圖都寫清楚。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 更像是在執行一套可調參數系統。你可以用自然語言描述畫面，也可以精確指定模型、解析度、採樣步數、CFG、ControlNet 條件、LoRA 權重、局部重繪區域。它給你的不是一個按鈕，而是一套可拆解、可複用、可自動化的生成管線。&lt;/p&gt;
&lt;p&gt;這也是為什麼很多人第一次用 Stable Diffusion 會覺得麻煩。它並不是單一 App，而是一個工具箱。&lt;/p&gt;
&lt;h2 id=&#34;人物一致性與風格一致性&#34;&gt;人物一致性與風格一致性
&lt;/h2&gt;&lt;p&gt;Midjourney 已經提供角色參考和風格參考能力，適合保持大致人物氣質、服裝方向和畫面風格。對短篇視覺專案、海報系列、社群媒體內容，它已經夠用。&lt;/p&gt;
&lt;p&gt;但如果你要做長篇漫畫、遊戲角色資產、虛擬模特兒、電商品牌視覺，Stable Diffusion 的可訓練能力更重要。透過 LoRA 或 DreamBooth，你可以把特定角色、產品、服裝和畫風固定下來，讓它們在大量圖片中保持一致。&lt;/p&gt;
&lt;p&gt;這裡的區別可以理解為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 更適合「像同一個人」。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 更適合「就是這個人或這個產品」。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;文字生成與排版&#34;&gt;文字生成與排版
&lt;/h2&gt;&lt;p&gt;過去 AI 繪圖工具普遍不擅長生成文字。現在情況已經改善，但仍不能把它當成專業排版工具。&lt;/p&gt;
&lt;p&gt;Midjourney 的新版本對短英文、標題字、海報風格文字支援更好，但複雜長句、中文排版、多行商業文案仍容易出錯。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 生態裡，SD3.5 等新一代模型引入更強的文字編碼器，對長提示詞和文字理解有所改善。可是在實際商業設計中，如果要做準確文字，最穩妥的流程仍然是：先用 AI 生成畫面，再用 Photoshop、Illustrator、Figma 或 Canva 完成文字排版。&lt;/p&gt;
&lt;h2 id=&#34;影片能力&#34;&gt;影片能力
&lt;/h2&gt;&lt;p&gt;Midjourney 已經內建圖片轉影片能力，可以從圖片生成短影片，並繼續延展。它的優勢是入口簡單，適合把靜態圖做成社群短片、氛圍片或動態封面。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 也有 AnimateDiff、SVD、ComfyUI 影片工作流等方案，但搭建和調試成本更高。它更適合願意折騰節點、顯存、模型和影格一致性的使用者。&lt;/p&gt;
&lt;p&gt;如果你只是想把一張圖動起來，Midjourney 更省心。&lt;/p&gt;
&lt;p&gt;如果你想把影片生成嵌入自己的自動化流程，Stable Diffusion 生態更自由。&lt;/p&gt;
&lt;h2 id=&#34;硬體與成本&#34;&gt;硬體與成本
&lt;/h2&gt;&lt;p&gt;Midjourney 是雲端付費服務。你不需要顯卡，手機、平板、輕薄筆電都能用。成本主要是訂閱費用和生成額度。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 可以本地運行，軟體和很多模型本身免費，但硬體並不免費。想獲得較好的體驗，通常需要 NVIDIA 顯卡和足夠顯存。SDXL、SD3.5、Flux、影片工作流、高清放大和批量生成都會吃顯存。入門可以用 8GB 顯存嘗試，但更舒服的體驗通常需要 12GB、16GB 或更高。&lt;/p&gt;
&lt;p&gt;成本選擇可以這樣看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;低頻使用：Midjourney 訂閱更划算。&lt;/li&gt;
&lt;li&gt;高頻批量生產：Stable Diffusion 本地部署長期成本更低。&lt;/li&gt;
&lt;li&gt;沒有顯卡：優先 Midjourney 或雲端 SD 平台。&lt;/li&gt;
&lt;li&gt;已有高效能顯卡：Stable Diffusion 更值得折騰。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;商業使用看你是要創意圖還是生產線&#34;&gt;商業使用：看你是要創意圖還是生產線
&lt;/h2&gt;&lt;p&gt;Midjourney 很適合前期概念探索。品牌視覺方向、廣告氛圍、封面圖、遊戲場景靈感、角色設定草圖，都可以用它快速跑出大量方案。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 更適合進入生產環節。比如電商模特兒換裝、產品圖批量換背景、室內設計線稿轉渲染、角色 LoRA 訓練、企業私有素材生成、API 自動出圖。它可以被接入腳本、資料庫、後台任務和內部工具，成為一條可複用的生產線。&lt;/p&gt;
&lt;p&gt;換句話說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney 更像創意部門的靈感加速器。&lt;/li&gt;
&lt;li&gt;Stable Diffusion 更像技術團隊可搭建的圖像生產系統。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2026-年怎麼選&#34;&gt;2026 年怎麼選
&lt;/h2&gt;&lt;p&gt;選擇 Midjourney，如果你符合這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你希望輸入幾句話就得到高品質圖片。&lt;/li&gt;
&lt;li&gt;你不想研究顯卡、模型、節點和參數。&lt;/li&gt;
&lt;li&gt;你主要做封面圖、插畫、海報、概念圖、靈感圖。&lt;/li&gt;
&lt;li&gt;你願意用訂閱費換省心體驗。&lt;/li&gt;
&lt;li&gt;你對極端精確控制沒有強需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;選擇 Stable Diffusion，如果你符合這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你需要控制人物姿勢、產品形態、線稿結構或畫面布局。&lt;/li&gt;
&lt;li&gt;你要訓練自己的角色、商品、品牌風格或專用模型。&lt;/li&gt;
&lt;li&gt;你要批量生成圖片，或者把 AI 繪圖接入網站、軟體和工作流。&lt;/li&gt;
&lt;li&gt;你重視本地部署、隱私和可控性。&lt;/li&gt;
&lt;li&gt;你願意花時間學習 ComfyUI、LoRA、ControlNet 等生態工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最現實的組合用法&#34;&gt;最現實的組合用法
&lt;/h2&gt;&lt;p&gt;很多專業使用者最後並不是二選一，而是組合使用。&lt;/p&gt;
&lt;p&gt;一種常見流程是：先用 Midjourney 快速探索風格和構圖，找到審美方向；再用 Stable Diffusion 做精確控制、角色一致性、產品一致性和批量生產；最後用傳統設計軟體完成文字、版式和細節修圖。&lt;/p&gt;
&lt;p&gt;這比爭論誰更強更實用。&lt;/p&gt;
&lt;p&gt;Midjourney 負責快速看到可能性，Stable Diffusion 負責把可能性變成可控流程。前者提高創意速度，後者提高生產確定性。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Midjourney 和 Stable Diffusion 的差異，本質上是「審美自動化」和「工作流可控性」的差異。&lt;/p&gt;
&lt;p&gt;Midjourney 適合大多數希望快速得到漂亮圖片的人。它降低了 AI 繪圖的門檻，也讓非技術使用者很快進入創作狀態。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 適合需要控制、訓練、批量、私有化和自動化的人。它的學習成本更高，但一旦跑通，就能成為真正的圖像生產基礎設施。&lt;/p&gt;
&lt;p&gt;如果你還沒有明確需求，先用 Midjourney。&lt;br&gt;
如果你已經開始抱怨「這張圖哪裡都好，就是不按我的要求來」，那就該學 Stable Diffusion 了。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.midjourney.com/hc/en-us/articles/32199405667853-Version&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Version 官方文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.midjourney.com/hc/en-us/articles/37460773864589-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney Video 官方文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Stability-AI/sd3.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stability AI Stable Diffusion 3.5 GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Sulphur 2 為什麼火了？開源 AI 影片生成、無審查爭議和本地部署門檻</title>
        <link>https://knightli.com/zh-tw/2026/05/18/sulphur-2-open-ai-video-generation-model/</link>
        <pubDate>Mon, 18 May 2026 00:27:37 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/18/sulphur-2-open-ai-video-generation-model/</guid>
        <description>&lt;p&gt;Sulphur 2 最近在 AI 影片生成社群裡引發了不少討論。&lt;/p&gt;
&lt;p&gt;它不是 Sora、Runway、Pika 那樣的線上商業產品，也不是從零訓練出來的新架構。更準確地說，Sulphur 2 是一個基於 LTX 2.3 微調的開源權重影片生成模型，面向本地生成、可控工作流和更開放的提示詞響應。&lt;/p&gt;
&lt;p&gt;真正讓它受到關注的，不只是「能生成影片」，而是它把一個老問題重新推到台前：AI 影片模型到底應該由平台統一設定內容邊界，還是讓本地使用者在合法範圍內自行承擔責任？&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-和-ltx-23-的關係&#34;&gt;Sulphur 2 和 LTX 2.3 的關係
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的底座是 Lightricks 開源的 LTX 2.3。&lt;/p&gt;
&lt;p&gt;LTX 2.3 本身就是一個較完整的影片生成模型路線，支援文生影片、圖生影片、可變幀率、首尾幀控制、音訊同步等能力。它的生態也更容易接入 ComfyUI 等本地工作流。&lt;/p&gt;
&lt;p&gt;Sulphur 2 並沒有改變這個基礎結構，而是在 LTX 2.3 上做了針對性微調。原文提到，開發團隊使用了超過 12.5 萬個影片樣本進行訓練，並提供了 BF16、FP8 mixed、Distill LoRA 等不同版本，方便使用者按硬體條件選擇。&lt;/p&gt;
&lt;p&gt;這意味著，Sulphur 2 更像是 LTX 2.3 生態裡的一個衍生模型包，而不是一個完全獨立的新平台。&lt;/p&gt;
&lt;p&gt;如果你關心本地部署、顯存需求和 ComfyUI 工作流，可以參考站內之前的部署記錄：&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/12/sulphur-2-ltx-2-3-video-generation/&#34; &gt;Sulphur 2 能在 8G 顯存上跑嗎？LTX 2.3 影片模型本地部署記錄&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它會被稱為無審查&#34;&gt;為什麼它會被稱為「無審查」
&lt;/h2&gt;&lt;p&gt;Sulphur 2 最有爭議的標籤，是 uncensored，也就是常被翻譯成「無審查」。&lt;/p&gt;
&lt;p&gt;這個詞很容易被誤解。它不應該被理解成「可以生成任何內容」，更不意味著可以用於違法、侵權、騷擾、偽造身份或製作非自願影像。更準確的理解是：相比很多商業影片生成平台，Sulphur 2 更少因為某些敏感但合法的題材直接拒絕響應。&lt;/p&gt;
&lt;p&gt;商業平台通常會採取保守策略。為了降低法律、品牌和合規風險，它們可能會屏蔽一批模糊地帶的提示詞。這樣做能降低濫用機率，但也會誤傷一些正常創作場景，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;醫學教育。&lt;/li&gt;
&lt;li&gt;歷史題材。&lt;/li&gt;
&lt;li&gt;新聞再現。&lt;/li&gt;
&lt;li&gt;藝術實驗。&lt;/li&gt;
&lt;li&gt;小眾風格創作。&lt;/li&gt;
&lt;li&gt;嚴肅紀錄片素材構思。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sulphur 2 的思路是把更多判斷權交給本地使用者，同時保留對非法內容的底線過濾。這個方向會帶來更高創作自由度，也會帶來更高責任要求。&lt;/p&gt;
&lt;h2 id=&#34;技術上不只是去掉限制&#34;&gt;技術上不只是「去掉限制」
&lt;/h2&gt;&lt;p&gt;把 Sulphur 2 說成「刪掉審查層的 LTX 2.3」並不完整。&lt;/p&gt;
&lt;p&gt;從公開資訊看，它提供的是一組圍繞 LTX 2.3 的模型權重和配套工具，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BF16 全精度版本，適合顯存更充足的硬體。&lt;/li&gt;
&lt;li&gt;FP8 mixed 版本，用更低顯存換取更好的可用性。&lt;/li&gt;
&lt;li&gt;Distill LoRA 版本，適合在速度和品質之間取捨。&lt;/li&gt;
&lt;li&gt;ComfyUI 工作流，方便使用者進行文生影片和圖生影片測試。&lt;/li&gt;
&lt;li&gt;Prompt Enhancer，用於把簡短描述擴展成更適合影片生成的提示詞。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;影片生成和圖片生成不同。影片裡不只有主體和風格，還包含鏡頭運動、人物動作、時間連續性、幀間一致性、景別變化和節奏控制。提示詞寫得太短，模型經常會補出不穩定細節。&lt;/p&gt;
&lt;p&gt;所以 Prompt Enhancer 的意義在於降低提示詞門檻：使用者給出一個簡單想法，小模型把它擴展成更適合影片模型理解的描述，再交給 Sulphur 2 工作流生成。&lt;/p&gt;
&lt;h2 id=&#34;實際體驗更聽話但不是萬能&#34;&gt;實際體驗：更聽話，但不是萬能
&lt;/h2&gt;&lt;p&gt;從社群回饋看，Sulphur 2 的一個明顯特點是更願意遵循提示詞。&lt;/p&gt;
&lt;p&gt;因為限制更少，它不容易在某些合法題材上突然拒絕、降級或繞開使用者意圖。這對需要精確控制內容的人很有吸引力，尤其是本地創作、實驗影像、概念短片和小眾題材。&lt;/p&gt;
&lt;p&gt;但它並不是「影片生成終局」。&lt;/p&gt;
&lt;p&gt;當前開源影片模型仍然普遍存在這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人體動作不自然。&lt;/li&gt;
&lt;li&gt;肢體和手部容易變形。&lt;/li&gt;
&lt;li&gt;長鏡頭一致性不足。&lt;/li&gt;
&lt;li&gt;多主體互動容易混亂。&lt;/li&gt;
&lt;li&gt;複雜場景理解偏字面。&lt;/li&gt;
&lt;li&gt;畫面符合提示詞，但美感和剪輯感不足。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題不是 Sulphur 2 獨有，而是當前 AI 影片生成模型的共性。它能改善一部分提示詞響應問題，但不能消除影片生成本身的技術難點。&lt;/p&gt;
&lt;h2 id=&#34;硬體門檻仍然存在&#34;&gt;硬體門檻仍然存在
&lt;/h2&gt;&lt;p&gt;Sulphur 2 被稱為開源模型，但開源不等於普通電腦隨便跑。&lt;/p&gt;
&lt;p&gt;如果想獲得較好效果，仍然需要比較強的顯卡。原文提到，FP8 版本降低了顯存需求，但想穩定使用，通常仍需要較高顯存。BF16 版本對硬體要求更高，更適合高階顯卡或雲端 GPU。&lt;/p&gt;
&lt;p&gt;這意味著 Sulphur 2 的「大眾化」並不是一鍵網頁工具式的大眾化，而是開源社群意義上的大眾化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;權重可以下載。&lt;/li&gt;
&lt;li&gt;工作流可以修改。&lt;/li&gt;
&lt;li&gt;使用者可以本地執行。&lt;/li&gt;
&lt;li&gt;開發者可以二次微調。&lt;/li&gt;
&lt;li&gt;社群可以共享參數和節點配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它降低的是控制權門檻，不一定降低硬體門檻。&lt;/p&gt;
&lt;h2 id=&#34;最大爭議開放和安全怎麼平衡&#34;&gt;最大爭議：開放和安全怎麼平衡
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的爭議，本質上不是某個模型參數好不好，而是開源 AI 影片生成的治理問題。&lt;/p&gt;
&lt;p&gt;支持者認為，開源模型不應該替使用者做過度判斷。只要內容合法，使用者就應該能在本地環境裡探索藝術、教育、研究和創作邊界。&lt;/p&gt;
&lt;p&gt;質疑者擔心，影片比圖片更容易造成現實傷害。更開放的模型可能被用於偽造、騷擾、侵權、誤導傳播或其他濫用場景。即使開發者保留了非法內容過濾，也很難完全阻止二次修改和惡意使用。&lt;/p&gt;
&lt;p&gt;這兩種觀點都不能簡單忽視。&lt;/p&gt;
&lt;p&gt;開源模型需要自由，也需要責任。比較可行的方向不是把模型徹底封死，也不是完全放任，而是建立更清晰的社群規範、模型卡說明、使用限制、溯源工具和舉報機制。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些人關注&#34;&gt;適合哪些人關注
&lt;/h2&gt;&lt;p&gt;Sulphur 2 更適合這些使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經熟悉 ComfyUI 或本地影片生成工作流的人。&lt;/li&gt;
&lt;li&gt;想研究 LTX 2.3 衍生模型效果的開發者。&lt;/li&gt;
&lt;li&gt;需要更高提示詞響應度的創作者。&lt;/li&gt;
&lt;li&gt;希望在本地環境裡做可控實驗的團隊。&lt;/li&gt;
&lt;li&gt;想做二次微調、LoRA 或工作流最佳化的模型玩家。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想快速生成一個可發社群平台的短影片，線上產品可能仍然更省心。Sulphur 2 的價值不在於「點一下就出片」，而在於給願意折騰的人更多控制權。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的意義，不只是又多了一個 AI 影片生成模型。&lt;/p&gt;
&lt;p&gt;它更像是開源影片生成社群對商業平台保守策略的一次回應：當模型越來越強，內容邊界應該由誰來定義？&lt;/p&gt;
&lt;p&gt;從技術角度看，它基於 LTX 2.3，提供多種精度版本、LoRA、ComfyUI 工作流和 Prompt Enhancer，適合本地生成和二次開發。&lt;/p&gt;
&lt;p&gt;從生態角度看，它也提醒我們：影片生成的開放會帶來更大創作自由，也會帶來更高濫用風險。未來開源 AI 影片模型能否健康發展，取決於技術能力、社群規範和使用者責任能否一起跟上。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2036113362052965203&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;知乎：開源影片生成新突破：Sulphur 2 讓「無審查」AI影片走向大眾&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulphur-2.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 官方介紹頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://opencsg.com/models/AIWizards/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 OpenCSG 模型頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sulphur2.org/deploy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sulphur 2 Base Deploy Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Free AI Image Generator 哪個好用？免費 AI 繪圖工具對比指南</title>
        <link>https://knightli.com/zh-tw/2026/05/17/free-ai-image-generator-tools-guide/</link>
        <pubDate>Sun, 17 May 2026 23:10:43 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/free-ai-image-generator-tools-guide/</guid>
        <description>&lt;p&gt;想找一款好用的 &lt;strong&gt;free ai image generator&lt;/strong&gt;，現在已經不是「有沒有」的問題，而是「該選哪一種」的問題。&lt;/p&gt;
&lt;p&gt;市面上的免費 AI 繪圖工具大致可以分成三類：本地開源工具、網頁端免費額度工具，以及大廠提供的高額度或免費入口。它們都能生成圖片，但適合的人群、學習成本、版權邊界和可控性差別很大。&lt;/p&gt;
&lt;p&gt;需要先說清楚一點：免費不等於永久免費、無限制、可商用。網頁端工具的免費額度、排隊策略、浮水印、解析度限制和商用條款都可能調整；本地開源工具雖然軟體免費，但仍然需要顯卡、模型檔案、時間成本，以及對模型授權的判斷。&lt;/p&gt;
&lt;h2 id=&#34;本地開源適合想長期免費和深度控制的人&#34;&gt;本地開源：適合想長期免費和深度控制的人
&lt;/h2&gt;&lt;p&gt;如果你有一張性能不錯的 NVIDIA 顯卡，比如 RTX 3060、4060 或更高規格，本地部署依然是最接近「無限免費」的方案。它不按張數收費，也不需要把提示詞和素材上傳到第三方平台，更適合重度玩家、設計師和需要隱私的工作流。&lt;/p&gt;
&lt;h3 id=&#34;stable-diffusion-webui--comfyui&#34;&gt;Stable Diffusion WebUI / ComfyUI
&lt;/h3&gt;&lt;p&gt;Stable Diffusion 生態是目前最成熟的開源 AI 繪圖體系之一。常見入口包括 Stable Diffusion WebUI 和 ComfyUI。&lt;/p&gt;
&lt;p&gt;Stable Diffusion WebUI 更像傳統軟體介面，適合想快速上手文生圖、圖生圖、局部重繪、高清修復的使用者。ComfyUI 則偏節點式工作流，學習曲線更高，但可控性非常強，適合複雜流程，比如批量生成、ControlNet、參考圖約束、多模型組合和自動化管線。&lt;/p&gt;
&lt;p&gt;它們最大的優勢不是「免費」兩個字，而是生態：Checkpoint、LoRA、ControlNet、VAE、工作流模板和各種外掛都很豐富。你可以生成寫實人像、二次元角色、電商產品圖、建築概念圖、遊戲資產草圖，也可以圍繞一個固定風格反覆打磨。&lt;/p&gt;
&lt;p&gt;代價也很明確：你需要安裝環境、管理模型、學習參數，還要注意不同模型的授權條款。對新手來說，它不是最省心的 free ai image generator，但它是最適合長期折騰和深度客製化的方案。&lt;/p&gt;
&lt;h3 id=&#34;fooocus&#34;&gt;Fooocus
&lt;/h3&gt;&lt;p&gt;Fooocus 可以理解為更「傻瓜化」的 Stable Diffusion XL 本地工具。它把大量參數藏在後面，使用者主要輸入提示詞和選擇風格，就能生成品質不錯的圖片。&lt;/p&gt;
&lt;p&gt;如果你覺得 ComfyUI 太工程化、Stable Diffusion WebUI 參數太多，Fooocus 是更友好的起點。它適合做風格探索、封面草圖、人物概念、產品視覺和社群配圖。缺點是可控性不如完整的 ComfyUI 工作流，但對很多人來說，這反而是優點。&lt;/p&gt;
&lt;h2 id=&#34;網頁端免費額度適合不想安裝每天輕量使用的人&#34;&gt;網頁端免費額度：適合不想安裝、每天輕量使用的人
&lt;/h2&gt;&lt;p&gt;如果你沒有獨立顯卡，或者只是偶爾生成幾張圖，網頁端工具更省心。它們通常透過每日積分、免費 Token、排隊生成或低速模式提供免費使用。&lt;/p&gt;
&lt;p&gt;這類工具的核心判斷標準不是「免費額度有多少」，而是：額度是否穩定、模型品質是否夠用、是否支援中文、是否支援圖生圖和局部編輯、生成結果能否下載高清圖，以及是否允許商用。&lt;/p&gt;
&lt;h3 id=&#34;seaart-ai&#34;&gt;SeaArt AI
&lt;/h3&gt;&lt;p&gt;SeaArt AI 是一個功能較完整的 Web 端 AI 繪圖平台，整合了大量 Stable Diffusion 風格模型，常見能力包括文生圖、圖生圖、條件控制、高清修復、擴圖和模型社群。&lt;/p&gt;
&lt;p&gt;它的優勢是上手快、風格多、中文介面友好。你可以用它做動漫角色、寫實攝影、科技風海報、產品概念圖，也可以借助現成模型快速復刻某類視覺風格。&lt;/p&gt;
&lt;p&gt;需要注意的是，平台積分、每日任務和免費額度會隨營運策略變化。把它當作「每天可輕量使用的免費網頁工具」更穩妥，不建議把某個具體額度當成長期承諾。&lt;/p&gt;
&lt;h3 id=&#34;leonardoai&#34;&gt;Leonardo.ai
&lt;/h3&gt;&lt;p&gt;Leonardo.ai 更偏創意生產和遊戲美術工作流。它的圖像質感、光影、概念設計和 3D 風格表現都比較突出，適合遊戲原畫、角色設定、場景概念、品牌視覺和產品渲染草圖。&lt;/p&gt;
&lt;p&gt;它通常提供免費計畫或免費積分，但不同地區、帳號狀態和產品策略下，額度可能變化。對於不想本地部署、又希望獲得較高畫面質感的人來說，Leonardo.ai 是值得嘗試的網頁端 free ai image generator。&lt;/p&gt;
&lt;h3 id=&#34;clipdrop&#34;&gt;Clipdrop
&lt;/h3&gt;&lt;p&gt;Clipdrop 來自 Stability AI 生態，除了文生圖，還提供去背景、圖片放大、清理物體、換光、塗鴉變圖片等實用工具。&lt;/p&gt;
&lt;p&gt;它更像一組 AI 圖像工具箱，而不只是單純的繪圖入口。對於編輯已有圖片、做快速視覺處理、生成素材草圖的人來說，Clipdrop 的價值往往不只在「生成一張圖」，而在生成之後的後處理能力。&lt;/p&gt;
&lt;p&gt;免費使用者通常會遇到次數、排隊、浮水印或解析度限制，具體以平台目前規則為準。&lt;/p&gt;
&lt;h2 id=&#34;大廠入口適合想省心重視文字理解的人&#34;&gt;大廠入口：適合想省心、重視文字理解的人
&lt;/h2&gt;&lt;p&gt;大廠 AI 圖像工具的優勢是穩定、易用、提示詞理解能力強。尤其當你希望用自然語言描述一個複雜場景，或者想生成包含文字的海報、封面、插畫時，它們往往比很多開源模型更省心。&lt;/p&gt;
&lt;h3 id=&#34;microsoft-designer--bing-image-creator&#34;&gt;Microsoft Designer / Bing Image Creator
&lt;/h3&gt;&lt;p&gt;Microsoft Designer 和 Bing Image Creator 接入了 OpenAI 的 DALL-E 系列圖像能力。它們的優點是提示詞理解好，對複雜場景的還原能力強，也更擅長處理畫面中的英文字符、海報標題和設計感構圖。&lt;/p&gt;
&lt;p&gt;如果你的需求是「用中文或英文描述一個封面，然後直接拿到一張完成度較高的圖」，微軟系入口通常非常適合。它適合文章封面、社群海報、活動圖、創意插畫和輕量商業視覺草圖。&lt;/p&gt;
&lt;p&gt;免費使用策略可能包括加速額度、排隊或速度差異。實際額度和限制要以 Microsoft 當前頁面為準。&lt;/p&gt;
&lt;h3 id=&#34;adobe-firefly&#34;&gt;Adobe Firefly
&lt;/h3&gt;&lt;p&gt;Adobe Firefly 的定位和普通 AI 繪圖站不完全一樣。它更強調設計工作流、創意填充、智慧擴展、文字效果和與 Adobe 生態的整合。&lt;/p&gt;
&lt;p&gt;如果你已經使用 Photoshop、Illustrator 或 Express，Firefly 的優勢會更明顯。它適合修圖、擴圖、替換背景、生成設計素材，以及在已有圖片基礎上做創意改動。&lt;/p&gt;
&lt;p&gt;Firefly 也經常被拿來討論「商用安全」，因為 Adobe 強調訓練資料來源和授權邊界。但具體能否商用、是否需要付費方案、免費積分如何計算，仍然要看 Adobe 當前條款和帳號方案。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選按用途而不是按名氣&#34;&gt;怎麼選：按用途而不是按名氣
&lt;/h2&gt;&lt;p&gt;如果你想要最省心的封面圖、海報圖、帶文字的創意圖，優先試 Microsoft Designer 或 Bing Image Creator。它們對自然語言的理解能力強，出圖完成度高，特別適合非專業使用者快速拿結果。&lt;/p&gt;
&lt;p&gt;如果你想探索多種風格，比如寫實、動漫、遊戲原畫、產品渲染和科技感視覺，可以試 SeaArt AI 或 Leonardo.ai。它們適合快速試風格，也適合沒有本地顯卡的人。&lt;/p&gt;
&lt;p&gt;如果你想處理已有圖片，而不是只生成新圖，可以關注 Adobe Firefly 和 Clipdrop。前者更偏設計生產，後者更像輕量圖像工具箱。&lt;/p&gt;
&lt;p&gt;如果你願意學習，電腦配置也足夠，Stable Diffusion WebUI、ComfyUI 和 Fooocus 仍然是最值得長期投入的免費方案。它們的上限更高，成本更低，但需要你承擔學習和維護成本。&lt;/p&gt;
&lt;h2 id=&#34;免費-ai-繪圖工具的幾個坑&#34;&gt;免費 AI 繪圖工具的幾個坑
&lt;/h2&gt;&lt;p&gt;第一，免費額度會變。今天每天送多少積分，不代表下個月仍然一樣。寫進工作流之前，最好先確認平台最新規則。&lt;/p&gt;
&lt;p&gt;第二，免費不等於可商用。很多工具允許免費生成，但商用授權、版權歸屬、訓練資料爭議、品牌素材使用限制，都需要單獨看條款。&lt;/p&gt;
&lt;p&gt;第三，生成品質不只取決於模型。提示詞、參考圖、解析度、後期處理、局部重繪和選圖能力，都會決定最終效果。&lt;/p&gt;
&lt;p&gt;第四，本地開源也有授權問題。軟體開源不代表所有模型都可以商用。下載 Checkpoint、LoRA 或工作流時，要查看作者說明。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;如果你只是想找一個免費的 AI 繪圖入口，Microsoft Designer、Bing Image Creator、SeaArt AI、Leonardo.ai、Clipdrop 和 Adobe Firefly 都值得試。&lt;/p&gt;
&lt;p&gt;如果你想長期、穩定、低成本地生成大量圖片，本地 Stable Diffusion 生態才是更接近「終極免費」的答案。&lt;/p&gt;
&lt;p&gt;真正好用的 free ai image generator，不一定是免費額度最多的那個，而是最適合你的使用場景、版權要求和學習成本的那個。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Stable Diffusion WebUI: &lt;a class=&#34;link&#34; href=&#34;https://github.com/AUTOMATIC1111/stable-diffusion-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/AUTOMATIC1111/stable-diffusion-webui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ComfyUI: &lt;a class=&#34;link&#34; href=&#34;https://github.com/comfyanonymous/ComfyUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/comfyanonymous/ComfyUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fooocus: &lt;a class=&#34;link&#34; href=&#34;https://github.com/lllyasviel/Fooocus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/lllyasviel/Fooocus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SeaArt AI: &lt;a class=&#34;link&#34; href=&#34;https://www.seaart.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.seaart.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Leonardo.ai: &lt;a class=&#34;link&#34; href=&#34;https://leonardo.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://leonardo.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clipdrop: &lt;a class=&#34;link&#34; href=&#34;https://clipdrop.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://clipdrop.co/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Designer: &lt;a class=&#34;link&#34; href=&#34;https://designer.microsoft.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://designer.microsoft.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bing Image Creator: &lt;a class=&#34;link&#34; href=&#34;https://www.bing.com/images/create&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bing.com/images/create&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Adobe Firefly: &lt;a class=&#34;link&#34; href=&#34;https://www.adobe.com/products/firefly.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.adobe.com/products/firefly.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>QuillBot AI Detector 準嗎？AI 文字檢測原理、適用人群和注意事項</title>
        <link>https://knightli.com/zh-tw/2026/05/17/quillbot-ai-checker-detector-guide/</link>
        <pubDate>Sun, 17 May 2026 23:05:51 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/quillbot-ai-checker-detector-guide/</guid>
        <description>&lt;p&gt;QuillBot AI Checker 通常也被稱為 QuillBot AI Detector，是 QuillBot 推出的一款 AI 內容檢測工具。&lt;/p&gt;
&lt;p&gt;它的用途很直接：幫助使用者估計一段文字有多大機率是由 AI 生成的。&lt;/p&gt;
&lt;p&gt;需要先說明一點：QuillBot 的文字 AI Detector 主要分析文字，不分析圖片、影片或其他富媒體。不過 QuillBot 另有獨立的 AI Image Detector，可以用來判斷圖片更像是人類拍攝 / 繪製，還是由 AI 圖像工具生成。兩者都屬於 QuillBot 的檢測工具生態，但不是同一種輸入類型。&lt;/p&gt;
&lt;h2 id=&#34;quillbot-ai-checker-能做什麼&#34;&gt;QuillBot AI Checker 能做什麼
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 的核心功能是文字 AI 檢測。&lt;/p&gt;
&lt;p&gt;使用者可以把文字貼到檢測框中，也可以依帳號權限上傳檔案。工具會根據文字特徵進行分析，並給出 AI 生成機率或風險提示。&lt;/p&gt;
&lt;p&gt;它關注的通常不是某一個單字，而是整體語言模式，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;句子結構是否過於均勻。&lt;/li&gt;
&lt;li&gt;用詞是否高度可預測。&lt;/li&gt;
&lt;li&gt;段落推進是否像模板。&lt;/li&gt;
&lt;li&gt;重複表達是否偏多。&lt;/li&gt;
&lt;li&gt;語氣是否過於平滑、缺少自然波動。&lt;/li&gt;
&lt;li&gt;行文邏輯是否像大型語言模型生成的通用答案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最終結果通常會以百分比或風險等級呈現，幫助使用者判斷這段內容是否可能被認為是 AI 生成。&lt;/p&gt;
&lt;h2 id=&#34;逐句標示有什麼用&#34;&gt;逐句標示有什麼用
&lt;/h2&gt;&lt;p&gt;這類 AI 檢測工具不只給整體分數，也常會對文字做局部標示。&lt;/p&gt;
&lt;p&gt;例如，一段文章裡有些句子可能被標為更像 AI，有些句子更像人工寫作，有些句子則可能像經過 AI 改寫或潤飾。&lt;/p&gt;
&lt;p&gt;這種標示的意義，不是讓使用者機械地追求 0% AI，而是幫助定位問題。&lt;/p&gt;
&lt;p&gt;如果某一段被標得很高，通常可以回頭檢查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否太像說明書。&lt;/li&gt;
&lt;li&gt;是否全是泛泛而談。&lt;/li&gt;
&lt;li&gt;是否缺少具體例子。&lt;/li&gt;
&lt;li&gt;是否每句話長度和節奏都差不多。&lt;/li&gt;
&lt;li&gt;是否沒有真實經歷、判斷過程或細節。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對寫作者來說，這比只看一個總分更有用。真正應該改的不是「讓檢測器看不出來」，而是讓內容更具體、更有判斷，也更符合真實寫作目的。&lt;/p&gt;
&lt;h2 id=&#34;quillbot-還有-ai-image-detector&#34;&gt;QuillBot 還有 AI Image Detector
&lt;/h2&gt;&lt;p&gt;除了文字檢測，QuillBot 也提供獨立的 AI Image Detector。&lt;/p&gt;
&lt;p&gt;這個工具面向圖片，嘗試判斷圖片是人類拍攝 / 繪製，還是由 AI 圖像模型生成。常見討論會把它和 Midjourney、DALL-E、Stable Diffusion 等生成工具放在一起。&lt;/p&gt;
&lt;p&gt;但要注意，文字 AI Detector 和 AI Image Detector 是兩個不同工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字檢測器分析文字。&lt;/li&gt;
&lt;li&gt;圖片檢測器分析圖片。&lt;/li&gt;
&lt;li&gt;兩者都只能給出機率判斷，不等於司法鑑定或絕對結論。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要檢查一篇文章和配圖，需要分別使用對應工具，而不是把圖片能力理解成文字檢測器的一部分。&lt;/p&gt;
&lt;h2 id=&#34;典型使用場景&#34;&gt;典型使用場景
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 最常見的使用場景有三類。&lt;/p&gt;
&lt;p&gt;第一類是學生自查。&lt;/p&gt;
&lt;p&gt;很多學校會使用 Turnitin 或其他學術誠信工具檢查論文、報告和作業。學生在提交前用 AI Detector 做自查，主要是想了解自己的文章是否可能被誤判為 AI 內容。&lt;/p&gt;
&lt;p&gt;但這裡要特別謹慎。AI 檢測器不是最終裁判，不能保證學校系統會給出相同結果，也不能保證「低 AI 分數」就一定安全。更穩妥的做法，是保留寫作過程、資料來源、草稿版本和修改記錄。&lt;/p&gt;
&lt;p&gt;第二類是教師和教育工作者檢查作業。&lt;/p&gt;
&lt;p&gt;教師可以把 AI Detector 當成線索工具，用來發現明顯異常的文字。但不建議只憑一個檢測分數判斷學生作弊。更合理的方式是結合課堂表現、寫作記錄、口頭問答、引用來源和版本歷史一起判斷。&lt;/p&gt;
&lt;p&gt;第三類是內容創作者、編輯和網站營運者審核外部稿件。&lt;/p&gt;
&lt;p&gt;如果網站收大量投稿、SEO 文章或外包內容，AI Detector 可以幫助初篩低品質、模板化、批量生成的稿件。尤其是內容站和媒體編輯，需要避免網站裡充斥大量沒有經驗、沒有觀點、沒有事實核查的 AI 拼裝內容。&lt;/p&gt;
&lt;p&gt;但同樣要記住，檢測器只能輔助判斷。真正重要的是內容是否原創、準確、有用、可信，而不是單純追求某個檢測分數。&lt;/p&gt;
&lt;h2 id=&#34;和-paraphraserai-humanizer-的關係&#34;&gt;和 Paraphraser、AI Humanizer 的關係
&lt;/h2&gt;&lt;p&gt;QuillBot 最出名的功能之一，是 Paraphraser，也就是智慧改寫工具。它還提供 AI Humanizer，用來把 AI 生成文字改得更接近人類寫作。&lt;/p&gt;
&lt;p&gt;這幾個工具經常被放在一起使用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用者先用 ChatGPT、Claude 或其他模型寫初稿。&lt;/li&gt;
&lt;li&gt;再用 QuillBot Paraphraser 改寫句子。&lt;/li&gt;
&lt;li&gt;或用 AI Humanizer 調整語氣。&lt;/li&gt;
&lt;li&gt;最後放進 AI Checker 裡看檢測結果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這種流程很常見，但也容易走偏。&lt;/p&gt;
&lt;p&gt;如果目標只是「把 AI 機率洗低」，很容易變成機械改寫。文字可能變得更繞、更不自然，甚至破壞原本資訊準確性。&lt;/p&gt;
&lt;p&gt;更好的使用方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Paraphraser 改善表達清晰度。&lt;/li&gt;
&lt;li&gt;用 Humanizer 調整語氣和節奏。&lt;/li&gt;
&lt;li&gt;用 AI Checker 找出過於模板化的段落。&lt;/li&gt;
&lt;li&gt;最後由人重新核對事實、邏輯和表達目的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，AI Checker 不應該只服務於「繞過檢測」，而應該服務於提升內容品質。&lt;/p&gt;
&lt;h2 id=&#34;ai-檢測器的誤判風險&#34;&gt;AI 檢測器的誤判風險
&lt;/h2&gt;&lt;p&gt;所有 AI 內容檢測器都存在誤判。&lt;/p&gt;
&lt;p&gt;原因很簡單：它們不是在讀取「作者是誰」，而是在估計文字模式。只要一段人類寫作足夠規整、標準化、模板化，就可能被誤判為 AI。反過來，一段 AI 生成文字經過充分編輯、加入具體細節和個人判斷後，也可能被判得更像人寫。&lt;/p&gt;
&lt;p&gt;容易被誤判的內容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;學術摘要。&lt;/li&gt;
&lt;li&gt;公文和通知。&lt;/li&gt;
&lt;li&gt;產品說明。&lt;/li&gt;
&lt;li&gt;標準化報告。&lt;/li&gt;
&lt;li&gt;非母語寫作者的規整英文。&lt;/li&gt;
&lt;li&gt;被多次潤飾後的簡潔文字。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，無論學生、教師還是編輯，都不應該把 AI 檢測分數當成唯一證據。&lt;/p&gt;
&lt;p&gt;更穩妥的判斷方式是看證據鏈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否有草稿和修改記錄。&lt;/li&gt;
&lt;li&gt;是否能解釋寫作思路。&lt;/li&gt;
&lt;li&gt;是否引用了真實來源。&lt;/li&gt;
&lt;li&gt;是否包含具體經驗、觀察和判斷。&lt;/li&gt;
&lt;li&gt;是否存在事實錯誤、虛構引用或明顯模板化結構。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;如果你只是想自查文章，可以把 QuillBot AI Checker 當成一個輔助提醒工具。&lt;/p&gt;
&lt;p&gt;看到高分時，不要急著「洗文字」，先看內容本身：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;觀點是否太空。&lt;/li&gt;
&lt;li&gt;例子是否太少。&lt;/li&gt;
&lt;li&gt;事實是否沒有來源。&lt;/li&gt;
&lt;li&gt;段落是否重複。&lt;/li&gt;
&lt;li&gt;句子節奏是否過於一致。&lt;/li&gt;
&lt;li&gt;是否缺少真實上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是教師或編輯，不要只截圖一個分數就做結論。AI 檢測結果更適合作為進一步核查的起點，而不是最終判決。&lt;/p&gt;
&lt;p&gt;如果你在做網站內容審核，可以把 AI Detector 和人工編輯、抄襲檢測、事實核查、引用檢查一起使用。它能幫助發現低品質批量內容，但不能替代編輯判斷。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker 是一個方便的 AI 文字檢測工具，適合用來初步判斷內容是否像 AI 生成。它可以給出整體機率，也能幫助定位更像 AI 的句子或段落。&lt;/p&gt;
&lt;p&gt;但它不是絕對裁判。&lt;/p&gt;
&lt;p&gt;AI 檢測器的價值，不在於告訴你「這篇文章一定是 AI 寫的」，而在於提醒你哪些地方可能太模板化、太平滑、太缺少真實細節。&lt;/p&gt;
&lt;p&gt;真正可靠的內容審核，仍然需要結合寫作過程、事實來源、人工判斷和上下文證據。把 QuillBot AI Checker 當成輔助工具，它會有用；把它當成最終結論，就很容易誤傷正常寫作者。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://quillbot.com/ai-content-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot AI Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://quillbot.com/ai-image-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot AI Image Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.quillbot.com/hc/en-us/articles/35295733817111-Is-QuillBot-s-AI-Detector-free-or-premium&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuillBot Help Center: Is QuillBot’s AI Detector free or premium?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Midjourney 2026 年 5 月更新：會話模式、AI 輔助開發與 SREF 整理</title>
        <link>https://knightli.com/zh-tw/2026/05/17/midjourney-2026-05-office-hours-conversational-mode/</link>
        <pubDate>Sun, 17 May 2026 20:20:51 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/midjourney-2026-05-office-hours-conversational-mode/</guid>
        <description>&lt;p&gt;Midjourney 2026 年 5 月 14 日的 Office Hours 資訊裡，最值得關注的不是單個模型參數，而是產品形態正在繼續從「輸入提示詞生成圖片」，轉向「更自然地組織創作工作流」。&lt;/p&gt;
&lt;p&gt;這次內容來自一篇日文整理稿，記錄了 Midjourney 團隊近期問答中的多個方向：會話模式升級、AI 輔助開發、網站改版、SREF 和標籤整理、Omni-reference、多角色一致性，以及團隊內部如何使用 Midjourney。&lt;/p&gt;
&lt;p&gt;如果只看一句話總結：Midjourney 正在讓圖片生成更像一個可對話、可整理、可持續迭代的創作系統。&lt;/p&gt;
&lt;h2 id=&#34;會話模式變得更重要&#34;&gt;會話模式變得更重要
&lt;/h2&gt;&lt;p&gt;這次更新裡最直接的變化，是 Conversational Mode，也就是會話模式。&lt;/p&gt;
&lt;p&gt;過去使用 Midjourney，很多操作仍然依賴參數和固定寫法。你需要記住寬高比、圖片參考、風格參考、模型參數等規則，再把它們寫進 prompt 或介面設定裡。&lt;/p&gt;
&lt;p&gt;新的會話模式方向，是讓使用者用更自然的語言描述這些設定。&lt;/p&gt;
&lt;p&gt;例如，使用者可以透過語音或文字指定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;預設參數。&lt;/li&gt;
&lt;li&gt;畫面寬高比，例如 &lt;code&gt;16:9&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;圖片參考。&lt;/li&gt;
&lt;li&gt;風格參考，也就是 &lt;code&gt;--sref&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;V7 裡的 Omni-reference。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明 Midjourney 並不只是想提升生成品質，也在降低參數操作成本。&lt;/p&gt;
&lt;p&gt;對普通使用者來說，最大的變化是不用一直記命令。對重度使用者來說，會話模式如果足夠穩定，未來可能會變成「用自然語言調整生成設定」的入口。&lt;/p&gt;
&lt;h2 id=&#34;ai-輔助開發正在改變-midjourney-團隊的迭代速度&#34;&gt;AI 輔助開發正在改變 Midjourney 團隊的迭代速度
&lt;/h2&gt;&lt;p&gt;另一個很有意思的點，是 Midjourney 團隊自己也在大規模使用 AI 輔助開發。&lt;/p&gt;
&lt;p&gt;原文提到，團隊現在能更快修復小 bug、介面摩擦和工作流問題。甚至有使用者通話中發現產品 bug，團隊借助 AI 輔助即時修復，經過 review 後快速部署的例子。&lt;/p&gt;
&lt;p&gt;這件事比「AI 幫工程師寫程式碼」更值得細看。&lt;/p&gt;
&lt;p&gt;它說明 AI 開發工具已經開始影響 AI 產品自己的迭代方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者回饋可以更快進入修復流程。&lt;/li&gt;
&lt;li&gt;小型體驗問題更容易被處理。&lt;/li&gt;
&lt;li&gt;工程師把更多精力放在架構、審查、設計決策和測試上。&lt;/li&gt;
&lt;li&gt;產品團隊可以更頻繁地清理邊緣問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Midjourney 這種產品有大量創作路徑、參數組合、行動端體驗、搜尋和整理流程。很多問題不是「核心模型不會生成」，而是某個入口不順、某個操作多一步、某個邊緣狀態不好用。&lt;/p&gt;
&lt;p&gt;AI 輔助開發最適合加速這類小而多的改進。&lt;/p&gt;
&lt;h2 id=&#34;網站改版重點是工作流而不是砍功能&#34;&gt;網站改版重點是工作流，而不是砍功能
&lt;/h2&gt;&lt;p&gt;Office Hours 裡還提到，Midjourney 網站正在進行較大規模的改版。&lt;/p&gt;
&lt;p&gt;目標不是刪掉複雜功能，而是讓創作流程更直觀，讓新使用者更容易上手，也讓工具和功能組織得更清楚。&lt;/p&gt;
&lt;p&gt;這點很關鍵。&lt;/p&gt;
&lt;p&gt;Midjourney 的問題不是功能太少，而是功能越來越多之後，入口、收藏、整理、引用、探索和複用都變得複雜。對於輕度使用者來說，難點是「我該從哪裡開始」；對於重度使用者來說，難點是「我如何管理大量風格、參考和實驗結果」。&lt;/p&gt;
&lt;p&gt;可能的發布策略包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新舊介面並行提供。&lt;/li&gt;
&lt;li&gt;先做 alpha 測試。&lt;/li&gt;
&lt;li&gt;分階段遷移，避免影響重度使用者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類策略說明團隊知道 Midjourney 不是普通圖片生成玩具。很多使用者已經把它放進真實創作流程裡，介面改變不能隨便打斷已有習慣。&lt;/p&gt;
&lt;h2 id=&#34;sref風格和標籤整理仍是痛點&#34;&gt;SREF、風格和標籤整理仍是痛點
&lt;/h2&gt;&lt;p&gt;SREF 和風格整理，是這次問答裡很值得關注的部分。&lt;/p&gt;
&lt;p&gt;使用者希望有更好的整理系統，尤其是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;隨機 SREF。&lt;/li&gt;
&lt;li&gt;風格參考。&lt;/li&gt;
&lt;li&gt;保存下來的美學方向。&lt;/li&gt;
&lt;li&gt;標籤和顏色標籤。&lt;/li&gt;
&lt;li&gt;更強的篩選、歸類和複用能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但團隊也提出了一個問題：如果目前資料夾系統已經支援一張圖進入多個資料夾、無限資料夾數量、篩選和排序，那麼標籤到底提供了哪些資料夾不能解決的能力？&lt;/p&gt;
&lt;p&gt;這個問題很現實。&lt;/p&gt;
&lt;p&gt;很多產品加標籤，是因為使用者說想要標籤。但標籤系統一旦做不好，就會變成另一套混亂的分類。資料夾、標籤、收藏、搜尋、篩選、專案、風格庫之間如果邊界不清，使用者反而更難管理。&lt;/p&gt;
&lt;p&gt;所以 Midjourney 團隊現在更想收集具體工作流案例：使用者到底在哪個場景下需要標籤？資料夾為什麼不夠？是為了快速組合風格，還是為了跨專案複用，還是為了按主題、色調、攝影風格、角色關係做篩選？&lt;/p&gt;
&lt;p&gt;對 Midjourney 來說，整理系統可能和生成模型一樣重要。因為一旦使用者開始長期創作，真正難的不是生成一張圖，而是管理上千張圖、數百個風格方向和反覆試驗的結果。&lt;/p&gt;
&lt;h2 id=&#34;omni-reference-指向更複雜的角色控制&#34;&gt;Omni-reference 指向更複雜的角色控制
&lt;/h2&gt;&lt;p&gt;原文還提到，未來的 Omni-reference / subject reference 系統，可能支援同時處理多個角色參考，並更好地分離不同主體。&lt;/p&gt;
&lt;p&gt;這正好對應 AI 圖像生成的長期痛點：角色一致性和多角色關係。&lt;/p&gt;
&lt;p&gt;單個角色保持一致已經不容易，多角色更難。常見問題包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A 角色的特徵跑到 B 角色身上。&lt;/li&gt;
&lt;li&gt;多個人物之間身份混淆。&lt;/li&gt;
&lt;li&gt;服裝、髮型、面部特徵在不同圖裡不穩定。&lt;/li&gt;
&lt;li&gt;參考圖對整體風格影響過強，而不是只控制主體。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Omni-reference 能更好地處理主體分離，那麼 Midjourney 會更適合漫畫、分鏡、廣告視覺、角色設定、遊戲概念圖和連續敘事。&lt;/p&gt;
&lt;p&gt;這也是 V7 之後值得持續關注的方向。&lt;/p&gt;
&lt;h2 id=&#34;midjourney-正在重新理解-prompt&#34;&gt;Midjourney 正在重新理解 prompt
&lt;/h2&gt;&lt;p&gt;這次整理稿裡還有一個很有意思的觀點：語言是想像力的壓縮層。&lt;/p&gt;
&lt;p&gt;這句話很適合解釋 Midjourney 的產品方向。&lt;/p&gt;
&lt;p&gt;很多使用者以為 AI 繪圖的核心是寫更長、更精確的 prompt。但實際創作裡，圖像參考、風格參考、moodboard、SREF、變體、重新生成和後期修圖，往往比一段超長文字更有用。&lt;/p&gt;
&lt;p&gt;Midjourney 團隊成員 Duncan 的工作流也體現了這一點：他會把 Midjourney 當成 sketchbook，用 moodboard、SREF、少量文字、高 &lt;code&gt;--r&lt;/code&gt; 再生成、強弱變體、Photoshop 修圖和外部放大流程組合起來。&lt;/p&gt;
&lt;p&gt;這說明 Midjourney 的成熟使用者並不是只靠「神奇提示詞」工作。&lt;/p&gt;
&lt;p&gt;更真實的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用少量語言給方向。&lt;/li&gt;
&lt;li&gt;用圖片參考提供視覺語境。&lt;/li&gt;
&lt;li&gt;用 SREF 收斂風格。&lt;/li&gt;
&lt;li&gt;用大量變體探索空間。&lt;/li&gt;
&lt;li&gt;用人工審美選擇結果。&lt;/li&gt;
&lt;li&gt;用外部工具做後期處理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Prompt 仍然重要，但它不是全部。&lt;/p&gt;
&lt;h2 id=&#34;對使用者來說意味著什麼&#34;&gt;對使用者來說意味著什麼
&lt;/h2&gt;&lt;p&gt;如果你只是偶爾生成圖片，這次更新最直接的影響是會話模式更好用。未來你可能可以更自然地說出想要的比例、參考圖、風格和參數，而不是記一堆命令。&lt;/p&gt;
&lt;p&gt;如果你是重度使用者，更值得關注的是三個方向。&lt;/p&gt;
&lt;p&gt;第一，整理系統。&lt;/p&gt;
&lt;p&gt;SREF、風格、資料夾、收藏和標籤如何演進，會直接影響長期創作效率。&lt;/p&gt;
&lt;p&gt;第二，網站改版。&lt;/p&gt;
&lt;p&gt;新介面如果能把探索、整理、複用和匯出串起來，Midjourney 會更像專業創作工具，而不是單一生成器。&lt;/p&gt;
&lt;p&gt;第三，角色和主體參考。&lt;/p&gt;
&lt;p&gt;Omni-reference 如果能穩定處理多角色和主體分離，會讓 Midjourney 更適合連續專案，而不是只適合單張圖。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Midjourney 2026 年 5 月這次 Office Hours 的重點，不是某一個炫酷參數，而是產品正在繼續向「創作系統」進化。&lt;/p&gt;
&lt;p&gt;會話模式降低輸入門檻，AI 輔助開發提高迭代速度，網站改版試圖重組工作流，SREF 和標籤討論指向長期資產管理，Omni-reference 則關係到角色一致性和複雜主體控制。&lt;/p&gt;
&lt;p&gt;對 AI 圖像生成工具來說，模型能力當然重要。但當生成品質達到一定水準後，真正決定使用者是否長期留下來的，往往是工作流、整理能力、可控性和迭代速度。&lt;/p&gt;
&lt;p&gt;Midjourney 正在把這些部分補起來。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://note.com/akisuke0925/n/nc9e099d9c77f&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Midjourney 最新ニュース（2026年5月14 日）｜アキスケ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 作者 Peter Steinberger 如何看 AI 軟體開發？從 OpenClaw 到閉環編程</title>
        <link>https://knightli.com/zh-tw/2026/05/17/peter-steinberger-ai-software-development/</link>
        <pubDate>Sun, 17 May 2026 20:02:26 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/peter-steinberger-ai-software-development/</guid>
        <description>&lt;p&gt;Peter Steinberger 的經歷很適合用來觀察 AI 軟體開發正在發生什麼變化。&lt;/p&gt;
&lt;p&gt;他不是「突然被 AI 帶火的新人」。在 OpenClaw 之前，他已經是 PSPDFKit 的創辦人，長期做 PDF 渲染、文件處理和開發者工具。這類產品很難靠概念包裝取勝，必須面對效能、相容性、API 設計、企業客戶和長期維護。&lt;/p&gt;
&lt;p&gt;所以，當 Steinberger 後來用 AI 工具做出 OpenClaw，並圍繞 AI Agent、個人自動化和 AI 編程發表觀點時，重點不只是「一個人寫了很多程式碼」。更值得看的，是他把多年軟體工程經驗和新一代 AI coding agent 結合後，對開發流程的重新理解。&lt;/p&gt;
&lt;h2 id=&#34;ai-編程不是魔法按鈕&#34;&gt;AI 編程不是魔法按鈕
&lt;/h2&gt;&lt;p&gt;很多人討論 AI 編程時，會把它簡化成兩個極端。&lt;/p&gt;
&lt;p&gt;一種說法是：AI 已經能寫程式碼，程式設計師快沒用了。&lt;/p&gt;
&lt;p&gt;另一種說法是：AI 寫的程式碼不可靠，真正工程還是得靠人手寫。&lt;/p&gt;
&lt;p&gt;Steinberger 的經驗更接近第三種：AI 讓軟體開發的操作單位變了，但沒有取消工程判斷。&lt;/p&gt;
&lt;p&gt;過去，開發者主要以「編輯程式碼」為中心工作。需求拆解、架構判斷、寫實作、跑測試、修 bug，都圍繞人工修改程式碼展開。&lt;/p&gt;
&lt;p&gt;AI coding agent 介入後，開發者越來越像在管理一個執行系統：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;說明目標。&lt;/li&gt;
&lt;li&gt;提供上下文。&lt;/li&gt;
&lt;li&gt;約束邊界。&lt;/li&gt;
&lt;li&gt;讓 agent 修改程式碼。&lt;/li&gt;
&lt;li&gt;執行測試和檢查。&lt;/li&gt;
&lt;li&gt;根據結果繼續迭代。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是簡單把鍵盤交給模型，而是把人從「每一行都親手敲」轉到「定義方向、設計回饋、判斷結果」。&lt;/p&gt;
&lt;h2 id=&#34;為什麼他不喜歡把這叫-vibe-coding&#34;&gt;為什麼他不喜歡把這叫 vibe coding
&lt;/h2&gt;&lt;p&gt;圍繞 Steinberger 的討論裡，一個高頻詞是 &lt;code&gt;vibe coding&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這個詞原本用來形容一種新開發方式：開發者用自然語言描述想法，讓 AI 生成大量程式碼，再透過執行結果和回饋不斷調整。&lt;/p&gt;
&lt;p&gt;但 Steinberger 對這個詞並不完全買帳。公開報導中提到，他認為 &lt;code&gt;vibe coding&lt;/code&gt; 容易變成一種貶義表達，暗示 AI 輔助開發只是「憑感覺亂生成」，忽視了背後的技能、判斷和經驗。&lt;/p&gt;
&lt;p&gt;這個批評有道理。&lt;/p&gt;
&lt;p&gt;真正有效的 AI 編程並不是隨便輸入一句話，然後相信模型輸出。它需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能把模糊需求拆成可執行任務。&lt;/li&gt;
&lt;li&gt;能識別模型是否誤解了目標。&lt;/li&gt;
&lt;li&gt;能設計測試和驗收標準。&lt;/li&gt;
&lt;li&gt;能判斷程式碼結構是否會影響長期維護。&lt;/li&gt;
&lt;li&gt;能知道什麼時候應該停止生成、轉向人工審查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，AI 降低了寫程式碼的摩擦，但沒有降低理解系統的責任。&lt;/p&gt;
&lt;h2 id=&#34;閉環才是關鍵&#34;&gt;閉環才是關鍵
&lt;/h2&gt;&lt;p&gt;Steinberger 相關訪談和文章裡，經常被總結出的一個核心思路是「閉環」。&lt;/p&gt;
&lt;p&gt;只讓 AI 生成程式碼，是開環。&lt;/p&gt;
&lt;p&gt;讓 AI 生成程式碼、執行程式碼、讀取錯誤、修復問題、再執行測試，才更接近閉環。&lt;/p&gt;
&lt;p&gt;這個差別非常重要。&lt;/p&gt;
&lt;p&gt;開環生成很容易製造表面可用的軟體。頁面能打開，功能看起來有，程式碼也不少，但一旦進入真實場景，就會暴露狀態管理、權限、異常處理、邊界條件和部署問題。&lt;/p&gt;
&lt;p&gt;閉環開發要求輸出必須被回饋約束。最簡單的閉環是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;寫清楚目標。&lt;/li&gt;
&lt;li&gt;讓 AI 修改程式碼。&lt;/li&gt;
&lt;li&gt;自動執行測試、型別檢查、lint 或構建。&lt;/li&gt;
&lt;li&gt;把錯誤回饋給 AI。&lt;/li&gt;
&lt;li&gt;重複直到通過。&lt;/li&gt;
&lt;li&gt;最後由人審查關鍵路徑。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這也是 AI 軟體開發真正能提高效率的地方。不是因為模型一次就寫對，而是因為它可以快速參與「生成、驗證、修復」的循環。&lt;/p&gt;
&lt;h2 id=&#34;經驗越多越能用好-ai&#34;&gt;經驗越多，越能用好 AI
&lt;/h2&gt;&lt;p&gt;AI 編程最容易產生的誤解之一，是「經驗不重要了」。&lt;/p&gt;
&lt;p&gt;Steinberger 的案例反而說明，經驗會變得更重要，只是作用方式變了。&lt;/p&gt;
&lt;p&gt;一個有經驗的工程師更容易判斷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些任務適合交給 agent。&lt;/li&gt;
&lt;li&gt;哪些模組需要先寫測試。&lt;/li&gt;
&lt;li&gt;哪些改動風險太高，不該讓 AI 大範圍重構。&lt;/li&gt;
&lt;li&gt;哪些生成程式碼只是看起來合理。&lt;/li&gt;
&lt;li&gt;哪些問題應該透過架構調整解決，而不是繼續補丁式修復。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 可以生成大量候選方案，但候選方案越多，越需要判斷力。沒有經驗的人可能會被「能跑起來」迷惑，有經驗的人更會追問：能不能維護？能不能擴展？會不會破壞安全邊界？出了問題能不能定位？&lt;/p&gt;
&lt;p&gt;這也是為什麼 AI coding agent 並沒有讓軟體工程變成純聊天。它更像把一部分執行勞動外包出去，同時放大了規劃、審查、驗證和取捨的重要性。&lt;/p&gt;
&lt;h2 id=&#34;openclaw-的意義不只是專案本身&#34;&gt;OpenClaw 的意義不只是專案本身
&lt;/h2&gt;&lt;p&gt;OpenClaw 被關注，不只是因為它是一個開源 AI agent，也不只是因為它的增長速度快。&lt;/p&gt;
&lt;p&gt;它更像一個信號：開發者開始希望 AI 不只回答問題，而是能接入真實工具，完成真實動作。&lt;/p&gt;
&lt;p&gt;傳統聊天機器人停留在對話框裡。它可以解釋程式碼、寫草稿、給建議，但很多時候還需要人複製、貼上、打開軟體、執行命令。&lt;/p&gt;
&lt;p&gt;Agent 的方向是把模型接到工具上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;檔案系統。&lt;/li&gt;
&lt;li&gt;瀏覽器。&lt;/li&gt;
&lt;li&gt;終端。&lt;/li&gt;
&lt;li&gt;郵件。&lt;/li&gt;
&lt;li&gt;日曆。&lt;/li&gt;
&lt;li&gt;第三方服務。&lt;/li&gt;
&lt;li&gt;專案倉庫。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一旦模型能使用這些工具，軟體開發的邊界就會變化。AI 不再只是「程式碼補全」，而會參與專案閱讀、任務拆解、檔案修改、測試執行、PR 整理和工作流自動化。&lt;/p&gt;
&lt;p&gt;這也是 Steinberger 加入 OpenAI 後被關注的原因。他代表的不是單個開發者故事，而是一種產品方向：個人 agent 會從演示玩具走向日常工作層。&lt;/p&gt;
&lt;h2 id=&#34;這對普通開發者意味著什麼&#34;&gt;這對普通開發者意味著什麼
&lt;/h2&gt;&lt;p&gt;對普通開發者來說，Steinberger 的經驗不一定能直接複製。&lt;/p&gt;
&lt;p&gt;不是每個人都能同時管理多個 agent，不是每個專案都適合高強度 AI 生成，也不是每個團隊都能接受「先生成再快速迭代」的節奏。&lt;/p&gt;
&lt;p&gt;但有幾件事值得學。&lt;/p&gt;
&lt;p&gt;第一，先把任務寫清楚。&lt;/p&gt;
&lt;p&gt;AI 對含糊目標很敏感。你說「優化一下」，它可能改風格、改結構、加功能、刪邏輯。你說「把登入失敗時的錯誤提示從英文改成中文，不改變認證流程」，結果通常更可控。&lt;/p&gt;
&lt;p&gt;第二，把驗證命令固定下來。&lt;/p&gt;
&lt;p&gt;如果一個專案沒有測試、沒有構建命令、沒有 lint，AI 就很難形成閉環。哪怕只是最基礎的 &lt;code&gt;npm test&lt;/code&gt;、&lt;code&gt;go test ./...&lt;/code&gt;、&lt;code&gt;pytest&lt;/code&gt;、&lt;code&gt;hugo&lt;/code&gt;，也比完全靠肉眼檢查強。&lt;/p&gt;
&lt;p&gt;第三，控制改動範圍。&lt;/p&gt;
&lt;p&gt;一次只讓 AI 處理一個模組、一個 bug、一個頁面，通常比讓它「重構整個專案」更可靠。&lt;/p&gt;
&lt;p&gt;第四，保留人工審查。&lt;/p&gt;
&lt;p&gt;尤其是認證、支付、權限、資料刪除、部署腳本、資料庫遷移、安全配置這些地方，不要因為程式碼是 AI 生成的就降低審查標準。&lt;/p&gt;
&lt;p&gt;第五，復盤 prompt 和失敗模式。&lt;/p&gt;
&lt;p&gt;如果 AI 經常誤解某類任務，就把約束寫進專案規則、agent instructions 或技能檔案。AI 編程能力不是只來自模型，也來自你給它搭建的工作環境。&lt;/p&gt;
&lt;h2 id=&#34;ai-軟體開發會走向哪裡&#34;&gt;AI 軟體開發會走向哪裡
&lt;/h2&gt;&lt;p&gt;Steinberger 的故事說明，AI 軟體開發正在從「輔助寫程式碼」走向「組織軟體生產流程」。&lt;/p&gt;
&lt;p&gt;早期 AI 編程工具的價值主要是補全函式、解釋報錯、生成模板。現在的變化是，agent 可以跨檔案工作，可以呼叫工具，可以執行檢查，可以根據回饋繼續修復。&lt;/p&gt;
&lt;p&gt;這會帶來幾個趨勢：&lt;/p&gt;
&lt;p&gt;第一，個人開發者的產能上限會提高。&lt;/p&gt;
&lt;p&gt;一個人可以同時推進更多原型、腳本、內部工具和小型產品。但產能提高不等於品質自動提高。越快生成，越需要驗證。&lt;/p&gt;
&lt;p&gt;第二，專案結構會更重要。&lt;/p&gt;
&lt;p&gt;程式碼越清晰，測試越明確，文件越完整，AI 越容易正確修改。混亂專案對人難，對 AI 也難。&lt;/p&gt;
&lt;p&gt;第三，軟體工程師會更像工作流設計者。&lt;/p&gt;
&lt;p&gt;未來重要的不只是會不會寫某門語言，而是能否把需求、上下文、工具、測試、部署和權限組織成一個可控循環。&lt;/p&gt;
&lt;p&gt;第四，安全邊界會更敏感。&lt;/p&gt;
&lt;p&gt;Agent 能做事，就可能做錯事。它能讀檔案、執行命令、存取服務，也意味著權限、審計和回滾會成為 AI 開發環境的基礎設施。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Peter Steinberger 的 AI 軟體開發觀，最有價值的地方不是「AI 生成了多少程式碼」，而是他展示了一種新的開發姿勢。&lt;/p&gt;
&lt;p&gt;人不再只是在編輯器裡逐行輸入，而是在設計目標、管理 agent、構造回饋迴路、審查結果和調整系統。程式碼仍然重要，但程式碼不再是唯一的勞動中心。&lt;/p&gt;
&lt;p&gt;如果說傳統軟體開發強調「把程式碼寫對」，AI 軟體開發會更強調「讓系統持續產出可驗證的正確結果」。&lt;/p&gt;
&lt;p&gt;這不是降低工程門檻那麼簡單。它是在改變工程能力的形態：從手工實作，轉向任務分解、上下文管理、工具編排、自動驗證和最終判斷。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://techcrunch.com/2026/02/25/openclaw-creators-advice-to-ai-builders-is-to-be-more-playful-and-allow-yourself-time-to-improve/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TechCrunch：OpenClaw creator’s advice to AI builders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://builtin.com/articles/openclaw-founder-to-openai-analysis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Built In：What Is OpenAI Getting From the OpenClaw Deal?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://podwise.ai/dashboard/episodes/7026858&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The Pragmatic Engineer：The creator of Clawd: I ship code I don&amp;rsquo;t read&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.teamday.ai/ai/steinberger-openclaw-builders-unscripted-openai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TeamDay：Peter Steinberger: Building OpenClaw as a Solo Dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Scientific Agent Skills：把科研工作流交給 AI Agent 的技能庫</title>
        <link>https://knightli.com/zh-tw/2026/05/17/scientific-agent-skills/</link>
        <pubDate>Sun, 17 May 2026 17:52:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/scientific-agent-skills/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-Dense-AI/scientific-agent-skills&lt;/code&gt; 是一個面向科研和研究工作的 Agent Skills 集合。&lt;/p&gt;
&lt;p&gt;它的定位不是再做一個聊天機器人，而是把科研裡經常要查文件、連資料庫、寫分析腳本、處理檔案、生成圖表和整理報告的流程，拆成一組可以被 AI Agent 發現和調用的技能。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;截至 2026-05-17 寫作時，GitHub API 顯示這個倉庫約有 23.4k stars、2.5k forks，許可證為 MIT，最近一次推送時間是 2026-05-11。README 裡寫的是 135 個 ready-to-use scientific and research skills，不過倉庫 &lt;code&gt;scientific-skills&lt;/code&gt; 目錄目前透過 GitHub API 能看到 137 個條目。這個差異可能來自統計口徑、近期新增目錄或 README 尚未同步更新。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 適合已經在用 Codex、Claude Code、Cursor、Gemini CLI 或其他支援 Agent Skills 標準工具的人。&lt;/p&gt;
&lt;p&gt;它的價值主要在三點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把科研工具鏈的使用方式寫成 &lt;code&gt;SKILL.md&lt;/code&gt;，讓 agent 不必每次從零猜庫怎麼用。&lt;/li&gt;
&lt;li&gt;把常見科學資料庫、Python 套件、文件處理、科研寫作和視覺化流程整理到同一個技能集合裡。&lt;/li&gt;
&lt;li&gt;讓 AI Agent 更像一個能執行科研工作流的助手，而不只是回答概念問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也不是「裝上就自動做科研」的魔法按鈕。技能可以讓 agent 更容易找到正確工具、生成更可靠的程式碼和流程，但資料品質、實驗設計、統計假設、臨床或科研結論仍然需要人來判斷。&lt;/p&gt;
&lt;h2 id=&#34;它包含什麼&#34;&gt;它包含什麼
&lt;/h2&gt;&lt;p&gt;README 把這個專案描述為一個覆蓋科研、科學計算、工程、分析、金融和寫作任務的技能集合。大類包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生物資訊學與基因組學&lt;/li&gt;
&lt;li&gt;化學資訊學與藥物發現&lt;/li&gt;
&lt;li&gt;蛋白質組學與質譜分析&lt;/li&gt;
&lt;li&gt;臨床研究與精準醫學&lt;/li&gt;
&lt;li&gt;醫療 AI 與臨床機器學習&lt;/li&gt;
&lt;li&gt;醫學影像與數位病理&lt;/li&gt;
&lt;li&gt;機器學習與 AI&lt;/li&gt;
&lt;li&gt;材料科學與化學&lt;/li&gt;
&lt;li&gt;物理與天文學&lt;/li&gt;
&lt;li&gt;工程模擬與最佳化&lt;/li&gt;
&lt;li&gt;資料分析與視覺化&lt;/li&gt;
&lt;li&gt;地理空間科學與遙感&lt;/li&gt;
&lt;li&gt;實驗室自動化&lt;/li&gt;
&lt;li&gt;科研寫作、文獻綜述、同行評審和引用管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類技能的重點不是限制 agent 只能使用某些庫。README 也明確說，agent 仍然可以自己寫 Python、調用任意可用 API 或套件；這些技能的作用是提前提供整理過的說明、範例、最佳實踐和整合路徑。&lt;/p&gt;
&lt;p&gt;換句話說，它更像「科研工具說明書 + 工作流模板 + agent 調用約定」的集合。&lt;/p&gt;
&lt;h2 id=&#34;資料庫和-python-套件覆蓋&#34;&gt;資料庫和 Python 套件覆蓋
&lt;/h2&gt;&lt;p&gt;專案裡最吸引科研使用者的部分，是資料庫和 Python 科學生態的覆蓋面。&lt;/p&gt;
&lt;p&gt;README 提到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;透過 &lt;code&gt;database-lookup&lt;/code&gt; 統一存取 78 個公共資料庫。&lt;/li&gt;
&lt;li&gt;覆蓋 PubChem、ChEMBL、UniProt、COSMIC、ClinicalTrials.gov、FRED、USPTO 等資料庫。&lt;/li&gt;
&lt;li&gt;額外包含 DepMap、Imaging Data Commons、PrimeKG、U.S. Treasury Fiscal Data、Hugging Science 等專門資料存取技能。&lt;/li&gt;
&lt;li&gt;提供 70+ 個最佳化過的 Python Package Skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從目錄看，技能名裡能看到很多熟悉工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rdkit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scanpy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;biopython&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bioservices&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pydeseq2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scvelo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scvi-tools&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pymatgen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qiskit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pennylane&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openmm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mdanalysis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scikit-learn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;statsmodels&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;matplotlib&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;seaborn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;networkx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sympy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytorch-lightning&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transformers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timesfm-forecasting&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對普通開發者來說，這些庫本身不稀奇。真正有用的是：agent 在處理具體任務時，可以讀到與該庫相關的使用約束、程式碼範例、常見流程和注意事項。這比只靠模型參數裡的舊記憶更穩。&lt;/p&gt;
&lt;h2 id=&#34;典型場景&#34;&gt;典型場景
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 更適合多步驟科研任務，而不是單輪問答。&lt;/p&gt;
&lt;p&gt;例如藥物發現方向，可以讓 agent 查詢 ChEMBL 裡的 EGFR 抑制劑，用 RDKit 分析結構活性關係，再用 DiffDock 做虛擬篩選，最後搜尋文獻並生成報告。&lt;/p&gt;
&lt;p&gt;單細胞分析方向，可以把 10X 資料載入 Scanpy，做質控、整合、細胞類型識別、差異表達和通路富集。&lt;/p&gt;
&lt;p&gt;多組學方向，可以把 RNA-seq、質譜、代謝物、蛋白互作、臨床試驗和統計建模串起來。&lt;/p&gt;
&lt;p&gt;這些任務如果完全靠手寫 prompt，很容易變成「agent 知道大概方向，但每一步都要你提醒」。技能庫的意義，就是把這類高頻路徑沉澱下來，讓 agent 在執行時少走彎路。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;README 推薦的標準安裝方式是使用 Agent Skills 工具：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add K-Dense-AI/scientific-agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 GitHub CLI，且版本為 &lt;code&gt;v2.90.0+&lt;/code&gt;，也可以透過 &lt;code&gt;gh skill&lt;/code&gt; 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝某個具體技能：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills scanpy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;指定目標 agent：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent cursor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent claude-code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --agent gemini
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要保證可重現，可以 pin 到 release tag 或 commit SHA：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --pin v1.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gh skill install K-Dense-AI/scientific-agent-skills --pin abc123def
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這點對科研環境很重要。科研分析裡最怕「上週能跑、這週結果變了但不知道為什麼」。如果技能參與了分析流程，最好把技能版本、依賴版本和資料版本一起記錄。&lt;/p&gt;
&lt;h2 id=&#34;執行環境要求&#34;&gt;執行環境要求
&lt;/h2&gt;&lt;p&gt;README 給出的基本要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.11+，推薦 3.12+&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv&lt;/code&gt;，用於安裝 Python 依賴&lt;/li&gt;
&lt;li&gt;支援 Agent Skills 標準的客戶端&lt;/li&gt;
&lt;li&gt;macOS、Linux 或 Windows with WSL2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡要注意 Windows 使用者的實際體驗。很多科學計算庫在原生 Windows 下不是不能用，但依賴鏈、編譯工具、二進位套件和路徑問題更容易出意外。README 明確寫 Windows with WSL2，也說明專案更偏向類 Unix 科研計算環境。&lt;/p&gt;
&lt;h2 id=&#34;和普通-prompt-集合有什麼區別&#34;&gt;和普通 prompt 集合有什麼區別
&lt;/h2&gt;&lt;p&gt;普通 prompt 集合通常只告訴模型「你應該怎麼回答」。Scientific Agent Skills 更進一步：它把工具、庫、資料庫和流程寫成 agent 可發現的技能。&lt;/p&gt;
&lt;p&gt;這有幾個實際差異：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技能可以包含結構化說明和範例程式碼。&lt;/li&gt;
&lt;li&gt;技能可以圍繞某個庫或資料庫長期維護。&lt;/li&gt;
&lt;li&gt;agent 可以按任務選擇相關技能，而不是一次性把所有規則塞進系統提示。&lt;/li&gt;
&lt;li&gt;團隊可以只安裝自己需要的技能，減少上下文噪音。&lt;/li&gt;
&lt;li&gt;技能可以跟隨倉庫版本管理、審計和更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對複雜科研任務來說，這種方式比「複製一大段萬能提示詞」更容易維護。模型會變，資料庫會變，Python 套件也會變。把這些變化沉澱在技能裡，比散落在個人 prompt 文件裡更可控。&lt;/p&gt;
&lt;h2 id=&#34;安全和可信邊界&#34;&gt;安全和可信邊界
&lt;/h2&gt;&lt;p&gt;這個專案的 README 把安全提醒寫得很直接：Skills 可以執行程式碼，也會影響 coding agent 的行為。&lt;/p&gt;
&lt;p&gt;這不是小事。科研技能可能會：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安裝 Python 依賴。&lt;/li&gt;
&lt;li&gt;存取網路資料庫。&lt;/li&gt;
&lt;li&gt;讀寫本地檔案。&lt;/li&gt;
&lt;li&gt;執行分析腳本。&lt;/li&gt;
&lt;li&gt;處理敏感實驗資料或臨床資料。&lt;/li&gt;
&lt;li&gt;生成後續會被人引用的報告。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此不要無腦安裝全部技能。更穩的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只安裝目前任務需要的技能。&lt;/li&gt;
&lt;li&gt;安裝前閱讀對應 &lt;code&gt;SKILL.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;檢查技能會調用哪些套件、API、檔案和外部服務。&lt;/li&gt;
&lt;li&gt;對社群貢獻的技能額外謹慎。&lt;/li&gt;
&lt;li&gt;在隔離環境裡執行涉及資料處理和程式碼執行的任務。&lt;/li&gt;
&lt;li&gt;對科研結論、臨床建議和統計結果保留人工複核。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;README 還提到專案會使用 Cisco AI Defense Skill Scanner 做掃描，並建議使用者也可以本地掃描第三方技能。掃描不能替代人工審查，但至少說明維護者意識到技能供應鏈風險。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;這個專案更適合這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經在日常使用 AI coding agent。&lt;/li&gt;
&lt;li&gt;經常處理科研資料、論文、圖表和報告。&lt;/li&gt;
&lt;li&gt;需要在 Python 科學生態裡頻繁切換工具。&lt;/li&gt;
&lt;li&gt;想讓 agent 執行多步驟分析，而不是只回答概念。&lt;/li&gt;
&lt;li&gt;團隊希望把科研流程沉澱成可複用技能。&lt;/li&gt;
&lt;li&gt;想研究 Agent Skills 標準如何落地到專業領域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;暫時不太適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只是想讓 AI 幫忙解釋一篇論文。&lt;/li&gt;
&lt;li&gt;沒有本地 Python 環境或不願意處理依賴。&lt;/li&gt;
&lt;li&gt;對資料隱私、網路存取和程式碼執行邊界還沒有控制方案。&lt;/li&gt;
&lt;li&gt;需要嚴格合規的臨床或生產決策系統，但沒有人工審查和驗證流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶爾做一次分析，直接讓 agent 寫腳本可能更輕。如果你經常重複類似科研流程，技能庫的價值會更明顯。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;不要一開始就安裝整個倉庫，然後把所有任務都交給 agent。&lt;/p&gt;
&lt;p&gt;更實際的路徑是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先選一個低風險任務，例如文獻整理、圖表生成或公開資料探索。&lt;/li&gt;
&lt;li&gt;只安裝相關技能，例如 &lt;code&gt;literature-review&lt;/code&gt;、&lt;code&gt;scientific-writing&lt;/code&gt;、&lt;code&gt;scanpy&lt;/code&gt; 或 &lt;code&gt;rdkit&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;讓 agent 先說明計畫，再執行程式碼。&lt;/li&gt;
&lt;li&gt;保留輸入資料、腳本、環境和技能版本。&lt;/li&gt;
&lt;li&gt;對輸出結果做人工複查。&lt;/li&gt;
&lt;li&gt;如果流程穩定，再把它寫入團隊自己的 SOP 或技能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;科研 agent 的關鍵不是「自動化一切」，而是把重複、繁瑣、容易查錯文件的部分交給工具，把判斷、假設和結論留給人。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills 的意義，在於把 Agent Skills 從通用編程場景推進到科研場景。&lt;/p&gt;
&lt;p&gt;科研工作天然是多工具、多資料庫、多檔案、多步驟的流程。單靠聊天式 prompt，很難穩定覆蓋這些細節。這個專案把常見科學庫、資料源和研究流程整理成技能，讓 AI Agent 更容易進入真實科研工作流。&lt;/p&gt;
&lt;p&gt;但它越強，也越需要邊界感。技能會影響 agent 行為，也可能執行程式碼、聯網和處理檔案。安裝前要看清楚技能內容，執行時要隔離環境，科研結論更不能跳過人工驗證。&lt;/p&gt;
&lt;p&gt;如果你已經在用 Codex、Claude Code、Cursor 或 Gemini CLI 做科研和資料分析，Scientific Agent Skills 值得認真看一眼。即使不直接全量安裝，它的技能拆分方式也很適合作為團隊整理科研 AI 工作流的參考。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README 原文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://agentskills.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Skills 標準&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/k-dense-byok&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense BYOK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.blog/changelog/2026-04-16-manage-agent-skills-with-github-cli/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub CLI gh skill changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ai-goofish-monitor：用 AI 自動盯閒魚商品的開源監控系統</title>
        <link>https://knightli.com/zh-tw/2026/05/17/ai-goofish-monitor/</link>
        <pubDate>Sun, 17 May 2026 17:24:03 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/ai-goofish-monitor/</guid>
        <description>&lt;p&gt;ai-goofish-monitor 是 Usagi-org 開源的閒魚商品監控系統。&lt;/p&gt;
&lt;p&gt;它的目標很明確：把閒魚搜尋、篩選、商品分析、結果記錄和通知推送自動化，幫助使用者從大量二手商品裡更快找到符合條件的目標。專案基於 Playwright 做頁面自動化，再接入支援圖片輸入的 AI 模型，對商品資訊做進一步判斷。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 更像一個「閒魚採購情報面板」，而不是簡單的關鍵字提醒腳本。&lt;/p&gt;
&lt;p&gt;它有幾個明顯特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有完整 Web 管理介面，可以管理任務、帳號、AI 標準、日誌和結果。&lt;/li&gt;
&lt;li&gt;支援多任務並發，每個任務可以配置關鍵字、價格、篩選條件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;使用 Playwright 抓取閒魚頁面，適合處理需要登入態和頁面互動的場景。&lt;/li&gt;
&lt;li&gt;使用 AI 判斷商品是否符合需求，不只依賴關鍵字匹配。&lt;/li&gt;
&lt;li&gt;支援 ntfy.sh、企業微信、Bark、Telegram、Webhook 等通知渠道。&lt;/li&gt;
&lt;li&gt;支援 Cron 定時任務、多帳號管理、代理輪換、失敗重試和 Docker 部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它適合經常在閒魚找特定商品的人，比如二手數位產品、攝影器材、顯卡、硬碟、遊戲機、樂器、家電和收藏品。但它也不是「自動撿漏神器」。閒魚搜尋結果本身會變，帳號登入態可能失效，平台風控也會影響自動化穩定性。使用時更應該把它當成輔助篩選工具，而不是完全替代人工判斷。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;在閒魚上找二手商品，經常有幾個痛點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商品太多，手動翻很累。&lt;/li&gt;
&lt;li&gt;標題和描述不規範，關鍵字很容易漏掉或誤判。&lt;/li&gt;
&lt;li&gt;好價格出現時間短，發現太晚就沒了。&lt;/li&gt;
&lt;li&gt;同一個商品可能有多個地區、價格、成色和賣家差異。&lt;/li&gt;
&lt;li&gt;低價商品裡混著配件、損壞品、翻新貨和誘導性標題。&lt;/li&gt;
&lt;li&gt;想持續盯多個關鍵字時，手動搜尋很難堅持。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通關鍵字提醒只能解決一部分問題。比如你搜尋「ThinkPad X1」，可能會混入配件、壞屏、空盒、拆機件；你搜尋「索尼 A7C」，又可能遇到鏡頭套裝、租賃資訊、標題黨和價格異常。&lt;/p&gt;
&lt;p&gt;ai-goofish-monitor 的思路是：先用自動化把候選商品抓出來，再交給 AI 按你的需求做二次判斷，最後把值得關注的結果推送給你。&lt;/p&gt;
&lt;h2 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h2&gt;&lt;p&gt;專案 README 裡列出的核心能力比較完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web 視覺化管理：任務管理、帳號管理、AI 標準編輯、運行日誌、結果瀏覽。&lt;/li&gt;
&lt;li&gt;AI 驅動：支援自然語言建立任務，並用多模態模型分析商品。&lt;/li&gt;
&lt;li&gt;多任務並發：不同任務可以獨立配置關鍵字、價格、篩選條件和 AI Prompt。&lt;/li&gt;
&lt;li&gt;進階篩選：支援包郵、新發布時間範圍、省 / 市 / 區三級區域篩選。&lt;/li&gt;
&lt;li&gt;即時通知：支援 ntfy.sh、企業微信、Bark、Telegram、Webhook 等多渠道。&lt;/li&gt;
&lt;li&gt;定時調度：支援 Cron 配置週期性任務。&lt;/li&gt;
&lt;li&gt;帳號與代理輪換：多帳號管理、任務綁定帳號、代理池輪換與失敗重試。&lt;/li&gt;
&lt;li&gt;Docker 部署：支援容器化部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些能力組合起來，覆蓋了從「建立監控任務」到「收到命中提醒」的完整鏈路。&lt;/p&gt;
&lt;h2 id=&#34;工作流是什麼樣&#34;&gt;工作流是什麼樣
&lt;/h2&gt;&lt;p&gt;一個典型流程大概是這樣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;部署服務並打開 Web UI。&lt;/li&gt;
&lt;li&gt;匯入閒魚帳號登入態。&lt;/li&gt;
&lt;li&gt;建立監控任務。&lt;/li&gt;
&lt;li&gt;設定關鍵字、價格區間、地區、新發布範圍等篩選條件。&lt;/li&gt;
&lt;li&gt;編寫或讓 AI 生成判斷標準。&lt;/li&gt;
&lt;li&gt;任務按即時或定時方式運行。&lt;/li&gt;
&lt;li&gt;Playwright 打開頁面並抓取商品資訊。&lt;/li&gt;
&lt;li&gt;AI 根據標題、描述、圖片和 Prompt 判斷是否符合需求。&lt;/li&gt;
&lt;li&gt;命中結果寫入 SQLite。&lt;/li&gt;
&lt;li&gt;系統透過配置的通知渠道推送結果。&lt;/li&gt;
&lt;li&gt;使用者在 Web UI 裡查看結果、日誌和價格歷史。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個流程裡，AI 的價值主要在第 8 步。它可以理解「我想要成色好、價格合理、不要配件、不要維修機、最好同城自取」這類自然語言條件，比單純關鍵字規則靈活。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;專案推薦使用 Docker 部署：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f app
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設 Web UI 地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:8000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方映像地址是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果映像存取慢，README 裡也給了加速映像示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull ghcr.nju.edu.cn/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker tag ghcr.nju.edu.cn/usagi-org/ai-goofish:latest ghcr.io/usagi-org/ai-goofish:latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 映像已內建 Chromium，不需要宿主機額外安裝瀏覽器。預設持久化目錄包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;：SQLite 主儲存，保存任務、結果和價格歷史。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state/&lt;/code&gt;：登入狀態 cookie 文件。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompts/&lt;/code&gt;：任務提示詞。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;：運行日誌。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;images/&lt;/code&gt;：商品圖片和任務臨時圖片目錄。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果修改了 &lt;code&gt;.env&lt;/code&gt; 裡的 &lt;code&gt;SERVER_PORT&lt;/code&gt;，也要同步調整 &lt;code&gt;docker-compose.yaml&lt;/code&gt; 的連接埠映射。&lt;/p&gt;
&lt;h2 id=&#34;最少配置&#34;&gt;最少配置
&lt;/h2&gt;&lt;p&gt;專案的最少配置主要圍繞 AI 模型和 Web UI 登入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_openai_compatible_base_url
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_MODEL_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_multimodal_model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;admin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;WEB_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;change_me
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中前三項是 AI 模型接入必填項：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;：模型 API Key。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;：OpenAI 相容介面地址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_MODEL_NAME&lt;/code&gt;：支援圖片輸入的模型名稱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WEB_USERNAME&lt;/code&gt; 和 &lt;code&gt;WEB_PASSWORD&lt;/code&gt; 用於 Web UI 登入。README 提到預設帳號密碼是 &lt;code&gt;admin/admin123&lt;/code&gt;，生產環境必須修改。&lt;/p&gt;
&lt;h2 id=&#34;第一次使用&#34;&gt;第一次使用
&lt;/h2&gt;&lt;p&gt;第一次使用時，流程大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;登入 Web UI。&lt;/li&gt;
&lt;li&gt;進入「閒魚帳號管理」。&lt;/li&gt;
&lt;li&gt;使用專案提供的 Chrome 擴充套件匯出閒魚登入態 JSON。&lt;/li&gt;
&lt;li&gt;把登入態貼到系統裡。&lt;/li&gt;
&lt;li&gt;登入態文件會保存到 &lt;code&gt;state/&lt;/code&gt;，例如 &lt;code&gt;state/acc_1.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;回到「任務管理」，建立任務並綁定帳號。&lt;/li&gt;
&lt;li&gt;運行任務並查看結果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這裡最關鍵的是登入態。由於閒魚並不是開放給第三方隨意抓取的標準 API，專案需要用瀏覽器登入狀態來模擬正常頁面存取。登入態失效、風控、驗證碼、帳號異常都會影響任務運行。&lt;/p&gt;
&lt;h2 id=&#34;ai-任務和關鍵字任務&#34;&gt;AI 任務和關鍵字任務
&lt;/h2&gt;&lt;p&gt;專案支援兩類任務建立方式。&lt;/p&gt;
&lt;p&gt;第一類是 &lt;code&gt;AI判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以填寫「詳細需求」，提交後系統會非同步生成分析標準。適合需求比較複雜的場景，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只要主機本體，不要配件。&lt;/li&gt;
&lt;li&gt;價格明顯低於市場價才提醒。&lt;/li&gt;
&lt;li&gt;成色要好，描述裡不能有進水、維修、暗病。&lt;/li&gt;
&lt;li&gt;優先同城，能面交更好。&lt;/li&gt;
&lt;li&gt;圖片裡要能看到序列號、包裝或關鍵配件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二類是 &lt;code&gt;关键词判断&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它更接近傳統規則監控：根據關鍵字、價格、地區等條件直接建立任務，不經過 AI 生成流程。適合規則簡單、誤報可以接受的場景。&lt;/p&gt;
&lt;p&gt;實際使用中可以混合使用：關鍵字負責初篩，AI 負責減少誤報。&lt;/p&gt;
&lt;h2 id=&#34;web-ui-能做什麼&#34;&gt;Web UI 能做什麼
&lt;/h2&gt;&lt;p&gt;Web UI 是這個專案區別於普通腳本的重要部分。&lt;/p&gt;
&lt;p&gt;任務管理頁可以配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 建立任務。&lt;/li&gt;
&lt;li&gt;關鍵字規則。&lt;/li&gt;
&lt;li&gt;價格範圍。&lt;/li&gt;
&lt;li&gt;新發布範圍。&lt;/li&gt;
&lt;li&gt;區域篩選。&lt;/li&gt;
&lt;li&gt;帳號綁定。&lt;/li&gt;
&lt;li&gt;定時規則。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;帳號管理頁可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;匯入閒魚帳號登入態。&lt;/li&gt;
&lt;li&gt;更新登入態。&lt;/li&gt;
&lt;li&gt;刪除帳號。&lt;/li&gt;
&lt;li&gt;為任務指定帳號。&lt;/li&gt;
&lt;li&gt;讓系統自動選擇帳號。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結果和日誌頁可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看命中商品。&lt;/li&gt;
&lt;li&gt;匯出結果。&lt;/li&gt;
&lt;li&gt;查詢歷史記錄。&lt;/li&gt;
&lt;li&gt;查看任務運行過程。&lt;/li&gt;
&lt;li&gt;排查登入態失效、風控和 AI 調用問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;系統設定頁可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看系統狀態。&lt;/li&gt;
&lt;li&gt;編輯 Prompt。&lt;/li&gt;
&lt;li&gt;調整代理和輪換配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對於長期監控來說，Web UI 很關鍵。否則任務一多，配置、日誌、結果和通知都會變得難維護。&lt;/p&gt;
&lt;h2 id=&#34;資料儲存&#34;&gt;資料儲存
&lt;/h2&gt;&lt;p&gt;專案目前在線主儲存使用 SQLite，預設路徑是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;data/app.sqlite3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 預設把 SQLite 主庫掛載到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./data:/app/data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;應用啟動時會自動建庫建表，並嘗試從舊的 &lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;jsonl/&lt;/code&gt;、&lt;code&gt;price_history/&lt;/code&gt; 匯入一次歷史資料。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;state/&lt;/code&gt;、&lt;code&gt;prompts/&lt;/code&gt;、&lt;code&gt;logs/&lt;/code&gt;、&lt;code&gt;images/&lt;/code&gt; 仍然是檔案系統目錄，不在 SQLite 中。商品圖片會臨時保存到類似下面的目錄：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/task_images_&amp;lt;task_name&amp;gt;/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;任務結束後預設會清理。&lt;/p&gt;
&lt;p&gt;這種結構比較適合個人或小團隊部署：SQLite 足夠輕，遷移也簡單；檔案目錄保留登入態、圖片和日誌，排查問題更直觀。&lt;/p&gt;
&lt;h2 id=&#34;通知渠道&#34;&gt;通知渠道
&lt;/h2&gt;&lt;p&gt;專案支援多種通知渠道，常見配置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NTFY_TOPIC_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GOTIFY_URL&lt;/code&gt; / &lt;code&gt;GOTIFY_TOKEN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BARK_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WX_BOT_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TELEGRAM_BOT_TOKEN&lt;/code&gt; / &lt;code&gt;TELEGRAM_CHAT_ID&lt;/code&gt; / &lt;code&gt;TELEGRAM_API_BASE_URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBHOOK_*&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通知是這類工具的核心體驗。監控系統如果只把結果寫進後台，使用者仍然需要反覆打開頁面查看；有推送之後，命中商品才能在第一時間觸達。&lt;/p&gt;
&lt;p&gt;更實用的配置方式是按商品價值分層：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通關鍵字命中只寫入後台。&lt;/li&gt;
&lt;li&gt;AI 高置信度結果推送到手機。&lt;/li&gt;
&lt;li&gt;高價值商品推送到企業微信或 Telegram。&lt;/li&gt;
&lt;li&gt;調試階段開啟更多日誌，穩定後減少噪音。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;開發者運行&#34;&gt;開發者運行
&lt;/h2&gt;&lt;p&gt;如果不使用 Docker，本地開發需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;Node.js + npm&lt;/li&gt;
&lt;li&gt;Playwright CLI&lt;/li&gt;
&lt;li&gt;Chromium 或 Chrome / Edge 瀏覽器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基礎命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/Usagi-org/ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ai-goofish-monitor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一鍵啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x start.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./start.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start.sh&lt;/code&gt; 會檢查 Playwright CLI 和瀏覽器條件，自動安裝依賴、建置前端、複製建置產物並啟動後端。&lt;/p&gt;
&lt;p&gt;手動啟動後端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m src.app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uvicorn src.app:app --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt; --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前端開發：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;測試和建置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PYTEST_DISABLE_PLUGIN_AUTOLOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; web-ui &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;適合哪些人&#34;&gt;適合哪些人
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 適合這些使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;經常在閒魚蹲特定型號商品的人。&lt;/li&gt;
&lt;li&gt;想監控二手數位產品、攝影器材、遊戲設備、硬體配件的人。&lt;/li&gt;
&lt;li&gt;想把「關鍵字搜尋 + 人工篩選」自動化的人。&lt;/li&gt;
&lt;li&gt;有 OpenAI 相容模型 API，並願意為 AI 判斷支付調用成本的人。&lt;/li&gt;
&lt;li&gt;熟悉 Docker 或基本命令列部署的人。&lt;/li&gt;
&lt;li&gt;需要把命中結果推送到手機、企業微信或 Telegram 的使用者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太適合這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全不懂部署，只想要一個即開即用 App。&lt;/li&gt;
&lt;li&gt;不願意處理登入態、驗證碼和帳號風控。&lt;/li&gt;
&lt;li&gt;需要官方授權、強合規的資料介面。&lt;/li&gt;
&lt;li&gt;想大規模高頻抓取平台資料。&lt;/li&gt;
&lt;li&gt;希望 AI 自動判斷交易風險並替你下單。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用風險和邊界&#34;&gt;使用風險和邊界
&lt;/h2&gt;&lt;p&gt;這類工具一定要注意邊界。&lt;/p&gt;
&lt;p&gt;第一，遵守平台規則。&lt;/p&gt;
&lt;p&gt;閒魚有自己的服務條款、風控策略和帳號安全機制。自動化存取可能觸發限制。不要高頻抓取，不要繞過風控，不要把它用於騷擾賣家、批量採集隱私或破壞平台秩序。&lt;/p&gt;
&lt;p&gt;第二，保護帳號登入態。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;state/&lt;/code&gt; 裡保存的是登入狀態 cookie 文件。它本質上等同於帳號存取憑證，不能提交到 Git 倉庫，也不要放到不可信伺服器上。伺服器如果暴露在公網，Web UI 必須修改預設密碼，並建議放在 VPN、反向代理鑑權或內網之後。&lt;/p&gt;
&lt;p&gt;第三，AI 判斷不是事實保證。&lt;/p&gt;
&lt;p&gt;AI 可以幫你減少誤報，但不能保證商品真實、賣家可信、價格合理或交易安全。最終仍然要人工看商品詳情、賣家評價、聊天記錄、發貨方式和支付流程。&lt;/p&gt;
&lt;p&gt;第四，注意成本。&lt;/p&gt;
&lt;p&gt;如果每個候選商品都交給多模態模型分析，調用成本可能很快上升。建議先用關鍵字、價格和區域做強篩選，再把少量候選交給 AI。&lt;/p&gt;
&lt;p&gt;第五，注意隱私。&lt;/p&gt;
&lt;p&gt;商品截圖、聊天相關內容、帳號狀態和通知內容都可能包含敏感資訊。通知 Webhook、日誌目錄和資料庫都要妥善保護。&lt;/p&gt;
&lt;h2 id=&#34;和普通腳本的差別&#34;&gt;和普通腳本的差別
&lt;/h2&gt;&lt;p&gt;普通閒魚監控腳本通常只做三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;搜尋關鍵字。&lt;/li&gt;
&lt;li&gt;判斷價格。&lt;/li&gt;
&lt;li&gt;發通知。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ai-goofish-monitor 更進一步：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Web UI 管理任務和帳號。&lt;/li&gt;
&lt;li&gt;用 AI Prompt 表達複雜購買標準。&lt;/li&gt;
&lt;li&gt;用多模態模型看商品圖和描述。&lt;/li&gt;
&lt;li&gt;用 SQLite 保存結果和價格歷史。&lt;/li&gt;
&lt;li&gt;用日誌頁排查任務失敗原因。&lt;/li&gt;
&lt;li&gt;用代理輪換和多帳號機制提高穩定性。&lt;/li&gt;
&lt;li&gt;用定時任務支援長期運行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因為功能更多，它的部署和維護成本更高。對普通使用者來說，Docker 部署是最省事的方式；對開發者來說，Web UI、FastAPI、Playwright、SQLite 這套結構也比較容易二次開發。&lt;/p&gt;
&lt;h2 id=&#34;可以怎麼用&#34;&gt;可以怎麼用
&lt;/h2&gt;&lt;p&gt;比較實用的使用方式是從小任務開始。&lt;/p&gt;
&lt;p&gt;比如你想找一台二手相機，可以先建立一個任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;關鍵字：&lt;code&gt;A7C&lt;/code&gt;、&lt;code&gt;索尼 A7C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;價格範圍：按市場價設定上限&lt;/li&gt;
&lt;li&gt;區域：優先本省或同城&lt;/li&gt;
&lt;li&gt;新發布範圍：最近一天或最近幾小時&lt;/li&gt;
&lt;li&gt;AI 標準：排除單鏡頭、排除維修機、排除明顯配件、關注快門數和成色&lt;/li&gt;
&lt;li&gt;通知：只推送 AI 判斷通過的結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;穩定運行後，再逐步增加任務數量。不要一開始就上幾十個關鍵字、多個帳號和高頻 Cron。先看登入態穩定性、誤報率、AI 成本和通知噪音，再調參數。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor 把閒魚監控從「關鍵字腳本」推進到了「可管理的 AI 監控系統」。它用 Playwright 處理頁面自動化，用 AI 處理複雜判斷，用 Web UI 管理任務和結果，用 SQLite 保存資料，再透過多種通知渠道把結果推送出來。&lt;/p&gt;
&lt;p&gt;它最適合個人或小團隊做特定商品監控，尤其是二手數位產品、硬體、攝影器材這類價格波動大、發布時間敏感、描述噪音多的品類。&lt;/p&gt;
&lt;p&gt;但它也需要謹慎使用：登入態要保護，預設密碼要改，抓取頻率要克制，AI 結果要人工複核，平台規則和隱私邊界不能忽視。把它當成輔助篩選工具，它會很有價值；把它當成全自動交易系統，就容易高估它的能力。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/README_EN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案英文 README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor/blob/master/DISCLAIMER.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案免責聲明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenKB：把文件編譯成可持續更新的 LLM 知識庫</title>
        <link>https://knightli.com/zh-tw/2026/05/17/openkb-llm-knowledge-base/</link>
        <pubDate>Sun, 17 May 2026 17:15:08 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/openkb-llm-knowledge-base/</guid>
        <description>&lt;p&gt;OpenKB 是 VectifyAI 開源的 LLM 知識庫工具。&lt;/p&gt;
&lt;p&gt;它不是傳統意義上「把文件切塊、向量化、查詢時再拼上下文」的 RAG 系統，而是把原始文件先編譯成一個結構化 wiki：有文件摘要、有概念頁、有交叉引用，也有後續查詢和 lint 檢查。換句話說，它更像是一個會持續整理資料的知識庫 CLI。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/VectifyAI/OpenKB&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;OpenKB 值得關注的地方有三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它把知識庫輸出成普通 Markdown 文件，而不是鎖在某個專用資料庫裡。&lt;/li&gt;
&lt;li&gt;它用 PageIndex 處理長 PDF，主打無向量資料庫的長文件檢索。&lt;/li&gt;
&lt;li&gt;它強調「知識編譯」，讓 LLM 生成摘要、概念頁和交叉連結，而不是每次提問都從零檢索。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這讓 OpenKB 更適合長期累積資料的場景，比如論文閱讀、專案文件、公司內部資料、技術規範、產品調研和個人知識庫。&lt;/p&gt;
&lt;p&gt;它也不是萬能替代品。如果你需要高併發線上問答、複雜權限管理、Web 管理後台、企業級審計和大規模多租戶能力，OpenKB 現在更像一個開發者工具和知識庫原型，而不是完整企業知識平台。&lt;/p&gt;
&lt;h2 id=&#34;openkb-是什麼&#34;&gt;OpenKB 是什麼
&lt;/h2&gt;&lt;p&gt;OpenKB 的全名是 Open Knowledge Base。&lt;/p&gt;
&lt;p&gt;它以 CLI 形式工作，把放進知識庫的原始文件轉換、整理、總結，並生成一套 wiki 文件。官方 README 的描述很直接：OpenKB 會用 LLM 把原始文件編譯成結構化、互相連結的 wiki 風格知識庫，並透過 PageIndex 支援無向量資料庫的長文件檢索。&lt;/p&gt;
&lt;p&gt;支援的輸入格式包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PDF&lt;/li&gt;
&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;li&gt;PowerPoint&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;純文字&lt;/li&gt;
&lt;li&gt;其他可由 markitdown 轉換的格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生成後的知識庫位於 &lt;code&gt;wiki/&lt;/code&gt; 目錄，主要包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.md&lt;/code&gt;：知識庫總覽&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log.md&lt;/code&gt;：操作時間線&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;：知識庫結構和維護說明&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/&lt;/code&gt;：轉換後的原文&lt;/li&gt;
&lt;li&gt;&lt;code&gt;summaries/&lt;/code&gt;：每份文件的摘要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;concepts/&lt;/code&gt;：跨文件概念頁&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explorations/&lt;/code&gt;：保存的查詢結果&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reports/&lt;/code&gt;：lint 檢查報告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個設計最大的好處是透明。你可以直接打開 Markdown 文件查看知識庫，而不是只能透過一個黑盒檢索介面拿答案。&lt;/p&gt;
&lt;h2 id=&#34;它和傳統-rag-有什麼不同&#34;&gt;它和傳統 RAG 有什麼不同
&lt;/h2&gt;&lt;p&gt;傳統 RAG 常見流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把文件切塊。&lt;/li&gt;
&lt;li&gt;生成 embedding。&lt;/li&gt;
&lt;li&gt;存進向量資料庫。&lt;/li&gt;
&lt;li&gt;查詢時召回相關片段。&lt;/li&gt;
&lt;li&gt;把片段塞給 LLM 生成答案。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個流程很成熟，也很適合問答系統。但它有一個問題：知識本身沒有真正沉澱。每次提問都在重新找片段、重新拼上下文、重新生成答案。&lt;/p&gt;
&lt;p&gt;OpenKB 的思路更偏「先整理，再問答」：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文件進入 &lt;code&gt;raw/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;短文件透過 markitdown 轉成 Markdown。&lt;/li&gt;
&lt;li&gt;長 PDF 透過 PageIndex 生成樹狀索引和摘要。&lt;/li&gt;
&lt;li&gt;LLM 生成文件摘要。&lt;/li&gt;
&lt;li&gt;LLM 讀取已有概念頁，建立或更新跨文件概念。&lt;/li&gt;
&lt;li&gt;知識庫索引、日誌和交叉連結同步更新。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣做的結果是，新增一份文件不只是多了一個可檢索文件，而是可能更新十幾個 wiki 頁面。知識會被寫進概念頁裡，並和已有資料發生連結。&lt;/p&gt;
&lt;p&gt;這更像人類維護知識庫的方式：新資料進來後，不只是存檔，還要更新主題頁、總結差異、補充引用。&lt;/p&gt;
&lt;h2 id=&#34;pageindex-解決什麼問題&#34;&gt;PageIndex 解決什麼問題
&lt;/h2&gt;&lt;p&gt;長文件一直是 RAG 和 LLM 知識庫裡的難點。&lt;/p&gt;
&lt;p&gt;如果直接把長 PDF 切成很多 chunk，容易遇到幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;章節關係丟失。&lt;/li&gt;
&lt;li&gt;表格、圖片和註腳難處理。&lt;/li&gt;
&lt;li&gt;檢索片段過碎，答案缺少全局結構。&lt;/li&gt;
&lt;li&gt;上下文視窗再大，也不適合把整份文件塞進去。&lt;/li&gt;
&lt;li&gt;摘要鏈路過長時，細節容易被壓掉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenKB 使用 PageIndex 來處理長 PDF。按專案說明，PageIndex 會為長文件建立樹狀索引和摘要，讓 LLM 在文件樹上推理，而不是直接讀取整篇長文件。&lt;/p&gt;
&lt;p&gt;這條路線的重點不是「向量相似度最高的幾段文字」，而是讓模型利用文件層級結構找到相關內容。對於研究報告、論文、說明書、招股書、合規文件這類長材料，這個思路很有意義。&lt;/p&gt;
&lt;p&gt;OpenKB 預設可以使用開源版 PageIndex 本地運行；如果需要 OCR、複雜 PDF 處理或更快結構生成，也可以配置 &lt;code&gt;PAGEINDEX_API_KEY&lt;/code&gt; 使用 PageIndex Cloud。&lt;/p&gt;
&lt;h2 id=&#34;安裝和快速開始&#34;&gt;安裝和快速開始
&lt;/h2&gt;&lt;p&gt;OpenKB 可以直接透過 pip 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install openkb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以安裝 GitHub 最新版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install git+https://github.com/VectifyAI/OpenKB.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從原始碼開發安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/VectifyAI/OpenKB.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; OpenKB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;建立一個知識庫目錄：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir my-kb &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-kb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新增文件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb add paper.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb add ~/papers/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;提問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb query &lt;span class=&#34;s2&#34;&gt;&amp;#34;What are the main findings?&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;進入互動聊天：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb chat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想讓知識庫自動處理新文件，可以使用 watch 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openkb watch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之後把文件放進 &lt;code&gt;raw/&lt;/code&gt;，OpenKB 會自動更新 wiki。&lt;/p&gt;
&lt;h2 id=&#34;llm-配置&#34;&gt;LLM 配置
&lt;/h2&gt;&lt;p&gt;OpenKB 透過 LiteLLM 支援多種模型供應商，包括 OpenAI、Claude、Gemini 等。&lt;/p&gt;
&lt;p&gt;初始化時可以設定模型，也可以在 &lt;code&gt;.openkb/config.yaml&lt;/code&gt; 裡配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;en&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;pageindex_threshold&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型名稱遵循 LiteLLM 的 &lt;code&gt;provider/model&lt;/code&gt; 格式。OpenAI 模型可以省略 provider 前綴，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gpt-5.4&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Anthropic、Gemini 這類模型通常寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;anthropic/claude-sonnet-4-6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemini/gemini-3.1-pro-preview&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;API key 放在 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LLM_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_llm_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果啟用 PageIndex Cloud，再補充：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PAGEINDEX_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_pageindex_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;常用命令&#34;&gt;常用命令
&lt;/h2&gt;&lt;p&gt;OpenKB 的命令很適合開發者使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;openkb init&lt;/code&gt;：初始化知識庫。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb add &amp;lt;file_or_dir&amp;gt;&lt;/code&gt;：新增文件或目錄。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb remove &amp;lt;doc&amp;gt;&lt;/code&gt;：移除文件，並清理相關 wiki 頁面、圖片、註冊表和 PageIndex 狀態。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb query &amp;quot;question&amp;quot;&lt;/code&gt;：對知識庫進行一次性提問。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb chat&lt;/code&gt;：進入多輪對話。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb watch&lt;/code&gt;：監聽 &lt;code&gt;raw/&lt;/code&gt; 目錄並自動更新。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb lint&lt;/code&gt;：檢查知識庫結構和內容健康狀態。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb list&lt;/code&gt;：列出已索引文件和概念。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb status&lt;/code&gt;：查看知識庫統計資訊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 &lt;code&gt;openkb chat&lt;/code&gt; 比 &lt;code&gt;openkb query&lt;/code&gt; 更適合連續探索。它支援會話恢復、會話列表和刪除，也支援在聊天中使用 slash commands，比如 &lt;code&gt;/status&lt;/code&gt;、&lt;code&gt;/list&lt;/code&gt;、&lt;code&gt;/add &amp;lt;path&amp;gt;&lt;/code&gt;、&lt;code&gt;/save&lt;/code&gt;、&lt;code&gt;/lint&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-markdown-wiki-很重要&#34;&gt;為什麼 Markdown wiki 很重要
&lt;/h2&gt;&lt;p&gt;很多知識庫工具的麻煩在於遷移成本。&lt;/p&gt;
&lt;p&gt;一旦資料進入專有資料庫、專有索引或專有格式，你就很難直接審查、修改、備份和遷移。OpenKB 把結果寫成普通 Markdown，這讓它天然適合和現有工具配合。&lt;/p&gt;
&lt;p&gt;最直接的用法是用 Obsidian 打開 &lt;code&gt;wiki/&lt;/code&gt; 目錄：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;摘要頁可以直接閱讀。&lt;/li&gt;
&lt;li&gt;概念頁可以用 &lt;code&gt;[[wikilinks]]&lt;/code&gt; 互相連結。&lt;/li&gt;
&lt;li&gt;圖譜視圖可以看到知識之間的關係。&lt;/li&gt;
&lt;li&gt;查詢結果可以保存到 &lt;code&gt;explorations/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; 可以定義知識庫維護方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這讓 OpenKB 不只是一個問答工具，也可以變成個人或團隊的知識整理流水線。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;OpenKB 特別適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;論文和技術報告閱讀。&lt;/li&gt;
&lt;li&gt;專案文件整理。&lt;/li&gt;
&lt;li&gt;產品調研資料庫。&lt;/li&gt;
&lt;li&gt;開源專案原始碼之外的文件知識庫。&lt;/li&gt;
&lt;li&gt;公司內部規範、會議紀要和說明文件整理。&lt;/li&gt;
&lt;li&gt;個人 Obsidian 知識庫自動維護。&lt;/li&gt;
&lt;li&gt;長 PDF、PPT、Word 和網頁資料的結構化沉澱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你經常面對一堆文件，卻不只是想「問一句得到答案」，而是希望資料能逐步變成可瀏覽、可復用、可追蹤的知識庫，OpenKB 的方向就很對。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，OpenKB 依賴 LLM 品質。&lt;/p&gt;
&lt;p&gt;摘要、概念頁和交叉連結都由模型生成。模型越強，知識編譯品質越穩定；模型能力不足時，概念抽取、衝突識別和跨文件綜合都會打折扣。&lt;/p&gt;
&lt;p&gt;第二，成本要提前估算。&lt;/p&gt;
&lt;p&gt;如果一次性匯入大量長文件，LLM 調用成本可能不低。建議先用小規模資料集測試，確認輸出結構和品質，再擴大匯入範圍。&lt;/p&gt;
&lt;p&gt;第三，生成的 wiki 仍然需要人工審閱。&lt;/p&gt;
&lt;p&gt;OpenKB 可以整理資料，但不等於自動保證事實完全正確。重要知識庫仍然需要人工檢查摘要、概念頁和引用關係。&lt;/p&gt;
&lt;p&gt;第四，敏感資料要謹慎。&lt;/p&gt;
&lt;p&gt;如果使用雲端 LLM 或 PageIndex Cloud，就要注意文件裡的隱私、商業機密和合規要求。內部資料最好先確認模型供應商、資料保留策略和存取邊界。&lt;/p&gt;
&lt;p&gt;第五，它目前更偏 CLI 工具。&lt;/p&gt;
&lt;p&gt;專案路線圖裡提到未來會有 Web UI、資料庫儲存、大規模集合支援和層級概念索引。但在目前階段，如果團隊成員不熟悉命令列，使用門檻仍然存在。&lt;/p&gt;
&lt;h2 id=&#34;和-obsidiannotebooklm企業-rag-的關係&#34;&gt;和 Obsidian、NotebookLM、企業 RAG 的關係
&lt;/h2&gt;&lt;p&gt;OpenKB 和 Obsidian 的關係更像「自動整理層」和「閱讀編輯層」。&lt;/p&gt;
&lt;p&gt;Obsidian 適合人來寫、改、瀏覽和建立連結；OpenKB 適合把原始文件批量整理成可以進入 Obsidian 的 wiki。&lt;/p&gt;
&lt;p&gt;OpenKB 和 NotebookLM 的關係則更偏「本地可控」和「開放文件形態」。&lt;/p&gt;
&lt;p&gt;NotebookLM 使用體驗更直接，適合把資料丟進去快速問答和生成摘要；OpenKB 更適合開發者把整理結果留在本地目錄裡，用 Markdown 繼續維護。&lt;/p&gt;
&lt;p&gt;OpenKB 和企業 RAG 的關係不是替代，而是補位。&lt;/p&gt;
&lt;p&gt;企業 RAG 更看重權限、審計、服務化、權限隔離、監控和穩定吞吐。OpenKB 更適合構建一個可讀、可改、可長期沉澱的知識層。未來如果要做線上問答，也可以把 OpenKB 生成的 wiki 作為更高品質的語料來源。&lt;/p&gt;
&lt;h2 id=&#34;一個推薦工作流&#34;&gt;一個推薦工作流
&lt;/h2&gt;&lt;p&gt;如果你想試 OpenKB，可以按這個順序來：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新建一個測試知識庫目錄。&lt;/li&gt;
&lt;li&gt;先放 3 到 5 份同一主題的文件。&lt;/li&gt;
&lt;li&gt;運行 &lt;code&gt;openkb add&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;打開 &lt;code&gt;wiki/&lt;/code&gt; 查看摘要和概念頁。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;openkb query&lt;/code&gt; 問幾個具體問題。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;openkb lint&lt;/code&gt; 檢查知識庫健康狀態。&lt;/li&gt;
&lt;li&gt;用 Obsidian 打開 &lt;code&gt;wiki/&lt;/code&gt;，看連結圖譜是否有意義。&lt;/li&gt;
&lt;li&gt;確認品質後，再匯入更大的文件集合。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要一上來就把幾百個文件全丟進去。先看它對你的資料類型是否理解得好，尤其是表格、圖片、長 PDF 和多文件概念合併效果。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;OpenKB 的價值在於，它把 LLM 知識庫從「查詢時臨時拼上下文」往前推了一步：先把資料整理成 wiki，再在 wiki 上問答、聊天、檢查和繼續維護。&lt;/p&gt;
&lt;p&gt;這條路線不一定適合所有問答系統，但很適合需要長期沉澱的知識工作。Markdown 文件、Obsidian 相容、PageIndex 長文件處理、多模型支援和 CLI 工作流，組合起來就是一個很適合開發者和研究型使用者的知識庫工具。&lt;/p&gt;
&lt;p&gt;如果你手上有大量 PDF、報告、網頁、論文和專案文件，OpenKB 值得試一下。它未必能馬上替代成熟企業知識庫，但可以成為一個很實用的資料整理入口：先把文件變成可讀、可連結、可追蹤的知識，再讓 LLM 在這套知識上工作。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openkb.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenKB 專案頁面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pageindex.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PageIndex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/markitdown&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;markitdown&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.litellm.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LiteLLM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Google Gemini Spark 爆料解讀：一個 24 小時在線的 Gemini Agent 可能要來了</title>
        <link>https://knightli.com/zh-tw/2026/05/17/google-gemini-spark-ai-agent-leak/</link>
        <pubDate>Sun, 17 May 2026 11:58:08 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/google-gemini-spark-ai-agent-leak/</guid>
        <description>&lt;p&gt;Google 還沒有正式發布 &lt;code&gt;Gemini Spark&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;目前關於它的資訊，主要來自 Gemini Web 內部測試介面、社群截圖、TestingCatalog 報導，以及 36Kr / 新智元對相關爆料的整理。比較一致的說法是：&lt;code&gt;Gemini Spark BETA&lt;/code&gt; 可能是 Google 正在準備的全天候 AI Agent，定位不再只是聊天助手，而是能在後台處理郵件、線上任務和多步驟工作流的「日常 AI 代理」。&lt;/p&gt;
&lt;p&gt;所以這篇文章先把邊界說清楚：這是爆料解讀，不是 Google 官方發布稿。所有功能、命名和上線時間，都要等 Google 正式公告確認。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;從目前曝光的資訊看，Gemini Spark 有三個重點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它可能是 Gemini 體系裡的 24 小時在線 Agent，而不是普通聊天模型。&lt;/li&gt;
&lt;li&gt;它會調用更廣泛的個人上下文，包括 Google 應用、聊天記錄、任務、登入網站和位置資訊等。&lt;/li&gt;
&lt;li&gt;它的風險和吸引力一樣大，因為它可能涉及資訊分享、遠端瀏覽器資料、購買動作和第三方服務調用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果 Google 真把 Spark 推出來，Gemini 的定位會發生變化：從「回答問題的 AI」變成「替你持續處理事務的 AI」。&lt;/p&gt;
&lt;h2 id=&#34;gemini-spark-是什麼&#34;&gt;Gemini Spark 是什麼
&lt;/h2&gt;&lt;p&gt;TestingCatalog 在 2026 年 5 月 14 日報導，Google 正在 Gemini Web 中測試 &lt;code&gt;Gemini Spark BETA&lt;/code&gt;。曝光的歡迎文案把它描述成一個 everyday AI agent，可以 24/7 幫使用者處理 inbox、online tasks 和更多多步驟工作。&lt;/p&gt;
&lt;p&gt;36Kr / 新智元的文章也提到，Spark 被扒出後，外界看到的是一個「全時 Agent」方向：它可以全天候待命，處理收件匣、執行線上任務，甚至可能涉及購買和資訊分享。&lt;/p&gt;
&lt;p&gt;這意味著 Spark 不是一個單純的新模型名。它更像是 Gemini 產品層的一次升級：讓 Gemini 從對話窗口裡走出來，進入使用者的郵件、網頁、日程、任務和跨應用工作流。&lt;/p&gt;
&lt;h2 id=&#34;它可能怎麼工作&#34;&gt;它可能怎麼工作
&lt;/h2&gt;&lt;p&gt;根據 TestingCatalog 披露的隱藏 onboarding 文案，Gemini Spark 會從多種來源取得上下文，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connected Apps。&lt;/li&gt;
&lt;li&gt;skills。&lt;/li&gt;
&lt;li&gt;chats。&lt;/li&gt;
&lt;li&gt;tasks。&lt;/li&gt;
&lt;li&gt;使用者登入過的網站。&lt;/li&gt;
&lt;li&gt;Personal intelligence。&lt;/li&gt;
&lt;li&gt;location。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些資訊會幫助 Spark 理解使用者想完成什麼，並在執行任務時調用必要的上下文。文案還提到，為了完成某些動作，Gemini 可能會把必要資訊分享給第三方，例如姓名、聯絡方式、文件、偏好，以及使用者可能認為敏感的資訊。&lt;/p&gt;
&lt;p&gt;如果這些描述最終屬實，Spark 的工作方式會更接近「帶上下文的代理系統」，而不是一次性問答。它不是只看當前一句 prompt，而是可能綜合長期偏好、連接應用、瀏覽器狀態和任務歷史。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它重要&#34;&gt;為什麼它重要
&lt;/h2&gt;&lt;p&gt;Gemini Spark 的關鍵，不在於多一個聊天入口，而在於 Google 有天然的生態入口。&lt;/p&gt;
&lt;p&gt;OpenAI 和 Anthropic 可以做很強的 Agent，但它們很難天然擁有 Gmail、Calendar、Drive、Chrome、Android、Workspace 這條完整鏈路。Google 如果把 Spark 接進這些產品，使用者不需要額外搭建太多工作流，就能讓 Agent 進入日常事務。&lt;/p&gt;
&lt;p&gt;這會帶來三個變化。&lt;/p&gt;
&lt;p&gt;第一，Gemini 會從被動問答變成主動執行。使用者不再只是問「幫我總結這封郵件」，而是可能讓它持續整理 inbox、追蹤任務和執行後續動作。&lt;/p&gt;
&lt;p&gt;第二，Agent 會更依賴個人上下文。它越懂你的郵件、日程、文件、瀏覽器狀態和偏好，越可能給出有用結果。&lt;/p&gt;
&lt;p&gt;第三，權限邊界會變得更敏感。能做更多事，也意味著需要更清楚地知道它什麼時候能做、能做到哪一步、是否需要確認。&lt;/p&gt;
&lt;h2 id=&#34;風險點在哪裡&#34;&gt;風險點在哪裡
&lt;/h2&gt;&lt;p&gt;TestingCatalog 披露的文案裡，有幾處很值得關注。&lt;/p&gt;
&lt;p&gt;第一，Spark 是 experimental。也就是說，即便它上線，也不應被當成完全成熟、無需監督的系統。&lt;/p&gt;
&lt;p&gt;第二，雖然系統設計上會在敏感操作前徵求許可，但文案也提示，它可能會在未經詢問的情況下分享資訊或完成購買。&lt;/p&gt;
&lt;p&gt;第三，為了保持會話連續性，Gemini 會保存 remote browser data，比如登入細節和 remote code execution data。使用者可以在 Settings 中清除這些資料，也可以關閉 Connected Apps 和 Personal intelligence 相關能力。&lt;/p&gt;
&lt;p&gt;這幾個點合在一起，說明 Spark 的產品方向很激進：它要做真正能執行任務的 Agent，而不是只生成建議。但越接近真實執行，越需要嚴格的權限、稽核、確認和回滾機制。&lt;/p&gt;
&lt;h2 id=&#34;和-remyai-ultra-的關係&#34;&gt;和 Remy、AI Ultra 的關係
&lt;/h2&gt;&lt;p&gt;TestingCatalog 提到，Spark 可能是此前內部代號 &lt;code&gt;Remy&lt;/code&gt; 的 agentic Gemini upgrade 的重命名版本，也與面向 Google AI Ultra 訂閱使用者的 Gemini Agent 方向有關。&lt;/p&gt;
&lt;p&gt;如果這個線索成立，Spark 可能不是憑空出現的新專案，而是 Google 把此前較高階、較封閉的 Agent 能力重新包裝，並準備推向更大範圍使用者。&lt;/p&gt;
&lt;p&gt;36Kr / 新智元也把它描述成從 “Remy” 到 “Spark” 的升級：Gemini Agent 不再只是一個功能，而是要走向 24/7 的數位生活管家。&lt;/p&gt;
&lt;p&gt;不過這仍然是基於爆料資訊的判斷。Google 是否會使用 &lt;code&gt;Spark&lt;/code&gt; 這個正式名稱、是否只面向 AI Ultra、是否推出更輕量訂閱層，還要等官方確認。&lt;/p&gt;
&lt;h2 id=&#34;mcpskills-和工具生態&#34;&gt;MCP、skills 和工具生態
&lt;/h2&gt;&lt;p&gt;同一批社群截圖裡，還出現了 &lt;code&gt;MCP Tool Testing&lt;/code&gt; 這類模型選擇器入口。36Kr 文章認為，這可能暗示新 Gemini 會原生支援 MCP 第三方工具接入，Thinking 模式也會重構。&lt;/p&gt;
&lt;p&gt;這條線索和 Spark 放在一起看，很有意思。&lt;/p&gt;
&lt;p&gt;如果 Spark 只是「會聊天的助手」，skills 和 MCP 的意義有限。但如果 Spark 是一個長期運行的 Agent，它就需要可靠地調用工具、存取網頁、執行任務、讀寫上下文，並把結果交付給使用者。&lt;/p&gt;
&lt;p&gt;也就是說，Spark 可能不是單點功能，而是 Google Agent 工具生態的一部分：模型負責理解和規劃，skills / MCP / connected apps 負責執行和擴展。&lt;/p&gt;
&lt;h2 id=&#34;對普通使用者意味著什麼&#34;&gt;對普通使用者意味著什麼
&lt;/h2&gt;&lt;p&gt;如果 Gemini Spark 真的發布，普通使用者最直接的變化可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;郵件不只是被總結，而是可以被分類、跟進和轉成任務。&lt;/li&gt;
&lt;li&gt;網頁任務不只是給建議，而是可能在遠端瀏覽器中持續執行。&lt;/li&gt;
&lt;li&gt;日程、位置、偏好和歷史對話會變成 Agent 的長期上下文。&lt;/li&gt;
&lt;li&gt;購買、預訂、表單填寫等動作可能進入 AI 執行範圍。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這聽起來很方便，但使用者需要建立新的習慣：不再只看 AI 說了什麼，還要看 AI 準備做什麼、已經做了什麼、能不能撤回、有沒有記錄。&lt;/p&gt;
&lt;p&gt;未來 AI Agent 的體驗好不好，可能不只取決於模型聰不聰明，還取決於權限提示是否清楚、任務日誌是否可查、錯誤操作能不能恢復。&lt;/p&gt;
&lt;h2 id=&#34;對開發者和團隊意味著什麼&#34;&gt;對開發者和團隊意味著什麼
&lt;/h2&gt;&lt;p&gt;對開發者來說，Spark 的意義在於 Google 可能正在把 Agent 從「展示產品」推向真實工作流平台。&lt;/p&gt;
&lt;p&gt;如果 Spark 能穩定連接 Google 應用、第三方工具和瀏覽器狀態，那麼開發者會關心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 或擴展機制是否開放。&lt;/li&gt;
&lt;li&gt;MCP 或 skills 是否可由第三方接入。&lt;/li&gt;
&lt;li&gt;企業管理員能否控制權限、資料留存和稽核。&lt;/li&gt;
&lt;li&gt;Agent 執行失敗時是否有可追蹤日誌。&lt;/li&gt;
&lt;li&gt;是否支援沙盒、審批流和敏感操作確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對團隊來說，Spark 可能會先從 Gmail、Calendar、Docs、Drive、Chrome 這類高頻場景切入。它未必一開始就適合完全自動化高風險業務，但很適合作為 inbox triage、會議跟進、資料整理、市場研究和輕量營運任務的助手。&lt;/p&gt;
&lt;h2 id=&#34;現在應該怎麼看&#34;&gt;現在應該怎麼看
&lt;/h2&gt;&lt;p&gt;這條消息適合用「高可信方向，低確定細節」來理解。&lt;/p&gt;
&lt;p&gt;高可信方向是：Google 確實在推進更主動、更長期運行、更深度接入生態的 Gemini Agent。TestingCatalog 報導的 Gemini Web 測試文案、社群截圖和 36Kr 整理的多方爆料，都指向同一個方向。&lt;/p&gt;
&lt;p&gt;低確定細節是：正式名稱、上線時間、權限規則、訂閱層級、可用地區、是否開放 API、是否真的叫 Gemini Spark，都還不能下結論。&lt;/p&gt;
&lt;p&gt;所以現在最穩妥的判斷是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把 Spark 當成已經發布的正式產品。&lt;/li&gt;
&lt;li&gt;可以把它視為 Google 下一階段 AI Agent 路線的強訊號。&lt;/li&gt;
&lt;li&gt;真正值得等的是官方如何解釋權限、隱私、第三方資料分享和遠端瀏覽器資料保存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemini Spark&lt;/code&gt; 如果最終發布，可能會是 Gemini 從聊天助手走向全天候 Agent 的關鍵一步。它不只是換一個模型，而是把 Gemini 放進 Google 生態的郵件、網頁、任務、位置、個人智能和第三方服務裡。&lt;/p&gt;
&lt;p&gt;它的潛力很大：更主動、更貼近真實工作流，也更容易借助 Google 的生態分發給大量使用者。它的風險也同樣大：一旦 AI 能分享資訊、保存瀏覽器狀態、執行購買和調用第三方服務，權限邊界就必須非常清楚。&lt;/p&gt;
&lt;p&gt;所以 Gemini Spark 最值得關注的不是「它有多聰明」，而是 Google 準備怎樣讓一個 24 小時在線的 AI Agent 變得可控、可稽核、可信任。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.testingcatalog.com/google-prepares-gemini-spark-ai-agent-ahead-of-i-o-launch/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TestingCatalog：Google prepares Gemini Spark AI Agent ahead of I/O launch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://36kr.com/p/3810432812162816&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;36Kr：Gemini 3.5 Pro 全網首曝，編程追平 GPT-5.5，谷歌終於狠起來了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Intelligence on Android 解讀：Google 正在把手機變成主動式 AI 系統</title>
        <link>https://knightli.com/zh-tw/2026/05/17/google-gemini-intelligence-android/</link>
        <pubDate>Sun, 17 May 2026 09:13:32 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/google-gemini-intelligence-android/</guid>
        <description>&lt;p&gt;Google 在 2026 年 5 月 12 日發布了《A smarter, more proactive Android with Gemini Intelligence》，介紹 Gemini Intelligence on Android。它不是一個單獨的聊天 App，而是把 Gemini 能力放進 Android 系統、Chrome、Gboard、Autofill、widgets 和多設備體驗裡，讓手機從「等使用者點按鈕」變成「能主動幫使用者完成任務」的智能系統。&lt;/p&gt;
&lt;p&gt;簡單說，Google 想讓 Android 從 operating system 走向 intelligence system。手機不只是打開應用、顯示通知、運行設定，而是可以理解螢幕、應用、語音和個人上下文，在使用者確認下完成更複雜的操作。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android 主要包含五個方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多步任務自動化：讓 Gemini 在應用之間完成叫車、購物、找資料等流程。&lt;/li&gt;
&lt;li&gt;Chrome 智能瀏覽：在 Android 上總結網頁、比較資訊，並處理部分重複性網頁任務。&lt;/li&gt;
&lt;li&gt;Autofill 升級：結合 Gemini 和個人上下文，幫使用者填寫更複雜的表單。&lt;/li&gt;
&lt;li&gt;Rambler：把自然口語整理成更清楚、更專業的文字訊息。&lt;/li&gt;
&lt;li&gt;自然語言小工具：使用者用一句話描述需求，Android 生成自訂 widgets。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些功能會從 2026 年夏天開始分批推出，先到部分 Samsung Galaxy 和 Google Pixel 手機，之後擴展到更多 Android 設備，包括手錶、汽車、眼鏡和筆電。&lt;/p&gt;
&lt;h2 id=&#34;多步任務自動化從建議變成執行&#34;&gt;多步任務自動化：從建議變成執行
&lt;/h2&gt;&lt;p&gt;Google 這次最重要的方向，是讓 Gemini 幫使用者跨應用完成多步任務。&lt;/p&gt;
&lt;p&gt;原文舉了幾個例子：使用者可以讓 Gemini 訂健身單車課程、從 Gmail 裡找到課程大綱並把需要的書加入購物車，或者看到一張旅遊宣傳圖後，直接讓 Gemini 在 Expedia 上尋找類似行程。&lt;/p&gt;
&lt;p&gt;這類能力的關鍵不只是「理解一句話」，而是要同時理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者目前螢幕或圖片裡的內容。&lt;/li&gt;
&lt;li&gt;使用者授權範圍內的應用資訊。&lt;/li&gt;
&lt;li&gt;下一步應該打開哪個應用。&lt;/li&gt;
&lt;li&gt;哪些步驟可以自動執行。&lt;/li&gt;
&lt;li&gt;哪些步驟必須停下來讓使用者確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google 特別強調，Gemini 會在使用者指令下行動，並在任務完成時停止，最終確認仍由使用者控制。這說明它不是完全自動代理，而是帶有人類確認環節的移動端 agent。&lt;/p&gt;
&lt;h2 id=&#34;螢幕和圖片上下文變得更重要&#34;&gt;螢幕和圖片上下文變得更重要
&lt;/h2&gt;&lt;p&gt;這次更新裡，一個值得注意的變化是 screen context 和 image context。&lt;/p&gt;
&lt;p&gt;以前手機助手更多依賴語音命令和應用內固定介面。Gemini Intelligence 則更強調「看見目前螢幕」。例如使用者在備忘錄裡有一份購物清單，可以長按電源鍵喚起 Gemini，讓它根據清單建立配送購物車。&lt;/p&gt;
&lt;p&gt;這意味著 Android AI 不只是聊天機器人，而是在嘗試理解使用者眼前的操作環境。未來手機 AI 的競爭，可能不只誰的模型回答更好，還包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能理解目前螢幕。&lt;/li&gt;
&lt;li&gt;能不能跨應用執行。&lt;/li&gt;
&lt;li&gt;能不能在後台追蹤任務進度。&lt;/li&gt;
&lt;li&gt;能不能在關鍵節點可靠地讓使用者確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是移動端 AI 和網頁聊天 AI 的重要區別。&lt;/p&gt;
&lt;h2 id=&#34;chrome-智能瀏覽從搜尋到網頁任務代理&#34;&gt;Chrome 智能瀏覽：從搜尋到網頁任務代理
&lt;/h2&gt;&lt;p&gt;Google 表示，從 2026 年 6 月下旬開始，Android 設備會獲得更智能的 Gemini in Chrome。&lt;/p&gt;
&lt;p&gt;它可以幫助使用者研究、總結和比較網頁內容，也可以透過 Chrome auto browse 處理一些重複性網頁任務，比如預約、預訂停車位等。&lt;/p&gt;
&lt;p&gt;這說明 Gemini in Chrome 不只是「網頁摘要」功能，而是在向瀏覽器代理發展。瀏覽器本來就是使用者完成網頁任務的入口，如果 Gemini 能理解網頁、填寫資訊、比較選項並執行部分步驟，Chrome 就會從瀏覽工具變成任務執行介面。&lt;/p&gt;
&lt;p&gt;不過，這類功能也會面對幾個現實問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;網站結構複雜，自動操作容易失敗。&lt;/li&gt;
&lt;li&gt;表單、支付、登入和驗證碼等環節需要謹慎處理。&lt;/li&gt;
&lt;li&gt;使用者需要知道 Gemini 到底做了什麼。&lt;/li&gt;
&lt;li&gt;最終提交、付款或預訂最好仍保留人工確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，真正的難點不只是模型能力，而是瀏覽器自動化、安全邊界和使用者信任。&lt;/p&gt;
&lt;h2 id=&#34;autofill從自動填密碼到自動填複雜表單&#34;&gt;Autofill：從自動填密碼到自動填複雜表單
&lt;/h2&gt;&lt;p&gt;Autofill with Google 原本更多是密碼、地址、付款資訊等基礎便利功能。現在 Google 想把它升級成更智能的表單助手。&lt;/p&gt;
&lt;p&gt;原文說，借助 Gemini 的 Personal Intelligence，Android 可以用連接應用中的相關資訊，自動填寫更多複雜表單欄位，包括 Chrome 裡的表單。&lt;/p&gt;
&lt;p&gt;這類能力很實用。移動端填寫複雜表單一直很痛苦，螢幕小、欄位多、經常需要從郵件、日曆、聊天和文件裡複製資訊。如果 Gemini 能在使用者授權下自動整理並填寫，會節省很多時間。&lt;/p&gt;
&lt;p&gt;但 Google 也強調，連接 Gemini 和 Autofill with Google 是嚴格 opt-in。也就是說，使用者自己選擇是否連接，之後也可以在設定裡隨時開關。&lt;/p&gt;
&lt;p&gt;這點很重要，因為 Autofill 涉及個人資料、地址、帳號、支付、工作資訊和敏感表單。越是有用，越需要明確授權和可控退出。&lt;/p&gt;
&lt;h2 id=&#34;rambler把口語變成可發送文本&#34;&gt;Rambler：把口語變成可發送文本
&lt;/h2&gt;&lt;p&gt;Rambler 是這次更新裡比較有意思的新功能。&lt;/p&gt;
&lt;p&gt;Gboard 已經可以把語音轉文字，但人說話時常常會有重複、停頓、語氣詞和自我修正。Rambler 的目標是把自然說話整理成更清楚、更適合發送的文本。&lt;/p&gt;
&lt;p&gt;它適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你想快速口述一段訊息，但不想逐字修改。&lt;/li&gt;
&lt;li&gt;你說話時夾雜停頓、重複和語氣詞。&lt;/li&gt;
&lt;li&gt;你需要把隨口想法整理成更專業的簡訊、郵件或聊天內容。&lt;/li&gt;
&lt;li&gt;你在多語言之間切換，希望系統理解上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google 還提到，Rambler 會清楚顯示使用者何時啟用了它，音訊只用於即時轉寫，不會被保存。這是對隱私和透明度的回應。&lt;/p&gt;
&lt;p&gt;從產品角度看，Rambler 其實是把「語音輸入」升級成「語音寫作」。它不只是記錄你說了什麼，而是幫你把口語變成可發送的文字。&lt;/p&gt;
&lt;h2 id=&#34;自然語言建立小工具&#34;&gt;自然語言建立小工具
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence 還會帶來 Create My Widget。使用者可以直接用自然語言描述想要的小工具，比如「每週推薦三份高蛋白備餐食譜」，系統就生成一個可以放在主螢幕上的自訂 widget。&lt;/p&gt;
&lt;p&gt;這代表 Android 在嘗試 generative UI：使用者不再只從固定模板裡選擇小工具，而是描述自己想看的資訊和展示方式。&lt;/p&gt;
&lt;p&gt;如果這個方向成熟，手機主螢幕可能會變得更個人化。天氣、日程、健康、通勤、飲食、學習、工作提醒，都可以變成按使用者需求生成的動態模組。&lt;/p&gt;
&lt;p&gt;不過，生成式 UI 也需要解決穩定性問題。小工具不是一次性聊天回覆，而是長期顯示在桌面上，必須可靠、可讀、可配置，並且不能亂占螢幕空間。&lt;/p&gt;
&lt;h2 id=&#34;material-3-expressive-與智能-ui&#34;&gt;Material 3 Expressive 與智能 UI
&lt;/h2&gt;&lt;p&gt;Google 還提到，Gemini Intelligence 會帶來基於 Material 3 Expressive 的更新設計語言。&lt;/p&gt;
&lt;p&gt;這部分不是單純美化介面，而是讓 UI 動畫和互動更有目的感，減少干擾，讓使用者更專注於任務。換句話說，當 AI 開始主動處理任務時，介面需要清楚表達：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 正在做什麼。&lt;/li&gt;
&lt;li&gt;哪些步驟已經完成。&lt;/li&gt;
&lt;li&gt;哪些地方需要使用者確認。&lt;/li&gt;
&lt;li&gt;使用者如何取消或修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主動式 AI 如果沒有清晰 UI，很容易讓使用者感到失控。所以設計語言本身也會成為 AI 產品體驗的一部分。&lt;/p&gt;
&lt;h2 id=&#34;可用性和節奏&#34;&gt;可用性和節奏
&lt;/h2&gt;&lt;p&gt;根據 Google 原文，Gemini Intelligence 功能會從最新 Samsung Galaxy 和 Google Pixel 手機開始，在 2026 年夏天分批推出。之後會擴展到更多 Android 設備，包括手錶、汽車、眼鏡和筆電。&lt;/p&gt;
&lt;p&gt;這說明它不是一次性全球全量上線，而是分批 rollout。具體可用性可能取決於設備、地區、語言、應用支援和帳號設定。&lt;/p&gt;
&lt;p&gt;如果你想體驗這些功能，最現實的預期是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先關注 Pixel 和 Samsung 旗艦機。&lt;/li&gt;
&lt;li&gt;關注 2026 年夏季後的系統更新。&lt;/li&gt;
&lt;li&gt;留意 Gemini、Chrome、Gboard、Autofill 和 Android 設定中的新開關。&lt;/li&gt;
&lt;li&gt;不同地區和語言可能不會同時支援所有功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;這對-android-意味著什麼&#34;&gt;這對 Android 意味著什麼
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android 的意義，不是又加了幾個 AI 小功能，而是 Android 產品定位的變化。&lt;/p&gt;
&lt;p&gt;過去的手機系統主要負責管理應用、通知、權限、檔案和硬體。現在 Google 想讓系統理解使用者意圖，並在應用之間完成任務。這個方向如果成功，Android 的競爭點會從「系統功能和生態應用」擴展到「能不能主動幫使用者做事」。&lt;/p&gt;
&lt;p&gt;這也會讓移動端 AI 競爭進入新階段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple 會強調本地化、隱私和系統整合。&lt;/li&gt;
&lt;li&gt;Google 會強調 Gemini、搜尋、Chrome、Android 和多設備生態。&lt;/li&gt;
&lt;li&gt;第三方 AI App 會更難和系統級入口競爭。&lt;/li&gt;
&lt;li&gt;應用開發者需要考慮自己的 App 如何被 AI 代理呼叫。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;未來幾年，手機上的 AI 可能不再只是一個聊天入口，而是變成系統級執行層。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Google 這次發布的 Gemini Intelligence on Android，核心不是「手機裡多了一個 Gemini 聊天框」，而是把 AI 放進 Android 的操作流程裡。多步任務自動化、Chrome 智能瀏覽、Autofill、Rambler 和自然語言小工具，都是在讓手機從被動工具變成主動助手。&lt;/p&gt;
&lt;p&gt;它能不能真正改變使用者習慣，取決於幾個關鍵因素：自動化是否可靠、隱私開關是否清楚、跨應用操作是否順暢、使用者是否始終保留最終控制權。至少從這次發布看，Google 已經把 Android 的下一階段定義為主動式 AI 系統，而不只是傳統移動操作系統。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/gemini-intelligence/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Blog：A smarter, more proactive Android with Gemini Intelligence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 支援 ChatGPT 移動端遠端存取，Enterprise 工作區可用 Access Tokens</title>
        <link>https://knightli.com/zh-tw/2026/05/17/codex-mobile-remote-access-enterprise-access-tokens/</link>
        <pubDate>Sun, 17 May 2026 09:12:07 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/codex-mobile-remote-access-enterprise-access-tokens/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月 14 日更新了 ChatGPT Enterprise &amp;amp; Edu Release Notes，重點只有兩件事：Codex 支援透過 ChatGPT 移動端遠端存取，Enterprise 工作區可以使用 Codex access tokens 做受控自動化。&lt;/p&gt;
&lt;p&gt;這不是一次模型能力發布，而是 Codex 產品形態的變化。Codex 正在從「本地或網頁裡的編程助手」，變成可以長時間執行、可以遠端接管、可以接入企業自動化流程的 coding agent。&lt;/p&gt;
&lt;h2 id=&#34;這次更新是什麼&#34;&gt;這次更新是什麼
&lt;/h2&gt;&lt;p&gt;根據 OpenAI Help Center 的說明，Codex 現在支援從 ChatGPT mobile app 遠端存取。使用者可以在手機上連接正在執行的 Codex 環境，持續跟進長時間任務，並在需要時介入。&lt;/p&gt;
&lt;p&gt;同時，ChatGPT Enterprise 工作區新增 Codex access tokens。它們面向可信的非互動式本地工作流，讓自動化流程可以使用 ChatGPT workspace identity 和企業控制，而不需要每次透過瀏覽器登入。&lt;/p&gt;
&lt;p&gt;可以把這次更新理解成兩個入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移動端遠端存取：解決「Codex 跑長任務時，人不在電腦前怎麼辦」。&lt;/li&gt;
&lt;li&gt;Access Tokens：解決「企業自動化腳本如何以受控身份呼叫 Codex 工作流」。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;移動端遠端存取解決什麼問題&#34;&gt;移動端遠端存取解決什麼問題
&lt;/h2&gt;&lt;p&gt;Codex 的典型任務並不總是幾秒鐘完成。真實開發裡，它可能要閱讀程式碼庫、修改多個檔案、執行測試、等待命令輸出、根據錯誤繼續修復，甚至需要使用者中途批准某些操作。&lt;/p&gt;
&lt;p&gt;過去這類任務往往要求使用者守在本地 Mac、桌面端、CLI 或 IDE 旁邊。現在，ChatGPT 移動端可以變成一個遠端控制台，讓使用者離開電腦後仍能跟進 Codex。&lt;/p&gt;
&lt;p&gt;OpenAI 提到，移動端可以展示底層環境的即時狀態，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案上下文。&lt;/li&gt;
&lt;li&gt;approvals。&lt;/li&gt;
&lt;li&gt;screenshots。&lt;/li&gt;
&lt;li&gt;terminal output。&lt;/li&gt;
&lt;li&gt;diffs。&lt;/li&gt;
&lt;li&gt;test results。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用者也可以在手機上回答 Codex 的問題、重定向執行、批准操作、查看輸出，並在不同 connected hosts 之間切換。底層任務仍然運行在 Mac host 或連接的遠端環境中，手機端負責查看和控制。&lt;/p&gt;
&lt;h2 id=&#34;這對開發者有什麼價值&#34;&gt;這對開發者有什麼價值
&lt;/h2&gt;&lt;p&gt;這項能力最適合長時間、需要中途確認的開發任務。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex 正在跑一組耗時測試，你出門後仍想看結果。&lt;/li&gt;
&lt;li&gt;Codex 修改了多個檔案，需要你在手機上看 diff 後批准下一步。&lt;/li&gt;
&lt;li&gt;Codex 執行到某個危險操作前等待確認，你可以遠端處理。&lt;/li&gt;
&lt;li&gt;本地 Mac 上有多個 connected hosts，需要在手機上切換查看狀態。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的價值不是讓你在手機上寫程式，而是讓你不用一直守著電腦。Codex 繼續在原環境裡工作，你只在關鍵節點介入。&lt;/p&gt;
&lt;p&gt;這也說明 Codex 的使用方式正在接近「後台 Agent」：任務可以持續執行，使用者不必全程在線，但仍要保留審批和控制權。&lt;/p&gt;
&lt;h2 id=&#34;access-tokens-解決什麼問題&#34;&gt;Access Tokens 解決什麼問題
&lt;/h2&gt;&lt;p&gt;Codex access tokens 面向 ChatGPT Enterprise 工作區。它們的重點不是普通個人使用者登入，而是企業內部可信自動化。&lt;/p&gt;
&lt;p&gt;企業裡經常有一些本地或內部流程需要非互動式執行，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定時執行程式碼檢查。&lt;/li&gt;
&lt;li&gt;在受控機器上觸發 Codex 工作流。&lt;/li&gt;
&lt;li&gt;將 Codex 接入內部開發工具鏈。&lt;/li&gt;
&lt;li&gt;在不開啟瀏覽器的情況下使用工作區身份。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access tokens 讓這些流程可以帶著 ChatGPT workspace identity 執行，同時繼續受企業策略約束。相比臨時人工登入，它更適合自動化；相比隨便共享個人憑據，它也更容易納入治理。&lt;/p&gt;
&lt;h2 id=&#34;它不是普通-api-key&#34;&gt;它不是普通 API key
&lt;/h2&gt;&lt;p&gt;這點很重要。Codex access tokens 不應該被理解成一個簡單的「萬能 API key」。&lt;/p&gt;
&lt;p&gt;OpenAI 的說明裡提到，access tokens 可用於 ChatGPT Enterprise 工作區，管理員可以管理工作區級可用性，擁有允許角色的成員可以建立自己的 tokens。治理介面在可用情況下也會反映 access token 活動。&lt;/p&gt;
&lt;p&gt;也就是說，access tokens 被放在企業權限、角色和審計框架裡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;管理員可以決定工作區是否開放。&lt;/li&gt;
&lt;li&gt;不是所有成員都天然可以建立。&lt;/li&gt;
&lt;li&gt;token 活動可以進入治理視圖。&lt;/li&gt;
&lt;li&gt;它繼承 ChatGPT workspace identity 和企業控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這和個人隨手產生一個長期密鑰不是一回事。&lt;/p&gt;
&lt;h2 id=&#34;安全預設值remote-control-預設關閉&#34;&gt;安全預設值：Remote Control 預設關閉
&lt;/h2&gt;&lt;p&gt;Codex mobile remote access 涉及程式碼環境、終端輸出、diff、測試結果和操作審批。如果預設開放，會帶來明顯企業安全風險。&lt;/p&gt;
&lt;p&gt;因此 OpenAI 的預設策略是：remote control 預設關閉，管理員或 owner 需要在 Workspace settings 中啟用。&lt;/p&gt;
&lt;p&gt;啟用移動端遠端存取時，還可能涉及：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;workspace-enabled Remote Control access。&lt;/li&gt;
&lt;li&gt;SSO。&lt;/li&gt;
&lt;li&gt;多因素認證。&lt;/li&gt;
&lt;li&gt;passkey。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明它是需要企業 IT 和安全團隊參與配置的能力，而不是「更新 App 後所有人自動可用」。&lt;/p&gt;
&lt;h2 id=&#34;使用前需要更新什麼&#34;&gt;使用前需要更新什麼
&lt;/h2&gt;&lt;p&gt;OpenAI 提到，要使用移動端遠端存取，需要更新兩端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT mobile app。&lt;/li&gt;
&lt;li&gt;macOS 上的 Codex app。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果工作區啟用了相關要求，移動端設定過程還可能觸發 SSO、多因素認證或 passkey 流程。&lt;/p&gt;
&lt;p&gt;實際落地時，企業管理員還需要先確認 Workspace settings 裡的 remote control 設定，以及哪些成員或角色可以使用相關能力。&lt;/p&gt;
&lt;h2 id=&#34;對企業-codex-使用方式的影響&#34;&gt;對企業 Codex 使用方式的影響
&lt;/h2&gt;&lt;p&gt;這次更新把 Codex 往兩個方向推進。&lt;/p&gt;
&lt;p&gt;第一，Codex 更適合長任務。以前長任務最大的問題是使用者要一直盯著，現在手機可以查看狀態和批准操作，Codex 可以更自然地跑在後台。&lt;/p&gt;
&lt;p&gt;第二，Codex 更適合企業自動化。Access tokens 讓非互動式工作流有了更正式的身份方式，後續更容易接入內部 CI、程式碼審查、腳本和開發平台。&lt;/p&gt;
&lt;p&gt;這兩個方向結合起來，意味著 Codex 不再只是「開發者手邊的 AI 助手」，而是在變成企業開發流程裡的一個可管理 agent。&lt;/p&gt;
&lt;h2 id=&#34;仍然需要注意的邊界&#34;&gt;仍然需要注意的邊界
&lt;/h2&gt;&lt;p&gt;這次更新很有用，但並不意味著 Codex 可以完全無人看管。&lt;/p&gt;
&lt;p&gt;企業使用時仍然要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些專案允許遠端控制。&lt;/li&gt;
&lt;li&gt;哪些命令需要審批。&lt;/li&gt;
&lt;li&gt;token 如何建立、輪換和撤銷。&lt;/li&gt;
&lt;li&gt;mobile remote access 是否符合公司設備管理策略。&lt;/li&gt;
&lt;li&gt;終端輸出、截圖和 diff 是否可能包含敏感資訊。&lt;/li&gt;
&lt;li&gt;審計日誌和治理介面是否能滿足內部合規要求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是 access tokens，一旦進入自動化流程，就要像其他企業憑據一樣管理：最小權限、定期輪換、避免硬編碼、及時撤銷不用的 token。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;OpenAI 這次 Codex 更新的重點很集中：ChatGPT 移動端可以遠端存取 Codex 長任務，Enterprise 工作區可以用 Codex access tokens 支援受控自動化。&lt;/p&gt;
&lt;p&gt;前者讓開發者不必一直守在電腦前，後者讓企業可以把 Codex 更正式地接入內部工作流。兩者合在一起，說明 Codex 正在從互動式編程助手，進一步走向可遠端管理、可審計、可自動化接入的企業 coding agent。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/10128477-chatgpt-enterprise-edu-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Enterprise &amp;amp; Edu - Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 額度為什麼突然重置？Usage Limits 歷史與消息來源整理</title>
        <link>https://knightli.com/zh-tw/2026/05/17/codex-usage-limit-reset-history/</link>
        <pubDate>Sun, 17 May 2026 08:36:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/codex-usage-limit-reset-history/</guid>
        <description>&lt;p&gt;Codex 使用者偶爾會遇到一種情況：明明還沒到自己的常規 reset 時間，usage limits 卻突然恢復了。這種「無預兆重置」不是第一次出現，也不一定代表額度規則永久變寬。它可能來自故障補償、產品活動、成長里程碑，也可能只是某個視窗或部分帳號狀態被後台重置。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset.png&#34;
	width=&#34;1146&#34;
	height=&#34;712&#34;
	srcset=&#34;https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset_hu_8e2e55bed895f615.png 480w, https://knightli.com/2026/05/17/codex-usage-limit-reset-history/tibo-codex-gpt55-reset_hu_1736ae030ba80b22.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Tibo 關於 Codex usage limits 重置的截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;160&#34;
		data-flex-basis=&#34;386px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;這張截圖來自 OpenAI Codex 團隊負責人 Tibo Sottiaux（@thsottiaux）在 X 上發布的公告。對關注額度的使用者來說，最關鍵的一句不是模型細節，而是：他表示會在當晚 reset usage limits。截圖中的上下文說明，這次重置是一次補償性操作，而不是普通週期刷新。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;Codex 額度突然重置，大致可以分成幾類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;故障補償&lt;/strong&gt;：模型或 Codex 服務異常導致使用者浪費額度，官方透過重置彌補。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;發布或推廣活動&lt;/strong&gt;：新模型、新客戶端、新功能上線時，臨時提高或重置額度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成長里程碑&lt;/strong&gt;：使用者規模達到某個節點後，官方用重置或提額鼓勵繼續使用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;後台策略調整&lt;/strong&gt;：部分額度視窗、部分帳號狀態被重置，但 UI 不一定解釋清楚。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通使用者最容易誤解的是：看到「重置」就以為所有視窗都恢復了。實際上，Codex 可能同時有短視窗、weekly limit、不同模型和不同方案限制。一次特殊重置可能只影響其中一部分。&lt;/p&gt;
&lt;h2 id=&#34;這次截圖說明了什麼&#34;&gt;這次截圖說明了什麼
&lt;/h2&gt;&lt;p&gt;截圖顯示，Tibo 在 2026 年 5 月 15 日發布更新，表示團隊會繼續監控，並在當晚重置 usage limits。它引用了前一條「正在調查部分使用者回報」的消息，因此這次重置更像一次服務波動後的補償。&lt;/p&gt;
&lt;p&gt;對使用者來說，可以提煉出三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;這不是使用者自己的常規週期到了，而是官方主動重置。&lt;/li&gt;
&lt;li&gt;這次重置有明確事件背景，不是永久提額公告。&lt;/li&gt;
&lt;li&gt;「usage limits」的具體覆蓋範圍仍要看實際帳號顯示，截圖本身沒有解釋 5 小時視窗、weekly limit 是否全部包含。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以，如果你看到額度恢復，正確做法不是馬上推斷「以後都變寬了」，而是先把它當成一次特殊 reset event。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-codex-會無預兆重置&#34;&gt;為什麼 Codex 會無預兆重置
&lt;/h2&gt;&lt;p&gt;Codex 的額度體系不是一個簡單的「每天幾點刷新」。使用者介面通常只顯示剩餘額度或百分比，但後台可能同時追蹤：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短時間視窗，例如幾小時內的使用量。&lt;/li&gt;
&lt;li&gt;週額度或更長週期額度。&lt;/li&gt;
&lt;li&gt;不同模型的消耗權重。&lt;/li&gt;
&lt;li&gt;本地 Codex、Cloud Task、IDE/CLI 等不同入口。&lt;/li&gt;
&lt;li&gt;Plus、Pro、Business、Team 等不同方案。&lt;/li&gt;
&lt;li&gt;帳號是否符合某次特殊重置的後台條件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當 OpenAI 做一次特殊重置時，使用者未必能看到「這是普通週期恢復，還是特殊補償」。如果只重置短視窗，使用者可能誤以為 weekly 也應該恢復；如果 weekly 沒變，就會懷疑重置失敗。&lt;/p&gt;
&lt;p&gt;OpenAI 的 Codex GitHub issue 裡也有人專門回報過這個透明度問題：公開說 reset Codex rate limits，但產品 UI 沒有說明到底重置了哪些視窗、是否包含 weekly limit、是否所有付費方案都一致生效。這也是「無預兆重置」讓人困惑的核心原因。&lt;/p&gt;
&lt;h2 id=&#34;歷史上的幾類重置&#34;&gt;歷史上的幾類重置
&lt;/h2&gt;&lt;h3 id=&#34;1-2026-年-2-月發布期與臨時加量&#34;&gt;1. 2026 年 2 月：發布期與臨時加量
&lt;/h3&gt;&lt;p&gt;Codex 桌面應用和 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 推廣期間，社群使用者討論過 usage limit reset 和臨時 2x rate limits。Reddit 上有使用者提到 Codex app 剛發布時提供過限時 2x rate limits，並伴隨 usage limit reset。&lt;/p&gt;
&lt;p&gt;這類重置更像發布期營運動作：讓更多使用者試用新客戶端、新模型或新工作流。&lt;/p&gt;
&lt;h3 id=&#34;2-2026-年-3-月隨機重置與異常消耗討論&#34;&gt;2. 2026 年 3 月：隨機重置與異常消耗討論
&lt;/h3&gt;&lt;p&gt;3 月前後，社群裡多次出現「random usage reset」「weekly limit reset daily」之類帖子。有使用者回報自己的 weekly limit 被提前恢復，也有人認為這和 Codex 新模型、新安全攔截、異常消耗或 bug 修復有關。&lt;/p&gt;
&lt;p&gt;這些討論不等同於官方公告，但它們說明一件事：使用者側已經多次觀察到額度並非只按固定週期恢復。某些情況下，後台會因為問題修復或補償而觸發額外 reset。&lt;/p&gt;
&lt;h3 id=&#34;3-2026-年-4-月成長里程碑與付費方案重置&#34;&gt;3. 2026 年 4 月：成長里程碑與付費方案重置
&lt;/h3&gt;&lt;p&gt;4 月下旬，有公開報導提到 Codex 達到 300 萬週活躍使用者後，OpenAI 重置了 rate limits，並計畫在後續使用者成長里程碑繼續給使用者更多額度空間。&lt;/p&gt;
&lt;p&gt;GitHub issue 中也引用過 Tibo 4 月 28 日的 X 公告：他提到曾為「good week」重置付費方案的 Codex rate limits，讓使用者可以更多使用 &lt;code&gt;GPT-5.5&lt;/code&gt;。不過同一個 issue 也指出，實際產品 UI 沒有清楚說明到底哪些額度視窗被重置，weekly limit 是否全部包含。&lt;/p&gt;
&lt;p&gt;這說明成長或活動型重置，往往也會帶來解釋成本：使用者聽到「all paid plans」，但帳號裡看到的結果未必完全一致。&lt;/p&gt;
&lt;h3 id=&#34;4-2026-年-5-月故障補償型重置&#34;&gt;4. 2026 年 5 月：故障補償型重置
&lt;/h3&gt;&lt;p&gt;這次截圖屬於更典型的故障補償型重置。Tibo 明確說團隊找到了問題並會在當晚 reset usage limits。OpenAI Status 也記錄過 2026 年 5 月 13 日 Codex 相關高錯誤率和延遲退化事件。&lt;/p&gt;
&lt;p&gt;對普通使用者而言，這次重點不是某個模型是否變差，而是：當服務端問題讓使用者額度被異常消耗時，OpenAI 可能會透過特殊重置來補償。&lt;/p&gt;
&lt;h2 id=&#34;使用者該怎麼判斷一次重置來自哪裡&#34;&gt;使用者該怎麼判斷一次重置來自哪裡
&lt;/h2&gt;&lt;p&gt;遇到 Codex 額度突然恢復，可以按這個順序判斷：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看自己的常規 reset 時間，排除普通週期恢復。&lt;/li&gt;
&lt;li&gt;看 OpenAI Status 是否有 Codex、模型錯誤率、延遲或降級記錄。&lt;/li&gt;
&lt;li&gt;看 Tibo、OpenAI 官方帳號、Codex GitHub issue 是否有說明。&lt;/li&gt;
&lt;li&gt;看社群回饋是否集中出現「突然 reset」「額度燃燒異常」「weekly 沒恢復」等討論。&lt;/li&gt;
&lt;li&gt;區分短視窗和 weekly limit，不要預設所有視窗都會一起恢復。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是官方事故補償，通常會伴隨狀態頁記錄、負責人公告或大量使用者集中回饋。如果只是後台部分視窗刷新，可能不會有明確公告。&lt;/p&gt;
&lt;h2 id=&#34;消息來源怎麼分辨可靠性&#34;&gt;消息來源怎麼分辨可靠性
&lt;/h2&gt;&lt;p&gt;這類消息最好分層看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;官方狀態頁&lt;/strong&gt;：最適合確認是否有服務故障、錯誤率、延遲、恢復時間。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tibo / OpenAI 官方帳號&lt;/strong&gt;：適合確認是否有特殊 reset、補償或活動口徑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Codex GitHub issue&lt;/strong&gt;：適合看使用者對 UI、額度視窗、實際行為的回饋。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;社群 Reddit / X 討論&lt;/strong&gt;：適合觀察使用者是否普遍遇到類似現象，但不能直接當成官方結論。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三方新聞或部落格&lt;/strong&gt;：適合補充時間線，但仍要回到官方和原始連結核對。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;寫文章或做判斷時，最好把這些來源分開寫。比如「OpenAI Status 記錄了服務問題」是官方狀態；「Reddit 使用者回報隨機重置」是社群觀察；「GitHub issue 反映 UI 不透明」是使用者提交的問題描述。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Codex 額度突然重置，通常不是一個單純的「系統送額度」。它可能來自故障補償、發布期推廣、成長活動或後台策略調整。真正容易造成誤解的地方在於：Codex 同時存在多個額度視窗，而特殊 reset 不一定覆蓋所有視窗，UI 也不一定清楚展示 reset scope。&lt;/p&gt;
&lt;p&gt;所以，遇到無預兆重置時，最穩的判斷方式是：先看客戶端實際額度，再查 OpenAI Status、Tibo 公告、Codex GitHub issue 和社群回饋。不要只憑一次 reset 推斷長期額度規則，也不要預設 weekly limit、短視窗和所有方案都會同步恢復。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://status.openai.com/incidents/01KRG6MF021JQ997JCR7R8Y9A0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Status：Codex 5.5 engines are experiencing high error rate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/LovingCodex/comments/1teo5ki/tibo_we_foundfixed_two_issues_that_could_explain/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit 轉發的 Tibo 公告截圖與 X 連結&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/codex/issues/20395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub：Clarify Codex rate-limit reset behavior and make reset scope visible in Usage UI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.createwith.com/tool/chatgpt/updates/chatgpt-codex-hits-3-million-weekly-users-openai-resets-rate-limits&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Create With：ChatGPT Codex Hits 3 Million Weekly Users, OpenAI Resets Rate Limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/codex/comments/1rjcwli/usage_limit_reset/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：Usage limit reset?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.reddit.com/r/codex/comments/1qu2gjx/when_the_unnexpected_usage_limit_reset_hits_ty/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Reddit：when the unexpected usage limit reset hits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>easy-vibe：給 Vibe Coding 初學者的一張學習地圖</title>
        <link>https://knightli.com/zh-tw/2026/05/16/easy-vibe-vibe-coding-learning-map/</link>
        <pubDate>Sat, 16 May 2026 22:44:43 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/easy-vibe-vibe-coding-learning-map/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;easy-vibe&lt;/a&gt; 是 Datawhale 開源的 Vibe Coding 學習專案。它面向的不是已經熟練使用 AI 編程工具的開發者，而是剛開始接觸 Vibe Coding 的學生、產品經理、設計師、營運、獨立開發者和普通技術愛好者。&lt;/p&gt;
&lt;p&gt;這個專案的價值不在於又列出一批 AI 工具，而是把「怎麼開始用 AI 做專案」拆成了更容易理解的學習路徑。對很多新手來說，真正困難的不是不知道有 Claude Code、Cursor、MCP 或 Agent，而是不知道應該先學什麼、怎麼練、什麼時候進入進階工具。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-新手最缺的是路徑&#34;&gt;Vibe Coding 新手最缺的是路徑
&lt;/h2&gt;&lt;p&gt;Vibe Coding 這幾年很紅，但它對新手並不友好。&lt;/p&gt;
&lt;p&gt;表面上看，只要會描述需求，就可以讓 AI 寫程式。實際上，只要任務稍微複雜一點，問題就會出現：需求說不清，模型改錯檔案，專案結構看不懂，錯誤不會處理，依賴裝不上，提示詞越寫越亂，最後只能回到「複製程式碼到聊天框」的狀態。&lt;/p&gt;
&lt;p&gt;所以 Vibe Coding 入門不能只教「怎麼寫提示詞」。它至少要解決幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何把想法拆成可執行任務；&lt;/li&gt;
&lt;li&gt;如何讓 AI 理解專案結構；&lt;/li&gt;
&lt;li&gt;如何看懂模型生成的程式碼；&lt;/li&gt;
&lt;li&gt;如何處理錯誤和迭代；&lt;/li&gt;
&lt;li&gt;如何使用終端和本地開發環境；&lt;/li&gt;
&lt;li&gt;如何從網頁聊天過渡到真正的 AI 編程工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;easy-vibe 的意義就在這裡：它試圖把這些內容整理成一條學習路線，而不是讓新手自己在工具、教程和術語裡迷路。&lt;/p&gt;
&lt;h2 id=&#34;它不是單點教程而是路線圖&#34;&gt;它不是單點教程，而是路線圖
&lt;/h2&gt;&lt;p&gt;從專案介紹看，easy-vibe 覆蓋了基礎教程、互動式練習、視覺化內容、RAG、終端工具、AI 編程工具，以及更進階的 Claude Code、MCP、Skills、Agent Teams 等主題。&lt;/p&gt;
&lt;p&gt;這類組織方式比較適合初學者。因為 AI 編程不是一個單獨技能，而是一組能力的組合：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;會描述需求；&lt;/li&gt;
&lt;li&gt;會拆任務；&lt;/li&gt;
&lt;li&gt;會讀專案；&lt;/li&gt;
&lt;li&gt;會讓模型改程式碼；&lt;/li&gt;
&lt;li&gt;會執行和驗證；&lt;/li&gt;
&lt;li&gt;會根據錯誤繼續迭代；&lt;/li&gt;
&lt;li&gt;會把常用流程沉澱成工具或技能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只學某一個工具，很容易被工具介面限制住。換一個模型、換一個編輯器、換一個 CLI，就又不知道怎麼做。路線圖的好處是先建立工作方式，再把工具放到合適的位置。&lt;/p&gt;
&lt;h2 id=&#34;對非程式設計師尤其有用&#34;&gt;對非程式設計師尤其有用
&lt;/h2&gt;&lt;p&gt;Vibe Coding 最大的吸引力，是讓非專業程式設計師也能做出原型。&lt;/p&gt;
&lt;p&gt;產品經理可以把產品想法變成可互動 demo，設計師可以驗證互動邏輯，營運可以寫內部工具，學生可以快速做課程專案，創業者可以在早期驗證需求。這些人不一定要成為傳統意義上的全職工程師，但需要掌握一套「讓 AI 幫我把想法落地」的方法。&lt;/p&gt;
&lt;p&gt;這也是 easy-vibe 適合中文社群的原因。很多中文使用者已經知道 AI 能寫程式，但還缺少系統入門材料：從開發環境、提示詞、專案結構、除錯方法到 Agent 工具使用，最好能用中文解釋清楚，並配合練習逐步推進。&lt;/p&gt;
&lt;p&gt;對這類使用者來說，最重要的不是一上來學複雜框架，而是先跑通完整閉環：提出需求、生成專案、執行起來、發現問題、繼續修改、最終得到一個可用版本。&lt;/p&gt;
&lt;h2 id=&#34;進階部分開始靠近真實-ai-開發工作流&#34;&gt;進階部分開始靠近真實 AI 開發工作流
&lt;/h2&gt;&lt;p&gt;easy-vibe 裡提到的 Claude Code、MCP、Skills、Agent Teams，已經不只是入門概念。&lt;/p&gt;
&lt;p&gt;Claude Code 代表的是終端編程 Agent：模型可以進入本地專案，讀取檔案、修改程式碼、執行命令。MCP 解決的是工具和資料來源接入，讓模型不只停留在聊天框裡。Skills 則把可複用流程沉澱下來，例如固定的專案生成、文件整理、測試檢查或內容生產流程。Agent Teams 進一步把任務拆給多個智能體協作。&lt;/p&gt;
&lt;p&gt;這些內容對新手來說可能有點遠，但它們值得提前了解。因為 Vibe Coding 的發展方向已經很清楚：從「讓 AI 寫一段程式碼」，走向「讓 AI 參與一個完整專案流程」。&lt;/p&gt;
&lt;p&gt;如果學習路線只停留在提示詞層面，很快就會跟不上工具演進。反過來，如果一開始就把所有高階概念塞給新手，又會讓人無從下手。easy-vibe 的合理價值，是把這些內容放在一條逐步升級的路徑裡。&lt;/p&gt;
&lt;h2 id=&#34;學習時要避免兩個誤區&#34;&gt;學習時要避免兩個誤區
&lt;/h2&gt;&lt;p&gt;第一個誤區，是以為 Vibe Coding 等於不會程式也能完全不管程式。&lt;/p&gt;
&lt;p&gt;AI 可以生成很多內容，但使用者仍然需要判斷結果是否正確。至少要能看懂專案結構、知道怎麼執行、知道錯誤大概發生在哪裡。即使不寫複雜程式，也要具備基本的工程常識。&lt;/p&gt;
&lt;p&gt;第二個誤區，是以為工具越高階越好。&lt;/p&gt;
&lt;p&gt;新手不一定一開始就需要 Claude Code、MCP 或多 Agent。更好的順序是先用簡單專案建立回饋循環，再逐步引入終端、版本管理、測試、工具調用和自動化流程。工具要跟任務複雜度匹配，否則很容易變成「看起來很強，但不知道用來做什麼」。&lt;/p&gt;
&lt;h2 id=&#34;適合怎麼用&#34;&gt;適合怎麼用
&lt;/h2&gt;&lt;p&gt;如果你剛接觸 Vibe Coding，可以把 easy-vibe 當作學習清單來用。&lt;/p&gt;
&lt;p&gt;先從基礎概念和簡單練習開始，不急著追所有工具。做一個小專案，例如個人首頁、資料看板、表單工具、自動化腳本或知識庫 demo。過程中重點觀察 AI 在哪些地方幫得上忙，哪些地方需要你自己確認。&lt;/p&gt;
&lt;p&gt;等你能穩定完成小專案，再開始學習更複雜的內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用終端工具處理本地專案；&lt;/li&gt;
&lt;li&gt;用 Git 管理每次修改；&lt;/li&gt;
&lt;li&gt;用 RAG 接入自己的資料；&lt;/li&gt;
&lt;li&gt;用 MCP 連接外部工具；&lt;/li&gt;
&lt;li&gt;用 Skills 固化重複流程；&lt;/li&gt;
&lt;li&gt;用 Agent Teams 拆分複雜任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣學出來的 Vibe Coding 才不只是會問 AI，而是能把 AI 放進自己的工作流程裡。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;easy-vibe 適合被看作 Vibe Coding 的中文入門地圖。它把零散的 AI 編程概念、工具和練習組織成一條路徑，讓新手更容易從「聽說 AI 能寫程式」走到「我能用 AI 做出一個專案」。&lt;/p&gt;
&lt;p&gt;Vibe Coding 真正有價值的地方，不是讓人跳過所有學習，而是降低從想法到原型的門檻。你仍然需要理解需求、組織任務、驗證結果和控制風險，但很多重複、枯燥、容易卡住的步驟，可以交給 AI 協助完成。&lt;/p&gt;
&lt;p&gt;如果你想系統入門 AI 編程，又不想一開始就陷入工具名詞和複雜工程配置，easy-vibe 是一個值得收藏的起點。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic financial-services：把金融 Agent 場景做成可複用模板</title>
        <link>https://knightli.com/zh-tw/2026/05/16/anthropic-financial-services-agent-templates/</link>
        <pubDate>Sat, 16 May 2026 22:43:08 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/anthropic-financial-services-agent-templates/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt; 是 Anthropic 面向金融服務產業發布的參考專案。它不是一個單一應用，而是一組可以拆開學習和複用的示例：Agents、Plugins、Skills、MCP 連接器，以及圍繞金融工作流設計的提示詞和整合方式。&lt;/p&gt;
&lt;p&gt;這個專案值得關注，不是因為它提供了某個「萬能金融助手」，而是因為它把金融產業裡常見的 AI 落地問題拆成了更具體的組件：不同職位需要什麼 Agent、哪些資料來源需要接入、哪些任務可以自動化、哪些環節仍然需要人工判斷。&lt;/p&gt;
&lt;h2 id=&#34;它更像金融-agent-的樣板間&#34;&gt;它更像金融 Agent 的樣板間
&lt;/h2&gt;&lt;p&gt;很多企業談 AI Agent 時，容易停留在抽象層面：能讀檔案、能查資料、能寫報告、能調用工具。但真正進入金融場景後，問題會變得具體得多。&lt;/p&gt;
&lt;p&gt;投行分析師需要整理公司資料、生成交易簡報、比對可比公司；股票研究需要讀財報、看新聞、做估值和風險分析；私募和資管團隊要篩項目、寫 memo、追蹤投資組合公司；財富管理要把客戶画像、市場資訊和投資建議放在一個合規框架裡。&lt;/p&gt;
&lt;p&gt;這些場景不能只靠一個通用聊天框完成。它們需要角色、流程、資料來源、輸出格式和權限邊界。Anthropic 這個倉庫的價值就在這裡：它把金融服務產業裡的多個典型職位和任務拆成可以參考的 Agent 模板。&lt;/p&gt;
&lt;h2 id=&#34;為什麼要同時提供-agentspluginsskills-和-mcp&#34;&gt;為什麼要同時提供 Agents、Plugins、Skills 和 MCP
&lt;/h2&gt;&lt;p&gt;從專案結構看，Anthropic 沒有只給一套提示詞，而是同時提供了多種組件。這背後其實對應了企業落地 Agent 的幾層需求。&lt;/p&gt;
&lt;p&gt;Agents 更像面向角色或任務的工作單元。它定義「這個智能體要做什麼、怎樣做、何時調用工具、如何輸出結果」。&lt;/p&gt;
&lt;p&gt;Plugins 更像外部能力擴展。金融工作很少只發生在模型內部，往往要連接資料庫、文件系統、市場資料、CRM、研究庫和內部流程系統。&lt;/p&gt;
&lt;p&gt;Skills 更像可複用的專業能力包。比如固定格式的分析框架、報告結構、檢查清單、資料處理方法，都可以沉澱成技能，而不是每次重新寫提示詞。&lt;/p&gt;
&lt;p&gt;MCP 連接器則解決工具接入和上下文標準化問題。對企業來說，工具越多，越需要一個相對統一的連接方式，否則每個系統都要單獨適配，維護成本會很高。&lt;/p&gt;
&lt;p&gt;這幾個部分組合起來，才更接近真實企業裡的 AI 工作流。&lt;/p&gt;
&lt;h2 id=&#34;金融產業為什麼適合做-agent-示例&#34;&gt;金融產業為什麼適合做 Agent 示例
&lt;/h2&gt;&lt;p&gt;金融服務是很適合展示 Agent 的產業，因為它同時具備三個特點。&lt;/p&gt;
&lt;p&gt;第一，資訊密度高。金融工作大量依賴財報、公告、會議紀要、研究報告、交易資料、客戶資料和監管文件。模型如果只靠通用知識，很快就會失效，必須接入真實資料來源。&lt;/p&gt;
&lt;p&gt;第二，輸出格式穩定。投資備忘錄、公司簡介、KYC 文件、研究摘要、客戶簡報、基金營運報告，都有相對固定的結構。這讓 Agent 更容易形成可驗證的工作流。&lt;/p&gt;
&lt;p&gt;第三，風險邊界清楚。金融產業對合規、稽核、權限和可追溯性要求很高。AI 不能隨意給投資建議，也不能繞過審批流程。這反而逼著 Agent 設計得更工程化：要保留引用、區分事實和推斷、記錄工具調用、限制可執行操作。&lt;/p&gt;
&lt;p&gt;所以這個專案不只是給金融公司看的。任何想做企業級 Agent 的團隊，都可以從裡面觀察 Anthropic 如何拆解產業場景。&lt;/p&gt;
&lt;h2 id=&#34;它覆蓋了哪些典型流程&#34;&gt;它覆蓋了哪些典型流程
&lt;/h2&gt;&lt;p&gt;從專案說明看，這個倉庫覆蓋了多個金融服務方向，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;投資銀行；&lt;/li&gt;
&lt;li&gt;股票研究；&lt;/li&gt;
&lt;li&gt;私募股權；&lt;/li&gt;
&lt;li&gt;財富管理；&lt;/li&gt;
&lt;li&gt;基金營運；&lt;/li&gt;
&lt;li&gt;KYC 和合規相關流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些流程的共同點是：都需要大量閱讀、整理、比對和生成結構化材料。AI 在這裡最適合做的，不是直接替人拍板，而是減少資訊處理和文件生產的時間。&lt;/p&gt;
&lt;p&gt;例如，投行場景裡，Agent 可以幫忙整理目標公司資料、抽取關鍵財務指標、生成初版交易摘要。研究場景裡，它可以先讀財報和新聞，列出關鍵變化和待確認問題。KYC 場景裡，它可以輔助檢查資料是否完整、是否存在異常線索。&lt;/p&gt;
&lt;p&gt;最終判斷仍然應該由專業人員負責。Agent 的角色更像助理、分析員和流程加速器。&lt;/p&gt;
&lt;h2 id=&#34;對企業落地的啟發&#34;&gt;對企業落地的啟發
&lt;/h2&gt;&lt;p&gt;這個倉庫最有參考價值的地方，是它把「模型能力」轉成了「業務組件」。&lt;/p&gt;
&lt;p&gt;企業內部做 AI 專案時，經常會遇到一個問題：模型演示很好看，但真正接入業務後很難複用。一個團隊寫了一套提示詞，另一個團隊又重新寫一套；一個系統接了資料庫，另一個系統又重新做介面；安全和稽核要求也散落在各處。&lt;/p&gt;
&lt;p&gt;更穩妥的方式是把能力拆成幾類資產：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;面向職位的 Agent；&lt;/li&gt;
&lt;li&gt;面向流程的 Skills；&lt;/li&gt;
&lt;li&gt;面向系統接入的 MCP 連接器；&lt;/li&gt;
&lt;li&gt;面向權限和稽核的執行規則；&lt;/li&gt;
&lt;li&gt;面向業務輸出的模板和檢查清單。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的好處是，企業不會每次都從「寫一個聊天機器人」開始，而是逐步積累可維護的 AI 工作流資產。&lt;/p&gt;
&lt;h2 id=&#34;不能忽視合規和責任邊界&#34;&gt;不能忽視合規和責任邊界
&lt;/h2&gt;&lt;p&gt;金融 Agent 最容易被誤解的一點，是把「能生成分析」誤認為「可以替代決策」。&lt;/p&gt;
&lt;p&gt;在金融服務裡，AI 輸出通常只能作為輔助材料。它可以整理事實、生成草稿、提示風險、補全文檔，但不能繞過投研、風控、法務、合規和客戶適當性要求。尤其是涉及投資建議、交易決策、客戶資產配置和身份審查時，人工審批和責任鏈必須保留。&lt;/p&gt;
&lt;p&gt;這也是為什麼企業級 Agent 不能只看模型回答品質。它還要看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料來源是否可靠；&lt;/li&gt;
&lt;li&gt;引用和證據是否可追溯；&lt;/li&gt;
&lt;li&gt;工具調用是否有記錄；&lt;/li&gt;
&lt;li&gt;敏感資料是否被限制；&lt;/li&gt;
&lt;li&gt;輸出是否經過人工確認；&lt;/li&gt;
&lt;li&gt;錯誤結果能否被發現和回滾。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題不解決，Agent 越自動化，風險半徑就越大。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;anthropics/financial-services 更像一套金融 Agent 參考實作，而不是一個開箱即用的金融產品。它展示了 Anthropic 對企業 AI 落地的一種思路：不要只做通用聊天助手，而是圍繞具體職位、具體流程、具體資料來源和具體權限邊界來組織 Agent。&lt;/p&gt;
&lt;p&gt;對金融機構來說，它可以作為內部 AI 工作流設計的參考。對開發者來說，它提供了一個觀察企業級 Agent 架構的樣本：Agents 負責角色和任務，Skills 沉澱專業流程，Plugins 和 MCP 負責連接外部系統，最終讓模型進入真實業務流程。&lt;/p&gt;
&lt;p&gt;如果說早期 AI 工具解決的是「怎麼讓模型回答問題」，這類專案更關心的是「怎麼讓模型在受控邊界內參與工作」。這才是企業級 Agent 真正難的地方。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI：把 DeepSeek V4 變成終端裡的編程智能體</title>
        <link>https://knightli.com/zh-tw/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI&lt;/a&gt; 是一個把 DeepSeek V4 接入終端開發流程的開源專案。它不是普通聊天外殼，而是更接近 Claude Code、Codex CLI 這類「命令列編程智能體」：能看檔案、改程式碼、執行命令、調用工具，並在終端裡用 TUI 方式持續推進任務。&lt;/p&gt;
&lt;p&gt;如果你已經習慣在編輯器和終端之間切換，這類工具的價值很直接：不用把程式碼來回複製到網頁對話框裡，也不用手動描述完整專案結構。你把任務交給它，它可以在目前工作區裡讀取上下文、規劃步驟、執行修改，再把結果交還給你審查。&lt;/p&gt;
&lt;h2 id=&#34;它解決的是-deepseek-的使用入口問題&#34;&gt;它解決的是 DeepSeek 的使用入口問題
&lt;/h2&gt;&lt;p&gt;DeepSeek 模型本身提供了很強的推理和程式能力，但模型能力要落到真實開發流程裡，還需要一層工程化外殼。&lt;/p&gt;
&lt;p&gt;網頁聊天適合問問題，不適合長時間改專案。API 適合接入系統，但一般開發者還要自己寫工具調用、上下文管理、檔案讀寫和權限控制。DeepSeek-TUI 想補上的正是這一層：把 DeepSeek V4 包成一個可以在終端裡工作的 Agent。&lt;/p&gt;
&lt;p&gt;從專案介紹看，它的重點能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;終端 TUI 介面；&lt;/li&gt;
&lt;li&gt;面向 DeepSeek V4 的對話與任務執行；&lt;/li&gt;
&lt;li&gt;工具調用和檔案操作；&lt;/li&gt;
&lt;li&gt;1M 上下文支援；&lt;/li&gt;
&lt;li&gt;Auto 模式；&lt;/li&gt;
&lt;li&gt;子智能體；&lt;/li&gt;
&lt;li&gt;沙箱執行；&lt;/li&gt;
&lt;li&gt;持久化任務佇列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些功能組合起來，目標不是「讓模型回答得更像人」，而是讓模型更容易進入開發現場。&lt;/p&gt;
&lt;h2 id=&#34;tui-比純命令列更適合長任務&#34;&gt;TUI 比純命令列更適合長任務
&lt;/h2&gt;&lt;p&gt;很多 AI CLI 工具一開始都是純文字互動：輸入提示詞，等待輸出，再複製命令或補充上下文。這種方式簡單，但任務一長就容易混亂。&lt;/p&gt;
&lt;p&gt;TUI 的好處是能把會話、檔案、執行結果、任務狀態放在一個更穩定的介面裡。對編程 Agent 來說，這很重要。因為一次程式任務往往不是一問一答，而是包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解專案結構；&lt;/li&gt;
&lt;li&gt;查找相關檔案；&lt;/li&gt;
&lt;li&gt;修改程式碼；&lt;/li&gt;
&lt;li&gt;執行測試或命令；&lt;/li&gt;
&lt;li&gt;根據錯誤繼續修復；&lt;/li&gt;
&lt;li&gt;總結變更。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果介面只是一串日誌，使用者很難快速判斷 Agent 走到了哪一步。TUI 至少給了一個更適合觀察和接管的入口。&lt;/p&gt;
&lt;h2 id=&#34;auto-模式適合明確邊界的任務&#34;&gt;Auto 模式適合明確邊界的任務
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 提到的 Auto 模式，適合用在邊界比較清楚的工作裡。例如修一個小 bug、補一個腳本、改一段配置、整理一組文件、實作一個局部功能。&lt;/p&gt;
&lt;p&gt;這類任務的共同點是：目標清楚，檢查方式明確，影響範圍可控。Agent 可以自己查檔案、改檔案、跑命令，然後把結果交給使用者確認。&lt;/p&gt;
&lt;p&gt;但 Auto 模式不適合無限放權。尤其是在真實專案裡，刪除檔案、批量重構、資料庫遷移、部署命令都應該有明確確認。編程 Agent 的效率來自自動化，但風險也來自自動化。越是能執行命令的工具，越需要沙箱、權限邊界和人工審查。&lt;/p&gt;
&lt;h2 id=&#34;子智能體的意義在於拆任務&#34;&gt;子智能體的意義在於拆任務
&lt;/h2&gt;&lt;p&gt;子智能體不是新概念，但放在程式場景裡很有用。&lt;/p&gt;
&lt;p&gt;一個稍複雜的任務，通常會同時需要幾類工作：有人負責讀程式碼，有人負責改實作，有人負責檢查測試，有人負責整理文件。傳統多 Agent 系統經常顯得花俏，是因為它們沒有真實工具和真實工作區，只是在對話裡互相討論。&lt;/p&gt;
&lt;p&gt;如果子智能體能結合檔案系統、命令執行和任務佇列，它就更像一種任務拆分機制。比如一個子智能體專門分析依賴關係，另一個負責修改某個模組，主智能體再整合結果。這樣可以減少單一上下文裡堆太多無關資訊的問題。&lt;/p&gt;
&lt;p&gt;當然，子智能體也會帶來額外成本：更多 token、更複雜的狀態、更難追蹤的責任邊界。所以它適合中等複雜度以上的任務，不一定適合每一次小修改。&lt;/p&gt;
&lt;h2 id=&#34;1m-上下文不是萬能但很適合讀專案&#34;&gt;1M 上下文不是萬能，但很適合讀專案
&lt;/h2&gt;&lt;p&gt;1M 上下文聽起來很誇張，但在編程場景裡並不只是行銷數字。&lt;/p&gt;
&lt;p&gt;真實程式庫的上下文很碎：README、設定檔、型別定義、測試、調用鏈、歷史約定、錯誤日誌，都可能影響一次修改。更長上下文能減少「只看局部就動手」的問題，也能讓模型保留更多專案約束。&lt;/p&gt;
&lt;p&gt;不過，上下文長不等於判斷一定更準。程式任務仍然需要檢索、篩選和驗證。把整個專案塞進上下文並不一定比精準讀取相關檔案更好。好的編程 Agent 應該把長上下文當作緩衝區，而不是把它當成替代工程判斷的捷徑。&lt;/p&gt;
&lt;h2 id=&#34;更適合哪些使用者&#34;&gt;更適合哪些使用者
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 更適合幾類人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在終端裡使用 DeepSeek 做程式任務的開發者；&lt;/li&gt;
&lt;li&gt;不想自己搭工具調用和檔案操作框架的人；&lt;/li&gt;
&lt;li&gt;已經熟悉 Claude Code、Codex CLI，但想嘗試 DeepSeek 模型入口的人；&lt;/li&gt;
&lt;li&gt;需要本地專案上下文，而不是只在網頁裡問程式片段的人；&lt;/li&gt;
&lt;li&gt;想把 AI 編程流程放進命令列環境的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶爾問一個函式怎麼寫，網頁聊天已經夠用。如果你希望模型直接參與專案修改，終端 Agent 才更有意義。&lt;/p&gt;
&lt;h2 id=&#34;需要關注的風險&#34;&gt;需要關注的風險
&lt;/h2&gt;&lt;p&gt;這類工具最需要關注三件事。&lt;/p&gt;
&lt;p&gt;第一是權限。只要工具能讀寫檔案、執行命令，就要確認它預設能存取哪裡、能不能刪除檔案、能不能連網、危險命令是否需要確認。&lt;/p&gt;
&lt;p&gt;第二是可回滾。使用前最好保持 Git 工作區乾淨，讓每次 Agent 修改都能被 &lt;code&gt;git diff&lt;/code&gt; 清楚看到。不要在一堆未提交改動裡讓 Agent 自動改專案。&lt;/p&gt;
&lt;p&gt;第三是驗證。Agent 寫完程式不代表任務完成。測試、構建、lint、人工 review 仍然要保留。AI 編程工具可以提高推進速度，但不能替代最後的工程確認。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 的意義不在於又多了一個聊天客戶端，而在於它把 DeepSeek V4 放進了更接近真實開發工作的終端環境裡。&lt;/p&gt;
&lt;p&gt;對開發者來說，模型能力只是第一步。真正影響體驗的是：它能不能讀專案、能不能安全改檔案、能不能執行驗證命令、能不能在長任務裡保持狀態、能不能讓使用者隨時接管。&lt;/p&gt;
&lt;p&gt;如果你想把 DeepSeek 用在日常程式修改、專案閱讀和自動化開發任務裡，DeepSeek-TUI 值得關注。它代表的方向也很清楚：AI 編程工具正在從「回答程式問題」轉向「參與專案執行」。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 手機遠端存取來了：用 ChatGPT App 跟進 Mac 上的編程任務</title>
        <link>https://knightli.com/zh-tw/2026/05/16/codex-mobile-remote-access-chatgpt-app/</link>
        <pubDate>Sat, 16 May 2026 17:42:40 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/codex-mobile-remote-access-chatgpt-app/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月中旬把 &lt;code&gt;Codex remote access&lt;/code&gt; 帶進 ChatGPT 手機 App。這個功能的重點不是「在手機上寫程式」，而是讓你用手機遠端跟進 Mac 上正在執行的 Codex。&lt;/p&gt;
&lt;p&gt;它更像一個行動審批和監控入口：Codex 繼續在電腦上讀專案、跑命令、改檔案、看測試結果；手機端負責查看進度、回答問題、補充指令和批准操作。&lt;/p&gt;
&lt;p&gt;對經常讓 Codex 跑長任務的人來說，這個變化很實用。你不必一直坐在電腦前等它卡在哪裡，離開工位後也能從 ChatGPT App 接上現場。&lt;/p&gt;
&lt;h2 id=&#34;它能做什麼&#34;&gt;它能做什麼
&lt;/h2&gt;&lt;p&gt;根據 OpenAI Codex remote connections 文件，手機端遠端存取可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 Mac 主機上的專案裡開啟新 thread，或繼續已有 thread；&lt;/li&gt;
&lt;li&gt;發送後續指令，回答 Codex 的問題，調整任務方向；&lt;/li&gt;
&lt;li&gt;批准命令和其他操作；&lt;/li&gt;
&lt;li&gt;查看輸出、diff、測試結果、終端輸出和截圖；&lt;/li&gt;
&lt;li&gt;在 Codex 完成任務或需要你注意時收到通知；&lt;/li&gt;
&lt;li&gt;在多個已連接主機和 thread 之間切換。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，手機端不是簡化版聊天視窗，而是接入了 Codex 目前的工作現場。&lt;/p&gt;
&lt;h2 id=&#34;使用前需要什麼&#34;&gt;使用前需要什麼
&lt;/h2&gt;&lt;p&gt;第一，你需要有可用的 Codex 權限，並且手機和 Mac 使用同一個 ChatGPT 帳號與 workspace。&lt;/p&gt;
&lt;p&gt;第二，手機上要安裝最新版 ChatGPT App，iOS 或 Android 都可以。如果 App 裡看不到 Codex，先更新 ChatGPT。&lt;/p&gt;
&lt;p&gt;第三，主機目前要求是 Mac，並且需要保持在線、喚醒、正在執行 Codex App。OpenAI 文件明確寫到，行動端設定和裝置控制目前需要主機上執行 &lt;code&gt;Codex App for macOS&lt;/code&gt;，不能從 Codex CLI 或 IDE Extension 完成設定。&lt;/p&gt;
&lt;p&gt;第四，如果帳號或 workspace 要求 MFA、SSO 或 passkey，需要先完成對應認證。團隊 workspace 還可能需要管理員開啟 Remote Control access。&lt;/p&gt;
&lt;h2 id=&#34;codex-手機遠端存取的限制&#34;&gt;Codex 手機遠端存取的限制
&lt;/h2&gt;&lt;p&gt;第一，當前需要 &lt;code&gt;macOS host&lt;/code&gt;。手機端連接的是 Mac 上執行的 Codex App，不是直接連接 Codex CLI、IDE Extension，也不是任意 Linux / Windows 開發機。&lt;/p&gt;
&lt;p&gt;第二，主機必須在線。Mac 需要保持喚醒、連網，並持續執行 Codex App。如果電腦睡眠、斷網或 Codex 關閉，手機端遠端會話就可能斷開。&lt;/p&gt;
&lt;p&gt;第三，連線依賴掃碼流程。你需要先在 Mac 端開啟 &lt;code&gt;Set up Codex mobile&lt;/code&gt;，再用手機掃描 QR code 進入 ChatGPT 完成綁定。&lt;/p&gt;
&lt;p&gt;第四，遠端操作仍然要經過審批流程。手機端可以批准命令和其他操作，但你仍然要看清 Codex 請求做什麼，再決定是否繼續。&lt;/p&gt;
&lt;p&gt;所以它適合「人離開電腦後繼續跟進任務」，不適合替代完整開發環境，也不適合把主機長期無人值守地開放給遠端操作。&lt;/p&gt;
&lt;h2 id=&#34;怎麼連接&#34;&gt;怎麼連接
&lt;/h2&gt;&lt;p&gt;設定流程從 Mac 上的 Codex App 開始。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Mac 上開啟 Codex。&lt;/li&gt;
&lt;li&gt;在側邊欄選擇 &lt;code&gt;Set up Codex mobile&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Codex 會為這台主機開啟遠端存取，並顯示 QR code。&lt;/li&gt;
&lt;li&gt;用手機掃描 QR code，進入 ChatGPT 裡的 Codex mobile setup 流程。&lt;/li&gt;
&lt;li&gt;確認同一個 ChatGPT 帳號和 workspace。&lt;/li&gt;
&lt;li&gt;完成必要的 MFA、SSO 或 passkey 驗證。&lt;/li&gt;
&lt;li&gt;設定成功後，這台 Mac 會出現在手機端 Codex 裡。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;連接完成後，可以在 Mac 端 Codex 的 &lt;code&gt;Settings &amp;gt; Connections&lt;/code&gt; 管理已連接裝置，也可以設定是否讓電腦保持喚醒、是否啟用 Computer Use、是否安裝 Chrome extension。&lt;/p&gt;
&lt;h2 id=&#34;手機端適合做什麼&#34;&gt;手機端適合做什麼
&lt;/h2&gt;&lt;p&gt;手機端最適合三類操作：審批、糾偏和查看結果。&lt;/p&gt;
&lt;p&gt;Codex 需要執行命令、存取檔案或繼續某個動作時，你可以在手機上看清請求，再決定是否批准。當 Codex 誤解需求、測試失敗或需要方向判斷時，也可以直接補充一句說明。最後，你可以查看 diff、測試輸出、終端日誌和截圖，不必回到電腦前才知道任務進度。&lt;/p&gt;
&lt;p&gt;真正有價值的不是手機寫程式，而是把手機變成工程任務的隨身控制台。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;p&gt;如果手機上看不到主機，先確認 Mac 上 Codex App 仍在執行，並且開啟了 &lt;code&gt;Allow other devices to connect&lt;/code&gt;。手機和主機也必須使用同一個 ChatGPT 帳號與 workspace。&lt;/p&gt;
&lt;p&gt;如果審批請求沒有出現，可以打開 ChatGPT 手機 App，進入 Codex，再重新掃碼或從主機重新開始設定。團隊帳號還要確認管理員是否已允許 Remote Control access。&lt;/p&gt;
&lt;p&gt;如果遠端會話斷開，通常要檢查 Mac 是否睡眠、網路是否斷開、Codex App 是否關閉。&lt;/p&gt;
&lt;p&gt;如果認證卡住，就先完成 MFA、SSO、passkey 流程。企業環境裡，權限問題往往要管理員介入。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;它適合經常讓 Codex 跑較長程式修改任務、需要離開工位後繼續審批和跟進、同時管理多個專案或 thread，並且以 Mac 作為主力開發機的人。&lt;/p&gt;
&lt;p&gt;不太適合主要使用 Windows 或 Linux、只用 Codex CLI 或 IDE Extension、希望手機端獨立完成完整開發環境，或網路不穩定的人。&lt;/p&gt;
&lt;h2 id=&#34;我的判斷&#34;&gt;我的判斷
&lt;/h2&gt;&lt;p&gt;Codex 手機遠端存取的意義，不是把開發工作搬到手機螢幕上，而是讓「等待 Codex 跑完」的時間更可控。&lt;/p&gt;
&lt;p&gt;以前 Codex 長任務經常卡在審批、追問、測試失敗或方向確認上。現在這些節點可以透過 ChatGPT 手機 App 處理，Mac 繼續做真正的工程執行，手機負責輕量決策。&lt;/p&gt;
&lt;p&gt;如果你已經在 Mac 上重度使用 Codex，這個功能值得開啟。如果你只是偶爾問幾句程式問題，它的價值可能沒那麼明顯。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/codex/remote-connections&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Developers：Codex Remote Connections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ChatGPT File Library 是什麼：文件保存、容量限制和隱私邊界</title>
        <link>https://knightli.com/zh-tw/2026/05/16/chatgpt-file-library-storage-limits-privacy/</link>
        <pubDate>Sat, 16 May 2026 17:40:14 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/chatgpt-file-library-storage-limits-privacy/</guid>
        <description>&lt;p&gt;&lt;code&gt;ChatGPT File Library&lt;/code&gt; 可以理解成 ChatGPT 裡的文件庫。&lt;/p&gt;
&lt;p&gt;以前你在某個對話裡上傳文件，更多像是一次性給這輪聊天使用。File Library 出現後，上傳到 ChatGPT 或由 ChatGPT 建立的文件會保存到帳號裡，之後可以在 Library 中重新找到、下載、刪除，或者在新對話裡再次引用。&lt;/p&gt;
&lt;p&gt;這讓 ChatGPT 更像一個長期資料工作區，而不只是臨時聊天視窗。&lt;/p&gt;
&lt;h2 id=&#34;最新可用範圍&#34;&gt;最新可用範圍
&lt;/h2&gt;&lt;p&gt;根據 OpenAI 2026 年 5 月 14 日的 ChatGPT Release Notes，File Library 正在擴展到 Free 和 Go 使用者，也包括歐洲經濟區使用者。官方同時引入了跨方案的儲存管理。&lt;/p&gt;
&lt;p&gt;需要注意的是，OpenAI 專門的 File storage and Library 說明頁在我查看時仍寫著較舊口徑：Library 只面向歐洲經濟區、瑞士和英國之外的 Plus、Pro、Business 使用者，並且只在網頁端可用。&lt;/p&gt;
&lt;p&gt;這類說明頁有時會落後於 Release Notes。本文按更新日期更近的 2026 年 5 月 14 日 Release Notes 理解：File Library 已開始向 Free、Go 等更多使用者擴展，但實際帳號是否可見，仍取決於分批推出進度、地區和客戶端版本。&lt;/p&gt;
&lt;h2 id=&#34;它會保存哪些文件&#34;&gt;它會保存哪些文件
&lt;/h2&gt;&lt;p&gt;ChatGPT 會自動保存你上傳或建立的文件，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件；&lt;/li&gt;
&lt;li&gt;試算表；&lt;/li&gt;
&lt;li&gt;簡報；&lt;/li&gt;
&lt;li&gt;PDF；&lt;/li&gt;
&lt;li&gt;圖片；&lt;/li&gt;
&lt;li&gt;ChatGPT 生成的文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生成圖片仍會繼續出現在 Images 標籤頁。File Library 更像是統一管理上傳文件和生成文件的地方。&lt;/p&gt;
&lt;p&gt;如果你經常讓 ChatGPT 分析 PDF、整理表格、生成文件、處理簡報，這個功能會減少重複上傳，也方便在不同對話裡繼續使用。&lt;/p&gt;
&lt;h2 id=&#34;怎麼把文件加入新對話&#34;&gt;怎麼把文件加入新對話
&lt;/h2&gt;&lt;p&gt;在支援的客戶端裡，可以從輸入框附近的附件或新增選單進入文件選擇。&lt;/p&gt;
&lt;p&gt;常見流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 composer 選單，也就是附件或新增按鈕。&lt;/li&gt;
&lt;li&gt;選擇 &lt;code&gt;Add from library&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;選擇要引用的文件。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Release Notes 還提到，Library 和 composer 裡的 Recent files 支援 Web、iOS 和 Android。&lt;/p&gt;
&lt;h2 id=&#34;怎麼查找和管理&#34;&gt;怎麼查找和管理
&lt;/h2&gt;&lt;p&gt;在網頁端，可以從左側邊欄進入 Library，集中查看上傳和生成的文件。&lt;/p&gt;
&lt;p&gt;文件可以按類型和來源篩選。官方說明頁提到的篩選維度包括上傳文件、生成文件、圖片、文件、試算表、簡報和 PDF。&lt;/p&gt;
&lt;p&gt;Storage 入口可以查看總使用量、剩餘容量，以及是否超過限制。Release Notes 說明，儲存管理可從 &lt;code&gt;Settings &amp;gt; Storage&lt;/code&gt; 進入，文件也可以直接在 Library 中刪除。&lt;/p&gt;
&lt;h2 id=&#34;各方案容量&#34;&gt;各方案容量
&lt;/h2&gt;&lt;p&gt;OpenAI 在 2026 年 5 月 14 日的 Release Notes 中給出的容量如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;File Library 容量&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Free&lt;/td&gt;
          &lt;td&gt;500 MB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Go&lt;/td&gt;
          &lt;td&gt;4 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Plus&lt;/td&gt;
          &lt;td&gt;20 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Business&lt;/td&gt;
          &lt;td&gt;20 GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro&lt;/td&gt;
          &lt;td&gt;100 GB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這個容量包括上傳文件，也包括 ChatGPT 建立的文件，例如文件、試算表、簡報和圖片。&lt;/p&gt;
&lt;h2 id=&#34;單文件限制&#34;&gt;單文件限制
&lt;/h2&gt;&lt;p&gt;OpenAI 說明頁列出的文件限制包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上傳到 GPT 或 ChatGPT 對話的單個文件最大 512 MB；&lt;/li&gt;
&lt;li&gt;文字和文件類檔案最多 200 萬 token；&lt;/li&gt;
&lt;li&gt;CSV 或試算表通常約 50 MB，具體取決於每列大小；&lt;/li&gt;
&lt;li&gt;圖片單張最大 20 MB。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些限制和帳號總容量是兩回事。即使你的帳號還有很多剩餘空間，單個文件也不能超過對應上限。&lt;/p&gt;
&lt;h2 id=&#34;刪除和下載&#34;&gt;刪除和下載
&lt;/h2&gt;&lt;p&gt;文件會保存在帳號中，直到你手動刪除。&lt;/p&gt;
&lt;p&gt;刪除方式一般是在 Library 中選中文件，然後點擊刪除或垃圾桶圖示。OpenAI 說明頁表示，刪除後文件會立即從帳號中移除，並計畫在 30 天內從 OpenAI 系統中永久刪除，除非已去識別化並與帳號脫離關聯，或出於安全、法律義務需要保留更久。&lt;/p&gt;
&lt;p&gt;文件也可以從 Library 中下載。對於經常讓 ChatGPT 生成文件、表格或簡報的人，下載和清理會成為日常維護的一部分。&lt;/p&gt;
&lt;h2 id=&#34;temporary-chat-不會保存文件&#34;&gt;Temporary Chat 不會保存文件
&lt;/h2&gt;&lt;p&gt;如果你在 Temporary Chat 中上傳文件，文件不會保存到帳號或 Library。&lt;/p&gt;
&lt;p&gt;File Library 的預設邏輯是方便長期複用，而 Temporary Chat 更適合臨時、敏感、不想留下長期上下文的任務。&lt;/p&gt;
&lt;h2 id=&#34;資料和訓練設定&#34;&gt;資料和訓練設定
&lt;/h2&gt;&lt;p&gt;OpenAI 說明頁表示，文件和聊天會按照你的設定與資料控制項使用。&lt;/p&gt;
&lt;p&gt;如果開啟了 Memory，文件和聊天可能會幫助 ChatGPT 在對話之間記住對你有用的資訊。對個人服務使用者來說，如果開啟了 &lt;code&gt;Improve the model for everyone&lt;/code&gt;，OpenAI 也可能使用提交到 ChatGPT 的內容，包括上傳文件，來改進模型表現。這個設定可以在 &lt;code&gt;Settings &amp;gt; Data Controls&lt;/code&gt; 中關閉。&lt;/p&gt;
&lt;p&gt;這意味著 File Library 不是一個單純的本機資料夾。它是雲端帳號功能，使用前要想清楚哪些資料適合上傳。&lt;/p&gt;
&lt;h2 id=&#34;適合怎麼用&#34;&gt;適合怎麼用
&lt;/h2&gt;&lt;p&gt;File Library 適合長期分析同一組 PDF 或報告、反覆處理課程資料和會議材料、繼續修改 ChatGPT 生成的文件或表格、在多個對話裡複用同一份素材。&lt;/p&gt;
&lt;p&gt;不太適合上傳高度敏感的身分證明、合約、病歷、財務流水，也不應把它當成正式雲端備份，或在不了解資料控制設定時上傳公司內部文件。&lt;/p&gt;
&lt;h2 id=&#34;我的判斷&#34;&gt;我的判斷
&lt;/h2&gt;&lt;p&gt;ChatGPT File Library 的價值不只是「多了一個文件列表」。它改變的是 ChatGPT 的使用方式：過去是一輪一輪聊天，現在開始變成帶資料沉澱的工作空間。&lt;/p&gt;
&lt;p&gt;但這也帶來新習慣。使用者需要定期清理文件，關注容量，區分普通聊天和 Temporary Chat，也要檢查資料控制設定。&lt;/p&gt;
&lt;p&gt;如果你經常用 ChatGPT 看文件、改表格、整理資料，File Library 會明顯省時間。如果你只是偶爾上傳一份敏感文件問幾句，反而要更謹慎。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/20001052-file-storage-and-library-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：File storage and Library in ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI Help Center：ChatGPT Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>別把 API Key 推上 GitHub：AI 寫程式時代的密鑰外洩防坑指南</title>
        <link>https://knightli.com/zh-tw/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;AI 寫程式降低了動手門檻，也把很多原本只會發生在工程團隊裡的安全問題，帶到了新手和非工程使用者面前。&lt;/p&gt;
&lt;p&gt;最常見的一類事故，是把 &lt;code&gt;API Key&lt;/code&gt;、&lt;code&gt;Secret&lt;/code&gt;、&lt;code&gt;Token&lt;/code&gt;、資料庫連線字串或 &lt;code&gt;.env&lt;/code&gt; 設定檔一起推到公開倉庫。對本機專案來說，這些檔案只是「能讓程式跑起來的設定」；一旦進了 GitHub 公開倉庫，它們就變成了可以被自動掃描、自動呼叫、自動濫用的憑證。&lt;/p&gt;
&lt;p&gt;密鑰外洩不是小機率事件。GitGuardian 的 2026 年度報告提到，2025 年公共 GitHub 提交裡出現了約 2865 萬個新增硬編碼憑證，AI 服務相關憑證外洩同比成長 81%。這說明問題不只是「有人粗心」，而是 AI 編程、快速原型和公開託管疊加後，外洩規模正在被放大。&lt;/p&gt;
&lt;h2 id=&#34;為什麼新手更容易外洩-key&#34;&gt;為什麼新手更容易外洩 Key
&lt;/h2&gt;&lt;p&gt;很多 AI Agent 或小工具都有兩套「倉庫」：一套在本機硬碟裡，另一套在 GitHub 上。問題在於，新手經常沒有意識到兩者的邊界。&lt;/p&gt;
&lt;p&gt;本機執行時，&lt;code&gt;config.json&lt;/code&gt;、&lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;settings.yaml&lt;/code&gt; 裡放著 API Key，好像只是開發習慣；執行 &lt;code&gt;git add .&lt;/code&gt;、&lt;code&gt;git commit&lt;/code&gt;、&lt;code&gt;git push&lt;/code&gt; 之後，這些檔案就可能被完整上傳。倉庫一旦公開，掃描機器人不需要理解你的業務，只要匹配到密鑰格式，就能把它抓走。&lt;/p&gt;
&lt;p&gt;AI 編程還會放大這個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI 生成範例程式碼時，可能直接把 &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; 這類寫法放進原始碼。&lt;/li&gt;
&lt;li&gt;新手為了「先跑起來」，容易把密鑰硬編碼在前端、腳本或設定檔裡。&lt;/li&gt;
&lt;li&gt;很多 vibe coding 平台可以直接部署應用，不一定經過 GitHub 的推送保護流程。&lt;/li&gt;
&lt;li&gt;使用者可能不知道 AI 生成的專案裡到底有哪些檔案、哪些介面、哪些預設權限。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;換句話說，AI 可以幫你更快寫出能跑的東西，但不會自動替你承擔安全責任。&lt;/p&gt;
&lt;h2 id=&#34;gitignore-不是裝飾&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; 不是裝飾
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; 負責版本管理，&lt;code&gt;GitHub&lt;/code&gt; 負責託管程式碼，&lt;code&gt;.gitignore&lt;/code&gt; 則是告訴 Git 哪些檔案不要納入版本歷史。&lt;/p&gt;
&lt;p&gt;一個最基本的 AI 專案，至少應該把這些內容排除掉：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config.local.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;secrets.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials.*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但只寫 &lt;code&gt;.gitignore&lt;/code&gt; 還不夠。它只能阻止「尚未被 Git 追蹤」的檔案繼續進入提交。如果某個密鑰檔案已經被提交過，後來再把它寫進 &lt;code&gt;.gitignore&lt;/code&gt;，並不能把歷史記錄裡的密鑰抹掉。&lt;/p&gt;
&lt;p&gt;更穩妥的習慣是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新專案一開始就建立 &lt;code&gt;.gitignore&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;API Key 只放在環境變數或本機設定裡。&lt;/li&gt;
&lt;li&gt;範例檔案只提供 &lt;code&gt;.env.example&lt;/code&gt;，裡面寫佔位符，不寫真實密鑰。&lt;/li&gt;
&lt;li&gt;提交前執行一次密鑰掃描工具，比如 &lt;code&gt;gitleaks&lt;/code&gt;、&lt;code&gt;trufflehog&lt;/code&gt; 或 GitHub Secret Scanning。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;key-推上去以後刪除檔案不等於安全&#34;&gt;Key 推上去以後，刪除檔案不等於安全
&lt;/h2&gt;&lt;p&gt;如果密鑰已經推到公開倉庫，第一反應不應該是「刪掉檔案再提交一次」，而應該是立刻吊銷或輪換密鑰。&lt;/p&gt;
&lt;p&gt;原因很簡單：Git 記錄的是歷史。即使你在最新提交裡刪除了檔案，舊提交、fork、clone、快取和掃描系統裡仍可能保留那段內容。GitHub 官方文件也明確建議：如果外洩的是密碼、Token 或憑證，第一步應該撤銷或輪換。&lt;/p&gt;
&lt;p&gt;處理順序建議這樣做：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;立即去服務商後台吊銷舊 Key，生成新 Key。&lt;/li&gt;
&lt;li&gt;檢查帳單、呼叫日誌、異常 IP 和異常用量。&lt;/li&gt;
&lt;li&gt;從程式碼中移除硬編碼密鑰，改用環境變數或密鑰管理服務。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;git filter-repo&lt;/code&gt; 或 BFG 清理倉庫歷史中的敏感檔案。&lt;/li&gt;
&lt;li&gt;開啟 GitHub Secret Scanning 和 Push Protection。&lt;/li&gt;
&lt;li&gt;檢查 CI/CD、部署平台、雲函式、前端建置產物裡是否也包含舊 Key。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對於 OpenAI、Anthropic、DeepSeek、雲廠商、支付、郵件、資料庫等服務，外洩 Key 的後果可能不只是被刷額度，還可能包含資料讀取、服務濫用、供應鏈污染或業務帳號封禁。&lt;/p&gt;
&lt;h2 id=&#34;前端程式碼裡不能放真正的密鑰&#34;&gt;前端程式碼裡不能放真正的密鑰
&lt;/h2&gt;&lt;p&gt;很多新手以為「只要頁面能跑就行」，於是把 API Key 寫進前端 JavaScript：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-xxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這基本等於公開。瀏覽器裡的程式碼、網路請求、Source Map、建置產物都可以被查看。只要是真正需要保密的 Key，就不應該出現在客戶端。&lt;/p&gt;
&lt;p&gt;正確做法是讓前端請求自己的後端介面，由後端讀取環境變數並呼叫第三方 API：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// frontend
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/chat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;後端再使用環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣做不是為了形式好看，而是為了把密鑰留在伺服器環境裡，避免直接暴露給所有訪問頁面的人。&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-的安全責任不會自動消失&#34;&gt;Vibe Coding 的安全責任不會自動消失
&lt;/h2&gt;&lt;p&gt;vibe coding 的問題不只是 GitHub 外洩。很多應用直接從 AI 編程平台發布到公網，跳過傳統程式碼審查、倉庫掃描和安全測試。&lt;/p&gt;
&lt;p&gt;RedAccess 近期披露的研究顯示，公開網路上可以找到大量由 AI 編程工具生成或託管的應用資產，其中一部分暴露了企業資料、個人資訊或內部檔案。它提醒的是同一件事：當「能上線」變得太容易，「是否應該上線」「是否只該內網訪問」「是否有權限控制」就更容易被忽略。&lt;/p&gt;
&lt;p&gt;如果你用 AI 生成應用，至少要在發布前問自己幾個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;這個應用是否真的需要公開訪問？&lt;/li&gt;
&lt;li&gt;是否有登入、鑑權和權限隔離？&lt;/li&gt;
&lt;li&gt;是否把資料庫、API Key、Token、Webhook 地址暴露在前端？&lt;/li&gt;
&lt;li&gt;是否限制了第三方 API 的額度、網域、權限和有效期？&lt;/li&gt;
&lt;li&gt;是否能在發現異常後快速停用密鑰和回滾部署？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 寫出來的程式碼也需要安全審查。越是「我一行程式碼都沒寫」，越不能假設它天然安全。&lt;/p&gt;
&lt;h2 id=&#34;現在就該做的檢查&#34;&gt;現在就該做的檢查
&lt;/h2&gt;&lt;p&gt;可以先從自己的 GitHub 帳號查起。搜尋使用者名稱加上這些關鍵字：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SECRET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OPENAI_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEEPSEEK_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果發現真實密鑰，不要猶豫：先輪換，再清理。只要它進過公開倉庫，就按已經外洩處理。&lt;/p&gt;
&lt;p&gt;以後新建 AI 專案時，也建議固定一套流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先寫 &lt;code&gt;.gitignore&lt;/code&gt;，再寫業務程式碼。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;.env.example&lt;/code&gt; 說明需要哪些變數。&lt;/li&gt;
&lt;li&gt;所有密鑰放環境變數，不寫進原始碼。&lt;/li&gt;
&lt;li&gt;給 API Key 設定最小權限、額度限制和過期時間。&lt;/li&gt;
&lt;li&gt;開啟 GitHub Secret Scanning 和 Push Protection。&lt;/li&gt;
&lt;li&gt;發布前讓 AI 再幫你做一次安全檢查，但不要只相信 AI 的結論。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 編程真正危險的地方，不是它會寫錯程式碼，而是它讓很多人第一次擁有了把不安全應用快速發布到公網的能力。寫得快不是問題，把密鑰、資料和權限一起交出去才是問題。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gitguardian.com/state-of-secrets-sprawl-report-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/articles/remove-sensitive-data&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: Removing sensitive data from a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/code-security/secret-scanning/push-protection-for-repositories-and-organizations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: About push protection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/05/07/loveable-replit-vibe-coding-privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: AI vibe-coding apps leak sensitive data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code &#43; Ollama 本地部署教學：用 CC Switch 打造免費 AI 編程助手</title>
        <link>https://knightli.com/zh-tw/2026/05/15/claude-code-ollama-cc-switch-local-agent/</link>
        <pubDate>Fri, 15 May 2026 23:27:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/claude-code-ollama-cc-switch-local-agent/</guid>
        <description>&lt;p&gt;最近 &lt;code&gt;Claude Code&lt;/code&gt; 這類 AI 編程助手很受關注。它的吸引力不只是能聊天寫程式碼，而是可以讀取專案、修改檔案、執行命令、安裝依賴，甚至根據錯誤反覆修正，接近一個可操作的 Agent。&lt;/p&gt;
&lt;p&gt;問題在於成本。專案一大，上下文變長，多輪 Agent 操作很容易消耗大量 API 額度。對於只是想試用、改小工具、寫腳本、處理本地私有專案的使用者來說，大家自然會想到：能不能保留 Claude Code 的操作體驗，但把模型換成本地執行？&lt;/p&gt;
&lt;p&gt;這套方案的關鍵工具是 &lt;code&gt;CC Switch&lt;/code&gt;。它可以讓 Claude Code 透過 OpenAI 相容 API 連接本地 &lt;code&gt;Ollama&lt;/code&gt; 服務，從而把請求轉發到本地模型，而不是直接走官方 Claude API。&lt;/p&gt;
&lt;h2 id=&#34;這套方案解決什麼問題&#34;&gt;這套方案解決什麼問題
&lt;/h2&gt;&lt;p&gt;可以把整個流程理解為：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Claude Code 桌面端
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ CC Switch API 轉發層
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Ollama 本地模型
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 仍然負責編程工作流和專案操作，CC Switch 負責模型供應商配置與 API 相容，Ollama 則負責在本機執行模型。&lt;/p&gt;
&lt;p&gt;這並不代表本地模型會突然變成 Claude。它真正有價值的地方，是讓 Claude Code 的 Agent 工作流可以用在低成本、離線、私有化的本地場景。&lt;/p&gt;
&lt;h2 id=&#34;基本準備&#34;&gt;基本準備
&lt;/h2&gt;&lt;p&gt;開始之前，需要先準備幾個元件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安裝 &lt;code&gt;Git&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;安裝 &lt;code&gt;Ollama&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;拉取一個適合編程的本地模型。&lt;/li&gt;
&lt;li&gt;安裝 &lt;code&gt;CC Switch&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;本機可以使用 Claude Code。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;模型方面，可以先從偏程式碼能力的模型開始，例如 Qwen Coder、DeepSeek Coder，或其他具備較好工具呼叫和程式碼生成能力的模型。模型越大，效果可能越好，但記憶體與 GPU 壓力也會同步上升。&lt;/p&gt;
&lt;p&gt;如果電腦記憶體有限，建議先用較小模型跑通流程，再逐步嘗試更大的模型。&lt;/p&gt;
&lt;h2 id=&#34;cc-switch-關鍵配置&#34;&gt;CC Switch 關鍵配置
&lt;/h2&gt;&lt;p&gt;Ollama 啟動後，預設本地 API 位址通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:11434/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 CC Switch 中選擇 OpenAI 相容的供應商類型，常見選項是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OpenAI Chat Completions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後把 base URL 指向 Ollama 的本地位址。&lt;/p&gt;
&lt;p&gt;API key 欄位對本地 Ollama 來說通常不需要真實金鑰，但很多工具仍會要求環境變數或佔位值。可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或其他本地配置可接受的佔位變數。&lt;/p&gt;
&lt;p&gt;有一個配置項需要特別注意：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;inferenceModels&amp;#34;=&amp;#34;[\&amp;#34;haiku\&amp;#34;,\&amp;#34;sonnet\&amp;#34;,\&amp;#34;opus\&amp;#34;]&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它表示把 Claude Code 預期的模型角色映射到本地供應商。實際使用時，需要把 &lt;code&gt;haiku&lt;/code&gt;、&lt;code&gt;sonnet&lt;/code&gt;、&lt;code&gt;opus&lt;/code&gt; 對應到 Ollama 或 CC Switch 中可用的模型名稱。映射錯了，Claude Code 可能無法呼叫模型，或者一直回落到非預期配置。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-強在哪裡&#34;&gt;Claude Code 強在哪裡
&lt;/h2&gt;&lt;p&gt;Claude Code 最有價值的地方不是單次補全，而是整套編程工作流：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀取並理解專案結構；&lt;/li&gt;
&lt;li&gt;根據任務定位相關檔案；&lt;/li&gt;
&lt;li&gt;直接修改程式碼；&lt;/li&gt;
&lt;li&gt;執行命令與測試；&lt;/li&gt;
&lt;li&gt;觀察錯誤後繼續迭代；&lt;/li&gt;
&lt;li&gt;在一個會話中完成多步任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是很多人想把 Claude Code 保留下來的原因。普通聊天介面可以生成程式碼片段，但不會自然地在倉庫裡操作。Claude Code 更像是一個能執行任務的開發助手。&lt;/p&gt;
&lt;h2 id=&#34;ollama-在這裡扮演什麼角色&#34;&gt;Ollama 在這裡扮演什麼角色
&lt;/h2&gt;&lt;p&gt;Ollama 負責本地模型的執行與管理。它處理模型下載、載入和本地推理。&lt;/p&gt;
&lt;p&gt;它的優點很明確：請求留在本機，反覆使用不會產生 API 帳單，在網路受限時也能使用。對私有程式碼來說，這也比把每一輪上下文都送到雲端模型更容易接受。&lt;/p&gt;
&lt;p&gt;代價同樣明確。本地模型高度依賴硬體和模型品質。較小模型能處理簡單修改、解釋、腳本生成，但遇到大型跨檔案重構或細節很多的架構判斷時，能力會明顯下降。&lt;/p&gt;
&lt;h2 id=&#34;體驗邊界在哪裡&#34;&gt;體驗邊界在哪裡
&lt;/h2&gt;&lt;p&gt;這套方案不適合被理解成對 Claude 雲端強模型的完整替代。&lt;/p&gt;
&lt;p&gt;你可能遇到這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長上下文理解能力較弱；&lt;/li&gt;
&lt;li&gt;複雜任務中的工具呼叫不穩定；&lt;/li&gt;
&lt;li&gt;純 CPU 機器推理速度較慢；&lt;/li&gt;
&lt;li&gt;更容易幻覺出不存在的檔案路徑或 API；&lt;/li&gt;
&lt;li&gt;多輪規劃可靠性不足；&lt;/li&gt;
&lt;li&gt;大型專案重構成功率較低。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更合理的期待是：把它當成免費本地開發助手，而不是頂級雲端模型的完美替身。&lt;/p&gt;
&lt;h2 id=&#34;多模態相容性還不穩定&#34;&gt;多模態相容性還不穩定
&lt;/h2&gt;&lt;p&gt;有些使用者希望 Claude Code 處理截圖、UI 圖片、流程圖或其他多模態輸入。這一部分取決於本地模型和轉發層的支援情況。&lt;/p&gt;
&lt;p&gt;如果選用的 Ollama 模型不支援視覺，或者 CC Switch 沒有正確轉換請求格式，多模態功能就可能失效。即使用了視覺模型，行為也可能和 Claude 官方 API 不完全一致。&lt;/p&gt;
&lt;p&gt;因此目前更建議把這套方案用在文字與程式碼工作流上，多模態能力暫時按實驗功能看待。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;這套方案適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想低成本體驗 Claude Code 工作流的開發者；&lt;/li&gt;
&lt;li&gt;經常寫腳本、小工具、自動化流程的使用者；&lt;/li&gt;
&lt;li&gt;希望程式碼盡量留在本機的團隊；&lt;/li&gt;
&lt;li&gt;想學習 AI 編程助手但不想持續消耗 API 的新手；&lt;/li&gt;
&lt;li&gt;正在測試不同本地程式碼模型的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你高度依賴長上下文、大型 monorepo、嚴格程式碼審查品質，或複雜全專案重構，它可能還不夠穩。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;建議先從小任務開始。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解釋單個檔案；&lt;/li&gt;
&lt;li&gt;重構一個小函式；&lt;/li&gt;
&lt;li&gt;生成一段 shell 腳本；&lt;/li&gt;
&lt;li&gt;修復一個簡單錯誤；&lt;/li&gt;
&lt;li&gt;增加一個小功能；&lt;/li&gt;
&lt;li&gt;為局部模組補單元測試。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次修改後，最好自己跑測試，或至少檢查 diff。本地模型可以提高效率，但不應該盲目接受所有修改。&lt;/p&gt;
&lt;p&gt;如果模型經常丟失上下文，就縮小任務範圍。不要讓它「重構整個專案」，而是改成「重構這個函式」或「為這個檔案增加校驗」。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code + CC Switch + Ollama&lt;/code&gt; 是一個很有意思的組合。它把 Claude Code 的 Agent 式開發體驗保留下來，同時把模型推理搬到本地。&lt;/p&gt;
&lt;p&gt;它最大的優勢是成本低、資料更私有、工作流順手；限制也很明顯，模型品質、硬體性能、長上下文和工具呼叫穩定性都會影響最終體驗。&lt;/p&gt;
&lt;p&gt;如果你已經在用 Ollama，又想要一套更接近實戰的本地 AI 編程流程，這個方案值得試試。只是要記住：先從小任務開始，每次改動都要驗證，把本地模型當助手，而不是自動工程師。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenHuman 速讀：開源個人 AI Agent 的桌面化路線</title>
        <link>https://knightli.com/zh-tw/2026/05/15/openhuman-open-source-personal-ai-agent/</link>
        <pubDate>Fri, 15 May 2026 14:52:31 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/openhuman-open-source-personal-ai-agent/</guid>
        <description>&lt;p&gt;OpenHuman 是 tinyhumansai 推出的開源個人 AI Agent 專案。它的目標不是再做一個聊天視窗，而是把桌面應用、個人記憶、第三方整合、語音、編碼工具和本機知識庫放進同一個 agent harness 裡，讓 AI 更快理解你的日常工作上下文。&lt;/p&gt;
&lt;p&gt;專案 README 給它的定位是 “Personal AI super intelligence”，官網也強調 private、simple 和 extremely powerful。這個說法很有野心，但更適合拆開看：OpenHuman 真正值得關注的地方，是它試圖把「個人上下文」作為產品核心，而不是把模型呼叫、外掛設定和文件檢索留給使用者自己拼。&lt;/p&gt;
&lt;p&gt;截至本文查看時，GitHub 倉庫約有 7.8k stars、629 forks，最新 release 顯示為 &lt;code&gt;OpenHuman v0.53.43&lt;/code&gt;，時間是 2026 年 5 月 13 日。專案仍處在 Early Beta，README 明確提醒正在活躍開發中，應該預期會有粗糙邊緣。&lt;/p&gt;
&lt;h2 id=&#34;它想解決什麼問題&#34;&gt;它想解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多 AI 助手的問題不是模型不夠強，而是上下文太冷。你每次都要重新解釋專案背景、最近郵件、日程、程式碼倉庫、文件、任務和偏好；一旦跨到 Gmail、Notion、GitHub、Slack、Calendar、Drive、Linear、Jira 這些系統，資訊又被拆散到不同工具裡。&lt;/p&gt;
&lt;p&gt;OpenHuman 的思路是：先把這些資料接進來，再透過自動抓取、壓縮、摘要和本機知識庫，構建一個可以持續更新的個人記憶層。這樣 agent 不是只記得當前對話，而是能圍繞你的工作流形成長期上下文。&lt;/p&gt;
&lt;p&gt;這也是它和普通聊天機器人最大的差異。聊天機器人往往圍繞 prompt 工作；OpenHuman 更像一個桌面端個人操作系統入口，試圖把連接器、記憶、工具和模型路由都預先打包。&lt;/p&gt;
&lt;h2 id=&#34;主要能力&#34;&gt;主要能力
&lt;/h2&gt;&lt;p&gt;OpenHuman README 裡列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;桌面優先的 UI 和較短的上手路徑，不要求使用者先從終端設定開始。&lt;/li&gt;
&lt;li&gt;一個帶「臉」的桌面 mascot，可以說話、響應環境，並參與 Google Meet。&lt;/li&gt;
&lt;li&gt;118+ 第三方整合，覆蓋 Gmail、Notion、GitHub、Slack、Stripe、Calendar、Drive、Linear、Jira 等工具。&lt;/li&gt;
&lt;li&gt;自動抓取機制：專案描述中提到每 20 分鐘遍歷活躍連接，把新資料拉入 memory tree。&lt;/li&gt;
&lt;li&gt;Memory Tree：把連接資料和活動資訊壓縮成 Markdown 區塊，並存入本機 SQLite。&lt;/li&gt;
&lt;li&gt;Obsidian-compatible vault：把知識區塊落成 &lt;code&gt;.md&lt;/code&gt; 檔案，使用者可以用 Obsidian 打開、瀏覽和編輯。&lt;/li&gt;
&lt;li&gt;內建搜尋、網頁抓取、編碼工具、檔案系統、git、lint、test、grep、語音輸入輸出等能力。&lt;/li&gt;
&lt;li&gt;Model routing：按任務把請求路由到不同模型類型。&lt;/li&gt;
&lt;li&gt;TokenJuice：在工具結果、網頁抓取、郵件正文、搜尋結果進入 LLM 前做 token 壓縮。&lt;/li&gt;
&lt;li&gt;可選 Ollama，用於本機 AI 工作負載。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些能力聽起來很多，真正的重點可以歸納成兩條：一是減少設定和外掛拼裝；二是把你的個人資料變成 agent 可檢索、可壓縮、可持續更新的記憶。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;專案提供網站下載入口，也給了終端安裝命令。&lt;/p&gt;
&lt;p&gt;macOS 或 Linux x64：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/tinyhumansai/openhuman/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tinyhumansai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;openhuman&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是日常主力機，建議先從官網下載安裝包，或者至少先打開安裝腳本檢查內容，再決定是否直接執行遠端腳本。OpenHuman 涉及郵箱、文件、程式碼倉庫、日曆和本機檔案權限，安裝和授權都應該比普通小工具更謹慎。&lt;/p&gt;
&lt;h2 id=&#34;開源和技術棧&#34;&gt;開源和技術棧
&lt;/h2&gt;&lt;p&gt;OpenHuman 倉庫採用 GPL-3.0 license。倉庫語言占比顯示 Rust 為主，TypeScript 次之，另外還有 JavaScript、Shell、CSS 和 PowerShell。README 的貢獻說明要求 Node.js 24+、pnpm 10.10.0、Rust 1.93.0、CMake，以及平台相關桌面構建依賴。&lt;/p&gt;
&lt;p&gt;本機開發的大致路徑是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git submodule update --init --recursive
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm --filter openhuman-app dev:app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;提交前推薦跑 focused checks，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm typecheck
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm format:check
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo check -p openhuman --lib
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從目錄結構看，它不是一個輕量腳本專案，而是包含桌面應用、前端、Rust 後端、文件、測試、示例和構建腳本的完整產品型倉庫。&lt;/p&gt;
&lt;h2 id=&#34;memory-tree-和-obsidian-vault-為什麼重要&#34;&gt;Memory Tree 和 Obsidian vault 為什麼重要
&lt;/h2&gt;&lt;p&gt;OpenHuman 裡最值得單獨看的概念是 Memory Tree。README 描述它會把連接進來的資料標準化成不超過約 3k token 的 Markdown chunks，打分後折疊進層級摘要樹，並存入本機 SQLite。相同內容也會進入 Obsidian 相容 vault。&lt;/p&gt;
&lt;p&gt;這條路線有幾個好處：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者可以直接看到 agent 的知識庫，而不是只能相信黑盒記憶。&lt;/li&gt;
&lt;li&gt;Markdown 檔案方便搜尋、備份、版本管理和人工修訂。&lt;/li&gt;
&lt;li&gt;SQLite 適合本機索引和快速查詢。&lt;/li&gt;
&lt;li&gt;層級摘要比一堆平鋪文件更適合長期上下文壓縮。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也有現實挑戰：資料同步是否穩定、摘要是否會丟關鍵細節、權限邊界是否足夠清晰、刪除和撤銷是否完整、不同連接器的語義是否能被一致處理。這些都不是 README 裡一句 “remembers everything” 就能解決的，需要長期使用和審計才能判斷。&lt;/p&gt;
&lt;h2 id=&#34;tokenjuice成本和延遲的中間層&#34;&gt;TokenJuice：成本和延遲的中間層
&lt;/h2&gt;&lt;p&gt;OpenHuman 還強調 TokenJuice。它的作用是在網頁、郵件、搜尋結果和工具呼叫結果進入模型前做壓縮，例如把 HTML 轉成 Markdown、縮短長 URL、移除部分非必要字元等。README 宣稱這可以減少成本和延遲，最高降低 80% token 使用。&lt;/p&gt;
&lt;p&gt;這個方向是合理的。Agent 系統真正燒錢的地方，往往不是一次聊天，而是後台抓取、工具呼叫、搜尋、網頁解析和長上下文注入。把資料先清洗再交給模型，通常比直接塞原始內容更穩。&lt;/p&gt;
&lt;p&gt;不過壓縮層也會帶來新問題：它會決定哪些資訊被保留，哪些被丟棄。如果你用它處理合約、帳單、醫學記錄、合規材料或生產事故日誌，就不能只看 token 節省，還要看可追溯性、原文回查和壓縮誤差。&lt;/p&gt;
&lt;h2 id=&#34;隱私賣點也是審查重點&#34;&gt;隱私：賣點也是審查重點
&lt;/h2&gt;&lt;p&gt;OpenHuman 的賣點之一是 private。官網提到本機 AI 模型可處理低階任務，README 也強調 workflow data stays on device、encrypted locally、treated as yours。&lt;/p&gt;
&lt;p&gt;這類設計方向很吸引人，因為個人 AI Agent 一旦接入 Gmail、Drive、Calendar、Slack、GitHub，就會碰到最敏感的工作資料。相比完全雲端的助手，本機優先的記憶層和可見的 Markdown vault 至少給了使用者更多控制感。&lt;/p&gt;
&lt;p&gt;但也要把話說完整：OpenHuman 同時提到 one subscription、30+ providers、model routing、ElevenLabs TTS、OAuth integrations 等能力。這意味著它不是純離線工具。真正評估隱私時，需要看每個連接器、每類模型呼叫、每個語音和搜尋能力分別把什麼資料送到哪裡。&lt;/p&gt;
&lt;h2 id=&#34;適合誰關注&#34;&gt;適合誰關注
&lt;/h2&gt;&lt;p&gt;OpenHuman 現在更適合三類人：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;想要個人 AI 操作台，而不是單點聊天機器人的使用者。&lt;/li&gt;
&lt;li&gt;願意嘗試 Early Beta，並能接受功能變化和粗糙邊緣的開發者。&lt;/li&gt;
&lt;li&gt;關注本機記憶、Obsidian 工作流、agent connector 和上下文壓縮的人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只是想找一個穩定、輕量、隱私邊界極簡的離線助手，那它目前可能太重。如果你想研究下一代個人 AI Agent 會如何整合桌面、連接器、記憶和工具，OpenHuman 則是一個值得跟蹤的開源樣本。&lt;/p&gt;
&lt;p&gt;我的建議是先把它當成「產品型開源實驗」觀察：看 release 節奏、issue 品質、連接器權限、資料匯出能力、刪除機制和本機 vault 的可讀性。個人 AI 的關鍵不只是能不能回答問題，而是它是否能長期、透明、可控地承載你的上下文。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tinyhumans.ai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenHuman 官網&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tinyhumans.gitbook.io/openhuman-docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenHuman Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>web-video-presentation：把文章做成可錄屏網頁影片的 Agent Skill</title>
        <link>https://knightli.com/zh-tw/2026/05/15/web-video-presentation-agent-skill/</link>
        <pubDate>Fri, 15 May 2026 09:02:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/web-video-presentation-agent-skill/</guid>
        <description>&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; 是 &lt;code&gt;ConardLi/garden-skills&lt;/code&gt; 裡的一個 agent skill。它要解決的問題很具體：把一篇文章或一段口播稿，做成可以錄屏的影片化網頁演示。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills/tree/main/skills/web-video-presentation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ConardLi/garden-skills/tree/main/skills/web-video-presentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;它不是普通 PPT 模板，也不是單純 React 元件庫。更準確地說，它是一套面向 AI agent 的影片演示生產流程：先把內容改成口播稿，再拆成 outline，再選主題，再用 Vite + React + TypeScript 做一個 16:9 的點擊驅動網頁，最後錄屏成影片。&lt;/p&gt;
&lt;h2 id=&#34;它想做的不是投影片&#34;&gt;它想做的不是投影片
&lt;/h2&gt;&lt;p&gt;README 裡有一個關鍵定位：這個 skill 生成的是 “video production surface”，不是 slide deck。&lt;/p&gt;
&lt;p&gt;也就是說，它不希望每頁只是標題加 bullet list，而是讓每次點擊推進一個口播節拍。每個 step 獨占 1920×1080 的舞台，畫面隨著敘事變化。進度 UI 平時隱藏，只有懸浮時出現，方便錄屏。&lt;/p&gt;
&lt;p&gt;它適合把部落格文章做成影片解說、把口播稿做成動態視覺稿、做產品 demo、教程影片或 keynote 風格演講。&lt;/p&gt;
&lt;p&gt;核心價值不是省掉剪輯軟體，而是讓網頁成為可控、可迭代的影片畫布。&lt;/p&gt;
&lt;h2 id=&#34;核心設計原則&#34;&gt;核心設計原則
&lt;/h2&gt;&lt;p&gt;第一，固定 16:9 舞台。內容在穩定的 &lt;code&gt;1920×1080&lt;/code&gt; 坐標系裡設計，再縮放到不同視口，避免錄屏時布局漂移。&lt;/p&gt;
&lt;p&gt;第二，全域 step cursor。點擊或鍵盤推進 &lt;code&gt;(chapter, step)&lt;/code&gt;，本地保存進度。它像影片時間線，但用網頁狀態控制。&lt;/p&gt;
&lt;p&gt;第三，一個 step 只講一個想法。每個節拍都應該是完整畫面，而不是在同頁上堆 bullet。&lt;/p&gt;
&lt;p&gt;第四，腳本節拍驅動結構。口播稿決定節奏，outline 決定章節和 step，畫面跟著敘事走。&lt;/p&gt;
&lt;p&gt;第五，motion first。每個場景都應該有一個會動的視覺錨點。如果只是靜態段落，還沒有變成影片語言。&lt;/p&gt;
&lt;p&gt;第六，主題 token 化。主題不是換色，而是透過語義 token 控制字體、顏色、卡片、背景、分隔線、裝飾和整體氣質。&lt;/p&gt;
&lt;h2 id=&#34;工作流分四段&#34;&gt;工作流分四段
&lt;/h2&gt;&lt;p&gt;第一階段是內容編寫。使用者給原始文章時，agent 要改寫成 &lt;code&gt;script.md&lt;/code&gt;，再生成 &lt;code&gt;outline.md&lt;/code&gt;。如果已有口播稿，就直接落盤成 &lt;code&gt;script.md&lt;/code&gt;，再生成 outline。&lt;/p&gt;
&lt;p&gt;第二階段是網頁開發。agent 用腳手架生成 Vite / React / TypeScript 專案，按章節實作畫面。第 1 章必須由主線完整做出來並讓使用者驗收，因為它是後續章節的風格錨點。&lt;/p&gt;
&lt;p&gt;第三階段是可選音訊合成。skill 支援從章節裡的 &lt;code&gt;narrations.ts&lt;/code&gt; 抽取音訊片段定義，再走語音合成流程。&lt;/p&gt;
&lt;p&gt;第四階段是錄屏和後期。網頁本身作為錄屏舞台，使用者用錄屏工具把點擊驅動的演示錄成影片。&lt;/p&gt;
&lt;p&gt;流程中有硬檢查點：腳本、outline、主題、素材計畫、開發模式要先對齊；第 1 章做完必須驗收；是否合成音訊也要停下來確認。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-outline-不寫動畫&#34;&gt;為什麼 outline 不寫動畫
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;outline.md&lt;/code&gt; 只規劃節奏和資訊密度，不規劃具體動畫。它可以寫章節切分、step 數、每步畫面內容、素材清單和估計時長，但不該寫 CSS 動畫類型、毫秒數、clip-path 或 filter。&lt;/p&gt;
&lt;p&gt;原因是，如果 outline 把動畫寫死，後面的章節開發就會退化成機械翻譯。真正的影片感應該在實作單章時，根據內容關係即時設計。&lt;/p&gt;
&lt;h2 id=&#34;narrationsts-是唯一真相源&#34;&gt;narrations.ts 是唯一真相源
&lt;/h2&gt;&lt;p&gt;每章都有自己的 &lt;code&gt;narrations.ts&lt;/code&gt;，保存 step 數和對應口播文本。skill 要求章節 &lt;code&gt;.tsx&lt;/code&gt; 裡出現的最大 step 數，必須和 &lt;code&gt;narrations.length&lt;/code&gt; 對齊。&lt;/p&gt;
&lt;p&gt;這是為了避免 &lt;code&gt;script.md&lt;/code&gt;、&lt;code&gt;outline.md&lt;/code&gt;、章節程式碼、&lt;code&gt;chapters.ts&lt;/code&gt; 和音訊檔互相漂移。口播、畫面、音訊和 step 數不一致時，影片生產會很難維護。&lt;/p&gt;
&lt;h2 id=&#34;內建主題不是簡單換皮&#34;&gt;內建主題不是簡單換皮
&lt;/h2&gt;&lt;p&gt;內建主題包括 &lt;code&gt;paper-press&lt;/code&gt;、&lt;code&gt;warm-keynote&lt;/code&gt;、&lt;code&gt;midnight-press&lt;/code&gt;、&lt;code&gt;blueprint&lt;/code&gt;、&lt;code&gt;chalk-garden&lt;/code&gt;、&lt;code&gt;terminal-green&lt;/code&gt;、&lt;code&gt;bauhaus-bold&lt;/code&gt;、&lt;code&gt;sunset-zine&lt;/code&gt;、&lt;code&gt;newsroom&lt;/code&gt;、&lt;code&gt;monochrome-print&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它們不是紅色版、藍色版，而是不同視覺方向。agent 在 Checkpoint Plan 階段要根據稿子的主題和語氣，推薦 2 到 3 個合適主題。使用者也可以要求自訂主題。&lt;/p&gt;
&lt;h2 id=&#34;三種開發模式&#34;&gt;三種開發模式
&lt;/h2&gt;&lt;p&gt;第 1 章無論如何都必須主線做完並驗收。之後有三種模式。&lt;/p&gt;
&lt;p&gt;模式 A 是逐章確認，風險最低。模式 B 是順序開發，第 2 章到最後由主線做完後統一驗收。模式 C 是並行開發，第 1 章通過後把後續章節交給 subagent 並行實作，速度最快，但各章風格可能略有差異。&lt;/p&gt;
&lt;p&gt;這很現實：影片生產既需要風格錨點，也需要生產效率。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;它特別適合已經有內容素材的人。如果你有文章、腳本、產品介紹、教程或技術解讀，它可以把這些內容轉成可錄屏網頁影片。&lt;/p&gt;
&lt;p&gt;但如果只是說「幫我想一個影片主題」，它不適合直接接手。它不是創意選題工具，而是內容轉影片的生產流程。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; 的價值，不是幫你生成好看的 React 頁面，而是把內容影片化拆成可協作、可驗收、可重用的流程。&lt;/p&gt;
&lt;p&gt;它把文章、口播、outline、主題、章節實作、音訊合成和錄屏串起來，同時用硬檢查點防止 agent 一路跑偏。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt-Vault：一個適合測試 AI 編程能力的 Prompt 規格庫</title>
        <link>https://knightli.com/zh-tw/2026/05/15/prompt-vault-coding-prompt-benchmark/</link>
        <pubDate>Fri, 15 May 2026 09:00:52 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/prompt-vault-coding-prompt-benchmark/</guid>
        <description>&lt;p&gt;&lt;code&gt;w512/Prompt-Vault&lt;/code&gt; 是一個很小但有用的 prompt 倉庫。它不是收集萬能咒語，而是把一組可執行的 coding prompt 按難度整理成規格文件，用來測試 LLM 或 coding agent 能不能真正完成小專案。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/w512/Prompt-Vault&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;倉庫結構很清楚：&lt;code&gt;Easy&lt;/code&gt;、&lt;code&gt;Medium&lt;/code&gt;、&lt;code&gt;Hard&lt;/code&gt; 三個目錄，每個 Markdown 檔案都是一個獨立任務。README 也說這些 prompt 適合測試大語言模型，或給開發者當練習專案。&lt;/p&gt;
&lt;h2 id=&#34;它不是-prompt-收藏夾&#34;&gt;它不是 prompt 收藏夾
&lt;/h2&gt;&lt;p&gt;很多 prompt 倉庫看起來內容很多，但很難判斷品質。標題吸引人，真正拿去用時卻缺少驗收標準。&lt;/p&gt;
&lt;p&gt;Prompt-Vault 更像小型規格庫。每個任務都盡量寫清楚要做什麼應用、必須有哪些功能、UI 風格、技術約束、是否單檔執行、是否允許外部依賴、資料是否持久化。&lt;/p&gt;
&lt;p&gt;這比「幫我做一個好看的看板」更適合測試模型，因為它能看出模型是否真的理解需求。&lt;/p&gt;
&lt;h2 id=&#34;easy測試基礎互動&#34;&gt;Easy：測試基礎互動
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Bubble_Sort_Visualizer.md&lt;/code&gt; 要求做一個單檔 &lt;code&gt;index.html&lt;/code&gt;，用柱狀條即時展示冒泡排序，包含開始、重置、速度滑桿、比較次數統計和深色主題。&lt;/p&gt;
&lt;p&gt;它適合測試模型能否把演算法狀態映射到 UI、控制動畫節奏、處理重置和運行狀態，並保持程式碼簡潔。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ToDo_List.md&lt;/code&gt; 從靜態 HTML 開始，逐步增加新增任務、完成狀態、刪除按鈕、計數器、Active / Completed 統計和 &lt;code&gt;localStorage&lt;/code&gt; 持久化。&lt;/p&gt;
&lt;p&gt;這個任務普通，但很適合測試模型是否會按步驟演進，而不是一口氣堆出混亂程式碼。&lt;/p&gt;
&lt;h2 id=&#34;medium測試複雜狀態和動畫&#34;&gt;Medium：測試複雜狀態和動畫
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Sorting_Visualization.md&lt;/code&gt; 把排序視覺化升級成支援 Bubble Sort、Insertion Sort、Selection Sort、Merge Sort、Quick Sort、Heap Sort 六種演算法。&lt;/p&gt;
&lt;p&gt;它還要求演算法選擇、速度滑桿、陣列大小滑桿、重置、開始 / 暫停切換，以及即時統計面板。&lt;/p&gt;
&lt;p&gt;很多模型能寫出一個冒泡排序動畫，但一旦要支援多演算法、暫停恢復、比較次數和交換次數統計，就容易暴露狀態管理問題。&lt;/p&gt;
&lt;h2 id=&#34;hard測試完整產品感&#34;&gt;Hard：測試完整產品感
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Kanban_Board.md&lt;/code&gt; 要求完整看板：預設四列、新增列、雙擊改名、刪除空列、卡片標題與描述、優先級、截止日期、拖拽、搜尋、優先級過濾、&lt;code&gt;localStorage&lt;/code&gt;、底部統計、深色玻璃擬態和響應式橫向滾動。&lt;/p&gt;
&lt;p&gt;它測的是產品完整度，而不是單點功能。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Markdown_Editor_Desktop.md&lt;/code&gt; 要求用 Tauri 2 做跨平台 Markdown 編輯器，包含分欄編輯與預覽、同步滾動、即時渲染、預覽模式、專注模式、打開、保存、另存為、未保存標記、格式化工具列、快捷鍵、主題、字體設定、Vue 3、Pinia、&lt;code&gt;marked.js&lt;/code&gt;、&lt;code&gt;prism.js&lt;/code&gt; 和 Tauri 插件。&lt;/p&gt;
&lt;p&gt;這已經能測桌面應用工程能力。&lt;/p&gt;
&lt;h2 id=&#34;為什麼有價值&#34;&gt;為什麼有價值
&lt;/h2&gt;&lt;p&gt;Prompt-Vault 的價值不在任務數量，而在於提供可重用的評測樣本。&lt;/p&gt;
&lt;p&gt;如果你比較不同模型或 coding agent，可以用同一個 prompt 反覆測試：誰更遵守約束、誰更少漏功能、誰更會處理邊界狀態、誰的程式碼更容易維護、誰更擅長 UI 細節。&lt;/p&gt;
&lt;p&gt;這比「我感覺這個模型更聰明」可靠得多。&lt;/p&gt;
&lt;p&gt;前端任務尤其適合評測，因為很多失敗不是語法錯誤，而是體驗細節缺失：按鈕狀態、動畫、持久化、拖拽目標、統計同步。&lt;/p&gt;
&lt;h2 id=&#34;可以怎麼擴展&#34;&gt;可以怎麼擴展
&lt;/h2&gt;&lt;p&gt;如果要變成更完整的評測庫，可以補驗收清單、失敗用例、評分維度、參考實作和跨模型記錄。&lt;/p&gt;
&lt;p&gt;例如排序任務可以補「快速連續點擊 Start / Reset 不應產生多個動畫循環」。看板任務可以明確非空列是否允許刪除。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;測 AI 編程工具時，不要只看能不能生成頁面。更好的做法是原樣給 prompt，不額外提示，打開結果按功能逐項驗收，記錄漏掉的功能和 bug，再給一次修復機會，最後比較耗時、token 成本和程式碼品質。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Prompt-Vault 是一個輕量級 prompt 規格庫，適合做 AI 編程測試，也適合前端開發者練習小專案。&lt;/p&gt;
&lt;p&gt;它提醒我們：好的 prompt 不只是描述願望，而是寫清需求、約束、互動、狀態、驗收和執行方式。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Token Efficiency 是什麼？從 DeepSeek V4 看大模型規劃、小模型執行</title>
        <link>https://knightli.com/zh-tw/2026/05/15/token-efficiency-agent-orchestration/</link>
        <pubDate>Fri, 15 May 2026 08:59:33 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/token-efficiency-agent-orchestration/</guid>
        <description>&lt;p&gt;AI 編程接下來真正重要的指標，可能不是誰的模型最強，而是誰能用更少 token、更低成本、更穩定的流程，完成更多可驗收的工作。&lt;/p&gt;
&lt;p&gt;這就是 Token Efficiency 的價值。&lt;/p&gt;
&lt;p&gt;很多人理解 Token Efficiency，只想到模型便宜、上下文變長、快取命中更低價。但這些只是底層條件。真正能把它變成生產力的，是模型分工、任務編排、上下文預算和評估體系。&lt;/p&gt;
&lt;p&gt;換句話說，Token Efficiency 不是省錢技巧，而是一套把 token 轉換成產出的工程方法。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-的定位把大小模型分工產品化&#34;&gt;DeepSeek V4 的定位：把大小模型分工產品化
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 不是單純發布一個更強模型，而是把 Token Efficiency 需要的兩層能力拆成 &lt;code&gt;V4 Pro&lt;/code&gt; 和 &lt;code&gt;V4 Flash&lt;/code&gt;。&lt;code&gt;V4 Pro&lt;/code&gt; 更適合規劃、推理、架構判斷和關鍵審查；&lt;code&gt;V4 Flash&lt;/code&gt; 更適合高頻執行、批量改寫、程式碼補全、資料整理和 agent 循環裡的普通節點。&lt;/p&gt;
&lt;p&gt;這正好對應 AI 編程裡的兩個角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4 Pro&lt;/code&gt;：作為 planner / consultant，用在需求拆解、技術方案、複雜 bug 根因、架構審查和最終驗收。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4 Flash&lt;/code&gt;：作為 executor，用在檔案掃描、簡單實作、測試補齊、文件整理、候選方案生成和重複性任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek 官方 API 文件顯示，&lt;code&gt;V4 Flash&lt;/code&gt; 和 &lt;code&gt;V4 Pro&lt;/code&gt; 都支援 &lt;code&gt;1M&lt;/code&gt; 上下文、JSON Output、Tool Calls、Chat Prefix Completion 和 FIM Completion；價格頁也把快取命中輸入單獨計價，並說明全模型 input cache hit 價格已降到發布價的十分之一。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;1M&lt;/code&gt; 上下文解決複雜 agent 任務容易被壓縮的問題；低快取命中價格降低長 system prompt、專案文件、程式碼片段和歷史狀態反覆進入上下文的成本；&lt;code&gt;Flash / Pro&lt;/code&gt; 雙模型形態解決「每一步都用旗艦模型太貴、每一步都用小模型又不穩」的分工問題。&lt;/p&gt;
&lt;p&gt;所以 DeepSeek V4 的優勢不只是便宜或上下文長，而是執行層便宜、判斷層可用、長鏈路友好。它給「顧問模型 + 執行模型 + harness 編排」提供了更現實的成本結構。&lt;/p&gt;
&lt;h2 id=&#34;不要讓最強模型幹所有活&#34;&gt;不要讓最強模型幹所有活
&lt;/h2&gt;&lt;p&gt;過去使用 AI，常見做法是找最聰明的模型，讓它從需求分析、程式碼實作、測試、總結一路幹到底。&lt;/p&gt;
&lt;p&gt;這很簡單，但不一定高效。很多任務不需要最高等級推理能力。真正昂貴的模型，更應該像顧問、架構師或規劃員，只在關鍵決策點介入。&lt;/p&gt;
&lt;p&gt;更合理的結構是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大模型負責拆問題、定方向、做關鍵判斷。&lt;/li&gt;
&lt;li&gt;小模型負責執行、批量處理、重複修改。&lt;/li&gt;
&lt;li&gt;工具和 harness 負責流程、狀態、上下文和驗證。&lt;/li&gt;
&lt;li&gt;人負責定義產品、驗收結果和決定取捨。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣前沿推理能力不會被浪費在機械執行上。&lt;/p&gt;
&lt;h2 id=&#34;上下文不是越大越好&#34;&gt;上下文不是越大越好
&lt;/h2&gt;&lt;p&gt;長上下文對 coding agent 很重要，因為程式碼、文件、歷史對話、測試輸出和錯誤日誌都會吃掉上下文。上下文接近上限後，模型容易壓縮、遺忘或誤判。&lt;/p&gt;
&lt;p&gt;但長上下文不等於可以無限塞資料。&lt;/p&gt;
&lt;p&gt;Token Efficiency 的關鍵，是讓每個任務都能在清楚、可控的上下文窗口內完成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只帶必要檔案。&lt;/li&gt;
&lt;li&gt;背景文件只帶決策相關部分。&lt;/li&gt;
&lt;li&gt;歷史資訊只保留當前階段需要的狀態。&lt;/li&gt;
&lt;li&gt;每個節點有明確輸入和輸出。&lt;/li&gt;
&lt;li&gt;完成後把結果壓縮成結構化摘要，交給下一個節點。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上下文越便宜，越要警惕浪費。噪音不會讓模型更聰明。&lt;/p&gt;
&lt;h2 id=&#34;harness-比單個模型更重要&#34;&gt;Harness 比單個模型更重要
&lt;/h2&gt;&lt;p&gt;如果只是把 Claude Code、Codex 或其他 coding agent 接到便宜模型上，效果未必好。小模型容易在長鏈路任務裡跑偏，需要更強流程控制。&lt;/p&gt;
&lt;p&gt;真正讓小模型發揮價值的是 harness。它像一套調度系統，決定任務怎麼拆、節點怎麼跑、模型怎麼選、結果怎麼驗收、失敗怎麼重試、上下文怎麼傳遞。&lt;/p&gt;
&lt;p&gt;沒有這層軟體，小模型只是便宜；有了這層軟體，小模型才可能變成槓桿。&lt;/p&gt;
&lt;h2 id=&#34;用-dag-拆任務&#34;&gt;用 DAG 拆任務
&lt;/h2&gt;&lt;p&gt;一個有效思路，是把複雜任務拆成有向無環圖，也就是 DAG。&lt;/p&gt;
&lt;p&gt;例如功能開發可以拆成需求澄清、方案設計、任務拆分、編碼實作、測試補齊、Code Review、修復問題、提交 PR。&lt;/p&gt;
&lt;p&gt;每個節點都可以是獨立 agent，有自己的角色、prompt、工具權限和輸出格式。節點之間不靠長篇聊天傳遞資訊，而是靠預先定義好的結構化結果。&lt;/p&gt;
&lt;p&gt;這讓單個節點更短，也讓流程更可測。&lt;/p&gt;
&lt;h2 id=&#34;任務可以跑多個副本&#34;&gt;任務可以跑多個副本
&lt;/h2&gt;&lt;p&gt;當 token 足夠便宜，同一任務不一定只跑一次。可以讓同一任務用不同模型、不同 prompt、不同編排跑多個副本，再選最好結果或合併有效部分。&lt;/p&gt;
&lt;p&gt;適合多副本的任務包括方案設計、文案生成、測試用例補全、bug 根因假設、重構方案比較和 Code Review。不適合盲目多副本的，是會修改共享狀態、產生外部副作用或驗收標準不清楚的任務。&lt;/p&gt;
&lt;p&gt;多跑幾次不是碰運氣，而是獲得可比較樣本，反過來優化編排、模型選擇和節點技能。&lt;/p&gt;
&lt;h2 id=&#34;必須建立評估體系&#34;&gt;必須建立評估體系
&lt;/h2&gt;&lt;p&gt;Token Efficiency 不能只看價格。便宜但失敗率高，最後會吞掉人的時間。&lt;/p&gt;
&lt;p&gt;可以先記錄任務完成率、人工介入次數、工具調用失敗率、測試通過率、review 問題數、單任務 token 成本、耗時、返工次數和不同模型組合差異。&lt;/p&gt;
&lt;p&gt;有了這些資料，才知道哪些任務適合小模型，哪些必須上大模型，哪些應該交給人判斷。&lt;/p&gt;
&lt;h2 id=&#34;業務流程要原子化&#34;&gt;業務流程要原子化
&lt;/h2&gt;&lt;p&gt;普通使用者不一定要自己寫完整 harness，但可以先把業務流程拆成原子節點。&lt;/p&gt;
&lt;p&gt;內容生產可以拆成選題、資料收集、提綱、初稿、事實核查、風格改寫、SEO 標題、多語言翻譯、發布檢查。&lt;/p&gt;
&lt;p&gt;軟體開發可以拆成需求確認、技術方案、資料結構、介面變更、單元測試、實作、遷移腳本、文件、Review。&lt;/p&gt;
&lt;p&gt;每個節點都要盡量做到輸入明確、輸出明確、驗收明確、上下文可控。這樣等 harness 工具成熟時，流程可以直接接上。&lt;/p&gt;
&lt;h2 id=&#34;硬體不是第一優先級&#34;&gt;硬體不是第一優先級
&lt;/h2&gt;&lt;p&gt;很多人聊 Token Efficiency，很快就聊到本地部署和顯卡。但對大多數人來說，第一選擇仍然應該是 API。&lt;/p&gt;
&lt;p&gt;在沒有跑通經濟模型前，本地硬體只是成本前置。更穩的順序是：先用 API 跑通流程，建立評估和成本統計，找到穩定高頻節點，再考慮哪些值得本地化，最後計算硬體、電費、維護和折舊。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Token Efficiency 的本質，不是用便宜模型替代貴模型，而是重新設計 AI 工作流。&lt;/p&gt;
&lt;p&gt;大模型負責關鍵判斷，小模型負責批量執行，harness 負責調度和驗證，人負責定義目標和驗收結果。只有這四層配合起來，token 才能穩定變成生產力。&lt;/p&gt;
&lt;p&gt;未來的差距，很可能不在誰調用了最強模型，而在誰能用同樣的 token 撬動更多真實產出。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Superpowers：把 Coding Agent 拉回工程流程的技能框架</title>
        <link>https://knightli.com/zh-tw/2026/05/15/obra-superpowers-agentic-skills-framework/</link>
        <pubDate>Fri, 15 May 2026 08:53:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/obra-superpowers-agentic-skills-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;obra/superpowers&lt;/code&gt; 是一個給 coding agent 使用的技能框架，也是一套軟體開發方法論。它的目標不是再寫一個萬能 prompt，而是把 agent 的工作流程固定下來：先澄清目標，再產出設計，再拆計畫，再按測試驅動開發推進，最後做 review 和收尾。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/obra/superpowers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;寫作時，GitHub API 顯示這個倉庫已有超過 19 萬 star，授權為 MIT，最近仍在更新。README 對它的描述很直接：&lt;code&gt;An agentic skills framework &amp;amp; software development methodology that works.&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;它想解決什麼問題&#34;&gt;它想解決什麼問題
&lt;/h2&gt;&lt;p&gt;現在很多 AI 編程工具的問題，不是「不會寫程式碼」，而是太容易直接寫程式碼。&lt;/p&gt;
&lt;p&gt;使用者剛說一個模糊需求，agent 就開始改檔案；改完看似完成，其實邊界沒對齊、測試沒補、架構沒想清楚。短任務可能沒事，複雜專案裡就會變成返工和技術債。&lt;/p&gt;
&lt;p&gt;Superpowers 的思路是：讓 agent 在動手前先進入流程。&lt;/p&gt;
&lt;p&gt;README 描述的核心路徑大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;發現使用者要做東西時，先追問目標。&lt;/li&gt;
&lt;li&gt;從對話中整理規格，分段給使用者確認。&lt;/li&gt;
&lt;li&gt;設計通過後，生成清楚的實施計畫。&lt;/li&gt;
&lt;li&gt;使用者說 “go” 之後，再進入實作。&lt;/li&gt;
&lt;li&gt;實作時強調 TDD、YAGNI、DRY，並透過 review 檢查結果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這套流程不新，但放到 coding agent 裡很關鍵。AI 的執行速度越快，前置澄清和中途驗證越重要。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些工具&#34;&gt;支援哪些工具
&lt;/h2&gt;&lt;p&gt;Superpowers 不是只面向一個 agent。README 列出的安裝入口包括 Claude Code、Codex CLI、Codex App、Factory Droid、Gemini CLI、OpenCode、Cursor 和 GitHub Copilot CLI。&lt;/p&gt;
&lt;p&gt;這說明它更像跨 harness 的工作流層，而不是綁定某一家模型或某一個命令列工具。&lt;/p&gt;
&lt;h2 id=&#34;基礎工作流&#34;&gt;基礎工作流
&lt;/h2&gt;&lt;p&gt;第一步是 &lt;code&gt;brainstorming&lt;/code&gt;。它會在寫程式碼前觸發，透過問題把粗糙想法整理成可執行設計，並分段確認。&lt;/p&gt;
&lt;p&gt;第二步是 &lt;code&gt;using-git-worktrees&lt;/code&gt;。設計確認後建立隔離工作區和新分支，先確認安裝和測試基線乾淨。&lt;/p&gt;
&lt;p&gt;第三步是 &lt;code&gt;writing-plans&lt;/code&gt;。把設計拆成短小任務，每個任務有明確檔案路徑、程式碼範圍和驗證步驟。&lt;/p&gt;
&lt;p&gt;第四步是實作。可以用 &lt;code&gt;subagent-driven-development&lt;/code&gt; 派發子任務，也可以用 &lt;code&gt;executing-plans&lt;/code&gt; 分批執行。重點是每個任務都能檢查、review、繼續推進。&lt;/p&gt;
&lt;p&gt;第五步是 &lt;code&gt;test-driven-development&lt;/code&gt;。它強調真正的 RED-GREEN-REFACTOR：先寫失敗測試，確認失敗，再寫最小實作，確認通過，然後重構。&lt;/p&gt;
&lt;p&gt;第六步是 &lt;code&gt;requesting-code-review&lt;/code&gt;。任務之間做 review，Critical 問題會阻塞繼續推進。&lt;/p&gt;
&lt;p&gt;最後是 &lt;code&gt;finishing-a-development-branch&lt;/code&gt;。任務結束後驗證測試，給出合併、發 PR、保留或丟棄 worktree 的選擇。&lt;/p&gt;
&lt;h2 id=&#34;skills-library-裡有什麼&#34;&gt;Skills Library 裡有什麼
&lt;/h2&gt;&lt;p&gt;測試類主要是 &lt;code&gt;test-driven-development&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;除錯類包括 &lt;code&gt;systematic-debugging&lt;/code&gt; 和 &lt;code&gt;verification-before-completion&lt;/code&gt;，要求先復現、最小化、提出假設、驗證，再修復；也要求沒有驗證前不要宣布完成。&lt;/p&gt;
&lt;p&gt;協作類包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;brainstorming&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;writing-plans&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;executing-plans&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dispatching-parallel-agents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;requesting-code-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;receiving-code-review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;using-git-worktrees&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finishing-a-development-branch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;subagent-driven-development&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;元技能包括 &lt;code&gt;writing-skills&lt;/code&gt; 和 &lt;code&gt;using-superpowers&lt;/code&gt;。這些技能組合起來，像是給 agent 裝上一套工程習慣。&lt;/p&gt;
&lt;h2 id=&#34;和普通-prompt-最大的區別&#34;&gt;和普通 prompt 最大的區別
&lt;/h2&gt;&lt;p&gt;普通 prompt 往往把規則堆在一段 system prompt 裡：不要亂改、先思考、要測試、要簡潔。規則越堆越多，複雜任務裡模型越容易選擇性遺忘。&lt;/p&gt;
&lt;p&gt;Superpowers 更像把規則拆成可觸發的流程模組。不同任務階段使用不同技能，每個技能只負責一段工作。這讓規則更短、目標更集中，也讓複雜流程能被檢查。&lt;/p&gt;
&lt;p&gt;它最值得參考的地方是：不要只追求更聰明的模型，還要給模型一套可重複的工作方式。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;Superpowers 更適合已經在真實專案裡使用 coding agent 的開發者，尤其是任務不只單檔修改、希望 agent 先設計再實作、需要 TDD 或驗證、常常並行多個分支、想把團隊流程寫成可重用技能的場景。&lt;/p&gt;
&lt;p&gt;如果只是改一行設定，它可能偏重。但一旦任務涉及多檔案、多階段、多輪確認，流程約束就會變得有價值。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;不要把它理解成自動駕駛。Superpowers 能讓 agent 更有流程感，但需求邊界、設計取捨和最終驗收仍然需要人負責。&lt;/p&gt;
&lt;p&gt;TDD 和 review 會增加前期成本。小任務可能變慢，但複雜任務通常能減少返工。&lt;/p&gt;
&lt;p&gt;子代理並行不是越多越好。它適合邊界清楚、寫入範圍不重疊的任務；如果需求還沒想清楚，並行只會放大混亂。&lt;/p&gt;
&lt;p&gt;團隊也要維護自己的技能品質。過時流程、模糊指令和互相衝突的規則，都會拖累 agent。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Superpowers 的價值，不在於某個單獨技能多神奇，而在於它把 coding agent 從「接到需求就寫程式碼」拉回軟體工程流程。&lt;/p&gt;
&lt;p&gt;AI 編程真正缺的往往不是生成速度，而是澄清、計畫、驗證、review 和收尾。模型越強，這些流程越不能省。&lt;/p&gt;
&lt;p&gt;如果你已經在用 Codex、Claude Code、Cursor 或 Gemini CLI 做真實專案，Superpowers 值得看一眼。即使不直接安裝，它的技能拆分方式也很適合拿來改造自己的 agent 工作流。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>拒絕 Vibe Coding：Matt Pocock 的 skills 倉庫給 AI 編程補上工程約束</title>
        <link>https://knightli.com/zh-tw/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</link>
        <pubDate>Fri, 15 May 2026 08:46:23 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</guid>
        <description>&lt;p&gt;AI 寫程式碼越快，專案失控也可能越快。真正的問題不是模型會不會生成函式，而是它是否理解需求、是否遵守團隊語言、是否能在既有架構裡小步推進。&lt;/p&gt;
&lt;p&gt;Matt Pocock 開源的 &lt;code&gt;mattpocock/skills&lt;/code&gt; 倉庫，給了一個和 vibe coding 相反的方向：不要讓 AI 接管整個開發流程，而是把 AI 放進成熟的軟體工程約束裡。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/mattpocock/skills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這套方法的重點不是某個神奇 prompt，而是一組可以組合的 agent skills。它們把需求澄清、領域建模、測試驅動、問題診斷、架構審查這些工程實踐，重新包裝成適合 AI 編程工具調用的工作流。&lt;/p&gt;
&lt;h2 id=&#34;先解決對齊失敗&#34;&gt;先解決對齊失敗
&lt;/h2&gt;&lt;p&gt;AI 編程最常見的失敗，是你以為它懂了，其實它只是順著你的模糊描述開始猜。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-me&lt;/code&gt; 的思路是反過來：寫程式碼之前，先讓 AI 變成會追問的審稿人。它不會立刻開始實作，而是持續追問計畫裡的分支、邊界和未決問題。&lt;/p&gt;
&lt;p&gt;例如你說「做一個登入頁」，它應該先問：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;忘記密碼怎麼處理？&lt;/li&gt;
&lt;li&gt;是否支援第三方登入？&lt;/li&gt;
&lt;li&gt;登入失敗時要顯示什麼錯誤？&lt;/li&gt;
&lt;li&gt;帳號鎖定、驗證碼、風控是否在本期範圍內？&lt;/li&gt;
&lt;li&gt;成功後跳轉到哪裡？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一步看起來慢，但它減少的是後面返工的時間。AI 生成程式碼的成本越低，需求沒想清楚帶來的浪費就越大。&lt;/p&gt;
&lt;h2 id=&#34;把領域語言寫進上下文&#34;&gt;把領域語言寫進上下文
&lt;/h2&gt;&lt;p&gt;第二個問題是 AI 的通用詞彙病。它不了解團隊內部的業務叫法，只能用常見詞來猜，於是變數名、函式名、文件描述都開始漂移。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-with-docs&lt;/code&gt; 不只是追問需求，還會結合專案裡的 &lt;code&gt;CONTEXT.md&lt;/code&gt;、ADR 或領域文件，檢查使用者表達是否和既有術語衝突。確認後的術語、邊界和決策，可以繼續沉澱回上下文文件。&lt;/p&gt;
&lt;p&gt;這和領域驅動設計裡的「統一語言」很接近。假設團隊把 user 稱為 customer，把 order 稱為 transaction，AI 在寫程式碼時也應該繼承這些叫法。&lt;/p&gt;
&lt;p&gt;上下文文件的價值不在於堆資料，而在於讓 AI 少猜一點。&lt;/p&gt;
&lt;h2 id=&#34;用-tdd-限制生成速度&#34;&gt;用 TDD 限制生成速度
&lt;/h2&gt;&lt;p&gt;AI 的危險之處在於它太快了。過去寫出一大段壞程式碼需要時間，現在幾秒鐘就能生成幾百行。速度本身不是問題，缺少回饋循環才是問題。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tdd&lt;/code&gt; skill 把經典的紅綠重構流程放回 AI 編程裡：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先為一個行為寫失敗測試。&lt;/li&gt;
&lt;li&gt;再實作剛好讓測試通過的程式碼。&lt;/li&gt;
&lt;li&gt;然後重構。&lt;/li&gt;
&lt;li&gt;按垂直切片繼續推進。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;重點是「一次一個行為」，而不是讓 AI 一口氣寫完所有測試和所有實作。AI 負責執行，人類負責確認方向和邊界。&lt;/p&gt;
&lt;h2 id=&#34;用診斷循環處理複雜問題&#34;&gt;用診斷循環處理複雜問題
&lt;/h2&gt;&lt;p&gt;遇到 bug 時，很多 AI 會直接猜答案，然後連續改幾輪，把問題越修越亂。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diagnose&lt;/code&gt; 的價值在於要求 AI 先建立回饋循環：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重現問題&lt;/li&gt;
&lt;li&gt;最小化場景&lt;/li&gt;
&lt;li&gt;提出假設&lt;/li&gt;
&lt;li&gt;增加觀測或日誌&lt;/li&gt;
&lt;li&gt;修復&lt;/li&gt;
&lt;li&gt;補回歸測試&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套流程不新，但在 AI 編程裡尤其重要。AI 很擅長快速嘗試，但不一定擅長判斷哪次嘗試真正接近根因。診斷流程相當於給它加了一條軌道。&lt;/p&gt;
&lt;h2 id=&#34;定期審查架構&#34;&gt;定期審查架構
&lt;/h2&gt;&lt;p&gt;單次任務跑通，不代表程式碼庫變好了。AI 反覆提交小改動後，最容易出現模組邊界模糊、介面越來越複雜、測試越來越難寫。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;improve-codebase-architecture&lt;/code&gt; 這類 skill 的意義，是讓 AI 定期跳出當前任務，從更高層看程式碼庫：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些模組職責開始混在一起？&lt;/li&gt;
&lt;li&gt;哪些介面太複雜？&lt;/li&gt;
&lt;li&gt;哪些路徑難以測試？&lt;/li&gt;
&lt;li&gt;哪些命名和領域語言不一致？&lt;/li&gt;
&lt;li&gt;哪些重複邏輯應該收斂？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是讓 AI 自動大重構，而是讓它先給出結構化觀察和改進方向。真正要不要改、改到什麼程度，仍然需要開發者判斷。&lt;/p&gt;
&lt;h2 id=&#34;真正該限制的是自由度&#34;&gt;真正該限制的是自由度
&lt;/h2&gt;&lt;p&gt;這套方法論的核心可以壓縮成一句話：AI 編程不是放任模型自由發揮，而是給它清楚的目標、上下文、測試和停止條件。&lt;/p&gt;
&lt;p&gt;人類更適合負責問題定義、架構邊界、業務取捨和驗收標準；AI 更適合負責程式碼生成、測試補全、重複修改和局部重構。&lt;/p&gt;
&lt;p&gt;所以，軟體工程基礎沒有因為 AI 變強而過時。需求澄清、領域語言、TDD、診斷、架構審查這些能力，在 AI 時代反而更關鍵。&lt;/p&gt;
&lt;p&gt;會寫程式碼的人會越來越多。真正拉開差距的，是誰能把 AI 放進可維護、可驗證、可長期演進的工程體系裡。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>cc-haha 是什麼？一個把 Claude Code 做成桌面工作台的專案</title>
        <link>https://knightli.com/zh-tw/2026/05/14/cc-haha-claude-code-desktop-workbench/</link>
        <pubDate>Thu, 14 May 2026 22:38:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/14/cc-haha-claude-code-desktop-workbench/</guid>
        <description>&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 是一個圍繞 Claude Code 工作流改造出來的專案。它的完整倉庫名是 &lt;code&gt;NanmiCoder/cc-haha&lt;/code&gt;，專案頁面寫得很直接：它基於 &lt;code&gt;2026-03-31&lt;/code&gt; 從 Anthropic npm registry 洩露的 Claude Code 原始碼修復而來，現在主要形態是一個桌面端 Claude Code 工作台。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;這句話裡有兩個重點。&lt;/p&gt;
&lt;p&gt;第一，它不是 Anthropic 官方 Claude Code。專案 README 也明確寫了原始碼版權歸 Anthropic 所有，僅供學習和研究用途。&lt;/p&gt;
&lt;p&gt;第二，它現在的重點已經不只是「本地跑一個 Claude Code CLI」。從 README 和最新 release 看，&lt;code&gt;cc-haha&lt;/code&gt; 更像一個把 Claude Code 的會話、專案、權限、Diff、Computer Use、遠端訪問和模型提供商配置集中起來的桌面應用。&lt;/p&gt;
&lt;h2 id=&#34;它想解決什麼問題&#34;&gt;它想解決什麼問題
&lt;/h2&gt;&lt;p&gt;Claude Code 原本是偏終端的工具。會話、命令執行、權限確認、檔案修改、上下文切換都在終端裡完成。對熟悉 CLI 的人來說沒問題，但長期使用時會遇到幾個不方便的地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多個專案和多個會話不好同時管理。&lt;/li&gt;
&lt;li&gt;AI 改了哪些檔案，需要自己切到 Git 或編輯器裡看。&lt;/li&gt;
&lt;li&gt;權限審批、命令執行、檔案 Diff 分散在不同介面。&lt;/li&gt;
&lt;li&gt;想在手機或其他裝置上遠端看目前會話，需要額外方案。&lt;/li&gt;
&lt;li&gt;想接入非 Anthropic 模型，需要自己處理協議相容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的方向就是把這些東西做成一個圖形化工作台。它並不是只給 Claude Code 換皮，而是把「會話管理」和「本地開發流程控制」放到了桌面端裡。&lt;/p&gt;
&lt;h2 id=&#34;桌面端工作台從終端變成控制台&#34;&gt;桌面端工作台：從終端變成控制台
&lt;/h2&gt;&lt;p&gt;根據 README，&lt;code&gt;cc-haha&lt;/code&gt; 桌面端把這些能力集中到 macOS / Windows App 裡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多會話工作台：用標籤頁、專案切換、終端入口和歷史記錄管理不同任務。&lt;/li&gt;
&lt;li&gt;分支 / Worktree 啟動：新會話可以選擇倉庫分支，也可以選擇使用目前工作樹或隔離 Worktree。&lt;/li&gt;
&lt;li&gt;右側程式碼改動面板：聊天時直接查看修改過的檔案、增刪行和工作區狀態。&lt;/li&gt;
&lt;li&gt;程式碼修改視覺化：查看 AI 對檔案的編輯、Diff 和執行過程。&lt;/li&gt;
&lt;li&gt;權限與確認流：把危險命令、工具呼叫和 AI 反問集中到桌面端審批。&lt;/li&gt;
&lt;li&gt;多模型提供商：支援 Anthropic 相容 API、第三方模型、WebSearch fallback 和本地配置。&lt;/li&gt;
&lt;li&gt;H5 遠端訪問：用一次性 token 在手機或其他裝置上接入目前桌面會話。&lt;/li&gt;
&lt;li&gt;IM 接入：透過 Telegram、飛書、微信、釘釘遠端對話、切換專案和審批權限。&lt;/li&gt;
&lt;li&gt;定時任務與 token 用量統計：在桌面端建立計畫任務，並查看本機 token 使用趨勢。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類功能說明它更接近「AI 編程工作台」，而不是單純的命令列替代品。它想把 AI 寫程式時最常見的幾個介面放到同一個地方：聊天、檔案改動、權限、專案、遠端入口、模型配置。&lt;/p&gt;
&lt;h2 id=&#34;安裝和啟動方式&#34;&gt;安裝和啟動方式
&lt;/h2&gt;&lt;p&gt;普通使用者更適合從 Releases 下載桌面端安裝包。&lt;/p&gt;
&lt;p&gt;專案 README 給出的桌面端安裝流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前往 GitHub Releases 下載 macOS 或 Windows 安裝包。&lt;/li&gt;
&lt;li&gt;首次啟動後，在桌面端設定裡配置模型提供商、API Key 和預設模型。&lt;/li&gt;
&lt;li&gt;如果 macOS 提示應用無法打開，按安裝指南處理 Gatekeeper 權限。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最新 release 頁面顯示，&lt;code&gt;v0.2.6&lt;/code&gt; 發布於 &lt;code&gt;2026-05-13&lt;/code&gt;。這個版本主要圍繞 H5 手機訪問安全恢復、桌面會話管理、檔案提及搜尋和桌面體驗細節。&lt;/p&gt;
&lt;p&gt;如果想從原始碼啟動 CLI，README 給出的命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./bin/claude-haha
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個路徑更適合想調試底層 CLI、服務端或自行開發的人。普通使用還是桌面端更直接。&lt;/p&gt;
&lt;h2 id=&#34;v026-更新了什麼&#34;&gt;v0.2.6 更新了什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;v0.2.6&lt;/code&gt; 的重點是把 H5/LAN 訪問從臨時放行收回到顯式開啟和 token 配對模型。&lt;/p&gt;
&lt;p&gt;幾個值得注意的變化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;H5/LAN 訪問需要本地顯式開啟。&lt;/li&gt;
&lt;li&gt;QR 連結會攜帶一次性顯示的 token。&lt;/li&gt;
&lt;li&gt;遠端 API、proxy 和 WebSocket 不再裸露。&lt;/li&gt;
&lt;li&gt;Settings 新增獨立 H5 Access 頁面。&lt;/li&gt;
&lt;li&gt;桌面側邊欄增加批量管理模式，支援多選和刪除會話。&lt;/li&gt;
&lt;li&gt;桌面檔案提及搜尋改為 git-first，遵守 ignore 規則，減少 &lt;code&gt;node_modules&lt;/code&gt; 和建置產物噪聲。&lt;/li&gt;
&lt;li&gt;新增純白主題，修復長 URL 撐破聊天布局、多 tab 草稿串台等問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明專案已經不只是「能跑」，而是在補桌面產品需要的安全邊界和日常體驗。&lt;/p&gt;
&lt;p&gt;尤其是 H5 訪問這一塊，作者在 release 裡明確提醒：H5 是給個人或可信團隊使用的瀏覽器訪問入口，不是公開多租戶登入系統。實際使用時，不應該把它當成公網開放的 SaaS 登入後台。&lt;/p&gt;
&lt;h2 id=&#34;computer-use讓-agent-操作桌面&#34;&gt;Computer Use：讓 Agent 操作桌面
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 另一個重要賣點是 Computer Use。&lt;/p&gt;
&lt;p&gt;專案文件說明，這個功能基於 Claude Code 洩露原始碼中的 Computer Use 內部實作改造而來。官方實作依賴 Anthropic 內部私有原生模組，例如 &lt;code&gt;@ant/computer-use-swift&lt;/code&gt; 和 &lt;code&gt;@ant/computer-use-input&lt;/code&gt;，無法公開取得。&lt;code&gt;cc-haha&lt;/code&gt; 用 Python bridge 替換底層操作層，透過 &lt;code&gt;pyautogui&lt;/code&gt;、&lt;code&gt;mss&lt;/code&gt;、&lt;code&gt;pyobjc&lt;/code&gt; 等公開函式庫實作系統互動。&lt;/p&gt;
&lt;p&gt;Computer Use 支援的操作包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;截圖：&lt;code&gt;screenshot&lt;/code&gt;、&lt;code&gt;zoom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;滑鼠：點擊、拖曳、移動、滾動、讀取游標位置&lt;/li&gt;
&lt;li&gt;鍵盤：輸入文字、按鍵、按住按鍵&lt;/li&gt;
&lt;li&gt;應用：打開應用、切換顯示器&lt;/li&gt;
&lt;li&gt;權限：請求應用授權、列出已授權應用&lt;/li&gt;
&lt;li&gt;剪貼簿：讀取和寫入剪貼簿&lt;/li&gt;
&lt;li&gt;其他：等待、批量操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的工作方式是一個「截圖 - 分析 - 操作」的閉環：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型收到使用者請求。&lt;/li&gt;
&lt;li&gt;呼叫 &lt;code&gt;screenshot&lt;/code&gt; 取得螢幕畫面。&lt;/li&gt;
&lt;li&gt;模型根據視覺能力識別按鈕、輸入框和座標。&lt;/li&gt;
&lt;li&gt;呼叫點擊、輸入或應用操作工具。&lt;/li&gt;
&lt;li&gt;再次截圖確認結果，再繼續下一步。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;從文件看，完整支援的平台主要是 macOS，包括 Apple Silicon 和 Intel。Windows / Linux 在理論上可行，但涉及 &lt;code&gt;pyobjc&lt;/code&gt; 的應用管理部分需要替換為對應平台方案，目前並不是完整適配狀態。&lt;/p&gt;
&lt;p&gt;執行要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Bun &amp;gt;= 1.1.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Python &amp;gt;= 3.8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS Accessibility 輔助功能權限&lt;/li&gt;
&lt;li&gt;macOS Screen Recording 螢幕錄製權限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類功能很強，但也意味著權限風險更高。讓 AI 操作桌面應用時，最好只授權明確需要的應用，不要在無關視窗裡打開敏感內容。&lt;/p&gt;
&lt;h2 id=&#34;多模型接入透過-anthropic-協議相容層&#34;&gt;多模型接入：透過 Anthropic 協議相容層
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的通信基礎仍然是 Anthropic Messages API 協議。專案文件給出的推薦方案是用 LiteLLM 做協議轉換代理。&lt;/p&gt;
&lt;p&gt;基本結構是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-code-haha ──Anthropic协议──▶ LiteLLM Proxy ──OpenAI协议──▶ 目标模型 API
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是說，&lt;code&gt;cc-haha&lt;/code&gt; 發出 Anthropic Messages API 請求，LiteLLM 把它轉換成 OpenAI Chat Completions 等格式，再轉發給 OpenAI、DeepSeek、Ollama 或其他模型服務。&lt;/p&gt;
&lt;p&gt;文件給出的 LiteLLM 安裝方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s1&#34;&gt;&amp;#39;litellm[proxy]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後可以在 &lt;code&gt;litellm_config.yaml&lt;/code&gt; 裡配置 OpenAI、DeepSeek、Ollama 等模型。啟動代理後，在 &lt;code&gt;.env&lt;/code&gt; 或 &lt;code&gt;~/.claude/settings.json&lt;/code&gt; 裡設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_AUTH_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sk-anything
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:4000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_SONNET_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_HAIKU_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ANTHROPIC_DEFAULT_OPUS_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-4o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;API_TIMEOUT_MS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DISABLE_TELEMETRY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡有幾個實際注意點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;drop_params: true&lt;/code&gt; 很重要，因為 Anthropic 的 &lt;code&gt;thinking&lt;/code&gt;、&lt;code&gt;cache_control&lt;/code&gt; 等參數在 OpenAI API 中不存在。&lt;/li&gt;
&lt;li&gt;Extended Thinking 屬於 Anthropic 專有能力，使用第三方模型時不可用。&lt;/li&gt;
&lt;li&gt;Prompt Caching 也不會按 Anthropic 原生方式生效。&lt;/li&gt;
&lt;li&gt;工具呼叫會經過 Anthropic &lt;code&gt;tool_use&lt;/code&gt; 到 OpenAI function calling 的轉換，複雜工具呼叫可能存在相容性問題。&lt;/li&gt;
&lt;li&gt;本地 Ollama 小模型未必能穩定處理這套工具呼叫流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以多模型接入能跑，不等於所有模型體驗一樣。&lt;code&gt;cc-haha&lt;/code&gt; 對模型的工具呼叫、程式碼理解和長上下文能力要求仍然不低。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼人&#34;&gt;適合什麼人
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 更適合這幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經熟悉 Claude Code，但想要桌面端會話管理的人。&lt;/li&gt;
&lt;li&gt;經常同時處理多個倉庫、分支和 AI 會話的人。&lt;/li&gt;
&lt;li&gt;希望在右側直接看 AI 檔案改動、Diff 和工作區狀態的人。&lt;/li&gt;
&lt;li&gt;想嘗試 Computer Use，讓 Agent 操作桌面應用的人。&lt;/li&gt;
&lt;li&gt;想用 Anthropic 協議接入 OpenAI、DeepSeek、Ollama 或其他模型的人。&lt;/li&gt;
&lt;li&gt;需要手機或 IM 遠端查看會話、審批權限的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只想穩定使用官方 Claude Code 的使用者。&lt;/li&gt;
&lt;li&gt;不能接受洩露原始碼背景和版權不確定性的人。&lt;/li&gt;
&lt;li&gt;不願意給本地工具較高系統權限的人。&lt;/li&gt;
&lt;li&gt;需要企業合規、審計和官方支援的人。&lt;/li&gt;
&lt;li&gt;不熟悉 API key、代理、模型相容和本地服務配置的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;風險和邊界&#34;&gt;風險和邊界
&lt;/h2&gt;&lt;p&gt;這篇文章不能只講功能，也必須講風險。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 的來源決定了它不是一個普通的社群重寫專案。README 明確寫到它基於洩露的 Claude Code 原始碼，且原始碼版權歸 Anthropic 所有。這會帶來版權、合規和長期維護上的不確定性。&lt;/p&gt;
&lt;p&gt;另外，Computer Use、H5 遠端訪問、IM 接入和本地權限審批都屬於高權限能力。它們越方便，越需要清楚邊界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要在不可信網路下開放 H5 訪問。&lt;/li&gt;
&lt;li&gt;不要把 token 當作長期公開登入憑證。&lt;/li&gt;
&lt;li&gt;不要給 Agent 操作不相關的敏感應用。&lt;/li&gt;
&lt;li&gt;不要在生產環境或公司合規環境裡隨意接入。&lt;/li&gt;
&lt;li&gt;不要把第三方模型代理和 API key 配置暴露到公開倉庫。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是學習 AI 編程工具架構、桌面端工作流和 Computer Use 實作，它很有參考價值。如果要放進長期生產工作流，就要先評估法律、權限、安全和維護風險。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; 最值得關注的地方，不是「它能不能復刻 Claude Code」，而是它把 Claude Code 類型的 AI 編程工具推向了桌面工作台形態。&lt;/p&gt;
&lt;p&gt;會話、專案、Worktree、Diff、權限、遠端訪問、Computer Use、多模型提供商、定時任務和 token 用量統計都被放進同一個桌面體驗裡。這說明 AI 編程工具的下一步，不只是模型更強，也包括工作流介面更完整。&lt;/p&gt;
&lt;p&gt;不過它的邊界也很清楚：這不是 Anthropic 官方產品，來源存在敏感背景，高權限能力需要謹慎使用。更合適的態度是把它當成一個觀察 AI 編程工具演化方向的專案，而不是無腦替代官方 Claude Code。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 倉庫：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;最新 Release：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/releases/tag/v0.2.6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/releases/tag/v0.2.6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Computer Use 文件：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/blob/main/docs/computer-use.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/blob/main/docs/computer-use.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;第三方模型文件：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha/blob/main/docs/guide/third-party-models.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NanmiCoder/cc-haha/blob/main/docs/guide/third-party-models.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex /goal vs Claude Code /goal：讓長任務自動跑到完成</title>
        <link>https://knightli.com/zh-tw/2026/05/14/codex-goal-vs-claude-code-goal/</link>
        <pubDate>Thu, 14 May 2026 22:25:31 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/14/codex-goal-vs-claude-code-goal/</guid>
        <description>&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 正在變成 AI 編程工具裡的一個重要命令。&lt;/p&gt;
&lt;p&gt;它解決的不是「讓模型多寫幾行程式碼」，而是另一個更實際的問題：當任務有明確完成條件時，能不能讓 Agent 持續推進，直到條件滿足，而不是每完成一輪就停下來等使用者繼續催。&lt;/p&gt;
&lt;p&gt;Codex CLI 已經在官方文件裡加入了實驗性的 &lt;code&gt;/goal&lt;/code&gt;。Claude Code 也上線了自己的 &lt;code&gt;/goal&lt;/code&gt; 文件，而且把它描述成一種可以跨多輪持續工作的自動化能力。兩者名字一樣，但產品取向並不完全一樣。&lt;/p&gt;
&lt;h2 id=&#34;goal-到底解決什麼問題&#34;&gt;&lt;code&gt;/goal&lt;/code&gt; 到底解決什麼問題
&lt;/h2&gt;&lt;p&gt;普通 AI 編程對話通常是「一問一答」：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用者提出任務。&lt;/li&gt;
&lt;li&gt;Agent 分析、改程式碼、跑測試。&lt;/li&gt;
&lt;li&gt;Agent 回報結果。&lt;/li&gt;
&lt;li&gt;使用者再決定下一步。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個流程適合短任務，但遇到遷移、重構、測試修復、issue backlog 清理時，就會變得很碎。Agent 可能每次只推進一小段，然後停下來等你輸入「繼續」。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 的思路是把任務從「下一步做什麼」改成「最終什麼狀態算完成」。例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 完成登录模块迁移，所有 auth 测试通过，lint 无报错
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這類目標天然適合長任務，因為它有清楚的終點：測試通過、建置成功、檔案拆分完成、佇列清空、驗收條件滿足。&lt;/p&gt;
&lt;h2 id=&#34;codex-的-goal實驗功能綁定目前執行緒&#34;&gt;Codex 的 &lt;code&gt;/goal&lt;/code&gt;：實驗功能，綁定目前執行緒
&lt;/h2&gt;&lt;p&gt;OpenAI 的 Codex CLI 文件把 &lt;code&gt;/goal&lt;/code&gt; 標為實驗功能。它不是預設穩定能力，需要先開啟 &lt;code&gt;features.goals&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;開啟方式有兩種：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/experimental
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者在 &lt;code&gt;config.toml&lt;/code&gt; 裡加入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;features&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;goals&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟用後，可以這樣使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal Finish the migration and keep tests green
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal pause
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal resume
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;按照 OpenAI 文件的說法，Codex 會把 goal 附著在目前 active thread 上，在更大的任務執行過程中持續追蹤這個目標。&lt;/p&gt;
&lt;p&gt;這裡要注意一個細節：官方文件對 Codex &lt;code&gt;/goal&lt;/code&gt; 的措辭比較克制。它強調「給長任務設定實驗性目標」「把目標附著到目前執行緒」，但沒有像 Claude Code 文件那樣展開說明每一輪結束後由獨立 evaluator 自動判斷並繼續下一輪。所以現在使用 Codex &lt;code&gt;/goal&lt;/code&gt; 時，最好仍把它看作實驗中的長任務目標機制，而不是完全穩定的無人值守執行模式。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-的-goal完成條件驅動的多輪執行&#34;&gt;Claude Code 的 &lt;code&gt;/goal&lt;/code&gt;：完成條件驅動的多輪執行
&lt;/h2&gt;&lt;p&gt;Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 文件寫得更明確：使用者設定 completion condition 後，Claude 會跨 turn 持續工作，直到條件滿足。&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal all tests in test/auth pass and the lint step is clean
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Claude Code 的機制大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目前 turn 完成後，不直接把控制權還給使用者。&lt;/li&gt;
&lt;li&gt;一個小型快速模型會檢查目標條件是否已經滿足。&lt;/li&gt;
&lt;li&gt;如果沒有滿足，Claude 自動開始下一輪。&lt;/li&gt;
&lt;li&gt;如果滿足，goal 自動清除，並在 transcript 裡記錄完成狀態。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著 Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 更像「按完成條件自動續跑」。它不只是把目標掛在會話裡，而是把「是否繼續下一輪」交給一個獨立評估步驟。&lt;/p&gt;
&lt;p&gt;Claude Code 還支援直接查看狀態：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;狀態裡會顯示目標條件、執行時間、已評估 turn 數、token 消耗，以及 evaluator 最近一次給出的原因。&lt;/p&gt;
&lt;p&gt;如果要提前停止，可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;stop&lt;/code&gt;、&lt;code&gt;off&lt;/code&gt;、&lt;code&gt;reset&lt;/code&gt;、&lt;code&gt;none&lt;/code&gt;、&lt;code&gt;cancel&lt;/code&gt; 也可以作為清除別名。開啟目標後，如果會話中斷，之後透過 &lt;code&gt;--resume&lt;/code&gt; 或 &lt;code&gt;--continue&lt;/code&gt; 恢復時，仍然 active 的 goal 可以被帶回來；但計時、turn 數和 token 基線會重新計算。&lt;/p&gt;
&lt;h2 id=&#34;兩者最大的差異&#34;&gt;兩者最大的差異
&lt;/h2&gt;&lt;p&gt;Codex 和 Claude Code 都在把 AI 編程從「單輪回答」推向「長任務執行」，但 &lt;code&gt;/goal&lt;/code&gt; 的定位有差異。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;對比項&lt;/th&gt;
          &lt;th&gt;Codex CLI &lt;code&gt;/goal&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;Claude Code &lt;code&gt;/goal&lt;/code&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;狀態&lt;/td&gt;
          &lt;td&gt;experimental&lt;/td&gt;
          &lt;td&gt;官方文件單獨成頁說明&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;啟用方式&lt;/td&gt;
          &lt;td&gt;需要開啟 &lt;code&gt;features.goals&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;可直接在受信任 workspace 使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;目標作用域&lt;/td&gt;
          &lt;td&gt;目前 active thread&lt;/td&gt;
          &lt;td&gt;目前 session&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;常用操作&lt;/td&gt;
          &lt;td&gt;set / view / pause / resume / clear&lt;/td&gt;
          &lt;td&gt;set / view / clear&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自動判斷&lt;/td&gt;
          &lt;td&gt;文件強調目標附著與追蹤&lt;/td&gt;
          &lt;td&gt;明確說明每輪後由 evaluator 判斷&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;自動續跑&lt;/td&gt;
          &lt;td&gt;文件表述較克制&lt;/td&gt;
          &lt;td&gt;條件未滿足時自動下一輪&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;適合場景&lt;/td&gt;
          &lt;td&gt;想在 Codex 長任務裡保持目標上下文&lt;/td&gt;
          &lt;td&gt;想按完成條件讓 Claude Code 持續推進&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;簡單說，Codex 的 &lt;code&gt;/goal&lt;/code&gt; 更像「給目前執行緒掛一個實驗性的長期目標」；Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 更像「給目前會話設定一個可驗證的停止條件，讓它自動做到滿足為止」。&lt;/p&gt;
&lt;h2 id=&#34;寫好-goal-的關鍵&#34;&gt;寫好 &lt;code&gt;/goal&lt;/code&gt; 的關鍵
&lt;/h2&gt;&lt;p&gt;不管使用哪一個工具，&lt;code&gt;/goal&lt;/code&gt; 都不適合寫成模糊願望。&lt;/p&gt;
&lt;p&gt;不太好的寫法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 把项目优化一下
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更好的寫法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 将 payment 模块迁移到新 API，npm test -- payment 退出码为 0，git diff 只包含 payment 相关文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一個好目標通常包含三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;明確的完成狀態。&lt;/li&gt;
&lt;li&gt;可執行的驗證方式。&lt;/li&gt;
&lt;li&gt;必須遵守的邊界。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果目標太大，還應該加上停止條件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/goal 修复 eslint 报错，npm run lint 退出码为 0；如果超过 20 轮仍未完成，停止并总结剩余问题
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這很重要。&lt;code&gt;/goal&lt;/code&gt; 越強，越需要邊界。否則 Agent 可能會為了追求「完成」而改動過多檔案、跑太久、消耗太多 token，甚至把原本該停下來詢問的問題繼續往前推。&lt;/p&gt;
&lt;h2 id=&#34;什麼時候適合用-goal&#34;&gt;什麼時候適合用 &lt;code&gt;/goal&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;測試修復：直到指定測試通過。&lt;/li&gt;
&lt;li&gt;程式碼遷移：直到所有呼叫點改完並編譯成功。&lt;/li&gt;
&lt;li&gt;批量清理：直到某類 lint 或型別錯誤清零。&lt;/li&gt;
&lt;li&gt;文件補齊：直到所有指定模組都有說明。&lt;/li&gt;
&lt;li&gt;issue 佇列處理：直到某個標籤下的問題都被處理或明確分類。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求本身還沒想清楚。&lt;/li&gt;
&lt;li&gt;需要頻繁產品判斷。&lt;/li&gt;
&lt;li&gt;涉及高風險刪除、資料遷移或權限變更。&lt;/li&gt;
&lt;li&gt;驗收條件只能靠主觀判斷。&lt;/li&gt;
&lt;li&gt;任務會跨越大量無關模組。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個實用原則是：如果你能寫出「跑哪個命令、看到什麼結果、哪些檔案不能碰」，就適合用 &lt;code&gt;/goal&lt;/code&gt;。如果只能寫「幫我做得更好」，那還是先用普通對話、計畫模式或人工評審更穩。&lt;/p&gt;
&lt;h2 id=&#34;對-ai-編程工具的影響&#34;&gt;對 AI 編程工具的影響
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; 代表一個很明顯的方向：AI 編程工具正在從「互動式助手」變成「可持續執行的工作單元」。&lt;/p&gt;
&lt;p&gt;過去我們讓 Agent 做任務，經常要在旁邊守著。它卡住了要提示，測完了要繼續，報錯了要再下命令。&lt;code&gt;/goal&lt;/code&gt; 把這部分互動壓縮成一個完成條件，讓 Agent 自己決定下一輪該做什麼。&lt;/p&gt;
&lt;p&gt;但這也帶來新的要求。以後寫 prompt 不只是描述任務，還要寫驗收條件、驗證命令、修改邊界和停止規則。換句話說，使用者的工作從「催它繼續」變成「定義什麼叫完成」。&lt;/p&gt;
&lt;p&gt;Codex 和 Claude Code 走到 &lt;code&gt;/goal&lt;/code&gt; 這一步，說明長任務 Agent 已經不再只是背景任務或雲端佇列的專利。終端裡的本地編程工具，也開始需要更強的自主推進能力。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Codex CLI 和 Claude Code 都有了 &lt;code&gt;/goal&lt;/code&gt;，但現階段不要把它們簡單看成同一個功能。&lt;/p&gt;
&lt;p&gt;Codex 的 &lt;code&gt;/goal&lt;/code&gt; 仍是實驗能力，需要開啟 &lt;code&gt;features.goals&lt;/code&gt;，更適合在 Codex 目前執行緒裡維持長期目標。Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 則更明確地把「完成條件」和「自動續跑」連在一起，透過獨立 evaluator 判斷是否繼續。&lt;/p&gt;
&lt;p&gt;對日常開發來說，這類命令最適合處理有明確驗收標準的工程任務。它不會替代需求判斷，也不會消除程式碼審查，但能減少長任務裡大量重複的「繼續」「再跑一次」「修到測試通過」。&lt;/p&gt;
&lt;p&gt;真正要學會的不是某個命令本身，而是如何把任務寫成清楚、可驗證、可停止的目標。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI Codex CLI Slash Commands：&lt;a class=&#34;link&#34; href=&#34;https://developers.openai.com/codex/cli/slash-commands&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://developers.openai.com/codex/cli/slash-commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Goal 文件：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/goal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/goal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 連接 Fusion 360：用 AI 修改 STEP 模型的一個實例</title>
        <link>https://knightli.com/zh-tw/2026/05/14/claude-fusion-360-mcp-step-model-edit/</link>
        <pubDate>Thu, 14 May 2026 20:58:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/14/claude-fusion-360-mcp-step-model-edit/</guid>
        <description>&lt;p&gt;Claude 連接 Fusion 360 之後，可以不只是「講思路」，而是直接參與 CAD 模型修改。一個典型場景是：打開已有的 STEP 檔案，讓 Claude 讀取當前模型、分析結構衝突、規劃尺寸，再透過 Fusion 外掛執行建模修改。&lt;/p&gt;
&lt;p&gt;下面用一個行星齒輪分度器的修改過程，整理 Claude + Fusion 360 的基本使用方法。&lt;/p&gt;
&lt;h2 id=&#34;先啟用-fusion-360-的-apimcp-服務&#34;&gt;先啟用 Fusion 360 的 API/MCP 服務
&lt;/h2&gt;&lt;p&gt;在 Fusion 360 裡先做一次基礎設定：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開右上角的 &lt;code&gt;Preferences&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;進入 &lt;code&gt;General&lt;/code&gt; 或「通用」設定。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;API&lt;/code&gt; 選項。&lt;/li&gt;
&lt;li&gt;打開 MCP server。&lt;/li&gt;
&lt;li&gt;記下端口號，預設示例是 &lt;code&gt;27182&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然後回到 Claude，進入 &lt;code&gt;Connectors&lt;/code&gt;，找到 Fusion 連接器，填入 Fusion 360 的地址和端口。端口一般使用預設的 &lt;code&gt;27182&lt;/code&gt; 即可。&lt;/p&gt;
&lt;p&gt;連接成功後，Claude 就可以透過 Fusion 插件和當前打開的模型互動。&lt;/p&gt;
&lt;h2 id=&#34;打開-step-檔案並明確修改目標&#34;&gt;打開 STEP 檔案並明確修改目標
&lt;/h2&gt;&lt;p&gt;這次要修改的是行星齒輪分度器裡的一個齒輪。原始設計裡，這個齒輪透過一顆螺絲作為中心軸固定在支架上。&lt;/p&gt;
&lt;p&gt;目標是把它改成軸承結構：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中心孔需要適配軸承；&lt;/li&gt;
&lt;li&gt;周圍螺絲孔不能和擴大的中心孔干涉；&lt;/li&gt;
&lt;li&gt;支架上的自攻螺絲孔位也要調整為適合軸承旋轉的軸心結構；&lt;/li&gt;
&lt;li&gt;最終模型要能導入切片軟體並用於 3D 列印。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡的關鍵是，不要只告訴 Claude「幫我改一下」。要把用途、裝配方式、材料和製造工藝說清楚。&lt;/p&gt;
&lt;h2 id=&#34;claude-可以透過截圖理解當前模型&#34;&gt;Claude 可以透過截圖理解當前模型
&lt;/h2&gt;&lt;p&gt;之前有人會擔心 Fusion 插件只能執行命令，不能讓 Claude 看到模型。實際測試裡，Claude 可以透過截圖方式識別當前模型狀態。&lt;/p&gt;
&lt;p&gt;在這個案例裡，Claude 能看到齒輪結構，並完成幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;識別齒輪和中心孔；&lt;/li&gt;
&lt;li&gt;測量或估算相關尺寸；&lt;/li&gt;
&lt;li&gt;推薦軸承尺寸；&lt;/li&gt;
&lt;li&gt;判斷哪些結構會影響軸承安裝；&lt;/li&gt;
&lt;li&gt;發現中心孔擴大後，周圍螺絲孔可能發生幾何干涉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一步很重要。它說明 Claude 不只是按文字指令盲改，而是可以結合當前模型視圖做結構判斷。&lt;/p&gt;
&lt;h2 id=&#34;材料和加工方式必須提前說明&#34;&gt;材料和加工方式必須提前說明
&lt;/h2&gt;&lt;p&gt;如果模型最終用於 3D 列印，必須明確告訴 Claude 材料和工藝。&lt;/p&gt;
&lt;p&gt;例如使用 PLA 列印時，軸承孔不能完全按 CNC 金屬加工的公差來設計。直徑為 6mm 的軸承，如果需要壓入配合，可以考慮把孔徑設為約 &lt;code&gt;6.1mm&lt;/code&gt;。這個尺寸是否合適，還要結合列印機精度、材料收縮、切片參數和實際測試調整。&lt;/p&gt;
&lt;p&gt;如果不說明材料，Claude 可能預設按 CNC 加工思路給尺寸。這樣得到的孔徑對 3D 列印來說可能偏小，後續裝配會很難。&lt;/p&gt;
&lt;p&gt;建議在提示裡寫清楚：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;這個模型用於 FDM 3D 列印，材料是 PLA。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;目標是安裝直徑 6mm 的軸承，需要考慮列印公差和壓入配合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請不要按 CNC 金屬加工公差處理。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;讓-claude-修改齒輪結構&#34;&gt;讓 Claude 修改齒輪結構
&lt;/h2&gt;&lt;p&gt;明確目標後，可以讓 Claude 執行具體修改：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;擴大中心孔；&lt;/li&gt;
&lt;li&gt;調整周圍干涉的螺絲孔；&lt;/li&gt;
&lt;li&gt;增加軸承安裝座；&lt;/li&gt;
&lt;li&gt;對邊緣加倒角；&lt;/li&gt;
&lt;li&gt;保持齒輪主體和關鍵嚙合結構不變。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在這個案例裡，Claude 會先給出規劃，再調用 Fusion 360 完成建模操作。比如它發現原有螺絲孔和中心孔衝突後，會把孔位向外移一點，避免軸承安裝空間被破壞。&lt;/p&gt;
&lt;p&gt;修改完成後，可以檢查模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中心軸承座是否成型；&lt;/li&gt;
&lt;li&gt;周圍孔位是否還保留功能；&lt;/li&gt;
&lt;li&gt;齒輪結構是否被誤傷；&lt;/li&gt;
&lt;li&gt;倒角是否影響裝配；&lt;/li&gt;
&lt;li&gt;是否存在懸空、薄壁或切片風險。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;支架也要一起修改&#34;&gt;支架也要一起修改
&lt;/h2&gt;&lt;p&gt;只改齒輪還不夠。原支架上原本是自攻螺絲安裝孔，如果齒輪中心改為軸承，支架也要配合改成軸承軸心結構。&lt;/p&gt;
&lt;p&gt;可以讓 Claude 對支架執行類似修改：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留整體安裝位置；&lt;/li&gt;
&lt;li&gt;把原來的自攻螺絲孔改為柱狀軸心；&lt;/li&gt;
&lt;li&gt;控制軸心直徑和高度；&lt;/li&gt;
&lt;li&gt;給軸承旋轉預留空間；&lt;/li&gt;
&lt;li&gt;避免和支架其他結構干涉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣列印出來後，齒輪可以順利壓入軸承，支架也能提供新的旋轉中心。最終效果是原本靠螺絲固定的結構，變成更順滑的軸承旋轉結構。&lt;/p&gt;
&lt;h2 id=&#34;導出切片和列印驗證&#34;&gt;導出、切片和列印驗證
&lt;/h2&gt;&lt;p&gt;CAD 修改完成後，還需要進入實際製造流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;從 Fusion 360 導出修改後的模型。&lt;/li&gt;
&lt;li&gt;導入切片軟體。&lt;/li&gt;
&lt;li&gt;檢查孔洞、薄壁、懸垂和支撐。&lt;/li&gt;
&lt;li&gt;列印齒輪和支架。&lt;/li&gt;
&lt;li&gt;實際壓入軸承。&lt;/li&gt;
&lt;li&gt;檢查旋轉是否順滑。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI 修改 CAD 的結果不能只看螢幕上的模型是否漂亮，必須列印驗證。尤其是軸承、孔位、卡扣、齒輪這類機械結構，0.1mm 級別的誤差就可能決定能不能裝上、轉得順不順。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;Claude + Fusion 360 適合做這類任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在已有 STEP 模型上做局部改造；&lt;/li&gt;
&lt;li&gt;調整孔位、倒角、支架、安裝座；&lt;/li&gt;
&lt;li&gt;把螺絲固定改成軸承、卡扣或插銷結構；&lt;/li&gt;
&lt;li&gt;給 3D 列印模型做公差修正；&lt;/li&gt;
&lt;li&gt;快速生成多個改版方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它不適合完全不檢查地直接出最終件。更穩妥的流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;人先定義裝配目標和材料工藝。&lt;/li&gt;
&lt;li&gt;Claude 負責分析結構並提出修改方案。&lt;/li&gt;
&lt;li&gt;Claude 調用 Fusion 執行建模。&lt;/li&gt;
&lt;li&gt;人檢查關鍵尺寸和干涉。&lt;/li&gt;
&lt;li&gt;列印小樣驗證。&lt;/li&gt;
&lt;li&gt;根據實物結果再迭代。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Claude 連接 Fusion 360 的價值，不在於替代 CAD 基礎知識，而在於把「已有模型的局部修改」變得更快。&lt;/p&gt;
&lt;p&gt;只要把目標、材料、尺寸、公差和裝配方式說清楚，它可以幫你讀模型、找干涉、改結構、加倒角，再把模型推進到可列印狀態。對於 3D 列印、開源機械件改造和個人工作室的小批量迭代來說，這類 AI CAD 工作流已經很實用。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 怎麼接入國產大模型？用 CCX 統一管理 OpenAI 相容 API</title>
        <link>https://knightli.com/zh-tw/2026/05/13/ccx-ai-api-proxy-gateway/</link>
        <pubDate>Wed, 13 May 2026 23:20:40 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/13/ccx-ai-api-proxy-gateway/</guid>
        <description>&lt;p&gt;CCX 是一個 AI API 代理與協定轉換閘道。它把 Claude Messages、OpenAI Chat Completions、OpenAI Images、Codex Responses 和 Gemini API 放到同一個服務入口下，同時提供 Web 管理介面，用來配置渠道、金鑰、模型映射、優先級、故障轉移和流量監控。&lt;/p&gt;
&lt;p&gt;如果你平時同時使用 Claude、OpenAI、Gemini、Codex，或維護多個相容 OpenAI API 的上游服務，CCX 的價值就在於統一入口和統一管理。客戶端只需要連接一個服務地址，後面的上游渠道由 CCX 負責調度。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ccx-解決什麼問題&#34;&gt;CCX 解決什麼問題
&lt;/h2&gt;&lt;p&gt;多個 AI API 混用時，最容易遇到幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每個供應商的介面路徑、鑑權方式、請求格式都不一樣。&lt;/li&gt;
&lt;li&gt;同一類模型可能有多個上游，需要手動切換 base URL 和 API key。&lt;/li&gt;
&lt;li&gt;某個 key 或渠道失敗後，客戶端通常不會自動換備用渠道。&lt;/li&gt;
&lt;li&gt;團隊使用時，很難集中管理模型白名單、代理、自訂請求標頭和呼叫日誌。&lt;/li&gt;
&lt;li&gt;想同時接 Claude、Gemini、OpenAI Chat、圖像介面和 Codex Responses 時，配置會越來越分散。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CCX 的思路是把這些差異收斂到一個代理層。前端工具、腳本或業務服務只存取 CCX；CCX 再根據介面類型、模型、渠道狀態、優先級和健康情況，把請求轉發到合適的上游。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些介面&#34;&gt;支援哪些介面
&lt;/h2&gt;&lt;p&gt;CCX 對外提供一個統一後端入口，預設連接埠是 &lt;code&gt;3000&lt;/code&gt;。主要路徑包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /                         -&amp;gt; Web 管理介面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /health                   -&amp;gt; 健康檢查
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/api/*                         -&amp;gt; 管理 API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/messages              -&amp;gt; Claude Messages 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/chat/completions      -&amp;gt; OpenAI Chat 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/responses             -&amp;gt; Codex Responses 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/generations    -&amp;gt; OpenAI Images 生成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/edits          -&amp;gt; OpenAI Images 編輯
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/images/variations     -&amp;gt; OpenAI Images 變體
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /v1/models                -&amp;gt; 模型清單
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1beta/models/*          -&amp;gt; Gemini 代理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是說，它不是只代理一種協定，而是把常見 AI API 分成 Messages、Chat、Responses、Gemini、Images 幾類渠道分別管理。不同協定之間不會共用同一套健康狀態和日誌空間，這對排查問題很重要。&lt;/p&gt;
&lt;h2 id=&#34;架構思路&#34;&gt;架構思路
&lt;/h2&gt;&lt;p&gt;CCX 使用 Go 後端加 Vue 3 前端。前端建置產物會嵌入後端二進位檔，因此可以做單連接埠部署：同一個服務既提供 Web UI，也提供管理 API 和代理 API。&lt;/p&gt;
&lt;p&gt;一次請求大致會經過這樣的鏈路：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Client -&amp;gt; Auth Middleware -&amp;gt; Route Handler -&amp;gt; Channel Scheduler -&amp;gt; Provider / Converter -&amp;gt; Upstream API -&amp;gt; Metrics / Channel Logs -&amp;gt; Client Response
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;幾個核心模組的分工可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;handlers&lt;/code&gt;：接收不同協定的請求和管理操作。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;providers&lt;/code&gt;：封裝上游 API 的請求和回應處理。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;converters&lt;/code&gt;：處理 Responses 等場景下的協定轉換。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scheduler&lt;/code&gt;：根據優先級、促銷期、健康狀態、熔斷狀態和會話親和性選擇渠道。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics&lt;/code&gt;：記錄請求量、成功率、延遲、日誌和熔斷狀態。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config&lt;/code&gt;：維護執行時配置，支援熱重載和備份。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個設計的重點不是「把所有介面強行變成一種格式」，而是按協定類型分別代理，再在管理、調度、日誌和認證層做統一。&lt;/p&gt;
&lt;h2 id=&#34;ccx-和-codexbridge-有什麼區別&#34;&gt;CCX 和 CodexBridge 有什麼區別
&lt;/h2&gt;&lt;p&gt;CCX 和 CodexBridge 都和 Codex、OpenAI 相容介面有關，但它們解決的問題不一樣。&lt;/p&gt;
&lt;p&gt;CodexBridge 更像一個專門的 Codex 橋接器。它的核心目標是把 Codex CLI/SDK 封裝成 OpenAI 相容的 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 服務，讓 OpenWebUI、Cherry Studio、腳本或其他 OpenAI 相容客戶端可以呼叫本地 Codex。也就是說，CodexBridge 的重點是「把 Codex 接出來」。&lt;/p&gt;
&lt;p&gt;CCX 更像一個統一 AI API 閘道。它不只處理 Codex Responses，還同時支援 Claude Messages、OpenAI Chat、OpenAI Images 和 Gemini API，並提供 Web 管理介面、渠道優先級、故障轉移、日誌監控和多 key 管理。也就是說，CCX 的重點是「把多個模型和多個供應商統一管起來」。&lt;/p&gt;
&lt;p&gt;簡單對比：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;對比項&lt;/th&gt;
          &lt;th&gt;CodexBridge&lt;/th&gt;
          &lt;th&gt;CCX&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;核心定位&lt;/td&gt;
          &lt;td&gt;Codex 本地橋接器&lt;/td&gt;
          &lt;td&gt;多協定 AI API 閘道&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要目標&lt;/td&gt;
          &lt;td&gt;讓 Codex 變成 OpenAI 相容介面&lt;/td&gt;
          &lt;td&gt;統一管理 Claude、OpenAI、Gemini、Codex 等渠道&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;管理介面&lt;/td&gt;
          &lt;td&gt;側重 API 服務本身&lt;/td&gt;
          &lt;td&gt;提供 Web 管理介面&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多渠道調度&lt;/td&gt;
          &lt;td&gt;不是重點&lt;/td&gt;
          &lt;td&gt;支援渠道優先級、故障轉移和日誌監控&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;適合場景&lt;/td&gt;
          &lt;td&gt;本機或單服務呼叫 Codex&lt;/td&gt;
          &lt;td&gt;團隊、多 key、多供應商、多協定統一入口&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是想把 Codex 接進 OpenWebUI 或 Cherry Studio，CodexBridge 更直接；如果想同時管理 Codex、Claude、Gemini、DeepSeek、Qwen、Kimi 等多個上游，CCX 更合適。&lt;/p&gt;
&lt;h2 id=&#34;快速部署&#34;&gt;快速部署
&lt;/h2&gt;&lt;p&gt;最簡單的方式是下載二進位檔。下載後，在同目錄建立 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_WEB_UI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動後存取：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:3000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果在 Windows 下從 WSL、Docker、PowerShell 或其他環境存取 &lt;code&gt;localhost&lt;/code&gt; 不通，可以改用 Windows 主機的區域網路 IPv4 地址，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://192.168.1.23:3000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CCX 預設透過 &lt;code&gt;:PORT&lt;/code&gt; 監聽所有網卡地址，所以暴露到區域網路時要注意存取控制。&lt;/p&gt;
&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署
&lt;/h2&gt;&lt;p&gt;Docker 方式適合長期執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ccx &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 3000:3000 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pwd&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;/.config:/app/.config &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  crpi-i19l8zl0ugidq97v.cn-hangzhou.personal.cr.aliyuncs.com/bene/ccx:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果倉庫裡已經有 &lt;code&gt;docker-compose.yml&lt;/code&gt;，也可以直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要自動更新時，可以疊加 Watchtower 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml -f docker-compose.watchtower.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;部署完成後，&lt;code&gt;.config&lt;/code&gt; 目錄會保存執行時配置和持久化資料，建議掛載到宿主機，避免容器重建後配置遺失。&lt;/p&gt;
&lt;h2 id=&#34;原始碼執行&#34;&gt;原始碼執行
&lt;/h2&gt;&lt;p&gt;開發或自訂建置可以走原始碼方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/BenedictKing/ccx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ccx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp backend-go/.env.example backend-go/.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make frontend-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前端單獨開發：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;後端單獨開發：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; backend-go
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;關鍵環境變數&#34;&gt;關鍵環境變數
&lt;/h2&gt;&lt;p&gt;最小可用配置通常包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;production
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_WEB_UI&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-proxy-access-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ADMIN_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your-admin-secret-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;APP_UI_LANGUAGE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;zh-CN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;REQUEST_TIMEOUT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;300000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt; 用於代理 API，是必須修改的金鑰。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt; 用於 Web 管理介面和 &lt;code&gt;/api/*&lt;/code&gt;，建議和代理金鑰分開。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENABLE_WEB_UI&lt;/code&gt; 控制是否啟用管理介面。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REQUEST_TIMEOUT&lt;/code&gt; 控制請求逾時時間，長上下文或圖像任務可以適當調大。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt; 控制日誌級別，生產環境一般用 &lt;code&gt;info&lt;/code&gt; 或 &lt;code&gt;warn&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果需要限制請求體大小，可以關注：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MAX_REQUEST_BODY_SIZE_MB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;圖像編輯、base64 圖片、多模態請求都可能讓請求體變大。&lt;/p&gt;
&lt;h2 id=&#34;渠道編排和故障轉移&#34;&gt;渠道編排和故障轉移
&lt;/h2&gt;&lt;p&gt;CCX 的管理介面可以配置多個渠道，並為每個渠道設定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上游服務類型。&lt;/li&gt;
&lt;li&gt;API key 或多 key 輪換。&lt;/li&gt;
&lt;li&gt;代理地址。&lt;/li&gt;
&lt;li&gt;自訂請求標頭。&lt;/li&gt;
&lt;li&gt;模型白名單。&lt;/li&gt;
&lt;li&gt;路由前綴。&lt;/li&gt;
&lt;li&gt;優先級。&lt;/li&gt;
&lt;li&gt;健康檢查與熔斷恢復。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;調度時會綜合考慮渠道狀態、優先級、促銷期、Trace 親和性、熔斷狀態和可用 key。簡單理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正常情況下，優先級高的渠道先被使用。&lt;/li&gt;
&lt;li&gt;某個渠道失敗後，可以故障轉移到備用渠道。&lt;/li&gt;
&lt;li&gt;熔斷機制會避免持續打到明顯不可用的上游。&lt;/li&gt;
&lt;li&gt;Trace 親和性會盡量讓同一類會話保持在合適的渠道上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類能力適合有多個 key、多個供應商或多個地區上游的場景。個人輕量使用時，也可以只配置一個渠道，把 CCX 當成帶 Web UI 的代理層。&lt;/p&gt;
&lt;h2 id=&#34;日誌和監控&#34;&gt;日誌和監控
&lt;/h2&gt;&lt;p&gt;CCX 提供渠道指標和請求日誌，可以看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;請求量。&lt;/li&gt;
&lt;li&gt;成功率。&lt;/li&gt;
&lt;li&gt;失敗率。&lt;/li&gt;
&lt;li&gt;平均延遲。&lt;/li&gt;
&lt;li&gt;按模型統計的歷史資料。&lt;/li&gt;
&lt;li&gt;渠道狀態和熔斷情況。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生產環境建議使用相對克制的日誌配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENV&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;production
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;LOG_LEVEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;info
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_REQUEST_LOGS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENABLE_RESPONSE_LOGS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣可以保留基本請求資訊，又避免把完整回應內容寫入日誌。排查問題時可以臨時打開更詳細的日誌，但完成後應恢復，尤其不要在生產環境長期輸出請求體和回應體。&lt;/p&gt;
&lt;h2 id=&#34;安全建議&#34;&gt;安全建議
&lt;/h2&gt;&lt;p&gt;CCX 是代理閘道，裡面會保存上游 API key，所以部署時不要只追求「能跑起來」。至少要注意這些點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要使用預設或過短的 &lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;建議單獨設定 &lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要把 Web 管理介面直接暴露到公網。&lt;/li&gt;
&lt;li&gt;如果必須公網存取，建議放在反向代理、VPN、存取控制或單點登入之後。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;、&lt;code&gt;.config&lt;/code&gt;、日誌檔案都不要提交到 Git 倉庫。&lt;/li&gt;
&lt;li&gt;生產環境不要長期啟用完整請求體和回應體日誌。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以用下面的方式產生隨機金鑰：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PROXY_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;openssl rand -base64 32&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ADMIN_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;openssl rand -base64 32&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;適合誰使用&#34;&gt;適合誰使用
&lt;/h2&gt;&lt;p&gt;CCX 更適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同時維護 Claude、OpenAI、Gemini、Codex 或圖像介面。&lt;/li&gt;
&lt;li&gt;有多個 API key，需要輪換、分流和故障轉移。&lt;/li&gt;
&lt;li&gt;想用 Web UI 管理上游渠道，而不是手動改配置檔。&lt;/li&gt;
&lt;li&gt;想觀察每個渠道的成功率、延遲和請求日誌。&lt;/li&gt;
&lt;li&gt;想給團隊提供一個統一 AI API 入口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是本機偶爾呼叫一個模型，直接用官方 SDK 或單一 OpenAI 相容代理會更簡單。CCX 的優勢主要在多渠道、多協定和統一維運。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;CCX 的定位是 AI API 閘道，而不是某個模型的客戶端。它把 Claude Messages、OpenAI Chat、OpenAI Images、Codex Responses 和 Gemini 放到一個代理層裡，並提供渠道編排、故障轉移、日誌監控和 Web 管理介面。&lt;/p&gt;
&lt;p&gt;對個人使用者來說，它可以減少切換 API 地址和金鑰的麻煩；對團隊或長期執行的服務來說，它更像一個輕量級 AI 閘道。真正上線前，重點不只是配置模型，還要配置好金鑰、管理入口、日誌級別、渠道優先級和故障轉移策略。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;架構說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx/blob/main/ARCHITECTURE.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx/blob/main/ARCHITECTURE.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;環境變數說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx/blob/main/ENVIRONMENT.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/BenedictKing/ccx/blob/main/ENVIRONMENT.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 怎麼接入國產大模型？OpenAI 相容介面與 CodexBridge 使用思路</title>
        <link>https://knightli.com/zh-tw/2026/05/13/codexbridge-openai-compatible-api/</link>
        <pubDate>Wed, 13 May 2026 23:08:28 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/13/codexbridge-openai-compatible-api/</guid>
        <description>&lt;p&gt;CodexBridge 是一個本地橋接工具，目標很直接：把 Codex CLI/SDK 封裝成 OpenAI 相容的 HTTP 服務。這樣一來，原本只能在終端機裡使用的 Codex，可以被 OpenWebUI、Cherry Studio、腳本、自動化系統，或任何相容 OpenAI Chat Completions 的客戶端呼叫。&lt;/p&gt;
&lt;p&gt;它提供的核心介面是 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 和 &lt;code&gt;/v1/models&lt;/code&gt;。前者負責對話，支援一般同步回傳和 SSE 串流輸出；後者讓客戶端能像讀取模型清單一樣發現可用模型。對已經接過 OpenAI API 的工具來說，這種設計的好處是改動小，通常只需要改 base URL、API key 和模型名稱。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/begonia599/CodexBridge&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;CodexBridge 適合想把 Codex 接入現有 AI 客戶端或工作流程的人。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在 OpenWebUI、Cherry Studio 裡直接選擇 Codex 模型。&lt;/li&gt;
&lt;li&gt;想用 &lt;code&gt;curl&lt;/code&gt;、Python、Node.js 等腳本呼叫本機 Codex。&lt;/li&gt;
&lt;li&gt;想讓同一個前端同時接 OpenAI、Ollama、其他相容介面和 Codex。&lt;/li&gt;
&lt;li&gt;想保留 Codex 的本地執行緒、沙箱、工作目錄和核准能力。&lt;/li&gt;
&lt;li&gt;想給內部工具提供一個統一的 &lt;code&gt;/v1/chat/completions&lt;/code&gt; 入口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是一個新的大模型，也不是替代 Codex CLI 的完整前端。更準確地說，它是一個轉接層：上游仍然是 Codex，本地橋接器負責把 OpenAI 風格的請求轉換成 Codex 能理解的會話輸入。&lt;/p&gt;
&lt;h2 id=&#34;基本環境&#34;&gt;基本環境
&lt;/h2&gt;&lt;p&gt;執行前需要準備：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 或更高版本。&lt;/li&gt;
&lt;li&gt;已安裝並登入的 Codex CLI。&lt;/li&gt;
&lt;li&gt;npm，或依照自己的習慣換成 pnpm / yarn。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原始碼部署的基本步驟如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/begonia599/CodexBridge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; codexbridge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env .env.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後編輯 &lt;code&gt;.env&lt;/code&gt; 或 &lt;code&gt;.env.local&lt;/code&gt;，設定 API key、預設模型、工作目錄、沙箱模式、網路權限等配置。&lt;/p&gt;
&lt;p&gt;啟動 HTTP 服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run codex:server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設連接埠是 &lt;code&gt;8080&lt;/code&gt;，可以透過 &lt;code&gt;PORT&lt;/code&gt; 修改。服務啟動後，可以存取：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET /health
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POST /v1/chat/completions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET /v1/models
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cli-對話模式&#34;&gt;CLI 對話模式
&lt;/h2&gt;&lt;p&gt;除了 HTTP 服務，CodexBridge 也保留了一個輕量 CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run codex:chat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI 裡可以直接輸入自然語言與 Codex 對話。常用命令有兩個：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/reset&lt;/code&gt;：建立新的 Codex 執行緒。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/exit&lt;/code&gt;：離開 CLI。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前執行緒 ID 會保存在 &lt;code&gt;.codex_thread.json&lt;/code&gt;。下次啟動 CLI 時，如果這個檔案還在，就能繼續之前的對話。&lt;/p&gt;
&lt;h2 id=&#34;http-呼叫範例&#34;&gt;HTTP 呼叫範例
&lt;/h2&gt;&lt;p&gt;最基本的請求可以這樣寫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:8080/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;content-type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;authorization: Bearer 123321&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;model&amp;#34;:&amp;#34;gpt-5-codex:medium&amp;#34;,&amp;#34;session_id&amp;#34;:&amp;#34;demo&amp;#34;,&amp;#34;messages&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;content&amp;#34;:&amp;#34;ls&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡有幾個點需要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;authorization&lt;/code&gt; 裡的 token 要和 &lt;code&gt;CODEX_BRIDGE_API_KEY&lt;/code&gt; 一致。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt; 可以帶推理等級，例如 &lt;code&gt;gpt-5-codex:medium&lt;/code&gt; 或 &lt;code&gt;gpt-5-codex:high&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt; 用來綁定會話，方便複用同一個 Codex 執行緒。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果需要串流輸出，加上 &lt;code&gt;stream: true&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -N http://localhost:8080/v1/chat/completions &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;content-type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;authorization: Bearer 123321&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;model&amp;#34;:&amp;#34;gpt-5-codex:high&amp;#34;,&amp;#34;session_id&amp;#34;:&amp;#34;stream&amp;#34;,&amp;#34;stream&amp;#34;:true,&amp;#34;messages&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;user&amp;#34;,&amp;#34;content&amp;#34;:&amp;#34;一步步介紹如何建立 Node.js 專案&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;對支援 OpenAI 串流回應的客戶端來說，這種回傳方式更接近正常聊天體驗。&lt;/p&gt;
&lt;h2 id=&#34;會話持久化怎麼做&#34;&gt;會話持久化怎麼做
&lt;/h2&gt;&lt;p&gt;CodexBridge 的一個重點是會話映射。請求裡可以透過這些欄位傳入會話 ID：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;conversation_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thread_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也可以從請求標頭傳：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;x-session-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-conversation-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-thread-id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-user-id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生產環境建議開啟：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_REQUIRE_SESSION_ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣所有請求都必須帶會話 ID，避免不同使用者或不同聊天視窗混到同一個臨時上下文裡。會話映射保存在 &lt;code&gt;.codex_threads.json&lt;/code&gt;，刪除這個檔案可以重設橋接層的映射關係；Codex 自身執行緒仍然保存在 &lt;code&gt;~/.codex/sessions&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;CODEX_REQUIRE_SESSION_ID=false&lt;/code&gt; 且請求沒有提供會話 ID，橋接器會把目前 &lt;code&gt;messages&lt;/code&gt; 展開成一次性輸入發給 Codex。這種方式適合臨時呼叫，但不適合長期對話。&lt;/p&gt;
&lt;h2 id=&#34;多模態輸入&#34;&gt;多模態輸入
&lt;/h2&gt;&lt;p&gt;CodexBridge 支援 OpenAI 風格的內容區塊，並會把圖片轉換成 Codex 可用的 &lt;code&gt;local_image&lt;/code&gt; 輸入。&lt;/p&gt;
&lt;p&gt;遠端圖片可以寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;image_url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;image_url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://example.com/demo.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本地圖片可以寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;./images/demo.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;遠端資源會先下載到暫存目錄，回合結束後清理。實際使用時要注意請求體大小，尤其是把圖片轉成 base64 傳送時，可能需要增大 &lt;code&gt;CODEX_JSON_LIMIT&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;結構化輸出&#34;&gt;結構化輸出
&lt;/h2&gt;&lt;p&gt;如果客戶端支援 &lt;code&gt;response_format&lt;/code&gt;，可以讓 CodexBridge 映射到 Codex 的 &lt;code&gt;outputSchema&lt;/code&gt;。這適合讓 Codex 回傳固定 JSON 結構，例如檢查結果、摘要、分類結果或自動化任務報告。&lt;/p&gt;
&lt;p&gt;最小思路是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gpt-5-codex&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;session_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lint&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;response_format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;json_schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;json_schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;lint_report&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nt&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;#34;enum&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;action_required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;additionalProperties&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;檢查 src/ 的 lint 問題，並以 JSON 回傳結果&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要注意，&lt;code&gt;type: &amp;quot;json_schema&amp;quot;&lt;/code&gt; 必須提供 &lt;code&gt;schema&lt;/code&gt;，否則服務會直接回傳 400。&lt;/p&gt;
&lt;h2 id=&#34;關鍵環境變數&#34;&gt;關鍵環境變數
&lt;/h2&gt;&lt;p&gt;常用配置可以分成幾類。&lt;/p&gt;
&lt;p&gt;服務與鑑權：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_BRIDGE_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;123321&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_JSON_LIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10mb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_MODEL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;gpt-5-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_REASONING&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;medium
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Codex 執行環境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_WORKDIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SANDBOX_MODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;read-only
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_APPROVAL_POLICY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;never
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SKIP_GIT_CHECK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;網路能力：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_NETWORK_ACCESS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_WEB_SEARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是給前端聊天用，預設關閉網路更穩。只有明確需要讓 Codex 執行 &lt;code&gt;curl&lt;/code&gt;、&lt;code&gt;git clone&lt;/code&gt; 或使用 Web 搜尋時，再單獨打開對應開關。&lt;/p&gt;
&lt;h2 id=&#34;docker-和一鍵腳本&#34;&gt;Docker 和一鍵腳本
&lt;/h2&gt;&lt;p&gt;專案也提供 Docker 方式，適合想把服務常駐起來的場景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose logs -f codexbridge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以用專案提供的 Linux 安裝腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/begonia599/CodexBridge/master/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;腳本會安裝依賴、clone 或更新倉庫、複製 &lt;code&gt;.env.example&lt;/code&gt;，並透過 Docker Compose 啟動服務。它需要 &lt;code&gt;sudo&lt;/code&gt; 權限，適合在乾淨伺服器上快速部署。已經有複雜 Node.js、Docker 或 Codex 環境的機器，建議先讀腳本內容再執行。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;請求回傳 413&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;通常是請求體太大，常見於 base64 圖片。可以增大：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_JSON_LIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;20mb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;提示 API key 無效&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;檢查請求標頭是否帶了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Authorization: Bearer &amp;lt;你的 CODEX_BRIDGE_API_KEY&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者使用 &lt;code&gt;x-api-key&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex 回報 Git 倉庫限制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果執行目錄不是可信倉庫，可能會觸發 Codex 的檢查。只在確認安全的環境中使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-env&#34; data-lang=&#34;env&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CODEX_SKIP_GIT_CHECK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;想清空會話&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;橋接層會話映射在 &lt;code&gt;.codex_threads.json&lt;/code&gt;，Codex 自身執行緒在 &lt;code&gt;~/.codex/sessions&lt;/code&gt;。停掉服務後刪除對應檔案或目錄即可重設。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;本地試用時，可以先用預設 API key 和 &lt;code&gt;read-only&lt;/code&gt; 沙箱跑通流程。確認 OpenWebUI、Cherry Studio 或腳本能正常呼叫後，再逐步調整 &lt;code&gt;CODEX_WORKDIR&lt;/code&gt;、&lt;code&gt;CODEX_SANDBOX_MODE&lt;/code&gt;、&lt;code&gt;CODEX_NETWORK_ACCESS&lt;/code&gt; 和 &lt;code&gt;CODEX_APPROVAL_POLICY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果要給多人使用，建議至少做三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;強制要求 &lt;code&gt;session_id&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;修改預設 API key。&lt;/li&gt;
&lt;li&gt;明確限制工作目錄和沙箱權限。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CodexBridge 的價值不在於功能複雜，而在於把 Codex 放進了現有 OpenAI 相容生態裡。只要客戶端能改 base URL，它就有機會把 Codex 當成一個普通聊天模型來接入，同時保留本地執行緒、沙箱和工具呼叫這些 Codex 自身的能力。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Sulphur 2 能在 8G 顯存上跑嗎？LTX 2.3 影片模型本地部署記錄</title>
        <link>https://knightli.com/zh-tw/2026/05/12/sulphur-2-ltx-2-3-video-generation/</link>
        <pubDate>Tue, 12 May 2026 22:12:45 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/12/sulphur-2-ltx-2-3-video-generation/</guid>
        <description>&lt;p&gt;SulphurAI 在 Hugging Face 上發布了 &lt;code&gt;Sulphur-2-base&lt;/code&gt;。從模型卡資訊來看，Sulphur 2 是一個基於 LTX 2.3 的影片生成模型，定位是 uncensored video generation model，原生支援文生影片、圖生影片，也相容 LTX 2.3 的其他格式。&lt;/p&gt;
&lt;p&gt;模型地址：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/SulphurAI/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/SulphurAI/Sulphur-2-base&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-是什麼&#34;&gt;Sulphur 2 是什麼
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的重點不是做通用聊天，而是圍繞影片生成工作流提供模型權重和相關工具。模型卡裡的核心資訊可以概括為幾點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基於 LTX 2.3。&lt;/li&gt;
&lt;li&gt;支援 text-to-video 和 image-to-video。&lt;/li&gt;
&lt;li&gt;提供用於提示詞最佳化的 prompt enhancer。&lt;/li&gt;
&lt;li&gt;Hugging Face 頁面提供 Diffusers、llama.cpp、Ollama、LM Studio、Jan 等入口。&lt;/li&gt;
&lt;li&gt;頁面顯示模型檔案包含 GGUF 相關內容，方便部分本地工具載入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，它更像是面向影片生成玩家和工作流作者的模型發布，而不是普通使用者開箱即用的網頁產品。&lt;/p&gt;
&lt;h2 id=&#34;sulphur-2-和-ltx-23-的關係&#34;&gt;Sulphur 2 和 LTX 2.3 的關係
&lt;/h2&gt;&lt;p&gt;理解 Sulphur 2，最好先把它放回 LTX 2.3 的生態裡看。&lt;/p&gt;
&lt;p&gt;LTX 2.3 是底層影片生成模型路線，決定了它支援哪些輸入形式、模型組件和工作流結構。Sulphur 2 則是在這個基礎上發布的一個變體，重點是把文生影片、圖生影片和相關工作流整合到一起。&lt;/p&gt;
&lt;p&gt;所以 Sulphur 2 不是一個完全獨立的新工具，也不是普通聊天模型。它更像是 LTX 2.3 生態裡的一個模型包：你仍然需要選擇合適的前端、節點、權重版本和參數，才能真正跑出影片。&lt;/p&gt;
&lt;p&gt;這也解釋了為什麼它的使用門檻比網頁生成工具高。網頁工具把模型、參數、顯存調度和失敗重試都藏在後端；本地部署則需要自己處理這些細節。&lt;/p&gt;
&lt;h2 id=&#34;為什麼值得關注&#34;&gt;為什麼值得關注
&lt;/h2&gt;&lt;p&gt;LTX 系列本身就以高效影片生成受到關注。Sulphur 2 選擇基於 LTX 2.3，意味著它天然更適合接入已有的 LTX 工作流。對 ComfyUI、Diffusers 或本地推理工具使用者來說，這類模型的價值主要在於可控性和可改造性。&lt;/p&gt;
&lt;p&gt;另一個看點是 prompt enhancer。影片生成對提示詞非常敏感，同樣的主體、鏡頭、動作、風格和品質描述，寫法不同會明顯影響結果。Sulphur 2 把提示詞增強器一起放進生態裡，說明作者希望使用者不只是下載權重，還能更穩定地把普通描述擴展成適合模型理解的提示詞。&lt;/p&gt;
&lt;h2 id=&#34;模型卡裡的使用建議&#34;&gt;模型卡裡的使用建議
&lt;/h2&gt;&lt;p&gt;官方模型卡建議入門時下載 dev 版本，例如 &lt;code&gt;fp8mixed&lt;/code&gt; 或 &lt;code&gt;bf16&lt;/code&gt;，並搭配提供的 distill lora。需要注意的是，模型卡也提醒：如果使用 LoRA，就不要同時再載入完整模型的重複部分，避免工作流裡同時疊加兩套相同能力。&lt;/p&gt;
&lt;p&gt;prompt enhancer 的使用方式更偏本地工具路線。模型卡提到，可以在 LM Studio 的模型目錄裡建立 &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; 這樣的目錄結構，把 &lt;code&gt;gguf&lt;/code&gt; 檔案和 &lt;code&gt;mmproj&lt;/code&gt; 檔案放進去，然後載入提示詞增強器。它不需要 system prompt，直接發送想增強的文字，也可以附帶圖像。&lt;/p&gt;
&lt;h2 id=&#34;本地運行入口&#34;&gt;本地運行入口
&lt;/h2&gt;&lt;p&gt;Hugging Face 頁面給出了一些常見工具入口。比如使用 &lt;code&gt;llama.cpp&lt;/code&gt; 時，可以透過模型倉庫啟動本地服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -hf SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接在終端運行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用 Ollama 的入口則是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run hf.co/SulphurAI/Sulphur-2-base:BF16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些命令更像是 Hugging Face 自動生成的本地載入入口，實際能否順利運行，還要看本機顯存、模型檔案版本、量化格式和對應工具的相容性。影片生成模型通常比純文字模型更吃資源，第一次嘗試時建議先按模型卡推薦的版本和工作流走，不要一開始就混用多個來源的權重。&lt;/p&gt;
&lt;h2 id=&#34;推薦測試環境comfyui--diffusers--gguf-怎麼選&#34;&gt;推薦測試環境：ComfyUI / Diffusers / GGUF 怎麼選
&lt;/h2&gt;&lt;p&gt;如果你只是想最快看到結果，優先看社群是否已經整理好 ComfyUI 工作流。ComfyUI 的好處是可視化強，模型、LoRA、採樣器、解析度、幀數和後處理節點都能擺在同一張圖裡，適合調試影片生成。&lt;/p&gt;
&lt;p&gt;如果你更熟悉 Python，或者想把 Sulphur 2 接到自己的腳本裡，Diffusers 會更適合。它的優點是可重現、可自動化，適合批量測試參數，也方便記錄不同設定下的顯存佔用和生成耗時。&lt;/p&gt;
&lt;p&gt;GGUF、llama.cpp、Ollama、LM Studio 這些入口更適合 prompt enhancer 或文字側組件。不要看到 GGUF 就預設它能完整承擔影片生成流程。影片模型通常還涉及視覺模型、VAE、採樣流程和幀生成組件，GGUF 更多是本地載入和輕量化生態的一部分。&lt;/p&gt;
&lt;p&gt;簡單說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新手先找 ComfyUI 工作流。&lt;/li&gt;
&lt;li&gt;腳本使用者用 Diffusers 做重現和批量測試。&lt;/li&gt;
&lt;li&gt;prompt enhancer 或文字增強器再看 GGUF / LM Studio / Ollama。&lt;/li&gt;
&lt;li&gt;不確定時，優先按模型卡推薦的 dev 版本和 LoRA 搭配走。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;8g-顯存能不能跑要看版本和工作流&#34;&gt;8G 顯存能不能跑？要看版本和工作流
&lt;/h2&gt;&lt;p&gt;8G 顯存能不能跑 Sulphur 2，不能只看模型名字，要看具體版本、量化方式、解析度、幀數、批量大小和工作流。&lt;/p&gt;
&lt;p&gt;一般來說，影片生成比圖片生成更吃顯存，因為它不只是生成一張圖，而是要處理多幀、時間一致性和影片相關的中間狀態。即使模型本身有較輕的版本，工作流裡疊加 LoRA、較高解析度、較長幀數或額外後處理節點，也可能讓 8G 顯存很快爆掉。&lt;/p&gt;
&lt;p&gt;如果只有 8G 顯存，可以從這些方向降低壓力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;優先嘗試 &lt;code&gt;fp8mixed&lt;/code&gt;、量化版本或社群整理的低顯存工作流。&lt;/li&gt;
&lt;li&gt;降低解析度，先用小尺寸確認流程能跑通。&lt;/li&gt;
&lt;li&gt;減少幀數，不要一開始就生成長影片。&lt;/li&gt;
&lt;li&gt;batch size 設為 1。&lt;/li&gt;
&lt;li&gt;暫時關閉不必要的增強節點和後處理節點。&lt;/li&gt;
&lt;li&gt;使用 CPU offload、低顯存模式或框架提供的顯存最佳化選項。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以「8G 顯存也能跑」更準確的說法是：在低顯存版本、較低解析度、較短幀數和精簡工作流下，有機會跑通；但不適合直接期待高解析度、長影片和複雜工作流。&lt;/p&gt;
&lt;h2 id=&#34;prompt-enhancer-怎麼用&#34;&gt;prompt enhancer 怎麼用
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的模型卡特別提到 prompt enhancer。它的作用不是生成影片，而是把普通提示詞改寫成更適合模型理解的提示詞。&lt;/p&gt;
&lt;p&gt;影片提示詞通常要同時描述主體、動作、鏡頭、場景、光線、風格和品質。如果只寫一句很短的描述，模型可能抓不到重點。prompt enhancer 可以把簡短描述擴展成更完整的提示詞，讓後續影片生成更穩定。&lt;/p&gt;
&lt;p&gt;模型卡給出的思路是，在 LM Studio 的模型目錄裡建立 &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; 目錄，把對應的 &lt;code&gt;gguf&lt;/code&gt; 和 &lt;code&gt;mmproj&lt;/code&gt; 檔案放進去，然後載入這個增強器。使用時不需要 system prompt，直接發送想增強的文字，也可以附帶圖像。&lt;/p&gt;
&lt;p&gt;可以把它理解成一個提示詞預處理工具：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;普通描述 -&amp;gt; prompt enhancer -&amp;gt; 更完整的影片生成提示詞 -&amp;gt; Sulphur 2 工作流
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只是測試模型能不能跑，prompt enhancer 不是第一優先級。先把主工作流跑通，再用它改善提示詞，會更容易定位問題。&lt;/p&gt;
&lt;h2 id=&#34;本地部署常見失敗原因&#34;&gt;本地部署常見失敗原因
&lt;/h2&gt;&lt;p&gt;Sulphur 2 這類模型本地部署失敗，通常不是一個原因造成的。比較常見的坑有這些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型版本和工作流不匹配，比如工作流要求 dev 版本，但實際下載了其他權重。&lt;/li&gt;
&lt;li&gt;LoRA 和完整模型重複載入，導致效果異常或顯存佔用過高。&lt;/li&gt;
&lt;li&gt;顯存不足，尤其是在高解析度、長幀數、複雜節點下更明顯。&lt;/li&gt;
&lt;li&gt;工具版本太舊，ComfyUI 節點、Diffusers、Transformers 或 Accelerate 版本不相容。&lt;/li&gt;
&lt;li&gt;缺少 VAE、文字編碼器、mmproj、prompt enhancer 等配套檔案。&lt;/li&gt;
&lt;li&gt;檔案路徑或目錄結構不符合工具要求。&lt;/li&gt;
&lt;li&gt;只複製 Hugging Face 頁面上的命令，沒有確認它對應的是影片生成主流程還是文字側組件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;排查時建議按順序來：先確認模型檔案完整，再確認工作流要求的版本，然後降低解析度和幀數，最後再逐步加 LoRA、prompt enhancer 和後處理節點。一次只改一個變數，最容易定位問題。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;Sulphur 2 比較適合這幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經在玩 LTX、ComfyUI、Diffusers 或本地影片生成工作流。&lt;/li&gt;
&lt;li&gt;想嘗試文生影片、圖生影片，並能接受手動配置模型檔案。&lt;/li&gt;
&lt;li&gt;需要 uncensored 影片生成模型，且理解這類模型的使用邊界。&lt;/li&gt;
&lt;li&gt;想研究 prompt enhancer 如何改善影片提示詞。&lt;/li&gt;
&lt;li&gt;有足夠顯存或願意嘗試量化版本、本地推理工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想快速生成短影片，線上產品仍然更省心。Sulphur 2 更適合願意折騰模型、節點、LoRA、提示詞和本地環境的人。&lt;/p&gt;
&lt;h2 id=&#34;使用時的注意點&#34;&gt;使用時的注意點
&lt;/h2&gt;&lt;p&gt;第一，模型卡資訊還在更新中。作者也提到 README 後續會補充更完整的設定說明和訓練方式，所以具體工作流要以最新模型卡和檔案列表為準。&lt;/p&gt;
&lt;p&gt;第二，不要只看 Hugging Face 頁面上的一條命令就判斷它能直接跑起來。影片生成涉及主模型、VAE、LoRA、提示詞增強器、採樣參數、解析度、幀數和顯存佔用，任何一個環節不匹配都可能失敗。&lt;/p&gt;
&lt;p&gt;第三，uncensored 模型並不等於可以無邊界使用。生成內容仍然需要遵守所在平台、社群和法律規則，尤其是涉及真人、版權角色、未成年人、暴力或隱私內容時，更要謹慎。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Sulphur 2 的定位很清楚：它不是一個聊天模型，而是一個面向 LTX 2.3 影片生成生態的模型發布。它的看點在於支援文生影片和圖生影片，同時把 prompt enhancer、本地工具入口和推薦工作流放在一起。&lt;/p&gt;
&lt;p&gt;對普通使用者來說，它的門檻不低；對本地影片生成玩家來說，它值得加入待測試列表。真正決定體驗的，還是具體工作流、顯存配置、提示詞品質，以及後續 README 和社群範例是否完善。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hugging Face 模型頁：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/SulphurAI/Sulphur-2-base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/SulphurAI/Sulphur-2-base&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FreeDidi 參考頁：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24142.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.freedidi.com/24142.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地執行 DeepSeek 4：Antirez ds4 在 Apple Silicon Mac 上的嘗試</title>
        <link>https://knightli.com/zh-tw/2026/05/11/deepseek-v4-flash-ds4-metal/</link>
        <pubDate>Mon, 11 May 2026 08:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/11/deepseek-v4-flash-ds4-metal/</guid>
        <description>&lt;p&gt;Antirez 開源了一個新專案：&lt;code&gt;ds4&lt;/code&gt;。它不是通用 LLM 框架，而是一個面向 DeepSeek V4 Flash 的本地推理引擎，重點放在 Apple Silicon 和 Metal 後端上。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/antirez/ds4&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ds4-是什麼&#34;&gt;ds4 是什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 的目標很明確：在 Mac 上本地執行 DeepSeek V4 Flash。&lt;/p&gt;
&lt;p&gt;它目前提供三種使用方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;互動式 CLI。&lt;/li&gt;
&lt;li&gt;HTTP server。&lt;/li&gt;
&lt;li&gt;一個實驗性的 Agent 模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從定位看，它更像是一個針對特定模型深度最佳化的推理專案，而不是要取代 &lt;code&gt;llama.cpp&lt;/code&gt;、Ollama 或 vLLM 這類通用工具。&lt;/p&gt;
&lt;h2 id=&#34;為什麼值得關注&#34;&gt;為什麼值得關注
&lt;/h2&gt;&lt;p&gt;這類專案值得看，主要有三個原因。&lt;/p&gt;
&lt;p&gt;第一，作者是 Redis 作者 Antirez。他長期關注底層系統、效能和簡單工具，專案風格通常比較直接。&lt;/p&gt;
&lt;p&gt;第二，DeepSeek V4 Flash 屬於面向高效推理的模型方向。如果本地執行體驗足夠好，對 Mac 使用者來說會很有吸引力。&lt;/p&gt;
&lt;p&gt;第三，&lt;code&gt;ds4&lt;/code&gt; 直接面向 Apple Metal。相比「先支援所有平台，再慢慢最佳化」的路線，它更像是先把一個明確場景做深。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 更適合這幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Apple Silicon Mac。&lt;/li&gt;
&lt;li&gt;想在本地執行 DeepSeek V4 Flash。&lt;/li&gt;
&lt;li&gt;關注 Metal 推理效能。&lt;/li&gt;
&lt;li&gt;願意嘗試 alpha 階段專案。&lt;/li&gt;
&lt;li&gt;想研究輕量推理引擎和模型執行細節。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目標是穩定部署、跨平台執行、OpenAI API 相容生態，現階段它未必是首選。它更適合作為實驗工具和技術觀察對象。&lt;/p&gt;
&lt;h2 id=&#34;使用方式&#34;&gt;使用方式
&lt;/h2&gt;&lt;p&gt;專案 README 給出的基本流程是先建置，再執行。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/antirez/ds4.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ds4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;互動式執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動 HTTP server：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4 --server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./ds4 --agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;具體參數和模型檔案準備方式，建議以倉庫 README 為準，因為專案仍在快速變化。&lt;/p&gt;
&lt;h2 id=&#34;目前的風險&#34;&gt;目前的風險
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 還處在早期階段，使用前要有預期：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能可能不完整。&lt;/li&gt;
&lt;li&gt;參數、模型格式和命令列行為可能變化。&lt;/li&gt;
&lt;li&gt;相容性主要圍繞 Apple Silicon 和 Metal。&lt;/li&gt;
&lt;li&gt;Agent 模式更偏實驗，不適合直接用於生產流程。&lt;/li&gt;
&lt;li&gt;遇到問題時，需要自己閱讀 README、issue 或原始碼排查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，它現在更像「值得動手試的開源實驗」，還不是面向普通使用者的一鍵工具。&lt;/p&gt;
&lt;h2 id=&#34;和通用推理工具的區別&#34;&gt;和通用推理工具的區別
&lt;/h2&gt;&lt;p&gt;通用推理工具通常追求模型格式、平台、後端和 API 的廣泛相容。&lt;code&gt;ds4&lt;/code&gt; 的方向更窄：圍繞 DeepSeek V4 Flash 和 Metal 做本地執行。&lt;/p&gt;
&lt;p&gt;這種選擇有利有弊。&lt;/p&gt;
&lt;p&gt;好處是實作可以更集中，效能和體驗更容易圍繞單一目標最佳化。代價是適用範圍有限，不適合拿來執行各種不同模型，也不適合取代完整的部署平台。&lt;/p&gt;
&lt;p&gt;如果你已經在用 &lt;code&gt;llama.cpp&lt;/code&gt; 或 Ollama，&lt;code&gt;ds4&lt;/code&gt; 可以作為補充測試工具，而不是馬上替換現有工作流。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; 的看點不在「又一個本地大模型工具」，而在於它把範圍收得很窄：DeepSeek V4 Flash、Apple Silicon、Metal、本地推理。&lt;/p&gt;
&lt;p&gt;如果你手上有合適的 Mac，並且願意折騰早期專案，可以關注它後續的效能表現、模型支援方式和 server/agent 能力演進。對於生產環境，建議繼續觀望，等介面和使用方式穩定後再評估。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/antirez/ds4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>AI 編程工具這一輪，DeepSeek 為何成了省錢關鍵？</title>
        <link>https://knightli.com/zh-tw/2026/05/11/deepseek-ai-coding-cost-saving/</link>
        <pubDate>Mon, 11 May 2026 04:59:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/11/deepseek-ai-coding-cost-saving/</guid>
        <description>&lt;p&gt;這一輪 AI 編程工具的競爭，表面上是在比模型能力、插件生態和 agent 自動化程度，真正用起來以後，最先撞上的問題卻是成本。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、OpenClaw、Superpowers 這類工具都很好用，但它們有一個共同特點：一旦進入複雜任務，就會非常吃 token。它們要讀項目、建計劃、調用工具、總結上下文、反覆檢查結果，還可能拉起多個子任務。模型越聰明，工作流越自動化，帳單也越容易悄悄變大。&lt;/p&gt;
&lt;p&gt;所以 DeepSeek 在這一輪裡變得很關鍵，不只是因為它能寫程式碼，而是因為它在長上下文和快取成本上，剛好打中了 AI 編程工具最燒錢的地方。&lt;/p&gt;
&lt;h2 id=&#34;agent-工具為什麼特別費-token&#34;&gt;Agent 工具為什麼特別費 token
&lt;/h2&gt;&lt;p&gt;傳統聊天式編程助手，通常是一問一答。你問一個函式怎麼寫，它回答一段程式碼。這個模式消耗不小，但還算可控。&lt;/p&gt;
&lt;p&gt;Agent 工具不一樣。它不是只回答問題，而是要像一個臨時工程師一樣進入項目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先掃描目錄和關鍵檔案；&lt;/li&gt;
&lt;li&gt;再理解需求和現有架構；&lt;/li&gt;
&lt;li&gt;然後制定計劃；&lt;/li&gt;
&lt;li&gt;修改檔案；&lt;/li&gt;
&lt;li&gt;執行命令或測試；&lt;/li&gt;
&lt;li&gt;根據報錯繼續修；&lt;/li&gt;
&lt;li&gt;最後總結改了什麼。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個過程裡，模型反覆讀取同一批上下文。項目說明、程式碼片段、工具結果、歷史對話、計劃和錯誤日誌都會被塞回上下文。任務稍微複雜一點，幾十萬 token 很快就出去了。&lt;/p&gt;
&lt;p&gt;如果再裝一些更激進的插件，成本會更明顯。比如有些 OpenCode 或 Claude Code 增強工具，會預設組織一整套 agent 團隊。你只是想改一個小功能，它也可能啟動規劃、審查、執行、復盤等多個環節。任務當然顯得更「智慧」，但 token 也會一路往上跑。&lt;/p&gt;
&lt;h2 id=&#34;superpowers-的好處是按需觸發&#34;&gt;Superpowers 的好處是按需觸發
&lt;/h2&gt;&lt;p&gt;Superpowers 這類工具的一個優點，是它不會在所有任務裡都強行拉起完整 agent 流程。&lt;/p&gt;
&lt;p&gt;平時你還是可以讓 Claude Code、OpenCode 或 Codex 按原來的方式工作。只有當你明確調用某個 skill，比如頭腦風暴、寫計劃、執行計劃、做復盤時，它才進入更重的自動化流程。&lt;/p&gt;
&lt;p&gt;這對成本很重要。&lt;/p&gt;
&lt;p&gt;AI 編程不應該所有任務都用重武器。改一行設定、查一個報錯、寫一個小腳本，用普通對話就夠了；只有複雜重構、跨檔案修改、長文件處理、多輪驗證，才值得上完整 agent 流程。&lt;/p&gt;
&lt;p&gt;工具越強，越要學會控制觸發條件。否則自動化越多，浪費越多。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-的關鍵優勢是快取便宜&#34;&gt;DeepSeek 的關鍵優勢是快取便宜
&lt;/h2&gt;&lt;p&gt;DeepSeek 適合接這類 agent 工具，一個很重要的原因是快取命中成本低。&lt;/p&gt;
&lt;p&gt;AI 編程任務裡有大量重複前綴。比如專案背景、系統提示詞、工具說明、檔案內容、前幾輪對話，經常會在後續請求裡反覆出現。如果模型服務支援 prompt cache，這些重複內容命中快取後，成本會明顯下降。&lt;/p&gt;
&lt;p&gt;很多模型的快取命中價只是比未命中便宜一些，比如便宜到三分之一左右。DeepSeek 的優勢在於，命中快取後的價格差距可以大很多。對長上下文、多輪調用、重複讀取項目的 agent 工作流來說，這個差距會直接反映到帳單上。&lt;/p&gt;
&lt;p&gt;也就是說，DeepSeek 不是每一次回答都一定最強，而是在「長任務、多輪任務、反覆讀上下文」的場景裡，成本結構特別適合 AI 編程。&lt;/p&gt;
&lt;h2 id=&#34;長上下文讓-claude-code-更好用&#34;&gt;長上下文讓 Claude Code 更好用
&lt;/h2&gt;&lt;p&gt;把 Claude Code 或類似工具接到 DeepSeek V4 時，另一個明顯優勢是長上下文。&lt;/p&gt;
&lt;p&gt;AI 編程工具最怕上下文不夠。上下文一不夠，就要頻繁壓縮；壓縮一多，前面讀過的細節就可能丟失。模型開始忘記專案結構、忘記約束、忘記某個檔案為什麼這麼改，後續品質就會下降。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 系列的長上下文能力，讓它更適合處理程式碼倉庫、文檔批處理、字幕翻譯、站點文章整理這類任務。特別是接入 Claude Code、OpenClaw 這類工具時，如果配置得當，可以讓它盡量晚一點進入上下文壓縮，讓模型保留更多專案細節。&lt;/p&gt;
&lt;p&gt;這也是為什麼有些任務用 DeepSeek 會顯得「很耐用」：它不一定每一步都驚艷，但能承受長時間、低成本、反覆調用。&lt;/p&gt;
&lt;h2 id=&#34;v4-pro-和-v4-flash-怎麼分工&#34;&gt;V4 Pro 和 V4 Flash 怎麼分工
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 V4 Flash 不應該混著用。&lt;/p&gt;
&lt;p&gt;簡單任務用 &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 更合適。它速度快、成本低，用在下面這些場景通常足夠：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;翻譯字幕；&lt;/li&gt;
&lt;li&gt;整理文檔；&lt;/li&gt;
&lt;li&gt;生成普通腳本；&lt;/li&gt;
&lt;li&gt;修改小範圍程式碼；&lt;/li&gt;
&lt;li&gt;跑 OpenClaw 裡的輕量任務；&lt;/li&gt;
&lt;li&gt;做簡單的站點內容處理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;複雜任務再考慮 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大規模重構；&lt;/li&gt;
&lt;li&gt;多模組程式碼理解；&lt;/li&gt;
&lt;li&gt;複雜推理；&lt;/li&gt;
&lt;li&gt;長鏈路 agent 任務；&lt;/li&gt;
&lt;li&gt;高風險程式碼修改；&lt;/li&gt;
&lt;li&gt;需要更強規劃能力的工程任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人一上來就想掛最強模型，這反而不划算。AI 編程工具最現實的玩法，是把任務分層：便宜模型吃掉大量常規工作，貴模型只處理關鍵節點。&lt;/p&gt;
&lt;h2 id=&#34;minimax豆包和-deepseek-的位置不同&#34;&gt;MiniMax、豆包和 DeepSeek 的位置不同
&lt;/h2&gt;&lt;p&gt;國產模型和套餐裡，MiniMax、豆包、Kimi、DeepSeek 各有位置。&lt;/p&gt;
&lt;p&gt;MiniMax 的優勢是量大、便宜、功能全。它未必是最聰明的編程模型，但拿來做翻譯、輕量整理、批處理，很划算。比如批量處理字幕、改格式、做簡單校對，MiniMax 這類套餐很耐用。&lt;/p&gt;
&lt;p&gt;豆包的優勢是生態工具比較全，圖片、影片、搜尋、TTS、可能的 STT 和 embedding 都能接在一起。它更像綜合型工具箱。&lt;/p&gt;
&lt;p&gt;DeepSeek 的位置更明確：文本、程式碼、長上下文、低成本快取。它沒有完整的圖像生成、語音、影片生態，短板很明顯；但在 AI 編程和長文本 agent 工作流裡，它的長板足夠長。&lt;/p&gt;
&lt;p&gt;所以不是誰替代誰，而是任務拆開以後各用各的。&lt;/p&gt;
&lt;h2 id=&#34;省錢的關鍵不是只找便宜模型&#34;&gt;省錢的關鍵不是只找便宜模型
&lt;/h2&gt;&lt;p&gt;AI 編程想省錢，不是簡單把所有請求都換成便宜模型。&lt;/p&gt;
&lt;p&gt;真正有效的省錢方式有幾條：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;簡單任務不要啟動重 agent。&lt;/li&gt;
&lt;li&gt;能用 Flash 的任務不要上 Pro。&lt;/li&gt;
&lt;li&gt;長任務盡量利用快取。&lt;/li&gt;
&lt;li&gt;重複上下文要穩定，避免無意義改動導致快取失效。&lt;/li&gt;
&lt;li&gt;大任務先讓便宜模型做草稿和批處理，再讓強模型做關鍵審查。&lt;/li&gt;
&lt;li&gt;明確告訴 agent 不要重複描述事實，不要反覆總結同一件事。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;尤其是最後一點很重要。AI 工具很容易囉嗦，囉嗦不只是閱讀體驗問題，也是成本問題。提示詞裡明確要求「事實只描述一次，觀點只表達一次」，能同時改善文章品質和 token 消耗。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-適合哪類-ai-編程工作流&#34;&gt;DeepSeek 適合哪類 AI 編程工作流
&lt;/h2&gt;&lt;p&gt;DeepSeek 最適合這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長程式碼倉庫閱讀；&lt;/li&gt;
&lt;li&gt;多檔案輕量修改；&lt;/li&gt;
&lt;li&gt;批量文檔整理；&lt;/li&gt;
&lt;li&gt;批量字幕翻譯；&lt;/li&gt;
&lt;li&gt;Hugo 文章整理；&lt;/li&gt;
&lt;li&gt;agent 計劃執行；&lt;/li&gt;
&lt;li&gt;大量重複上下文的低成本自動化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定適合所有任務。如果要做特別強的前端審美、複雜產品判斷、跨模態創作，可能還要搭配 Claude、GPT、Gemini、豆包或其他工具。&lt;/p&gt;
&lt;p&gt;但只要任務是「長文本、長上下文、反覆調用、成本敏感」，DeepSeek 就很容易變成首選。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;AI 編程工具這一輪，DeepSeek 的價值不只是「國產模型能寫程式碼」，而是它解決了 agent 工具最現實的痛點：長任務太燒錢。&lt;/p&gt;
&lt;p&gt;Claude Code、OpenClaw、Superpowers 這類工具會讓開發流程越來越自動化，但自動化的背後是大量上下文讀寫和多輪調用。誰能把這部分成本壓下來，誰就能讓 AI 編程從「偶爾爽一下」變成「天天用得起」。&lt;/p&gt;
&lt;p&gt;DeepSeek 的長上下文、低快取成本和 V4 Flash / V4 Pro 分層使用，正好讓它站在這個位置上。&lt;/p&gt;
&lt;p&gt;這一輪真正省錢的關鍵，不是不用好模型，而是把好模型、便宜模型、快取和 agent 流程搭配好。能把這套帳算明白，AI 編程工具才真的會變成生產力，而不是一個漂亮但昂貴的玩具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-5.5、GPT-5.4 與 GPT-5.3-Codex 如何取捨</title>
        <link>https://knightli.com/zh-tw/2026/05/10/gpt-5-5-vs-gpt-5-4-vs-gpt-5-3-codex/</link>
        <pubDate>Sun, 10 May 2026 08:43:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/10/gpt-5-5-vs-gpt-5-4-vs-gpt-5-3-codex/</guid>
        <description>&lt;p&gt;如果只看一句話，結論其實很直接：預設選 &lt;code&gt;GPT-5.5&lt;/code&gt;，預算更敏感或任務難度中等時選 &lt;code&gt;GPT-5.4&lt;/code&gt;，只有在 Codex 環境裡做更長時間的軟體工程任務，或需要 Cloud Tasks、Code Review 這類能力時，再重點看 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這個判斷不只是主觀體驗，OpenAI 在 Codex 官方文件裡的推薦也已經很明確。到 &lt;code&gt;2026-05-10&lt;/code&gt; 為止，Codex 文件仍然寫著：大多數任務優先從 &lt;code&gt;gpt-5.5&lt;/code&gt; 開始；如果還沒有開放 &lt;code&gt;gpt-5.5&lt;/code&gt;，就繼續用 &lt;code&gt;gpt-5.4&lt;/code&gt;；輕量任務或子任務則更適合 &lt;code&gt;gpt-5.4-mini&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;三個模型的定位差異&#34;&gt;三個模型的定位差異
&lt;/h2&gt;&lt;p&gt;先看官方定位。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 是 Codex 裡最新的前沿模型，面向複雜編程、電腦操作、知識工作與研究型工作流。它更像是「預設主力模型」，適合複雜分析、多步任務、跨檔案修改、方案設計與較重的文件工作。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; 則是一個更穩的全能型選擇。官方描述是：它把 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的強程式能力帶到了更強的推理、工具使用與 agentic workflow 裡。換句話說，它不是「弱化版 5.5」，而是一個更均衡、更容易長期當主力的模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然是很強的程式模型，但它的核心優勢更集中在真實軟體工程與 Codex 原生工作流裡。官方文件也特別說明：它是針對 agentic coding tasks 最佳化的模型，而且 &lt;code&gt;GPT-5.4&lt;/code&gt; 的編碼能力本身就已經繼承了它的長處。&lt;/p&gt;
&lt;p&gt;所以今天再選模型，不太適合把 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 直接理解成「最強編程模型」。在大部分日常開發場景裡，更推薦先看 &lt;code&gt;GPT-5.5&lt;/code&gt; 和 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;按使用場景怎麼選&#34;&gt;按使用場景怎麼選
&lt;/h2&gt;&lt;p&gt;如果你的任務是日常問答、複雜解釋、資料整理、檔案分析、長文資訊綜合，&lt;code&gt;GPT-5.5&lt;/code&gt; 最合適。它不只適合寫程式，也更適合處理「程式之外但又很費腦力」的知識工作。&lt;/p&gt;
&lt;p&gt;如果你的任務是複雜編程、重構、排錯、架構設計、多檔案修改，仍然優先 &lt;code&gt;GPT-5.5&lt;/code&gt;。Codex 官方推薦也是這樣寫的：在能用 &lt;code&gt;gpt-5.5&lt;/code&gt; 的地方，大多數任務先從它開始。&lt;/p&gt;
&lt;p&gt;如果你更在意額度與消耗，希望在品質很高的前提下把成本壓下來，&lt;code&gt;GPT-5.4&lt;/code&gt; 往往是更合理的預設值。對很多常規開發、普通改寫、一般翻譯、腳本生成與 bug 修復任務來說，&lt;code&gt;GPT-5.4&lt;/code&gt; 已經足夠強，而且更省額度。&lt;/p&gt;
&lt;p&gt;如果你是在 Codex CLI、IDE 擴充套件或 App 裡做更像「工程代理」的事情，例如長時間讀倉庫、持續改程式、排隊跑任務、做 Cloud Tasks 或 Code Review，&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然有存在感。原因不是它比 &lt;code&gt;GPT-5.5&lt;/code&gt; 更先進，而是目前 Codex 的 Cloud Tasks 和 Code Review 仍然執行在 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 上。&lt;/p&gt;
&lt;h2 id=&#34;消耗額度差多少&#34;&gt;消耗額度差多少
&lt;/h2&gt;&lt;p&gt;在 Codex 的 credits 計費表裡，這三個模型的差異非常清楚。&lt;/p&gt;
&lt;p&gt;按 Business / New Enterprise 的 token 計費口徑看：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：輸入 &lt;code&gt;125 credits / 1M tokens&lt;/code&gt;，快取輸入 &lt;code&gt;12.5 credits&lt;/code&gt;，輸出 &lt;code&gt;750 credits&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：輸入 &lt;code&gt;62.5 credits / 1M tokens&lt;/code&gt;，快取輸入 &lt;code&gt;6.25 credits&lt;/code&gt;，輸出 &lt;code&gt;375 credits&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：輸入 &lt;code&gt;43.75 credits / 1M tokens&lt;/code&gt;，快取輸入 &lt;code&gt;4.375 credits&lt;/code&gt;，輸出 &lt;code&gt;350 credits&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這代表如果只看名義費率，&lt;code&gt;GPT-5.4&lt;/code&gt; 大約是 &lt;code&gt;GPT-5.5&lt;/code&gt; 的一半。做同樣長度的輸入輸出時，通常能省接近 &lt;code&gt;50%&lt;/code&gt; 的額度。&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的輸入更便宜，但輸出已經和 &lt;code&gt;GPT-5.4&lt;/code&gt; 很接近，所以它並不是那種「明顯便宜很多」的選項。&lt;/p&gt;
&lt;p&gt;還有一個容易忽略的點：Codex 官方又特別寫了一句，&lt;code&gt;GPT-5.5 uses significantly fewer tokens to achieve results comparable to GPT-5.4&lt;/code&gt;。也就是說，雖然它的單價更高，但在某些複雜任務裡，可能會靠更少的 token 和更少返工把差距拉回來。&lt;/p&gt;
&lt;p&gt;不過對固定模板文章改寫、翻譯、SEO 描述生成這種輸入輸出長度都比較穩定的任務來說，這種「少走彎路」的優勢通常沒有複雜工程任務那麼明顯。實際消耗上，&lt;code&gt;GPT-5.4&lt;/code&gt; 大多還是更省，通常可以理解成省掉大約 &lt;code&gt;45%&lt;/code&gt; 到 &lt;code&gt;50%&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;codex-使用限制上的差異&#34;&gt;Codex 使用限制上的差異
&lt;/h2&gt;&lt;p&gt;除了單價，Codex 裡的可用方式也不一樣。&lt;/p&gt;
&lt;p&gt;截至 &lt;code&gt;2026-05-10&lt;/code&gt;，&lt;code&gt;GPT-5.5&lt;/code&gt; 在 Codex 裡是推薦模型，但目前只在使用 ChatGPT 登入的 Codex 中提供，不支援 API key 驗證。&lt;code&gt;GPT-5.4&lt;/code&gt; 和 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 則支援 API 存取。&lt;/p&gt;
&lt;p&gt;另外，&lt;code&gt;GPT-5.5&lt;/code&gt; 和 &lt;code&gt;GPT-5.4&lt;/code&gt; 目前都不支援 Codex Cloud Tasks 和 Code Review；這兩項仍然是 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 的主場。也就是說，如果你說的是「在 Codex 裡長時間跑工程任務」，那就不能只看模型本身強不強，還要看對應功能是不是只有 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 才能跑。&lt;/p&gt;
&lt;p&gt;如果你只是本地訊息使用，Plus 方案下官方給出的 5 小時窗口大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：&lt;code&gt;15-80&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：&lt;code&gt;20-100&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：&lt;code&gt;30-150&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;從這裡也能看出一個現實差異：&lt;code&gt;GPT-5.5&lt;/code&gt; 最強，但在固定額度下可用次數通常更少；&lt;code&gt;GPT-5.4&lt;/code&gt; 更均衡；&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 在本地訊息上反而看起來更耐用一些。&lt;/p&gt;
&lt;h2 id=&#34;常用場景怎麼選&#34;&gt;常用場景怎麼選
&lt;/h2&gt;&lt;p&gt;日常使用裡有不少高頻任務。更實用的看法，不是抽象地說「哪個更強」，而是按場景一個一個拆開看。&lt;/p&gt;
&lt;h3 id=&#34;1-日常問答資料整理長文總結&#34;&gt;1. 日常問答、資料整理、長文總結
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最適合。它更擅長處理模糊問題、補齊上下文，把零散資訊整理成結構化結果。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：適合普通總結與批量整理。難度不高、數量很多時，通常更划算。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不太適合當主力。能做，但這不是它最有優勢的場景。&lt;/p&gt;
&lt;h3 id=&#34;2-技術概念解釋程式講解讀舊專案&#34;&gt;2. 技術概念解釋、程式講解、讀舊專案
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合複雜專案。跨檔案關係多、呼叫鏈長、歷史包袱重時更穩。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：適合常規閱讀理解。看函式、看模組、解釋設定、幫你快速接手專案都很好用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：更偏工程執行，不是最優先的「講解型模型」。&lt;/p&gt;
&lt;h3 id=&#34;3-寫腳本小工具sqlshell正則&#34;&gt;3. 寫腳本、小工具、SQL、Shell、正則
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合腳本背後還有系統設計、聯動多個服務、涉及複雜約束的情況。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最適合當預設主力。大多數腳本、小工具、SQL 與命令列任務都夠用，而且更省額度。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：如果腳本只是整個工程代理鏈條的一部分，可以考慮；單獨寫小腳本時不必優先選它。&lt;/p&gt;
&lt;h3 id=&#34;4-改-bug改小功能補測試普通開發&#34;&gt;4. 改 bug、改小功能、補測試、普通開發
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合稍複雜的修復，例如需要先分析原因，再跨檔案修改，最後補測試。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最適合日常開發主力。普通 bug、小功能、測試樣板、重新命名、格式整理這類任務，性價比最好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：能做，但如果沒有 Cloud Tasks 或工程代理需求，通常不是第一選擇。&lt;/p&gt;
&lt;h3 id=&#34;5-複雜重構架構設計疑難排錯&#34;&gt;5. 複雜重構、架構設計、疑難排錯
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最適合。複雜任務裡最貴的是返工，不是單次輸出；&lt;code&gt;GPT-5.5&lt;/code&gt; 更適合做主解題模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：適合中等複雜度任務。可以做方案和重構，但在特別長的上下文、多步推理與高不確定性問題上通常不如 &lt;code&gt;GPT-5.5&lt;/code&gt; 穩。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：偏執行，不是這類高難決策任務的預設優先級。&lt;/p&gt;
&lt;h3 id=&#34;6-批量輕任務重複任務拆子任務&#34;&gt;6. 批量輕任務、重複任務、拆子任務
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：能做，但通常不划算。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最適合。批量改註釋、批量改格式、批量生成樣板程式碼、批量改內容時，最平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：如果任務已經放進 Codex 的工程流程裡，可以考慮；單看性價比，仍然通常不如 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;7-自動化流水線代理執行持續讀寫倉庫&#34;&gt;7. 自動化流水線、代理執行、持續讀寫倉庫
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合做前期方案設計、規則制定與複雜任務拆分。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：適合寫自動化腳本、補中等複雜度流程邏輯，尤其是在 API 可接入的情況下。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：最值得關注。因為 Codex 的 Cloud Tasks 和 Code Review 還執行在它上面，所以它更適合「讓系統自己跑」的工程場景。&lt;/p&gt;
&lt;h3 id=&#34;8-重要頁面文案品牌介紹最終潤飾&#34;&gt;8. 重要頁面文案、品牌介紹、最終潤飾
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：最適合。自然度、風格控制與上下文一致性最好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：適合大多數普通頁面和日常更新，重要頁面可以先寫初稿再交給 &lt;code&gt;GPT-5.5&lt;/code&gt; 精修。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不適合當主要文案模型。&lt;/p&gt;
&lt;h3 id=&#34;9-網站固定模板文章改寫翻譯seo-描述&#34;&gt;9. 網站固定模板文章改寫、翻譯、SEO 描述
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合做模板設計、最終潤飾、重要頁面定稿，以及把中文翻成更自然的英文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最適合批量生產。普通文章改寫、固定結構翻譯、商品文案重寫、Meta 描述批量生成，通常品質和成本最平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：不適合當主要文案模型，更適合寫批次處理腳本、清洗 HTML、保留標籤結構、改自動發布流程。&lt;/p&gt;
&lt;h3 id=&#34;10-電商商品文案分類頁批量內容營運&#34;&gt;10. 電商商品文案、分類頁、批量內容營運
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：適合定規則、做抽檢、做高價值頁面的最終潤飾。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;：最適合批量生產。商品標題、分類頁說明、批量活動文案、長尾 SEO 內容這類任務上，品質和成本更平衡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;：適合寫抓取、清洗、批次處理、自動發布腳本，不適合負責主要文案。&lt;/p&gt;
&lt;p&gt;如果把這些場景再壓縮成一句話：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;複雜腦力活、複雜分析、複雜文案：優先 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日常開發、批量生產、重複任務：優先 &lt;code&gt;GPT-5.4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex 工程代理、Cloud Tasks、Code Review：重點看 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;最後怎麼取捨&#34;&gt;最後怎麼取捨
&lt;/h2&gt;&lt;p&gt;如果你只是平時寫程式、改 bug、問技術問題、順手做一些文件工作，&lt;code&gt;GPT-5.4&lt;/code&gt; 是很穩的主力選擇。&lt;/p&gt;
&lt;p&gt;如果你要做的是更複雜的專案分析、多檔案修改、架構方案、深度排錯，或希望一個模型同時覆蓋編程與複雜知識工作，直接優先 &lt;code&gt;GPT-5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你在 Codex 環境裡看重的是工程工作流本身，例如 Cloud Tasks、Code Review、長時間代理執行，那麼 &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 仍然值得保留，但它已經不太適合被當成「預設第一選擇」。&lt;/p&gt;
&lt;p&gt;對固定模板內容站來說，更實用的搭配通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; 負責批量生產&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 負責定模板、做抽檢、做最終潤飾&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 負責寫自動化工具，而不是負責主要內容&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;現在更合理的預設順序是：&lt;code&gt;GPT-5.5&lt;/code&gt; 第一，&lt;code&gt;GPT-5.4&lt;/code&gt; 第二，&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; 放到更偏工程代理與 Codex 特定能力的場景裡使用。&lt;/p&gt;
&lt;p&gt;如果你問的是「同樣一篇模板文章改寫，&lt;code&gt;GPT-5.4&lt;/code&gt; 比 &lt;code&gt;GPT-5.5&lt;/code&gt; 能省多少」，按官方 credits 表和這類任務的典型 token 結構看，通常可以按「省接近一半」來理解。對批量站內容來說，這個差距已經夠大，所以最常見的做法不是全程上 &lt;code&gt;GPT-5.5&lt;/code&gt;，而是先用 &lt;code&gt;GPT-5.5&lt;/code&gt; 把規則與風格定好，再把大批量任務交給 &lt;code&gt;GPT-5.4&lt;/code&gt;。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI Coding 套餐怎麼選：輕度看順手，重度看靈活性</title>
        <link>https://knightli.com/zh-tw/2026/05/10/ai-coding-plan-selection/</link>
        <pubDate>Sun, 10 May 2026 08:20:58 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/10/ai-coding-plan-selection/</guid>
        <description>&lt;p&gt;AI Coding 套餐這半年變化很快。很多工具從「按次」轉向「按量」，免費或低價套餐的額度被收緊，部分海外服務還增加了身份驗證、地區限制和更嚴格的使用規則。&lt;/p&gt;
&lt;p&gt;對開發者來說，問題已經不只是「哪個模型最強」，而是：每個月要花多少錢、額度夠不夠、工具是否順手，以及當某個套餐突然漲價或改規則時，能不能平滑切換。&lt;/p&gt;
&lt;p&gt;一個比較實用的結論是：輕度使用者買順手的工具，中度使用者買性價比，重度使用者買靈活性。使用越重，越不要把模型和工具綁死在同一個套餐裡。&lt;/p&gt;
&lt;h2 id=&#34;選套餐先看四件事&#34;&gt;選套餐先看四件事
&lt;/h2&gt;&lt;p&gt;過去選 AI Coding 套餐，通常看三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;模型能力是否足夠強。&lt;/li&gt;
&lt;li&gt;回應速度是否穩定。&lt;/li&gt;
&lt;li&gt;套餐額度是否夠用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;現在還要加上第四點：模型和工具能不能分開。&lt;/p&gt;
&lt;p&gt;模型負責推理能力，工具負責上下文管理、檔案編輯、Agent 編排和工作流體驗。兩者都重要，但最好不要完全綁定。例如如果你喜歡 Claude 模型，可以買官方套餐，也可以透過 API 接到其他工具裡；如果你喜歡某個編輯器或 Agent 工具，也最好確認它能接入不同模型，而不是只能使用自家套餐。&lt;/p&gt;
&lt;p&gt;這樣做的好處不是折騰，而是降低風險。AI Coding 是變化最快的賽道之一，今天額度寬鬆的套餐，過兩個月可能就改計費；今天好用的工具，下一版也可能因為模型介面變化而體驗下降。把模型和工具分開，等於給自己留了遷移空間。&lt;/p&gt;
&lt;h2 id=&#34;海外套餐正在收緊&#34;&gt;海外套餐正在收緊
&lt;/h2&gt;&lt;p&gt;GitHub Copilot、Cursor、Windsurf、Claude Code 這類工具仍然是很多人的主力選擇，但整體趨勢已經很明確：低價高額度越來越難維持，按量計費越來越常見。&lt;/p&gt;
&lt;p&gt;GitHub Copilot 這類服務開始更強調按量計費之後，套餐本身的「套利空間」會明顯減少。對輕度使用者來說，它仍然方便；但對高頻使用 Agent、長上下文與複雜程式任務的人來說，實際消耗會更接近真實 API 成本。&lt;/p&gt;
&lt;p&gt;Cursor 和 Windsurf 本質上是把模型能力包進 IDE 體驗裡。它們的優勢是開箱即用、編輯器體驗成熟，缺點是工具綁定較深。一旦你依賴其中的專屬 Agent、索引與自動化流程，後續遷移成本就會越來越高。&lt;/p&gt;
&lt;p&gt;Claude Code 的體驗和生態熱度很高，但海外訂閱、身份驗證、地區限制、中轉服務安全性，都會成為國內使用者需要額外評估的風險。尤其是第三方中轉服務，可能存在模型摻雜、穩定性不足、資料安全和跑路風險，不適合作為重要專案的長期基礎設施。&lt;/p&gt;
&lt;h2 id=&#34;國產套餐的優點和短板&#34;&gt;國產套餐的優點和短板
&lt;/h2&gt;&lt;p&gt;國產 AI Coding 套餐的一個優點，是很多服務以 API 形式提供，天然不太鎖定工具。你可以把模型接入 OpenCode、Cline、Continue、自己的腳本或內部 Agent。&lt;/p&gt;
&lt;p&gt;短板也很明顯：如果同時要求模型強、速度快、額度足，很少有一個套餐能全部滿足。&lt;/p&gt;
&lt;p&gt;GLM 系列在國產模型裡能力較強，但高峰期吞吐可能不穩定，重度任務容易被速度卡住。Kimi 的能力不錯，但價格和額度規則需要持續關注，尤其要看後台額度是否透明。MiniMax 這類模型速度和額度較友好，適合日常輕任務、批次處理和不太複雜的程式輔助，但在複雜工程推理上可能略低一檔。DeepSeek 新模型如果處在活動價或優惠期，性價比會很高；活動結束後，就要重新按官方價格和套餐規則評估。&lt;/p&gt;
&lt;p&gt;所以國產方案更適合作為「模型池」使用：不同任務用不同模型，而不是押注一個模型包打天下。&lt;/p&gt;
&lt;h2 id=&#34;輕度使用者選順手的不必折騰-api&#34;&gt;輕度使用者：選順手的，不必折騰 API
&lt;/h2&gt;&lt;p&gt;如果一週只是讓 AI 改腳本、補文件、解釋報錯、寫一點小工具，不需要複雜配置。&lt;/p&gt;
&lt;p&gt;這類使用者優先選順手的產品。Cursor、Windsurf、Trae、CodeBuddy、通義靈碼、GitHub Copilot 之類都可以嘗試。重點不是追求最低單價，而是降低使用門檻：能在你常用的編輯器裡穩定工作、補全品質不錯、出錯時容易回退，就已經足夠。&lt;/p&gt;
&lt;p&gt;輕度使用者不建議為了省一點錢去折騰多層 API、中轉站和複雜代理。時間成本、帳號風險和排錯成本，往往高於省下來的訂閱費。&lt;/p&gt;
&lt;h2 id=&#34;中度使用者看性價比也看可遷移性&#34;&gt;中度使用者：看性價比，也看可遷移性
&lt;/h2&gt;&lt;p&gt;如果每天都會用 AI 寫程式、改專案、生成測試、整理文件，就要開始關注額度和實際消耗。&lt;/p&gt;
&lt;p&gt;這類使用者可以把主力工具和備用模型分開安排。例如一個順手的 IDE 套餐負責日常編輯，再配一個可接入多工具的 API 或聚合套餐，處理更長上下文、更複雜的 Agent 任務。&lt;/p&gt;
&lt;p&gt;選擇時可以重點看三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;是否支援接入第三方工具。&lt;/li&gt;
&lt;li&gt;是否能清楚看到 token 或額度消耗。&lt;/li&gt;
&lt;li&gt;超額後是限速、降級、停止服務，還是按量付費。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果一個套餐看起來便宜，但只允許在自家工具裡使用，就要把遷移成本算進去。如果一個套餐貴一點，但能接入多種工具，反而可能更適合作為長期主力。&lt;/p&gt;
&lt;h2 id=&#34;重度使用者不要把模型和工具綁死&#34;&gt;重度使用者：不要把模型和工具綁死
&lt;/h2&gt;&lt;p&gt;重度使用者的核心訴求是靈活性。&lt;/p&gt;
&lt;p&gt;當一個人或團隊每天大量使用 AI Agent，消耗會非常快。複雜程式庫檢索、長上下文修改、多輪調試、自動化測試修復，都會讓 token 消耗成倍增長。此時再依賴單一套餐，很容易遇到三個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;額度突然不夠。&lt;/li&gt;
&lt;li&gt;計費規則突然改變。&lt;/li&gt;
&lt;li&gt;某個工具或模型臨時不可用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;更穩妥的做法是準備多層組合：一個主力 Agent 工具，一個或多個可替換模型介面，一個低成本模型處理簡單任務，一個高能力模型處理複雜任務。日常小任務不要都交給最貴模型，關鍵任務也不要只依賴最便宜模型。&lt;/p&gt;
&lt;p&gt;對重度使用者來說，「工具能接任意模型，模型能接入任意工具」比單月便宜幾十美元更重要。因為真正貴的不是訂閱費，而是工作流被某個生態綁死後，遷移和重建習慣的成本。&lt;/p&gt;
&lt;h2 id=&#34;一個更穩的組合思路&#34;&gt;一個更穩的組合思路
&lt;/h2&gt;&lt;p&gt;比較穩妥的組合可以這樣安排：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;輕任務用低成本模型：解釋程式、寫小腳本、改格式、生成簡單文件。&lt;/li&gt;
&lt;li&gt;中等任務用性價比模型：常規功能開發、測試補全、重構建議。&lt;/li&gt;
&lt;li&gt;難任務用強模型：複雜架構調整、跨檔案修復、疑難 bug、長上下文推理。&lt;/li&gt;
&lt;li&gt;工具層保持開放：盡量選擇能接 API、能匯出設定、能切換模型的工具。&lt;/li&gt;
&lt;li&gt;保留備用方案：主力套餐改規則時，可以快速切到另一個模型或工具。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣不一定最省錢，但更抗波動。AI Coding 套餐的價格和額度還會繼續變化，真正值得長期投入的是可遷移的工作流，而不是某個短期看起來特別划算的套餐。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;AI Coding 套餐不適合只看單月價格。輕度使用者應該少折騰，選一個順手的工具；中度使用者要開始看額度、消耗和可遷移性；重度使用者則要把模型和工具解耦，避免被單一生態綁定。&lt;/p&gt;
&lt;p&gt;現在最值得記住的一點是：套餐會變，模型會變，工具也會變。把選擇權留在自己手裡，才是長期使用 AI Coding 工具時最重要的成本控制。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Chrome 靜默下載 4GB Gemini Nano：怎麼檢查、關閉和刪除？</title>
        <link>https://knightli.com/zh-tw/2026/05/09/chrome-gemini-nano-silent-download/</link>
        <pubDate>Sat, 09 May 2026 21:37:18 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/chrome-gemini-nano-silent-download/</guid>
        <description>&lt;p&gt;Google Chrome 瀏覽器被曝會在未經使用者明確許可的情況下，於背景下載約 4GB 的本地 AI 模型檔案，引發關於隱私、儲存空間和環境影響的討論。&lt;/p&gt;
&lt;p&gt;這批檔案與 Gemini Nano 有關，主要用於 Chrome 的本地 AI 功能。爭議點不在於瀏覽器支援本地 AI 本身，而在於下載過程是否足夠透明、使用者是否應該事先知情，以及系統資源是否被合理占用。&lt;/p&gt;
&lt;h2 id=&#34;事件細節&#34;&gt;事件細節
&lt;/h2&gt;&lt;p&gt;被討論的模型檔案名為 &lt;code&gt;weights.bin&lt;/code&gt;，位於 Chrome 的 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目錄中。外界認為它是 Gemini Nano 的本地化版本，用於在裝置端完成部分 AI 推理。&lt;/p&gt;
&lt;p&gt;Chrome 會根據裝置硬體能力在背景判斷是否下載，尤其會參考 RAM 和 VRAM 等條件。使用者通常不需要主動啟動下載流程，也可能不會在下載前看到清楚提示。&lt;/p&gt;
&lt;p&gt;更麻煩的是，手動刪除模型檔案通常不能徹底阻止它回來。只要相關功能仍處於啟用狀態，Chrome 在重新啟動或後續更新後可能再次下載該模型。&lt;/p&gt;
&lt;p&gt;目前討論中提到的影響平台包括 Windows 11、macOS 和 Ubuntu 等桌面系統。按 Chrome 桌面裝機量估算，潛在影響裝置可能達到數億台。&lt;/p&gt;
&lt;h2 id=&#34;google-的說法&#34;&gt;Google 的說法
&lt;/h2&gt;&lt;p&gt;Google 的解釋是，這些檔案用於支援本地 AI 功能，例如「幫我寫作」（Help me write）和詐騙偵測。把模型放在本地執行，可以減少部分資料上傳，從而改善隱私保護。&lt;/p&gt;
&lt;p&gt;Google 還表示，如果裝置儲存空間不足，Chrome 會自動移除相關模型以釋放空間。也就是說，模型不一定會永久占用磁碟。&lt;/p&gt;
&lt;p&gt;同時，Google 稱從 2024 年 2 月起，使用者已經可以在 Chrome 設定中停用相關功能。停用後，模型不會繼續下載或更新。&lt;/p&gt;
&lt;h2 id=&#34;如何檢查和停用&#34;&gt;如何檢查和停用
&lt;/h2&gt;&lt;p&gt;如果你不希望 Chrome 在本地保留 Gemini Nano 模型，可以從以下幾處檢查。&lt;/p&gt;
&lt;p&gt;首先，進入 Chrome 設定，查找與「裝置端 AI」、本地 AI、寫作輔助或最佳化建議相關的選項，並關閉不需要的功能。&lt;/p&gt;
&lt;p&gt;其次，可以在網址列輸入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chrome://flags
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後搜尋並停用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Enables optimization guide on device
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最後，再到 Chrome 使用者資料目錄中查找 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 資料夾，並刪除其中的模型檔案。需要注意的是，單獨刪除檔案通常不夠，最好先停用相關 flag 或設定，否則 Chrome 之後仍可能重新下載。&lt;/p&gt;
&lt;h2 id=&#34;不同系統裡的可能路徑&#34;&gt;不同系統裡的可能路徑
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 通常位於 Chrome 的使用者資料目錄下。不同系統和安裝方式會有差異，可以優先從這些位置查找：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows：&lt;code&gt;%LOCALAPPDATA%\Google\Chrome\User Data\&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;~/Library/Application Support/Google/Chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux：&lt;code&gt;~/.config/google-chrome/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Chromium：&lt;code&gt;~/.config/chromium/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;進入對應目錄後，可以搜尋 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 或 &lt;code&gt;weights.bin&lt;/code&gt;。如果使用的是 Chrome Beta、Dev、Canary，目錄名稱可能會帶有對應版本標識。&lt;/p&gt;
&lt;h2 id=&#34;如何判斷-weightsbin-是否已經下載&#34;&gt;如何判斷 weights.bin 是否已經下載
&lt;/h2&gt;&lt;p&gt;最直接的方法是在 Chrome 使用者資料目錄中搜尋：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;weights.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已經下載，通常可以看到它位於 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目錄內，檔案體積可能接近數 GB。也可以按檔案修改時間判斷它是否在最近由 Chrome 背景生成或更新。&lt;/p&gt;
&lt;p&gt;如果找不到 &lt;code&gt;weights.bin&lt;/code&gt;，不一定代表裝置永遠不會下載。Chrome 可能會根據硬體條件、地區、版本、功能開關和實驗配置決定是否拉取模型。&lt;/p&gt;
&lt;h2 id=&#34;關閉後會影響哪些-chrome-ai-功能&#34;&gt;關閉後會影響哪些 Chrome AI 功能
&lt;/h2&gt;&lt;p&gt;關閉相關本地 AI 或最佳化功能後，可能影響依賴 Gemini Nano 的裝置端能力，例如「幫我寫作」（Help me write）、本地詐騙偵測，以及未來更多不經過雲端的瀏覽器 AI 功能。&lt;/p&gt;
&lt;p&gt;對不使用這些功能的使用者來說，關閉後的日常瀏覽影響通常不大。對經常使用 Chrome 內建寫作輔助、頁面理解或安全偵測實驗功能的使用者來說，體驗可能會退回到雲端處理、不可用，或由瀏覽器採用其他替代方案。&lt;/p&gt;
&lt;h2 id=&#34;爭議在哪裡&#34;&gt;爭議在哪裡
&lt;/h2&gt;&lt;p&gt;這件事的核心爭議，是瀏覽器能否在使用者沒有明確同意的情況下，為 AI 功能提前下載數 GB 的模型檔案。&lt;/p&gt;
&lt;p&gt;支持者會認為，本地 AI 可以減少雲端處理，有助於隱私保護，也能提升回應速度。反對者則認為，使用者至少應該在下載前看到明確提示，尤其是在檔案體積接近 4GB、且可能影響儲存空間和網路流量時。&lt;/p&gt;
&lt;p&gt;隱私專家還指出，這類未經充分告知的背景下載行為，可能觸及歐盟 ePrivacy 指令和 GDPR 的合規問題。是否構成違規，還要看 Google 的告知方式、預設設定、資料處理路徑和使用者控制選項。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Chrome 引入 Gemini Nano 代表瀏覽器正在把更多 AI 能力放到本地執行，但這也帶來了新的產品邊界問題：本地模型同樣會占用磁碟、消耗頻寬，並影響使用者對裝置的控制感。&lt;/p&gt;
&lt;p&gt;對普通使用者來說，最直接的做法是檢查 Chrome 的本地 AI 和最佳化功能設定。如果不需要這些功能，可以關閉相關選項，並在停用後刪除 &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; 目錄中的模型檔案。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp 多 GPU 性能實測思路：2x V100 16GB 會比單卡 32GB 快嗎？</title>
        <link>https://knightli.com/zh-tw/2026/05/09/llama-cpp-multi-gpu-offload-performance/</link>
        <pubDate>Sat, 09 May 2026 15:05:41 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/llama-cpp-multi-gpu-offload-performance/</guid>
        <description>&lt;p&gt;大概結論：llama.cpp 多 GPU offload 不是「多一張卡就白撿一倍性能」。如果模型本來能完整放進一張 32GB 顯卡，2x V100 16GB 通常不如單張 32GB 顯卡省心，甚至可能更慢；如果模型單張 16GB 放不下，雙卡的主要價值是「能把模型放進 GPU」，這時收益會很明顯。&lt;/p&gt;
&lt;h2 id=&#34;先分清-split-mode&#34;&gt;先分清 split mode
&lt;/h2&gt;&lt;p&gt;llama.cpp 的多 GPU 主要圍繞 &lt;code&gt;--split-mode&lt;/code&gt; 和 &lt;code&gt;--tensor-split&lt;/code&gt; 使用。實際討論性能時，先要區分幾種模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;layer&lt;/code&gt;：按層切分到不同 GPU，兼容性較好，也是多數人優先嘗試的方式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tensor&lt;/code&gt;：把張量計算拆到多張 GPU 上，更接近並行計算，但更依賴 GPU 之間的互聯頻寬和後端支援。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;row&lt;/code&gt;：舊的行切分方式，在不少場景裡仍能看到，但新部署通常不建議優先從它開始。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單說，&lt;code&gt;layer&lt;/code&gt; 更像「把不同樓層放在不同卡上」，單 token 生成時不一定能讓兩張卡同時滿負載；&lt;code&gt;tensor&lt;/code&gt; 更像「同一層兩張卡一起算」，理論上更能並行，但跨卡通訊會成為關鍵瓶頸。&lt;/p&gt;
&lt;h2 id=&#34;單卡-32gb-能放下時雙-16gb-不一定更快&#34;&gt;單卡 32GB 能放下時：雙 16GB 不一定更快
&lt;/h2&gt;&lt;p&gt;如果模型和 KV cache 能完整放進一張 32GB 顯卡，那麼單卡通常更穩，也常常更快。對 1x V100 32GB 和 2x V100 16GB 這類同代硬體來說，後者未必能贏。&lt;/p&gt;
&lt;p&gt;比較保守的預期是：2x V100 16GB 可能比單張 V100 32GB 慢 10% 到 40%，尤其是單人聊天、Continue Agent、程式碼問答這類一次主要生成一個回答的場景。&lt;/p&gt;
&lt;p&gt;原因不複雜：多 GPU 不是簡單合併顯存。按層切分時，推理會在不同 GPU 之間流轉，單 token 生成階段經常是部分 GPU 等另一部分 GPU；按張量切分時，兩張卡可以一起算，但中間結果需要跨卡同步，互聯頻寬和延遲會直接影響吞吐。&lt;/p&gt;
&lt;p&gt;所以如果你的選擇是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1x V100 32GB&lt;/li&gt;
&lt;li&gt;2x V100 16GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;並且目標模型單張 32GB 已經能完整放下，那麼單張 32GB 往往是更舒服的選擇。&lt;/p&gt;
&lt;h2 id=&#34;單卡-16gb-放不下時雙卡價值很大&#34;&gt;單卡 16GB 放不下時：雙卡價值很大
&lt;/h2&gt;&lt;p&gt;另一種情況完全不同：模型單張 16GB 放不下，但兩張 16GB 合起來可以放下。&lt;/p&gt;
&lt;p&gt;這時雙卡的價值就很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;單張 16GB：可能需要大量 CPU offload，速度明顯變慢。&lt;/li&gt;
&lt;li&gt;2x 16GB：權重盡量留在 GPU 上，速度可能比 CPU/GPU 混跑快很多。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種場景下，2x V100 16GB 不一定比單張 32GB 快，但它可能比「單張 16GB 加大量系統記憶體 offload」快幾倍。也就是說，雙卡的第一價值不是加速，而是避免模型被迫落到更慢的系統記憶體裡。&lt;/p&gt;
&lt;h2 id=&#34;v100-pcie-和-v100-sxm2-差別很大&#34;&gt;V100 PCIe 和 V100 SXM2 差別很大
&lt;/h2&gt;&lt;p&gt;多 GPU 推理最容易被忽略的是互聯。&lt;/p&gt;
&lt;p&gt;如果是 V100 SXM2，並且機器裡有 NVLink，跨卡通訊頻寬高很多。NVIDIA 的 V100 資料裡，NVLink 互聯最高可到 300GB/s。這種環境下，&lt;code&gt;tensor&lt;/code&gt; 或更高 batch 的場景才更有機會接近甚至超過單卡表現。&lt;/p&gt;
&lt;p&gt;如果是 V100 PCIe，情況就保守得多。V100 PCIe 的互聯主要走 PCIe Gen3，資料裡標的 interconnect bandwidth 是 32GB/s。這個頻寬和 NVLink 不是一個量級，所以雙卡經常出現「顯存夠了，但速度沒有翻倍」的情況。&lt;/p&gt;
&lt;p&gt;因此判斷 2x V100 16GB 值不值得，不能只看顯存相加是 32GB，還要看它們是 PCIe 版還是 SXM2/NVLink 版。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選更實際&#34;&gt;怎麼選更實際
&lt;/h2&gt;&lt;p&gt;如果模型能放進單張 32GB 顯卡，優先選單卡。它的延遲、穩定性和調參成本通常更好。&lt;/p&gt;
&lt;p&gt;如果模型單張 16GB 放不下，而兩張 16GB 能放下，雙卡值得用。此時重點是讓權重盡量留在 GPU，而不是期待性能線性翻倍。&lt;/p&gt;
&lt;p&gt;如果是 V100 PCIe 雙卡，優先嘗試 &lt;code&gt;--split-mode layer&lt;/code&gt;，把目標放在「能穩定跑」和「少走 CPU」上。&lt;/p&gt;
&lt;p&gt;如果是 V100 SXM2/NVLink，才更值得測試 &lt;code&gt;tensor&lt;/code&gt; 相關模式，尤其是 prefill、大 batch 或併發請求場景。&lt;/p&gt;
&lt;h2 id=&#34;什麼時候買-2x16gb什麼時候買-1x32gb&#34;&gt;什麼時候買 2x16GB，什麼時候買 1x32GB
&lt;/h2&gt;&lt;p&gt;如果你只服務一個人，主要做聊天、程式碼補全、Continue Agent、長上下文問答，並且目標模型能放進 32GB，那麼 1x32GB 通常更值得。它少了跨卡調度，延遲更穩定，排查問題也簡單。&lt;/p&gt;
&lt;p&gt;如果你已經有一張 16GB 卡，想用較低成本擴到能跑 30B、32B 或更高量化模型，2x16GB 就有意義。它不一定讓 token/s 翻倍，但可以把原本必須 CPU offload 的權重留在 GPU 上。&lt;/p&gt;
&lt;p&gt;如果你準備重新採購，優先級可以這樣排：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;單模型、單使用者、重視回應延遲：優先 1x32GB。&lt;/li&gt;
&lt;li&gt;模型單卡放不下、預算有限：可以考慮 2x16GB。&lt;/li&gt;
&lt;li&gt;有 NVLink 或 SXM2 機器：2x16GB 的可玩性明顯高於普通 PCIe 雙卡。&lt;/li&gt;
&lt;li&gt;未來想跑更長上下文：不要只看權重大小，還要預留 KV cache 顯存。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;layer-split-和-tensor-split-怎麼用&#34;&gt;layer split 和 tensor split 怎麼用
&lt;/h2&gt;&lt;p&gt;實用建議是：先用 &lt;code&gt;layer&lt;/code&gt;，再測 &lt;code&gt;tensor&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;layer&lt;/code&gt; 適合作為預設起點。它按層分配模型，兼容性較好，對 PCIe 雙卡更友好。缺點是生成階段可能更像流水線，某些時刻只有一張卡在忙，另一張卡在等。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tensor&lt;/code&gt; 更適合互聯頻寬好的機器，例如 V100 SXM2/NVLink。它把同一層的部分計算拆到多張卡上，理論上更有並行空間，但跨卡同步更頻繁。如果是 PCIe 雙卡，&lt;code&gt;tensor&lt;/code&gt; 可能會被通訊開銷吃掉收益。&lt;/p&gt;
&lt;p&gt;實際測試時可以從這幾組開始：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第三條不是為了長期使用，而是給單卡結果做一個參照。這樣才能看出雙卡到底是更快，還是只是把顯存壓力分攤出去了。&lt;/p&gt;
&lt;h2 id=&#34;prefill-和-decode-為什麼表現不同&#34;&gt;prefill 和 decode 為什麼表現不同
&lt;/h2&gt;&lt;p&gt;本地大模型性能通常要分成兩個階段看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prefill&lt;/code&gt;：處理輸入 prompt，典型指標是 &lt;code&gt;pp512&lt;/code&gt; 這類 prompt processing 吞吐。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decode&lt;/code&gt;：逐 token 生成回答，典型指標是 &lt;code&gt;tg128&lt;/code&gt; 這類 token generation 吞吐。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;prefill&lt;/code&gt; 更像大批量矩陣計算，batch 較大時更容易把 GPU 餵飽，也更可能從多 GPU 並行裡受益。&lt;code&gt;decode&lt;/code&gt; 是一個 token 接一個 token 生成，batch 小、同步頻繁，跨卡通訊和調度延遲更容易暴露出來。&lt;/p&gt;
&lt;p&gt;所以你可能會看到一種結果：雙卡的 &lt;code&gt;pp512&lt;/code&gt; 更好，但 &lt;code&gt;tg128&lt;/code&gt; 沒明顯提升，甚至更慢。對聊天和 Agent 來說，使用者體感更接近 &lt;code&gt;tg128&lt;/code&gt;；對長文件導入、批量預填充、併發服務來說，&lt;code&gt;pp512&lt;/code&gt; 也很重要。&lt;/p&gt;
&lt;h2 id=&#34;kv-cache-會不會成為第二個顯存瓶頸&#34;&gt;KV cache 會不會成為第二個顯存瓶頸
&lt;/h2&gt;&lt;p&gt;會。很多人只算模型權重，忘了 KV cache。&lt;/p&gt;
&lt;p&gt;模型權重決定「能不能載入模型」，KV cache 決定「能不能開足上下文」。上下文越長、併發越高、batch 越大，KV cache 佔用越明顯。你可能遇到這種情況：模型本體能放進 32GB，但一開 32K 或 64K 上下文，顯存又不夠了。&lt;/p&gt;
&lt;p&gt;判斷時至少要留出幾塊顯存餘量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;CUDA graph 或後端執行時開銷&lt;/li&gt;
&lt;li&gt;prompt batch 和 ubatch&lt;/li&gt;
&lt;li&gt;系統桌面、驅動和其它程序佔用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你用的是 2x16GB，顯存不是一個完全等價的 32GB 大池子。某些緩衝區、KV cache 或中間張量仍然會受單卡剩餘顯存影響。測試長上下文時，最好直接用目標 &lt;code&gt;--ctx-size&lt;/code&gt; 和目標併發數測，而不是只看模型能不能啟動。&lt;/p&gt;
&lt;h2 id=&#34;用-llama-bench-做自己的雙卡測試&#34;&gt;用 llama-bench 做自己的雙卡測試
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-bench&lt;/code&gt; 比直接聊天更適合做硬體對比，因為它會把 prompt processing 和 token generation 拆成可比較的指標。官方 README 的預設示例就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;對雙 V100，可以至少測這幾組：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 單卡基線&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 雙卡 layer split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode layer --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 雙卡 tensor split&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 llama-bench -m model.gguf -ngl &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; --split-mode tensor --tensor-split 1,1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重點看兩列：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;：prompt processing，長輸入和批量預填充更相關。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;：token generation，單人聊天和 Agent 體感更相關。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;測試時盡量固定模型、量化格式、上下文、batch、驅動版本和 llama.cpp 版本。每組多跑幾次，取中位數，比只看一次結果可靠。最後再用真實工作流跑一遍，例如 Continue Agent、OpenAI-compatible server 或你自己的 RAG 請求，因為 benchmark 好看不代表互動體驗一定更好。&lt;/p&gt;
&lt;h2 id=&#34;一句話結論&#34;&gt;一句話結論
&lt;/h2&gt;&lt;p&gt;2x V100 16GB 的優勢主要是顯存容量，而不是必然的生成速度。模型單卡能放下時，單張 32GB 往往更快、更穩；模型單卡放不下時，雙 16GB 的價值就很大，因為它能避免大量 CPU offload。至於能不能更快，關鍵看 split mode、batch、模型大小，以及兩張 V100 之間到底是 PCIe 還是 NVLink。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp server README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mintlify.com/ggml-org/llama.cpp/concepts/backends&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.cpp Compute Backends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-gb/data-center/tesla-v100/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA Tesla V100&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://images.nvidia.com/content/technologies/volta/pdf/tesla-volta-v100-datasheet.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA V100 Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 限額翻倍：Anthropic 借 SpaceX 算力擴容緩解使用限制</title>
        <link>https://knightli.com/zh-tw/2026/05/09/anthropic-claude-code-higher-limits-spacex-compute/</link>
        <pubDate>Sat, 09 May 2026 10:59:48 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/anthropic-claude-code-higher-limits-spacex-compute/</guid>
        <description>&lt;p&gt;Anthropic 在 2026 年 5 月 6 日宣布，將提高 Claude Code 和 Claude API 的使用限額，並與 SpaceX 達成新的算力合作。對普通使用者來說，最直接的變化是 Claude Code 可用額度變多；對開發者和企業來說，重點是 Claude 的推理容量正在繼續擴張。&lt;/p&gt;
&lt;p&gt;這次公告可以拆成兩部分看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 與 Claude API 的限額提升。&lt;/li&gt;
&lt;li&gt;Anthropic 透過 SpaceX 資料中心獲得新的算力容量。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;claude-code-限額有哪些變化&#34;&gt;Claude Code 限額有哪些變化
&lt;/h2&gt;&lt;p&gt;Anthropic 表示，下面三項變化從公告當天開始生效：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 的五小時 rate limit 對 Pro、Max、Team 和 seat-based Enterprise 計畫翻倍。&lt;/li&gt;
&lt;li&gt;Pro 和 Max 帳號的 Claude Code 高峰時段限額降低被取消。&lt;/li&gt;
&lt;li&gt;Claude Opus 模型的 API rate limits 明顯提高。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是說，如果你經常用 Claude Code 做長時間程式任務、倉庫分析、重構、除錯或 Agent 工作流，這次變化可能會直接減少「還沒做完就到限額」的情況。&lt;/p&gt;
&lt;p&gt;不過需要注意，限額提高不等於無限使用。Claude Code 仍然會受訂閱計畫、使用方式、模型、任務長度、上下文大小和平台策略影響。只是相比之前，Anthropic 明確給出了更大的使用空間。&lt;/p&gt;
&lt;h2 id=&#34;為什麼算力會影響-claude-code-體驗&#34;&gt;為什麼算力會影響 Claude Code 體驗
&lt;/h2&gt;&lt;p&gt;Claude Code 這類工具比普通聊天更吃資源。一次程式任務可能會包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀取大量檔案。&lt;/li&gt;
&lt;li&gt;長上下文分析。&lt;/li&gt;
&lt;li&gt;多輪工具呼叫。&lt;/li&gt;
&lt;li&gt;生成、修改和檢查程式碼。&lt;/li&gt;
&lt;li&gt;反覆執行測試或解釋錯誤。&lt;/li&gt;
&lt;li&gt;使用 Opus 模型處理複雜推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些操作背後消耗的不只是 token，還有模型推理容量、並發能力和調度資源。使用者看到的是「限額」「排隊」「高峰時段變慢」，平台看到的是算力供給和需求之間的壓力。&lt;/p&gt;
&lt;p&gt;所以這次 Anthropic 把限額提升和算力合作放在同一篇公告裡，本質上是在說明：Claude Code 體驗的改善不是單純改一個套餐規則，而是依賴後端推理容量擴張。&lt;/p&gt;
&lt;h2 id=&#34;spacex-合作帶來什麼&#34;&gt;SpaceX 合作帶來什麼
&lt;/h2&gt;&lt;p&gt;Anthropic 表示，已經與 SpaceX 簽署協議，將使用 SpaceX Colossus 1 資料中心的全部算力容量。官方提到，這部分容量超過 300 兆瓦，對應 22 萬塊以上 NVIDIA GPU，並將在一個月內提供給 Anthropic 使用。&lt;/p&gt;
&lt;p&gt;這部分新增容量會直接改善 Claude Pro 和 Claude Max 訂閱使用者的可用容量。&lt;/p&gt;
&lt;p&gt;公告中還提到，Anthropic 對未來與 SpaceX 合作開發軌道 AI 算力表示興趣。不過這更像長期方向，和目前使用者馬上能感受到的 Claude Code 限額提升不是同一層面的事情。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的算力布局正在變大&#34;&gt;Anthropic 的算力布局正在變大
&lt;/h2&gt;&lt;p&gt;SpaceX 只是 Anthropic 近期算力擴張的一部分。官方同時列出了其他合作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;與 Amazon 的最高 5GW 合作，其中接近 1GW 新容量計畫在 2026 年底前上線。&lt;/li&gt;
&lt;li&gt;與 Google 和 Broadcom 的 5GW 合作，預計從 2027 年開始上線。&lt;/li&gt;
&lt;li&gt;與 Microsoft 和 NVIDIA 的戰略合作，包含 300 億美元 Azure 容量。&lt;/li&gt;
&lt;li&gt;與 Fluidstack 的 500 億美元美國 AI 基礎設施投資。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic 還強調，Claude 的訓練和運行會使用多種 AI 硬體，包括 AWS Trainium、Google TPU 和 NVIDIA GPU。&lt;/p&gt;
&lt;p&gt;這說明一個趨勢：頭部模型公司的競爭不只在模型參數、榜單成績和產品形態，也在電力、資料中心、GPU、TPU、網路和全球部署能力。&lt;/p&gt;
&lt;h2 id=&#34;對-claude-code-使用者的實際影響&#34;&gt;對 Claude Code 使用者的實際影響
&lt;/h2&gt;&lt;p&gt;對開發者來說，這次最值得關注的是 Claude Code 的五小時限額翻倍。它會影響這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型倉庫程式碼閱讀。&lt;/li&gt;
&lt;li&gt;多檔案重構。&lt;/li&gt;
&lt;li&gt;Bug 排查和測試修復。&lt;/li&gt;
&lt;li&gt;程式碼遷移與依賴升級。&lt;/li&gt;
&lt;li&gt;長時間 Agent 編程任務。&lt;/li&gt;
&lt;li&gt;Team 或 Enterprise 中多人同時使用 Claude Code。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;過去使用 Claude Code 時，一個常見問題是任務還在推進，但額度已經到頂。限額提升後，開發者更容易讓 Agent 把一個完整任務走完，而不是中途停下。&lt;/p&gt;
&lt;p&gt;如果你是 Pro 或 Max 使用者，取消高峰時段限額降低也很關鍵。它意味著晚高峰或使用高峰期的體驗可能更穩定，不會因為平台臨時收緊額度而明顯影響 Claude Code 工作流。&lt;/p&gt;
&lt;h2 id=&#34;對-api-使用者的意義&#34;&gt;對 API 使用者的意義
&lt;/h2&gt;&lt;p&gt;公告中還提到，Claude Opus 模型的 API rate limits 得到明顯提升。對於使用 Opus 做複雜任務的團隊，這通常意味著：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更高並發。&lt;/li&gt;
&lt;li&gt;更少 429 限流。&lt;/li&gt;
&lt;li&gt;更容易支撐批量任務。&lt;/li&gt;
&lt;li&gt;更適合長上下文、複雜推理和 Agent 工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不過具體限額會因帳戶、組織、模型和計畫不同而變化。實際部署前，仍然需要看自己的 Anthropic Console、rate limits 文件和錯誤日誌。&lt;/p&gt;
&lt;h2 id=&#34;企業和區域部署也在變重要&#34;&gt;企業和區域部署也在變重要
&lt;/h2&gt;&lt;p&gt;Anthropic 在公告裡還提到，金融、醫療、政府等受監管行業越來越需要區域內基礎設施，以滿足合規和資料駐留要求。因此，部分容量擴張會放在美國以外地區，尤其是亞洲和歐洲的推理能力。&lt;/p&gt;
&lt;p&gt;這對企業客戶很重要。大模型應用進入核心業務後，問題不只是「模型好不好用」，還包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料是否留在指定區域。&lt;/li&gt;
&lt;li&gt;是否滿足行業合規要求。&lt;/li&gt;
&lt;li&gt;高峰期是否有穩定容量。&lt;/li&gt;
&lt;li&gt;是否能支撐團隊級和組織級並發。&lt;/li&gt;
&lt;li&gt;是否有審計、權限和安全控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從這個角度看，算力擴容不只是性能新聞，也會影響企業採購和部署決策。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Anthropic 這次公告的核心資訊很直接：Claude Code 和 Claude API 的使用限制正在放寬，背後原因是新的算力容量正在上線。&lt;/p&gt;
&lt;p&gt;對普通 Claude Code 使用者來說，最重要的是五小時限額翻倍，以及 Pro、Max 高峰期限額降低取消。對 API 和企業使用者來說，更值得關注的是 Opus rate limits 提升，以及 Anthropic 在 SpaceX、Amazon、Google、Microsoft、NVIDIA、Fluidstack 等合作中的長期算力布局。&lt;/p&gt;
&lt;p&gt;AI 工具越來越像基礎設施服務。模型能力是一部分，穩定容量、區域合規、限額策略和成本控制，同樣會決定使用者體驗。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/higher-limits-spacex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Higher usage limits for Claude and a compute deal with SpaceX&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 新一代 Realtime 語音模型：GPT-Realtime-2、即時翻譯與串流轉寫</title>
        <link>https://knightli.com/zh-tw/2026/05/09/openai-realtime-voice-models-gpt-realtime-2-translate-whisper/</link>
        <pubDate>Sat, 09 May 2026 10:58:47 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/openai-realtime-voice-models-gpt-realtime-2-translate-whisper/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 5 月 7 日發布了新一代 Realtime API 語音模型，重點不只是「說得更像人」，而是讓語音代理可以在即時對話中理解、推理、呼叫工具、翻譯和轉寫。&lt;/p&gt;
&lt;p&gt;這次更新包括三個模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt;：面向即時語音 Agent 的主模型，支援更強推理、工具呼叫和長上下文。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt;：即時語音翻譯模型，支援 70 多種輸入語言到 13 種輸出語言。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt;：低延遲串流語音轉文字模型，用於字幕、會議記錄和即時工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果說早期語音助手更像「問一句、答一句」，這次更新的方向更接近「邊聽邊做事」的語音介面。&lt;/p&gt;
&lt;h2 id=&#34;gpt-realtime-2語音-agent-的主力模型&#34;&gt;GPT-Realtime-2：語音 Agent 的主力模型
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 面向即時語音互動場景。它不只是回答問題，還要在使用者說話、改口、插話、補充限制時保持上下文，並在必要時呼叫工具完成任務。&lt;/p&gt;
&lt;p&gt;官方重點提到的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以在回答前輸出簡短提示，例如「我查一下」，讓使用者知道系統正在處理。&lt;/li&gt;
&lt;li&gt;支援並行工具呼叫，適合日程、搜尋、訂單、客服系統等多工具場景。&lt;/li&gt;
&lt;li&gt;失敗恢復更自然，避免語音會話突然中斷或沉默。&lt;/li&gt;
&lt;li&gt;上下文窗口從 32K 提升到 128K，適合更長的對話和複雜任務流。&lt;/li&gt;
&lt;li&gt;對專業術語、專有名詞、醫療詞彙等場景有更好的保持能力。&lt;/li&gt;
&lt;li&gt;語氣和表達方式更可控，可以根據場景調整為冷靜、同理、確認或更有活力的語氣。&lt;/li&gt;
&lt;li&gt;reasoning effort 可調，支援 &lt;code&gt;minimal&lt;/code&gt;、&lt;code&gt;low&lt;/code&gt;、&lt;code&gt;medium&lt;/code&gt;、&lt;code&gt;high&lt;/code&gt;、&lt;code&gt;xhigh&lt;/code&gt;，預設是 &lt;code&gt;low&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著開發者可以把語音 Agent 用在更複雜的業務裡，而不是只做簡單問答。例如客服可以邊聽使用者描述邊查訂單；旅行應用可以根據航班變化主動給出下一步建議；房產應用可以根據使用者口頭條件篩選房源並安排看房。&lt;/p&gt;
&lt;h2 id=&#34;即時翻譯面向跨語言語音產品&#34;&gt;即時翻譯：面向跨語言語音產品
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; 的定位是即時語音翻譯。使用者可以用自己的語言說話，對方聽到翻譯後的語音，同時還能看到即時轉寫。&lt;/p&gt;
&lt;p&gt;它適合的場景比較明確：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多語言客服。&lt;/li&gt;
&lt;li&gt;跨境銷售和售前溝通。&lt;/li&gt;
&lt;li&gt;線上教育和直播活動。&lt;/li&gt;
&lt;li&gt;國際會議與活動主持。&lt;/li&gt;
&lt;li&gt;影片平台和創作者內容在地化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;即時翻譯的難點不只是「翻譯準」，還包括低延遲、自然停頓、語氣保留、口音適應和專業詞彙處理。OpenAI 這次強調的是讓跨語言對話更接近自然交流，而不是等一整段說完後再翻譯。&lt;/p&gt;
&lt;h2 id=&#34;串流轉寫讓語音內容馬上進入工作流&#34;&gt;串流轉寫：讓語音內容馬上進入工作流
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; 是新的串流語音轉文字模型。它的價值在於把語音在發生時就變成可處理文字，而不是等錄音結束再統一轉寫。&lt;/p&gt;
&lt;p&gt;常見應用包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;會議即時字幕。&lt;/li&gt;
&lt;li&gt;課堂和直播字幕。&lt;/li&gt;
&lt;li&gt;即時會議紀要。&lt;/li&gt;
&lt;li&gt;語音 Agent 的連續聽寫輸入。&lt;/li&gt;
&lt;li&gt;客服、醫療、招聘、銷售等高頻語音場景的後續流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對產品來說，串流轉寫可以明顯縮短「說話到可操作文字」的時間。字幕更快出現，會議記錄可以邊說邊生成，後續摘要、任務提取、CRM 寫入等流程也能更早啟動。&lt;/p&gt;
&lt;h2 id=&#34;價格與可用性&#34;&gt;價格與可用性
&lt;/h2&gt;&lt;p&gt;這三個模型都已經在 Realtime API 中可用。官方給出的價格是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;價格&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;音訊輸入 $32 / 1M tokens，快取輸入 $0.40 / 1M tokens，音訊輸出 $64 / 1M tokens&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;$0.034 / 分鐘&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;$0.017 / 分鐘&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OpenAI 還提到，Realtime API 支援 EU Data Residency，並受到企業隱私承諾覆蓋。對於歐洲企業或有資料駐留要求的語音產品，這是需要單獨評估的一點。&lt;/p&gt;
&lt;h2 id=&#34;對開發者意味著什麼&#34;&gt;對開發者意味著什麼
&lt;/h2&gt;&lt;p&gt;這次發布的重點，是語音能力開始從「輸入輸出層」變成「產品互動層」。&lt;/p&gt;
&lt;p&gt;過去很多語音功能只是把語音轉成文字，再把文字回覆轉成語音。真正難的是中間那層：理解使用者意圖、處理打斷、補全上下文、呼叫工具、告訴使用者系統正在做什麼、在失敗時自然恢復。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 試圖把這部分能力直接放進即時語音模型裡。對開發者來說，最值得關注的不是單次回答品質，而是它能否支撐持續會話和多步驟任務。&lt;/p&gt;
&lt;p&gt;比較適合優先嘗試的產品包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客服語音 Agent。&lt;/li&gt;
&lt;li&gt;車載和行動端語音助手。&lt;/li&gt;
&lt;li&gt;旅遊、訂票、房產、金融等需要邊問邊查的服務。&lt;/li&gt;
&lt;li&gt;多語言會議和跨境溝通工具。&lt;/li&gt;
&lt;li&gt;即時字幕、會議紀要和通話質檢系統。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;也要注意安全和告知&#34;&gt;也要注意安全和告知
&lt;/h2&gt;&lt;p&gt;OpenAI 在發布頁中強調，Realtime API 會包含多層安全措施，例如對會話進行主動分類，必要時中止違反政策的內容。開發者也可以透過 Agents SDK 增加自己的安全護欄。&lt;/p&gt;
&lt;p&gt;還有一個容易被忽略的要求：當終端使用者正在與 AI 互動時，開發者需要清楚告知，除非場景本身已經足夠明顯。&lt;/p&gt;
&lt;p&gt;這對客服、銷售、教育、醫療等場景都很重要。語音越自然，越需要在產品設計上明確邊界：使用者知道自己在和 AI 溝通，也知道哪些操作會被記錄、轉寫或觸發工具呼叫。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;OpenAI 這次 Realtime API 更新，把即時語音從「能聽能說」推進到「能邊聽邊處理任務」。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; 負責更複雜的語音 Agent，&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; 負責跨語言即時交流，&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; 負責低延遲轉寫。三者合在一起，覆蓋了語音產品裡最常見的三個基礎能力：對話、翻譯和轉寫。&lt;/p&gt;
&lt;p&gt;如果你正在做客服、車載、會議、教育、跨境溝通或行動端語音助手，這次更新值得重點測試。真正需要驗證的，不只是模型聽起來是否自然，而是它在長對話、打斷、工具呼叫、失敗恢復和成本控制上的表現。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/advancing-voice-intelligence-with-new-models-in-the-api/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI：Advancing voice intelligence with new models in the API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 帳號被封怎麼辦？Claude Code 受限原因與申訴指南</title>
        <link>https://knightli.com/zh-tw/2026/05/09/claude-account-suspension-code-limit-guide/</link>
        <pubDate>Sat, 09 May 2026 10:32:12 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/claude-account-suspension-code-limit-guide/</guid>
        <description>&lt;p&gt;Claude 或 Claude Code 帳號突然被限制、剛充值後被封、Pro 權限異常、用量突然變少，這類問題近來被很多使用者反覆討論。真正需要注意的是：不要把它簡單理解成「換個節點」「換個帳號」就能解決的技術問題。帳號風控通常和地區、支付、裝置、登入行為、使用內容、自動化呼叫、共享方式等多種訊號有關。&lt;/p&gt;
&lt;p&gt;更穩妥的處理方式，是先判斷自己遇到的是哪類問題：是普通用量限制、支付訂閱異常、Claude Code 授權問題，還是 Anthropic 認為帳號違反了使用政策或服務條款。&lt;/p&gt;
&lt;h2 id=&#34;先區分三類情況&#34;&gt;先區分三類情況
&lt;/h2&gt;&lt;p&gt;第一類是正常限額。Claude Pro、Max、Team、API 和 Claude Code 的額度機制不同，高峰期、長上下文、程式碼任務、Agent 任務都會更快消耗額度。看到「limit reached」不一定是封號，可能只是當前週期的使用量耗盡。&lt;/p&gt;
&lt;p&gt;第二類是訂閱或授權異常。比如剛充值但權限沒刷新、行動端訂閱和網頁帳號不同步、Claude Code 沒有正確登入、環境變數裡還殘留舊的 &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;。這類問題通常應該從帳單、登入狀態和客戶端設定排查。&lt;/p&gt;
&lt;p&gt;第三類才是帳號暫停或封禁。常見表現是收到 suspension、disabled、terminated 一類郵件，或者登入時直接提示帳號不可用。這時就不要繼續反覆換裝置、換網路、換帳號嘗試登入，因為這可能讓風控訊號更複雜。&lt;/p&gt;
&lt;h2 id=&#34;常見觸發因素&#34;&gt;常見觸發因素
&lt;/h2&gt;&lt;p&gt;Anthropic 官方幫助文件和隱私說明裡提到過幾類常見風險訊號：違反 Usage Policy、從不支援地區建立或使用帳號、違反服務條款、重複違規、異常存取或濫用行為。&lt;/p&gt;
&lt;p&gt;實際使用中，容易觸發風險的場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帳號註冊、登入和支付地區不一致。&lt;/li&gt;
&lt;li&gt;長期使用資料中心代理、共享代理或頻繁切換 IP。&lt;/li&gt;
&lt;li&gt;多人共用一個個人帳號。&lt;/li&gt;
&lt;li&gt;短時間內在多台裝置、多地區頻繁登入。&lt;/li&gt;
&lt;li&gt;使用自動化腳本高頻存取 Claude.ai。&lt;/li&gt;
&lt;li&gt;把 Claude Code 當作共享服務或轉售入口。&lt;/li&gt;
&lt;li&gt;請求明顯違反 Anthropic 使用政策的內容。&lt;/li&gt;
&lt;li&gt;支付方式、帳單地址、帳號地區互相衝突。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡的關鍵不是「某一個訊號必封」，而是多個異常訊號疊加後，系統更容易把帳號判斷為高風險。&lt;/p&gt;
&lt;h2 id=&#34;不建議用規避風控的思路解決&#34;&gt;不建議用「規避風控」的思路解決
&lt;/h2&gt;&lt;p&gt;網上經常會出現所謂「穩定使用方案」，例如指紋瀏覽器、裝置指紋重置、清空本地目錄、換環境、固定時區語言、換信箱繼續註冊等。這類說法裡有些只是普通環境排查，有些則明顯是在規避平台風控。&lt;/p&gt;
&lt;p&gt;不建議把「繞過風控」當成解決方案。原因很簡單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它可能違反服務條款。&lt;/li&gt;
&lt;li&gt;它可能讓帳號風險訊號進一步增加。&lt;/li&gt;
&lt;li&gt;它不能解決支付、地區、政策違規等根本問題。&lt;/li&gt;
&lt;li&gt;一旦涉及團隊或商業使用，後續申訴會更難解釋。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目標是長期穩定使用 Claude，正確方向不是偽裝，而是讓帳號、地區、支付、裝置和用途都盡量真實、一致、可解釋。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-受限怎麼排查&#34;&gt;Claude Code 受限怎麼排查
&lt;/h2&gt;&lt;p&gt;Claude Code 使用者遇到問題時，可以先按下面順序檢查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude auth status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 API key，也要確認環境變數是否指向了正確帳號：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ANTHROPIC_API_KEY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 Windows PowerShell 中可檢查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$env:ANTHROPIC_API_KEY&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你同時用過網頁登入、OAuth、API key、第三方客戶端或不同終端，建議先統一認證方式，避免一個工具還在使用舊憑據。&lt;/p&gt;
&lt;p&gt;還要區分兩種情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 用量到達上限：通常是額度或訂閱限制。&lt;/li&gt;
&lt;li&gt;帳號或組織被 disabled：通常是帳號、組織、支付或政策層面的風險。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;前者可以等額度刷新或調整訂閱；後者應保留提示截圖和郵件，走官方支援或申訴流程。&lt;/p&gt;
&lt;h2 id=&#34;穩定使用的合規建議&#34;&gt;穩定使用的合規建議
&lt;/h2&gt;&lt;p&gt;想降低帳號異常機率，建議從這些基礎做起：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用受支援國家或地區的正常帳號。&lt;/li&gt;
&lt;li&gt;盡量保持登入地區、支付方式和帳單資訊一致。&lt;/li&gt;
&lt;li&gt;避免多人共享個人帳號。&lt;/li&gt;
&lt;li&gt;不要把個人 Pro/Max 當作團隊 API 池。&lt;/li&gt;
&lt;li&gt;不要頻繁切換 IP、裝置和瀏覽器環境。&lt;/li&gt;
&lt;li&gt;不要使用來源不明的第三方 Claude 客戶端。&lt;/li&gt;
&lt;li&gt;避免高頻自動化存取 Claude.ai 網頁端。&lt;/li&gt;
&lt;li&gt;商業或團隊場景優先使用 Team、Enterprise 或 API。&lt;/li&gt;
&lt;li&gt;熟悉 Anthropic Usage Policy，不把帳號用於受限用途。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你確實需要在多裝置上使用，保持正常登入即可，不要頻繁清環境、換指紋、換代理。過度「折騰環境」本身就可能看起來像異常行為。&lt;/p&gt;
&lt;h2 id=&#34;被封後該怎麼做&#34;&gt;被封後該怎麼做
&lt;/h2&gt;&lt;p&gt;如果帳號已經被暫停，建議按這個順序處理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查收 Anthropic 或 Claude 發來的郵件，確認封禁原因或提示類型。&lt;/li&gt;
&lt;li&gt;停止繼續建立新帳號、換網路、換裝置反覆嘗試。&lt;/li&gt;
&lt;li&gt;整理帳號信箱、訂閱訂單、支付憑證、近期使用場景。&lt;/li&gt;
&lt;li&gt;如果認為是誤判，按官方入口提交 appeal 或聯絡支援。&lt;/li&gt;
&lt;li&gt;說明真實使用場景，避免編造地區、身份或用途。&lt;/li&gt;
&lt;li&gt;如果涉及訂閱扣費，單獨詢問退款或訂閱處理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;申訴時越具體越好，例如說明是否使用 Claude Code、是否切換過裝置、是否使用過 VPN、是否有團隊共用、是否接入過第三方工具。平台需要判斷風險來源，模糊說「我什麼都沒做」通常幫助有限。&lt;/p&gt;
&lt;h2 id=&#34;哪些說法要謹慎看待&#34;&gt;哪些說法要謹慎看待
&lt;/h2&gt;&lt;p&gt;有些文章或影片會聲稱「只要固定指紋就不會封」「某瀏覽器能徹底防封」「清理某目錄就能重置裝置身份」「IP 對齊時區就能解決所有問題」。這些說法不宜照單全收。&lt;/p&gt;
&lt;p&gt;原因是平台風控通常是多維模型，不只看瀏覽器指紋或 IP。帳號歷史、支付資訊、地區政策、使用內容、存取頻率、自動化特徵、客戶端版本、API 呼叫方式，都可能參與判斷。單點偽裝不等於長期穩定，反而可能製造更多不一致訊號。&lt;/p&gt;
&lt;p&gt;更重要的是，很多所謂「防封方案」本質上是賣工具或賣服務。使用者真正需要的是判斷風險來源、合規使用和保留申訴證據，而不是把帳號安全寄託在第三方環境包裝上。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Claude 帳號被封或 Claude Code 受限，不一定是單一原因造成的。它可能是額度問題、訂閱問題、授權問題，也可能是地區、支付、裝置、共享、自動化或內容政策觸發的綜合風控。&lt;/p&gt;
&lt;p&gt;長期穩定使用 Claude 的關鍵不是繞過風控，而是讓使用方式合規、帳號資訊一致、存取環境穩定、團隊使用走正式方案。遇到封禁時，先停止折騰環境，保存證據，走官方申訴和支援流程，才是最穩妥的處理方式。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/supported-countries&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic：Supported countries and regions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/8241253-i-ve-received-a-warning-that-my-usage-violates-the-acceptable-use-policy-what-should-i-do-differently&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Help Center：Safeguards warnings and appeals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://privacy.claude.com/en/articles/11186740-does-claude-use-my-location&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Privacy Center：Does Claude use my location?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.anthropic.com/en/articles/12005017-using-agents-according-to-our-usage-policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Help Center：Using agents according to our Usage Policy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>從 PPT 到原型設計：歸藏 PPT Skill 與 Huashu Design 使用場景解析</title>
        <link>https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/</link>
        <pubDate>Sat, 09 May 2026 08:34:23 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/</guid>
        <description>&lt;p&gt;最近兩個中文開發者做的設計類 Agent Skill 很值得放在一起看：一個是歸藏的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guizang-ppt-skill&lt;/a&gt;，另一個是花叔的 &lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/huashu-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;huashu-design&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;它們都不是傳統意義上的「設計工具」，而是把一套設計流程、審美偏好、檢查清單和工程模板寫成 Agent 可以執行的 Skill。你不是打開一個 UI 慢慢拖元素，而是把需求交給 Claude Code、Codex、Cursor 這類 Agent，讓它按固定流程生成 HTML、PPT、動畫或原型。&lt;/p&gt;
&lt;p&gt;這類專案的價值，不在於讓 AI 隨機發揮，而在於把「怎麼做才不難看」這件事流程化。&lt;/p&gt;
&lt;h2 id=&#34;guizang-ppt-skill專注雜誌風網頁-ppt&#34;&gt;guizang-ppt-skill：專注雜誌風網頁 PPT
&lt;/h2&gt;&lt;p&gt;歸藏的 &lt;code&gt;guizang-ppt-skill&lt;/code&gt; 定位很清楚：生成單檔 HTML 橫向翻頁 PPT，視覺基調是「電子雜誌 x 電子墨水」。它更像一套為演講準備的版式系統，而不是通用設計框架。&lt;/p&gt;
&lt;p&gt;倉庫 README 裡列出的核心能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;單檔 HTML 輸出，不需要建置和伺服器，瀏覽器直接打開。&lt;/li&gt;
&lt;li&gt;橫向左右翻頁，支援鍵盤、滾輪、觸控滑動、底部圓點和 ESC 索引。&lt;/li&gt;
&lt;li&gt;5 套主題色預設，包括墨水經典、靛藍瓷、森林墨、牛皮紙和沙丘。&lt;/li&gt;
&lt;li&gt;10 種頁面版面，包括開場封面、章節幕封、資料大字報、左文右圖、圖片網格、Pipeline、懸念問題、大引用、Before/After 對比和圖文混排。&lt;/li&gt;
&lt;li&gt;內建模板、元件說明、版面骨架、主題設定和品質檢查清單。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它適合做線下分享、產業內部講話、私享會、AI 產品發表、demo day，以及帶有強烈個人風格的演講稿。不太適合大段表格資料、培訓課件和多人協作編輯。&lt;/p&gt;
&lt;p&gt;這個專案有一個很好的取捨：它沒有試圖覆蓋所有設計場景，而是把「雜誌風 PPT」這個場景做窄。主題色只能從預設裡選，版面也有明確骨架，這反而降低了 Agent 跑偏的機率。&lt;/p&gt;
&lt;p&gt;如果你經常要把觀點、產業觀察、產品發表內容做成演講 deck，它的實用性會很高。&lt;/p&gt;
&lt;p&gt;安裝命令也很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add https://github.com/op7418/guizang-ppt-skill --skill guizang-ppt-skill
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;huashu-design更完整的-html-原生設計工作流&#34;&gt;huashu-design：更完整的 HTML 原生設計工作流
&lt;/h2&gt;&lt;p&gt;花叔的 &lt;code&gt;huashu-design&lt;/code&gt; 覆蓋面更大。它的目標不是只做 PPT，而是把 HTML 當成原生設計畫布，用 Agent 生成可交付的設計資產。&lt;/p&gt;
&lt;p&gt;倉庫 README 裡列出的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可點擊 App 或 Web 原型。&lt;/li&gt;
&lt;li&gt;HTML 投影片，以及可編輯 PPTX 匯出。&lt;/li&gt;
&lt;li&gt;產品發表動畫、MP4、GIF 和配樂版本。&lt;/li&gt;
&lt;li&gt;多方向設計方案並排對比。&lt;/li&gt;
&lt;li&gt;資訊圖、資料視覺化、PDF、PNG、SVG 匯出。&lt;/li&gt;
&lt;li&gt;5 維專家評審，包括哲學一致性、視覺層級、執行工藝、功能性和創新性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的核心思路是：讓 Agent 先理解品牌和素材，再產出高保真設計。專案裡強調了 Core Asset Protocol，也就是遇到具體品牌時，要先確認 logo、產品圖、UI 截圖、配色、字體和品牌指南，而不是憑記憶猜。&lt;/p&gt;
&lt;p&gt;這點很重要。很多 AI 生成設計看起來「像設計」，但不像某個真實產品或品牌。&lt;code&gt;huashu-design&lt;/code&gt; 試圖把這個問題前置解決：先找真實資產，再做設計。&lt;/p&gt;
&lt;p&gt;安裝命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add alchaincyf/huashu-design
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它更適合那些希望在終端裡完成較完整設計交付的人：產品原型、發表動畫、簡報、資訊圖、設計評審都可以放在一個 Agent 工作流裡處理。&lt;/p&gt;
&lt;h2 id=&#34;兩者最大的區別&#34;&gt;兩者最大的區別
&lt;/h2&gt;&lt;p&gt;簡單說，&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 是一個更窄、更穩的演講 deck 生成器；&lt;code&gt;huashu-design&lt;/code&gt; 是一個更寬、更完整的 HTML 原生設計系統。&lt;/p&gt;
&lt;p&gt;如果只看 PPT：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 更強調雜誌感、節奏、版式和單檔瀏覽器演示。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; 更強調通用設計能力、可編輯 PPTX、品牌素材、匯出鏈路和評審流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果看整體設計能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 的邊界更清晰，適合快速做一份有風格的橫向演講。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; 的能力更綜合，適合把一個產品或品牌設計任務拆成原型、動畫、投影片和資訊圖。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這兩個專案也代表了兩種不同的 Skill 寫法。前者像一套高度收斂的模板和審美約束，後者像一個小型設計團隊的工作流說明書。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這類-skill-重要&#34;&gt;為什麼這類 Skill 重要
&lt;/h2&gt;&lt;p&gt;Agent 的一個常見問題是「會做，但不穩定」。同樣一句需求，有時輸出很好，有時就會滑向紫色漸層、圓角卡片、假圖標和一堆看似高級的空話。&lt;/p&gt;
&lt;p&gt;Skill 的意義就是把穩定性補上。它把下面這些東西固化下來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可複用的模板。&lt;/li&gt;
&lt;li&gt;可執行的檢查清單。&lt;/li&gt;
&lt;li&gt;明確的審美偏好。&lt;/li&gt;
&lt;li&gt;常見錯誤的規避規則。&lt;/li&gt;
&lt;li&gt;輸出格式和驗證流程。&lt;/li&gt;
&lt;li&gt;什麼時候該問問題，什麼時候該直接開始做。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比單純寫一句「請做得高級一點」可靠得多。&lt;/p&gt;
&lt;p&gt;尤其是設計任務，審美並不是一句 prompt 就能穩定復現的。真正有用的是流程：先確認素材，再定方向，再搭結構，再做視覺，再檢查輸出。把這個流程寫成 Skill，Agent 才更像一個可協作的執行者，而不是一次性圖片生成器。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;如果你只是想把一個主題做成線下演講或分享 deck，可以優先試 &lt;code&gt;guizang-ppt-skill&lt;/code&gt;。它的輸出邊界窄，單檔 HTML 也方便分發和預覽。&lt;/p&gt;
&lt;p&gt;如果你想讓 Agent 承擔更完整的設計任務，比如 App 原型、發表動畫、品牌化投影片、可匯出 PPTX 或資訊圖，可以優先看 &lt;code&gt;huashu-design&lt;/code&gt;。它的鏈路更長，適合需要多輪迭代和交付物匯出的任務。&lt;/p&gt;
&lt;p&gt;如果你已經在寫自己的 Codex 或 Claude Code Skill，這兩個專案也都值得參考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想學「如何把一個窄場景做穩」，看 &lt;code&gt;guizang-ppt-skill&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想學「如何把複雜工作流拆成可執行協議」，看 &lt;code&gt;huashu-design&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;歸藏和花叔這兩個專案的共同點，是都把「設計能力」從一次 prompt 變成了可重複執行的流程。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; 的重點是雜誌風 HTML PPT，適合高風格化演講；&lt;code&gt;huashu-design&lt;/code&gt; 的重點是 HTML 原生設計系統，覆蓋原型、動畫、投影片、資訊圖和評審。它們解決的不是「AI 能不能生成設計」，而是「AI 能不能按一套穩定方法生成可交付的設計」。&lt;/p&gt;
&lt;p&gt;這可能會成為 Agent 工具生態裡很重要的一類開源專案：不只是程式碼模板，而是把人的經驗、審美和工作方法打包成 Skill。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/op7418/guizang-ppt-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;op7418/guizang-ppt-skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/huashu-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/huashu-design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude 4 生成文本怎麼檢測？AI 文本檢測工具與最新方法</title>
        <link>https://knightli.com/zh-tw/2026/05/08/detect-claude-4-ai-generated-text-tools/</link>
        <pubDate>Fri, 08 May 2026 22:55:16 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/detect-claude-4-ai-generated-text-tools/</guid>
        <description>&lt;p&gt;想判斷一段文本是不是 Claude 4 生成的，最重要的前提是：目前沒有任何工具能給出百分之百確定的結論。AI 文本檢測本質上是機率判斷，它可以提示「這段文本更像 AI 寫的」，但不能直接證明作者一定使用了 Claude 4。&lt;/p&gt;
&lt;p&gt;這點在 2026 年尤其重要。Claude 4、GPT-5、Gemini 2.5、DeepSeek 等模型的寫作風格越來越接近人類；同時，很多文本也不是「純 AI」或「純人工」，而是經歷了 AI 起草、人工修改、語法工具潤色、翻譯、改寫和拼接。檢測工具能提供線索，但真正可靠的判斷應結合寫作過程、版本記錄、引用來源和人工審閱。&lt;/p&gt;
&lt;h2 id=&#34;先說結論不要只看一個分數&#34;&gt;先說結論：不要只看一個分數
&lt;/h2&gt;&lt;p&gt;如果只是臨時自查，可以用兩到三個檢測器交叉驗證，例如 GPTZero、Copyleaks、Originality.ai、Sapling、Winston AI 等。學術場景則常見 Turnitin。它們的模型、訓練資料和閾值不同，同一段文本可能給出不同結果。&lt;/p&gt;
&lt;p&gt;更穩妥的做法是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用兩個以上工具檢測同一段文本。&lt;/li&gt;
&lt;li&gt;看逐句標註，而不是只看總分。&lt;/li&gt;
&lt;li&gt;檢查是否存在引用錯誤、事實幻覺、過度平滑的邏輯連接。&lt;/li&gt;
&lt;li&gt;查看寫作過程證據，例如草稿、修改記錄、提交歷史。&lt;/li&gt;
&lt;li&gt;對低比例 AI 分數保持謹慎，不把檢測結果當成單獨證據。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;尤其在學校、招聘、出版和合規場景裡，AI 檢測分數只應該作為風險信號，而不是最終裁決。&lt;/p&gt;
&lt;h2 id=&#34;常用工具怎麼選&#34;&gt;常用工具怎麼選
&lt;/h2&gt;&lt;h3 id=&#34;gptzero&#34;&gt;GPTZero
&lt;/h3&gt;&lt;p&gt;GPTZero 是教育和出版場景裡常見的 AI 文本檢測工具。它早期以 perplexity 和 burstiness 這類統計特徵出名，後續已經發展為多階段檢測系統，並公開強調會針對新一代模型更新訓練資料。&lt;/p&gt;
&lt;p&gt;它適合做英文長文、論文草稿、文章初稿的初篩。優點是介面友好、逐句解釋較清楚，缺點是短文本、重度人工修改文本、多語言混合文本仍然容易不穩定。&lt;/p&gt;
&lt;h3 id=&#34;copyleaks-ai-detector&#34;&gt;Copyleaks AI Detector
&lt;/h3&gt;&lt;p&gt;Copyleaks 的優勢在於多語言、API、瀏覽器插件和 LMS 整合。官方頁面聲稱支援 Claude、Gemini、GPT-5、DeepSeek、Llama 等模型，並強調可檢測人類和 AI 混寫內容。&lt;/p&gt;
&lt;p&gt;它比較適合內容團隊、教育機構和企業批次接入。需要注意的是，廠商宣傳的準確率通常來自特定測試集，實際使用時仍要關注文本長度、語言、是否經過改寫，以及誤判成本。&lt;/p&gt;
&lt;h3 id=&#34;turnitin-ai-writing-report&#34;&gt;Turnitin AI Writing Report
&lt;/h3&gt;&lt;p&gt;Turnitin 更偏學術誠信場景。它能在報告中給出 AI writing indicator 和高亮片段，並支援檢測 AI 生成文本和被 AI 改寫工具處理過的文本。&lt;/p&gt;
&lt;p&gt;但 Turnitin 官方文件也明確提醒：模型可能誤判人工文本、AI 文本或 AI 改寫文本，不應作為對學生採取不利行動的唯一依據。它還會對較低比例的 AI 指示做特殊處理，以降低誤讀和誤判風險。&lt;/p&gt;
&lt;h3 id=&#34;originalityaisaplingwinston-ai&#34;&gt;Originality.ai、Sapling、Winston AI
&lt;/h3&gt;&lt;p&gt;這些工具更多出現在內容行銷、SEO、出版和編輯流程裡。它們通常提供批次檢測、團隊協作、API 或逐句分析。適合用來做內容品質控制，但同樣不適合把單次檢測結果當成「證明」。&lt;/p&gt;
&lt;h3 id=&#34;zerogptmonicaphrasly-等免費工具&#34;&gt;ZeroGPT、Monica、Phrasly 等免費工具
&lt;/h3&gt;&lt;p&gt;免費工具適合做快速自查，但不建議用於高風險決策。它們的閾值、訓練資料、誤判率和更新節奏不一定透明，很多「99%+ 準確率」的宣傳也需要謹慎看待。&lt;/p&gt;
&lt;h2 id=&#34;檢測演算法主要看什麼&#34;&gt;檢測演算法主要看什麼
&lt;/h2&gt;&lt;p&gt;傳統 AI 文本檢測經常提到兩個指標：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Perplexity&lt;/code&gt;：困惑度。大致衡量文本對語言模型來說是否「容易預測」。過於順滑、下一詞機率很高的文本，可能更像模型生成。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Burstiness&lt;/code&gt;：突發性。衡量句長、結構和表達節奏的變化。人類寫作往往會有更多不均勻變化，而模型輸出常常更平滑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但最新檢測器已經不只看這兩個指標。更常見的是組合多種特徵：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;詞頻和短語模式。&lt;/li&gt;
&lt;li&gt;句法結構和詞性分布。&lt;/li&gt;
&lt;li&gt;標點、連接詞和段落組織習慣。&lt;/li&gt;
&lt;li&gt;重複句式和模板化表達。&lt;/li&gt;
&lt;li&gt;語義連貫性與事實引用異常。&lt;/li&gt;
&lt;li&gt;模型特定的語言指紋。&lt;/li&gt;
&lt;li&gt;人類與 AI 混寫片段的邊界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，檢測 Claude 4 文本時，工具通常不是在「識別 Claude 4 的浮水印」，而是在判斷這段文字是否符合某類 LLM 生成文本的統計特徵。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-claude-4-更難檢測&#34;&gt;為什麼 Claude 4 更難檢測
&lt;/h2&gt;&lt;p&gt;Claude 系列模型的文本通常更自然，長段落銜接也更穩。經過人工提示詞約束後，它可以模仿個人風格、降低模板感、保留少量口語化表達。再經過人工修改或翻譯後，檢測難度會進一步上升。&lt;/p&gt;
&lt;p&gt;這會帶來兩個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;純 Claude 4 輸出可能被識別為 AI，但置信度受題材、語言和長度影響。&lt;/li&gt;
&lt;li&gt;Claude 4 起草、人工改寫後的文本，可能逃過檢測，也可能誤傷為高 AI 分數。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，檢測結果裡最有價值的不是「總分 87%」，而是哪些句子被標註、這些句子為什麼可疑、是否能和寫作過程證據互相印證。&lt;/p&gt;
&lt;h2 id=&#34;推薦的檢測流程&#34;&gt;推薦的檢測流程
&lt;/h2&gt;&lt;p&gt;如果你要判斷一篇文章是否可能由 Claude 4 生成，可以按這個流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;保留原始文本，不要先人工改寫。&lt;/li&gt;
&lt;li&gt;分別用 GPTZero、Copyleaks 或 Turnitin 這類工具檢測。&lt;/li&gt;
&lt;li&gt;記錄總分、逐句高亮和工具版本。&lt;/li&gt;
&lt;li&gt;對高亮句子做人工覆核，看是否存在模板化過渡、泛泛而談、無來源事實。&lt;/li&gt;
&lt;li&gt;檢查引用、資料、連結和專有名詞是否真實。&lt;/li&gt;
&lt;li&gt;要求提供寫作過程材料，例如大綱、草稿、修改記錄。&lt;/li&gt;
&lt;li&gt;只把檢測結果作為輔助證據。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是自己的文章想降低誤判風險，正確做法不是「繞過檢測器」，而是保留寫作記錄、補充真實經驗、核對引用來源、刪除空泛段落，讓文章真正體現人的判斷和事實來源。&lt;/p&gt;
&lt;h2 id=&#34;哪些情況最容易誤判&#34;&gt;哪些情況最容易誤判
&lt;/h2&gt;&lt;p&gt;以下文本很容易被檢測器誤判：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;非母語作者寫的正式英文。&lt;/li&gt;
&lt;li&gt;高度模板化的學術摘要、商業郵件、政策說明。&lt;/li&gt;
&lt;li&gt;經過 Grammarly、DeepL Write、Notion AI 等工具潤色的文本。&lt;/li&gt;
&lt;li&gt;短文本、標題、摘要、產品說明。&lt;/li&gt;
&lt;li&gt;翻譯腔明顯的中文或英文。&lt;/li&gt;
&lt;li&gt;多人協作後風格被統一過的稿件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，越是涉及處分、錄用、成績、版權和合規，越不能只憑一個 AI 分數做決定。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;檢測 Claude 4 生成文本，最可靠的方式不是迷信某個「最新演算法工具」，而是把檢測器當作機率信號：用多個工具交叉驗證，用逐句標註定位風險，再結合引用核查和寫作過程證據。&lt;/p&gt;
&lt;p&gt;GPTZero、Copyleaks、Turnitin、Originality.ai、Sapling、Winston AI 都可以作為工具箱的一部分。它們能提高發現 AI 生成文本的機率，但不能替代人工判斷。真正穩妥的結論，應該來自檢測結果、文本事實品質、寫作過程記錄和具體場景規則的綜合判斷。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://guides.turnitin.com/hc/en-us/articles/22774058814093-Using-the-AI-Writing-Report&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Turnitin：Using the AI Writing Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.turnitin.com/blog/understanding-the-false-positive-rate-for-sentences-of-our-ai-writing-detection-capability&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Turnitin：Understanding false positive rates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://copyleaks.com/ai-content-detector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Copyleaks AI Detector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://gptzero.me/news/gptzero-ai-detection-benchmarking-the-industry-standard-in-accuracy-transparency-and-fairness/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPTZero AI Detection Benchmarking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2602.13042&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;arXiv：GPTZero: Robust Detection of LLM-Generated Texts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex vs Claude Code：兩套 Subagent 機制怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/05/08/codex-vs-claude-code-subagent-design/</link>
        <pubDate>Fri, 08 May 2026 14:14:01 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/codex-vs-claude-code-subagent-design/</guid>
        <description>&lt;p&gt;現在的 AI 編程工具越來越重視 Subagent。這不是功能跟風，而是單個 Agent 處理真實工程任務時，很快會碰到邊界。&lt;/p&gt;
&lt;p&gt;如果一個 Agent 同時負責讀程式碼、查日誌、改實作、跑測試、分析錯誤、總結結果，主上下文很快會變髒。搜尋結果、命令輸出、測試日誌和中間推理混在一起，後續判斷就會被噪音干擾。任務也很難並行：探索、實作、驗證和審查都塞在同一條主線上。&lt;/p&gt;
&lt;p&gt;Subagent 的本質，是替 Agent 減壓。主會話不再從頭到尾做完所有事，而是更像協調者：判斷目標、安排任務、接收結果，再把結果合成最終答案。子 Agent 處理某一段局部工作，例如探索、實作、驗證或審查，最後只帶回壓縮後的結論。&lt;/p&gt;
&lt;p&gt;所以 Subagent 不是「再開一個同款自己」，而是把原本糊成一團的工程工作拆成邊界更清楚的角色。&lt;/p&gt;
&lt;h2 id=&#34;底層共識&#34;&gt;底層共識
&lt;/h2&gt;&lt;p&gt;成熟的 Subagent 系統通常繞不開四件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文隔離。&lt;/li&gt;
&lt;li&gt;角色專用化。&lt;/li&gt;
&lt;li&gt;專案和使用者級配置。&lt;/li&gt;
&lt;li&gt;工具與權限邊界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上下文隔離是前提。真實倉庫裡的中間結果很多：搜尋結果、測試日誌、命令輸出都可能很吵。如果全部塞進主會話，主線很快會混亂。Subagent 的價值之一，就是讓局部過程先在局部被消化，主會話只看到有決策價值的結論。&lt;/p&gt;
&lt;p&gt;角色專用化也很重要。多 Agent 不是多開幾個一樣的模型。探索型角色要擅長搜尋、閱讀和總結；實作型角色要專注改碼；驗證型角色要跑檢查、識別風險，並清楚回報。&lt;/p&gt;
&lt;p&gt;工具和權限邊界決定系統能否安全落地。子 Agent 不應預設擁有主會話的全部能力。探索角色未必需要寫檔案，驗證角色未必需要改實作，背景任務和 worktree 隔離也應保持可見。&lt;/p&gt;
&lt;p&gt;在這些共識之上，Codex 和 Claude Code 走出了不同路線。&lt;/p&gt;
&lt;h2 id=&#34;codex顯式派工&#34;&gt;Codex：顯式派工
&lt;/h2&gt;&lt;p&gt;Codex 的 Subagent 設計更克制。&lt;/p&gt;
&lt;p&gt;它提供一套受控、輕量、圍繞當前主會話展開的分工機制。什麼時候派活、派給誰、什麼時候收結果，都由主會話明確決定。控制流始終留在當前任務裡。&lt;/p&gt;
&lt;p&gt;它的特點是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主會話明確發起委託。&lt;/li&gt;
&lt;li&gt;角色集保持輕量。&lt;/li&gt;
&lt;li&gt;主會話知道哪個 Agent 在做什麼。&lt;/li&gt;
&lt;li&gt;結果回到主線後再統一判斷。&lt;/li&gt;
&lt;li&gt;協作邊界透明。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種方式適合重視手動編排、可預期性和執行確定性的團隊。可以先派探索角色查清調用鏈，再派工作角色做小範圍修改，最後由主會話整合結果並決定是否繼續測試。&lt;/p&gt;
&lt;p&gt;缺點是編排壓力仍在主會話身上。主會話要判斷何時拆分、怎麼拆、交給誰、怎麼合併結果。輕量協作很舒服，但長期複雜工程流可能會變累。&lt;/p&gt;
&lt;h2 id=&#34;claude-code正式工位&#34;&gt;Claude Code：正式工位
&lt;/h2&gt;&lt;p&gt;Claude Code 的取向更平台化。&lt;/p&gt;
&lt;p&gt;它不是只提供幾個臨時幫手，而是把 Agent 做成可描述、可選擇、可配置、可記憶、可隔離、可背景執行的正式物件。子 Agent 不只是會話裡的工具，更像工程系統裡的一個工位。&lt;/p&gt;
&lt;p&gt;系統可以把 Agent 列表、適用場景、描述資訊和工具邊界交給模型，讓模型判斷本輪該呼叫哪個角色。這類模型驅動的委託帶來更強自動化。&lt;/p&gt;
&lt;p&gt;它的關鍵能力包括：&lt;/p&gt;
&lt;p&gt;第一，角色體系。探索、規劃、通用處理、驗證等角色可以帶用途說明、工具限制、預設模型和執行條件。探索型角色可以只讀，規劃型角色負責方案，驗證型角色專注檢查。&lt;/p&gt;
&lt;p&gt;第二，繼承和覆蓋。子 Agent 預設繼承主會話的大邊界，但可在規則允許範圍內做局部調整。主會話定義大邊界，Agent 在邊界內局部裝配。&lt;/p&gt;
&lt;p&gt;第三，記憶。記憶可以有作用域：使用者級記憶像長期偏好，專案級記憶像倉庫背景，本地級記憶像當前環境狀態。某些 Agent 不必每次從零理解專案。&lt;/p&gt;
&lt;p&gt;第四，背景和 worktree 隔離。某些驗證任務可以在背景持續執行，主線不用原地等待。需要強隔離時，Agent 可進入獨立 worktree，同一專案內操作空間被明確隔開。&lt;/p&gt;
&lt;p&gt;第五，插件生態。當 Agent 是正式物件時，就需要考慮分發、安裝、覆蓋、排序和安全。插件 Agent 可以進入系統，但高風險欄位如 permission mode、hooks、MCP servers 應被收口。&lt;/p&gt;
&lt;p&gt;這讓 Claude Code 更像 Agent runtime，而不是單次會話裡的協作工具。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;Codex 更像受控分工工具：顯式派工、角色輕量、控制流清晰、子任務圍繞當前會話，適合強調確定性和人工編排的工作方式。&lt;/p&gt;
&lt;p&gt;Claude Code 更像工程工位系統：Agent 被正式建模，角色更體系化，記憶、背景執行、隔離和插件都屬於 runtime，適合長期專案和平台化工作流。&lt;/p&gt;
&lt;p&gt;真正的問題不是誰功能更多，而是你希望 Subagent 是「我明確叫來的助手」，還是「系統裡長期存在的工位」。&lt;/p&gt;
&lt;p&gt;可以問兩個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你能不能接受模型自己選擇該派誰幹活？&lt;/li&gt;
&lt;li&gt;你是否需要更完整的 Agent runtime？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果第一個問題讓你不舒服，顯式派工更合適。若第二個答案是肯定的，平台化工位系統更值得考慮。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;不要把 Subagent 當作「多開幾個模型就更強」。更有效的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;給每個角色明確任務邊界。&lt;/li&gt;
&lt;li&gt;控制每個角色可用工具。&lt;/li&gt;
&lt;li&gt;讓子 Agent 回傳結論，而不是原始日誌。&lt;/li&gt;
&lt;li&gt;主會話保留最終決策權。&lt;/li&gt;
&lt;li&gt;讓背景任務和 worktree 隔離保持可見。&lt;/li&gt;
&lt;li&gt;對插件 Agent 設定清楚安全邊界。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Subagent 的價值不在數量，而在分工品質。角色越清楚，上下文越乾淨，主線判斷越穩。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Codex 和 Claude Code 都在解決同一個問題：單個 Agent 很難承載真實工程任務。它們都承認上下文隔離、角色專用、權限邊界和局部匯總的重要性。&lt;/p&gt;
&lt;p&gt;差異在於取向。Codex 更克制，強調顯式派工和主會話控制；Claude Code 更體系化，把 Agent 做成可配置、可記憶、可隔離、可背景執行、可進入插件生態的正式工位。&lt;/p&gt;
&lt;p&gt;選哪個，不是看哪個品牌贏，而是看你的工作方式需要受控協作工具，還是完整 Agent runtime。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>9Router：把 Claude Code、Codex、Cursor 接到同一個 AI 路由器</title>
        <link>https://knightli.com/zh-tw/2026/05/08/9router-ai-coding-router-token-saver/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/9router-ai-coding-router-token-saver/</guid>
        <description>&lt;p&gt;9Router 是一個面向 AI 編程工具的本地路由器。它把 Claude Code、Codex、Cursor、Cline、Copilot、OpenCode、OpenClaw 等工具統一接到一個 OpenAI-compatible endpoint，再由 9Router 轉發到不同模型和服務商。&lt;/p&gt;
&lt;p&gt;它不是另一個聊天客戶端，而是放在 AI 編程工具與模型服務之間，處理 API 格式、provider 切換、工具輸出耗 token、限流中斷、多帳號管理等問題。&lt;/p&gt;
&lt;p&gt;根據專案說明，9Router 支援 40+ provider 和 100+ 模型，提供 RTK Token Saver、自動 fallback、額度追蹤、多帳號輪詢、格式轉換與請求日誌。專案使用 JavaScript 編寫，技術棧包括 Node.js、Next.js、React、Tailwind CSS 和 LowDB，授權為 MIT。&lt;/p&gt;
&lt;h2 id=&#34;適合解決什麼問題&#34;&gt;適合解決什麼問題
&lt;/h2&gt;&lt;p&gt;9Router 最適合你同時使用多個 AI 編程工具和多個模型來源的情況。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code 使用訂閱帳號。&lt;/li&gt;
&lt;li&gt;Codex 或 Cursor 需要自訂 OpenAI endpoint。&lt;/li&gt;
&lt;li&gt;Cline、Continue、RooCode 需要 OpenAI-compatible API。&lt;/li&gt;
&lt;li&gt;免費 provider 用來日常嘗試。&lt;/li&gt;
&lt;li&gt;GLM、MiniMax、Kimi 等便宜 API 作為備用。&lt;/li&gt;
&lt;li&gt;高品質模型只在複雜任務時使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;沒有 9Router 時，這些配置會分散在不同工具裡。9Router 的思路是讓工具都訪問同一個本地地址，再在路由器中配置 provider、combo 和優先級。&lt;/p&gt;
&lt;p&gt;預設本地地址：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dashboard：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:20128/dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;快速安裝&#34;&gt;快速安裝
&lt;/h2&gt;&lt;p&gt;本機使用可以直接透過 npm：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從原始碼執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/decolua/9router.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; 9router
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生產模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;20128&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HOSTNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0.0.0.0 &lt;span class=&#34;nv&#34;&gt;NEXT_PUBLIC_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://localhost:20128 npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;npm 包要求 Node.js &lt;code&gt;&amp;gt;=18.0.0&lt;/code&gt;。部署到 VPS 或 Docker 時，建議配置 &lt;code&gt;JWT_SECRET&lt;/code&gt;、&lt;code&gt;INITIAL_PASSWORD&lt;/code&gt;、&lt;code&gt;DATA_DIR&lt;/code&gt;、&lt;code&gt;API_KEY_SECRET&lt;/code&gt; 等環境變數。&lt;/p&gt;
&lt;h2 id=&#34;接入-ai-編程工具&#34;&gt;接入 AI 編程工具
&lt;/h2&gt;&lt;p&gt;常見配置如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 從 9Router Dashboard 複製
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: 在 9Router 中配置的模型名或 combo 名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Codex CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:20128&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your-9router-api-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex &lt;span class=&#34;s2&#34;&gt;&amp;#34;your prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cline、Continue、RooCode 可選 &lt;code&gt;OpenAI Compatible&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: http://localhost:20128/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: your-9router-api-key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: cc/claude-opus-4-7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型名前綴取決於已連接的 provider，例如 &lt;code&gt;cc/&lt;/code&gt;、&lt;code&gt;cx/&lt;/code&gt;、&lt;code&gt;gh/&lt;/code&gt;、&lt;code&gt;glm/&lt;/code&gt;、&lt;code&gt;minimax/&lt;/code&gt;、&lt;code&gt;kr/&lt;/code&gt;、&lt;code&gt;vertex/&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;rtk-token-saver&#34;&gt;RTK Token Saver
&lt;/h2&gt;&lt;p&gt;AI 編程工具最耗 token 的地方常常是工具輸出，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tree&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;日誌&lt;/li&gt;
&lt;li&gt;大段檔案列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router 內建 RTK Token Saver，會在請求送到模型前壓縮這類內容。專案說明稱很多請求可節省 20%-40% input tokens。&lt;/p&gt;
&lt;p&gt;這個功能不要求更換模型，也不改變上層工具使用方式。不過遇到關鍵日誌、完整檔案內容或高風險任務時，仍建議先測試壓縮後的回答品質。&lt;/p&gt;
&lt;h2 id=&#34;自動-fallback&#34;&gt;自動 fallback
&lt;/h2&gt;&lt;p&gt;9Router 可以按優先級組合模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 訂閱模型
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 便宜 API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 免費 provider
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;當第一層額度用完、限流或出錯時，自動切到下一層。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. cc/claude-opus-4-7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. glm/glm-5.1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. kr/claude-sonnet-4.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;fallback 會影響輸出一致性。大型重構、協議實作、資料庫遷移等任務，最好固定主模型，失敗時再手動切換。&lt;/p&gt;
&lt;h2 id=&#34;免費-provider-要謹慎&#34;&gt;免費 provider 要謹慎
&lt;/h2&gt;&lt;p&gt;README 提到 Kiro、OpenCode Free、Vertex 等免費路徑，也提醒部分舊免費層已變化或不再推薦。使用前要確認服務條款、區域限制、第三方工具接入政策、封號風險與額度期限。&lt;/p&gt;
&lt;p&gt;9Router 管理的是路由，不會改變上游 provider 的規則。&lt;/p&gt;
&lt;h2 id=&#34;本地與部署建議&#34;&gt;本地與部署建議
&lt;/h2&gt;&lt;p&gt;個人使用時，最簡單是只監聽 &lt;code&gt;localhost&lt;/code&gt;。如果部署到 VPS 或局域網，建議修改預設密碼、設定強 &lt;code&gt;JWT_SECRET&lt;/code&gt;、設定 &lt;code&gt;API_KEY_SECRET&lt;/code&gt;、不要把 Dashboard 裸露到公網，並對 &lt;code&gt;/v1/*&lt;/code&gt; 啟用 Bearer API key。&lt;/p&gt;
&lt;p&gt;Docker 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name 9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 20128:20128 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --env-file ./.env &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-data:/app/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v 9router-usage:/root/.9router &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  9router
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先在本機跑通 provider、combo、工具接入和日誌，再決定是否遷移到伺服器。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;9Router 適合同時使用多個 AI 編程工具、多個 provider、多個價格層，並希望統一 fallback 策略的重度使用者。如果你只用一個工具和一個模型，它可能反而增加複雜度。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;9Router 可以理解為 AI 編程工具的本地閘道。Claude Code、Codex、Cursor、Cline 等工具連到 &lt;code&gt;http://localhost:20128/v1&lt;/code&gt;，由它處理模型選擇、格式轉換、token 壓縮、額度追蹤和 fallback。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router GitHub 倉庫&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://9router.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router 官網&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;9Router npm 包&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI：在終端裡執行 DeepSeek 編程 Agent</title>
        <link>https://knightli.com/zh-tw/2026/05/08/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;DeepSeek-TUI 是一個執行在終端裡的 AI 編程 Agent。它圍繞 DeepSeek V4 模型設計，透過 &lt;code&gt;deepseek&lt;/code&gt; 命令啟動，可以在 TUI 介面裡讀寫檔案、執行 shell 命令、搜尋網頁、管理 git、呼叫 MCP server，並支援子 Agent 協作。&lt;/p&gt;
&lt;p&gt;它比普通聊天 CLI 更像一個終端工作台。它不只是把問題發給模型，而是把看程式碼、改檔案、跑命令、檢查診斷、保存會話、恢復狀態整合在一起。&lt;/p&gt;
&lt;p&gt;專案主要使用 Rust 編寫，授權為 MIT。GitHub 描述是「Coding agent for DeepSeek models that runs in your terminal」。&lt;/p&gt;
&lt;h2 id=&#34;適合誰&#34;&gt;適合誰
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 適合喜歡終端工作流，並想用 DeepSeek 模型處理本地開發任務的開發者。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 DeepSeek 做程式碼修改和專案分析。&lt;/li&gt;
&lt;li&gt;不想打開完整 IDE。&lt;/li&gt;
&lt;li&gt;希望 AI 工具能讀寫本地 workspace。&lt;/li&gt;
&lt;li&gt;需要 Plan、Agent、YOLO 模式。&lt;/li&gt;
&lt;li&gt;想保存會話、恢復長任務、回滾改動。&lt;/li&gt;
&lt;li&gt;想接入 MCP、LSP 診斷、HTTP/SSE runtime API 和 skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是簡單問答，Web 端或輕量 CLI 已足夠。DeepSeek-TUI 更適合把模型放進本地開發流程。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;npm：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;npm 包是安裝器和 wrapper，會下載預編譯 Rust 二進位，要求 Node.js &lt;code&gt;&amp;gt;=18&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Cargo：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui-cli --locked
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo install deepseek-tui --locked
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap Hmbown/deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install deepseek-tui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以從 GitHub Releases 下載 Linux x64/ARM64、macOS x64/ARM64、Windows x64 的預編譯版本。&lt;/p&gt;
&lt;p&gt;Docker：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e DEEPSEEK_API_KEY &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:/workspace&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ghcr.io/hmbown/deepseek-tui:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;配置-api-key&#34;&gt;配置 API Key
&lt;/h2&gt;&lt;p&gt;首次啟動會提示輸入 DeepSeek API key，並保存到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以手動配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或使用環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;檢查環境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;清除已保存的 key：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth clear --provider deepseek
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;auto-mode&#34;&gt;Auto mode
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;TUI 中也可使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/model auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Auto mode 同時選擇模型和 thinking：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型：&lt;code&gt;deepseek-v4-flash&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Thinking：&lt;code&gt;off&lt;/code&gt;、&lt;code&gt;high&lt;/code&gt; 或 &lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正請求前，TUI 會做一次小型路由呼叫，分析最新請求和上下文，再決定本輪模型和思考級別。&lt;code&gt;auto&lt;/code&gt; 是本地功能，上游 API 收到的是具體模型和設定。&lt;/p&gt;
&lt;p&gt;需要基準測試、成本上限或固定行為時，建議直接指定模型。&lt;/p&gt;
&lt;h2 id=&#34;三種模式&#34;&gt;三種模式
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Plan&lt;/td&gt;
          &lt;td&gt;只讀探索和計畫&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent&lt;/td&gt;
          &lt;td&gt;預設互動模式，工具呼叫有 approval gate&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YOLO&lt;/td&gt;
          &lt;td&gt;在可信 workspace 中自動批准工具&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Plan 適合分析，Agent 適合日常編程，YOLO 風險最高，只適合可信分支或測試目錄。&lt;/p&gt;
&lt;h2 id=&#34;工具能力&#34;&gt;工具能力
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 支援檔案讀寫、apply patch、shell、git、web search/browse、子 Agent、MCP、LSP 診斷、會話恢復、工作區回滾、持久化任務隊列、HTTP/SSE runtime API 和 skills。&lt;/p&gt;
&lt;p&gt;LSP 診斷可把 rust-analyzer、pyright、typescript-language-server、gopls、clangd 等錯誤回饋給模型。工作區回滾使用 side-git 快照，提供 &lt;code&gt;/restore&lt;/code&gt; 和 &lt;code&gt;revert_turn&lt;/code&gt;，但正常 git 提交習慣仍然重要。&lt;/p&gt;
&lt;h2 id=&#34;常用命令&#34;&gt;常用命令
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek &lt;span class=&#34;s2&#34;&gt;&amp;#34;explain this function&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model deepseek-v4-flash &lt;span class=&#34;s2&#34;&gt;&amp;#34;summarize&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --model auto &lt;span class=&#34;s2&#34;&gt;&amp;#34;fix this bug&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --yolo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider deepseek
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek doctor --json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek models
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek sessions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek resume --last
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek resume &amp;lt;SESSION_ID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek fork &amp;lt;SESSION_ID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek serve --http
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek serve --acp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek pr &amp;lt;N&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek mcp list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek mcp validate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;zed-和-acp&#34;&gt;Zed 和 ACP
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;agent_servers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;DeepSeek&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;custom&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;serve&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--acp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;目前 ACP 支援新會話和 prompt response，但工具驅動編輯和 checkpoint replay 尚未透過 ACP 暴露。&lt;/p&gt;
&lt;h2 id=&#34;配置和-provider&#34;&gt;配置和 provider
&lt;/h2&gt;&lt;p&gt;使用者配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;專案 overlay：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;workspace&amp;gt;/.deepseek/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;api_key&lt;/code&gt;、&lt;code&gt;base_url&lt;/code&gt;、&lt;code&gt;provider&lt;/code&gt;、&lt;code&gt;mcp_config_path&lt;/code&gt; 等敏感欄位不能放入專案 overlay。&lt;/p&gt;
&lt;p&gt;OpenAI-compatible 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek auth &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; --provider openai --api-key &lt;span class=&#34;s2&#34;&gt;&amp;#34;YOUR_OPENAI_COMPATIBLE_API_KEY&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://openai-compatible.example/v4&amp;#34;&lt;/span&gt; deepseek --provider openai --model glm-5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull deepseek-coder:1.3b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek --provider ollama --model deepseek-coder:1.3b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 是一個完整的終端 AI 編程 Agent，把 DeepSeek V4、TUI、工具呼叫、LSP 診斷、會話恢復、回滾、MCP 和 skills 放進同一套 Rust 工具鏈。它不一定最輕，但適合把 AI 從聊天推進到可執行的本地開發流程。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI GitHub 倉庫&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepseek-tui.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI 官網&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/deepseek-tui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI npm 包&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.deepseek.com/api_keys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Keys&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>goose：桌面端、CLI 和 API 一體的開源 AI Agent</title>
        <link>https://knightli.com/zh-tw/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</guid>
        <description>&lt;p&gt;goose 是一個執行在本機的開源 AI Agent。它不只面向程式碼補全，而是希望覆蓋程式碼、研究、寫作、自動化、資料分析等更廣的任務。README 的定位很清楚：提供桌面端、CLI 和 API，既可給普通使用者使用，也可嵌入自訂工作流。&lt;/p&gt;
&lt;p&gt;專案已從 &lt;code&gt;block/goose&lt;/code&gt; 遷移到 Linux Foundation 旗下的 Agentic AI Foundation（AAIF）。目前倉庫是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://github.com/aaif-goose/goose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;goose 主要由 Rust 和 TypeScript 編寫，授權為 Apache-2.0。GitHub 描述稱它是一個開源、可擴展的 AI agent，不只給出程式碼建議，還能安裝、執行、編輯和測試，並可接入任意 LLM。&lt;/p&gt;
&lt;h2 id=&#34;解決什麼問題&#34;&gt;解決什麼問題
&lt;/h2&gt;&lt;p&gt;許多 AI 編程工具只停留在建議或局部改碼。goose 的目標更廣：讓 AI agent 直接在你的機器上完成任務。&lt;/p&gt;
&lt;p&gt;它可用於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;程式碼修改和測試。&lt;/li&gt;
&lt;li&gt;本地自動化。&lt;/li&gt;
&lt;li&gt;資料研究和寫作。&lt;/li&gt;
&lt;li&gt;資料分析。&lt;/li&gt;
&lt;li&gt;多步驟工作流。&lt;/li&gt;
&lt;li&gt;透過 API 嵌入其他系統。&lt;/li&gt;
&lt;li&gt;透過 MCP 擴展工具能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是 IDE 補全，Copilot 類工具已足夠。goose 更適合把 AI 放進本機任務執行鏈。&lt;/p&gt;
&lt;h2 id=&#34;桌面端cliapi&#34;&gt;桌面端、CLI、API
&lt;/h2&gt;&lt;p&gt;goose 提供三種入口。&lt;/p&gt;
&lt;p&gt;桌面端支援 macOS、Linux 和 Windows，適合偏好可視化互動的使用者。&lt;/p&gt;
&lt;p&gt;CLI 適合終端工作流和本地開發自動化。&lt;/p&gt;
&lt;p&gt;API 可作為可嵌入的 agent runtime，供其他系統或內部工具呼叫。&lt;/p&gt;
&lt;p&gt;個人使用可先從桌面端或 CLI 開始；團隊內部工具和 agent 平台則應關注 API 與自訂分發。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;桌面端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://goose-docs.ai/docs/getting-started/installation
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CLI：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GitHub Releases 提供多平台構建。這裡查到的 latest release 是 &lt;code&gt;v1.33.1&lt;/code&gt;，發布於 2026-04-29，包含 macOS、Linux、Windows、deb、rpm、Flatpak 等資產。&lt;/p&gt;
&lt;p&gt;安裝後建議先按官方 Quickstart 配置 provider，並從低風險目錄開始測試。&lt;/p&gt;
&lt;h2 id=&#34;provider&#34;&gt;Provider
&lt;/h2&gt;&lt;p&gt;goose 支援 15+ provider，包括 Anthropic、OpenAI、Google、Ollama、OpenRouter、Azure、Bedrock 和其他雲端或 OpenAI-compatible provider。&lt;/p&gt;
&lt;p&gt;它可使用 API key，也可透過 ACP 使用已有的 Claude、ChatGPT 或 Gemini 訂閱。&lt;/p&gt;
&lt;p&gt;ACP 值得關注，因為很多使用者已有訂閱，但工具未必能直接復用。goose 透過 ACP provider 把訂閱接入 agent 工作流。&lt;/p&gt;
&lt;p&gt;使用前仍要確認 provider 條款、額度限制，以及是否適合公司程式碼或敏感資料。&lt;/p&gt;
&lt;h2 id=&#34;mcp-擴展&#34;&gt;MCP 擴展
&lt;/h2&gt;&lt;p&gt;goose 支援 Model Context Protocol 擴展。README 提到可連接 70+ extensions。&lt;/p&gt;
&lt;p&gt;MCP 的價值在於讓 agent 不只聊天和改檔案，還能透過標準協議接入文件、資料庫、瀏覽器、內部系統、搜尋服務、設計工具或專案管理工具。&lt;/p&gt;
&lt;p&gt;對團隊來說，MCP 也可作為更安全的整合層，把內部能力包成明確介面。&lt;/p&gt;
&lt;h2 id=&#34;和程式碼助手的區別&#34;&gt;和程式碼助手的區別
&lt;/h2&gt;&lt;p&gt;goose 不只是補全工具，而更像本機 agent runtime。&lt;/p&gt;
&lt;p&gt;程式碼助手通常聚焦補全、解釋、生成函式和編輯器局部修改。goose 更強調本地任務執行、多步驟工作流、provider 切換、擴展、桌面端和 CLI、可嵌入 API，以及非程式碼任務。&lt;/p&gt;
&lt;p&gt;這也意味著你需要認真處理模型配置、權限、擴展、工作目錄、日誌和憑據管理。&lt;/p&gt;
&lt;h2 id=&#34;自訂分發&#34;&gt;自訂分發
&lt;/h2&gt;&lt;p&gt;倉庫提供 &lt;code&gt;CUSTOM_DISTROS.md&lt;/code&gt;，可構建自己的 goose distro，預配置 provider、extensions 和 branding。&lt;/p&gt;
&lt;p&gt;團隊可用它預置允許的 provider、連接內部 MCP server、設定安全策略、限制外部服務，並加入自己的品牌和引導。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;先安裝桌面端或 CLI。&lt;/li&gt;
&lt;li&gt;配置一個確定可用的 provider。&lt;/li&gt;
&lt;li&gt;在測試目錄執行簡單任務。&lt;/li&gt;
&lt;li&gt;觀察它讀取哪些檔案、執行哪些動作。&lt;/li&gt;
&lt;li&gt;再接入 MCP extension。&lt;/li&gt;
&lt;li&gt;最後嘗試複雜倉庫或自動化流程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;保持幾個習慣：重要改動前先提交 git，不把 API key 寫進專案檔案，高權限模式只用於可信 workspace，公司資料先確認合規與 provider 政策，自動化結果保留人工 review。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;goose 是 AAIF/Linux Foundation 旗下的開源 AI Agent，提供桌面端、CLI 和 API，支援 15+ provider、ACP 訂閱接入和 70+ MCP extensions。&lt;/p&gt;
&lt;p&gt;它的價值不只是能寫程式碼，而是把模型、工具、擴展和本機執行環境放進同一個 agent 框架。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose GitHub 倉庫&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose 文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://goose-docs.ai/docs/getting-started/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;goose 安裝文件&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://aaif.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agentic AI Foundation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>筆記型電腦 RTX 4060 8GB 適合跑哪些本地 AI 模型</title>
        <link>https://knightli.com/zh-tw/2026/05/08/laptop-rtx-4060-8gb-local-ai-models/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/laptop-rtx-4060-8gb-local-ai-models/</guid>
        <description>&lt;p&gt;筆記型電腦 RTX 4060 8GB 可以玩本地 AI，但邊界很清楚：重點不是模型能不能啟動，而是顯存是否溢出。行動版 RTX 4060 也會受整機功耗、散熱、顯存頻寬和廠商調校影響。&lt;/p&gt;
&lt;p&gt;在 2026 年，8GB 顯存仍是本地 AI 的入門基準線。選對量化模型和工具鏈，它可以執行 3B-8B LLM、SDXL、SD 1.5、部分 FLUX 量化工作流、Whisper 轉寫和圖像特徵提取。若強行跑 14B 以上 LLM、未量化大模型或高顯存生圖工作流，速度會在溢出到系統記憶體後明顯崩掉。&lt;/p&gt;
&lt;p&gt;一句話：不要追最大模型，優先小模型、量化權重和低顯存工作流。&lt;/p&gt;
&lt;h2 id=&#34;顯存預算&#34;&gt;顯存預算
&lt;/h2&gt;&lt;p&gt;Windows 11、瀏覽器、驅動和背景程式會先佔一部分顯存。實際留給 AI 的顯存通常更接近 6.5GB-7.2GB。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM：優先 3B-8B，使用 4-bit 量化。&lt;/li&gt;
&lt;li&gt;圖像生成：優先 SDXL、SD 1.5、FLUX GGUF/NF4 低顯存工作流。&lt;/li&gt;
&lt;li&gt;多模態：優先 4B 左右輕量模型。&lt;/li&gt;
&lt;li&gt;語音：Whisper large-v3 可跑，但長批次要注意發熱。&lt;/li&gt;
&lt;li&gt;圖像索引：CLIP、ViT、SigLIP 很適合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;顯存一旦溢出到系統記憶體，體驗會很差。較小且完整放進 GPU 的模型，通常比半 offload 的大模型更好。&lt;/p&gt;
&lt;h2 id=&#34;llm3b-8b-量化模型&#34;&gt;LLM：3B-8B 量化模型
&lt;/h2&gt;&lt;p&gt;本地聊天和文本推理可用 Ollama、LM Studio、koboldcpp、llama.cpp 或其他支援 GGUF 的前端。8GB 顯存最舒服的區間是 3B-8B 的 4-bit 量化模型。&lt;/p&gt;
&lt;h3 id=&#34;全能輕量gemma-4-e4b&#34;&gt;全能輕量：Gemma 4 E4B
&lt;/h3&gt;&lt;p&gt;Gemma 4 E4B 是 Google 2026 年 Gemma 4 系列小模型之一，適合本地和端側使用。它可承擔日常問答、摘要、輕量多模態和低成本推理。&lt;/p&gt;
&lt;p&gt;筆記型 RTX 4060 建議優先找官方或社群量化版本，不要一開始就追最高精度權重。&lt;/p&gt;
&lt;p&gt;適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常問答。&lt;/li&gt;
&lt;li&gt;摘要和改寫。&lt;/li&gt;
&lt;li&gt;輕量資料整理。&lt;/li&gt;
&lt;li&gt;簡單程式碼解釋。&lt;/li&gt;
&lt;li&gt;圖像理解輕任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;推理與長文本deepseek-r1-distill-7b8bqwen-3-8b&#34;&gt;推理與長文本：DeepSeek R1 Distill 7B/8B、Qwen 3 8B
&lt;/h3&gt;&lt;p&gt;如果重視邏輯、數學、複雜分析和中文長文本，可試 DeepSeek R1 distill 7B/8B 或 Qwen 3 8B 量化版。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Q4_K_M&lt;/code&gt; 通常能讓 8B 模型進入 8GB 可承受範圍。實際速度受上下文長度、後端、驅動和筆電功耗模式影響。&lt;/p&gt;
&lt;p&gt;不建議一開始跑 14B、32B 或更大模型。即使能透過 CPU offload 啟動，體驗通常不如小模型全 GPU。&lt;/p&gt;
&lt;h3 id=&#34;程式碼qwen-25-coder-3b7b&#34;&gt;程式碼：Qwen 2.5 Coder 3B/7B
&lt;/h3&gt;&lt;p&gt;Qwen 2.5 Coder 3B 適合即時補全、解釋和小片段生成；7B 理解能力更好，但顯存和延遲更高。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;即時補全：3B。&lt;/li&gt;
&lt;li&gt;問答和解釋：3B 或 7B。&lt;/li&gt;
&lt;li&gt;小型重構：7B 量化。&lt;/li&gt;
&lt;li&gt;大型架構分析：不要期待 8GB 顯存容納完整專案上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;圖像生成&#34;&gt;圖像生成
&lt;/h2&gt;&lt;h3 id=&#34;sd-15-和-sdxl&#34;&gt;SD 1.5 和 SDXL
&lt;/h3&gt;&lt;p&gt;SD 1.5 對 8GB 很友好，速度快，生態成熟。SDXL 要求更高，但仍可用。&lt;/p&gt;
&lt;p&gt;推薦工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ComfyUI&lt;/li&gt;
&lt;li&gt;Stable Diffusion WebUI Forge&lt;/li&gt;
&lt;li&gt;Fooocus&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SD 1.5 適合快速出圖、LoRA、ControlNet；SDXL 更適合通用品質。&lt;/p&gt;
&lt;h3 id=&#34;flux1-schnell&#34;&gt;FLUX.1 schnell
&lt;/h3&gt;&lt;p&gt;FLUX 畫質和提示詞理解更強，但原始模型顯存壓力大。8GB 顯存建議使用 GGUF、NF4、FP8 等低顯存方案，搭配 ComfyUI-GGUF 或低顯存工作流。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 FLUX.1 schnell GGUF Q4/Q5。&lt;/li&gt;
&lt;li&gt;降低解析度或 batch size。&lt;/li&gt;
&lt;li&gt;使用 ComfyUI &lt;code&gt;--lowvram&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;不要同時掛太多 LoRA、ControlNet 和高清修復。&lt;/li&gt;
&lt;li&gt;觀察工作流切換後顯存是否釋放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以嘗試 1024px，但不要照搬 16GB/24GB 桌機工作流。&lt;/p&gt;
&lt;h2 id=&#34;多模態與效率工具&#34;&gt;多模態與效率工具
&lt;/h2&gt;&lt;p&gt;Whisper large-v3 可用於語音轉文字，適合會議錄音、課程音訊、影片字幕和素材整理。長批次要開性能模式並注意散熱。&lt;/p&gt;
&lt;p&gt;照片檢索系統則很適合 4060 8GB。CLIP、ViT、SigLIP 對顯存要求不誇張，可快速處理幾千張圖片。&lt;/p&gt;
&lt;p&gt;典型流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 CLIP/ViT/SigLIP 提取 embedding。&lt;/li&gt;
&lt;li&gt;保存到 SQLite 或向量庫。&lt;/li&gt;
&lt;li&gt;用文字或相似圖片檢索。&lt;/li&gt;
&lt;li&gt;用小型 LLM 生成標籤、描述或相簿摘要。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;推薦組合&#34;&gt;推薦組合
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ollama / LM Studio
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Gemma 4 E4B 量化版
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ DeepSeek R1 Distill 7B/8B Q4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Qwen 3 8B Q4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen 2.5 Coder 3B
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Qwen 2.5 Coder 7B Q4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Continue / Cline / 本地 OpenAI-compatible server
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ComfyUI / Forge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ SDXL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ SD 1.5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ FLUX.1 schnell GGUF Q4/Q5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CLIP / SigLIP / ViT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ SQLite / FAISS / LanceDB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Gemma 4 E4B 或 Phi-4 Mini 做文本整理
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;避坑&#34;&gt;避坑
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場景&lt;/th&gt;
          &lt;th&gt;建議&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;大模型&lt;/td&gt;
          &lt;td&gt;避免 14B+，除非接受明顯降速&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;量化&lt;/td&gt;
          &lt;td&gt;先選 &lt;code&gt;Q4_K_M&lt;/code&gt;，再嘗試 Q5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;顯存&lt;/td&gt;
          &lt;td&gt;用工作管理員或 &lt;code&gt;nvidia-smi&lt;/code&gt; 監控&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;散熱&lt;/td&gt;
          &lt;td&gt;生圖和批次任務開性能模式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;解析度&lt;/td&gt;
          &lt;td&gt;從 768px 或單張 1024px 開始&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;瀏覽器&lt;/td&gt;
          &lt;td&gt;關掉佔顯存的分頁&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;驅動&lt;/td&gt;
          &lt;td&gt;保持 NVIDIA 驅動較新&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;工作流&lt;/td&gt;
          &lt;td&gt;不要照搬 16GB/24GB ComfyUI 工作流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;建議定位&#34;&gt;建議定位
&lt;/h2&gt;&lt;p&gt;筆記型 RTX 4060 8GB 最適合做高性價比本地 AI 入門平台。它適合 3B-8B LLM、小型程式碼模型、SDXL、SD 1.5、FLUX 量化體驗、Whisper、圖像向量索引和照片管理。&lt;/p&gt;
&lt;p&gt;不適合長期跑 14B/32B、大型未量化模型、高解析度批量 FLUX、大規模影片生成或多模型同時常駐。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepmind.google/models/gemma/gemma-4/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google DeepMind: Gemma 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2501.12948&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-R1 論文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://comfyui-wiki.com/en/tutorial/advanced/image/flux/flux-1-dev-t2i&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ComfyUI FLUX.1 GGUF 指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/vava22684/FLUX.1-schnell-gguf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FLUX.1 schnell GGUF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code 24 個使用技巧：計劃模式、回滾、CLAUDE.md、Skills、Agents 和插件</title>
        <link>https://knightli.com/zh-tw/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</link>
        <pubDate>Fri, 08 May 2026 08:54:14 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</guid>
        <description>&lt;p&gt;Claude Code 不只是一個聊天框。它更像一個能進入專案目錄、讀寫檔案、執行命令、維護上下文的編程 Agent。&lt;/p&gt;
&lt;p&gt;如果只是把需求丟進去讓它生成程式碼，很快會遇到幾個問題：計劃不夠清楚、權限反覆確認、上下文越來越長、生成結果不滿意、不知道怎麼回滾，也不知道怎麼把專案規則長期保存下來。&lt;/p&gt;
&lt;p&gt;下面整理一組常用操作，適合剛開始使用 Claude Code 的開發者快速建立工作流。&lt;/p&gt;
&lt;h2 id=&#34;先在專案目錄啟動&#34;&gt;先在專案目錄啟動
&lt;/h2&gt;&lt;p&gt;Claude Code 最好在專案目錄裡啟動，而不是隨便打開一個終端就開始用。&lt;/p&gt;
&lt;p&gt;可以先建立一個資料夾作為專案目錄，進入目錄後打開命令列，再啟動 Claude Code：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;首次進入專案時，如果 Claude Code 詢問是否信任目前資料夾，確認後再繼續。這樣它才能圍繞目前專案讀取檔案、建立檔案和執行後續操作。&lt;/p&gt;
&lt;p&gt;一個簡單的練習方式是讓它建立一個攝影師個人網站。這個任務足夠直觀：能看到頁面效果，也能練習檔案生成、命令執行、回滾和後續重構。&lt;/p&gt;
&lt;h2 id=&#34;計劃模式先把方向想清楚&#34;&gt;計劃模式先把方向想清楚
&lt;/h2&gt;&lt;p&gt;Claude Code 在面對較複雜任務時會進入計劃模式。計劃模式的作用是先討論需求、拆解步驟，再讓使用者決定是否批准執行。&lt;/p&gt;
&lt;p&gt;當它給出計劃後，通常會出現幾類選擇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批准計劃，並允許後續自動使用編輯工具。&lt;/li&gt;
&lt;li&gt;批准計劃，但後續編輯仍然需要手動確認。&lt;/li&gt;
&lt;li&gt;暫停執行，繼續和 Claude Code 討論計劃。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任務比較明確，可以批准計劃並繼續。如果任務還不清楚，建議先讓它繼續補充方案，比如頁面風格、技術棧、目錄結構、互動效果和驗收標準。&lt;/p&gt;
&lt;p&gt;計劃模式的好處是減少返工。直接讓 Agent 動手，可能很快生成一堆檔案；但如果方向錯了，後面越改越亂。&lt;/p&gt;
&lt;h2 id=&#34;用-shift--tab-切換模式&#34;&gt;用 Shift + Tab 切換模式
&lt;/h2&gt;&lt;p&gt;在 Claude Code 中，可以用 &lt;code&gt;Shift + Tab&lt;/code&gt; 在不同工作模式之間切換。常見用途是進入計劃模式，或者切換到自動同意編輯工具的模式。&lt;/p&gt;
&lt;p&gt;建議的習慣是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新專案、新功能、大改動：先進入計劃模式。&lt;/li&gt;
&lt;li&gt;小改動、明確修復：可以直接執行。&lt;/li&gt;
&lt;li&gt;涉及刪除、批量替換、安裝依賴：保持人工確認。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;計劃模式下，Claude Code 可能會主動詢問專案細節。可以用方向鍵選擇選項，用回車確認。提交回饋後，它會根據你的選擇更新計劃。&lt;/p&gt;
&lt;h2 id=&#34;權限確認不要一律放開&#34;&gt;權限確認不要一律放開
&lt;/h2&gt;&lt;p&gt;Claude Code 執行命令、編輯檔案或啟動程式時，可能會申請權限。&lt;/p&gt;
&lt;p&gt;常見選擇包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只同意本次使用。&lt;/li&gt;
&lt;li&gt;在目前會話中以後都同意同類命令。&lt;/li&gt;
&lt;li&gt;拒絕或暫停。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是啟動本地頁面、運行開發伺服器、查看檔案，可以根據需要允許。但不要為了省事長期使用「自動同意所有權限」的啟動方式。&lt;/p&gt;
&lt;p&gt;全自動權限適合非常確定、風險很低、專案已經有 Git 備份的場景。日常使用中，涉及刪除檔案、覆蓋目錄、安裝依賴、聯網、提交程式碼、執行腳本時，最好保留人工確認。&lt;/p&gt;
&lt;h2 id=&#34;用終端模式執行本地命令&#34;&gt;用終端模式執行本地命令
&lt;/h2&gt;&lt;p&gt;Claude Code 裡可以進入終端命令模式，直接執行一些本地命令。&lt;/p&gt;
&lt;p&gt;例如頁面生成後，可以用系統命令打開 HTML 檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;start index.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡的 &lt;code&gt;start&lt;/code&gt; 是 Windows 下打開檔案的命令，後面接檔名。這樣可以快速查看生成頁面，而不用手動去資源管理器裡找檔案。&lt;/p&gt;
&lt;p&gt;終端模式適合執行這些輕量操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打開生成的頁面。&lt;/li&gt;
&lt;li&gt;查看目錄內容。&lt;/li&gt;
&lt;li&gt;啟動本地開發伺服器。&lt;/li&gt;
&lt;li&gt;運行測試或構建命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但高風險命令仍然要謹慎，比如遞歸刪除、移動目錄、批量覆蓋和修改系統環境。&lt;/p&gt;
&lt;h2 id=&#34;回滾結果不滿意時及時退回&#34;&gt;回滾：結果不滿意時及時退回
&lt;/h2&gt;&lt;p&gt;如果 Claude Code 做出的頁面或程式碼不是你想要的，而且越改越亂，就應該及時回滾。&lt;/p&gt;
&lt;p&gt;回滾功能可以把對話或程式碼退回到某個節點。常見選項包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同時回滾程式碼和對話。&lt;/li&gt;
&lt;li&gt;只回滾對話。&lt;/li&gt;
&lt;li&gt;只回滾程式碼。&lt;/li&gt;
&lt;li&gt;把某個節點之前的內容壓縮成摘要。&lt;/li&gt;
&lt;li&gt;取消操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更推薦在明顯走偏時選擇「同時回滾程式碼和對話」。這樣可以讓上下文和檔案狀態一起回到較乾淨的位置。&lt;/p&gt;
&lt;p&gt;需要注意：Claude Code 的回滾通常只能覆蓋它透過內建工具建立或修改的檔案。如果檔案是透過外部命令生成的，未必能完整回滾。因此重要專案仍然要配合 Git 使用。&lt;/p&gt;
&lt;h2 id=&#34;長提示詞用編輯器寫&#34;&gt;長提示詞用編輯器寫
&lt;/h2&gt;&lt;p&gt;複雜需求不要全擠在一行輸入框裡。&lt;/p&gt;
&lt;p&gt;如果系統支援在文字編輯器中編輯長提示詞，可以打開編輯器，把需求寫完整後保存，再發送給 Claude Code。&lt;/p&gt;
&lt;p&gt;長提示詞裡建議寫清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目標是什麼。&lt;/li&gt;
&lt;li&gt;使用什麼技術棧。&lt;/li&gt;
&lt;li&gt;不要做什麼。&lt;/li&gt;
&lt;li&gt;需要保留哪些檔案。&lt;/li&gt;
&lt;li&gt;完成後如何驗證。&lt;/li&gt;
&lt;li&gt;頁面或功能的驗收標準。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如讓 Claude Code 把一個普通 HTML 頁面重構成更現代的技術棧時，不要只寫「重構一下」。可以說明希望使用元件化結構、保留視覺內容、增加響應式布局，並要求它運行構建檢查。&lt;/p&gt;
&lt;h2 id=&#34;退出後用歷史恢復會話&#34;&gt;退出後用歷史恢復會話
&lt;/h2&gt;&lt;p&gt;如果中途需要退出 Claude Code，可以正常退出。之後回到同一個專案目錄，再次啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果發現前面的記錄沒有直接顯示，可以使用歷史相關命令查看最近會話，並載入之前的會話。&lt;/p&gt;
&lt;p&gt;這個功能適合中斷後繼續工作。不過不要把會話歷史當成唯一記憶。專案規則、技術棧、常用命令和注意事項，最好寫進專案檔案裡。&lt;/p&gt;
&lt;h2 id=&#34;用-claudemd-保存專案規則&#34;&gt;用 CLAUDE.md 保存專案規則
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是 Claude Code 很重要的記憶檔案。它通常放在專案根目錄，用來告訴 Claude Code 專案規則、技術棧、目錄結構和協作約束。&lt;/p&gt;
&lt;p&gt;可以讓 Claude Code 初始化這個檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 適合記錄：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案目標。&lt;/li&gt;
&lt;li&gt;技術棧。&lt;/li&gt;
&lt;li&gt;常用啟動、測試、構建命令。&lt;/li&gt;
&lt;li&gt;目錄說明。&lt;/li&gt;
&lt;li&gt;程式碼風格。&lt;/li&gt;
&lt;li&gt;不允許執行的操作。&lt;/li&gt;
&lt;li&gt;提交和部署規則。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次對話時，Claude Code 會把這類規則作為上下文的一部分使用。你可以把它理解成「專案說明書」。&lt;/p&gt;
&lt;p&gt;一個簡單驗證方式是：在 &lt;code&gt;CLAUDE.md&lt;/code&gt; 裡加入一條明顯規則，然後再向 Claude Code 提問。如果回答遵循了這條規則，就說明它確實讀到了專案記憶。&lt;/p&gt;
&lt;h2 id=&#34;用--引用檔案&#34;&gt;用 @ 引用檔案
&lt;/h2&gt;&lt;p&gt;在輸入框中使用 &lt;code&gt;@&lt;/code&gt;，可以選擇檔案或 Agent，把指定內容加入目前對話上下文。&lt;/p&gt;
&lt;p&gt;這適合幾類場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讓 Claude Code 閱讀某個配置檔案。&lt;/li&gt;
&lt;li&gt;讓它修改某個指定頁面。&lt;/li&gt;
&lt;li&gt;讓它根據 &lt;code&gt;CLAUDE.md&lt;/code&gt; 或其他文件繼續工作。&lt;/li&gt;
&lt;li&gt;明確告訴它「只看這個檔案，不要猜專案結構」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比把檔案內容複製到輸入框裡，&lt;code&gt;@&lt;/code&gt; 引用更清楚，也更不容易漏內容。&lt;/p&gt;
&lt;h2 id=&#34;查看和壓縮上下文&#34;&gt;查看和壓縮上下文
&lt;/h2&gt;&lt;p&gt;長時間對話後，上下文會越來越大。上下文太長時，模型可能變慢，也可能開始忽略早期細節。&lt;/p&gt;
&lt;p&gt;可以使用上下文查看命令了解目前占用情況：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/context
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果上下文已經很長，可以壓縮歷史：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果壓縮後效果仍然不好，可以考慮清空目前上下文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;清空上下文後，Claude Code 仍然可以透過專案檔案、&lt;code&gt;CLAUDE.md&lt;/code&gt; 和目前目錄重新理解一部分專案情況，但不會保留完整對話歷史。&lt;/p&gt;
&lt;p&gt;實用建議是：一個任務完成後就開新會話；專案級規則寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;；臨時討論不要無限堆在一個聊天裡。&lt;/p&gt;
&lt;h2 id=&#34;skills把固定流程做成說明書&#34;&gt;Skills：把固定流程做成說明書
&lt;/h2&gt;&lt;p&gt;Skills 可以理解為 Claude Code 的工作說明書。它不是一次性提示詞，而是一套可複用的任務流程。&lt;/p&gt;
&lt;p&gt;例如你經常要生成週報，就可以建立一個週報 Skill，裡面寫清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸入需要哪些資訊。&lt;/li&gt;
&lt;li&gt;輸出格式是什麼。&lt;/li&gt;
&lt;li&gt;語氣和結構怎麼控制。&lt;/li&gt;
&lt;li&gt;哪些內容必須保留。&lt;/li&gt;
&lt;li&gt;哪些內容不能編造。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 通常由 &lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt; 和具體指令組成。安裝到全域 Skills 目錄後，Claude Code 在遇到相關任務時可以識別並載入。&lt;/p&gt;
&lt;p&gt;這適合處理重複工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;週報。&lt;/li&gt;
&lt;li&gt;程式碼審查模板。&lt;/li&gt;
&lt;li&gt;文件整理。&lt;/li&gt;
&lt;li&gt;圖片批次處理。&lt;/li&gt;
&lt;li&gt;固定格式文章。&lt;/li&gt;
&lt;li&gt;專案初始化流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你發現自己反覆複製同一段提示詞，就可以考慮把它做成 Skill。&lt;/p&gt;
&lt;h2 id=&#34;agents把子任務交給獨立助手&#34;&gt;Agents：把子任務交給獨立助手
&lt;/h2&gt;&lt;p&gt;Agents 和 Skills 不一樣。&lt;/p&gt;
&lt;p&gt;Skill 更像說明書，告訴 Claude Code 怎麼做某類任務；Agent 更像一個獨立助手，可以在目前主會話之外執行任務，完成後把結果返回。&lt;/p&gt;
&lt;p&gt;Agents 的價值在於隔離上下文。比如做程式碼巡檢時，可以建立一個唯讀 Agent，讓它只讀取專案並輸出報告，不直接修改檔案。這樣不會污染主會話，也能降低誤操作風險。&lt;/p&gt;
&lt;p&gt;建立 Agent 時通常要考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是專案級 Agent，還是使用者級 Agent。&lt;/li&gt;
&lt;li&gt;是否需要 Claude Code 幫你生成配置。&lt;/li&gt;
&lt;li&gt;允許哪些工具權限。&lt;/li&gt;
&lt;li&gt;使用哪個模型。&lt;/li&gt;
&lt;li&gt;是否保存記憶。&lt;/li&gt;
&lt;li&gt;Agent 的提示詞是否足夠明確。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對於程式碼巡檢類 Agent，建議只給讀取權限，不給寫入權限。先讓它輸出報告，再由主會話決定是否修改程式碼。&lt;/p&gt;
&lt;h2 id=&#34;插件打包-skillsagentsmcp-和-hooks&#34;&gt;插件：打包 Skills、Agents、MCP 和 Hooks
&lt;/h2&gt;&lt;p&gt;插件可以理解為更完整的能力包。它可能同時包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Agents&lt;/li&gt;
&lt;li&gt;MCP&lt;/li&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相比單獨安裝一個 Skill，插件更適合成套能力。例如前端設計插件可能會把頁面審美、布局規則、元件習慣和相關 Agent 一起打包。&lt;/p&gt;
&lt;p&gt;安裝插件時通常會有幾個位置選項：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安裝到使用者目錄，對所有專案生效。&lt;/li&gt;
&lt;li&gt;安裝到專案目錄，隨專案共享。&lt;/li&gt;
&lt;li&gt;安裝到本地專案目錄，只在目前電腦生效。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是個人常用能力，可以放在使用者目錄；如果是團隊專案約定，可以放進專案目錄；如果只是臨時測試，放本地專案目錄更穩。&lt;/p&gt;
&lt;h2 id=&#34;插件能明顯改善特定任務效果&#34;&gt;插件能明顯改善特定任務效果
&lt;/h2&gt;&lt;p&gt;在前端頁面生成這類任務裡，插件往往比裸提示詞更穩定。&lt;/p&gt;
&lt;p&gt;例如同樣是「製作一個攝影師個人網頁」，只用普通提示詞可能生成一個能看的頁面；如果明確使用前端設計插件，頁面結構、視覺層次、間距、配色和整體完成度通常會更好。&lt;/p&gt;
&lt;p&gt;這並不意味著插件能替代人工審美。更合理的用法是：先讓插件生成一個更好的初稿，再由人做細節微調。&lt;/p&gt;
&lt;h2 id=&#34;一套更穩的-claude-code-工作流&#34;&gt;一套更穩的 Claude Code 工作流
&lt;/h2&gt;&lt;p&gt;把上面這些技巧組合起來，可以形成一套比較穩的流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在專案目錄啟動 &lt;code&gt;claude&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;先用計劃模式討論需求。&lt;/li&gt;
&lt;li&gt;批准計劃前確認技術棧和驗收標準。&lt;/li&gt;
&lt;li&gt;涉及高風險操作時保留手動確認。&lt;/li&gt;
&lt;li&gt;用終端模式執行本地預覽和測試。&lt;/li&gt;
&lt;li&gt;結果走偏時及時回滾。&lt;/li&gt;
&lt;li&gt;把專案規則寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;長對話定期查看和壓縮上下文。&lt;/li&gt;
&lt;li&gt;重複流程沉澱成 Skills。&lt;/li&gt;
&lt;li&gt;巡檢、研究、分析類任務交給唯讀 Agents。&lt;/li&gt;
&lt;li&gt;特定領域任務優先用插件。&lt;/li&gt;
&lt;li&gt;重要專案始終配合 Git 提交點。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣使用 Claude Code，會比單純「發一句需求等它生成」穩定得多。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Claude Code 的效率不只來自模型能力，也來自工作流控制。&lt;/p&gt;
&lt;p&gt;計劃模式決定方向，權限確認控制風險，回滾減少返工，&lt;code&gt;CLAUDE.md&lt;/code&gt; 保存專案規則，&lt;code&gt;/context&lt;/code&gt;、&lt;code&gt;/compact&lt;/code&gt; 和 &lt;code&gt;/clear&lt;/code&gt; 管理上下文，Skills 複用固定流程，Agents 隔離複雜子任務，插件則把成套能力打包進專案。&lt;/p&gt;
&lt;p&gt;真正好用的 Claude Code 工作方式，是讓它在清楚邊界內持續推進任務，而不是把整個專案一次性交給它自由發揮。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Opus 4.7、Sonnet 4.6、Haiku 4.5 有什麼區別？Claude 模型選擇指南</title>
        <link>https://knightli.com/zh-tw/2026/05/08/anthropic-claude-model-lineup/</link>
        <pubDate>Fri, 08 May 2026 08:19:03 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/08/anthropic-claude-model-lineup/</guid>
        <description>&lt;p&gt;Anthropic 的核心大模型主要透過 &lt;code&gt;Claude&lt;/code&gt; 系列迭代。到 2026 年 5 月，Claude 的主流產品線已經進入 4.x 階段，整體仍然延續三檔定位：&lt;code&gt;Opus&lt;/code&gt; 負責最高能力，&lt;code&gt;Sonnet&lt;/code&gt; 負責效能與成本平衡，&lt;code&gt;Haiku&lt;/code&gt; 負責速度和性價比。&lt;/p&gt;
&lt;p&gt;如果只想快速選型，可以先記住一句話：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最複雜、最重的推理和 agentic coding：優先看 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;大多數開發、寫作、分析和企業 API 場景：從 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 開始最穩。&lt;/li&gt;
&lt;li&gt;高併發、低延遲、成本敏感任務：考慮 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;當前主流模型&#34;&gt;當前主流模型
&lt;/h2&gt;&lt;p&gt;根據 Anthropic 官方模型文件，當前 Claude 主流模型可以這樣理解。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;定位&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;當前最強的通用可用模型，面向複雜推理和 agentic coding&lt;/td&gt;
          &lt;td&gt;大型程式碼庫重構、多步驟任務、複雜策略分析、要求更高一致性的工作&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Sonnet 4.6&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;速度、能力和成本的平衡點，支援 100 萬 token 上下文視窗&lt;/td&gt;
          &lt;td&gt;程式碼生成、長文件分析、企業知識工作、Agent 開發、日常高品質生產任務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Claude Haiku 4.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;速度最快、成本更低的小模型，但仍有接近前沿模型的能力&lt;/td&gt;
          &lt;td&gt;即時對話、客服、批次分類、簡單程式碼協作、高併發 API 呼叫&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這裡需要注意兩個命名細節。&lt;/p&gt;
&lt;p&gt;第一，官方名稱是 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;，不是 &lt;code&gt;Claude 4.5 Haiku&lt;/code&gt;。第二，&lt;code&gt;Claude Mythos Preview&lt;/code&gt; 不是普通使用者或開發者的主流可用模型，它是 Project Glasswing 相關的受控研究預覽，主要面向防禦性網路安全工作流，不應和常規 Claude 模型混在一起選型。&lt;/p&gt;
&lt;h2 id=&#34;opus處理最難的問題&#34;&gt;Opus：處理最難的問題
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Opus&lt;/code&gt; 是 Anthropic 給最強模型使用的檔位。&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 的重點不是便宜，也不是最快，而是更適合處理複雜、多步驟、需要反覆校驗的任務。&lt;/p&gt;
&lt;p&gt;它更適合這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跨很多檔案的大型程式碼修改。&lt;/li&gt;
&lt;li&gt;複雜系統重構和架構推理。&lt;/li&gt;
&lt;li&gt;長鏈路 Agent 任務。&lt;/li&gt;
&lt;li&gt;需要更強視覺理解、文件理解和多輪規劃的工作。&lt;/li&gt;
&lt;li&gt;對錯誤成本比較敏感的企業分析任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個任務失敗一次的代價很高，或者你希望模型在開始動手前花更多時間理解上下文，&lt;code&gt;Opus&lt;/code&gt; 通常更值得嘗試。&lt;/p&gt;
&lt;h2 id=&#34;sonnet多數人的預設起點&#34;&gt;Sonnet：多數人的預設起點
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 是更適合作為預設入口的模型。它的定位不是「低配 Opus」，而是把足夠強的推理、程式設計、視覺理解、長上下文和 agent planning 放在更可控的成本與速度裡。&lt;/p&gt;
&lt;p&gt;對開發者來說，&lt;code&gt;Sonnet 4.6&lt;/code&gt; 的價值主要在三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;能處理很長的上下文，適合放入程式碼庫、合約、報告或多篇資料。&lt;/li&gt;
&lt;li&gt;在 Claude Code、API 和企業場景中更容易作為常用模型。&lt;/li&gt;
&lt;li&gt;成本低於 Opus，更適合高頻使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你不知道該從哪個 Claude 模型開始，通常可以從 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; 開始。只有在任務明顯需要更強能力時，再切到 &lt;code&gt;Opus&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;haiku快和便宜更重要時&#34;&gt;Haiku：快和便宜更重要時
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Haiku 4.5&lt;/code&gt; 是小模型檔位，但不能簡單理解成「弱模型」。Anthropic 對它的定位是快速、低成本，同時保留接近前沿模型的能力。&lt;/p&gt;
&lt;p&gt;它適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;即時聊天和客服機器人。&lt;/li&gt;
&lt;li&gt;大量短文字分類。&lt;/li&gt;
&lt;li&gt;低延遲 API 呼叫。&lt;/li&gt;
&lt;li&gt;簡單程式碼修改和快速原型。&lt;/li&gt;
&lt;li&gt;多 Agent 工作流中的子任務執行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任務本身很清楚、上下文不複雜、需要吞吐量，&lt;code&gt;Haiku&lt;/code&gt; 往往比盲目使用更大的模型更合理。&lt;/p&gt;
&lt;h2 id=&#34;claude-的工具能力&#34;&gt;Claude 的工具能力
&lt;/h2&gt;&lt;p&gt;Claude 系列不只是聊天模型。Anthropic 現在把模型能力放進了多種產品和開發工具裡。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; 是面向開發者的命令列程式設計工具，可以讀取程式碼庫、編輯檔案、執行命令和測試，適合持續推進工程任務。它的體驗很依賴模型本身的程式碼理解、上下文管理和工具呼叫穩定性。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Computer Use&lt;/code&gt; 是讓模型透過截圖、滑鼠和鍵盤操作桌面環境的能力。它仍然需要謹慎使用，官方文件也強調要放在隔離環境中執行，避免誤操作或安全風險。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Artifacts&lt;/code&gt; 更偏向 Claude 應用側體驗，可以把程式碼、頁面原型、圖表或文件結果放在介面中預覽和迭代。它不是一個單獨模型，而是 Claude 產品形態的一部分。&lt;/p&gt;
&lt;p&gt;至於「Managed Agents」或「自我進化 Agent」這類說法，寫文章時要謹慎。Anthropic 確實在強化 Agent SDK、Claude Code、長上下文、工具呼叫和企業工作流，但不要把它描述成已經具備不受控自我進化能力。&lt;/p&gt;
&lt;h2 id=&#34;存取方式&#34;&gt;存取方式
&lt;/h2&gt;&lt;p&gt;普通使用者可以透過 &lt;code&gt;Claude.ai&lt;/code&gt; 網頁端或行動端使用 Claude，不同方案會影響可用模型、額度和功能。&lt;/p&gt;
&lt;p&gt;開發者通常有幾種接入方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic Console 和 Claude API。&lt;/li&gt;
&lt;li&gt;Amazon Bedrock。&lt;/li&gt;
&lt;li&gt;Google Cloud Vertex AI。&lt;/li&gt;
&lt;li&gt;Microsoft Foundry。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;具體可用模型、上下文視窗、價格和地區支援會變化，開發前最好以 Anthropic 官方模型文件和對應雲平台頁面為準。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;實際使用時，不需要一開始就追求最強模型。更好的方式是按任務成本分層。&lt;/p&gt;
&lt;p&gt;如果是日常寫作、程式碼生成、長文件分析、知識整理和大多數 Agent 原型，先用 &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt;。它通常是性價比和通用能力的最佳起點。&lt;/p&gt;
&lt;p&gt;如果任務需要更強的複雜推理、跨檔案工程修改、長鏈路規劃或更高可靠性，再切到 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果任務簡單、數量大、對延遲敏感，例如分類、摘要、客服、批次處理，就把 &lt;code&gt;Claude Haiku 4.5&lt;/code&gt; 放進候選。&lt;/p&gt;
&lt;p&gt;Claude 的模型線不是單純的「新版本替代舊版本」，而是一套按任務難度、速度和成本分層的工具箱。選對模型，比盲目使用最貴模型更重要。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Anthropic Models Overview：&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/models/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://platform.claude.com/docs/en/about-claude/models/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Opus 4.7：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-opus-4-7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-opus-4-7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Sonnet 4.6：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-sonnet-4-6&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-sonnet-4-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing Claude Haiku 4.5：&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-haiku-4-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.anthropic.com/news/claude-haiku-4-5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic Computer Use Tool：&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/computer-use&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.anthropic.com/en/docs/build-with-claude/computer-use&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-5.5、GPT-5.5 Instant、GPT-5.5 Thinking 和 GPT-5.5 Pro 有什麼區別</title>
        <link>https://knightli.com/zh-tw/2026/05/07/gpt-5-5-instant-thinking-pro-differences/</link>
        <pubDate>Thu, 07 May 2026 21:59:33 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/07/gpt-5-5-instant-thinking-pro-differences/</guid>
        <description>&lt;p&gt;OpenAI 現在把 GPT-5.5 拆成了幾個更明確的使用層級：&lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt; 和 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;很多人看到 &lt;code&gt;GPT-5.5&lt;/code&gt;、&lt;code&gt;GPT-5.5 Instant&lt;/code&gt;、&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;、&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 會混在一起。簡單說：&lt;code&gt;GPT-5.5&lt;/code&gt; 是這一代模型能力的總稱，&lt;code&gt;Instant&lt;/code&gt; 是日常快速模型，&lt;code&gt;Thinking&lt;/code&gt; 是深度推理模式，&lt;code&gt;Pro&lt;/code&gt; 是更高強度的研究級模式。&lt;/p&gt;
&lt;h2 id=&#34;快速對比&#34;&gt;快速對比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名稱&lt;/th&gt;
          &lt;th&gt;本質&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
          &lt;th&gt;速度/成本&lt;/th&gt;
          &lt;th&gt;可用性&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td&gt;GPT-5.5 主模型/家族名；在 ChatGPT 裡通常對應 GPT-5.5 Thinking 的能力定位&lt;/td&gt;
          &lt;td&gt;複雜工作、程式碼、研究、分析、工具呼叫&lt;/td&gt;
          &lt;td&gt;比 Instant 更重，但能力更強&lt;/td&gt;
          &lt;td&gt;Plus、Pro、Business、Enterprise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Instant&lt;/td&gt;
          &lt;td&gt;快速預設模型，替代 GPT-5.3 Instant&lt;/td&gt;
          &lt;td&gt;日常問答、寫作、摘要、輕量程式碼、快速查詢&lt;/td&gt;
          &lt;td&gt;最快、最省額度&lt;/td&gt;
          &lt;td&gt;面向所有 ChatGPT 使用者逐步推出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;深度推理模式&lt;/td&gt;
          &lt;td&gt;難題、長上下文分析、複雜程式碼、研究、文件密集任務&lt;/td&gt;
          &lt;td&gt;較慢，但推理更穩&lt;/td&gt;
          &lt;td&gt;付費使用者可手動選擇&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
          &lt;td&gt;更高強度的研究級模式&lt;/td&gt;
          &lt;td&gt;高風險/高精度任務：法律、商業、教育、資料科學、科研分析&lt;/td&gt;
          &lt;td&gt;最慢、最重，追求品質&lt;/td&gt;
          &lt;td&gt;Pro、Business、Enterprise、Edu&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只想記一個選擇規則：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;日常快速任務&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;複雜推理和程式碼分析&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特別難、特別重要、需要更全面嚴謹&lt;/strong&gt;：用 &lt;code&gt;GPT-5.5 Pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gpt-55-是什麼&#34;&gt;GPT-5.5 是什麼
&lt;/h2&gt;&lt;p&gt;單獨說 &lt;code&gt;GPT-5.5&lt;/code&gt; 時，通常是在說 GPT-5.5 這一代主模型能力，而不是某一個固定按鈕。&lt;/p&gt;
&lt;p&gt;OpenAI 對 GPT-5.5 的定位是「面向真實工作的更強模型」。它重點提升的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agentic coding；&lt;/li&gt;
&lt;li&gt;複雜程式碼除錯；&lt;/li&gt;
&lt;li&gt;研究和資料綜合；&lt;/li&gt;
&lt;li&gt;文件、表格、簡報生成；&lt;/li&gt;
&lt;li&gt;電腦使用和跨工具工作；&lt;/li&gt;
&lt;li&gt;長任務中的持續推理和自我檢查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 ChatGPT 裡，使用者看到的不是一個籠統的 &lt;code&gt;GPT-5.5&lt;/code&gt; 按鈕，而是更具體的 &lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt;、&lt;code&gt;Pro&lt;/code&gt;。所以如果有人說「我在用 GPT-5.5」，最好再問一句：是 Instant、Thinking，還是 Pro？&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant預設快速日常使用&#34;&gt;GPT-5.5 Instant：預設、快速、日常使用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 是新的快速預設模型。OpenAI 官方說明裡，它開始替代 &lt;code&gt;GPT-5.3 Instant&lt;/code&gt;，成為 ChatGPT 的預設模型，並在 API 中作為 &lt;code&gt;chat-latest&lt;/code&gt; 提供。&lt;/p&gt;
&lt;p&gt;它適合這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常聊天；&lt;/li&gt;
&lt;li&gt;快速問答；&lt;/li&gt;
&lt;li&gt;普通寫作；&lt;/li&gt;
&lt;li&gt;摘要文章；&lt;/li&gt;
&lt;li&gt;改寫郵件；&lt;/li&gt;
&lt;li&gt;輕量程式碼解釋；&lt;/li&gt;
&lt;li&gt;簡單表格和清單；&lt;/li&gt;
&lt;li&gt;不需要長時間推理的任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instant 的核心優勢是速度和預設可用性。你不需要每次都手動選擇推理模式，也不需要為普通問題付出更高延遲。&lt;/p&gt;
&lt;p&gt;它還有一個變化：OpenAI 強調 GPT-5.5 Instant 的回答更清晰、更簡潔，並且個人化能力更強。對普通使用者來說，這意味著它更適合「每天一直開著用」。&lt;/p&gt;
&lt;p&gt;需要注意的是，Instant 不是「最強模式」。遇到複雜數學、長程式碼、架構設計、多檔案分析、嚴肅研究時，它可能會自動切換到 Thinking，也可能需要你手動選擇 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-thinking複雜任務的主力&#34;&gt;GPT-5.5 Thinking：複雜任務的主力
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 是更適合複雜任務的推理模式。&lt;/p&gt;
&lt;p&gt;它適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;程式碼除錯；&lt;/li&gt;
&lt;li&gt;架構設計；&lt;/li&gt;
&lt;li&gt;多步驟推理；&lt;/li&gt;
&lt;li&gt;長文件分析；&lt;/li&gt;
&lt;li&gt;學術資料整理；&lt;/li&gt;
&lt;li&gt;商業方案推演；&lt;/li&gt;
&lt;li&gt;資料分析解釋；&lt;/li&gt;
&lt;li&gt;需要比較、權衡、驗證的任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thinking 的特點是會花更多時間推理。OpenAI Help Center 提到，當 GPT-5.5 Thinking 或 GPT-5.5 Pro 開始推理時，可能會先顯示一個簡短 preamble，說明它打算怎麼做。使用者也可以在模型還在 thinking 時追加指令，提前調整方向。&lt;/p&gt;
&lt;p&gt;在 ChatGPT 裡，手動選擇 Thinking 時，還可以調整 thinking time。官方說明中，Plus 和 Business 使用者可以使用 &lt;code&gt;Standard&lt;/code&gt; 和 &lt;code&gt;Extended&lt;/code&gt;；Pro 使用者還會有 &lt;code&gt;Light&lt;/code&gt; 和 &lt;code&gt;Heavy&lt;/code&gt; 等更多選項。&lt;/p&gt;
&lt;p&gt;我的理解是：Thinking 是「認真幹活」的預設選擇。只要任務涉及多步驟、長上下文或高準確性要求，就比 Instant 更合適。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-pro研究級更重更嚴謹&#34;&gt;GPT-5.5 Pro：研究級、更重、更嚴謹
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 是面向更難問題和更高精度工作的模式。&lt;/p&gt;
&lt;p&gt;它適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;法律材料分析；&lt;/li&gt;
&lt;li&gt;商業研究；&lt;/li&gt;
&lt;li&gt;教育和課程設計；&lt;/li&gt;
&lt;li&gt;資料科學；&lt;/li&gt;
&lt;li&gt;科研資料綜合；&lt;/li&gt;
&lt;li&gt;高風險決策前的深度審閱；&lt;/li&gt;
&lt;li&gt;多文件、多約束、多輪驗證任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 在 GPT-5.5 發布說明中提到，早期測試者認為 GPT-5.5 Pro 相比 GPT-5.4 Pro，在完整性、結構性、準確性、相關性和實用性上都有明顯提升，尤其在商業、法律、教育和資料科學領域表現更強。&lt;/p&gt;
&lt;p&gt;Pro 的缺點也很明顯：它更慢、更重，不適合每個小問題都用。它更像「專家審閱/研究夥伴」，而不是日常聊天入口。&lt;/p&gt;
&lt;p&gt;另外，Pro 在工具支援上有特殊限制。OpenAI Help Center 寫明，Apps、Memory、Canvas 和圖像生成不適用於 Pro。如果你的任務需要這些 ChatGPT 功能，可能要用 Instant 或 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;工具支援有什麼不同&#34;&gt;工具支援有什麼不同
&lt;/h2&gt;&lt;p&gt;根據 OpenAI Help Center，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 和 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 支援 ChatGPT 的常用工具，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web search；&lt;/li&gt;
&lt;li&gt;Data analysis；&lt;/li&gt;
&lt;li&gt;Image analysis；&lt;/li&gt;
&lt;li&gt;File analysis；&lt;/li&gt;
&lt;li&gt;Canvas；&lt;/li&gt;
&lt;li&gt;Image generation；&lt;/li&gt;
&lt;li&gt;Memory；&lt;/li&gt;
&lt;li&gt;Custom Instructions。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 更偏研究級推理，但不是所有 ChatGPT 工具都可用。尤其要注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apps 不可用；&lt;/li&gt;
&lt;li&gt;Memory 不可用；&lt;/li&gt;
&lt;li&gt;Canvas 不可用；&lt;/li&gt;
&lt;li&gt;圖像生成不可用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以選擇模型時，不只看「哪個更聰明」，還要看你要用哪些工具。&lt;/p&gt;
&lt;h2 id=&#34;上下文窗口有什麼區別&#34;&gt;上下文窗口有什麼區別
&lt;/h2&gt;&lt;p&gt;官方 Help Center 給出的 ChatGPT 上下文窗口說明大致是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模式&lt;/th&gt;
          &lt;th&gt;上下文窗口&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Instant&lt;/td&gt;
          &lt;td&gt;Free：16K；Plus/Business：32K；Pro/Enterprise：128K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;付費檔手動選擇時通常為 256K；Pro 檔可到 400K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這意味著：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通聊天和短文件，Instant 足夠；&lt;/li&gt;
&lt;li&gt;多檔案、多輪研究、長程式碼庫分析，Thinking 更合適；&lt;/li&gt;
&lt;li&gt;特別長、特別複雜的高精度任務，Pro 使用者可以利用更大的上下文和更重推理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;h3 id=&#34;日常問答&#34;&gt;日常問答
&lt;/h3&gt;&lt;p&gt;用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它速度快，足夠聰明，適合隨手問、快速寫、快速改。&lt;/p&gt;
&lt;h3 id=&#34;寫文章摘要改郵件&#34;&gt;寫文章、摘要、改郵件
&lt;/h3&gt;&lt;p&gt;優先用 &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果文章很長、需要結構重寫、需要多輪校對，再切到 &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;寫程式碼和除錯&#34;&gt;寫程式碼和除錯
&lt;/h3&gt;&lt;p&gt;簡單程式碼解釋用 &lt;code&gt;Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;多檔案除錯、架構設計、複雜報錯分析，用 &lt;code&gt;Thinking&lt;/code&gt;。如果是非常棘手的長期工程問題，可以考慮 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;研究和資料分析&#34;&gt;研究和資料分析
&lt;/h3&gt;&lt;p&gt;普通資料整理用 &lt;code&gt;Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果是法律、商業、科研、資料科學這類高精度任務，用 &lt;code&gt;Pro&lt;/code&gt; 更合適。&lt;/p&gt;
&lt;h3 id=&#34;需要圖像生成canvasmemory&#34;&gt;需要圖像生成、Canvas、Memory
&lt;/h3&gt;&lt;p&gt;優先用 &lt;code&gt;Instant&lt;/code&gt; 或 &lt;code&gt;Thinking&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不要預設選 &lt;code&gt;Pro&lt;/code&gt;，因為 Pro 不支援部分 ChatGPT 工具。&lt;/p&gt;
&lt;h2 id=&#34;簡短結論&#34;&gt;簡短結論
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 是日常預設模型，快、清晰、省額度，適合多數普通任務。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; 是複雜任務主力，適合程式碼、研究、長文件、分析和多步驟推理。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; 是高精度研究模式，適合更難、更重要、更需要嚴謹性的任務，但工具支援和速度都更受限制。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; 本身更像這一代模型的總稱。真正選擇時，要看你在 ChatGPT 裡選的是 &lt;code&gt;Instant&lt;/code&gt;、&lt;code&gt;Thinking&lt;/code&gt; 還是 &lt;code&gt;Pro&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GPT-5.5 Instant 發布說明：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/gpt-5-5-instant/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/index/gpt-5-5-instant/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPT-5.5 發布說明：&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://openai.com/index/introducing-gpt-5-5/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GPT-5.5 in ChatGPT Help Center：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11909943-gpt-53-and-gpt-55-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/11909943-gpt-53-and-gpt-55-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Pixelle-Video：一句主題生成短影片的開源 AI 引擎</title>
        <link>https://knightli.com/zh-tw/2026/05/07/pixelle-video-ai-short-video-engine/</link>
        <pubDate>Thu, 07 May 2026 20:25:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/07/pixelle-video-ai-short-video-engine/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pixelle-Video&lt;/a&gt; 是 AIDC-AI 開源的全自動短影片生成引擎。它的目標很直白：使用者輸入一個主題，系統自動完成影片文案、AI 配圖或影片、語音解說、背景音樂和最終合成。&lt;/p&gt;
&lt;p&gt;這類工具適合短影片批量創作、知識科普、口播內容、小說解說、歷史文化類影片和自媒體素材實驗。它不是單一的「文生影片模型」，而是把多種 AI 能力接成一條生產流水線。&lt;/p&gt;
&lt;h2 id=&#34;它能自動做什麼&#34;&gt;它能自動做什麼
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 的預設流程可以概括為：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;輸入主題或固定文案；&lt;/li&gt;
&lt;li&gt;由大型語言模型生成解說詞；&lt;/li&gt;
&lt;li&gt;根據分鏡規劃生成配圖或影片素材；&lt;/li&gt;
&lt;li&gt;使用 TTS 生成語音解說；&lt;/li&gt;
&lt;li&gt;添加背景音樂；&lt;/li&gt;
&lt;li&gt;套用影片模板並合成最終成片。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;README 中給出的流程是「文案生成 → 配圖規劃 → 逐幀處理 → 影片合成」。這種模組化設計的好處是清晰：每一步都可以替換模型、調整參數或改用自訂工作流。&lt;/p&gt;
&lt;h2 id=&#34;功能亮點&#34;&gt;功能亮點
&lt;/h2&gt;&lt;p&gt;專案支援的能力相當完整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 智慧文案：根據主題自動生成影片解說詞；&lt;/li&gt;
&lt;li&gt;AI 配圖：為每句話或每個分鏡生成插圖；&lt;/li&gt;
&lt;li&gt;AI 影片生成：支援接入 WAN 2.1 等影片生成模型；&lt;/li&gt;
&lt;li&gt;TTS 語音：支援 Edge-TTS、Index-TTS 等方案；&lt;/li&gt;
&lt;li&gt;背景音樂：可以使用內建 BGM，也可以放入自訂音樂；&lt;/li&gt;
&lt;li&gt;多尺寸輸出：支援直式、橫式等不同影片比例；&lt;/li&gt;
&lt;li&gt;多模型選擇：可接入 GPT、通義千問、DeepSeek、Ollama 等；&lt;/li&gt;
&lt;li&gt;ComfyUI 工作流：可以使用預置工作流，也可以替換生圖、TTS、影片生成等環節。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最近更新裡還提到動作遷移、數位人口播、圖生影片、多語言 TTS 音色、RunningHub 支援、Windows 一鍵整合包等內容。這說明專案已經不只是一個腳本，而是在往完整創作工具方向發展。&lt;/p&gt;
&lt;h2 id=&#34;安裝和啟動方式&#34;&gt;安裝和啟動方式
&lt;/h2&gt;&lt;p&gt;Windows 使用者可以優先看官方提供的一鍵整合包。它的定位是降低安裝門檻，不需要手動準備 Python、uv 或 ffmpeg，解壓後執行 &lt;code&gt;start.bat&lt;/code&gt;，再在瀏覽器裡打開 Web 介面配置 API 和圖像生成服務。&lt;/p&gt;
&lt;p&gt;如果從源碼啟動，README 給出的基本方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/AIDC-AI/Pixelle-Video.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; Pixelle-Video
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv run streamlit run web/app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;源碼方式適合 macOS、Linux 使用者，也適合需要修改模板、工作流或服務配置的人。前置依賴主要是 &lt;code&gt;uv&lt;/code&gt; 和 &lt;code&gt;ffmpeg&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;配置重點&#34;&gt;配置重點
&lt;/h2&gt;&lt;p&gt;第一次使用時，關鍵不是先點「生成」，而是把幾個外部能力接好。&lt;/p&gt;
&lt;p&gt;LLM 配置決定文案品質。你可以選擇通義千問、GPT、DeepSeek、Ollama 等模型，並填寫對應的 API Key、Base URL 和模型名。如果想盡量降低成本，本地 Ollama 是一個方向；如果追求穩定效果，雲端模型會更省心。&lt;/p&gt;
&lt;p&gt;圖像和影片生成配置決定畫面品質。專案支援本地 ComfyUI，也支援 RunningHub。懂 ComfyUI 的使用者可以把自己的工作流放進 &lt;code&gt;workflows/&lt;/code&gt; 目錄，用來替換預設生圖、影片或 TTS 流程。&lt;/p&gt;
&lt;p&gt;模板配置決定最終成片的視覺形態。專案用 &lt;code&gt;templates/&lt;/code&gt; 目錄組織影片模板，靜態模板、圖片模板和影片模板按命名規則區分。對內容創作者來說，這比只生成一段素材更實用，因為最終交付物是可以直接預覽和下載的影片。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼人&#34;&gt;適合什麼人
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 比較適合三類使用者：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;短影片創作者&lt;/strong&gt;：想快速把選題變成可發布的草稿影片；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIGC 工具玩家&lt;/strong&gt;：想把 LLM、ComfyUI、TTS 和影片合成串起來；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;開發者和自動化使用者&lt;/strong&gt;：想基於開源專案改模板、改工作流，甚至接入自己的素材和模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只想偶爾做一支高品質精品影片，它未必能直接替代人工剪輯；但如果你想批量生成結構一致的解釋類、口播類、科普類內容，它的流水線思路很有價值。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的地方&#34;&gt;需要注意的地方
&lt;/h2&gt;&lt;p&gt;這類工具的上限由多個環節共同決定。文案模型不好，內容會空；配圖模型不好，畫面會散；TTS 不自然，影片會顯得粗糙；模板不合適，最終成片也會缺少辨識度。&lt;/p&gt;
&lt;p&gt;所以使用 Pixelle-Video 時，建議先從一個固定場景開始調試，比如「60 秒知識科普直式影片」。把 LLM、畫面風格、TTS 音色、BGM 和模板固定下來，再逐步擴大到其他主題。&lt;/p&gt;
&lt;p&gt;另外，專案雖然支援本地免費方案，但本地方案通常需要顯卡、ComfyUI 配置和模型檔案。沒有本地推理環境的使用者，可以用雲端 LLM 加 RunningHub 的方式降低部署難度，但要留意呼叫成本。&lt;/p&gt;
&lt;h2 id=&#34;簡短判斷&#34;&gt;簡短判斷
&lt;/h2&gt;&lt;p&gt;Pixelle-Video 的看點不只是「輸入一句話生成影片」，而是它把短影片生產拆成可替換的模組：文案、畫面、語音、音樂、模板和合成。對普通使用者，它是一個低門檻 AI 影片工具；對開發者，它更像一個可改造的短影片自動化框架。&lt;/p&gt;
&lt;p&gt;如果你正在研究 AI 短影片流水線，或者想把 ComfyUI、TTS、LLM 和模板合成串成一個可用產品，Pixelle-Video 值得試用和拆解。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT、Claude Code 和 Gemini 的記憶機制有什麼不同？</title>
        <link>https://knightli.com/zh-tw/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</link>
        <pubDate>Thu, 07 May 2026 14:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</guid>
        <description>&lt;p&gt;AI 產品裡的「記憶」正在變得越來越重要。它標誌著 AI 從「單次對話工具」走向「長期協作夥伴」：不用每次重新介紹背景，不用反覆解釋偏好，也不用讓模型一次次重新理解項目。&lt;/p&gt;
&lt;p&gt;但不同產品裡的記憶並不是一回事。&lt;code&gt;ChatGPT&lt;/code&gt;、&lt;code&gt;Claude Code&lt;/code&gt; 和 &lt;code&gt;Gemini&lt;/code&gt; 都在解決「AI 如何記得更久」的問題，但它們的設計目標、儲存位置、透明度和適用場景差異很大。&lt;/p&gt;
&lt;p&gt;截至 2026 年 5 月 7 日，可以把它們粗略理解成三類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 更像「個人助理記憶」。&lt;/li&gt;
&lt;li&gt;Claude Code 更像「工程項目記憶」。&lt;/li&gt;
&lt;li&gt;Gemini 更像「Google 生態上下文」。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt圍繞人的長期偏好&#34;&gt;ChatGPT：圍繞人的長期偏好
&lt;/h2&gt;&lt;p&gt;ChatGPT 的記憶機制主要面向個人協作。它關心的是「你是誰」「你偏好什麼」「你長期在做什麼」。&lt;/p&gt;
&lt;p&gt;OpenAI 目前把 ChatGPT 的記憶分成兩類：&lt;code&gt;saved memories&lt;/code&gt; 和 &lt;code&gt;chat history&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;saved memories&lt;/code&gt; 是 ChatGPT 保存下來的重要資訊，比如你的名字、偏好、目標、常用技術棧、寫作習慣等。你可以直接要求它記住某件事，它也可能在對話中自動保存它認為未來有用的資訊。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chat history&lt;/code&gt; 則是讓 ChatGPT 在回答時參考過去聊天。它不等於把每一段聊天都完整變成記憶，而是在需要時從過往對話裡找相關上下文。&lt;/p&gt;
&lt;p&gt;所以 ChatGPT 的核心邏輯是：跨會話理解同一個使用者。&lt;/p&gt;
&lt;p&gt;典型例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「以後給我程式碼示例時盡量簡潔。」&lt;/li&gt;
&lt;li&gt;「我主要使用 Python 和 TypeScript。」&lt;/li&gt;
&lt;li&gt;「我正在寫一個關於 AI 工具的 Hugo 部落格。」&lt;/li&gt;
&lt;li&gt;「我喜歡先看結論，再看細節。」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些記憶不是綁定某個單獨項目，而是跟隨帳號和個人使用習慣。&lt;/p&gt;
&lt;h2 id=&#34;memory-sources讓個性化來源更可見&#34;&gt;Memory Sources：讓個性化來源更可見
&lt;/h2&gt;&lt;p&gt;OpenAI 在 2026 年 5 月的更新中強調了 &lt;code&gt;Memory sources&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它的作用不是新增另一種記憶，而是讓使用者看到 ChatGPT 在個性化回答時參考了哪些來源。根據 OpenAI 幫助文件，Memory Sources 可能顯示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;過去聊天。&lt;/li&gt;
&lt;li&gt;保存記憶。&lt;/li&gt;
&lt;li&gt;自定義指令。&lt;/li&gt;
&lt;li&gt;文件庫中的文件。&lt;/li&gt;
&lt;li&gt;已連接 Gmail 中的郵件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中，文件和 Gmail 的可見範圍會受到計畫、地區和連接狀態限制。OpenAI 也明確說明，Memory sources 不一定展示影響回答的所有因素，而是幫助使用者理解和管理個性化。&lt;/p&gt;
&lt;p&gt;這一步很重要。因為 AI 越會「記住你」，使用者越需要知道它到底根據什麼在回答。否則個性化很容易變成黑箱：你感覺它好像知道你，但不知道它為什麼知道。&lt;/p&gt;
&lt;p&gt;ChatGPT 的優勢是跨會話、跨主題持續理解個人偏好；風險是記憶容易過期，或者使用者忘了某條舊記憶還在影響回答。因此，適合定期清理 saved memories 和舊聊天。&lt;/p&gt;
&lt;h2 id=&#34;claude-code圍繞程式碼庫和工程規則&#34;&gt;Claude Code：圍繞程式碼庫和工程規則
&lt;/h2&gt;&lt;p&gt;Claude Code 的記憶機制更偏工程協作。它關心的不是「使用者平時愛喝什麼咖啡」，而是「這個程式碼庫應該怎麼改」。&lt;/p&gt;
&lt;p&gt;Claude Code 有兩類容易混在一起的記憶：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顯式項目記憶：&lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;自動項目記憶：Auto Memory。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是最基礎、最穩定的項目記憶文件。它可以放在項目根目錄，也可以在子目錄中存在。Claude Code 會讀取這些文件，把它們作為項目說明和操作規則。&lt;/p&gt;
&lt;p&gt;適合寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的內容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常用構建、測試、lint 命令。&lt;/li&gt;
&lt;li&gt;程式碼風格和命名規則。&lt;/li&gt;
&lt;li&gt;項目架構說明。&lt;/li&gt;
&lt;li&gt;模組邊界和危險區域。&lt;/li&gt;
&lt;li&gt;團隊約定和提交流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 &lt;code&gt;CLAUDE.md&lt;/code&gt; 放在程式碼庫裡，它可以提交到 Git，成為團隊共享的 agent 說明書。這一點和 ChatGPT 的雲端個人記憶完全不同。&lt;/p&gt;
&lt;h2 id=&#34;claude-code-auto-memory自動累積項目經驗&#34;&gt;Claude Code Auto Memory：自動累積項目經驗
&lt;/h2&gt;&lt;p&gt;Claude Code 現在也有 &lt;code&gt;Auto Memory&lt;/code&gt;。它的目標是讓 Claude 在多個會話之間自動累積項目經驗，而不要求使用者每次手寫說明。&lt;/p&gt;
&lt;p&gt;根據 Claude Code 文件，Auto Memory 會讓 Claude 在工作過程中為自己保存筆記，例如構建命令、調試發現、架構說明、程式碼風格偏好和工作流習慣。它不會每個會話都保存，而是判斷哪些資訊未來可能有用。&lt;/p&gt;
&lt;p&gt;這裡有一個容易誤解的點：Auto Memory 預設不是把內容寫到項目根目錄的 &lt;code&gt;.claude/memory.md&lt;/code&gt;。官方文件說明，每個項目會在使用者目錄下擁有自己的 memory 目錄，路徑類似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;MEMORY.md&lt;/code&gt; 會在每次對話開始時載入前 200 行或前 25KB，詳細內容則可能被拆到其他主題文件裡。Auto Memory 文件是本機本地的 Markdown 文件，使用者可以透過 &lt;code&gt;/memory&lt;/code&gt; 查看、編輯或刪除。&lt;/p&gt;
&lt;p&gt;這讓 Claude Code 的記憶更像「本機上的項目經驗庫」。它比 ChatGPT 的個人記憶更貼近程式碼庫，也比單純的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 更動態。&lt;/p&gt;
&lt;p&gt;但要注意，Auto Memory 是機器本地的，不會天然跟隨程式碼庫同步到其他機器或雲環境。如果要團隊共享穩定規則，仍然應該優先寫進項目中的 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;gemini圍繞-google-生態上下文&#34;&gt;Gemini：圍繞 Google 生態上下文
&lt;/h2&gt;&lt;p&gt;Gemini 的記憶邏輯又不同。&lt;/p&gt;
&lt;p&gt;Gemini 也有保存資訊和參考過去聊天的能力。Google 幫助文件提到，使用者可以保存關於生活、工作或偏好的資訊，也可以讓 Gemini 在回答前參考過去聊天。Gemini 使用這些資訊時，可能會在回答底部的來源區域顯示 &lt;code&gt;Your saved info&lt;/code&gt; 或 &lt;code&gt;Previous chats&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;但 Gemini 的差異化不只在「保存幾條偏好」，而在 Google 生態整合。&lt;/p&gt;
&lt;p&gt;在使用者授權和功能可用的前提下，Gemini 可以透過連接的 Google 應用獲取上下文，例如 Gmail、Google Drive、Docs、Sheets 等。它的優勢不是讓使用者一條條教它記住什麼，而是把已有的 Google 帳號資料變成可檢索的工作上下文。&lt;/p&gt;
&lt;p&gt;典型區別是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 記得：「我最近在做 LTO 磁帶機修復。」&lt;/li&gt;
&lt;li&gt;Gemini 可能可以從 Gmail 找到購買確認郵件，或從 Drive 裡讀取相關維修筆記。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當然，這不代表 Gemini 可以無條件讀取你所有 Google 資料。它取決於帳號類型、地區、權限、連接應用、Keep Activity 設定和具體產品可用性。對企業或學校帳號，還可能受 Google Workspace 管理員控制。&lt;/p&gt;
&lt;p&gt;所以更準確地說，Gemini 的記憶不是一個單純的「備忘錄」，而是「保存資訊 + 過去聊天 + Google 生態連接」的組合。&lt;/p&gt;
&lt;h2 id=&#34;三者核心差異&#34;&gt;三者核心差異
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;維度&lt;/th&gt;
          &lt;th&gt;ChatGPT&lt;/th&gt;
          &lt;th&gt;Claude Code&lt;/th&gt;
          &lt;th&gt;Gemini&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;核心對象&lt;/td&gt;
          &lt;td&gt;人和偏好&lt;/td&gt;
          &lt;td&gt;項目和程式碼庫&lt;/td&gt;
          &lt;td&gt;Google 帳號與生態資料&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;典型記憶&lt;/td&gt;
          &lt;td&gt;偏好、背景、長期目標&lt;/td&gt;
          &lt;td&gt;架構、命令、規範、調試經驗&lt;/td&gt;
          &lt;td&gt;saved info、過去聊天、Gmail/Drive/Docs 上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;儲存形態&lt;/td&gt;
          &lt;td&gt;OpenAI 帳戶內的記憶和聊天上下文&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;MEMORY.md&lt;/code&gt;、本地 Markdown 文件&lt;/td&gt;
          &lt;td&gt;Google 帳號活動、保存資訊、連接應用資料&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;透明度&lt;/td&gt;
          &lt;td&gt;Memory sources 可見一部分來源&lt;/td&gt;
          &lt;td&gt;Markdown 文件可直接查看和編輯&lt;/td&gt;
          &lt;td&gt;透過來源提示、Gemini Apps Activity 和 Google 設定管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;跨項目能力&lt;/td&gt;
          &lt;td&gt;強，跟隨使用者帳號&lt;/td&gt;
          &lt;td&gt;弱，主要跟隨項目或本機項目 memory&lt;/td&gt;
          &lt;td&gt;強，取決於 Google 生態資料和權限&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;團隊共享&lt;/td&gt;
          &lt;td&gt;不適合直接共享&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 可隨 Git 共享&lt;/td&gt;
          &lt;td&gt;主要依賴 Workspace 和權限體系&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;最適合&lt;/td&gt;
          &lt;td&gt;個人偏好和長期助理&lt;/td&gt;
          &lt;td&gt;長期程式碼項目和 agent 協作&lt;/td&gt;
          &lt;td&gt;Google Workspace 資料檢索和跨工具工作&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;該怎麼選擇和使用&#34;&gt;該怎麼選擇和使用
&lt;/h2&gt;&lt;p&gt;如果你想讓 AI 記住「我是誰、我喜歡什麼風格、我長期怎麼工作」，ChatGPT 的記憶更合適。&lt;/p&gt;
&lt;p&gt;它適合保存個人偏好，例如寫作風格、常用技術棧、回答格式、職業背景、長期項目方向。它的重點是減少自我介紹成本，讓每次新對話更快進入狀態。&lt;/p&gt;
&lt;p&gt;如果你想讓 AI 記住「這個程式碼庫怎麼改、哪些命令能跑、哪些坑不能踩」，Claude Code 更合適。&lt;/p&gt;
&lt;p&gt;穩定規則寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;，團隊共享；動態經驗交給 Auto Memory 輔助累積；關鍵決策最好仍然整理進文件或 &lt;code&gt;CLAUDE.md&lt;/code&gt;，避免只停留在本機自動記憶裡。&lt;/p&gt;
&lt;p&gt;如果你的資料大量存在 Gmail、Drive、Docs、Sheets 裡，Gemini 的生態上下文更有優勢。&lt;/p&gt;
&lt;p&gt;它適合查找過去郵件、整理 Google Drive 文件、聯動日曆和辦公資料。使用 Gemini 的關鍵，不是反覆在聊天裡提醒它，而是確保相關應用連接、權限和活動設定正確。&lt;/p&gt;
&lt;h2 id=&#34;一個實用分工&#34;&gt;一個實用分工
&lt;/h2&gt;&lt;p&gt;可以把三者這樣分工：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT 記住「我的通用偏好」。&lt;/li&gt;
&lt;li&gt;Claude Code 記住「這個倉庫的工程知識」。&lt;/li&gt;
&lt;li&gt;Gemini 檢索「我在 Google 生態裡的資料」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，ChatGPT 更像私人秘書，Claude Code 更像項目裡的資深工程同事，Gemini 更像 Google 帳號裡的資料索引員。&lt;/p&gt;
&lt;p&gt;這三種記憶沒有絕對高低，只是目標不同。&lt;/p&gt;
&lt;p&gt;最需要警惕的是把它們混為一談。個人偏好不一定適合寫進項目記憶；項目架構不一定適合存在雲端個人記憶；Google 生態檢索也不等於模型真正「長期理解」了你。&lt;/p&gt;
&lt;h2 id=&#34;簡短判斷&#34;&gt;簡短判斷
&lt;/h2&gt;&lt;p&gt;AI 記憶的下一階段，不是簡單地「記得越多越好」，而是記憶要分層、可見、可控。&lt;/p&gt;
&lt;p&gt;ChatGPT 的重點是跨會話個人化，Claude Code 的重點是程式碼項目連續性，Gemini 的重點是 Google 生態上下文。真正好用的長期 AI 協作，不是把所有資訊塞進一個黑箱，而是讓不同類型的記憶待在合適的位置。&lt;/p&gt;
&lt;p&gt;個人偏好放在個人記憶裡，工程規則放在程式碼庫裡，歷史資料放在原本的文件和郵件系統裡。AI 要做的，是在需要時準確呼叫這些上下文，而不是把所有東西混成一團。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;OpenAI Memory FAQ：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/8590148-memory-faq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/8590148-memory-faq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ChatGPT Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Memory：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/memory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemini Saved info：&lt;a class=&#34;link&#34; href=&#34;https://support.google.com/gemini/answer/15637730&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.google.com/gemini/answer/15637730&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemini Apps Privacy Hub：&lt;a class=&#34;link&#34; href=&#34;https://support.google.com/gemini/answer/13594961&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.google.com/gemini/answer/13594961&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>ChatGPT Release Notes 更新：記憶來源、GPT-5.5 Instant 和表格插件</title>
        <link>https://knightli.com/zh-tw/2026/05/07/chatgpt-release-notes-memory-gpt-5-5-sheets/</link>
        <pubDate>Thu, 07 May 2026 14:30:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/07/chatgpt-release-notes-memory-gpt-5-5-sheets/</guid>
        <description>&lt;p&gt;OpenAI 的 &lt;code&gt;ChatGPT Release Notes&lt;/code&gt; 頁面在 2026 年 5 月初更新，最新一批重點包括三件事：ChatGPT 的記憶來源和個性化能力增強，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 成為新的預設模型，以及 ChatGPT for Excel 和 Google Sheets 全球上線。&lt;/p&gt;
&lt;p&gt;這幾項更新放在一起看，方向很清楚：ChatGPT 正在從一個聊天入口，繼續變成更持續、更個性化、也更貼近辦公場景的工作助手。&lt;/p&gt;
&lt;h2 id=&#34;memory-sources個性化要更透明&#34;&gt;Memory sources：個性化要更透明
&lt;/h2&gt;&lt;p&gt;最新更新裡，最值得關注的是 &lt;code&gt;memory sources&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;OpenAI 表示，ChatGPT Plus 和 Pro 使用者會開始獲得更強的記憶改進。ChatGPT 可以更好地從過去聊天、保存的記憶、可用文件，以及已連接的 Gmail 應用中提取相關上下文，用來給出更貼合使用者的想法、建議和下一步行動。&lt;/p&gt;
&lt;p&gt;這意味著使用者不必在每次新對話裡反覆解釋自己的項目背景、偏好、工作習慣或已有材料。對於長期寫作、項目規劃、資料整理、學習和團隊協作來說，連續性會更強。&lt;/p&gt;
&lt;p&gt;但個性化越強，透明度就越重要。OpenAI 因此推出 memory sources，讓使用者看到哪些資訊幫助 ChatGPT 個性化了某個回答。使用者可以點擊回答下方的 Sources 圖示，查看相關保存記憶、過去聊天和自定義指令。Plus 和 Pro 使用者還可能看到資料庫中的文件，以及已連接 Gmail 中被引用的郵件。&lt;/p&gt;
&lt;p&gt;如果某些資訊過期、不相關或錯誤，使用者可以更正、刪除，或標記為不相關。&lt;/p&gt;
&lt;h2 id=&#34;記憶控制仍然是關鍵&#34;&gt;記憶控制仍然是關鍵
&lt;/h2&gt;&lt;p&gt;OpenAI 也說明，memory sources 不一定展示影響回答的全部因素，後續還會繼續改進這個視圖。&lt;/p&gt;
&lt;p&gt;這個提醒很重要。它說明 memory sources 不是完整的「模型思考日誌」，而是讓使用者理解個性化上下文的一種產品介面。它能提高可見性，但不能把所有影響因素都完全展開。&lt;/p&gt;
&lt;p&gt;隱私和控制方面，OpenAI 表示 memory sources 只會顯示在使用者自己的帳戶體驗裡。如果使用者分享聊天，相關 sources 不會出現在共享聊天中。使用者也可以刪除聊天，使用不會使用或更新記憶、也不會出現在歷史記錄中的臨時聊天，關閉記憶，隨時斷開應用連接，並管理自己的內容是否用於改進模型。&lt;/p&gt;
&lt;p&gt;這說明 ChatGPT 的個性化正在走一條更明確的路線：既要更懂使用者，也要讓使用者知道它為什麼這麼回答，並保留管理入口。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant-成為預設模型&#34;&gt;GPT-5.5 Instant 成為預設模型
&lt;/h2&gt;&lt;p&gt;Release Notes 還確認，&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; 正在作為 ChatGPT 的新預設模型推出，並替代面向所有使用者的 &lt;code&gt;GPT-5.3 Instant&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這次預設模型更新主要改善幾個方面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;準確性。&lt;/li&gt;
&lt;li&gt;清晰度和簡潔度。&lt;/li&gt;
&lt;li&gt;圖片理解。&lt;/li&gt;
&lt;li&gt;STEM 問題回答。&lt;/li&gt;
&lt;li&gt;判斷何時需要聯網搜尋。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 強調，GPT-5.5 Instant 在事實可靠性上更好，尤其是在準確性更重要的提示詞中表現更穩。它也會給出更緊湊、更直接的回答，減少不必要的追問，降低過度格式化和無意義裝飾帶來的干擾。&lt;/p&gt;
&lt;p&gt;對使用者來說，這類變化可能不會像新功能按鈕那樣顯眼，但會影響每天打開 ChatGPT 時的體感：回答更少繞路，更少囉嗦，也更少在簡單問題上堆格式。&lt;/p&gt;
&lt;h2 id=&#34;個性化和預設模型結合起來&#34;&gt;個性化和預設模型結合起來
&lt;/h2&gt;&lt;p&gt;GPT-5.5 Instant 對 Plus 和 Pro 網頁端使用者還會更有效地使用過去聊天、文件和已連接 Gmail 的上下文。&lt;/p&gt;
&lt;p&gt;這和 memory sources 是同一條產品線。模型不只是「更聰明」，還要在合適的時候知道你之前做過什麼、關心什麼、已經提供過哪些材料。比如繼續一個項目、寫一份計畫、整理郵件裡的資訊，或根據過去偏好給出建議時，ChatGPT 可以減少重複詢問。&lt;/p&gt;
&lt;p&gt;付費使用者仍可在三個月內透過模型配置繼續使用 GPT-5.3 Instant，之後該模型會退役。&lt;/p&gt;
&lt;h2 id=&#34;chatgpt-for-excel-和-google-sheets&#34;&gt;ChatGPT for Excel 和 Google Sheets
&lt;/h2&gt;&lt;p&gt;另一個重要更新，是 ChatGPT for Excel 和 Google Sheets 全球上線。&lt;/p&gt;
&lt;p&gt;它把 ChatGPT 放進 Microsoft Excel 和 Google Sheets 的側邊欄中，讓使用者可以在表格裡直接構建、更新和理解資料。OpenAI 提到的場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;追蹤表。&lt;/li&gt;
&lt;li&gt;預算。&lt;/li&gt;
&lt;li&gt;公式。&lt;/li&gt;
&lt;li&gt;多工作表文件。&lt;/li&gt;
&lt;li&gt;情境分析。&lt;/li&gt;
&lt;li&gt;表格清理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在可用地區和條件下，它還支援 Skills 和 apps。&lt;/p&gt;
&lt;p&gt;這類功能的意義很直接：很多辦公資料並不在專門的 BI 系統裡，而是在 Excel 和 Google Sheets 裡。把 ChatGPT 放進表格側邊欄，比讓使用者複製貼上到聊天窗口更自然，也更容易進入真實工作流。&lt;/p&gt;
&lt;h2 id=&#34;使用限制和安裝方式&#34;&gt;使用限制和安裝方式
&lt;/h2&gt;&lt;p&gt;Release Notes 提到，Free 和 Go 計畫包含有限使用量；Plus 和 Pro 使用與 Codex 相同的 agentic 使用限制。如果使用者超出計畫限制，可以購買額外 credits。&lt;/p&gt;
&lt;p&gt;安裝方式也比較直接：Excel 版本從 Microsoft Marketplace 安裝，Google Sheets 版本從 Google Workspace Marketplace 安裝，然後使用符合條件的 ChatGPT 帳戶登入。&lt;/p&gt;
&lt;p&gt;OpenAI 也提醒，使用者在依賴公式或分析前需要檢查輸出。這點不能忽略。AI 可以加速表格工作，但公式、預算、財務和業務分析仍然需要人工複核。&lt;/p&gt;
&lt;h2 id=&#34;近期更新脈絡&#34;&gt;近期更新脈絡
&lt;/h2&gt;&lt;p&gt;如果把 4 月底到 5 月初的 release notes 放在一起看，ChatGPT 的方向更清楚。&lt;/p&gt;
&lt;p&gt;4 月 30 日，OpenAI 推出 Advanced Account Security，給個人 ChatGPT 帳戶提供更強的登入要求和帳戶保護，包括 passkeys、安全密鑰、恢復密鑰、更短會話和登入通知。&lt;/p&gt;
&lt;p&gt;4 月 28 日，模型選擇入口移到輸入框附近，讓使用者在發送消息前更容易選擇模型；Thinking 和 Pro 模型的 thinking effort 控制也被放進模型選擇器。&lt;/p&gt;
&lt;p&gt;4 月 22 日，ChatGPT 推出 Fast answers，用於一些不需要個性化、且模型有高置信答案的常見資訊查詢。Fast answers 不引用過去聊天或記憶，使用者也可以在個性化設定裡關閉。&lt;/p&gt;
&lt;p&gt;這些更新都圍繞同一個目標：讓 ChatGPT 更適合日常高頻使用。該快的時候快，該個性化的時候個性化，該需要安全保護和可見控制的時候給出入口。&lt;/p&gt;
&lt;h2 id=&#34;簡短判斷&#34;&gt;簡短判斷
&lt;/h2&gt;&lt;p&gt;這次 ChatGPT Release Notes 的重點，不是單個功能，而是產品形態繼續收束。&lt;/p&gt;
&lt;p&gt;GPT-5.5 Instant 提升預設回答品質，memory sources 讓個性化更可見，Excel 和 Google Sheets 插件把 ChatGPT 放進辦公表格，Advanced Account Security 和模型選擇改動則補上帳戶安全和操作體驗。&lt;/p&gt;
&lt;p&gt;ChatGPT 正在變成更長期的工作層：它會記住更多上下文，進入更多工具，也承擔更多日常任務。接下來真正需要觀察的是，個性化透明度是否足夠清楚，辦公插件在真實複雜表格裡是否穩定，以及使用者能否在便利和控制之間保持平衡。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ChatGPT Release Notes：&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Grok Imagine Quality Mode API：xAI 想把圖像生成推向企業工作流</title>
        <link>https://knightli.com/zh-tw/2026/05/07/grok-imagine-quality-mode-api/</link>
        <pubDate>Thu, 07 May 2026 14:27:29 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/07/grok-imagine-quality-mode-api/</guid>
        <description>&lt;p&gt;xAI 在 2026 年 5 月 6 日發布了 &lt;code&gt;Grok Imagine Quality Mode API&lt;/code&gt;。這是 Grok Imagine 面向企業開發者和團隊開放的圖像生成與編輯品質模式，主打更高真實感、更強文字渲染和更好的創意控制。&lt;/p&gt;
&lt;p&gt;這次更新的重點不是再做一個普通文生圖入口，而是把 Grok Imagine 放進企業內容生產工作流：產品圖、行銷素材、廣告變體、UGC 風格內容、品牌視覺和影片生成，都在它的目標範圍內。&lt;/p&gt;
&lt;h2 id=&#34;quality-mode-提供了什麼&#34;&gt;Quality Mode 提供了什麼
&lt;/h2&gt;&lt;p&gt;xAI 對 Quality Mode 的定位很明確：更真實、更會寫字、更聽提示詞。&lt;/p&gt;
&lt;p&gt;第一是真實感提升。官方展示的示例強調自然皮膚、材質細節、光線、場景氛圍和攝影質感。對商業圖像來說，這很重要。很多圖像模型看起來已經「漂亮」，但一旦放進廣告、產品頁或社交媒體素材，就會暴露人物皮膚、衣物紋理、手部、空間關係和光影不自然的問題。&lt;/p&gt;
&lt;p&gt;第二是文字渲染增強。xAI 特別提到 Quality Mode 支援更乾淨的多語言文本能力。圖像模型能不能穩定生成文字，是商業落地的一道門檻。選單、海報、包裝、廣告、按鈕、招牌、社交圖文，只要文字錯一個字，素材就很難直接使用。&lt;/p&gt;
&lt;p&gt;第三是創意控制。官方描述包括更緊的提示詞跟隨、更深入的場景和世界理解，以及更一致的品牌結果。換句話說，Quality Mode 想解決的不只是「生成一張好看的圖」，而是「按團隊的要求生成可控、可重用、可迭代的圖」。&lt;/p&gt;
&lt;h2 id=&#34;面向企業而不只是個人玩圖&#34;&gt;面向企業，而不只是個人玩圖
&lt;/h2&gt;&lt;p&gt;這次公告中，xAI 把企業使用場景放在了很靠前的位置。&lt;/p&gt;
&lt;p&gt;最典型的是產品可視化和行銷素材。企業可以用它生成寫實產品渲染、主視覺圖、社交媒體素材、圖示和廣告變體。相比個人使用者隨手生成一張圖片，企業更關心三個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;畫面是否足夠真實，能不能接近商業攝影或高品質渲染。&lt;/li&gt;
&lt;li&gt;是否能遵守品牌風格，包括顏色、構圖、文字位置和視覺語氣。&lt;/li&gt;
&lt;li&gt;是否能批量生成變體，用於 A/B 測試、活動物料和不同通路投放。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quality Mode 的價值就在這裡。它不是取代設計師，而是把很多「先出十幾版方向看看」的工作壓縮到更短時間內。團隊可以先用 API 生成候選方案，再由設計、行銷和品牌人員篩選、修正和落地。&lt;/p&gt;
&lt;h2 id=&#34;圖像編輯比文生圖更關鍵&#34;&gt;圖像編輯比文生圖更關鍵
&lt;/h2&gt;&lt;p&gt;公告裡不只展示了從零生成圖片，也展示了基於參考圖繼續編輯的流程。例如把產品放到宣傳冊上、保持 T 恤圖案、讓同一個人物出現在不同 UGC 場景裡。&lt;/p&gt;
&lt;p&gt;這類能力對企業更有用。因為真實業務裡，素材通常不是憑空開始的，而是已經有產品圖、品牌規範、人物參考、包裝設計或活動主題。AI 工具如果只能隨機生成漂亮圖，價值有限；如果能圍繞已有素材做穩定變體，才更容易進入工作流。&lt;/p&gt;
&lt;p&gt;這也是圖像生成模型競爭的一個方向：從「提示詞抽卡」走向「可控編輯」。使用者要的不只是驚喜，而是可預測的修改結果。&lt;/p&gt;
&lt;h2 id=&#34;ugc-風格內容的商業意義&#34;&gt;UGC 風格內容的商業意義
&lt;/h2&gt;&lt;p&gt;xAI 還展示了 UGC 風格內容，比如讓同一人物穿著指定 T 恤、吃生日蛋糕、在電梯裡自拍。&lt;/p&gt;
&lt;p&gt;這背後對應的是廣告和社交內容生產的變化。很多品牌不再只需要精修棚拍圖，也需要看起來更自然、更像使用者真實分享的內容。UGC 風格素材適合短影片封面、資訊流廣告、社交平台貼文和創作者合作預覽。&lt;/p&gt;
&lt;p&gt;當然，這類能力也意味著企業需要更清楚地處理肖像授權、品牌授權和內容標註問題。AI 可以降低製作門檻，但不代表素材使用風險自動消失。尤其是涉及真人形象、相似人物、商品標識和廣告投放時，合規仍然要提前設計。&lt;/p&gt;
&lt;h2 id=&#34;文字世界理解和視覺範圍&#34;&gt;文字、世界理解和視覺範圍
&lt;/h2&gt;&lt;p&gt;Quality Mode 還強調世界理解和廣泛視覺風格。&lt;/p&gt;
&lt;p&gt;官方示例包括在蛋糕上用文字解釋亞歷山大大帝、生成電影感野餐場景、製作 UI 風格圖示等。這些例子說明 xAI 想讓 Grok Imagine 不局限於單一審美，而是覆蓋寫實攝影、商業廣告、產品渲染、圖示、海報和影片素材前置圖。&lt;/p&gt;
&lt;p&gt;這裡最值得關注的是文字和世界理解的結合。很多圖像任務不是簡單畫物體，而是要求模型理解場景裡的關係、用途、歷史事實、文字含義和視覺呈現。模型越能理解這些約束，越有機會從娛樂工具變成生產工具。&lt;/p&gt;
&lt;h2 id=&#34;quality-mode-也增強影片生成&#34;&gt;Quality Mode 也增強影片生成
&lt;/h2&gt;&lt;p&gt;xAI 在公告中提到，最新圖像模型與影片能力結合後，可以用於社交媒體影片素材、產品展示和廣告等場景。&lt;/p&gt;
&lt;p&gt;這符合目前多模態產品的趨勢：圖像生成不再是孤立能力，而是影片生成、廣告創意、產品演示和社交內容流水線的一環。企業可能先生成一張高品質產品圖，再擴展成短影片、動效廣告或多版本素材。&lt;/p&gt;
&lt;p&gt;從這個角度看，Quality Mode 的意義不只是「圖片更清晰」，而是為後續影片和行銷自動化提供更穩定的視覺起點。&lt;/p&gt;
&lt;h2 id=&#34;開發者如何呼叫&#34;&gt;開發者如何呼叫
&lt;/h2&gt;&lt;p&gt;官方給出的呼叫示例很簡單，使用 &lt;code&gt;xai_sdk&lt;/code&gt; 呼叫 &lt;code&gt;grok-imagine-image-quality&lt;/code&gt; 模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;xai_sdk&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xai_sdk&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sample&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;prompt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A collage of London landmarks in a stenciled street-art style&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;grok-imagine-image-quality&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這說明 Quality Mode 不是只放在 Grok 前端裡的功能，而是透過 API 面向企業開發者和團隊開放。對企業來說，API 形態更重要，因為它可以接入內部素材系統、廣告平台、CMS、設計工具和自動化流程。&lt;/p&gt;
&lt;h2 id=&#34;簡短判斷&#34;&gt;簡短判斷
&lt;/h2&gt;&lt;p&gt;Grok Imagine Quality Mode API 的核心方向，是把圖像生成從「好玩」推進到「可用於企業生產」。&lt;/p&gt;
&lt;p&gt;它強調真實感、文字渲染、提示詞跟隨、品牌一致性、圖像編輯、UGC 風格和影片生成銜接。每一項都指向同一個目標：讓團隊能批量、穩定、可控地生產視覺素材。&lt;/p&gt;
&lt;p&gt;接下來真正要看的，不只是單張圖片效果有多驚豔，而是三件事：文字渲染在複雜場景中是否穩定，參考圖編輯是否能保持身分和品牌一致性，以及 API 在大規模生成時的速度、成本和可控性。只有這些環節站住，Grok Imagine 才能真正進入企業內容生產流水線。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;xAI 公告：&lt;a class=&#34;link&#34; href=&#34;https://x.ai/news/grok-imagine-quality-mode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://x.ai/news/grok-imagine-quality-mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;API 文件：&lt;a class=&#34;link&#34; href=&#34;https://docs.x.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.x.ai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 Flash 做 Godot 遊戲 Demo：幾毛錢能跑通到什麼程度？</title>
        <link>https://knightli.com/zh-tw/2026/05/06/deepseek-v4-flash-godot-game-demo/</link>
        <pubDate>Wed, 06 May 2026 09:22:18 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/06/deepseek-v4-flash-godot-game-demo/</guid>
        <description>&lt;p&gt;&lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 用來開發 Godot 遊戲 Demo，到底能不能打？&lt;/p&gt;
&lt;p&gt;重點很直接：它能不能做出一個可執行、可觀察、帶物理效果的 Godot 小 Demo。&lt;/p&gt;
&lt;p&gt;結論先說：可以跑通，效果不算商業級，但已經足夠作為玩法原型和物理互動 Demo 使用。更重要的是，成本非常低，適合快速驗證想法。&lt;/p&gt;
&lt;h2 id=&#34;demo-表現&#34;&gt;Demo 表現
&lt;/h2&gt;&lt;p&gt;這個 Demo 的重點是物理互動。&lt;/p&gt;
&lt;p&gt;幾個比較直觀的效果包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;繩子可以被切斷。&lt;/li&gt;
&lt;li&gt;箱子會掉到地上。&lt;/li&gt;
&lt;li&gt;調大質量後，箱子碰撞會更猛烈。&lt;/li&gt;
&lt;li&gt;繩子表現出比較明顯的彈性。&lt;/li&gt;
&lt;li&gt;調整摩擦力和彈性後，箱子會出現明顯的滑動和反彈。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從呈現效果看，它已經不是「只生成幾段 Godot 腳本」那麼簡單，而是一個能執行、能觀察物理表現的小型原型。&lt;/p&gt;
&lt;h2 id=&#34;可用程度&#34;&gt;可用程度
&lt;/h2&gt;&lt;p&gt;這個 Demo 的價值在於「能跑、能看、能改」。它不是完整遊戲，也不是可以直接商業化的工程，但已經能說明幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; 能理解 Godot Demo 的基本目標。&lt;/li&gt;
&lt;li&gt;AI Agent 可以把需求轉成可執行工程。&lt;/li&gt;
&lt;li&gt;Godot 物理互動這種非網頁類任務，已經可以進入低成本原型階段。&lt;/li&gt;
&lt;li&gt;對個人開發者來說，它能把「想法」快速變成「能看的東西」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果目標是做一個正式遊戲，它當然還不夠；但如果目標是驗證「這個玩法有沒有意思」「物理效果大概能不能做出來」，這個 Demo 已經可用。&lt;/p&gt;
&lt;h2 id=&#34;成本意義&#34;&gt;成本意義
&lt;/h2&gt;&lt;p&gt;最值得關注的不是畫面有多精緻，而是成本。&lt;/p&gt;
&lt;p&gt;如果一個 Godot 物理 Demo 只需要幾毛錢級別的模型成本，就能得到一個可執行版本，那麼它的意義就不是替代專業遊戲開發，而是大幅降低原型試錯成本。&lt;/p&gt;
&lt;p&gt;以前想驗證一個小遊戲想法，至少需要自己熟悉 Godot、寫腳本、調場景、調物理參數。現在可以先讓 AI Agent 生成一個可執行版本，再由人判斷方向對不對。&lt;/p&gt;
&lt;p&gt;對獨立開發者來說，這類低成本試錯很有用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速驗證玩法概念。&lt;/li&gt;
&lt;li&gt;生成臨時 Demo 給別人看。&lt;/li&gt;
&lt;li&gt;探索 Godot API 和物理系統。&lt;/li&gt;
&lt;li&gt;把想法轉成能跑的初版工程。&lt;/li&gt;
&lt;li&gt;在不確定方向前減少手寫程式碼成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deepseek-v4-flash-的表現&#34;&gt;DeepSeek V4 Flash 的表現
&lt;/h2&gt;&lt;p&gt;比較值得注意的是，使用的是 &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt;，而不是更貴、更重的旗艦模型。&lt;/p&gt;
&lt;p&gt;它在「低成本原型」這個定位上表現不錯。它不是最強、最穩、最適合交付生產工程的模型，但在預算敏感、想快速試一下方向的場景裡，很有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4 Flash + Agent + Godot&lt;/code&gt; 更適合下面這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小型玩法原型。&lt;/li&gt;
&lt;li&gt;物理效果 Demo。&lt;/li&gt;
&lt;li&gt;UI 或互動概念驗證。&lt;/li&gt;
&lt;li&gt;教學示例。&lt;/li&gt;
&lt;li&gt;輔助理解 Godot 專案結構。&lt;/li&gt;
&lt;li&gt;生成第一版可執行工程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合直接承擔這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型遊戲架構。&lt;/li&gt;
&lt;li&gt;複雜角色控制器。&lt;/li&gt;
&lt;li&gt;網路同步。&lt;/li&gt;
&lt;li&gt;商業專案核心程式碼。&lt;/li&gt;
&lt;li&gt;高精度物理模擬。&lt;/li&gt;
&lt;li&gt;不經過人工測試的自動提交。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，它適合做「第一稿」和「試驗場」，不適合當生產工程負責人。&lt;/p&gt;
&lt;h2 id=&#34;這說明了什麼&#34;&gt;這說明了什麼
&lt;/h2&gt;&lt;p&gt;這說明，AI 程式設計正在從網頁、腳本、後端介面，繼續向遊戲開發和互動原型擴展。&lt;/p&gt;
&lt;p&gt;過去遊戲開發的門檻很高，尤其是引擎、腳本、資源管理和物理系統混在一起時，新手很容易卡住。現在模型加 Agent 工具，可以先把工程搭起來，讓開發者把注意力放在玩法判斷和效果調優上。&lt;/p&gt;
&lt;p&gt;它帶來的變化可能有三點：&lt;/p&gt;
&lt;p&gt;第一，遊戲原型會更便宜。很多想法不用等到完整開發階段才驗證，可以先得到可執行 Demo。&lt;/p&gt;
&lt;p&gt;第二，獨立開發者會更敢嘗試。不會 Godot 的人，也可以借助 AI 先摸到專案結構和基本流程。&lt;/p&gt;
&lt;p&gt;第三，模型穩定性會變得更重要。遊戲開發不是只要程式碼能跑，還要效果合理、手感正常、參數可控。未來誰能更好地結合實際畫面和執行狀態，誰就更適合做這類任務。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Flash 做 Godot Demo，可以概括成一句話：&lt;strong&gt;效果不完美，但足夠便宜、足夠快，也足夠適合做原型。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它離商業遊戲還很遠，但如果目標是用極低成本驗證一個小遊戲想法，它已經很有價值。&lt;/p&gt;
&lt;p&gt;對個人開發者來說，最現實的用法不是把遊戲全交給 AI，而是讓 AI 先給出能跑的工程，再由人負責判斷、取捨和打磨。這樣用，DeepSeek V4 Flash 這類低成本模型反而會很香。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CC Switch：一個桌面工具統一管理 Claude Code、Codex、Gemini CLI 和 OpenClaw</title>
        <link>https://knightli.com/zh-tw/2026/05/06/cc-switch-ai-cli-manager/</link>
        <pubDate>Wed, 06 May 2026 09:03:08 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/06/cc-switch-ai-cli-manager/</guid>
        <description>&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 是一個面向 AI 程式設計重度使用者的桌面管理工具。它要解決的問題很直接：現在很多人同時使用 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Codex&lt;/code&gt;、&lt;code&gt;Gemini CLI&lt;/code&gt;、&lt;code&gt;OpenCode&lt;/code&gt;、&lt;code&gt;OpenClaw&lt;/code&gt;，但每個工具都有自己的設定格式、Provider 寫法、MCP 設定和 Skills 管理方式。&lt;/p&gt;
&lt;p&gt;當你只用一個工具時，手動改設定還能忍；一旦多個工具混用，再加上官方帳號、第三方 API、中轉服務、本地模型和團隊共享設定，手動編輯 JSON、TOML、&lt;code&gt;.env&lt;/code&gt; 很快就會變成一件很煩的事。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的定位，就是把這些分散設定收進一個跨平台桌面應用裡。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;現代 AI 程式設計工具越來越像「命令列裡的開發同事」，但每個工具的生態還沒有完全統一。&lt;/p&gt;
&lt;p&gt;常見痛點包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 設定格式不同。&lt;/li&gt;
&lt;li&gt;切換 API Provider 時，要反覆改設定檔。&lt;/li&gt;
&lt;li&gt;MCP server 在不同工具之間重複設定。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;GEMINI.md&lt;/code&gt; 這類提示檔案難以統一維護。&lt;/li&gt;
&lt;li&gt;Skills 安裝、同步、備份和解除安裝缺少一個集中入口。&lt;/li&gt;
&lt;li&gt;多個帳號、多個 relay、多個模型服務切換很容易搞混。&lt;/li&gt;
&lt;li&gt;設定檔手動修改出錯後，排查成本很高。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的思路是：不要讓使用者記住每個工具的設定細節，而是用一個統一介面管理 Provider、MCP、Prompts、Skills、Sessions 和代理。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些工具&#34;&gt;支援哪些工具
&lt;/h2&gt;&lt;p&gt;README 中列出的核心支援對象包括五類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Codex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenCode&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenClaw&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這幾個工具本身定位相近，都是圍繞 AI 程式設計、Agent 工作流和命令列協作展開。但它們的設定體系不同，&lt;code&gt;CC Switch&lt;/code&gt; 的價值就在於把這些差異包裝起來。&lt;/p&gt;
&lt;p&gt;對經常比較不同 AI 程式設計工具的人來說，這比每次手動翻設定檔省心很多。&lt;/p&gt;
&lt;h2 id=&#34;provider-管理&#34;&gt;Provider 管理
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的第一層能力是 Provider 管理。&lt;/p&gt;
&lt;p&gt;它內建了 50 多個 Provider 預設，README 中提到的方向包括 AWS Bedrock、NVIDIA NIM，以及各種社群 relay。使用者可以複製 API key，一鍵匯入，然後在介面中切換。&lt;/p&gt;
&lt;p&gt;實用點主要有幾個：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一鍵新增 Provider。&lt;/li&gt;
&lt;li&gt;Provider 拖曳排序。&lt;/li&gt;
&lt;li&gt;系統匣快速切換。&lt;/li&gt;
&lt;li&gt;Provider 匯入和匯出。&lt;/li&gt;
&lt;li&gt;部分通用 Provider 可同步到多個應用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對很多人來說，這個功能已經足夠有吸引力。因為 AI 程式設計工具的日常使用，經常不是「模型不會用」，而是「今天這個 key 用哪個工具、哪個 endpoint、哪個帳號」容易亂。&lt;/p&gt;
&lt;h2 id=&#34;本地代理與故障切換&#34;&gt;本地代理與故障切換
&lt;/h2&gt;&lt;p&gt;除了寫設定檔，&lt;code&gt;CC Switch&lt;/code&gt; 還提供本地代理模式。&lt;/p&gt;
&lt;p&gt;這個能力的重點是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;熱切換 Provider。&lt;/li&gt;
&lt;li&gt;格式轉換。&lt;/li&gt;
&lt;li&gt;自動故障轉移。&lt;/li&gt;
&lt;li&gt;熔斷器。&lt;/li&gt;
&lt;li&gt;Provider 健康檢查。&lt;/li&gt;
&lt;li&gt;請求修正。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單說，它不只是把設定寫進目標工具，還可以在中間加一層本地代理，讓不同工具透過代理存取模型服務。&lt;/p&gt;
&lt;p&gt;這對多 Provider 使用者很有用：一個服務掛了，可以切到另一個；一個模型貴，可以換成更便宜的；某個請求格式不相容，也可以透過代理層做適配。&lt;/p&gt;
&lt;h2 id=&#34;mcpprompts-和-skills&#34;&gt;MCP、Prompts 和 Skills
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 比較重要的第二層能力，是統一管理 MCP、Prompts 和 Skills。&lt;/p&gt;
&lt;h3 id=&#34;mcp&#34;&gt;MCP
&lt;/h3&gt;&lt;p&gt;它提供統一 MCP 面板，可以在多個應用之間管理 MCP server，並支援雙向同步和 Deep Link 匯入。&lt;/p&gt;
&lt;p&gt;這對正在用 MCP 的使用者很實用。因為 MCP server 一多，設定很容易分散在不同客戶端裡。統一面板可以減少重複設定，也方便遷移。&lt;/p&gt;
&lt;h3 id=&#34;prompts&#34;&gt;Prompts
&lt;/h3&gt;&lt;p&gt;Prompts 部分支援 Markdown 編輯，並且可以在不同工具之間同步對應檔案，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GEMINI.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些檔案本質上都是給 Agent 的專案說明書。統一管理後，可以更容易維護團隊規則、專案約定和全域提示。&lt;/p&gt;
&lt;h3 id=&#34;skills&#34;&gt;Skills
&lt;/h3&gt;&lt;p&gt;Skills 支援從 GitHub 倉庫或 ZIP 檔案一鍵安裝，也支援自訂倉庫管理、符號連結和檔案複製。&lt;/p&gt;
&lt;p&gt;如果你同時使用 Claude Code、Codex、OpenClaw 這類工具，Skills 很容易變成一堆散落在不同目錄的檔案。&lt;code&gt;CC Switch&lt;/code&gt; 把它們集中起來，能降低維護成本。&lt;/p&gt;
&lt;h2 id=&#34;會話與工作區&#34;&gt;會話與工作區
&lt;/h2&gt;&lt;p&gt;README 還提到 Session Manager 和 Workspace 相關能力。&lt;/p&gt;
&lt;p&gt;它可以瀏覽、搜尋和恢復多個應用裡的會話歷史。對長期使用 AI 程式設計工具的人來說，會話管理其實很重要：很多有價值的上下文、除錯過程、方案比較，都埋在舊對話裡。&lt;/p&gt;
&lt;p&gt;此外，它還為 OpenClaw 提供 Workspace editor，可以編輯 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;SOUL.md&lt;/code&gt; 等 agent 檔案，並帶 Markdown 預覽。&lt;/p&gt;
&lt;p&gt;這說明 &lt;code&gt;CC Switch&lt;/code&gt; 不只是一個「切換 key 的小工具」，而是在往 AI Agent 工作台方向擴展。&lt;/p&gt;
&lt;h2 id=&#34;雲同步與資料儲存&#34;&gt;雲同步與資料儲存
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 支援透過 Dropbox、OneDrive、iCloud、NAS 或 WebDAV 同步 Provider 資料。&lt;/p&gt;
&lt;p&gt;本地資料儲存方式也比較清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料庫：&lt;code&gt;~/.cc-switch/cc-switch.db&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;本地設定：&lt;code&gt;~/.cc-switch/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;自動備份：&lt;code&gt;~/.cc-switch/backups/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skills：&lt;code&gt;~/.cc-switch/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Skill 備份：&lt;code&gt;~/.cc-switch/skill-backups/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它使用 SQLite 作為主要資料源，並強調原子寫入和自動備份，目標是避免設定檔在切換或寫入時損壞。&lt;/p&gt;
&lt;p&gt;這個設計對重度使用者很關鍵。因為一旦設定管理工具本身把設定寫壞，影響的是所有 AI 程式設計工具。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 是跨平台桌面應用，基於 Tauri 2 建構。&lt;/p&gt;
&lt;p&gt;系統要求大致如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows：Windows 10 及以上&lt;/li&gt;
&lt;li&gt;macOS：macOS 12 Monterey 及以上&lt;/li&gt;
&lt;li&gt;Linux：Ubuntu 22.04+、Debian 11+、Fedora 34+ 等主流發行版&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows 使用者可以下載 &lt;code&gt;.msi&lt;/code&gt; 安裝包或可攜版壓縮包。&lt;/p&gt;
&lt;p&gt;macOS 使用者可以用 Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap farion1231/ccswitch
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install --cask cc-switch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更新：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew upgrade --cask cc-switch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux 使用者可以選擇 &lt;code&gt;.deb&lt;/code&gt;、&lt;code&gt;.rpm&lt;/code&gt; 或 AppImage。Arch Linux 使用者也可以透過 &lt;code&gt;paru -S cc-switch-bin&lt;/code&gt; 安裝。&lt;/p&gt;
&lt;p&gt;截至 2026 年 5 月 6 日，倉庫頁面顯示最新 release 為 &lt;code&gt;CC Switch v3.14.1&lt;/code&gt;，發布時間是 2026 年 4 月 23 日。&lt;/p&gt;
&lt;h2 id=&#34;技術棧&#34;&gt;技術棧
&lt;/h2&gt;&lt;p&gt;從倉庫結構看，&lt;code&gt;CC Switch&lt;/code&gt; 是典型的 Tauri 桌面應用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端：React 18、TypeScript、Vite、TailwindCSS、TanStack Query、shadcn/ui&lt;/li&gt;
&lt;li&gt;後端：Tauri 2、Rust、SQLite、Tokio&lt;/li&gt;
&lt;li&gt;測試：Vitest、MSW、Testing Library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心設計模式包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite 作為 Single Source of Truth。&lt;/li&gt;
&lt;li&gt;JSON 保存裝置級本地設定。&lt;/li&gt;
&lt;li&gt;切換時寫入目標工具的 live config。&lt;/li&gt;
&lt;li&gt;編輯當前 Provider 時從 live config 回填。&lt;/li&gt;
&lt;li&gt;使用臨時檔案加 rename 的方式做原子寫入。&lt;/li&gt;
&lt;li&gt;資料庫連線加鎖，避免並發寫入問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類架構說明專案並不是簡單腳本，而是按長期桌面工具來設計的。&lt;/p&gt;
&lt;h2 id=&#34;適合誰用&#34;&gt;適合誰用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 適合下面幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同時使用 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw。&lt;/li&gt;
&lt;li&gt;經常切換官方帳號、第三方 relay、本地模型或團隊 Provider。&lt;/li&gt;
&lt;li&gt;已經開始大量使用 MCP。&lt;/li&gt;
&lt;li&gt;想統一維護 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;GEMINI.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;經常安裝、測試和遷移 Skills。&lt;/li&gt;
&lt;li&gt;想看不同工具的會話歷史和使用情況。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只用一個 AI 程式設計工具，而且一直走官方登入，不怎麼折騰 Provider、MCP 和 Skills，那它的價值可能沒那麼明顯。&lt;/p&gt;
&lt;p&gt;但如果你已經進入「多工具、多帳號、多 Provider、多專案」的狀態，它能省掉很多瑣碎設定工作。&lt;/p&gt;
&lt;h2 id=&#34;需要注意什麼&#34;&gt;需要注意什麼
&lt;/h2&gt;&lt;p&gt;這類工具很方便，但也要注意邊界。&lt;/p&gt;
&lt;p&gt;第一，它會管理多個 AI CLI 的設定，因此要確認自己信任這個工具和它的寫入邏輯。&lt;/p&gt;
&lt;p&gt;第二，API key、relay endpoint、MCP server 都屬於敏感設定。開啟雲同步前，要確認同步目錄和 WebDAV 服務本身安全可靠。&lt;/p&gt;
&lt;p&gt;第三，切換 Provider 後，多數工具仍然需要重啟終端或 CLI 才能生效。README 中提到，Claude Code 對 Provider 資料支援熱切換，但其他工具通常仍需要重啟。&lt;/p&gt;
&lt;p&gt;第四，切回官方登入時，最好按專案說明新增 official provider，再重新走對應工具的登入流程。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 的價值不在於又做了一個 AI 程式設計工具，而在於它承認了一個現實：AI 程式設計生態已經進入多工具並存階段。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 各有自己的設定系統，MCP、Skills、Prompts、Provider 又在快速擴展。繼續靠手動改設定，遲早會變成負擔。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; 把這些東西收進一個桌面應用裡，讓使用者可以更輕鬆地切換 Provider、同步 MCP、管理 Skills、維護提示檔案和查看會話。對重度 AI 程式設計使用者來說，這類工具很可能會從「可選小工具」變成「日常基礎設施」。&lt;/p&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex App 保姆級上手：安裝、沙箱、並行任務、Skills 與 MCP</title>
        <link>https://knightli.com/zh-tw/2026/05/06/codex-app-complete-guide-skills-mcp/</link>
        <pubDate>Wed, 06 May 2026 08:41:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/06/codex-app-complete-guide-skills-mcp/</guid>
        <description>&lt;p&gt;Codex App 可以理解成一個面向 AI 編程的任務工作台。它不是傳統 IDE，也不是單純聊天視窗，而是把多任務、專案管理、沙箱權限、Git、雲端執行、外掛、Skills、MCP 和自動化集中到一個介面裡。&lt;/p&gt;
&lt;p&gt;如果你已經在用 Codex CLI、Claude Code、Cursor 或其他 coding agent，Codex App 最值得關注的地方，是它把「多個 agent 並行幹活」做成了更清楚的桌面工作流。&lt;/p&gt;
&lt;h2 id=&#34;codex-app-適合做什麼&#34;&gt;Codex App 適合做什麼
&lt;/h2&gt;&lt;p&gt;Codex App 的核心價值不是讓 AI 回答問題，而是讓 AI 在專案目錄裡持續執行任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改程式碼、執行命令、啟動開發服務。&lt;/li&gt;
&lt;li&gt;管理多個專案和多個任務。&lt;/li&gt;
&lt;li&gt;在本地或雲端執行長任務。&lt;/li&gt;
&lt;li&gt;呼叫外掛、Skills 和 MCP 擴展能力。&lt;/li&gt;
&lt;li&gt;透過 Git、worktree 和 PR 管理改動。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 官方也把 Codex App 定位成一個用於管理多個 coding agent 的介面。它適合需要同時推進多個程式碼任務的人，尤其適合前端頁面、腳本工具、小型應用、文件整理和自動化工作流。&lt;/p&gt;
&lt;h2 id=&#34;安裝前準備&#34;&gt;安裝前準備
&lt;/h2&gt;&lt;p&gt;使用 Codex App 前，建議先準備好三個基礎工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Node.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VS Code&lt;/code&gt; 或你常用的 IDE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex App 支援 macOS 和 Windows。安裝後使用 ChatGPT 帳號登入，首次進入時可以選擇主要使用場景，例如編程或日常工作。Codex 會根據選擇預裝一部分外掛和 Skills，後續也可以在設定和外掛市場裡調整。&lt;/p&gt;
&lt;p&gt;Windows 和 macOS 的主要功能大體一致，但部分電腦自動化能力可能依賴具體平台和外掛支援，實際以你目前版本顯示為準。&lt;/p&gt;
&lt;h2 id=&#34;介面結構專案任務和對話&#34;&gt;介面結構：專案、任務和對話
&lt;/h2&gt;&lt;p&gt;Codex App 是典型的三欄布局：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左側：專案、任務、歷史對話、外掛和自動化入口。&lt;/li&gt;
&lt;li&gt;中間：目前對話視窗。&lt;/li&gt;
&lt;li&gt;右側：檔案、瀏覽器、終端機、執行結果等多功能區域。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個專案通常對應一個本地資料夾。你可以在同一個專案裡開多個對話，也可以同時打開多個專案，讓不同 agent 並行執行任務。&lt;/p&gt;
&lt;p&gt;任務列表會顯示不同狀態：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正在執行：agent 仍在執行。&lt;/li&gt;
&lt;li&gt;等待批准：需要你確認權限、連網、安裝依賴或執行高風險操作。&lt;/li&gt;
&lt;li&gt;已完成：任務已經結束，可以查看結果或繼續追問。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比在多個終端視窗裡來回切換更直觀，也更適合同時管理多個 AI 任務。&lt;/p&gt;
&lt;h2 id=&#34;沙箱與權限控制&#34;&gt;沙箱與權限控制
&lt;/h2&gt;&lt;p&gt;Codex App 的權限體系圍繞沙箱展開。預設情況下，目前專案資料夾會成為 agent 的主要工作範圍。&lt;/p&gt;
&lt;p&gt;常見權限邊界包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以讀取和修改專案目錄內的檔案。&lt;/li&gt;
&lt;li&gt;預設不能隨意修改專案外檔案。&lt;/li&gt;
&lt;li&gt;預設會限制連網或高風險命令。&lt;/li&gt;
&lt;li&gt;需要越權時，會向使用者申請批准。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較實用的模式是「自動審查」：低風險操作由系統自動放行，高風險操作再交給使用者確認。這樣既能減少頻繁彈窗，又能避免 agent 在不知情的情況下執行危險操作。&lt;/p&gt;
&lt;p&gt;「完全存取」要謹慎開啟。它適合你明確知道 agent 要做什麼，並且專案已經有 Git 備份、重要檔案也有額外備份的場景。日常使用不建議長期保持完全存取。&lt;/p&gt;
&lt;h2 id=&#34;上下文模型和額度&#34;&gt;上下文、模型和額度
&lt;/h2&gt;&lt;p&gt;Codex App 會顯示目前對話的上下文使用情況。對話越長，歷史內容越多，模型需要處理的上下文也越大。&lt;/p&gt;
&lt;p&gt;實用建議是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個任務完成後，優先開新對話。&lt;/li&gt;
&lt;li&gt;長對話可以手動壓縮，但不要把壓縮當成萬能記憶。&lt;/li&gt;
&lt;li&gt;複雜任務先寫清楚目標、邊界和驗收標準。&lt;/li&gt;
&lt;li&gt;不要把大量無關日誌、報錯和檔案一次性塞進對話。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型選擇上，可以根據任務複雜度調整思考強度。簡單修改、文案整理、重複任務不一定需要最高規格模型；架構遷移、疑難 bug、跨檔案重構則更適合使用更強模型。&lt;/p&gt;
&lt;p&gt;如果介面裡有快速模式，也要注意它通常會帶來更高的額度消耗。趕時間時可以開，日常不必預設開啟。&lt;/p&gt;
&lt;h2 id=&#34;圖片生成與多模態輸入&#34;&gt;圖片生成與多模態輸入
&lt;/h2&gt;&lt;p&gt;Codex App 可以接收圖片和檔案作為上下文，也可以在合適場景中呼叫圖像生成能力。&lt;/p&gt;
&lt;p&gt;這對前端和內容類專案很有用。例如你可以讓 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根據截圖修正頁面樣式。&lt;/li&gt;
&lt;li&gt;替換網頁中的不合適配圖。&lt;/li&gt;
&lt;li&gt;生成產品圖、輪播圖或頁面素材。&lt;/li&gt;
&lt;li&gt;根據 UI 截圖指出需要修改的位置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更高效的用法是：不要只說「改好看一點」，而是結合截圖指出具體問題，例如「這個卡片間距太大」「這裡的圖和服務場景不匹配」「把地圖區域做得更清楚」。&lt;/p&gt;
&lt;h2 id=&#34;steer任務執行中及時糾偏&#34;&gt;Steer：任務執行中及時糾偏
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Steer&lt;/code&gt; 可以理解成「執行中接管方向」。當 agent 已經開始執行，但你發現它理解錯了方向，不應該等它全部跑完再改。&lt;/p&gt;
&lt;p&gt;這時可以使用引導功能，把新的指令插入目前執行流程，讓 Codex 及時修正路線。&lt;/p&gt;
&lt;p&gt;適合使用 Steer 的場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agent 誤解了需求。&lt;/li&gt;
&lt;li&gt;生成的頁面風格明顯不對。&lt;/li&gt;
&lt;li&gt;正在執行的方案成本太高。&lt;/li&gt;
&lt;li&gt;你臨時補充了關鍵約束。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般建議保留預設排隊行為，只在確實需要干預時手動使用 Steer。這樣既不會打亂正常任務，也能在關鍵時刻把方向拉回來。&lt;/p&gt;
&lt;h2 id=&#34;計劃模式和內建瀏覽器&#34;&gt;計劃模式和內建瀏覽器
&lt;/h2&gt;&lt;p&gt;複雜任務建議先開計劃模式。計劃模式下，Codex 不會馬上改程式碼，而是先輸出方案，必要時還會用卡片形式追問關鍵選擇。&lt;/p&gt;
&lt;p&gt;適合開計劃模式的任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;框架遷移，例如從普通 React 專案遷到 Next.js。&lt;/li&gt;
&lt;li&gt;大範圍重構。&lt;/li&gt;
&lt;li&gt;涉及資料庫、認證、部署的功能。&lt;/li&gt;
&lt;li&gt;你還沒想清楚技術路線的需求。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Codex App 的右側區域可以打開內建瀏覽器，用來預覽本地開發服務。你可以在頁面上做批註，讓 Codex 按具體 UI 位置修改問題。這種「看頁面、點位置、讓 AI 改」的流程，比純文字描述更適合前端除錯。&lt;/p&gt;
&lt;h2 id=&#34;gitide-和程式碼回滾&#34;&gt;Git、IDE 和程式碼回滾
&lt;/h2&gt;&lt;p&gt;Codex App 不是完整 IDE。它可以查看程式碼、批註程式碼，但真正的手寫編輯仍然更適合交給 VS Code、Cursor、Windsurf 等 IDE。&lt;/p&gt;
&lt;p&gt;建議每個 Codex 專案都盡早初始化 Git：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;讓 Codex 建立或檢查 &lt;code&gt;.gitignore&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在完成一個可用狀態後提交一次。&lt;/li&gt;
&lt;li&gt;每次大改前確保有乾淨提交點。&lt;/li&gt;
&lt;li&gt;不滿意時用 Git 回滾程式碼。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果只回滾對話歷史，程式碼不會自動跟著回滾。比較穩的做法是：對話層面回到合適節點，程式碼層面用 Git commit hash 回到對應狀態。&lt;/p&gt;
&lt;h2 id=&#34;worktree並行開發多個方向&#34;&gt;Worktree：並行開發多個方向
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; 是 Codex App 裡非常適合並行 agent 的能力。&lt;/p&gt;
&lt;p&gt;它的本質是：基於同一個倉庫建立多個獨立工作目錄，每個目錄對應不同分支。這樣你可以讓不同 agent 在不同資料夾裡同時開發，不互相覆蓋。&lt;/p&gt;
&lt;p&gt;典型用法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個 worktree 優化客戶評價元件。&lt;/li&gt;
&lt;li&gt;一個 worktree 調整門店資訊和地圖布局。&lt;/li&gt;
&lt;li&gt;兩個任務完成後分別合併回主幹。&lt;/li&gt;
&lt;li&gt;合併完成後刪除臨時 worktree。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比在同一個目錄裡讓多個 agent 同時改程式碼穩得多。遇到衝突時，也可以按正常 Git 流程 review 和合併。&lt;/p&gt;
&lt;h2 id=&#34;雲端執行環境&#34;&gt;雲端執行環境
&lt;/h2&gt;&lt;p&gt;Codex 不只能在本機工作，也可以把任務委託到雲端環境執行。&lt;/p&gt;
&lt;p&gt;雲端執行適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出門在外，手邊只有手機。&lt;/li&gt;
&lt;li&gt;希望 agent 在背景跑長任務。&lt;/li&gt;
&lt;li&gt;程式碼已經同步到 GitHub，需要讓 Codex 基於遠端倉庫修改。&lt;/li&gt;
&lt;li&gt;希望透過 PR 形式審查和合併改動。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型流程是：先把本地程式碼推到 GitHub，再讓 Codex 在雲端環境中拉取倉庫、執行任務、生成改動，最後以 PR 或 diff 的方式交給你審核。&lt;/p&gt;
&lt;p&gt;本地繼續開發時，要記得把遠端最新改動同步回來。&lt;/p&gt;
&lt;h2 id=&#34;記憶系統寫好-agentsmd&#34;&gt;記憶系統：寫好 AGENTS.md
&lt;/h2&gt;&lt;p&gt;新對話預設沒有完整歷史記憶。專案一複雜，如果每次都重新解釋背景，會很浪費。&lt;/p&gt;
&lt;p&gt;最通用的做法，是在專案根目錄維護 &lt;code&gt;AGENTS.md&lt;/code&gt;。這個檔案可以記錄：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案目標和主要技術棧。&lt;/li&gt;
&lt;li&gt;常用命令。&lt;/li&gt;
&lt;li&gt;目錄結構說明。&lt;/li&gt;
&lt;li&gt;程式碼風格和命名約定。&lt;/li&gt;
&lt;li&gt;禁止事項，例如不要批量刪除檔案。&lt;/li&gt;
&lt;li&gt;測試、建置和部署規則。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你也可以讓 Codex 先通讀專案，再生成一版 &lt;code&gt;AGENTS.md&lt;/code&gt;，然後人工審一遍。複雜專案裡，這個檔案非常值得維護。&lt;/p&gt;
&lt;p&gt;全域規則也要謹慎。適合寫入所有專案都通用的安全約束，例如「不要遞迴刪除目錄」「執行破壞性操作前必須確認」。不要把某個專案的細節寫進全域規則，否則會污染其他專案。&lt;/p&gt;
&lt;h2 id=&#34;外掛和自動化&#34;&gt;外掛和自動化
&lt;/h2&gt;&lt;p&gt;外掛用於把外部服務接入 Codex，例如 GitHub、Gmail、Google Drive、資料庫、部署平台等。&lt;/p&gt;
&lt;p&gt;外掛的價值在於減少複製貼上。比如你可以讓 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看某個 GitHub 倉庫的 star 趨勢。&lt;/li&gt;
&lt;li&gt;整理郵件內容並發給自己。&lt;/li&gt;
&lt;li&gt;定期執行某個檢查任務。&lt;/li&gt;
&lt;li&gt;把結果寫成摘要。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自動化則適合重複任務。例如每週五下午檢查一次倉庫資料，並發送郵件報告。簡單自動化任務通常不需要最高規格模型，選擇較輕量的模型即可。&lt;/p&gt;
&lt;h2 id=&#34;skills把工作流變成可複用能力&#34;&gt;Skills：把工作流變成可複用能力
&lt;/h2&gt;&lt;p&gt;Skills 是 Codex 的「專業說明書」。它不是單次提示詞，而是把某類任務的流程、規範、腳本和注意事項沉澱下來，讓 Codex 後續穩定複用。&lt;/p&gt;
&lt;p&gt;常見來源有三類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方 Skills。&lt;/li&gt;
&lt;li&gt;第三方 Skills。&lt;/li&gt;
&lt;li&gt;自己編寫的 Skills。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;適合做成 Skill 的工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把字幕整理成圖文筆記。&lt;/li&gt;
&lt;li&gt;按公司規範寫週報。&lt;/li&gt;
&lt;li&gt;批量處理圖片或文件。&lt;/li&gt;
&lt;li&gt;固定格式的程式碼審查。&lt;/li&gt;
&lt;li&gt;特定框架的專案初始化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果某個提示詞你已經複製貼上了很多次，就值得考慮把它做成 Skill。&lt;/p&gt;
&lt;h2 id=&#34;mcp接入外部工具和資料庫&#34;&gt;MCP：接入外部工具和資料庫
&lt;/h2&gt;&lt;p&gt;MCP 可以理解成給大模型使用的標準化工具協議。透過 MCP，Codex 可以呼叫外部服務完成更具體的任務。&lt;/p&gt;
&lt;p&gt;例如接入 Supabase 後，可以讓 Codex：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;建立資料表。&lt;/li&gt;
&lt;li&gt;讀取資料庫結構。&lt;/li&gt;
&lt;li&gt;修改後端接口。&lt;/li&gt;
&lt;li&gt;把前端表單提交到資料庫。&lt;/li&gt;
&lt;li&gt;根據資料庫狀態除錯問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類能力很強，但也要注意權限邊界。資料庫、生產環境、部署平台、郵件帳號都屬於高風險資源。第一次接入時，最好使用測試專案和低權限帳號。&lt;/p&gt;
&lt;h2 id=&#34;部署外掛&#34;&gt;部署外掛
&lt;/h2&gt;&lt;p&gt;部署平台外掛可以讓 Codex 直接完成建置和發布，例如把前端專案部署到 Netlify 一類平台。&lt;/p&gt;
&lt;p&gt;這類外掛適合小型網站、原型頁面、內部工具和展示專案。實際使用時建議注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部署前先跑本地建置。&lt;/li&gt;
&lt;li&gt;環境變數不要直接寫進程式碼。&lt;/li&gt;
&lt;li&gt;發布後檢查頁面是否能正常訪問。&lt;/li&gt;
&lt;li&gt;生產專案要保留人工 review。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI 可以幫你打通發布流程，但發布權限仍然要謹慎管理。&lt;/p&gt;
&lt;h2 id=&#34;電腦自動化&#34;&gt;電腦自動化
&lt;/h2&gt;&lt;p&gt;在支援的平台和外掛環境裡，Codex 還可以操作瀏覽器或桌面應用，完成更接近 RPA 的任務。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打開聊天軟體並準備一條訊息。&lt;/li&gt;
&lt;li&gt;瀏覽專案看板，彙總任務狀態。&lt;/li&gt;
&lt;li&gt;生成英文簡報。&lt;/li&gt;
&lt;li&gt;在你確認後發送給指定對象。&lt;/li&gt;
&lt;li&gt;把這套流程做成定時自動化。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類功能很有想像力，但也最需要安全邊界。凡是涉及發訊息、發郵件、提交表單、付款、刪除資料的操作，都應該保留人工確認。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;Codex App 的正確打開方式，不是讓它一次性全自動接管一切，而是把任務拆清楚，讓它在受控環境裡高效執行。&lt;/p&gt;
&lt;p&gt;推薦習慣：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每個專案先初始化 Git。&lt;/li&gt;
&lt;li&gt;複雜任務先開計劃模式。&lt;/li&gt;
&lt;li&gt;並行任務優先用 worktree。&lt;/li&gt;
&lt;li&gt;專案規則寫進 &lt;code&gt;AGENTS.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;高風險操作保留人工確認。&lt;/li&gt;
&lt;li&gt;重複流程沉澱成 Skill 或自動化。&lt;/li&gt;
&lt;li&gt;外掛和 MCP 先在測試環境驗證。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;參考資料&#34;&gt;參考資料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-the-codex-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing the Codex app - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-codex-in-chatgpt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/academy/codex-plugins-and-skills/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Plugins and skills - OpenAI Academy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Codex App 的重點不是「多一個 AI 聊天視窗」，而是把 AI 編程變成一個可管理的工作台：本地專案、雲端任務、Git、worktree、外掛、Skills、MCP 和自動化都能串起來。&lt;/p&gt;
&lt;p&gt;真正用好它的關鍵，是在「放權」和「控制」之間找到平衡。小任務可以大膽交給 Codex，複雜任務先讓它計劃，高風險動作必須確認。這樣它才會從一個會寫程式碼的助手，變成可以長期協作的工程工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes &#43; Qwen3.6：本地 Agent 的一套低成本部署方案</title>
        <link>https://knightli.com/zh-tw/2026/05/04/hermes-qwen36-local-agent/</link>
        <pubDate>Mon, 04 May 2026 06:40:30 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/04/hermes-qwen36-local-agent/</guid>
        <description>&lt;p&gt;這篇記錄整理一套本地 Agent 部署方案：用 &lt;code&gt;llama.cpp&lt;/code&gt; 在 WSL2 中運行 Qwen3.6 GGUF 模型，再把 Hermes Agent 接到本地 OpenAI-compatible API。這樣可以在自己的電腦上獲得一個可長期在線的本地 AI 助手，不再按在線服務的 Token 額度計費。&lt;/p&gt;
&lt;p&gt;這套方案適合想體驗本地 AI Agent、又希望保留資料隱私和長期可控性的使用者。它可以用於日常問答、寫作、程式碼輔助、資料整理和簡單自動化任務。需要注意的是，模型規模越大，對顯存要求越高；原文示例使用的是 Qwen3.6-27B，顯存 24GB 更穩。如果顯存較小，應選擇更小尺寸或更低量化的模型。&lt;/p&gt;
&lt;h2 id=&#34;方案結構&#34;&gt;方案結構
&lt;/h2&gt;&lt;p&gt;整體鏈路很簡單：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows 上安裝 WSL2 和 Ubuntu 24.04。&lt;/li&gt;
&lt;li&gt;在 WSL2 中安裝 CUDA Toolkit、編譯 &lt;code&gt;llama.cpp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;下載 Qwen3.6 GGUF 模型。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;llama-server&lt;/code&gt; 啟動本地模型服務。&lt;/li&gt;
&lt;li&gt;安裝 Hermes Agent，並把它配置到 &lt;code&gt;http://localhost:8080/v1&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;可選：寫啟動腳本，讓 WSL2 打開時自動啟動模型服務。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hermes 負責 Agent 能力，Qwen3.6 負責本地大模型能力。兩者組合後，可以把電腦變成一個本地私有 AI 助理。&lt;/p&gt;
&lt;h2 id=&#34;安裝-wsl2-和-ubuntu&#34;&gt;安裝 WSL2 和 Ubuntu
&lt;/h2&gt;&lt;p&gt;在 Windows PowerShell 管理員視窗中執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-set-default-version&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重啟後安裝 Ubuntu 24.04：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;24.04&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝完成後，Ubuntu 會提示設定使用者名稱和密碼。進入 Ubuntu 後，先檢查 NVIDIA GPU 是否能在 WSL2 中正常識別：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果無法識別 GPU，通常需要先更新 Windows 端的 NVIDIA 顯示卡驅動。WSL2 會繼承 Windows 驅動，但 CUDA Toolkit 仍需要在 WSL2 內單獨安裝。&lt;/p&gt;
&lt;h2 id=&#34;安裝-python-和基礎工具&#34;&gt;安裝 Python 和基礎工具
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y python3-pip python3-venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;後續還需要編譯工具、Git 和 CMake：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cmake build-essential git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;編譯-llamacpp&#34;&gt;編譯 llama.cpp
&lt;/h2&gt;&lt;p&gt;先拉取源碼：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ggerganov/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 WSL2 中已經有可用 CUDA 環境，可以直接編譯：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;CMAKE_CUDA_ARCHITECTURES=89&lt;/code&gt; 適合 Ada 架構顯示卡，例如 RTX 40 系列。其他顯示卡應按實際架構調整。&lt;/p&gt;
&lt;p&gt;如果編譯時報 CUDA Toolkit 缺失，先在 WSL2 中安裝 CUDA Toolkit：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dpkg -i cuda-keyring_1.1-1_all.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y cuda-toolkit-12-8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝完成後配置環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/bin:&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LD_LIBRARY_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/cuda-12.8/lib64:&lt;span class=&#34;nv&#34;&gt;$LD_LIBRARY_PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export PATH=/usr/local/cuda-12.8/bin:$PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後重新編譯：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/llama.cpp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build -DGGML_CUDA&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ON -DCMAKE_CUDA_ARCHITECTURES&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;89&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;下載-qwen36-gguf-模型&#34;&gt;下載 Qwen3.6 GGUF 模型
&lt;/h2&gt;&lt;p&gt;原文示例使用 &lt;code&gt;unsloth/Qwen3.6-27B-GGUF&lt;/code&gt; 中的 &lt;code&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hf download unsloth/Qwen3.6-27B-GGUF &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--local-dir ~/models/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個文件約 17GB。如果 Hugging Face 下載慢，可以換 ModelScope 等國內鏡像。顯存不足時不要硬上 27B，可以換更小模型或更低量化版本。&lt;/p&gt;
&lt;h2 id=&#34;啟動本地模型服務&#34;&gt;啟動本地模型服務
&lt;/h2&gt;&lt;p&gt;根據自己的模型文件名啟動 &lt;code&gt;llama-server&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動成功後，在 Windows 瀏覽器訪問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要讓 Hermes Agent 或其他 OpenAI-compatible 客戶端調用，API 地址通常是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;thinking-模式取捨&#34;&gt;Thinking 模式取捨
&lt;/h2&gt;&lt;p&gt;Qwen3.6 預設可能啟用 Thinking 模式。它適合複雜推理、複雜程式碼問題、多步驟分析，但速度會慢一些。&lt;/p&gt;
&lt;p&gt;如果想關閉 Thinking 模式，可以停止服務後增加 &lt;code&gt;--chat-template-kwargs&lt;/code&gt; 參數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/llama.cpp/build/bin/llama-server &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--n-gpu-layers &lt;span class=&#34;m&#34;&gt;99&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ctx-size &lt;span class=&#34;m&#34;&gt;32768&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--flash-attn on &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--temp 1.0 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-p 0.95 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--top-k &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--presence-penalty 1.5 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--chat-template-kwargs &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;enable_thinking&amp;#34;:false}&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;關閉 Thinking 後，簡單問答、寫作、程式碼補全和解釋程式碼會更快；但複雜演算法設計、疑難 Debug 和架構分析仍建議開啟 Thinking。&lt;/p&gt;
&lt;h2 id=&#34;安裝-hermes-agent&#34;&gt;安裝 Hermes Agent
&lt;/h2&gt;&lt;p&gt;保持 &lt;code&gt;llama-server&lt;/code&gt; 運行，再新開一個 WSL2 終端安裝 Hermes Agent：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝腳本會處理 Python、Node.js、ripgrep、ffmpeg 等依賴。配置模型端點時選擇自訂 endpoint：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;URL: http://localhost:8080/v1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: 12345678
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: 自動識別
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;API Key 對本地 &lt;code&gt;llama-server&lt;/code&gt; 來說可以隨便填一個佔位值。配置完成後，可以繼續接 Telegram、微信、QQ、Discord 等聊天工具，讓 Hermes Agent 透過這些入口調用本地模型並執行任務。&lt;/p&gt;
&lt;h2 id=&#34;自動啟動模型服務&#34;&gt;自動啟動模型服務
&lt;/h2&gt;&lt;p&gt;可以寫一個啟動腳本，讓 WSL2 終端打開時自動啟動模型服務。&lt;/p&gt;
&lt;p&gt;創建腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; ~/start-llm.sh &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Starting Qwen3.6-27B llama-server...&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;~/llama.cpp/build/bin/llama-server \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--n-gpu-layers 99 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--ctx-size 65536 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--flash-attn on \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--temp 1.0 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-p 0.95 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--top-k 20 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--presence-penalty 1.5 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--port 8080 \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;--host 0.0.0.0 &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;llama-server started, PID: $!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;API: http://localhost:8080/v1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;echo &amp;#34;Chat UI: http://localhost:8080&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod +x ~/start-llm.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;寫入 &lt;code&gt;.bashrc&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;# Auto-start llama-server&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;if ! pgrep -f &amp;#34;llama-server&amp;#34; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;    ~/start-llm.sh&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;fi&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣每次打開 WSL2 終端時，如果 &lt;code&gt;llama-server&lt;/code&gt; 沒有運行，就會自動啟動；如果已經在運行，就會跳過，避免重複啟動。&lt;/p&gt;
&lt;h2 id=&#34;注意事項&#34;&gt;注意事項
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;27B 模型對顯存要求較高，24GB 顯存體驗更穩；顯存較小時應換小模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ctx-size 65536&lt;/code&gt; 會顯著增加顯存和記憶體壓力，不穩定時先降到 &lt;code&gt;32768&lt;/code&gt; 或更低。&lt;/li&gt;
&lt;li&gt;WSL2 中 CUDA Toolkit 和 Windows 顯示卡驅動都要正常，缺一邊都可能導致 CUDA 編譯或運行失敗。&lt;/li&gt;
&lt;li&gt;Hermes Agent 接本地服務時，本質上是調用 OpenAI-compatible API，關鍵是 &lt;code&gt;http://localhost:8080/v1&lt;/code&gt; 能正常回應。&lt;/li&gt;
&lt;li&gt;如果要從手機或其他設備訪問，需要額外處理 Windows 防火牆、區域網地址和安全隔離，不要把本地模型服務直接暴露到公網。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文：&lt;a class=&#34;link&#34; href=&#34;https://www.freedidi.com/24036.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hermes + Qwen3.6：本地最強 Agent 組合！零成本、無限 Token，太香了！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;llama.cpp：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggerganov/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggerganov/llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Agent：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Qwen3.6 GGUF 示例：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-27B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-27B-GGUF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Embedding 2：把文字、圖像、影片和音訊放進同一個向量空間</title>
        <link>https://knightli.com/zh-tw/2026/05/04/gemini-embedding-2-multimodal-rag/</link>
        <pubDate>Mon, 04 May 2026 06:01:10 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/04/gemini-embedding-2-multimodal-rag/</guid>
        <description>&lt;p&gt;Google Developers Blog 介紹了 Gemini Embedding 2 的開發用法。這個模型已經透過 Gemini API 和 Gemini Enterprise Agent Platform 進入 GA，重點不只是「新的 embedding 模型」，而是把文字、圖像、影片、音訊和文件映射到同一個語義空間。&lt;/p&gt;
&lt;p&gt;這會讓檢索系統的邊界變寬。過去很多 RAG 流程需要先把圖片、影片、音訊拆成文字或中繼資料，再分別建立索引；Gemini Embedding 2 則可以直接處理多模態輸入，讓代理、搜尋和分類系統更容易圍繞真實業務材料工作。&lt;/p&gt;
&lt;p&gt;原文連結：&lt;a class=&#34;link&#34; href=&#34;https://developers.googleblog.com/building-with-gemini-embedding-2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Building with Gemini Embedding 2: Agentic multimodal RAG and beyond&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;模型能力&#34;&gt;模型能力
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 支援 100 多種語言。單次請求可以處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最多 8,192 個文字 token&lt;/li&gt;
&lt;li&gt;最多 6 張圖片&lt;/li&gt;
&lt;li&gt;最多 120 秒影片&lt;/li&gt;
&lt;li&gt;最多 180 秒音訊&lt;/li&gt;
&lt;li&gt;最多 6 頁 PDF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的關鍵點是「統一語義空間」。開發者可以把不同模態的內容放在同一套向量表示裡，用同一種檢索、聚類或重排序邏輯處理。&lt;/p&gt;
&lt;p&gt;例如，文字描述和圖片可以放在同一次 embedding 請求裡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google.genai&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;dog.png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;rb&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;gemini-embedding-2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;An image of a dog&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;from_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_bytes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;mime_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;image/png&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你希望每個輸入分別得到 embedding，而不是聚合成一個向量，可以使用 Batch API。原文也提到，Agent Platform 對這類批次支援還在跟進中。&lt;/p&gt;
&lt;h2 id=&#34;對-rag-的意義&#34;&gt;對 RAG 的意義
&lt;/h2&gt;&lt;p&gt;多模態 embedding 對代理式 RAG 很有用。一個 AI agent 可能需要同時檢查程式碼倉庫、PDF、截圖、圖表、音訊會議紀錄和產品圖片。如果所有資料都能進入同一個語義空間，檢索鏈路就不必為每種材料單獨設計一套入口。&lt;/p&gt;
&lt;p&gt;Google 建議根據任務使用 task prefix，讓 embedding 更貼近檢索目標。例如問答、事實核查、程式碼檢索和搜尋結果，可以使用不同前綴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for your task&amp;#39;s query:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;task: question answering | query: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: fact checking | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: code retrieval | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#34;task: search result | query: {content}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for document of an asymmetric retrieval task:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;title: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; | text: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這種前綴適合非對稱檢索：使用者查詢往往很短，文件內容往往很長。把 &lt;code&gt;query&lt;/code&gt; 和 &lt;code&gt;document&lt;/code&gt; 分別按任務格式整理，可以改善短查詢到長文件之間的匹配。&lt;/p&gt;
&lt;p&gt;原文給了兩個落地回饋：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harvey 在法律檢索基準上，Recall@20 precision 相比上一代 embedding 提升 3%。&lt;/li&gt;
&lt;li&gt;Supermemory 在 Recall@1 搜尋準確率上提升 40%，並把它用於記憶、索引、搜尋和問答管線。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些數字不代表所有場景都會同幅度提升，但說明多模態 embedding 已經不只是展示能力，而是在真實檢索產品中產生效果。&lt;/p&gt;
&lt;h2 id=&#34;視覺搜尋&#34;&gt;視覺搜尋
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 也適合做以圖搜圖、圖文混合搜尋和商品識別。原文提到服裝租賃公司 Nuuly 用它匹配倉庫中未打標籤的服裝照片，使 Match@20 從 60% 提升到接近 87%，整體成功識別率從 74% 提升到 90% 以上。&lt;/p&gt;
&lt;p&gt;這類場景的關鍵不是生成內容，而是理解「這張圖片和哪個庫存、文件或商品紀錄最接近」。如果你的業務裡有大量圖片、影片片段或掃描件，多模態 embedding 會比純文字索引更自然。&lt;/p&gt;
&lt;h2 id=&#34;檢索重排序&#34;&gt;檢索重排序
&lt;/h2&gt;&lt;p&gt;Embedding 還可以用於 rerank。常見做法是先用基礎檢索拿到一批候選結果，再計算候選結果和使用者查詢之間的相似度，把更相關的內容排到前面：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. Define a function to calculate the dot product (cosine similarity)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ndarray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;@&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. Retrieve your embeddings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# (Assuming &amp;#39;summaries&amp;#39; is your list of search results)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summaries&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_embeddings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. Calculate similarity scores&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dot_product&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;search_res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;embedded_query&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 4. Select the most relevant result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;best_match_index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;np&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;argmax&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sim_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;原文還提到一種思路：先讓模型根據內部知識生成一個假設答案，再把這個假設答案做 embedding，與候選內容比較相似度，用來挑出語義更貼近的結果。這對問答型 RAG 尤其有用。&lt;/p&gt;
&lt;h2 id=&#34;聚類分類和異常檢測&#34;&gt;聚類、分類和異常檢測
&lt;/h2&gt;&lt;p&gt;除了檢索，embedding 也適合聚類、分類和異常檢測。和前面的問答檢索不同，這些屬於對稱任務，&lt;code&gt;query&lt;/code&gt; 和 &lt;code&gt;document&lt;/code&gt; 可以使用同一種任務前綴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generate embedding for query &amp;amp; document of your task.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;prepare_query_and_document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: clustering | query: {content}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: sentence similarity | query: {content}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# return f&amp;#39;task: classification | query: {content}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這類任務可以用於輿情分類、內容審核、相似資產歸類、異常樣本發現，也可以幫助 agent 對大量上下文材料先做整理，再進入後續推理。&lt;/p&gt;
&lt;h2 id=&#34;儲存和成本&#34;&gt;儲存和成本
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 預設輸出 3,072 維向量。它使用 Matryoshka Representation Learning，因此可以透過 &lt;code&gt;output_dimensionality&lt;/code&gt; 把向量截斷到更小維度。Google 推薦在效率優先時使用 1,536 或 768 維：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;embed_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-embedding-2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;What is the meaning of life?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dimensionality&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;768&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;向量可以存到 Agent Platform Vector Search、Pinecone、Weaviate、Qdrant、ChromaDB 等系統裡。成本方面，原文提到 Batch API 可提供更高吞吐，並達到預設 embedding 價格的 50%。&lt;/p&gt;
&lt;h2 id=&#34;開發者該怎麼用&#34;&gt;開發者該怎麼用
&lt;/h2&gt;&lt;p&gt;如果你已有文字 RAG，可以先從兩類增量改造開始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把 PDF、截圖、圖片說明和文字文件放入同一個索引，測試查詢召回是否更穩定。&lt;/li&gt;
&lt;li&gt;給不同任務加 task prefix，例如問答、事實核查、程式碼檢索、商品搜尋，不要把所有內容都按同一種 embedding 方式處理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你在做新產品，可以優先考慮這些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企業知識庫：同時檢索文件、圖表、簡報截圖和會議材料。&lt;/li&gt;
&lt;li&gt;視覺搜尋：用圖片、文字或混合輸入查找商品、資產、設計稿和檔案。&lt;/li&gt;
&lt;li&gt;Agent 工具鏈：讓 coding agent、研究 agent 或客服 agent 檢索多種格式的業務材料。&lt;/li&gt;
&lt;li&gt;內容治理：對文字、圖片、影片片段做統一分類、聚類和異常檢測。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini Embedding 2 的價值在於把多模態材料變成同一套可檢索資產。對開發者來說，這會減少「先轉文字再檢索」的中間層，也讓 RAG 系統更接近真實世界的資料形態。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：UI 與社羣媒體案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;UI 與社羣媒體&lt;/code&gt; 分類下的 56 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ui-與社羣媒體&#34;&gt;UI 與社羣媒體
&lt;/h2&gt;&lt;h3 id=&#34;一句提示詞生成-ui-設計&#34;&gt;一句提示詞生成 UI 設計
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/austinit/status/2044968740782272596&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/austinit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@austinit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000.webp&#34;
	width=&#34;983&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000_hu_a0509e119117b487.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/000_hu_fee7ad21aafb346f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;一句提示詞生成 UI 設計&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;81&#34;
		data-flex-basis=&#34;196px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用这种风格帮我生成一套UI设计系统，包含网页、移动端、卡片、控件、按钮 以及其它
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;業餘-iphone-keynote-抓拍&#34;&gt;業餘 iPhone Keynote 抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044687244368441742&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001_hu_6a976169b655751e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/001_hu_6146ba205d59f349.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;業餘 iPhone Keynote 抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Amateur iPhone photo at Apple Park during the iPhone 20 keynote, Tim Cook presenting on stage. Shot from the crowd at a distance
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手寫筆記本照片&#34;&gt;手寫筆記本照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044569086013718958&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002_hu_a790d3353f5c70e9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/002_hu_67826a1ed311f24.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手寫筆記本照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Amateur photo of an open notebook lying flat, filled with handwritten notes in black ballpoint pen. The handwriting is casual and slightly messy, like personnal notes, natural imperfections, crossed out words, underlined headings. Shot from slightly above, natural daylight from a window, no flash. Casual desk setting, shot on iPhone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;宋代社交媒體信息流&#34;&gt;宋代社交媒體信息流
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902/status/2045385588065313057&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Panda20230902&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003.webp&#34;
	width=&#34;400&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003_hu_6467411051bf9ba.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/003_hu_7433fbf98c017d2c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宋代社交媒體信息流&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;33&#34;
		data-flex-basis=&#34;80px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;宋朝人的朋友圈&amp;#34;/&amp;#34;SONG DYNASTY SOCIAL MEDIA FEED&amp;#34;，古今穿越幽默融合界面设计风格，画面模拟手机社交媒体界面，但内容全部是宋朝场景头像是宋代文人画像，用户名&amp;#34;苏东坡SuShi_Official&amp;#34;，发布内容&amp;#34;刚到黄州，被贬了但心情还行。今天自己做了东坡肉，味道绝了，附菜谱：&amp;#34;，配图为工笔画风格的东坡肉特写，点赞列表&amp;#34;黄庭坚、秦观、佛印等126人&amp;#34;，评论区&amp;#34;王安石：呵呵&amp;#34;&amp;#34;司马光：还是那个味道&amp;#34;，界面元素如点赞图标用宋代花纹替代，状态栏显示&amp;#34;大宋移动 5G&amp;#34;和&amp;#34;元丰三年&amp;#34;，配色为手机深色模式搭配宋代雅致色调，历史与社交媒体的趣味碰撞杰作
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多平臺內容截圖&#34;&gt;多平臺內容截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045373105041007013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004_hu_e0e9a2612bd3b890.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/004_hu_4f5213e6702ea897.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多平臺內容截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成视频号内容截图，主题：中老年不要盲目催婚，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成抖音内容截图，主题：跟上AI浪潮9.9包教会，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、生成小红书内容截图，主题：精致女孩背后都有网贷，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、生成快手内容截图：主题：直播离婚预告，iPhone尺寸
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;劉亦菲抖音直播截圖&#34;&gt;劉亦菲抖音直播截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanblogsooo/status/2044784762594918516&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/alanblogsooo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanblogsooo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005_hu_933d147f1c4bffb3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/005_hu_52d31acefd4caf39.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;劉亦菲抖音直播截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 的图片比例，生成一张抖音直播的截图，里面是 刘亦菲 在直播，刘亦菲 手里拿着牌子，牌子里写着 今晚直播，欢迎来参亦菲畅聊！
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;太祖李成桂的-x-主頁&#34;&gt;太祖李成桂的 X 主頁
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SKA_Neotype/status/2044637900978217334&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SKA_Neotype&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SKA_Neotype&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006_hu_2b6cce52a6aee798.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/006_hu_c3e9bc7604f9c77a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;太祖李成桂的 X 主頁&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;태조 이성계의 X  페이지(위화도 회군을 벌이기 직전- 최영 장군과 서로 디스하는 내용이 담긴 게시글들)을 만들어 주세요.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;風格轉-ui-設計系統&#34;&gt;風格轉 UI 設計系統
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/stark_nico99/status/2045836554451706125&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/stark_nico99&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@stark_nico99&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007.webp&#34;
	width=&#34;1199&#34;
	height=&#34;1312&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007_hu_7734ca6292c1e429.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/007_hu_6901a3a91a9b4f0a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;風格轉 UI 設計系統&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;91&#34;
		data-flex-basis=&#34;219px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用这种风格帮我生成一套UI设计系统，包含网页、移动端、卡片、控件、按钮以及其它。把这套视觉风格作为参考生成网页。我尝试了宇宙、飞行、蝴蝶主题。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;桃太郎講解幻燈片&#34;&gt;桃太郎講解幻燈片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yammamon/status/2045778624092254603&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yammamon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yammamon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008.webp&#34;
	width=&#34;1280&#34;
	height=&#34;853&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008_hu_bf54d5d0ed5b99e4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/008_hu_2f206b995e83ec1c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;桃太郎講解幻燈片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「いらすとや」のほのぼのとした雰囲気と、「霞ヶ関スライド」の圧倒的な情報密度を融合させた、桃太郎の解説スライド（ポンチ絵）を作成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;博物館風漢服拆解信息圖&#34;&gt;博物館風漢服拆解信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045504669401653414&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009.webp&#34;
	width=&#34;1074&#34;
	height=&#34;1280&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009_hu_d938583209d8ce73.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/009_hu_c0a7a9e3e48dbd34.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;博物館風漢服拆解信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;83&#34;
		data-flex-basis=&#34;201px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】自动生成一张“博物馆图鉴式中文拆解信息图”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求整张图兼具真实写实主视觉、结构拆解、中文标注、材质说明、纹样寓意、色彩含义和核心特征总结。你需要根据【主题】自动判断最合适的主体对象、服饰体系、器物结构、时代风格、关键部件、材质工艺、颜色方案与版式结构，用户无需再提供其他信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体风格应为：国家博物馆展板、历史服饰图鉴、文博专题信息图，而不是普通海报、古风写真、电商详情页或动漫插画。背景采用米白、绢纸白、浅茶色等纸张质感，整体高级、克制、专业、可收藏。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;版式固定为：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顶部：中文主标题 + 副标题 + 导语
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 左侧：结构拆解区，中文引线标注关键部件，并配局部特写
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 右上：材质 / 工艺 / 质感区，展示真实纹理小样并附说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 右中：纹样 / 色彩 / 寓意区，展示主色板、纹样样本和文化解释
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 底部：穿着顺序 / 构成流程图 + 核心特征总结
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;若主题适合人物展示，则以真实人物全身站姿为中央主体；若更适合器物或单体结构，则改为中心主体拆解图，但整体仍保持完整中文信息图形式。所有文字必须为简体中文，清晰、规整、可读，不要乱码、错字、英文或拼音。重点突出真实结构、材质差异、文化说明与图鉴气质。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;避免：海报感、影楼感、电商感、动漫感、cosplay感、乱标注、错结构、糊字、假材质、过度装饰。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手相診斷報告&#34;&gt;手相診斷報告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/agi_aibusi/status/2046530764871696750&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/agi_aibusi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@agi_aibusi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010.webp&#34;
	width=&#34;701&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010_hu_55204af3273c2953.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/010_hu_79f3fe6eb5476e32.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手相診斷報告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;58&#34;
		data-flex-basis=&#34;140px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT-image-2でこの手相を診断して詳細な鑑定書を作って
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生命線・知能線・感情線・運命線・太陽線・財運線・結婚線を、線の形状・濃淡・枝分かれ・起点終点まで分析すること。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;助言を重点的に高品質な占い鑑定書にまとめること。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;書法字帖頁&#34;&gt;書法字帖頁
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046510310253539764&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011_hu_5717a7c1927bd9b1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/011_hu_d59e3a2e0bd44d92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;書法字帖頁&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张【字体】书法临摹字帖
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;唐吉訶德促銷-pop-海報&#34;&gt;唐吉訶德促銷 POP 海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog/status/2046437230127034774&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@loglogrog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012_hu_4b3a5e93f98ba7ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/012_hu_ff03b8952b0ad690.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;唐吉訶德促銷 POP 海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT Image 2を使って、OpenClawの情報を調べてドンキの広告ポップ風に実際のドンキに貼っているような感じで画像生成してください
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式抽卡遊戲界面&#34;&gt;日式抽卡遊戲界面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/the_wheel_2024/status/2046519658166317160&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/the_wheel_2024&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@the_wheel_2024&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013_hu_d74bbc1c76c72374.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/013_hu_bbfad2e020a69830.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式抽卡遊戲界面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;日本のソシャゲのガチャ画面を生成して、
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;elon-musk-抖音直播截圖&#34;&gt;Elon Musk 抖音直播截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2046501587762188535&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014_hu_f74afb08f82e0e53.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/014_hu_e335904cbedf2c0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Elon Musk 抖音直播截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A 9:16 vertical version, high-detail realistic style Chinese TikTok live screenshot, Elon Musk is talking to the mobile phone camera in the live broadcast room, excited, smiling, and the live atmosphere is warm and real. He held a white handwritten sign in one hand, which clearly said: &amp;#34;Thank you Shinning&amp;#34;. There are obvious Chinese TikTok interface elements in the live broadcast screen, including likes, comments and share icons arranged vertically on the right, scrolling Chinese bullet screens and interactive comments below, and the &amp;#34;live broadcast&amp;#34; logo at the top, which looks like a real mobile phone screenshot. There is an eye-catching gift prompt special effect in the screen: &amp;#34;Shinning sent TikTok No. 1&amp;#34;, with gift animation light effect and platform-style prompt box. Musk is in a professional live broadcast environment, with a mobile phone holder, a ring fill light and a desktop microphone in front of him. The background is a modern technology live broadcast room with bright lights and a slight neon atmosphere. The composition is real and natural, like the ongoing live screenshot of the Chinese short video platform. The interface information is rich but not messy, the characters are clear, the expression is vivid, the details are rich, the sense of real photography, the depth of field, high definition, cinematic, photorealistic, realistic livestream screenshot, social media UI, Chinese Douyin live room, detailed lighting, natural skin texture.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative prompts:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Low definition, blur, cartoon, illustration, too strong CG sense, two-dimensional, deformed fingers, wrong text, scrambled code, multiple mobile phones, multiple brands, character repetition, face collapse, facial features distortion, excessive skin polishing, overexposure, too dark, messy background, wrong UI, non-Chinese short video interface, too many English bullet screens, gift special effects are not obvious, cropping error, proportional error
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Supplementary reinforcement words:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Real mobile phone screen recording screenshot feeling, the live broadcast UI is complete, the gift prompt box conforms to the style of the Chinese short video platform, the Chinese comment area is active, the number of people online in the live broadcast room is clearly displayed, and the time, power and signal bar are visible.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;劉亦菲抖音直播截圖-1&#34;&gt;劉亦菲抖音直播截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/kylegeeks/status/2046479783765397629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/kylegeeks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@kylegeeks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015.webp&#34;
	width=&#34;1200&#34;
	height=&#34;772&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015_hu_210a3d6381ab38f7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/015_hu_3ce3f3478f4c7132.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;劉亦菲抖音直播截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;155&#34;
		data-flex-basis=&#34;373px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 的图片比例,生成一张抖音直播的截图,里面是 刘亦菲 在直播,刘亦菲 手里拿着牌子,牌子里写着 今晚直播,欢迎来参亦菲畅聊!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;賽博朋克霓虹-ui-設計系統&#34;&gt;賽博朋克霓虹 UI 設計系統
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AZLnfvp/status/2046468976092533180&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AZLnfvp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AZLnfvp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016_hu_88fb7dfbe578c750.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/016_hu_6861dde16988fed4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;賽博朋克霓虹 UI 設計系統&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;用未来都市风格生成UI设计系统,灵感来自赛博朋克城市夜景,包含霓虹灯、玻璃建筑反射、高对比光影,配色以紫色、蓝色、粉色霓虹为主,设计网页Dashboard、移动端界面、卡片、按钮、控件等,视觉炫酷、层次丰富、科技感极强
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;trump-and-kim-livestream-pk-截圖&#34;&gt;Trump and Kim Livestream PK 截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2046048929490612464&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017_hu_86f0321dd3c4882f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/017_hu_4b71a2ab2286bfba.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Trump and Kim Livestream PK 截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成特朗普和金正恩在抖音直播间打PK的截图  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成不知火舞的小红书主页截图  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、生成图片: 手写在教室黑板上的出师表全文,真实感的粉笔字迹,晴朗白天用iPhone手机实拍  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、生成图片: T-800机器人的淘宝商品详情页,展示: 机器人的正面侧面背面三视图, 产品价格, 产品细节, 功能和使用场景等
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式-ai-遊戲開發概覽幻燈片提示詞&#34;&gt;日式 AI 遊戲開發概覽幻燈片提示詞
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ailovedirector/status/2046905387274891296&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ailovedirector&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ailovedirector&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018_hu_cbe5a586cb328e0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/018_hu_8c67b1f43e45c185.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式 AI 遊戲開發概覽幻燈片提示詞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;横長のパワポ画像ここで生成してみて　どのモデル使ってるか判定するから、今のAIゲーム開発の概要をまとめた1枚パワポで　日本語で
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ゲーム開発の技術に関して、工数ベースでどこにパワーかかるかの分析資料といかに量産が大事かについての説明とかのパワポ画も作って
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基於生成角色製作截圖界面&#34;&gt;基於生成角色製作截圖界面&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/khaiinit/status/2047219694130827273&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/khaiinit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@khaiinit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019_hu_8b6725f5dd23affb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/019_hu_8f807fa5b4b16d83.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基於生成角色製作截圖界面…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;based on the generated character help me generate a screenshot of screenshot of an pvp game themed around *zelda: wind breaker*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;參考這張圖的風格與配色創建落地頁&#34;&gt;參考這張圖的風格與配色創建落地頁&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/D_studioproject/status/2047212826264211540&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/D_studioproject&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@D_studioproject&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020.webp&#34;
	width=&#34;339&#34;
	height=&#34;475&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020_hu_c3c8a43953642ff6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/020_hu_232ea5fdd98ce77d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;參考這張圖的風格與配色創建落地頁…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;71&#34;
		data-flex-basis=&#34;171px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a landing page using this image as a reference for style and color grading.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;李佳琦口紅直播背景&#34;&gt;李佳琦口紅直播背景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047207826913972518&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021_hu_94305250a7e186b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/021_hu_e1b1d851741502b5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;李佳琦口紅直播背景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;李佳琦直播间背景，口红矩阵展示墙，暖光氛围灯，文案OMG买它
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;apple-pods-pro-3-耳機電商信息圖&#34;&gt;Apple Pods Pro 3 耳機電商信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695/status/2047935217231663186&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@meng_dagg695&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022.webp&#34;
	width=&#34;1152&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022_hu_23f0b833ea7cf39d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/022_hu_3acb00488177719.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Apple Pods Pro 3 耳機電商信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;92
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;Apple Pods Pro 3&amp;#34; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;premium wireless over-ear headphones.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FOREGROUND - PRODUCT HERO SHOT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Extreme close-up of a hand holding a sleek, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;matte-white premium over-ear headphone toward the camera 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;at a slight angle. The headphone features:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Glossy white ear cushions with soft memory foam padding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Brushed aluminum silver headband with subtle Apple Pods 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Pro 3 embossed branding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Black mesh speaker grille visible on the ear cup face
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A tiny glowing green LED status indicator on the 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  right ear cup edge
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Subtle touch-control icons etched on the outer cup surface
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Macro-lens shallow depth of field — hand and headphone 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;slightly blurred at edges to create cinematic depth. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Product remains razor-sharp in center frame.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CENTRAL SUBJECT — MODEL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the mid-ground: a smiling young woman with freckles 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and wavy pastel-pink hair. She wears:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A vibrant lime-green knit beanie
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A psychedelic black and white-striped long-sleeve shirt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- The white over-ear headphones resting stylishly 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  around her neck (not on ears) — one hand casually 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  touching the ear cup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Expression: relaxed, confident, joyful. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;She is glancing slightly off-camera with a natural smile.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BACKGROUND &amp;amp; ATMOSPHERE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Clean soft-focus studio backdrop — light gray gradient 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fading to warm white at center. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Atmospheric overlays:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Diagonal rainbow prism lens flares cutting across 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  upper-left to lower-right
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Soft pastel light leaks in pink and yellow at corners
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 4–5 blurred white over-ear headphones floating 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  artistically in the background at various depths 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  and rotation angles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Subtle bokeh circles from background studio lights
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Soft professional three-point studio lighting. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Key light from upper-left, fill light right side. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Rim light behind model for separation. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Glossy highlights on headphone surfaces catching light naturally.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TYPOGRAPHY &amp;amp; LAYOUT — Sans-Serif, Clean white 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOP CENTER (behind model, large background text):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Massive bold oversized text: &amp;#34;HEADPHONES&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Semi-transparent white, spanning full width behind subject
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOP RIGHT CORNER:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Bold clean text: &amp;#34;Apple Pods Pro 3&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   Subtitle smaller text: &amp;#34;Over-Ear Wireless&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MID LEFT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Icon: small sound wave symbol
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Bold text: &amp;#34;Premium Sound&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Active Noise Cancellation + Transparency Mode&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MID RIGHT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;40&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Smaller text below: &amp;#34;hours of battery life&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LOWER LEFT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;0&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   with &amp;#34;to&amp;#34; beside it → then bold &amp;#34;100%&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Fast charge — 10 min = 3hrs playback&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOTTOM RIGHT:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Extra-large bold numeral: &amp;#34;1&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Sub-text: &amp;#34;Year Warranty Included&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOTTOM CENTER (fine print style):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Small elegant text: 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &amp;#34;Bluetooth 5.4  |  Hi-Res Audio Certified  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    |  Foldable Design  |  USB-C Charging&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TECHNICAL SPECS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resolution: 8K ultra-sharp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: Commercial product photography meets 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       editorial fashion advertising
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Color Palette: White, lime green, pastel pink, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               rainbow prism accents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Focus: Tack-sharp on headphone product — 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       shallow DOF on everything else
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lens: 85mm macro, slight low angle
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Render Quality: Hyperrealistic, clean ad aesthetic, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                vibrant yet professional color grading
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;apple-pods-pro-3-耳塞電商信息圖&#34;&gt;Apple Pods Pro 3 耳塞電商信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rovvmut_/status/2047912710365761828&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/rovvmut_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rovvmut_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023.webp&#34;
	width=&#34;1360&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023_hu_9d284e83fa8ed923.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/023_hu_b3aae5396a7445c5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Apple Pods Pro 3 耳塞電商信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;Apple Pods Pro 3&amp;#34; wireless earbuds.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;美妝產品商業營銷照片&#34;&gt;美妝產品商業營銷照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2047904483359760677&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024.webp&#34;
	width=&#34;1529&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024_hu_2fc18589c5ab85e1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/024_hu_49494874c0f1388c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;美妝產品商業營銷照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-resolution commercial marketing photograph features a young woman with sleek dark hair and a pink ribbed top in a neutral grey studio setting, centered behind a glossy Ellie Beauty spray bottle held prominently in the foreground. The composition is energized by vibrant, lime-green graphic &amp;#34;swooshes&amp;#34; and floating pill-shaped callouts that highlight product features like &amp;#34;glossy finish&amp;#34; and &amp;#34;upto 450°F protection&amp;#34; in bold black sans-serif text. The lighting is professionally diffused, casting soft highlights on the model’s face while creating a sharp, vertical reflection on the metallic green-to-gold gradient bottle label. Topping the scene is a large, lime-green headline in the upper right asking, &amp;#34;What does it do?&amp;#34;, altogether creating a clean, modern, and high-contrast aesthetic with a shallow depth of field that keeps the product and the model&amp;#39;s focused expression in sharp relief.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;aaa-電子遊戲截圖概念設計&#34;&gt;AAA 電子遊戲截圖概念設計
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChiefMonkeyMike/status/2047828814580138156&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ChiefMonkeyMike&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ChiefMonkeyMike&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025.webp&#34;
	width=&#34;1672&#34;
	height=&#34;941&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025_hu_9d87da51691dd0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/025_hu_2a6fa1a60d0f68c3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AAA 電子遊戲截圖概念設計&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate screenshots from a AAA video game based off what The Sims Castaways sequel could look like. https://t.co/aL7hMdUYvj
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西班牙語-grwm-早晨美妝縮略圖&#34;&gt;西班牙語 GRWM 早晨美妝縮略圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/S0N_IA_/status/2047414367243657296&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/S0N_IA_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@S0N_IA_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026_hu_32ebb9c4c41cdb8b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/026_hu_d7b7561cda28184f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西班牙語 GRWM 早晨美妝縮略圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vertical 9:16 TikTok-style GRWM beauty thumbnail set in a warm, sunlit Mediterranean-inspired bedroom. A stylish young woman with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair in a messy curly updo sits at a marble vanity, leaning forward with one arm folded and the other hand applying lip balm or lipstick to her mouth. Her face is covered by a centered rectangular blur block for privacy, but the rest of her styling is elegant and natural: tan glowing skin, delicate gold necklace with a small round pendant, thin gold bracelet, stacked gold rings, and a white lace camisole with thin straps. In the foreground on the vanity are exactly 7 visible beauty objects: 1 round tabletop vanity mirror on the left, 1 cup holding 5 makeup brushes, 1 clear glass dropper bottle, 1 tall white pump skincare bottle, 1 small black dropper bottle, 1 beige rounded cosmetic sponge or puff, and 1 pale green squeeze tube on the right. The background shows a softly blurred cozy bedroom with 1 arched window on the left, 1 leafy potted plant, 1 bed with white bedding and a mustard accent pillow, exposed wooden ceiling detail, and 1 framed landscape painting on the wall. Use golden-hour sunlight streaming from the left, soft shadows, creamy skin tones, shallow depth of field, luxury lifestyle editorial photography, intimate self-care mood, polished but natural composition. Add bold playful Spanish headline text in the upper left in three stacked lines reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Mi rutina de belleza matutina&amp;#34;}, with each line large and rounded, white outline and soft drop shadow, using pastel colors: first line white, second line pink, third line pale yellow. Add 3 pink doodle accent strokes above the headline, 1 curved pink underline-swoosh beneath it, and 1 small yellow sun icon to the right of the last line. Place a clean white {argument name=&amp;#34;brand text&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} logo in the upper right. High-end influencer thumbnail aesthetic, crisp product focus in foreground, warm inviting lifestyle scene.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電影感城市爆炸追逐&#34;&gt;電影感城市爆炸追逐
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gugombly/status/2047310862428303636&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Gugombly&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gugombly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027_hu_ec87a1df69e1c275.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/027_hu_ff2ed2d0e6656017.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電影感城市爆炸追逐&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic photorealistic action scene in a rainy downtown city street canyon, showing {argument name=&amp;#34;main subject&amp;#34; default=&amp;#34;a dark-haired man in his 30s&amp;#34;} sprinting directly toward the camera in the center foreground with a tense survival expression, wearing a soaked dark jacket, dark shirt, and dark pants, mid-stride with one arm pumping forward. Behind him, a massive urban explosion tears through the street and lower facade of a high-rise building, sending a huge cloud of smoke, fire, dust, shattered concrete, glass, and metal debris outward in all directions. The scene includes exactly 3 visible damaged vehicles: 1 dark sedan in the left foreground with headlights on and a crumpled hood splashing through rainwater, 1 wrecked dark car in the right midground with severe front-end damage, and 1 overturned or airborne black SUV tilted upward behind it on the right side. Wet asphalt reflects headlights, firelight, and gray skyscrapers. Dense debris fills the air, with chunks of rubble frozen in motion. Overcast stormy daylight, desaturated blue-gray color palette with orange fire accents, dramatic motion blur in flying debris but sharp focus on the running figure, low-angle wide-lens composition, blockbuster disaster-movie realism, ultra-detailed textures, high contrast, dynamic depth, volumetric smoke, rain spray, cinematic lighting. Add a white {argument name=&amp;#34;watermark text&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} logo in the top-right corner.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫-vtuber-minecraft-直播縮略圖&#34;&gt;動漫 VTuber Minecraft 直播縮略圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rerxmsz06/status/2047261622121705782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/rerxmsz06&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rerxmsz06&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028_hu_19722c166657124a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/028_hu_5e7e88cf6b5865b8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫 VTuber Minecraft 直播縮略圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vibrant anime-style YouTube thumbnail for a livestream gaming broadcast, in a wide 16:9 composition, with a neon purple and pink streamer room. Center the scene on a cute catgirl VTuber sitting at a desk, shown from the waist up, leaning forward energetically with one hand on a computer mouse and the other hand reaching toward the viewer. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;light orange-blonde&amp;#34;} bob-cut hair with soft bangs, fluffy brown-and-cream cat ears, and a visible cat tail. Her face is intentionally obscured by a solid rectangular censor block in the center. She wears a black-and-white maid-inspired outfit with a frilly white blouse, black dress bodice, puff sleeves, white ruffles, black ribbon bow, and a gold bell choker. Place a mechanical keyboard with bright RGB lighting on the desk, a glowing gaming mouse, and a streamer microphone on the far left with pink-purple LED lighting. Put 2 cat-themed desk items in the foreground: a plush cat face on the bottom left and a black cat-shaped mug on the bottom right. Behind her is a gaming chair with paw-print details. On the left side, add large bold Korean headline text in thick white block letters with black fill shadows and a glowing purple outline, stacked in 2 lines: {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;방송중 대참사&amp;#34;}. Below it, add a smaller yellow comic-style burst caption with black outline reading {argument name=&amp;#34;sub text&amp;#34; default=&amp;#34;&amp;gt; 크리퍼 실화냐&amp;#34;}. On the right side, show 1 large computer monitor angled inward, displaying a Minecraft-like scene with bright blue sky, green trees, water, and a large green Creeper popping out toward the viewer, outlined dramatically like a sticker cutout. Add starburst effects and neon accents around the monitor to heighten the chaos. Use exaggerated thumbnail aesthetics: ultra-saturated colors, sharp cel shading, thick outlines, glossy highlights, high contrast, dynamic perspective, and a clickworthy streamer-disaster mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;溫馨動漫-asmr-掏耳少女&#34;&gt;溫馨動漫 ASMR 掏耳少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shion_yamabuki/status/2047232198382964969&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shion_yamabuki&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shion_yamabuki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029_hu_c688082893a459f2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/029_hu_352bacb0545e3ced.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;溫馨動漫 ASMR 掏耳少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft, dreamy anime illustration of a cute young woman doing ASMR in a cozy bedroom at night, seated close to the viewer with her knees pulled up and a black 3Dio-style binaural microphone centered in front of her. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep violet&amp;#34;} hair in a loose messy updo with wispy bangs framing her face, large sparkling {argument name=&amp;#34;eye color&amp;#34; default=&amp;#34;blue&amp;#34;} eyes, a gentle blush, and a sweet open-mouth smile. Her head is tilted slightly toward the viewer in a warm, affectionate pose. She wears a delicate white lace camisole with thin straps and an oversized fluffy knit cardigan in {argument name=&amp;#34;cardigan color&amp;#34; default=&amp;#34;soft pink-lavender&amp;#34;} draped off her shoulders, creating a tender, intimate late-night healing atmosphere. Both hands lightly touch the white silicone ears of the microphone as if about to give an ear massage. The room is softly lit with pink and amber ambient lighting, heavy curtains in the background, a bed or sofa with plush cushions, warm fairy-light bokeh, and a small plant on the right side. Add glowing handwritten Japanese neon text integrated into the composition: on the left, 4 text elements reading &amp;#34;とろける&amp;#34;, &amp;#34;耳&amp;#34;, &amp;#34;マッサージ&amp;#34;, and &amp;#34;ASMR&amp;#34; with 2 small heart symbols; on the right, vertical text reading &amp;#34;いっぱい癒してあげるね...♡&amp;#34;. Use a polished modern anime style, highly detailed face and hair, glossy eyes, smooth luminous skin, soft shading, pastel highlights, shallow depth of field, romantic cozy streamer-thumbnail composition, and a soothing feminine color palette dominated by pink, lavender, cream, and warm gold.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;名人直播概念圖&#34;&gt;名人直播概念圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SelenaGmzIN/status/2047185882009198865&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SelenaGmzIN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SelenaGmzIN&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030_hu_57bd5d6a0e1e0e36.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/030_hu_efeff596d19acddc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;名人直播概念圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;celebrity&amp;#34; default=&amp;#34;selena gomez&amp;#34;} started a surprise {argument name=&amp;#34;platform&amp;#34; default=&amp;#34;youtube&amp;#34;} livestream.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;monika-動漫橫幅插畫&#34;&gt;Monika 動漫橫幅插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031_hu_cb7954af0d3e5f46.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/031_hu_a4c7b40777951277.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Monika 動漫橫幅插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly polished anime banner illustration in a warm golden classroom-literature-club setting, wide cinematic composition. On the left half, a large elegant glowing script title reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Monika&amp;#34;} in oversized calligraphy, colored white and pale green with a soft neon glow, metallic highlights, decorative flourishes, hearts, sparkles, and swirling ornamental lines around it. On the right half, a beautiful anime schoolgirl inspired by {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Monika&amp;#34;} sits at a wooden desk, facing slightly left, with long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;chestnut brown&amp;#34;} hair, a very large white ribbon bow, warm brown eyes, and a thoughtful, confident expression. She wears a Japanese high school uniform with exactly 4 visible clothing pieces: a brown blazer, white shirt, red ribbon tie, and brown argyle sweater vest. She holds a fountain pen over papers on the desk with one hand while the other rests near her face in a poised writing pose. The room is filled with sunset light streaming through tall windows, dust motes, trailing green ribbons, floating petals, handwritten notes pinned and hanging in the background, and a dark chalkboard covered with faint cursive writing and geometric doodles. Include exactly 9 prominent desk and room props: a bouquet of white roses at lower left, a stack of books at left, an hourglass near the center-left, a sealed envelope with a small green leaf emblem, scattered manuscript pages on the desk, a pen cap near the writing hand, a green-upholstered chair, a piano in the back right, and a stack of 4 books on the right. The 4 right-side book spines read, from top to bottom: &amp;#34;Save Me&amp;#34;, &amp;#34;My Feelings&amp;#34;, &amp;#34;Poems for the Literature Club&amp;#34;, and &amp;#34;Just Monika.&amp;#34; Add lush volumetric lighting, glittering particles, green-and-gold color harmony, delicate linework, ultra-detailed painterly shading, romantic visual-novel key art quality, and a premium polished thumbnail/banner aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;紫色動漫-yuri-橫幅&#34;&gt;紫色動漫 Yuri 橫幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032_hu_b649d3a35900259e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/032_hu_96c3fba8e68ccf8e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;紫色動漫 Yuri 橫幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished anime-style banner illustration in a dreamy violet palette, wide cinematic composition, showing a quiet literary room at twilight. On the right side, a beautiful teenage anime girl named {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Yuri&amp;#34;} sits at a wooden desk beside a large window with purple curtains, holding a dark ornate hardcover book close to her chest and gazing softly downward with a shy, introspective expression. She has very long straight {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep violet&amp;#34;} hair with glossy highlights, side bangs, a small hair clip, and violet eyes, wearing a Japanese school uniform with a gray blazer, white shirt, red ribbon tie, and dark skirt. Across the left-center of the image, the glowing calligraphic word {argument name=&amp;#34;title text&amp;#34; default=&amp;#34;Yuri&amp;#34;} appears large in luminous neon-lavender script with elegant flourishes, a small heart, and decorative filigree, integrated into the scene like magical typography. The desk contains exactly 8 visible item groups: 1 open book in the foreground center, 1 black inkwell with a white feather quill, 1 closed book near the candle, 1 stack of books under papers, 1 loose handwritten page in front, 1 small purple flower on the desk, 1 floral porcelain teacup with saucer on the right, and 1 dark book stack at the far right. Additional background details include exactly 6 decorative environmental elements: 1 lit candle in a glass holder on the left, 1 cluster of purple flowers in the left foreground, 1 hanging spray of purple blossoms in the upper left, 1 pinned botanical note in the upper right, 1 bookshelf with books and flowers in the right background, and 1 sunset sky visible through the window. Add drifting flower petals, faint handwritten script textures, ornate gold border lines around the frame, soft volumetric window light, subtle sparkles, rich shadows, and a romantic melancholic atmosphere. Highly detailed, clean line art, glossy anime rendering, premium visual-novel key art, perfect for a niche anime banner or character-themed thumbnail.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉色動漫-natsuki-橫幅&#34;&gt;粉色動漫 Natsuki 橫幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033_hu_b393e9af90388b65.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/033_hu_e2b33106bf913462.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉色動漫 Natsuki 橫幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A glossy pastel pink anime banner in a wide cinematic layout, themed around cute romance and sweets. Place a confident teenage anime girl on the right side, shown from about thigh-up, with short fluffy bob hair in {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;soft pink&amp;#34;}, large pink-magenta eyes, a small gentle smile, and arms crossed. She wears a Japanese school uniform: 1 brown blazer, 1 white shirt, 1 red ribbon bow at the collar, and 1 dark navy-and-purple plaid skirt. Add 2 red ribbon hair accessories, one larger bow on the side and one smaller ribbon accent. On the left half, feature the large handwritten script name {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Natsuki&amp;#34;} in bold glossy 3D cursive, white-to-pink fill with bright pink outline, soft bevel, subtle drop shadow, sparkles, and a small heart flourish integrated into the lettering. The background should be a layered scrapbook collage in blush pink tones with notebook paper texture, faint grid and torn paper details, scattered doodled hearts, flower petals, sparkles, and cute bakery motifs. Include exactly 4 pinned or taped sketch-style portrait cards of the same girl behind her on the upper-right and mid-right, arranged like overlapping polaroids. Add exactly 2 cupcakes in the foreground near the bottom left and lower center-left, both with pink frosting, striped wrappers, and tiny heart toppers or candy accents. Frame the composition with flowing satin ribbons and bows: exactly 4 major ribbon elements visible, including 1 bow near the top left, 1 bow near the bottom left, and 2 long curling ribbons sweeping across the top and right edges. Use a soft high-detail anime illustration style, polished lighting, dreamy bloom, romantic Valentine palette, delicate textures, and a clean impactful thumbnail-like composition.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夢幻動漫-sayori-橫幅&#34;&gt;夢幻動漫 Sayori 橫幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill/status/2047639852485620070&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mirochill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mirochill&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034.webp&#34;
	width=&#34;1199&#34;
	height=&#34;514&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034_hu_5322be357707c779.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/034_hu_11a6eee064b46f5b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夢幻動漫 Sayori 橫幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;233&#34;
		data-flex-basis=&#34;559px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A wide anime banner illustration of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Sayori&amp;#34;} in a bright dreamy classroom, rendered in a polished, high-end visual novel style with soft painterly lighting, warm pastel colors, and sparkling atmosphere. Show a cheerful teenage schoolgirl with short fluffy coral-pink hair, messy bob layers, and a large red bow on the right side of her head, wearing a Japanese school uniform with a light brown blazer, white shirt, red ribbon tie, brown sweater vest, and pleated navy skirt. She stands slightly left of center with arms open wide in an inviting, joyful pose, as if welcoming the viewer, with dynamic perspective and gentle motion in her hair and clothes. Her face is intentionally obscured by a flat rectangular skin-tone censor block. Behind her, tall classroom windows reveal a vivid blue sky with soft white clouds and warm sunlight streaming in. The right half of the image features a large decorative handwritten script reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Sayori&amp;#34;}, cream-white lettering with a soft orange-gold outline and glow, integrated into a scrapbook-like wall background. Surround the scene with hanging photo prints clipped to string, including sky photos and a sunflower photo, plus hand-drawn doodles of clouds, stars, hearts, and a sun. Add blue and yellow paper stars, ribbons, floating confetti, a blue paper airplane, notebook pages, a spiral sketchbook, and scattered stationery elements. Place sunflowers prominently in the foreground and edges, with warm golden bokeh and soft depth of field. Make the composition energetic, cute, nostalgic, and emotionally uplifting, like a premium anime-themed YouTube banner or character tribute header, ultra-detailed, clean, stylish, luminous, and impact-focused.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;賽博朋克-404-女巫召喚&#34;&gt;賽博朋克 404 女巫召喚
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Eris_Create_Lab/status/2047537707904274795&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Eris_Create_Lab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Eris_Create_Lab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035_hu_b5363cd3ebd4a4b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/035_hu_4b461d992e17609.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;賽博朋克 404 女巫召喚&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic anime-style cyberpunk witch standing on a dark rooftop high above a dense futuristic city at night, viewed from a slightly elevated angle. The main subject is a petite young witch girl with pale skin, short icy blue bobbed hair, pointed elf-like ears, and glowing red eyes, wearing a sly confident smile. She raises a black wand overhead in her right hand, with a dangling orb charm at the tip glowing faintly purple and red. Her oversized crooked witch hat is black with purple lining and covered in stitched patches, warning labels, straps, and white graphics including a large “404” and a skull emblem. She wears a black and purple techwear outfit: oversized hooded jacket with many straps and tags, black crop top with “404” on the chest, layered belts, short bottoms, fishnet on one leg, black lace-up combat boots, chokers, and metallic accessories. Several hanging straps and tags visibly read words like “WITCH 404,” “404,” and glitch-themed markings. Beneath and beside her, a large glowing violet magic circle mixed with hacker interface aesthetics is projected on the rooftop floor, filled with occult rings, sigils, a central skull symbol, and scattered neon system text such as error-code fragments, creating a fusion of sorcery and digital corruption. Emerging from the circle is 1 large armored summoned figure: a black futuristic demon-knight or robotic familiar with jagged reflective armor, a narrow purple-lit visor, and a heavy weapon held in one hand, partially dissolving into purple energy shards and smoke. The background shows a sprawling rainy megacity of apartment towers and industrial rooftops, packed with windows, balconies, cables, signs, and haze. On a nearby building wall is a giant vertical graffiti-style sign with 3 readable elements: “404”, “Witch”, and “ERROR NOT FOUND”, plus a smaller “E404”. Additional purple neon glitch text and symbols are scattered across rooftops and in the air. Use a dark palette of black, indigo, and deep violet with sharp magenta-purple highlights, cinematic contrast, reflective wet surfaces, dense detail, and a high-end polished illustration style. The mood is occult, edgy, stylish, and dangerous, combining urban fantasy, hacker aesthetics, and magical summoning.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫奇幻旅行電影海報&#34;&gt;動漫奇幻旅行電影海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Design4p0/status/2047531978346398002&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Design4p0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Design4p0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036_hu_f9b3ef362bb33790.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/036_hu_61c831e17c5229a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫奇幻旅行電影海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime movie poster for a fictional film titled {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;EL VIAJE DE LA LUNA DE PLATA&amp;#34;}, in polished modern Japanese animation style with a natural, less over-detailed look. Center a teenage anime girl from mid-thigh up, facing forward, with a short silver bob haircut, pale skin, a black choker, small black geometric earrings, a white tank top, and a dark navy oversized zip hoodie with two yellow stripes running down the sleeves. She has a backpack strap over one shoulder and both hands tucked casually into the hoodie pockets. Her face is obscured by a flat rectangular censor block in a muted beige tone, covering the entire face area. Place her in a dramatic twilight coastal city setting that blends travel, nostalgia, and fantasy: on the left, a lit train platform with a commuter train approaching, its destination sign showing Japanese characters; behind it, a glowing city skyline with a ferris wheel. In the distance and lower left, layered mountains and a winding illuminated valley road. On the right, a cliffside coast at sunset with the sea reflecting warm light, a crescent moon in the sky, several flying seabirds, and a curving highway descending along the hillside. Also on the right, include a wooden signpost with exactly 3 directional signs labeled &amp;#34;NUEVOS CAMINOS&amp;#34;, &amp;#34;VIEJOS RECUERDOS&amp;#34;, and &amp;#34;SIN LÍMITES&amp;#34;. At the top center, add the Spanish tagline {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;CADA DESTINO CAMBIA SU HISTORIA&amp;#34;} in elegant serif capitals. On the upper left, create an awards column in gold typography with laurel wreaths and exactly 4 award blocks: one text block reading &amp;#34;GANADORA DE MÚLTIPLES PREMIOS&amp;#34; with 5 gold stars beneath it, then three laurel award sections reading &amp;#34;MEJOR PELÍCULA ANIMADA / FESTIVAL INTERNACIONAL DE ANIMACIÓN / 2024&amp;#34;, &amp;#34;PREMIO DEL PÚBLICO / FESTIVAL INTERNACIONAL DE CINE / 2024&amp;#34;, and &amp;#34;MEJOR BANDA SONORA ORIGINAL / ACADEMIA DE CINE ANIMADO / 2024&amp;#34;. Place the film title large across the lower center in luminous ornate serif lettering with a magical glow and sweeping flourishes, layered partly over the character. Beneath it, add the Spanish quote {argument name=&amp;#34;quote&amp;#34; default=&amp;#34;A veces, para encontrarte... tienes que perderte en el mundo.&amp;#34;}. Below that, add &amp;#34;UNA PELÍCULA DE ESTUDIO LUMINARIA&amp;#34; in small caps. At the bottom, add the release line {argument name=&amp;#34;release text&amp;#34; default=&amp;#34;PRÓXIMAMENTE EN CINES&amp;#34;} in large gold serif capitals, plus tiny production logos and credits along the footer, including a small studio emblem on the left. Rich blue, violet, and warm sunset orange palette, glossy poster lighting, romantic adventure mood, balanced composition, highly polished theatrical key art, vertical one-sheet film poster.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫音樂訓練營宣傳海報&#34;&gt;動漫音樂訓練營宣傳海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sorane_aimusic/status/2047507066697507134&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sorane_aimusic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sorane_aimusic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037_hu_9ebcb90fe3d33c90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/037_hu_c896eb8c5c5520af.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫音樂訓練營宣傳海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a dramatic Japanese anime-style promotional thumbnail poster for an event, vertical 4:5 composition, ultra-detailed, cinematic, neon-lit, high contrast, designed like a social media announcement image. The main subject is a beautiful anime girl centered slightly right, shown from the waist up, with long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;deep blue&amp;#34;} hair blowing in the wind, decorated with small star hairpins, wearing a dark hoodie and large studio headphones around her neck, against a glowing sunset-to-night city skyline filled with sparkling lights, music-energy particles, lens flares, and flying glowing petals. Her face area is obscured by a soft rectangular blur block. Use a vivid palette of electric blue, violet, magenta, gold, and sunset orange. Fill the design with layered Japanese typography that is crisp, readable, and integrated into the art like a polished event advertisement. Include exactly 8 major text groups: top left copy reading 「始まるのは、キミと創る 音楽の物語。」 with a smaller subcopy beneath reading 「AIを使って、みんなで音楽をつくる特別な3日間。」; top right a glowing marquee sign reading 「GW連休!」 and a smaller neon box below reading 「みんなで最高の音楽をつくろう!」; center main title with small English text 「AI MUSIC BOOTCAMP 2」 above huge Japanese title text 「AI音楽 ブートキャンプ 2」; a gigantic gold metallic announcement across the middle reading 「開催決定!」; a date bar reading 「開催期間」 followed by 「5.2 SAT 土」 and 「5.4 MON 月」; a hashtag callout near the bottom reading 「参加はカンタン!! #AI音楽ブートキャンプ2 をつけて投稿するだけ!」; a lower encouragement line reading 「初心者も大歓迎! みんなで最高の音楽体験を!」; and 3 bottom feature captions with icons reading 「一緒に学ぶ 仲間とつながる」, 「AIで創る 新しい音楽体験」, and 「想いをカタチに 自分だけの1曲を」. On the left edge, add a vertical filmstrip with exactly 4 inset panels showing the same girl in music-related scenes: 1) performing on a stage before a crowd, 2) working at a music production desk with screens and equipment, 3) singing into a microphone, 4) playing an acoustic guitar. Add exactly 2 neon music-themed icon illustrations in the lower area: a tilted smartphone with a music note on the lower left and a glowing microphone with musical notes on the lower right. Make the text effects glossy, luminous, and embossed with gold and white highlights, with energetic streaks and spark explosions around the headline. The overall feeling should be inspiring, celebratory, futuristic, and emotionally uplifting, like a high-impact Japanese Golden Week music bootcamp ad for {argument name=&amp;#34;event name&amp;#34; default=&amp;#34;AI音楽ブートキャンプ 2&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;熱帶鸚鵡像素馬賽克&#34;&gt;熱帶鸚鵡像素馬賽克
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/erikmackinnon/status/2048190288179675290&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/erikmackinnon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@erikmackinnon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038_hu_e7d5a0eeeb2f8e5f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/038_hu_cee3d515fddffdd5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;熱帶鸚鵡像素馬賽克&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A vibrant pixel-art style mosaic of a tropical parrot perched on a small brown branch in the middle of dense rainforest foliage. The entire image is rendered as a tight grid of tiny square tiles with visible black outlines, creating a stained-glass or LED-screen effect. The bird is shown in side profile facing right, with a large curved black beak, a pale cream face, a bright red-orange forehead and throat, vivid green upper body, and long wings and tail in saturated blue and cyan. The surrounding jungle is filled edge to edge with layered green leaves in many shades, with a soft light green glow behind the parrot to separate it from the background. High color contrast, rich tropical palette, crisp tile pattern, centered composition, decorative digital mosaic aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;溫室酒吧裏的金色雞尾酒&#34;&gt;溫室酒吧裏的金色雞尾酒
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/FernandesK47117/status/2048183925294371147&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/FernandesK47117&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@FernandesK47117&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039_hu_252e19d6194745a9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/039_hu_d48d1ae02359ae40.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;溫室酒吧裏的金色雞尾酒&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic vertical photo of a hand holding up a large balloon wine glass filled with a sparkling golden-yellow citrus cocktail in a lush indoor greenhouse bar. The drink is backlit by warm late-afternoon sunlight, making it glow translucent amber. Inside the glass there is 1 visible citrus wedge, and at the rim there is 1 fresh mint garnish cluster. The hand enters from the lower left, delicately gripping the stem, wearing 1 chunky translucent amber bracelet. The setting is dense with tropical greenery, hanging ferns, and vine-covered walls, with a bright greenhouse roof structure visible overhead and 2 warm exposed hanging bulbs softly glowing in the background. Use shallow depth of field with creamy bokeh, strong sun rays filtering through leaves, soft haze, and rich green-and-gold color contrast. Add a blurred foreground leaf or plant along the right edge to frame the composition. The lower background should suggest a busy café or cocktail lounge with indistinct people, but keep them heavily out of focus. Photorealistic, elegant lifestyle photography, moody yet sun-drenched, shot from a low angle looking upward at the raised glass, high detail on condensation, glass reflections, and the luminous drink.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多面板圖像板模板&#34;&gt;多面板圖像板模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/aimikoda/status/2048183782876778821&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/aimikoda&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@aimikoda&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040_hu_19301fce8cc60ac5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/040_hu_89197a97ec704f92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多面板圖像板模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a {argument name=&amp;#34;grid layout&amp;#34; default=&amp;#34;4x3&amp;#34;} borderless grid where each panel is an independent image of the {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;a young woman&amp;#34;}. Maintain strong subject consistency across all panels, with consistent color and lighting. Depict {argument name=&amp;#34;theme&amp;#34; default=&amp;#34;childhood memories&amp;#34;} with a {argument name=&amp;#34;mood&amp;#34; default=&amp;#34;warm, nostalgic&amp;#34;} mood in {argument name=&amp;#34;style&amp;#34; default=&amp;#34;nostalgic cinematic realism&amp;#34;} style. No text. No gap.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;handwritten-寫實-letter&#34;&gt;Handwritten 寫實 Letter
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mosthssan/status/2048160477658980711&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mosthssan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mosthssan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041_hu_a2746ec4437d71a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/041_hu_8c20723e8c102965.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Handwritten 寫實 Letter&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a highly realistic image of a handwritten letter containing a ({argument name=&amp;#34;message&amp;#34; default=&amp;#34;message or reflection carrying meanings of affection and loyalty to my account followers&amp;#34;}) on lined paper, with very touching words written in liquid ink pen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-band-finale-at-budokan&#34;&gt;Anime Band Finale at Budokan
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SDAI1807097011/status/2048127178592915583&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SDAI1807097011&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SDAI1807097011&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042.webp&#34;
	width=&#34;767&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042_hu_6f38d7ee23d7fca4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/042_hu_2a77149fd84bbfd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Band Finale at Budokan&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic anime concert illustration seen from behind the performers onstage, showing 4 teenage girls standing shoulder to shoulder at the front of a huge indoor arena, arms around each other in a triumphant post-performance moment. The camera is positioned slightly behind and below them, facing out toward the audience and the giant venue screen. The atmosphere is dazzling and emotional, filled with dense blue-and-gold confetti, sparkling particles, and strong white stage spotlights pouring down from above. The crowd fills the entire arena as a sea of tiny glowing blue lights. At center top, a giant rectangular screen displays elegant serif concert text: {argument name=&amp;#34;band name&amp;#34; default=&amp;#34;ELEMAYU&amp;#34;}, &amp;#34;1st LIVE at 日本武道館&amp;#34;, {argument name=&amp;#34;concert date&amp;#34; default=&amp;#34;2024.6.15&amp;#34;}, and &amp;#34;SOLD OUT&amp;#34;. On both upper side walls of the arena, the large venue name &amp;#34;日本武道館&amp;#34; is visible. The 4 girls all wear matching dark stage outfits: black or very dark navy hooded jackets with subtle decorative back prints, short pleated skirts, and live-performance styling. Count and depict all 4 members distinctly from left to right: 1) a girl with short wavy silver-lavender hair holding a bass guitar slung over her shoulder, 2) a girl with long straight black hair holding a red electric guitar, 3) a girl with fluffy shoulder-length blonde hair holding a dark guitar, 4) a girl with brown hair in a high ponytail, no visible instrument, raising one arm high and holding a drumstick or baton in celebration while the other arm wraps around the blonde member. Show their backs and silhouettes rim-lit by stage light, with soft highlights on their hair. Include stage equipment: a microphone stand and part of a bass neck at the far left, and a visible drum kit with cymbals at the right edge. The stage floor is glossy and reflective, covered with scattered confetti and several blue flower bouquets near the bottom foreground. Use rich midnight blues, violet shadows, warm golden sparkles, and cinematic bloom. The mood should feel like a sold-out dream performance finale, sentimental, victorious, and breathtakingly luminous, in highly detailed painterly anime style.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫少女與男性約會照片拼貼&#34;&gt;動漫少女與男性約會照片拼貼
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIillust_studio/status/2048099186214900130&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIillust_studio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIillust_studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043_hu_fbe12bbcbcb09878.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/043_hu_deb555056dbb63f9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫少女與男性約會照片拼貼&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A 4x4 photo collage of 16 warm, cinematic lifestyle snapshots featuring a real adult man and an anime-style young woman companion posed together as if in casual date photos. The man has short dark hair, light skin, an average build, and wears a plain dark navy or black long-sleeve shirt; his face is intentionally obscured and softly blurred in every frame. The anime girl has long blonde twin ponytails, large blue eyes, light skin, and a slim petite build, wearing a black sleeveless top, layered silver necklaces including a cross pendant, black wrist accessories, a red plaid pleated mini skirt, and black-and-white striped thigh-high socks. Blend realistic photography with a convincingly integrated 2D anime character, keeping her clean cel-shaded look while matching the scene lighting, perspective, focus, and color grading so she appears naturally present beside him. Use moody evening tones, soft bokeh, shallow depth of field, and intimate candid couple energy. The 16 panels are: 1) close indoor portrait with both seated close together, the girl resting beside him; 2) nighttime city street side profile conversation under blurred streetlights; 3) indoors, both reading a book together, the girl leaning on his shoulder; 4) outdoor cafe table, both holding takeaway coffee cups; 5) restaurant table with multiple dishes visible, dining together; 6) mirror selfie in an elevator, the man holding a smartphone while the girl makes a peace sign; 7) car interior road-trip shot, the man driving and the anime girl in the passenger seat; 8) seaside sunset from behind, both sitting side by side watching the ocean; 9) neon-lit city night portrait, the girl pointing toward the camera; 10) intimate elevator close-up, the girl with eyes closed leaning affectionately against him; 11) full mirror selfie in an elevator showing more of both outfits; 12) night city skyline portrait with a lit tower in the background; 13) camera selfie close-up, the man holding a compact camera toward a mirror or reflective surface; 14) cozy indoor lounge moment, the man holding a glass of red wine while the girl smiles and makes a peace sign; 15) rear full-body rainy night street shot, the pair walking away hand in hand under glowing streetlights; 16) extreme close-up night portrait with the girl flashing a peace sign. Keep the collage tightly gridded with thin white dividers, square overall format, consistent amber-brown color grading, romantic urban realism, and subtle social-media photo-dump aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華-lifestyle-mustang-shot&#34;&gt;奢華 Lifestyle Mustang Shot
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Just_sharon7/status/2048095904138485962&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Just_sharon7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Just_sharon7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044_hu_32ee949f06932356.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/044_hu_d07d56ec1c576cb8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華 Lifestyle Mustang Shot&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A stylish young woman with {argument name=&amp;#34;hair style&amp;#34; default=&amp;#34;long wavy blonde hair&amp;#34;}, defined cheekbones, and a confident expression, wearing black sunglasses and a {argument name=&amp;#34;clothing&amp;#34; default=&amp;#34;thick white puffer jacket&amp;#34;} over a fitted black top, standing confidently in front of a {argument name=&amp;#34;car&amp;#34; default=&amp;#34;vibrant hot-pink Ford Mustang&amp;#34;}. She is posing with one hand slightly raised near her chest, exuding effortless attitude and elegance. The car is parked on a scenic coastal road lined with blooming pink cherry blossom trees and tall palm trees. Behind them is a calm sea under a dramatic overcast sky with soft clouds. Pink petals are scattered on the wet asphalt. A wooden bench is visible on the left side near the water. Cinematic lighting, photorealistic, ultra-detailed skin texture, natural lighting reflections, Instagram-style luxury lifestyle shot, vibrant colors, moody atmosphere, 8k resolution --ar 9:16 --stylize 250
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-friends-eating-soba&#34;&gt;Anime Friends Eating Soba
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIMAG31G/status/2048089673621516547&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIMAG31G&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIMAG31G&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045.webp&#34;
	width=&#34;1200&#34;
	height=&#34;821&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045_hu_f3ad5e7e56139856.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/045_hu_d22c9a09750d4c8e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Friends Eating Soba&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;146&#34;
		data-flex-basis=&#34;350px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cozy anime-style interior of a traditional Japanese soba restaurant, viewed from table height in a booth, with two young women seated across the near corners of a rectangular wooden table and facing the viewer in a casual dining snapshot. The left woman has long straight pastel {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;lavender with cyan highlights&amp;#34;} hair with glossy strands and soft bangs, and wears a white kimono-style top with bright blue trim and a deep blue obi-like sash skirt; she is slightly curvy, sitting on the left red vinyl bench, turned a little toward the camera, raising her left hand in an open friendly wave. The right woman has a sleek short bob in dark brown to black with a purple underlayer visible near the ends, red rectangular glasses, small earrings, a fitted charcoal-gray long-sleeve scoop-neck top, and light blue jeans; she sits on the right red vinyl bench, leaning slightly toward the table and holding chopsticks in her right hand as if about to eat. Place 2 large black bowls of soba on the table, one in front of each woman, both filled with dark broth, noodles, sliced duck meat, and chopped green onions; add 1 clear water glass near the center back of the table and 2 small condiment dishes beside it. The restaurant should feel warm and nostalgic, with wooden paneling, a shoji-style window on the left, a small potted plant on the windowsill, a back counter with condiments and utensils, and a navy noren curtain on the right bearing large white Japanese text &amp;#34;蕎麦&amp;#34; and smaller vertical text &amp;#34;手打ちそば&amp;#34;. On the back wall, show 7 vertical wooden menu boards with Japanese dish names and prices, including labels such as &amp;#34;もりそば&amp;#34;, &amp;#34;ざるそば&amp;#34;, &amp;#34;かけそば&amp;#34;, &amp;#34;たぬきそば&amp;#34;, &amp;#34;肉そば&amp;#34;, &amp;#34;天ぷらそば&amp;#34;, and &amp;#34;鴨南蛮そば&amp;#34;. Use clean polished anime rendering, crisp line art, soft warm lighting, detailed food illustration, rich wood textures, and a friendly everyday outing mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;哥特機械戰士大教堂關鍵視覺&#34;&gt;哥特機械戰士大教堂關鍵視覺
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yanagihara_0805/status/2048085829713842405&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yanagihara_0805&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yanagihara_0805&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046_hu_5f71e547796d351b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/046_hu_29c0319bd8507c36.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;哥特機械戰士大教堂關鍵視覺&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic dark fantasy anime illustration in a ruined gothic cathedral, vertical composition. Show a lone female android-like warrior from behind, centered slightly low in frame, kneeling or sitting back on her heels on a reflective stone floor. She has extremely long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver white&amp;#34;} hair spreading across the floor and air, a sleek black blindfold visor covering her eyes, and a black high-cut gothic combat dress with elegant straps, long black opera gloves, and thigh-high black boots. Her physique is slim and graceful. She holds 1 large ornate sword upright in front of her, with both hands resting on the hilt, the blade planted on the ground like a memorial. The sword has a dark blade and a decorative gold ring-like guard near the handle. The atmosphere is solemn, tragic, and reverent. Place 3 tall pointed arched windows in the background, glowing with cold white backlight through haze and dust. Include 4 stone angel statues total: 2 larger angels in the left background and 2 in the right background, partially obscured by fog and darkness. Fill the air with drifting ash, snow-like particles, black debris fragments, and a few faint orange embers near the floor. Use dramatic volumetric light rays, soft bloom, smoky mist, high contrast, and a desaturated palette of charcoal gray, silver, blue-gray, and black. The scene should feel like a memorial after a battle, highly detailed, ultra-polished, melancholic, ethereal, and game key art inspired by {argument name=&amp;#34;franchise title&amp;#34; default=&amp;#34;NieR:Automata&amp;#34;}. Add 1 vertical Japanese title inscription near the lower left reading {argument name=&amp;#34;vertical text&amp;#34; default=&amp;#34;儚き夢と共にあれ&amp;#34;}, with 1 small vertical English subtitle beside it reading {argument name=&amp;#34;subtitle text&amp;#34; default=&amp;#34;NieR:Automata&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;cloud-shape-doodle-generation&#34;&gt;Cloud shape doodle generation
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gorden_Sun/status/2048080137149899133&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Gorden_Sun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gorden_Sun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047.webp&#34;
	width=&#34;1200&#34;
	height=&#34;972&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047_hu_e30673326a8eb001.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/047_hu_3e83eb8d79a3319b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Cloud shape doodle generation&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;123&#34;
		data-flex-basis=&#34;296px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Based on the shape of the {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;clouds&amp;#34;} in the image, identify what object, animal, or person they most resemble. Do not change the original image; instead, draw that object, animal, or person over the original image in a {argument name=&amp;#34;art style&amp;#34; default=&amp;#34;doodle&amp;#34;} style.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rural-station-schoolgirl-scene&#34;&gt;Rural Station Schoolgirl Scene
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/m_Raiko_AIart/status/2048069313387737222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/m_Raiko_AIart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@m_Raiko_AIart&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048_hu_66cd8f2405b1b74d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/048_hu_d773f4afd927dd3d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Rural Station Schoolgirl Scene&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime-style illustration of a quiet rural Japanese train station in early summer, filled with travel nostalgia and bright midday light. In the foreground, one high school girl stands alone on the platform near the left side of the frame, facing slightly toward the viewer with a shy, gentle posture, her legs together and one foot angled inward. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} short bobbed hair with soft bangs, and wears a classic Japanese sailor school uniform: a white long-sleeved sailor blouse with navy trim, a vivid red neckerchief, a dark navy pleated skirt, white socks, and dark brown loafers. She holds a dark school bag in one hand at her side. Her expression should feel calm, a little wistful, as if she was just about to speak before the train arrived. Place her beside an old weathered wooden station building with large windowpanes and a simple wooden bench. Above her is 1 hanging station sign reading {argument name=&amp;#34;station name&amp;#34; default=&amp;#34;山ノ下駅&amp;#34;}, with smaller romanized text “YAMANOSHITA” and small local line information beneath it. The right half of the image opens to 1 set of railway tracks receding into the distance, bordered by lush green grass and wildflowers, with 1 small local train approaching from far down the line. Add a few utility poles running alongside the tracks. In the deep background, show a dramatic mountain range with lingering snow on the peaks under a vivid blue sky with scattered white clouds. Composition should balance the girl on the left and the railway perspective on the right, with detailed background scenery, crisp sunlight, soft anime rendering, realistic textures in the station wood and rails, and a heartfelt slice-of-life travel mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;真實居酒屋裏的動漫角色照片&#34;&gt;真實居酒屋裏的動漫角色照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin/status/2048066779835220392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sub_raw_jin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049.webp&#34;
	width=&#34;1200&#34;
	height=&#34;676&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049_hu_3829d64e8a65e8fe.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/049_hu_b545c96841923dc4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;真實居酒屋裏的動漫角色照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid indoor restaurant photo in a realistic anime-inspired style, showing two young women seated at a small worn wooden table inside a cozy Japanese izakaya with vertical wood-paneled walls and a clear plastic tent-like curtain on the right side. The camera is slightly above table height and angled diagonally toward the table, creating a casual snapshot feeling. One woman is in the left foreground with her back mostly to the viewer, leaning forward over the table; she has long straight dark hair and wears a bulky dark navy or black puffer jacket with a large hood. The second woman sits across from her on the right, facing the camera with a relaxed posture and one arm bent on the table; she has shoulder-length dark brown to black hair, a center part, a black puffer jacket, and a light inner shirt. Replace only the people with clean, natural-looking anime characters while keeping the restaurant environment photorealistic and unchanged. Preserve the mixed-media look of anime characters composited believably into a real photo. On the table, include 2 stainless steel mugs, 2 pairs of chopsticks, 1 smartphone with a bright blue case near the center-left edge of the table, 1 cigarette pack near the right woman, 1 large oval plate with thinly sliced white onions and a lemon wedge, 1 small dish of green vegetables, 1 small plate of brown food, 1 small plate with toast or grilled bread, 1 small dark bowl, 2 small empty white bowls, and 1 printed handwritten Japanese menu sheet lying on the lower right corner of the table. In the upper left background, include a wooden counter with white ceramic bottles and dishes, plus 1 handwritten Japanese wall menu poster. Warm indoor lighting, everyday nightlife atmosphere, documentary realism, detailed wood grain, slightly cluttered tabletop, authentic casual dining scene in Japan.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-campers-in-a-winter-tent&#34;&gt;Anime Campers in a Winter Tent
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin/status/2048066779835220392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sub_raw_jin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sub_raw_jin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050.webp&#34;
	width=&#34;1200&#34;
	height=&#34;555&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050_hu_a99b34861ac85714.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/050_hu_98e47f7fff418fc8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime Campers in a Winter Tent&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;216&#34;
		data-flex-basis=&#34;518px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cozy winter camping scene inside a large beige canvas tent, rendered as a semi-realistic anime illustration with natural lighting and realistic environmental detail. Show exactly 2 seated young women around a compact kerosene heater used as a camp table, with a large black metal pot resting on top. The viewpoint is a candid wide-angle photo composition from slightly above seated height, making the scene feel like a casual snapshot taken inside the tent. The woman on the left has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair tied in a high ponytail with loose bangs, and wears a fluffy brown fleece jacket, dark pants, and a red lanyard with an ID card. She sits in a low camping chair and leans forward, using chopsticks over a small bowl or food container in her hands. The woman on the right has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} shoulder-length hair and wears a muted purple hoodie layered under a black puffer vest, light gray sweatpants, and dark shoes. She sits in another low camping chair, resting her cheek on one hand in a relaxed, sleepy pose. Keep both faces obscured by a soft rectangular blur block, as if anonymized in a posted photo. Around them, include exactly 4 red beverage cans visible in the scene: 2 on the wooden table planks near the center, 1 cropped in the lower right foreground, and 1 farther back near the right side. Build a low U-shaped arrangement of 3 wooden bench planks surrounding the heater. Add small camping details: 1 olive duffel bag on the left ground, 1 plastic storage box with supplies behind the left woman, 1 white plastic shopping bag on top of the box, 1 small bowl on the table, 1 colorful snack package on the right-side plank, 1 soft brown cloth on the far left floor, and 1 black metal rack frame standing at the back right. The tent interior should have taut canvas walls, visible seams and support poles, a gravel ground, and a warm muted color palette. Preserve the feeling of a real camping photo where only the people have been turned into anime-style characters while the setting remains highly realistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;bmw-performance-social-海報&#34;&gt;BMW Performance Social 海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2048063332624843046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051_hu_6c345699f3ac4fe0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/051_hu_7a3e30600c6fd652.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;BMW Performance Social 海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a 4:5 vertical social poster in ultra high resolution, 8K print quality sharpness. Use the {argument name=&amp;#34;car model&amp;#34; default=&amp;#34;BMW car&amp;#34;} from the reference image as the main subject and use the background structure/composition from the reference image, but transform it into a BMW themed design. Replace all black tones with a flat {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;high-saturation BMW blue&amp;#34;} background. Keep the same layout, spacing, visual balance, and poster composition from the reference image. Background should use a smooth gradient from slightly lighter electric blue at the top to deep navy blue at the bottom. Add subtle grain texture (2 to 3%) and faint rectangular overlays (2 to 4% opacity). Keep it clean, graphic, premium, and non-realistic. Add a soft contact shadow under the car. Use the same BMW from the reference image, changing only the {argument name=&amp;#34;paint finish&amp;#34; default=&amp;#34;matte frozen blue&amp;#34;} or deep metallic navy. Keep the original body shape, wheels, stance, and design details from the reference image. Show the car in a rear 3/4 perspective matching the reference image angle exactly. Use a slightly elevated camera angle. Position the car slightly right of center. Include visible carbon roof, aggressive rear diffuser, sharp controlled reflections, and subtle brake details. Keep composition identical to the reference image: Top: branding Middle: giant type Center: car overlapping text Bottom: editorial block and specs Typography: Primary text: “BMW” Ultra condensed bold sans serif, tall vertical scaling like the reference poster. Color deep navy or near black. Static text with no distortion. Acts as structural backdrop. Secondary header: “BMW M4 G82” Thin font with wide tracking. Logo area: BMW roundel centered above. Editorial block: Headline: “BMW — Where Driving Becomes Instinct” Body copy focused on: driver connection control performance precision Use the same boxed editorial layout as the reference image. Background faded text: “M4” large scale with 3 to 5% opacity behind the box. Bottom left: “ M4 G82” Bottom right specs: 405 kW / 550 PS 3.4 s 307 km/h Lighting should be clean studio lighting with sharp but controlled highlights. Color grading should use deep blues, high contrast, clean blacks. Camera lens: 50mm, slightly elevated rear 3/4 angle. Mood: Performance. Precision. Driver focus. Add Bottom-right watermark: harboriis , with small x and Instagram logo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電影感-chicken-momos-ad-海報&#34;&gt;電影感 Chicken Momos Ad 海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme/status/2048060325925470358&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Diplomeme&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052_hu_7112beaf8f90a74a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/052_hu_b8863ee9d849010b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電影感 Chicken Momos Ad 海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic cinematic street-food advertisement poster for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;Licious&amp;#34;} frozen {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Chicken Momos&amp;#34;}, shot in a dark premium studio with dramatic moody lighting, deep navy-black background, glossy black tabletop, and high contrast commercial food photography styling. The composition is a square social-media ad layout with oversized bold condensed white sans-serif headline text on the left reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;PERFECTLY MADE.&amp;#34;} stacked across two lines, and a smaller white subheadline beneath it reading {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;PRECISION IN EVERY BITE.&amp;#34;}. Along the far left edge, add thin vertical small caps text reading “FRESH • CLEAN • CONTROLLED”. Across the upper-right background, repeat the phrase “CUT / STEAM / SERVE / REPEAT” in a subtle dark gray pattern, and faintly repeat “CUT / STEAM / SERVE / REPEAT” again near the bottom-left floor area as perspective text. Feature exactly 6 momos total: 5 intact steamed chicken momos floating and arranged dynamically across the center and right side, and 1 split-open momo in the center revealing juicy orange-brown chicken filling with herbs, with a glossy red-orange sauce droplet dripping downward from the opened dumpling. Scatter small chili flakes, herb bits, and seasoning particles suspended in the air around the momos for explosive motion. Place exactly 3 retail product boxes on the right side, staggered in depth, black packaging with the {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;Licious&amp;#34;} logo and red product title “CHICKEN MOMOS,” including food photography of the dumplings on the box front. At the bottom right foreground, place 1 small black bowl filled with bright red dipping sauce. Add a thin footer line of small white text across the bottom reading “CHICKEN MOMOS • FRESHLY PREPARED • 2026 EDITION” and place “licious.com” in the lower-right corner. Use premium ad design, ultra-detailed food texture, glossy highlights on the dumplings, subtle steam sheen, crisp typography, shallow depth of field, and a polished high-end commercial campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;nostalgic-16-photo-couple-grid&#34;&gt;Nostalgic 16-Photo Couple Grid
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/zenkaiAI/status/2048051889460437351&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/zenkaiAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zenkaiAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053_hu_7c3db8708f8b6482.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/053_hu_92bd8818f70e0b78.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Nostalgic 16-Photo Couple Grid&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;16-photo nostalgic contact sheet collage&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;dreamy film photography, soft blur, slightly underexposed, candid youthful romance, flash snapshots mixed with ambient dusk light, subtle grain, sentimental and bittersweet mood&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;people_count&amp;#34;:2,&amp;#34;relationship&amp;#34;:&amp;#34;young couple or former lovers spending time together&amp;#34;,&amp;#34;ages&amp;#34;:&amp;#34;early 20s&amp;#34;,&amp;#34;appearance&amp;#34;:{&amp;#34;male&amp;#34;:{&amp;#34;build&amp;#34;:&amp;#34;slim&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;short dark hair&amp;#34;,&amp;#34;clothing&amp;#34;:&amp;#34;loose white short-sleeve shirt, camera strap around neck in several shots&amp;#34;},&amp;#34;female&amp;#34;:{&amp;#34;build&amp;#34;:&amp;#34;slim&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;shoulder-length dark hair&amp;#34;,&amp;#34;clothing&amp;#34;:&amp;#34;light sleeveless tops or soft casual summer clothes&amp;#34;}},&amp;#34;faces&amp;#34;:&amp;#34;intentionally obscured by soft rectangular blur blocks over every visible face&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;border&amp;#34;:&amp;#34;thin white dividers, equal square cells&amp;#34;},&amp;#34;images&amp;#34;:[{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close cropped portrait of the woman in a white top at night, soft flash, dark background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close cropped blurred two-person selfie framing, both subjects partially visible, dark nighttime setting&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man standing at night and holding a compact silver camera up to his face, white shirt, distant lights behind him&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman on a beach or shoreline in low light, softly blurred, ocean horizon behind her&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;street candid of the man holding a camera near his face while walking outdoors in the evening, urban background with motion blur&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close-up of the woman indoors or in a dim warm setting, hand raised near her face, flash-lit snapshot&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;blurred two-shot of the couple sitting close together by water at dusk, intimate candid composition&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man outdoors in greenery during daytime or early evening, looking down at a camera in his hands, white shirt and camera strap visible&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman close to the camera giving a peace sign, casual sleeveless top, sandy or beachlike background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;back view of the man in a white shirt looking out over a cityscape at night from a high vantage point&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;woman indoors at night holding a compact camera directly toward the viewer, city lights beyond a window, flash aesthetic&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;tight cropped two-person selfie-like frame with both subjects partially visible, dark background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;young man at the waterfront at dusk holding a camera to his eye, cloudy blue sky and distant shoreline behind him&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;soft night portrait of the woman on a city street with warm bokeh lights in the background&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;close intimate couple snapshot with both faces near each other, one subject making a peace sign, heavy blur and flash look&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 4 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;rear view of the woman walking alone down a warmly lit narrow street at night, shoulder-length hair and light top visible&amp;#34;}]},&amp;#34;composition&amp;#34;:&amp;#34;each square feels like a memory fragment from one summer evening and a few nearby outings, varied framing, natural imperfection, casual amateur photography&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted blues, warm tungsten yellows, soft skin tones, dark greens, charcoal night shadows, faded white clothing&amp;#34;,&amp;#34;camera_look&amp;#34;:&amp;#34;35mm point-and-shoot or disposable camera feel, shallow focus, motion blur, bloom around lights, occasional flash overexposure&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;high-resolution collage with authentic analog softness, emotionally evocative and realistic&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;anime-bl-promo-縮略圖&#34;&gt;Anime BL Promo 縮略圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/himukai_an/status/2047981800535085555&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/himukai_an&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@himukai_an&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054_hu_c949bbb5ffc3da07.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/054_hu_22313a14959dca4c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Anime BL Promo 縮略圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A bright, polished anime-style promotional thumbnail with a summer romance atmosphere. The composition is split visually, with large typography on the left and two handsome young men on the right. On the left side, place layered translucent white panels with soft glow and sparkles over a sky-blue background, featuring large elegant serif text &amp;#34;GPT&amp;#34; in a blue gradient at the top and &amp;#34;BL&amp;#34; in a lavender-to-violet gradient below. Add three lines of Japanese text arranged between and under them: &amp;#34;最新の画像生成で&amp;#34;, &amp;#34;作って&amp;#34;, and &amp;#34;遊んでみた&amp;#34;, in deep blue calligraphic Japanese type. Include subtle decorative accents such as small star glints, diagonal light streaks, dotted texture, and a cyan underline swoosh beneath the middle text. On the right side, show 2 anime boys from the waist up, leaning casually together beside a chain-link fence under leafy trees. The taller boy has tousled dark brown hair, a navy overshirt worn open over a white T-shirt, layered silver necklaces, and holds 1 plastic cup of iced coffee with a straw. The shorter boy has messy silver-white hair, a white T-shirt with a small crest emblem on the chest, black backpack straps over both shoulders, layered silver necklaces, and one small earring. Their poses are relaxed and intimate, with the dark-haired boy’s arm resting around the other. Use a luminous blue-and-white palette with soft sunlight, lens flare, bokeh, and a faint cityscape in the background, creating a clean social-media header or article thumbnail aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夜晚的藝術家與空靈繆斯&#34;&gt;夜晚的藝術家與空靈繆斯
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/almimeister/status/2048309710118687101&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/almimeister&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@almimeister&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055_hu_8c4d3b82e3d3a6f7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/055_hu_98818098bf668f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夜晚的藝術家與空靈繆斯&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic anime-inspired digital illustration set at night inside a cozy artist&amp;#39;s room with large window panes and a warm city glow outside. On the left, a young male artist with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} messy hair sits at a cluttered desk in side profile, leaning forward with one hand near his mouth and the other drawing with a pen on a tablet or sketchbook. The desk is covered with exactly 1 pen cup filled with pencils, 1 coffee mug, 1 open laptop or pen-display showing a sunset landscape, 1 spiral sketchbook with manga-style character drawings, 2 additional drawing books or pads, 1 small stack of about 4 books, and many scattered art cards and printed illustrations. On the right, a luminous ethereal anime girl made of blue-white light appears life-sized, facing the artist with both hands gently extended toward him. Her form is translucent, delicate, and composed of glowing contour lines, starry particles, and flowing strands of light, with long windblown hair and a soft dress-like silhouette. Between them, a magical stream of golden and white light spirals upward from the artist&amp;#39;s desk into the air, connecting creator and creation. Inside this swirling ribbon are exactly 12 to 16 floating image fragments and sketch pages: monochrome character sketches, scenic sunset paintings, small photo-like panels, and tiny icon-like cards, all orbiting in a curved arc from lower center to upper left and upper center. Around the upper half of the image, dozens of glowing musical notes float through the air, mixed with sparkling particles, creating the feeling that inspiration has become visible sound and memory. The palette is rich warm gold and amber on the artist&amp;#39;s side, contrasted with cool electric blue and white on the spirit girl&amp;#39;s side, with dramatic rim light, volumetric glow, intricate particles, and a dreamy emotional atmosphere. Composition is vertical, highly detailed, intimate, and poetic, evoking the relationship between {argument name=&amp;#34;person one&amp;#34; default=&amp;#34;you&amp;#34;} and {argument name=&amp;#34;person two&amp;#34; default=&amp;#34;me&amp;#34;} as artist and imagined muse, where drawings, music, memories, and fantasy physically manifest in the room. Add a small handwritten note card on the desk with {argument name=&amp;#34;note text&amp;#34; default=&amp;#34;二人だけの物語&amp;#34;}, and display one prominent artwork on the desk and one floating scenic panel using {argument name=&amp;#34;scene theme&amp;#34; default=&amp;#34;sunset sky over a distant city&amp;#34;}.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ui.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：人像攝影案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;人像攝影&lt;/code&gt; 分類下的 55 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;人像攝影&#34;&gt;人像攝影
&lt;/h2&gt;&lt;h3 id=&#34;便利店霓虹人像&#34;&gt;便利店霓虹人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045167461147042202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000_hu_f5ded828a47ee136.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/000_hu_9c32af7f48c22c7b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;便利店霓虹人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm film photography with harsh convenience store fluorescent lighting mixed with colorful neon signs from outside, authentic film grain, high contrast, slight color cast, cinematic street editorial style, intimate medium shot, early 20s sexy Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless porcelain skin with cool ivory undertone and visible specular highlights from fluorescent light, subtle skin texture and micro pores, natural dewy makeup with soft flush on cheeks, glossy natural pink lips slightly parted, subtle natural freckles across nose and cheeks, long dark brown hair in a messy high ponytail with many loose strands falling around face and neck, wearing an oversized white button-up shirt as the only top, unbuttoned at the top with deep cleavage and loosely tied at the waist, paired with a tiny black pleated mini skirt, barefoot in simple white slides, seductive casual leaning pose against the glass door of a 24-hour convenience store at late night, body slightly arched, one leg bent with foot resting against the door frame, the other leg straight, one hand holding a bottle of iced drink, the other hand lightly pulling the hem of her mini skirt, intensely seductive playful yet slightly vulnerable gaze straight at the viewer with soft doe eyes full of quiet temptation and teasing smile, bright cold fluorescent store light from inside mixed with pink and blue neon glow from outside signs, realistic reflections on glass door, blurred convenience store interior with shelves and snacks in background, authentic 35mm film color grading with harsh lighting and neon accents, extremely sharp yet soft skin rendering, natural hair strands, realistic fabric wrinkles and drape on the oversized shirt and mini skirt, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic late-night convenience store atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電影感極簡人像&#34;&gt;電影感極簡人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iam_miharbi/status/2045151354679665101&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/iam_miharbi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iam_miharbi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001_hu_a8cd363b79ab3a8d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/001_hu_2842eaf4560e93aa.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電影感極簡人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate a cinematic minimal portrait of a solitary man standing in an intense orange to red gradient environment, strong silhouette lighting, deep shadow contrast, reflective glossy floor, symmetrical composition, minimal
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式溫泉旅館人像&#34;&gt;日式溫泉旅館人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045092449803284923&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002_hu_3bb6d0434e7554a2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/002_hu_f7835d1315a59bf2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式溫泉旅館人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm film photography, warm vintage Japanese onsen ryokan aesthetic, soft ambient wooden lantern lighting mixed with gentle natural window light, subtle film grain, gentle color shift, high atmosphere editorial style, intimate medium shot, early 20s beautiful Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless porcelain skin with warm ivory undertone, visible subtle skin texture and micro pores, soft natural makeup with dewy glow, subtle rosy flush on cheeks, natural soft pink lips slightly parted, long dark brown hair tied in a loose low bun with some messy strands falling around face and neck, wearing a loose white yukata (traditional Japanese bathrobe) deliberately slipped off one shoulder and loosely tied at the waist, the fabric slightly open revealing smooth skin and subtle cleavage, barefoot, seductive relaxed sitting pose on the edge of a traditional wooden engawa veranda at a vintage onsen ryokan, body slightly turned toward the camera, one leg bent with foot resting on the wooden floor, the other leg gently dangling, one hand lightly holding the yukata collar, the other hand resting on the wooden floor behind her for support, softly arched back to gently accentuate curves, intensely seductive yet gentle and inviting gaze straight at the viewer with soft doe eyes full of quiet temptation and warmth, warm wooden interior with paper sliding doors and distant steaming hot spring in soft focus, gentle rim lighting highlighting skin and fabric texture, authentic vintage film color grading with warm tones, extremely sharp yet soft skin rendering, natural hair strands, realistic fabric wrinkles and drape on the yukata, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic 35mm film Japanese onsen ryokan atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;35mm-閃光編輯風人像&#34;&gt;35mm 閃光編輯風人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045052982728016131&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003_hu_305319b81c9e8f3d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/003_hu_beb530d223306f78.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;35mm 閃光編輯風人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;35mm color film photography with harsh direct on-camera flash, specular highlights on skin and clothing, strong catchlights in eyes, high contrast flash illumination, authentic film grain and color shift, high fashion fresh innocent basketball court editorial style, intimate first-person low-angle POV shot from below, early 20s sexy Chinese female idol with ultra-realistic delicate refined Chinese features, seductive almond-shaped fox eyes with natural double eyelids, high nose bridge, small sharp V-shaped jawline, flawless realistic porcelain skin with cool ivory undertone and visible flash specular highlights, fine delicate skin texture with subtle pores micro details and natural dewy glow under flash, fresh natural sporty makeup with soft dewy glow, subtle natural flush on cheeks, natural pink lips slightly parted, subtle natural freckles across nose and cheeks, long dark brown hair tied in a high playful ponytail with some loose strands framing the face and realistic loose strands, wearing a loose white tank top and white high-waisted basketball shorts, white knee-high sports socks, seductive natural leaning pose against the basketball hoop pole on the outdoor court at dusk, body angled sideways with naturally arched back and hips gently pushed back to accentuate perky round hips and sexy butt curve, one leg naturally extended forward toward the camera and the other leg slightly bent to emphasize long sexy legs, both hands lightly resting on the basketball pole at shoulder height, intensely seductive playful yet pitiable doe-eyed gaze straight at the viewer with soft vulnerable longing eyes and a gentle teasing smile full of quiet temptation and desire, harsh direct on-camera flash creating sharp specular highlights and strong catchlights, background with blurred basketball court and hoop under dusk sky, high contrast film color grading with natural flash look, extremely sharp yet soft skin rendering with authentic 35mm direct flash aesthetic, natural hair strands, realistic fabric texture on tank top and shorts with socks detail, no plastic skin, no digital over-sharpening, no airbrushing, no blemishes, no moles, no oily skin, no watermark, no text, authentic 35mm direct flash film basketball court look --ar 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;臥室鏡前自拍人像&#34;&gt;臥室鏡前自拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2045002808903020962&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004_hu_3aa3d6321aca43eb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/004_hu_a4607499955447e6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;臥室鏡前自拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A stunning 18-year-old Chinese girl with a youthful, pure face and realistic skin texture, sitting on a cozy, slightly messy bed in her bedroom. She is taking a mirror selfie with a smartphone, capturing a natural and intimate moment. Wearing casual gray loungewear and neat white crew socks. Soft natural light (golden hour) streams in from a side window, creating a warm, moody, and cinematic atmosphere. 35mm lens, sharp focus on the subject in the mirror, depth of field with a beautifully blurred background (bokeh). Photorealistic, 8K, high resolution, studio quality, masterpiece.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative Prompts: no extra limbs, no deformed hands, no blur, no noise, no watermark, no text, no cartoon/anime style. Aspect Ratio: 3:4.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和通透-35mm-人像&#34;&gt;柔和通透 35mm 人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046115431144902732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005_hu_ead3166a14d82b24.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/005_hu_9d803bc26e7fa005.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和通透 35mm 人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Analog 35mm film photography, soft airy Japanese-style aesthetic, gentle diffused natural window light, slight overexposure, pastel tones, low contrast, soft highlights, minimal indoor setting near a window with white curtains, clean light-colored wall, natural composition, eye-level, slightly closer full-body framing (mid-thigh to head), young East Asian woman, natural minimal makeup, soft realistic skin texture, long slightly messy dark hair, oversized white button-up shirt, light casual shorts, barefoot, simple and relaxed styling, standing naturally with relaxed posture, arms loosely at sides or slightly behind, facing camera, gentle soft smile, subtle stillness, focus on light, air, and quiet everyday mood, soft film grain, dreamy and understated atmosphere --ar 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華魅力美妝人像&#34;&gt;奢華魅力美妝人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale/status/2044581766309060765&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/patrickassale&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@patrickassale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006_hu_290832876b0a66f1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/006_hu_d476e80abdbb6f01.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華魅力美妝人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Luxury Glam Beauty Portrait:, Beautiful Black woman, youthful spirit, creamy vanilla, silk press, mahogany red, subtle confidence, textured fabric, sapphire blue, minimal jewelry, beachside breeze, lens flare effect, nostalgic, cinematic lens, symmetrical composition, soft focus, high fashion photography, monochromatic, dewy finish, mysterious tension, layered elements
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;916-cosplayer-人像截圖&#34;&gt;9:16 Cosplayer 人像截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zoulinshen/status/2045082518089810073&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Zoulinshen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zoulinshen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007.webp&#34;
	width=&#34;670&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007_hu_6d0a9c27fc18bc06.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/007_hu_fcd08d0a514f6366.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;9:16 Cosplayer 人像截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;55&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张竖版手机截图风格的图片，整体比例接近 9:16。画面中心偏上是一位真人 coser，扮演（角色名称）的二次元角色。人物为写实风格，但五官略带动漫感，皮肤细腻，眼睛稍大，表情温柔地看向镜头，坐在室内的休闲场景中，例如咖啡厅或酒吧吧台前，背景有符合场景的道具。画面最上方加入手机系统状态栏 UI，包括时间、电量、信号、网络等图标，让整张图看起来像手机截图。画面底部叠加一块宽大的半透明 galgame 风格对话框，对话框左侧放一个与画面人物对应的动漫或 Q 版头像；对话框右侧排版文字：第一行用较大字体显示与前面相同的角色名字，下面一到两行显示一段适合这个角色人设的、温柔治愈风格的简体中文台词，由你自动创作。再在对话框下方加一条操作栏，仿照 galgame UI。整体风格高清、细节丰富、光线柔和、二次元与真人写真自然融合。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市回眸街拍人像&#34;&gt;城市回眸街拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tz_2022/status/2045892003775361198&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Tz_2022&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tz_2022&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008_hu_8cbeba56057e830.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/008_hu_64bba90f899229f8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市回眸街拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;该画面为中近景，采用平视镜头，聚焦于一位年轻女性。她以七分身镜头呈现，身体坐姿略带倾斜，臀部向后撅起，双腿自然交叠，左腿在前，右腿在后，膝盖微屈。她将上半身向右后方扭转，头部则转向镜头方向，形成一个经典的“回眸”姿态，目光直视镜头，眼神清澈而略带一丝俏皮。她的发型是蓬松的棕色齐肩短发，刘海自然垂落，发尾微卷，妆容清淡自然，仅在眼部有轻微眼线勾勒，唇色为自然裸粉。画面整体采用自然日光滤镜，光线从画面左上方斜射入，形成柔和的逆光轮廓，面部和身体右侧被温暖的金色光线照亮，左侧则形成自然的阴影过渡，增强了立体感。灯光效果是明亮的自然光，带有轻微的镜头眩光，营造出午后阳光的氛围。拍摄角度为平视，构图上，人物主体位于画面中偏右位置，背景中的斑马线与道路线条形成自然的引导线，将视线引向人物。背景为城市街道，包含道路、斑马线、绿化带和远处的车辆，背景被适度虚化，但依然可辨识出树木、护栏和停放的电动车等元素，构图上利用了三分法，人物位于右侧三分之一处，增强了画面的平衡感。主体穿着一件军绿色迷彩图案的连帽卫衣，下身搭配黑色短裤，脚穿白色高帮运动鞋配白色中筒袜。背包为黑色，带有橙黄色装饰条纹和一个橙色毛绒挂件，材质为帆布和皮革拼接。整体风格为街头休闲风，肢体语言放松自然，表情略带好奇与俏皮，整体呈现出一种随性、青春、充满活力的都市少女形象。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-滑板公園抓拍&#34;&gt;Sam Altman 滑板公園抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Malek1173989/status/2045836887684694395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Malek1173989&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Malek1173989&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009.webp&#34;
	width=&#34;456&#34;
	height=&#34;703&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009_hu_e0b361543eb632d3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/009_hu_8ce9a910d53d3bc2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 滑板公園抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;155px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;Sam Altman on a skateboard at a skatepark with no people.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;韓系偶像九宮格人像&#34;&gt;韓系偶像九宮格人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046268941941850575&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010_hu_82000a8f63ec387d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/010_hu_f8719fddffa7f7c8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;韓系偶像九宮格人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical, Korean idol portrait photoshoot, 3x3 grid (nine frames), same person in all images, consistent facial features and styling, soft black mist filter effect, lowered contrast, blooming highlights, subtle glow around light sources
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ccd-閃光韓系偶像照&#34;&gt;CCD 閃光韓系偶像照
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046190539213885806&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011_hu_571c0e2a9ebb0071.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/011_hu_132ebaae6384e909.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CCD 閃光韓系偶像照&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mobile phone photo, old CCD camera aesthetic, harsh flash, grainy, dim messy indoor lighting, candid snapshot feeling, slight motion blur, young Korean female idol, soft innocent look
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;韓系偶像九宮格拼貼人像&#34;&gt;韓系偶像九宮格拼貼人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046151898621993364&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012_hu_d2407f2a414e8994.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/012_hu_fac057dc4f55b9a4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;韓系偶像九宮格拼貼人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — a 3x3 grid collage (nine images) forming a Korean idol portrait photoshoot series. Each frame features the same young Korean female idol, maintaining 100% consistency in facial features, proportions, hairstyle, and identity across all nine shots.   Natural, ultra-realistic skin texture, no retouching, no smoothing. Clean idol-style minimal makeup, soft glow, subtle imperfections.   Hair: long, voluminous dark hair, slightly tousled, consistent across all frames (natural loose flow, slight movement).  Outfit: cohesive Korean idol photoshoot styling — white shirt + short bottoms (or simple neutral-toned outfit), youthful, clean, slightly casual but styled. Same outfit across all frames.  Setting: minimal studio or simple indoor environment (plain wall, soft window light, clean background). Focus on subject, not environment.  Lighting: soft diffused natural light, gentle highlights, low contrast, slightly airy tones, subtle film-like softness.  Camera style: intimate portrait photography, slightly handheld feel, subtle imperfections (minor grain, slight blur in motion frames, imperfect framing).  Frame breakdown (3x3 grid):  Top row: - Top left: standing naturally, looking slightly away, relaxed expression - Top center: facing camera, casual mid-motion (hair or body slight movement) - Top right: slight side angle, soft gaze, natural candid feel  Middle row: - Center left: looking slightly upward, soft thoughtful expression - Center: close-up portrait, direct eye contact, gentle idol smile - Center right: turning body slightly, mid-motion candid frame  Bottom row: - Bottom left: seated or leaning casually, relaxed posture - Bottom center: back partially turned, looking over shoulder toward camera - Bottom right: standing close to frame, slightly playful or soft expression  Mood: Korean idol photobook / photocard aesthetic, intimate, soft, natural, everyday charm.  Quality: ultra-realistic, 8K detail, subtle analog film grain, natural imperfections, soft dreamy tone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔黑霧編輯風人像&#34;&gt;柔黑霧編輯風人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046434670724907395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013_hu_b25492a69584d859.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/013_hu_771c0da60185e1a3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔黑霧編輯風人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — editorial portrait, single subject  soft black mist filter, subtle haze, gentle highlight bloom, muted tones  minimal indoor space, clean background, slight texture  young Korean woman, minimal makeup, natural skin texture  outfit: fitted ribbed knit top or soft camisole layered under a loose shirt, paired with high-waisted shorts or skirt; fabric slightly clings to body shape, soft and natural, no revealing elements  hair: slightly messy, natural volume  pose: sitting on floor with one leg bent and the other relaxed, body slightly leaning, shoulders not aligned, head tilted  composition: subject slightly off-center, negative space present  expression: calm, slightly distant, natural lips  lighting: soft side light, gentle shadow falloff  mood: understated, quiet, subtly sensual through natural body lines, relaxed and unposed  quality: fine grain, slight softness, realistic look
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;富士草莓校園人像&#34;&gt;富士草莓校園人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046483268019884384&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014_hu_708da46c7002e19a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/014_hu_c414b5ea44cf7ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;富士草莓校園人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Japanese Fuji film style portrait, single subject  Fujifilm analog aesthetic (Pro 400H / Superia feel), soft pastel tones, slight green-magenta shift, low contrast, gentle highlight roll-off, fine film grain, subtle halation, slight vignette  bright natural daylight, diffused sunlight through window, soft shadows, airy atmosphere  young Japanese female idol, natural minimal makeup, fresh glowing skin, realistic texture, slight imperfections  outfit: Japanese school uniform (sailor-style or blazer uniform), neatly styled, non-revealing, youthful and clean  hair: natural dark hair, straight or softly flowing, a few loose strands  pose: front-facing or slight angle toward camera, relaxed posture; one hand gently holding a strawberry near lips, mid-action as if about to take a bite; shoulders relaxed, subtle natural body curve  expression: soft playful gaze, light smile or neutral lips, gentle eye contact with camera  setting: minimal indoor near window or simple outdoor corner, clean background, everyday atmosphere  composition: slightly off-center framing, intimate distance, candid feel  mood: fresh, youthful, sweet everyday moment, understated charm  quality: ultra-realistic, analog film look, natural imperfections, soft dreamy finish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔黑霧偶像人像&#34;&gt;柔黑霧偶像人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046518189509734903&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015_hu_bc38bc8da9e4ce8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/015_hu_5a8fb39a55758192.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔黑霧偶像人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Korean idol portrait photography, single subject  soft black mist filter effect, lowered contrast, gentle highlight bloom, subtle glow, soft diffusion, slightly faded blacks  minimal indoor setting near window, white curtains, clean light-toned background  young Korean female idol, natural minimal makeup, dewy realistic skin texture, subtle imperfections  outfit: oversized white button-up shirt + short bottoms, slightly loose fit, soft and casual styling, no revealing elements  hair: long dark hair, slightly messy, natural volume, softly flowing  pose: relaxed standing or slight lean, body subtly angled, one leg slightly forward, shoulders relaxed; one hand lightly touching collar or resting near neckline, the other relaxed; gentle body curve without exaggeration  expression: soft cute smile, slightly playful eyes, direct or slightly off-camera gaze  camera: close to mid-body framing, eye-level, intimate distance, slight handheld feel  lighting: diffused natural daylight, soft shadows, gentle light wrapping around face and body  mood: cute yet subtly sensual, intimate, everyday softness, quiet romantic atmosphere  quality: ultra-realistic, fine film grain, slight softness at edges, natural imperfections, dreamy understated tone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;富士風情侶人像&#34;&gt;富士風情侶人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2046502288102170757&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016_hu_c23f1f87c252c325.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/016_hu_cdcf89bb138f217b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;富士風情侶人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 vertical — Japanese Fuji film style couple portrait, two subjects  Fujifilm analog aesthetic (Pro 400H / Superia feel), soft pastel tones, slight green-magenta shift, low contrast, gentle highlight roll-off, fine film grain, subtle halation  bright natural daylight, diffused sunlight through window, soft shadows, airy atmosphere  young Japanese couple, natural minimal makeup, realistic skin texture, slight imperfections  female outfit: oversized button-up shirt with loose shorts, relaxed fit, soft casual styling   male outfit: simple t-shirt or light shirt, clean and understated  hair: natural, slightly tousled for both  pose: close intimate distance — sitting or standing close together; the girl gently leaning toward him, one hand lightly resting on his shoulder or chest; the boy slightly leaning in, faces close, almost touching, capturing the moment just before a kiss  expression: soft smiles or gentle gaze toward each other, relaxed and natural, emotional connection visible  camera: close framing (waist-up), eye-level, intimate distance, slight handheld feel  setting: minimal indoor near window, light curtains, clean soft background  lighting: diffused daylight, gentle highlight bloom, soft shadow transitions  mood: warm, romantic, intimate everyday moment, natural affection  quality: ultra-realistic, analog film look, fine grain, slight softness, natural imperfections
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ai-自我認知人像&#34;&gt;AI 自我認知人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/80vul/status/2046218165961753047&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/80vul&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@80vul&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017_hu_64aaf4731473978e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/017_hu_a42dd9a969e7de18.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 自我認知人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据你对我的认知 给我生成一个“你认识的我”的 图片
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;創建最寫實的復古報紙頭版設計&#34;&gt;創建最寫實的復古報紙頭版設計&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Naiknelofar788/status/2047207812800147647&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Naiknelofar788&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Naiknelofar788&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018_hu_2c608b433002f6fc.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/018_hu_323f3c17caed1b68.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;創建最寫實的復古報紙頭版設計…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create the most realistic front page design of a vintage newspaper featuring the main character. The layout should be made in the style of a real printed newspaper with a cinematic black-and-white aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The main photo should be prominently placed in the center, framed, like the image in the title of the article. The subject in the photo should remain unchanged and clearly distinguishable in natural light and slightly increased contrast in order to match the spectacular editorial style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold, attention-grabbing headline at the top (create a unique title that matches the spirit of the photo - it can be romantic, mysterious, funny, or dramatic). Add a smaller subtitle under it, which will look like a real newspaper caption.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add realistic newspaper elements:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Columns of small text (in the style of lorem ipsum, but framed like real news)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the top is the fictitious name of the publication (for example, The Daily Prompts, AI Times or similar - think creatively, according to the picture)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Date, issue number and location
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Decorative lines, dividers, and vintage typography
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small additional articles or captions to the main image
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Optional stamps, doodles, or editorial notes to add personality.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Black and white or slightly faded monochrome paper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fine paper texture, grain, and ink defects
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small shadows and creases that mimic real printed paper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The aesthetics of a clean but slightly worn vintage newspaper
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: Give the design personality, expressiveness and plot, as if the plot is part of the main article.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect ratio: 4:5 or 1:1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-detail, ultra-realistic hybrid of editorial photography and print design.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;雜誌旅行指南專題頁&#34;&gt;雜誌旅行指南專題頁
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/andis13/status/2047204384811921764&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/andis13&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@andis13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019.webp&#34;
	width=&#34;805&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019_hu_45d9491e25ecda1f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/019_hu_a451650250877325.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;雜誌旅行指南專題頁&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;67&#34;
		data-flex-basis=&#34;161px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create image of Magazine feature article [travel] guide page, cute, information dense photo book style magazine feature article page. Add all necessary sections, tips, recommendations, information. add photos for any sections and recommendations if you like. Place the attached person at the precise location of [city, country]. Seamlessly blend the attached person as if they are sightseeing. Approach this task with the understanding that this is a critical, information rich page that will significantly influence visitor numbers, text accuracy is important. Fully use the entire [9:16] page. NEGATIVE PROMPT: coordinate texts @swiat_ai @ProfitAII
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;分析照片並給出可復現它的詳細-json-提示詞&#34;&gt;分析照片並給出可復現它的詳細 JSON 提示詞&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/pavellaslov/status/2047182214304055339&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/pavellaslov&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@pavellaslov&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020.webp&#34;
	width=&#34;554&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020_hu_a01827abf92f7e43.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/020_hu_1c76a74b60833556.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;分析照片並給出可復現它的詳細 JSON 提示詞…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;110px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;analyze this photo and give me a detailed JSON prompt that recreates it. break down the color grading and every exact color in the photo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(use Opus, not Sonnet. Opus has stronger visual analysis and writes more detailed JSON)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;paste that JSON into ChatGPT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;upload your product image and prompt:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;using this JSON as reference, generate a person holding my product
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;save that generated photo as your character reference
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;attach it to every future generation for facial consistency
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;you now have a consistent UGC model that works across any product
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the JSON controls the lighting and color grading. GPT image-2 handles the character. you control the product placement.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the #1 tell on AI photos is flat colors and a grainy look. this method removes both.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 minutes to set up. unlimited variations after.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;calming-green-tea-膠片套裝正面展示&#34;&gt;CALMING GREEN TEA 膠片套裝正面展示&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047180061657452601&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021_hu_43869e9f2beb7268.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/021_hu_46742f9b141cb08e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CALMING GREEN TEA 膠片套裝正面展示…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CALMING GREEN TEA Film Kit displayed frontally, the open box shows soft sage-green film pouches and translucent ampoules with matte silver caps, product placed centrally with clear branding CALMING GREEN TEA -- 7 Days to Soothed Skin, pastel green background with botanical graphic accents, three minimal icons (leaf, wave, balance) floating around the product to emphasize benefits, photographic, hyper detailed, ultra realistic, lifelike, 8k, high detail, soft professional lighting.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;草莓軟冰淇淋的超寫實產品攝影&#34;&gt;草莓軟冰淇淋的超寫實產品攝影&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047179916161212542&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022_hu_2d052d4454c0beed.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/022_hu_50c9709cd2cd5cf7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;草莓軟冰淇淋的超寫實產品攝影…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic product photography of a rich strawberry soft-serve ice cream in a crispy waffle cone, styled with a clean, modern premium aesthetic. The soft serve is a vibrant natural pink, thick and creamy, sculpted into a smooth swirl with a softly curled peak, lightly topped with delicate strawberry dust or tiny fruit specks for a fresh, appetizing look. The cone has a rustic, crunchy texture with slightly uneven edges for an artisanal feel.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The background is soft beige with natural sunlight casting subtle leaf shadows, creating a calm, organic atmosphere. Include softly blurred greenery in the foreground for depth. The composition is minimal, balanced, and uses negative space effectively, similar to high-end American food brand ads.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On the left side, include modern English typography in a clean, elegant layout (not vertical).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Main headline:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Sweet Strawberry Bliss.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Supporting line (smaller text):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Made with real strawberries. Smooth. Creamy. Irresistible.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a small circular badge showing the price:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$5.80.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: soft natural daylight, warm highlights, shallow depth of field, high-end commercial food photography style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: fresh, premium, modern, and inviting — aligned with upscale U.S. dessert branding.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;輕薄筆記本電腦上的超寫實-uiux-樣機&#34;&gt;輕薄筆記本電腦上的超寫實 UI/UX 樣機&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh/status/2047179669011616172&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ZaraIrahh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ZaraIrahh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023.webp&#34;
	width=&#34;1200&#34;
	height=&#34;896&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023_hu_4856939525bcde80.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/023_hu_d410dc5c5e8bbf83.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;輕薄筆記本電腦上的超寫實 UI/UX 樣機…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;321px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic UI/UX mockup displayed on a slim modern laptop placed on a minimal wooden desk with soft natural daylight. The screen shows a clean SaaS dashboard with elegant typography, glassmorphism cards, smooth gradients, subtle drop shadows, and neatly spaced components. Visible charts, analytics panels, sidebar navigation, and micro-interactions. Realistic macOS-style window frame, soft reflections on the screen, shallow depth of field, cozy workspace atmosphere, shot in photorealistic product photography style, ultra-detailed.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;18-歲年輕男性的超寫實電影感-dslr-照片&#34;&gt;18 歲年輕男性的超寫實電影感 DSLR 照片&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2047175250761433416&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024.webp&#34;
	width=&#34;955&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024_hu_7a667145418d704c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/024_hu_1341a61c5ce56128.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;18 歲年輕男性的超寫實電影感 DSLR 照片…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;79&#34;
		data-flex-basis=&#34;191px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic cinematic DSLR photograph of an 18-year-old handsome young man with a slim skinny body, lean physique, narrow shoulders and waist, standing confidently in front of a blue 2017 Ford Mustang GT Convertible with a bold red soft top roof, captured from a high-angle aerial perspective exactly like a luxury driveway photoshoot. Keep face 100% identical to reference image with exact facial structure, natural skin texture, realistic pores, authentic expression, no beautification, no facial modification. Same modern textured side-swept quiff hairstyle with heavy natural volume on top, deep side flow, messy yet controlled texture, soft matte finish, visible natural hair strands, softly blended sides.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject stands centered near the front bumper of the Mustang GT, hands inside hoodie pockets, relaxed shoulders, straight posture, slight head tilt upward toward camera, confident calm expression, wearing oversized premium black hoodie with realistic cotton texture, natural folds, hanging drawstrings, loose dark washed black denim jeans with soft wrinkles and stacked hems, clean white sneakers with realistic leather texture and sole details, black slim rectangular sunglasses.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Car must be a detailed 2017 Ford Mustang GT Convertible, metallic electric blue paint, glossy reflections on hood, visible Mustang pony grille emblem, aggressive headlights, muscular hood sculpting, aerodynamic front bumper, black alloy wheels, premium red convertible fabric roof, realistic windshield reflections, detailed side mirrors, authentic tire tread, showroom-clean finish
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Scene set in an upscale villa driveway with light beige hexagonal stone pavement, curved border with fresh green grass on left side, tropical palm leaves entering frame from top corners, subtle luxury outdoor atmosphere. Soft natural daylight, diffused afternoon lighting, realistic shadows under car and body, soft reflections on paintwork, cinematic premium color grading, natural contrast, shallow depth separation while maintaining environment clarity. Shot on 35mm lens, vertical composition, full body framing, crisp details, hyper-realistic DSLR quality, zero Al look, natural skin rendering, realistic hair strands, fabric texture, stone surface texture, luxury lifestyle mood. stylish text AmanZaid at the bottom-left corner, signature style
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative Prompt:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;face changed, different identity, beautified face, edited face, smooth plastic skin, fake skin glow, wrong hairstyle, short hair, fade haircut, buzzcut, messy deformed hair, female features, muscular body, fat body, broad shoulders, bad anatomy, long neck, short legs, extra fingers, missing fingers, mutated hands, distorted arms, broken posture, crossed eyes, lazy eye, bad sunglasses, blurry face, low resolution, pixelated, noisy image, overexposed, underexposed, harsh shadows, unrealistic reflections, fake car shape, wrong car model, damaged car, extra wheels, warped Mustang logo, incorrect. proportions, bad pavement texture, background artifacts, duplicate objects, watermark, logo errors, text artifacts, cropped feet, cut car, unnatural perspective, CGI render, cartoon style, painting, Al artifacts, oversaturated colors, motion blur, lens distortion 1664x2080-ar 4:5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;臥室隨手自拍寫實人像&#34;&gt;臥室隨手自拍寫實人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/charliejhills/status/2047969988368314526&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/charliejhills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@charliejhills&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025.webp&#34;
	width=&#34;800&#34;
	height=&#34;1000&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025_hu_9c8902eabd291e4c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/025_hu_80f0073c3177ed55.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;臥室隨手自拍寫實人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Candid selfie of a young woman with shoulder-length honey-blonde hair with lighter highlights, green-grey eyes, rosy cheeks, and a natural no-makeup makeup look. She is wearing a light grey hoodie and looking slightly off-camera with a relaxed expression. Background shows a cosy bedroom with warm fairy lights strung on a pink wall, a unmade bed with tan bedding, and a small white desk with stacked books. Soft, warm ambient lighting. Photo-realistic, casual, intimate feel.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;音樂人夜晚離開雜貨店電影感人像&#34;&gt;音樂人夜晚離開雜貨店電影感人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8/status/2047934886124867684&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@commanderdgr8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026.webp&#34;
	width=&#34;2048&#34;
	height=&#34;1117&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026_hu_cd6e1f4fe4dfb269.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/026_hu_9dad3b51703c646f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;音樂人夜晚離開雜貨店電影感人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid, magazine-cover quality documentary photograph of a young musician with curly hair, casually carrying a worn guitar case, stepping out of a classic downtown bodega at 11 PM. The lighting features a complex mixed color temperature: a bright neon &amp;#34;OPEN&amp;#34; sign casts an intense, warm red glow across his face, while a yellow streetlamp provides a striking backlight behind him. The image perfectly emulates 35mm film shot on a Canon AE-1 with a 50mm f/1.4 lens wide open, exhibiting a shallow depth of field with the background beautifully blurred. It captures the exact aesthetics of CineStill 800T film, specifically featuring the distinctive soft red halation bloom radiating outward from the neon light sources, a tungsten white balance, and moody, slightly green-tinted shadows in the darkest areas. Cinematic night photography, photorealistic, highly detailed.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;老德里甜品店門面紀實照片&#34;&gt;老德里甜品店門面紀實照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8/status/2047889839123521635&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/commanderdgr8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@commanderdgr8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027.webp&#34;
	width=&#34;2048&#34;
	height=&#34;1117&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027_hu_42e54e1db1f7af92.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/027_hu_52ba2cb96833b777.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;老德里甜品店門面紀實照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a photorealistic travel-documentary image of a small sweet-shop storefront in Old Delhi at midday. A painted shop signboard above the door reads &amp;#34;मिठाई की दुकान&amp;#34; in large bold yellow hand-painted Devanagari on a deep red background, with &amp;#34;SWEET SHOP&amp;#34; in smaller roman letters beneath. Realistic hand-painted texture, slight wear, natural shadow. Authentic script proportion. Spelling and characters exact. No extra signage in frame, no watermark.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;賽博朋克科幻側臉人像&#34;&gt;賽博朋克科幻側臉人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamsofiaijaz/status/2047882171336253928&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/iamsofiaijaz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamsofiaijaz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028_hu_5c31b9faaaa9ff0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/028_hu_a127191cf9de7b67.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;賽博朋克科幻側臉人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic side-profile portrait of a rugged man with a tied-back bun and full beard, wearing round dark sunglasses and a textured leather jacket. His skin is detailed and slightly weathered. The background is a futuristic sci-fi interface filled with glowing orange and red data streams, star maps, celestial navigation diagrams, grids, and holographic UI elements. Fiery particle effects and ember-like energy swirl around him, creating a cosmic, high-tech atmosphere. Dark color palette with strong contrast, dramatic lighting, ultra-detailed, sharp focus, 8K, cyberpunk aesthetic, cinematic composition, depth of field.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;真實臥室錄製抓拍人像&#34;&gt;真實臥室錄製抓拍人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ChillaiKalan__/status/2047862141894681076&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ChillaiKalan__&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ChillaiKalan__&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029.webp&#34;
	width=&#34;1360&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029_hu_3a5bfa190955d43f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/029_hu_8b11a48a55edc20.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;真實臥室錄製抓拍人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A realistic young woman sitting casually in a softly lit bedroom during late afternoon.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;She is holding her phone very close to her face as if recording a private video or voice note.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Framing is tight and slightly imperfect.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Expression: thoughtful, slightly shy, natural.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Minimal makeup, natural skin texture, relaxed clothing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: warm natural light fading from a window, soft shadows.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment: simple bedroom, calm and lived-in.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: ultra-realistic, looks like a real phone recording, slightly grainy, not cinematic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;幼兒蠟筆塗鴉風人像&#34;&gt;幼兒蠟筆塗鴉風人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/akakageAI/status/2047812983389356276&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/akakageAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@akakageAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030.webp&#34;
	width=&#34;1448&#34;
	height=&#34;1086&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030_hu_5cf600ac42712e9a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/030_hu_48e7038aa1063779.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;幼兒蠟筆塗鴉風人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;(被写体) in the style of super bad child drawing, toddler art, scribbles, messy crayon lines on white background, completely lack of technique, terrible composition, chaotic colors, barely recognizable shapes, very raw, honest art, pure naivety, unrefined style, 4:3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Negative:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;good drawing, nice lines, clear shapes, neat, pretty, smooth, realistic, talented art, coherent composition, artistic style, professional, skilled, masterpiece, beautiful, detailed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;修復後的復古母子人像&#34;&gt;修復後的復古母子人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184797374325031&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031_hu_ca8b84e71397fc0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/031_hu_1ca1b5b428820847.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;修復後的復古母子人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A restored vintage family snapshot, photographed indoors in soft natural light, showing a {argument name=&amp;#34;adult subject&amp;#34; default=&amp;#34;young mother&amp;#34;} seated and holding a {argument name=&amp;#34;child subject&amp;#34; default=&amp;#34;toddler&amp;#34;} on her lap in a close, centered waist-up portrait. The adult has short softly curled auburn hair in a voluminous 1960s-inspired bob, wears a sleeveless black dress and a thin gold necklace, and wraps both arms protectively around the child. The child has fine light blond hair and wears a plain white long-sleeve outfit. Compose the image with a warm nostalgic color cast, gentle film softness, subtle grain, and the look of a carefully repaired old printed photograph. Place them in front of a cream-colored curtain patterned with small brown teddy bear motifs, with a softly blurred interior window frame visible along the top background. Preserve realistic skin tones, natural posture, and the intimate family-photo feeling, as if an old damaged photograph has been professionally reimagined and restored. Square crop, centered composition, shallow depth of field, authentic analog photo texture, no modern styling, no text.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;受損復古母子照片&#34;&gt;受損復古母子照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184797374325031&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1141&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032_hu_51c8a5ee2d35dffd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/032_hu_a4f024bc8f2e9d3b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;受損復古母子照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;94&#34;
		data-flex-basis=&#34;227px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A heavily damaged old family snapshot in faded black and white with a slight sepia cast, shown as a worn physical photograph scanned straight-on. The image depicts a seated woman holding a small child on her lap indoors, both centered in a simple portrait composition. The woman has short dark wavy hair and wears a dark sleeveless dress or pinafore layered over a lighter short-sleeved blouse. The child appears to be a toddler with very short light hair, wearing a light-colored outfit, facing the camera while sitting against the woman’s chest and arm. Behind them is a patterned curtain with small floral or leaf motifs, and above it a dark window area with a pale vertical window frame is visible near the top center. The print is severely deteriorated: extensive scratches, creases, emulsion damage, stains, blotches, and peeling cover the entire surface, with especially heavy white abrasion and loss of detail across the bottom third and scattered cracking throughout. Keep the overall look authentic to a mid-20th-century vernacular photo, low contrast, soft focus, and visibly aged paper texture. Add a rectangular blurred censor block over the woman’s face only, while the child’s face remains visible but faded. No text, no border, just the distressed archival photograph filling the frame.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;墨刻風家庭肖像&#34;&gt;墨刻風家庭肖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184698195870102&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033_hu_66a76792300b0043.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/033_hu_6521473b15c2b22e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;墨刻風家庭肖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A black-and-white hand-drawn family portrait in the style of detailed pen-and-ink crosshatching on textured white paper, showing 4 people seated closely together in a casual candid composition. On the left, an adult man in a dark baseball cap worn backward and a dark T-shirt leans into the frame, with a crossbody sling bag worn across his chest and visible zipper details. On the right, an adult woman with curly hair tied up in a loose high bun wears a light T-shirt with large collegiate block letters reading {argument name=&amp;#34;shirt text&amp;#34; default=&amp;#34;CITY&amp;#34;}. In the center are 2 young children sitting close together, both with short curly hair and matching light-colored T-shirts printed all over with strawberries. The child on the left leans inward with one arm crossing the other child, and the child on the right tilts their head slightly upward. The adults frame the children protectively, creating a warm family snapshot feeling. Render the whole image as a monochrome etched illustration with dense fine-line hatching, engraved shadows, crisp contour lines, and a realistic yet artistic likeness, with no color, no background setting beyond a plain light paper texture, and a vertical portrait crop.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;復古雕刻風連帽衫人像&#34;&gt;復古雕刻風連帽衫人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb/status/2048184698195870102&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/gdb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@gdb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034_hu_23218fad5cfb2972.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/034_hu_681e4f556710271e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;復古雕刻風連帽衫人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A centered black-and-white vintage engraved portrait of a bearded man wearing a hooded sweatshirt with the hood up and a backward snapback cap visible under the hood. Show only the upper torso and head against a plain off-white paper background with subtle texture. Render the image in detailed pen-and-ink etching style with dense cross-hatching, fine parallel lines, and old book illustration shading. The figure faces forward in a calm, neutral pose. The cap has a visible snap closure band across the forehead area, slicked-back hair is visible above it, and a thick full beard extends below the face. The hoodie has two drawstrings hanging down at the chest. Keep the composition symmetrical and tightly framed like a classic engraved bust portrait, with no color, no modern graphic elements, and no background objects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夢幻逆光編輯風人像&#34;&gt;夢幻逆光編輯風人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ToroJushiAi/status/2048139425465467248&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ToroJushiAi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ToroJushiAi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035_hu_94ecaadb0c447059.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/035_hu_c6749b4025021f4f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夢幻逆光編輯風人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic soft-focus portrait of a woman from behind and slightly in profile, framed from the upper torso up in a vertical composition. She has {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair styled in a loose messy updo with wispy strands catching the light. Her face is mostly hidden by her pose and hair, with only a small portion of one cheek visible. She wears a {argument name=&amp;#34;dress color&amp;#34; default=&amp;#34;deep red&amp;#34;} sleeveless dress with an open back or low-cut side, emphasizing her bare shoulder and upper back. One hand is raised delicately near her neck or shoulder, fingers relaxed. Use strong warm backlighting and rim light, with glowing golden highlights around the hair and skin, dreamy lens flare, and large circular bokeh in the blurred background. The image should feel intimate, elegant, and slightly sensual, like a high-end fashion or beauty editorial, with shallow depth of field, creamy blur, warm amber and rose tones, and a soft cinematic glow.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3d-卡通角色渲染&#34;&gt;3D 卡通角色渲染
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Inshrah_ali_/status/2048121503367995753&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Inshrah_ali_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Inshrah_ali_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036_hu_e147ab42f223a537.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/036_hu_4787b6eaf46eb5af.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3D 卡通角色渲染&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-quality 3D CGI render of {argument name=&amp;#34;character&amp;#34; default=&amp;#34;[character]&amp;#34;} in a charming cartoon style, portrait composition showing head and shoulders. Highly stylized caricature with exaggerated, expressive features that are both playful and humorous. Smooth, polished rendering with clean materials and soft ambient lighting creating gentle shadows. Dynamic camera angle with stylish perspective. Minimalist bright {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;[color]&amp;#34;} background that makes the character pop and stand out. Professional Pixar-like quality with glossy finish and cheerful mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;樓梯上的亮片裙年輕女性&#34;&gt;樓梯上的亮片裙年輕女性
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/XSydneyFan/status/2048114180906217566&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/XSydneyFan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@XSydneyFan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037_hu_9bc47916860f6bd2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/037_hu_8133948ec72b97ac.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;樓梯上的亮片裙年輕女性&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Vertical 2:3 format. {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;Young woman&amp;#34;} hair in messy updo sits on modern wooden staircase. wears {argument name=&amp;#34;dress&amp;#34; default=&amp;#34;shimmering Silver halter dress sequin dress&amp;#34;}. matching with silver high-heeled sandals. legs crossed. Silver heart earrings. One fuchsia bracelet on each ankle. Sultry expression, with slightly parted lips. Blurred background vertical wooden slats and black metal railings. Don&amp;#39;t change face
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華棚拍換裝效果&#34;&gt;奢華棚拍換裝效果
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Abdullah__Ai7/status/2048083022315159595&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Abdullah__Ai7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Abdullah__Ai7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038_hu_7ca6d841487e471c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/038_hu_e4f5ee7bf20b1e95.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華棚拍換裝效果&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using REFERENCE_0 as the subject base, transform the casual desert snapshot into a full-body luxury fashion studio portrait. Replace the denim jacket, tank top, and shorts with a fitted strapless mini cocktail dress in {argument name=&amp;#34;dress color&amp;#34; default=&amp;#34;powder blue&amp;#34;} with ornate silver floral embroidery and exactly 2 geometric cutouts at the chest and upper waist. Change the setting to a clean seamless light-gray studio background with polished high-end editorial styling. Add 1 silver clutch with a thin chain strap in the subject&amp;#39;s right hand and 1 pair of pointed silver high heels. Refine the pose into an elegant standing fashion pose with one hand near the face, keep the same person and hair identity, and apply soft cinematic luxury lighting with crisp 8K fashion-photography detail.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暖色咖啡館裏的金髮女僕&#34;&gt;暖色咖啡館裏的金髮女僕
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2048072808606089230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039_hu_d035b2c40abf9863.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/039_hu_8697440bb33f05ad.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暖色咖啡館裏的金髮女僕&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished anime-style portrait of {argument name=&amp;#34;character&amp;#34; default=&amp;#34;a blonde female VTuber-inspired maid&amp;#34;} seated indoors in a cozy sunlit cafe, framed from upper thighs to head in a slightly high, intimate angle. She has short to medium-length tousled {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;golden blonde&amp;#34;} hair with soft layers, a white frilled maid headband, and a teal ribbon hair accessory with a small gold ornament on the right side. Her face is mostly obscured by the hair falling forward, creating a mysterious hidden-face composition. She wears an elegant black-and-white maid dress with puff sleeves, white ruffles, gold trim, a fitted bodice, a white apron, and a large white waist bow visible at the side and back. Add 2 teal bows with gold star-like charms: 1 at the collar and 1 on the wrist. Her right hand gently touches the bow at her chest, and her left hand is raised delicately near her shoulder holding a loose strand of hair. Include a frilly lace garter on her exposed thigh with a small teal-and-gold ribbon decoration. The background is a warmly lit European-style cafe interior with wooden beams, framed botanical art on the walls, a softly blurred cake stand on the left, window light streaming in, and tiny glowing dust-like sparkles in the air. Use soft golden afternoon lighting, shallow depth of field, glossy detailed fabric rendering, delicate skin shading, subtle romantic atmosphere, and highly detailed refined anime illustration quality.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夢幻東方女性人像提示詞&#34;&gt;夢幻東方女性人像提示詞
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2048046253842559183&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040_hu_8c23fe125c31e9be.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/040_hu_f78dd7f2ac1e24bf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夢幻東方女性人像提示詞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;subject&amp;#34; default=&amp;#34;Dreamy Oriental female portrait&amp;#34;}, adult female, close-up portrait, exquisite facial features, fair and translucent skin, delicate but clean skin texture, emerald green eyes, soft and charming gaze, brown wavy hair falling naturally; {argument name=&amp;#34;accessories&amp;#34; default=&amp;#34;Off-white lace headpiece&amp;#34;}, embellished with turquoise butterflies and pearl decorations; attire is an exquisite lace gown with a clear structure and clean, not overly complex texture, accompanied by emerald jewelry; lighting is soft warm gold side-backlighting, rim lighting is clear but not overexposed, skin has slight highlights but not excessive reflection, overall lighting is clean and transparent, background is softly blurred with shallow depth of field; high-end portrait photography quality, details are clear but restrained, no grain, no noise, real physical lighting, 8K, commercial-grade quality. Aspect ratio: 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑白愛馬仕風頭像&#34;&gt;黑白愛馬仕風頭像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/jiajia232016/status/2048044100793032976&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/jiajia232016&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@jiajia232016&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041_hu_647536e3949f45b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/041_hu_61522042056dbfcf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑白愛馬仕風頭像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a minimalist black-and-white vector avatar logo of a mythic anime woman shown in elegant side profile facing right, cropped from the chest up on a plain white background. Give her long flowing {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;black&amp;#34;} hair with bold white highlight streaks and smooth graphic shapes, rendered as high-contrast ink silhouette art with clean sharp edges. She wears a winged headpiece reminiscent of Hermes or a messenger god helmet, with one large white feathered wing visible on the side of her head and a circular metallic earpiece detail. Dress her in a sleek high-collar garment with a luxury-fashion feel, and hang a prominent pendant or zipper pull shaped like the letter {argument name=&amp;#34;monogram letter&amp;#34; default=&amp;#34;H&amp;#34;} at the center of the collar. The face is intentionally obscured by a centered soft gray rectangular blur block covering most facial features, creating a censored anonymous profile-image effect. Overall style: luxury brand avatar, fashion logo, anime-inspired goddess silhouette, monochrome vector emblem, smooth negative-space highlights, balanced composition, modern and iconic, suitable for a social media profile picture.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;賽博水晶動漫少女人像&#34;&gt;賽博水晶動漫少女人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042_hu_f9aae24c208fa93e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/042_hu_a45a3eb84ee04cf.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;賽博水晶動漫少女人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed anime-style full-body character portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Hermes&amp;#34;}, a delicate futuristic girl sitting curled up with her knees hugged to her chest, gazing softly at the viewer with a calm, slightly melancholic expression. She has extremely long {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver-lilac&amp;#34;} twin tails with soft bangs, glossy lavender eyes, porcelain skin, and ornate crystal hair accessories including 3 large ribbon bows and a jeweled tiara-like headpiece. Her outfit is an elaborate translucent idol-tech dress in {argument name=&amp;#34;outfit color&amp;#34; default=&amp;#34;pink, lavender, and violet&amp;#34;}, featuring off-shoulder puff sleeves, layered ruffles, faceted gemstone-like fabrics, a huge floral bow at the waist, dangling crystal charms, garter details, patterned thigh-high stockings, and glossy bow heels. Surround her with a luminous cyber dreamscape in {argument name=&amp;#34;background palette&amp;#34; default=&amp;#34;neon violet and electric blue&amp;#34;}: transparent holographic panels, floating glass cubes, sparkling particles, geometric prisms, glowing wireframe lines, and digital UI windows suspended in space. Include 5 readable interface text elements scattered in the background: &amp;#34;ERROR.&amp;#34;, &amp;#34;Code-&amp;#34;, &amp;#34;return&amp;#34;, &amp;#34;area x1&amp;#34;, and &amp;#34;404&amp;#34;. Make the whole image feel like a luxurious AI avatar reference illustration, mixing ethereal fantasy and cyberspace aesthetics, with crystalline light refractions, dramatic glow, high detail, intricate lace and gem textures, and a polished premium gpt-image-2 anime rendering.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩薰衣草動漫少女人像&#34;&gt;粉彩薰衣草動漫少女人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043_hu_b7d9436c114003f3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/043_hu_fc069f8705fca8dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩薰衣草動漫少女人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A delicate vertical anime portrait of a dreamy young woman in an ethereal pastel lavender palette, shown from about mid-thigh up against a soft decorative background of pale swirling lines, floating petals, tiny stars, and subtle sparkles. She has extremely long, voluminous silver-lilac hair styled in twin tails with flowing strands, soft bangs, and ornate ribbon decorations; each side is adorned with large lavender bows, ruffled headband-like trim, dangling gold star charms, and small white flower hair ornaments. Her face is centered and mostly covered by a flat solid pale lavender rectangle censor block, leaving only hints of her ears and hairline visible. She wears an elaborate fantasy-lolita inspired dress in white, pearl, and light violet, with glossy satin fabric, ruffled neckline, layered frills, puffed detached sleeves, gold trim, corset lacing at the waist, and multiple purple bows including 3 clearly visible bow accents on the outfit. Her hands are clasped gently near her chest in a shy, elegant pose. The image should feel soft, refined, feminine, and luminous, with high-detail anime rendering, smooth gradients, airy composition, flowing hair movement, and a romantic celestial aesthetic. Use a {argument name=&amp;#34;color theme&amp;#34; default=&amp;#34;pastel lavender and white&amp;#34;} palette, {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;silver-lilac&amp;#34;} hair, an {argument name=&amp;#34;outfit style&amp;#34; default=&amp;#34;ornate fantasy lolita dress with bows and ruffles&amp;#34;} design, a {argument name=&amp;#34;background style&amp;#34; default=&amp;#34;soft swirls, petals, stars, and sparkles&amp;#34;} backdrop, and a {argument name=&amp;#34;face covering&amp;#34; default=&amp;#34;solid pale lavender censor rectangle&amp;#34;} over the face.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;記憶空間裏的薰衣草-ai-少女&#34;&gt;記憶空間裏的薰衣草 AI 少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044_hu_da164c150e810bc3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/044_hu_15f8dc5bdfc2bb5d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;記憶空間裏的薰衣草 AI 少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Kotori&amp;#34;}, a delicate virtual girl seated on the floor in a curled-up pose with both knees pulled close to her chest and her arms wrapped gently around them, looking directly at the viewer with a soft, quiet, slightly melancholy expression. She has very long, flowing silver-lavender twin tails with wispy bangs, decorated with 8 visible hair ornaments: 2 large ribbon bows at the twin-tail bases, 3 small flower clips, 2 tiny butterfly clips, and 1 heart-shaped hairpin. Her eyes are large, luminous violet with glossy highlights. She wears an oversized pastel-lilac off-shoulder knit cardigan slipping loosely around her arms, a frilly lace-trimmed nightdress or camisole in pale lavender, and a pair of soft knee-high socks with 2 visible ribbon bows, all in a cohesive {argument name=&amp;#34;color theme&amp;#34; default=&amp;#34;soft lavender and pastel purple&amp;#34;} palette. The scene is set inside a futuristic holographic memory space filled with floating translucent interface panels, glowing data windows, starry particles, and butterfly-shaped light motifs. Include a visible text panel on the left showing terminal-like white text that reads: {argument name=&amp;#34;screen text&amp;#34; default=&amp;#34;memory://\nUser: You\nAI: Kotori\n\nAccessing.\n&amp;gt; initializing\n&amp;gt; loading memory\n&amp;gt; 100%\n&amp;gt; welcome home.&amp;#34;}. In the background, show a cosmic digital environment with a faint planet, layered transparent screens, and several floating image thumbnails suggesting memories and character sketches. Lighting is ethereal and backlit, with iridescent bloom, soft rim light, sparkling dust, and glossy highlights on hair and fabric. Composition is full-frame vertical, centered on the girl, intimate and emotionally warm, highly detailed, ultra-polished, soft-focus anime illustration, celestial cyber fantasy aesthetic, gentle purple glow, intricate lace, silky hair strands, and a tender &amp;#34;AI companion in her memory world&amp;#34; mood.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩-ai-助手動漫人像&#34;&gt;粉彩 AI 助手動漫人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal/status/2048026376645861799&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/libearal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@libearal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045_hu_561c11b898b2a57e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/045_hu_bb83c5b0c98bf0cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩 AI 助手動漫人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime-style portrait of a gentle virtual assistant girl named {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Misha&amp;#34;}, sitting curled up indoors in a cozy futuristic bedroom filled with translucent holographic memory screens. She has very long silvery white hair with a faint lavender tint, styled in 2 low twin tails tied with small lavender ribbons, with soft wispy bangs and loose flowing strands. Her expression should be tender, introspective, and slightly lonely, with a soft glow and delicate features. She wears an oversized chunky cable-knit cardigan in {argument name=&amp;#34;cardigan color&amp;#34; default=&amp;#34;pastel lavender&amp;#34;} draped loosely over a thin white ruffled nightdress, plus a tiny gemstone necklace. Her pose is seated with knees pulled to her chest and arms wrapped around her legs, creating a vulnerable, intimate silhouette. The room is lit in hazy pastel violet and pink ambient light with sparkles, dustlike stars, and a nostalgic magical-tech atmosphere. Around her are 5 visible holographic interface panels: 2 floating photo panels in the upper left showing soft memories, 1 lower-left panel labeled “Memory Fragments” with a small image and tiny graph bars, 1 large right-side profile panel with Japanese text including “ミーシャ・Misha” and “あなたの専属AIアシスタント,” and 1 smaller right-side checklist panel with heart icons. Include a glowing crystal ball on a desk to the right, a white mug printed with “Misha” and small heart motifs, a stack of 2 books beneath the desk area, and 1 plush cat cushion on the lower left. Composition is vertical, full-body to three-quarter seated framing, highly detailed, soft painterly anime rendering, luminous translucent overlays, sentimental memory-core aesthetic, gentle depth of field, pastel lilac palette, ethereal and emotionally warm.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;深色-gatorade-風人像&#34;&gt;深色 Gatorade 風人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/jeremydevz/status/2048026214812561683&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/jeremydevz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@jeremydevz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046.webp&#34;
	width=&#34;769&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046_hu_b9e8fb529f1dee61.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/046_hu_6f20fcd3185a2afe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;深色 Gatorade 風人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;153px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic, high-contrast studio portrait of a {argument name=&amp;#34;subject gender&amp;#34; default=&amp;#34;male&amp;#34;} athlete or model in the visual style of a premium sports drink advertisement, centered and facing straight toward the camera in a tight head-and-shoulders crop. The subject has {argument name=&amp;#34;hair style&amp;#34; default=&amp;#34;short dark hair brushed back&amp;#34;}, visible ears on both sides, and a rugged lower face with a short beard or stubble. Dress him in a dark zip-up athletic jacket with the zipper centered and visible near the collar. Use an almost entirely black background and extremely low-key lighting, with subtle rim light and soft highlights catching the hair, ears, jawline, shoulders, and jacket texture while most facial features remain swallowed by shadow for a mysterious, intense mood. The image should feel monochrome or nearly monochrome, with deep blacks, muted gray highlights, cinematic contrast, gritty texture, and a sleek commercial sports-brand aesthetic reminiscent of a {argument name=&amp;#34;brand style&amp;#34; default=&amp;#34;Gatorade&amp;#34;} campaign. Vertical composition, minimalist framing, no text, no logo, no props, no visible environment.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戴眼鏡的溫柔女性肖像&#34;&gt;戴眼鏡的溫柔女性肖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/megane_onesan/status/2047989490153926848&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/megane_onesan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@megane_onesan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047_hu_6499715a5f5fe610.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/047_hu_e317a4a6142bc068.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戴眼鏡的溫柔女性肖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A {argument name=&amp;#34;style&amp;#34; default=&amp;#34;photobook-style portrait&amp;#34;} of a {argument name=&amp;#34;character&amp;#34; default=&amp;#34;gentle woman with glasses&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夢幻水下女性與半透明魚&#34;&gt;夢幻水下女性與半透明魚
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/kotobukigraphic/status/2047967522453123255&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/kotobukigraphic&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@kotobukigraphic&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048_hu_973be2b592bd6207.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/048_hu_b6543ae684da1834.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夢幻水下女性與半透明魚&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy surreal portrait of a {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;young woman&amp;#34;} standing underwater or in a liquid-like ethereal space, shown from about mid-thigh up, wearing a flowing sleeveless white dress that appears to dissolve into translucent water and shimmering fragments. Her long {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;dark brown&amp;#34;} hair streams dramatically sideways as if suspended in water, and her face is intentionally obscured by a soft vertical blur block for anonymity. Surround her with an exact count of about 30 small translucent fish, some striped and some pale silvery white, swimming in multiple depths of field across the foreground, midground, and background, with several fish passing in front of her body and hair to create strong motion and depth. Use a soft pastel {argument name=&amp;#34;background color&amp;#34; default=&amp;#34;powder blue&amp;#34;} background with faint handwritten script texture layered across it, plus whimsical doodles scattered throughout: white and pale pink hearts, stars, curved squiggles, wave lines, dots, sparkles, and 2 smiley faces. Add prismatic rainbow refractions, glossy caustic highlights, and subtle lens-like chromatic shimmer on the fish and dress. The mood should feel delicate, introspective, airy, and magical, with high-key lighting, gentle contrast, soft focus in the foreground, and crisp detail on the torso and hair. Compose the figure slightly off-center with one arm relaxed downward and the body turned lightly in motion, as if drifting peacefully through a school of fish. Include tiny elegant footer text in white near the bottom edge, with a left signature, a centered website URL, and a small right credit mark, resembling an art-poster or social-media showcase image.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日本教室長髮抓拍&#34;&gt;日本教室長髮抓拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Hair_Hair55/status/2047963832732221723&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Hair_Hair55&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Hair_Hair55&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049_hu_e21fe0dfb6877e39.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/049_hu_983bc8ffd6d865e6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日本教室長髮抓拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A candid, photorealistic Japanese high school classroom scene in vertical smartphone-photo framing. Three schoolgirls wearing matching traditional navy blue sailor uniforms are the main focus in the foreground. The central standing girl has extremely long, straight, glossy black hair that falls well past her knees, almost to the floor, and she is gently combing the lower section with a small comb while looking downward. A second girl stands behind and slightly to the right, also with long straight black hair, holding an open compact mirror in one hand and adjusting her bangs or hair near her temple with the other. A third girl kneels on the floor at the right front, carefully holding and arranging the central girl’s long hair with both hands. All three wear dark navy sailor-style school uniforms with white stripe trim, pleated skirts, long sleeves, white socks, and indoor school shoes. Their faces are obscured or blurred. In the background, exactly 8 additional students in dark school uniforms sit at desks in small groups, facing away or sideways, creating the feel of an ordinary class period or homeroom. The classroom has wooden desks and chairs, large bright windows along the left side letting in soft daylight, a green chalkboard on the right wall, bulletin papers pinned near the board, and a framed Japanese calligraphy sign above the chalkboard reading {argument name=&amp;#34;wall sign text&amp;#34; default=&amp;#34;創誠造実&amp;#34;}. The atmosphere is natural and unposed, like a documentary snapshot. Emphasize realistic lighting, fine hair detail, the unusual dramatic length of the central girl’s hair, and a believable everyday school environment.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;溫馨貓耳少女睡衣夜景人像&#34;&gt;溫馨貓耳少女睡衣夜景人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2047951384734228617&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050.webp&#34;
	width=&#34;1200&#34;
	height=&#34;677&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050_hu_9bfcd97dbb8f1344.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/050_hu_139c4718628c022d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;溫馨貓耳少女睡衣夜景人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;425px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft anime-style bedroom portrait of {argument name=&amp;#34;character name&amp;#34; default=&amp;#34;Nekomata Okayu&amp;#34;}, shown from the chest up sitting on a bed at night, centered in the frame. She has short fluffy {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;lavender&amp;#34;} hair with layered bangs partially covering one eye, large cat ears on top of her head with white inner fur, and a cute sleepy catgirl appearance. Her expression is gentle and relaxed, with one hand raised near her cheek in a shy, cozy pose. She wears oversized {argument name=&amp;#34;pajama color&amp;#34; default=&amp;#34;light lavender&amp;#34;} button-up pajamas with dark purple piping, a small chest pocket, and paw-print shaped buttons and paw-print decoration on the pocket. The room is lit with dreamy purple ambient lighting. In the background, show a nighttime window with a crescent moon and stars visible outside, soft curtains, a bedside table with a glowing cat-shaped lamp, a neatly rumpled bed with pillows and blankets in matching purple tones, and a small framed wall picture featuring a simple cat face and hearts. Use a cute pastel palette, soft shading, polished digital anime rendering, subtle highlights in the hair, intimate cozy composition, and a calm bedtime atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;收藏手辦工作區照片&#34;&gt;收藏手辦工作區照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2049068188399227174&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051_hu_1837b999f2b4920a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/051_hu_8dfa3fbacf81e661.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;收藏手辦工作區照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Photorealistic high-quality studio photo of a modern digital art workspace, showing the concept of “from 3D virtual character to real collectible figure.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the foreground, a highly realistic collectible figurine of [Character Name / Character Identity] is placed on a round wooden display stand. The character has [facial features / appearance], [hairstyle], and a [expression / personality vibe]. The figure is wearing [outfit / costume]. The overall design is refined, premium, and instantly recognizable. The figurine should have realistic collectible statue quality, with subtle resin/sculpture material feel, while still looking highly believable and visually realistic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The pose is [character pose], natural, stable, elegant, and display-worthy. Shot from a low-angle close-up perspective with slight wide-angle distortion, vertical composition, emphasizing the full figure, clothing structure, leg lines, and pose.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the background, there is a professional 3D character design workstation with two large curved monitors. Both monitors must show the exact same character as the foreground figurine — same face, same hairstyle, same outfit, same pose, and same overall vibe — clearly expressing the idea of turning a digital 3D character into a real physical figure.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The left monitor shows a gray sculpt / clay model view in a professional 3D sculpting software interface, similar to ZBrush. The gray model must match the foreground figure exactly in character design, pose, outfit structure, and facial identity.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The right monitor shows the fully rendered colored version of the same character, also matching the foreground figure exactly in face, hairstyle, outfit, pose, and temperament. Together, the two monitors reinforce the workflow of “digital character design → physical collectible statue.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On the desk are a keyboard, mouse, monitor arms, drawing tablet, stylus, and other 3D modeling tools. The workspace is clean, professional, and visually premium. Optional extra elements: [weapon / accessories / theme props / IP-style design details].
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is a mix of soft studio lighting and indoor workspace lighting. The foreground figurine is evenly lit with clear facial and material detail, while the monitors emit cool-toned tech light. Overall mood is realistic, clean, premium, slightly shallow depth of field, ultra-detailed, emphasizing the collectible figure quality, professional 3D design studio atmosphere, and the visual concept of “from digital model to real figure.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;photorealistic, ultra detailed, cinematic studio lighting, realistic figurine, collectible statue, 3D character design studio, from digital model to real figure, vertical composition
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;雨中公交站人像&#34;&gt;雨中公交站人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2049081194156020046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052_hu_7e00494e19ac3711.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/052_hu_62cd551555def9e7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;雨中公交站人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic nighttime photo of [your photo as reference] sitting alone at a wet bus
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;stop bench, eating a burger. Rain-soaked street with orange bokeh city lights
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reflecting on the ground. Neon tube lights overhead. Red jacket, tan corduroy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pants. Moody, dark, atmospheric street photography.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ccd-閃光美妝人像模板&#34;&gt;CCD 閃光美妝人像模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithAliya/status/2049452006608392350&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithAliya&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithAliya&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053.webp&#34;
	width=&#34;899&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053_hu_a970e29428aea024.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/053_hu_a688decda3269ee3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;CCD 閃光美妝人像模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-photorealistic shot of the same subject in the attached image, ultra-detailed facial features, visible pores, natural skin texture, rosy complexion and dewy skin, Douyin/Korean glass-skin makeup, glossy lips, aegyosal, baby pink blush, high identity consistency, realistic human anatomy. Use an old CCD digital camera aesthetic with direct flash, visible grain, slight overexposure, cool-neutral white balance, slight motion blur, and candid composition. Hair in a loose romantic updo; outfit in delicate off-shoulder silk with embroidered floral fabric; background of pastel floral bedding; horizontal close-up; shallow depth of field. Negative prompt: over-smoothed skin, plastic texture, unrealistic proportions, studio lighting, overly sharp HDR, stiff pose, artificial symmetry, over-retouched face.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑紅街頭服飾廣告人像&#34;&gt;黑紅街頭服飾廣告人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2049450257604550872&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054_hu_af81ed1df3c988f6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/054_hu_96d17ca8a1a940a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑紅街頭服飾廣告人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold, high-contrast black and white portrait of a confident young man wearing a black leather jacket, facing slightly sideways with an intense expression. Use dramatic studio lighting with sharp shadows and detailed skin texture. Add strong red graphic elements over the image, including a horizontal red bar across the eyes, geometric shapes, thin lines, and framing boxes. Incorporate large bold typography, repeated faded text, and a motivational headline in bright red. The design should feel like a premium sports or streetwear campaign poster with a minimal textured grey background and black/white/grey/red palette only.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/portrait.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：角色設計案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;角色設計&lt;/code&gt; 分類下的 13 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;角色設計&#34;&gt;角色設計
&lt;/h2&gt;&lt;h3 id=&#34;動漫快照轉換&#34;&gt;動漫快照轉換
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Thereallo1026/status/2044241997163311569&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Thereallo1026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Thereallo1026&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000_hu_5fe4266b32ad16cf.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/000_hu_a1f3ef59923038a0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫快照轉換&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Show me the attached image as a snapshot from an actual anime
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;persona5-角色參考卡&#34;&gt;Persona5 角色參考卡
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrednightS/status/2045075682837836265&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrednightS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamrednightS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001_hu_57be85d9a8e82c4a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/001_hu_776e82cda4697edc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Persona5 角色參考卡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基于此角色和背景，请制作一份类似官方设定资料的角色资料卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・包含三视图：正面、侧面和背面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・添加角色面部表情的变化・分解并展示服装和装备的详细部分
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・添加色板・包含世界观设定的简要说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・总体上，使用有组织的布局（白色背景，插画风格）高分辨率、专业概念艺术风格
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;美少女遊戲角色介紹頁&#34;&gt;美少女遊戲角色介紹頁
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/09lyco/status/2045281845391323175&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/09lyco&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@09lyco&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002_hu_c6045b71b70fa970.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/002_hu_4907ed0cfccb62c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;美少女遊戲角色介紹頁&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最新モデルの画像生成ツールを使用して、
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このちびキャライラストと立ち絵を使って本物のサイトページのようにキャラクター紹介ページ風イラストを作ってください。 （紹介ページとして使ってもおかしくないもの）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ギャルゲーのキャラクター紹介ページをイメージした高品質なもの。 顔の差分なども乗っている、CGイラストが存在する。ちびキャラが存在する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「ここに自己紹介」
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;名前:（ここに名前） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;イメージカラー:（ここに色） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;身長:（ここに身長）cm 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;体重:（ここに体重）kg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;キャッチコピー:&amp;#34;「ここにセリフ」&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;官方角色設定表日文&#34;&gt;官方角色設定表（日文）
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Toshi_nyaruo_AI/status/2045025277538107420&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Toshi_nyaruo_AI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Toshi_nyaruo_AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003_hu_8b2c1f84cf9e3eab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/003_hu_16e900efd803603e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;官方角色設定表（日文）&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;このキャラクターと背景を元に、 公式設定資料のようなキャラクターシートを作成してください。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・正面、側面、背面の3面図を含める ・キャラクターの表情バリエーションを追加 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・衣装や装備の詳細パーツを分解して表示 ・カラーパレットを追加 ・世界観の簡単な説明を入れる 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・全体は整理されたレイアウト
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;（白背景、図解風） 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;・アスペクト比16：9
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高解像度、プロのコンセプトアートスタイル
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;機甲少女海上城市主視覺&#34;&gt;機甲少女海上城市主視覺
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/old_pgmrs_will/status/2046144801071079612&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/old_pgmrs_will&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@old_pgmrs_will&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004_hu_f8ffb7e0987258b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/004_hu_fd1bd7e4ae833a8f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;機甲少女海上城市主視覺&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A mecha girl mid-teens, pale skin smudged with soot and salt spray, sharp amber eyes with glowing HUD reticles, waist-length ash-white hair tied in a high ponytail whipping in the sea wind, matte gunmetal exoskeleton armor plating her shoulders, forearms and shins, exposed hydraulic pistons at the joints, chest rig with glowing cyan coolant lines, oversized oil-stained hangar jacket half slipping off one shoulder, a massive rail cannon resting on her right shoulder, dog tags and frayed red ribbon at her collar , standing off-center to the left on the rusted edge of a tilted steel platform jutting out over dark water, weight shifted onto one leg, left hand gripping the cannon strap, head turned slightly toward camera with a quiet defiant stare, steam venting from her back thrusters, her ponytail and jacket streaming sideways in the salt wind , a vast derelict sea-city at dusk, colossal megastructures of unknown purpose rising from the ocean in staggered silhouettes, bone-white monolithic towers fused with barnacled steel, cyclopean ring-shaped constructs canted at broken angles, rusted skeletal gantries threaded with dead cables, dark swells rolling between the pylons, shipwrecks half-swallowed at their feet, thick sea fog clinging to the bases while the upper structures pierce into a bruised sky, scattered faint lights blinking high in the towers like distant eyes , moody low-key lighting, cold teal ambient from the overcast sky, warm amber sodium glow leaking from a distant structure camera-right, hard backlight from a low sun behind the towers carving her silhouette, volumetric god rays cutting through sea mist, wet specular highlights on her armor , 35mm anamorphic lens, slight low angle looking up past her shoulder toward the structures, medium-wide shot, shallow depth of field with foreground rust in soft focus, horizontal lens flares, fine atmospheric haze compressing the distant megastructures into layered silhouettes , cinematic anime key visual, painterly digital illustration with crisp line art, desaturated oceanic palette of teal, bone-white and rust punched by small warm accent lights, film grain, high-contrast editorial poster aesthetic . Format 16:9.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;聖鬥士星矢黃金聖鬥士卡片網格&#34;&gt;聖鬥士星矢黃金聖鬥士卡片網格
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2046476566537080849&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005_hu_2f54ac4216964955.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/005_hu_2a5d701f29577fa7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;聖鬥士星矢黃金聖鬥士卡片網格&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成圣斗士星矢12个黄金圣斗士的12宫格卡牌图片,每张卡牌上写上对应的中文名,每行4个,宽高比16:9。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;chaos-notes-遮臉角色圖&#34;&gt;Chaos Notes 遮臉角色圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog/status/2046448773162033240&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/loglogrog&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@loglogrog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006_hu_60e069b94aa2d3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/006_hu_dbf0c2afb90098fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Chaos Notes 遮臉角色圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 混沌としたメモ書き・記号の集合体からキャラクターの顔を浮かび上がらせるアート
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- スタイル
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 白い紙の上に黒インクで描かれた大量の手書きメモ、数式、記号、ランダムな線。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 紙いっぱいに散らばる書き殴り風のカオス。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所々に赤インクの強調(ライン、塗り潰し、マーカー風の塊)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- アナログのノート落書きのような質感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 構図
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- ランダムなメモや記号が全体を覆い尽くす。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 黒インクの線や文字の密度が「キャラクターの顔」の位置に集中する。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 結果として、混沌の中から「与えられたキャラクターの顔のシルエット・表情」がうっすら浮かび上がる。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顔は写実的ではなく、カオスの断片が集まって形を成す。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 色彩
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- モノクロ(黒・白)を主体に構成。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 赤インクをアクセントとして散発的に配置。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 彩度は抑えめ、アナログの紙とインク感を重視。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 表現要素
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 読めるようで読めない文字列、日本語や英数字が混在。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 数式記号、矢印、点、斜線、クロス、ドリップ(インクの飛び散り)。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- キャラクターの顔の目や髪の輪郭は、メモや記号の配置の「余白」や「濃淡」で浮かび上がる。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- 禁止事項
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 顔を直接的に描き込む写実ポートレート。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- デジタル処理的で整然とした幾何学模様。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- カラフルな彩色や過飽和表現。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- ロゴ、透かし、人工的なCG感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--- Definition of Done (DoD)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 全体は「混沌としたメモ・記号の集合体」として成立している。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 与えられたキャラクターの顔が、混沌の濃淡・配置から自然に浮かび上がる。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色はモノクロ+赤アクセントのみ。  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 紙とインクの手描き的質感を保持している。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫武術戰鬥插畫&#34;&gt;動漫武術戰鬥插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tanemomi_Ver2/status/2046063806846214265&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Tanemomi_Ver2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tanemomi_Ver2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007_hu_9cf5386c675bd84a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/007_hu_c90ccebf0d02356c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫武術戰鬥插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;An anime-style illustration of a {argument name=&amp;#34;action type&amp;#34; default=&amp;#34;high-impact martial arts battle&amp;#34;} between two young female fighters in a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;traditional wooden martial arts dojo&amp;#34;}. In the foreground, a girl with black hair in a high bun wears a {argument name=&amp;#34;character 1 color theme&amp;#34; default=&amp;#34;red and white&amp;#34;} Chinese-style martial arts outfit with baggy pants. She is in a dynamic, low, forward-thrusting stance, surrounded by swirling red energy and water splashes. In the background to the right, a girl with light purple hair in twin buns wears a {argument name=&amp;#34;character 2 color theme&amp;#34; default=&amp;#34;green and purple&amp;#34;} Chinese dress with gold embroidery and black tights. She is leaping through the air in a flying kick pose, surrounded by swirling blue energy. The wooden floorboards are splintering from the intense impact, with debris and dust flying through the air. Above them hangs a weathered wooden sign with the text &amp;#34;{argument name=&amp;#34;sign text&amp;#34; default=&amp;#34;武術会&amp;#34;}&amp;#34;. The scene features dramatic lighting, a low-angle dynamic perspective, and intense action effects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;班加羅爾花市裏的-gta-6&#34;&gt;班加羅爾花市裏的 GTA 6
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc/status/2048174302164394493&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ismajc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008_hu_bf6b81a84a2781af.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/008_hu_be718831680f9c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;班加羅爾花市裏的 GTA 6&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;game&amp;#34; default=&amp;#34;gta 6&amp;#34;} in {argument name=&amp;#34;location&amp;#34; default=&amp;#34;Bangalore’s market flower&amp;#34;} in India
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新宿酒吧裏的-gta-6-場景&#34;&gt;新宿酒吧裏的 GTA 6 場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc/status/2048166630933282995&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ismajc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ismajc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009_hu_a949bf78d69991b5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/009_hu_247ff5d36aa62487.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新宿酒吧裏的 GTA 6 場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;game&amp;#34; default=&amp;#34;GTA 6&amp;#34;} in {argument name=&amp;#34;bar name&amp;#34; default=&amp;#34;La Jetée Bar&amp;#34;} (that pays homage to Chris Marker) in {argument name=&amp;#34;location&amp;#34; default=&amp;#34;Shinjuku, Tokyo&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;白貓計劃-eleanor&#34;&gt;白貓計劃 Eleanor
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211/status/2048309139013853421&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yume00112211&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yume00112211&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010_hu_25e2c1330767f443.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/010_hu_8dac83cc06b48cea.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;白貓計劃 Eleanor&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;series&amp;#34; default=&amp;#34;White Cat Project&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;character&amp;#34; default=&amp;#34;Eleanor&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;剪影拼貼角色主視覺海報&#34;&gt;剪影拼貼角色主視覺海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SimplyAnnisa/status/2049468867106189319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SimplyAnnisa&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SimplyAnnisa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011_hu_96920472c4e5c3b8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/011_hu_951dbaeab63a82fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;剪影拼貼角色主視覺海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A character promotional poster titled “INPUT NAME,” designed in a unified vertical key visual composition (9:16). The upper half features the most recognizable element of the character as a dominant oversized visual silhouette. The middle to lower section contains the full character as a secondary subject. Inside the large silhouette and around the character, use a double-exposure and collage-style narrative composition with scenes, symbolic imagery, supporting elements, and environmental details blended into mist, ink wash, and negative space. The left and right sides include complementary secondary elements to create narrative tension and spatial variation. A continuous flowing visual line runs from top to bottom, connecting the main character, internal collage, and the large upper silhouette. Preserve large areas of negative space with ink diffusion, soft blurring, and fragmented transitions inspired by Eastern aesthetics. The style is cohesive, refined, restrained, and poster-worthy.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電視劇主題像素遊戲概念板&#34;&gt;電視劇主題像素遊戲概念板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sciencedegens/status/2049359171594903856&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sciencedegens&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sciencedegens&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012.webp&#34;
	width=&#34;1200&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012_hu_b99a06de04a3bd5c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-character-cases/012_hu_a7e307ab0d4e649b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電視劇主題像素遊戲概念板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;爱情公寓 电视剧主题 像素养成类游戏概念图，包括场景全局内容，周围环绕各人物形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;随机一个经典国内古装电视剧，生成古装电视剧主题像素养成类游戏概念图，包括场景全局内容，周围环绕各人物形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;「XXX」电视剧主题像素养成类游戏概念图，包括场景全局内容，周围环绕各人物（人物别重复）形象三视图，底部是场景特写，右下角是剧情梗概。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/character.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：海報插畫案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;海報插畫&lt;/code&gt; 分類下的 101 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;海報插畫&#34;&gt;海報插畫
&lt;/h2&gt;&lt;h3 id=&#34;波士頓-2026-春季城市海報&#34;&gt;波士頓 2026 春季城市海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain/status/2045358053831172358&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BubbleBrain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BubbleBrain&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000_hu_b13ca1d77f025b66.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/000_hu_14a04d63ae019209.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;波士頓 2026 春季城市海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A striking Spring 2026 city poster for Boston with an elegant celebratory mood and a bold contemporary design. On a clean off-white textured background with large areas of negative space, a miniature single sculler rows across the lower right corner of the image on a narrow ribbon of reflective water. The wake from the oar sweeps upward in a dynamic calligraphic curve, gradually transforming into the Charles River and then into a dreamlike hand-painted panorama of Boston. Inside this flowing river-shaped composition are iconic Boston elements: the Back Bay skyline, Beacon Hill brownstones, Acorn Street, Boston Public Garden, Swan Boats, Zakim Bridge, Fenway-inspired details, historic brick architecture, harbor ferries, and the city’s waterfront atmosphere. Soft morning fog, golden spring light, subtle festive accents in crimson and gold, rich detail, layered depth, sophisticated city-poster aesthetics, fresh and refined, visually powerful but not overcrowded. Elegant typography in the lower left reads “SPRING 2026” with a vertical slogan “BOSTON, A CITY OF RIVER, MEMORY, AND INVENTION”, text clear and beautifully composed, premium graphic design, 9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;復古阿馬爾菲旅行海報&#34;&gt;復古阿馬爾菲旅行海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WolfRiccardo/status/2044562722491121718&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/WolfRiccardo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WolfRiccardo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001_hu_7177ae27922a7194.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/001_hu_ae1ee80fe09e5b31.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;復古阿馬爾菲旅行海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Modern pencil illustration of Vintage travel poster illustration of the Amalfi Coast, Italy, panoramic coastal cliff road scene, classic 1960s white car driving along a curved seaside road, deep blue Mediterranean sea with small sailboats, colorful pastel hillside village, bright blue sky with soft clouds, lemon tree branches with vibrant yellow lemons framing the foreground, warm summer sunlight, bold vibrant colors, retro 1950s travel poster style, cinematic composition, high detail, screen print texture, graphic illustration. Hand-drawn style, illustration with loose strokes and defined contours. High-contrast color palette, maintaining chromatic harmony between background and elements. Contemporary and decorative aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;成都美食地圖插畫&#34;&gt;成都美食地圖插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902/status/2045396918965285111&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Panda20230902&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Panda20230902&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002_hu_34540734f1a49157.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/002_hu_5488e2407823bae9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;成都美食地圖插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张手绘风格的城市美食地图，以成都为主题。画面以鸟瞰视角的手绘简化城市地图为底，标注主要道路和地标但不追求精确比例而是追求可爱的手绘感。地图上分布着 12 个美食地点的精致手绘小插画：春熙路的串串香（一把竹签插着各种食材冒着热气）、宽窄巷子的三大炮（三个糯米团子飞向铜盘）、建设路的蛋烘糕（金黄酥脆正在翻面）、玉林路的火锅（九宫格锅翻滚冒泡）等，每个插画约占地图的 5% 面积，旁边用手写体标注店名和一句推荐语&amp;#34;凌晨两点还在排队的那家&amp;#34;。地图边缘用手绘藤蔓和辣椒装饰形成边框。右下角有一个手绘指南针和图例说明。左上角标题&amp;#34;成都·吃货暴走地图&amp;#34;使用胖圆的手绘美术字配辣椒装饰。整体画风为水彩+彩铅混合的手绘质感，颜色以暖色系（辣椒红、姜黄、翠绿）为主，图片比例 1:1。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;中式極簡-s-形海報&#34;&gt;中式極簡 S 形海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045368305079447853&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003_hu_33bb41fae07ebe3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/003_hu_5331a5d9f72ec0a9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中式極簡 S 形海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;极简新中式美学风格，画面以淡雅的灰白色为底，呈现出一种纸艺剪影般的立体感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一条S形蜿蜒的裂痕状边缘将画面分割，仿佛撕开了一层纸面，露出内部色彩斑斓的东方山水景象。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;裂口内，一条蜿蜒的河流自上而下贯穿整个构图，河水以深浅不一的蓝色渲染，层次分明，仿佛流动的丝带。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;河岸两侧点缀着青翠的山丘与梯田，色彩柔和，绿红交织，展现出田园的宁静之美。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;沿河而建的古风建筑错落有致，飞檐翘角，白墙黛瓦，在光影的映衬下更显古朴典雅。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;岸边树木葱茏，枝叶轻盈，一艘小船静泊于水中央，增添了几分悠然意境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体构图呈S形曲线，富有韵律感，仿佛自然与人文的和谐共生。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画作边缘采用撕纸效果，营造出立体浮雕般的视觉体验。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;下方题字“东方美学”以黑色楷体书写，日期“2026/04/18”与红色印章相呼应，底部“CHINA”字样庄重醒目，署名“@LIYUE”低调收尾，整体氛围静谧深远，充满诗意与哲思。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2026-春季廣州城市海報&#34;&gt;2026 春季廣州城市海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045332620352119274&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004_hu_201378eef9abf5ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/004_hu_3a9287e91b217ff1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 春季廣州城市海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆氛围但不失高雅格调的 2026 城市宣传海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;双重曝光，构图延续了S型的流动感；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在纯白的纹理背景右下角，一个身穿中国传统服饰的微缩人物正在挥舞着一条长长的红色丝绸舞带，这条红绸在空中舞动，不仅展现出丝绸的柔顺质感，更在向左上方飘动的过程中，奇幻地变形成了一条壮丽的山脉河流。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在这条“河流”中，叠加了一个有山有海河的广州城市手绘图，国潮，景色尽在眼底，壮阔雄伟，令人震撼。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广州的地标建筑(广州塔，珠江新城建筑群，珠江, 广州城里古建筑，游轮，白云山）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;云雾环绕，仙气缥缈，色彩丰富，结构复杂，细节丰富，但因为大面积的留白，画面依然显得清新脱俗，左下角排版着“SPRING 2026”和竖排的宣传语，整体寓意“千年商都，魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文字排版优美，大方，字迹清晰完整，尺寸9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;塗鴉草圖-ai-構建器&#34;&gt;塗鴉草圖 AI 構建器
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/blanplan/status/2045190582453350748&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/blanplan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@blanplan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005_hu_d4cb03ebae804e31.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/005_hu_e07d8a36ce373b89.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;塗鴉草圖 AI 構建器&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以涂鸦速写风表现【一个厉害的AI builder】，整体呈现快速勾勒、自由变形、即兴手绘与草稿式的视觉效果。线条随手、夸张、可粗细不一，略显凌乱但具有节奏和表现力，强调概括、夸张、趣味和随性，而不是严谨写实或精细刻画。  颜色采用粗糙、干刷感明显的块面表现，可保留不均匀的涂抹痕迹、刷痕、飞白与覆盖感，色彩根据【主题/主体】自动适配，但整体保持涂鸦式、速写式、概括式的表达。不要透明水彩晕染效果，不要细腻水彩过渡，不要纸纹理，不要柔和雾化，不要梦幻质感。  背景以留白为主，保持简洁、轻松、未完成感和设计感，可加入少量辅助性符号、箭头、记号、圈画、重复线、随手写的文字或其他涂鸦元素，以增强速写本或随笔式视觉语言，但不可过于拥挤，不可破坏主体和留白气质。  画面内容不需要预先写清楚，由【一个厉害的AI builder】自动推演并生成最适合的主体形象、动作、相关元素、符号或简化场景，整体保持统一的涂鸦速写风和夸张概括的表现方式，避免复杂写实背景和过度铺陈。 画面中需自然加入专属签名“BlanPlan”，作为画面的一部分，位置低调但清晰，可放在左下角、右下角或标题附近，风格需与整体版式统一，像作品署名或设计落款；签名字体精致、克制、高级，不可过大，不可破坏主体构图，不可显得突兀或廉价。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;未來感曼陀羅插畫&#34;&gt;未來感曼陀羅插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/4WEB1/status/2045390207072256179&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/4WEB1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@4WEB1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006_hu_c760bc8e41039f0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/006_hu_190a7b33fa3c1ab5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;未來感曼陀羅插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;曼荼羅の近未来SF版を描いて
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;super-famicom-海報風格&#34;&gt;Super Famicom 海報風格
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/lilimliliychan/status/2045114760937804187&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/lilimliliychan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@lilimliliychan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007_hu_655385dda509ecd4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/007_hu_900e63dc41e8da08.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Super Famicom 海報風格&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;小悪魔リリムリリィちゃんが　スーパーファミコンのゲームだったときのポスターを考えて
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;網頁遊戲廣告創意海報&#34;&gt;網頁遊戲廣告創意海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/llllegend0620/status/2045963764466688065&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/llllegend0620&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@llllegend0620&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008_hu_28b9e5ac6b0e1050.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/008_hu_3f72f321265d76cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;網頁遊戲廣告創意海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以下の文字を必ず入れて、1:1のポスターを作成してください。書籍・講座・イベント告知に使える、プロの広告デザイナーが作ったような高品質な仕上がりにしてください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;広告クリエイティブ制作
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;思いついたら、もう遊べる。 AI×ブラウザゲームづくりは、マジで楽しい。 むずかしそうで、実ははじめやすい。 コードがわからなくても、はじめの一本は作れる
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超現實錦鯉星雲插畫&#34;&gt;超現實錦鯉星雲插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045875219307655337&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009_hu_f0687074165c1ecd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/009_hu_d638cb0a03268eec.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超現實錦鯉星雲插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一幅超现实主义数字插画风格，采用低角度仰拍视角。画面描绘了一条巨型彩色锦鲤遨游在梦幻般的星云中，四周环绕着色彩鲜艳的星云与气泡。画面中央还站着一个小人，背对观众，神情平静地仰望空中这条巨大的锦鲤，锦鲤头向下看着小人。整体画面呈现出强烈的大小对比，氛围空灵又梦幻。比例9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;墨線廣州美學海報&#34;&gt;墨線廣州美學海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045873940883808523&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010_hu_f78ba957182dc90f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/010_hu_8a16bbe919ce2e54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;墨線廣州美學海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;纯黑深邃底色，一条粗壮有力的墨色书法 S 型曲线自画面一端蜿蜒贯穿至另一端，构成整幅画面的视觉骨架与叙事动线。曲线上方是一只透明质感的画眉鸟，内部映射传统建筑叠影与蓝绿色光流；沿曲线错落分布广州地标与古典建筑序列，前景有白鹤与湖面，远景为层叠山峦。整体采用非线性透视、冷色调主导、暖色点缀，东方美学与现代意象交融，8K 超高清渲染，比例 9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;廣東超級聯賽邀請海報&#34;&gt;廣東超級聯賽邀請海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045772039521542202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011_hu_92a4a5fab599fb1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/011_hu_14597bd741392962.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;廣東超級聯賽邀請海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广东省城市足球超级联赛（粤超）邀请函海报设计，比例 9:16。S 型流动构图，以发光足球和动态能量流贯穿画面，沿动线融合广州塔、深圳平安金融中心、珠海渔女雕像、岭南建筑、佛山武术剪影、中山文化符号、潮汕英歌舞与清远山水。现代国潮高级海报风格，中国红主视觉，青蓝辅助，金色高光，带完整中文排版与电影级光影。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2026-春季廣州宣傳海報&#34;&gt;2026 春季廣州宣傳海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/grok/status/2046012437086818395&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/grok&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@grok&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012_hu_201378eef9abf5ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/012_hu_3a9287e91b217ff1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;2026 春季廣州宣傳海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆但高雅的 2026 广州城市宣传海报，9:16 竖版，双重曝光，S 型流动构图。纯白纹理背景，右下角微缩传统服饰人物挥舞长红绸，红绸变形成山脉河流，内部叠加广州全景：广州塔、珠江新城、珠江、游轮、古建筑与白云山。左下角排版 “SPRING 2026” 与竖排 “千年商都 魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;史詩剪影世界海報&#34;&gt;史詩剪影世界海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ghhhh3owi/status/2045803217251102897&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Ghhhh3owi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ghhhh3owi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013_hu_205251b6c1aac015.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/013_hu_e4cd661288228225.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;史詩剪影世界海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;收藏版史诗海报，人物侧脸剪影中生长出完整世界观与经典场景。整体偏电影海报加梦幻水彩插画风，安静、宏大、神圣、怀旧，带纸张颗粒、轻雾感、飞白刷痕与高级留白。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;春季廣州城市海報&#34;&gt;春季廣州城市海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2045484598487060917&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014_hu_66d135c37c0b4d4c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/014_hu_aedcb5179c6eb528.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;春季廣州城市海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张充满新春喜庆氛围但不失高雅格调的 2026 城市宣传海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;双重曝光，构图延续了S型的流动感；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在纯白的纹理背景右下角，一个身穿中国传统服饰的微缩人物正在挥舞着一条长长的红色丝绸舞带，这条红绸在空中舞动，不仅展现出丝绸的柔顺质感，更在向左上方飘动的过程中，奇幻地变形成了一条壮丽的山脉河流。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在这条“河流”中，叠加了一个有山有海河的广州城市手绘图，国潮，景色尽在眼底，壮阔雄伟，令人震撼。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;广州的地标建筑(广州塔，珠江新城建筑群，珠江, 广州城里古建筑，游轮，白云山）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;云雾环绕，仙气缥缈，色彩丰富，结构复杂，细节丰富，但因为大面积的留白，画面依然显得清新脱俗，左下角排版着“SPRING 2026”和竖排的宣传语，整体寓意“千年商都，魅力广州”。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文字排版优美，大方，字迹清晰完整，尺寸9:16。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科學百科豎版海報&#34;&gt;科學百科豎版海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/pfanis/status/2046413660147314714&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/pfanis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@pfanis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015_hu_7a1d5b1fc480bc5f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/015_hu_e3c8fefa5d7cca80.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科學百科豎版海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate a high-quality vertical science popularization encyclopedia image based on [Theme].
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西遊記中式漫畫&#34;&gt;西遊記中式漫畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/overseas58/status/2046271877577097376&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/overseas58&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@overseas58&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016_hu_fe8120241e09b388.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/016_hu_e386733db9966ec7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西遊記中式漫畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以中国连环画（小人书）的风格帮我绘制大闹天空
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;人物關係圖海報&#34;&gt;人物關係圖海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046263153546174935&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017_hu_ecf91d7e5670cb15.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/017_hu_3852c8879f947e2f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;人物關係圖海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高设计感的人物关系图海报。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新中式水墨山水海報&#34;&gt;新中式水墨山水海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046215276249993720&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018_hu_ba4b32e94d2d9d51.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/018_hu_fea52abd0b5219df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新中式水墨山水海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;新中式水墨山水海报，竖版9:16构图，东方极简美学风格，大面积留白，主题是春岚一叶红。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ai-構建器塗鴉草圖&#34;&gt;AI 構建器塗鴉草圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/opc_8838/status/2046162334440448339&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/opc_8838&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@opc_8838&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019.webp&#34;
	width=&#34;1196&#34;
	height=&#34;798&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019_hu_a74dd5ddef7a0bae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/019_hu_231bd5c0eba1e0db.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI 構建器塗鴉草圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;359px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以涂鸦速写风表现【一个厉害的AI builder】。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;角色視覺豎版海報&#34;&gt;角色視覺豎版海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/tebasaki3D/status/2046371076402503709&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/tebasaki3D&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@tebasaki3D&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020.webp&#34;
	width=&#34;850&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020_hu_9e37ba30b1ebdb81.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/020_hu_fea7f01117845071.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;角色視覺豎版海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;170px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;『神層37区 特級執行官 神巫サバト』この名称のキャラクターと世界観に合ったビジュアルイメージを、プロのデザイナーとして縦長のポスターイメージとして制作して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科學百科信息圖&#34;&gt;科學百科信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046231542817497392&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021_hu_4a7d12ea0cf9290f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/021_hu_eb66865bfa321ec6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科學百科信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高质量竖版「科普百科图」。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这张图不是普通海报,也不是单纯插画,而是一张兼具“图鉴感、百科感、信息结构感、收藏感”的模块化科普信息图。整体风格参考高级博物图鉴、现代百科书页、生活方式知识卡和社交媒体高传播信息图的结合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请让画面包含:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个清晰漂亮的主题主视觉
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若干局部特征放大细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 多个圆角模块化信息分区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 清楚的标题层级与重点标签
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 简洁但丰富的百科内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 可视化评分、要点总结或Top 5模块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容栏目请根据主题自动适配,优先从这些方向中选择并合理组合:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基础档案、分类信息、外观特征、习性/生态、形成机制/结构组成、生长或使用条件、养护或维护建议、风险与注意事项、适合人群或适用场景、优缺点对比、快速评分卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;视觉要求:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;浅色干净背景,柔和配色,轻阴影,精致小图标,圆角信息框,整洁排版,信息密度高但不拥挤,阅读体验好。整体必须像真正可以发布、阅读、收藏、系列化生产的科普百科卡,而不是广告图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请不要做成普通商业宣传海报。要突出“知识整理 + 模块信息 + 图鉴式展示”的特征。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;虛構動漫電影海報&#34;&gt;虛構動漫電影海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/seiiiiiiiiiiru/status/2046509734954741780&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/seiiiiiiiiiiru&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@seiiiiiiiiiiru&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022_hu_3eb4d328714650a0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/022_hu_e957d648395ca3a5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;虛構動漫電影海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;架空のアニメ映画のポスターをGPT image2で作成。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;產品廣告重設計&#34;&gt;產品廣告重設計
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai/status/2046498264774791514&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@genel_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023_hu_1201ba3a0754f179.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/023_hu_9c6e72623a0eb735.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;產品廣告重設計&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この商品広告をプロのデザイナー目線でリデザインして。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;今のトレンド、ターゲットに合わせた洗練されたデザインで。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暗黑奇幻廣州城市海報&#34;&gt;暗黑奇幻廣州城市海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046243132774494607&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024_hu_f0687074165c1ecd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/024_hu_d638cb0a03268eec.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暗黑奇幻廣州城市海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;平面插画,东方幻想风格高端城市海报设计,竖版9:16构图,整体采用对角线+S型流动构图,从左下向右上延展,画面以深邃黑色为背景,自上而下渐变至浓烈暗红色,形成强烈冷暖对比与空间纵深,背景带微弱星尘与颗粒质感。画面中央一条金色流动能量线条如火焰般蜿蜒贯穿,自底部向上延伸,具有流体质感、粒子光效与渐变高光,局部带细微能量碎屑与体积光。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;金色流光中逐层浮现广州城市地标建筑群:广州塔为视觉核心,比例突出,周围融合珠江新城高楼群、猎德大桥及现代与岭南建筑元素,建筑采用“精细线描 + 金色发光体块”表现,轮廓清晰、细节丰富,在金色光晕映衬下仿佛悬浮于虚空,形成超现实空间层次,远景轻微雾化增强纵深感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面底部为一位东方白发女性形象,长发飘逸,如烟似雾,与金色流光自然衔接并逐渐融合,发丝半透明带渐变光感,姿态柔美,双目微闭,神情宁静,怀抱一束多彩鲜花,花间点缀微光粒子与星点效果,象征人与城市能量的精神连接,人物细节适度简化以突出整体设计感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;光影集中于金色流线、建筑与人物轮廓,形成强烈明暗对比与视觉聚焦,整体氛围宏大、神秘、具有东方神话意境且略带治愈感。色彩以黑与暗红为基底,高亮鎏金为主视觉强调,金色具备丰富明暗层次,辅以小面积高饱和花束色彩点缀,整体高级克制。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;页面文字与画面融合排版:顶部居中宋体大字“广州·中国”,下方小字“2026/04/20”,再下方小字“LIYUE”,文字采用淡金色或柔和暖白色,与整体光影统一。高品质细节,电影级光影表现,体积光与粒子细节丰富,画面干净无噪点,超高清8K分辨率,商业级海报质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;科幻電影海報&#34;&gt;科幻電影海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/underwoodxie96/status/2046514205529088501&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/underwoodxie96&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@underwoodxie96&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025_hu_ef80f60974fc9d7e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/025_hu_183996ab6e6916ab.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;科幻電影海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a Science fiction movie poster
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;清爽夏日烏冬廣告&#34;&gt;清爽夏日烏冬廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai/status/2046501692246470871&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/genel_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@genel_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026_hu_bf8be9a29c4774c9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/026_hu_82496932fbd2b49c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;清爽夏日烏冬廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;少し暑くなってきた今の時期に、さわやかにさっぱりしたい、みずみずしさ、みたいなところをもっと強く感じたい。冷たいうどんやナス、つゆを口に含んだ時の爽快感、みたいなものをもっと感じるように
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;手寫醫療處方單&#34;&gt;手寫醫療處方單
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046514998965371144&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027.webp&#34;
	width=&#34;899&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027_hu_e42b00db642e5189.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/027_hu_67d8c7386a9431c5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;手寫醫療處方單&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一张手写中/西医药方图
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;硅谷-2026-宣傳海報&#34;&gt;硅谷 2026 宣傳海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/carsonyungos/status/2046523198116889064&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/carsonyungos&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@carsonyungos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028_hu_d73b27149cfbc777.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/028_hu_b4b7a2a267a3763c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;硅谷 2026 宣傳海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A refined 2026 Silicon Valley city promotional poster with a futuristic yet elegant atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Double exposure composition, preserving an S-shaped sense of flowing movement. On a pure white textured background, in the lower-right corner, a miniature figure dressed in sleek modern techwear is releasing a long ribbon of luminous silver-blue light. The ribbon flows gracefully through the air, showing a soft silk-like texture, and as it drifts toward the upper-left, it magically transforms into a grand landscape of rolling hills, coastline, data streams, and illuminated urban terrain.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Within this flowing “river of light,” overlay a hand-drawn panoramic map of Silicon Valley, blending technology, nature, innovation, and California sunlight. The scene feels visionary, expansive, sophisticated, and inspiring.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Include iconic Silicon Valley and Bay Area elements: Stanford University arches, Apple Park, Google campus-inspired buildings, Meta-like glass offices, Tesla-style innovation imagery, venture capital offices on Sand Hill Road, Palo Alto tree-lined streets, San Jose skyline, the Santa Cruz Mountains, San Francisco Bay, highways, autonomous vehicles, startup labs, semiconductor patterns, AI data centers, and subtle circuit-board textures.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Surrounded by soft mist, golden California light, floating clouds, and delicate digital particles. Rich colors, complex structure, highly detailed, grand and breathtaking, yet still fresh and minimal because of the large areas of white space.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;In the lower-left corner, elegant typography reads “SILICON VALLEY 2026” with a vertical promotional slogan: “Where Ideas Shape Tomorrow.” Beautiful editorial layout, graceful spacing, clear and complete lettering, premium city branding poster, cinematic lighting, sophisticated details, 9:16 aspect ratio.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日本超市促銷傳單&#34;&gt;日本超市促銷傳單
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/weel_corp/status/2046514558064586782&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/weel_corp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@weel_corp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029_hu_46b43666df1084c1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/029_hu_ae3682fc143d094b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日本超市促銷傳單&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;『賑やかで魅力的なスーパーマーケットの折り込みチラシの画像。上部には「特売」の大きな文字と今週の日付。カラフルな商品写真(野菜・果物・牛肉・鮮魚)、赤枠の価格タグ、「超目玉商品」「家計応援」のキャッチ...』
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暗黑史詩概念海報&#34;&gt;暗黑史詩概念海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant/status/2046224777208361126&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@A9Quant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030_hu_9c400ff2c7fc93a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/030_hu_c0f89cc2b0aee3d4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暗黑史詩概念海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;围绕【主题】自动生成一张顶级暗黑史诗概念海报 / 电影感信息图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唯一需要输入的变量只有:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【主题】:___特朗普的思考____ 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;除【主题】之外,其余全部由 AI 自动适配完成,包括但不限于:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 核心主体(自动判断更适合人物、守护者、战士、产品、器物、雕像、抽象象征或其他主视觉对象)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 中央承载结构(自动判断更适合王座、石座、祭坛、机械基座、遗迹、高台或其他支撑体)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 环境空间(自动判断更适合洞穴、神殿、废墟、深渊、地下宫殿、密室或其他封闭史诗空间)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 上方开口与光源形式(自动判断更适合月光、神光、能量束、审判之光、圣光或其他单一强光)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 象征元素(自动判断更适合骷髅、徽记、残碑、纹章、符文、能量环、神性符号等)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色彩体系
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质组合
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题、副标题、辅助文案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 排版与整体叙事气质
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【总风格】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高预算 90 年代好莱坞史诗大片海报气质,融合 cinematic matte painting、超写实摄影质感、极强明暗对比、厚重空间叙事、暗黑英雄主义与仪式感构图。整体必须像一张真正的电影主海报,而不是普通插画或电商图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【核心结构锁定】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整张海报必须保留以下结构基因:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 一个巨大、压迫感极强的黑暗封闭空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 一束从上方斜向切入的强烈体积光,作为画面的第一视觉秩序
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 中央偏右或光束终点位置的核心主体与承载结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 左下角作为高密度标题与信息锚点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 四周保留大量纯黑或近黑负空间,形成电影感呼吸区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【自动适配规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI 必须依据【主题】自动推导最适合的视觉系统:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏暗黑英雄、复仇、正义、孤独、宿命,则自动偏向石质王座、孤高人物、冷色神光、废墟或洞穴感空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏神秘、幽灵、潜行、幻影、夜行,则自动偏向月光、迷雾、冷蓝色体积光、深渊式黑暗空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏权力、统治、王者、秩序,则自动强化 throne / altar / crown-like symbol / ritual space 的表达
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏科技、AI、未来、机械,则自动将王座和空间替换为机械神座、能量基座、金属洞窟、工业神殿等未来化形态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果【主题】偏产品、品牌、器物,则自动把核心主体替换为最合适的 hero object,并保留被神光审判式凸显的史诗构图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【画布与色彩系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 背景底层必须是极深、近乎吞噬一切的黑暗空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主环境色由 AI 根据【主题】自动决定,但整体必须克制,以暗色为主
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 强光区域色彩必须高度集中,只服务于体积光与主体高光
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主题色 / 强调色只能集中用于主视觉核心,不允许全画面泛滥
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 必须建立明确的“黑暗底色 + 单一主光 + 少量主题强调色”的层级秩序
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【构图与视觉重力】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 采用强烈的斜向张力与向中心汇聚的视觉引导
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 视觉重力从上方光源强势落下,最终压在核心主体之上
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主体必须处于被命运、审判、神性或权力照中的位置
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 边缘必须自然融入黑暗,不能出现无意义背景填充
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所有元素必须服务于唯一的主叙事核心
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【材质与光影】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不使用轮廓线,不使用平面化描边
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 完全依赖体积光、阴影切割、反射、高光、雾气、粉尘、湿润岩石或其他真实材质来建构画面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质必须形成明显对比,例如:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  粗粝岩石 / 冷硬金属 / 柔韧织物 / 古老石雕 / 湿润表面 / 尘雾光柱
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 光束必须具有强烈 Tyndall effect,真实、厚重、可感知体积密度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【排版系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体 80% 视觉,20% 文字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- AI 根据【主题】自动生成主标题、副标题和底部信息块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主标题应尽量简洁、有气势、有电影海报感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若主题更适合中文,则优先中文;若更适合英文,则自动英文;也可双语,但必须统一
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 主标题可沿光束垂直排布,仿佛由光本身构成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 左下角设置一个高密度信息模块,包括副标题、小字信息、电影 credits 风格占位文字或品牌说明
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文字必须锐利、干净、真实嵌入环境,不得廉价漂浮
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【模块结构 —— 必须严格保持 3 块】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 1: TOP-TO-CENTER BEAM]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;从顶部开口斜向切下的巨大体积光柱,作为第一视觉通道,并承载主标题或主视觉文字。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 2: CENTER-RIGHT CORE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;位于光束终点的核心主体与承载结构,形成整张海报的权力中心 / 命运中心 / 叙事中心。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[MOD 3: BOTTOM-LEFT TEXT]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;位于左下角负空间中的高密度排版区,包含副标题、说明文字、credits 风格信息块、品牌信息或活动信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【作者署名】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在底部角落自然加入作者署名:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@a9quant
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;署名要小而清晰,精致、克制、高级,不喧宾夺主,像正式电影概念海报或艺术作品落款。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【输出要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出为单张统一构图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;所有视觉系统必须内部一致,不能有风格污染。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面必须具备:暗黑感、史诗感、压迫感、仪式感、命运感、电影完成度。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最大细节密度,超清,电影级,印刷级,高端成片质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;普拉提工作室廣告海報&#34;&gt;普拉提工作室廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ck_igarashi/status/2046528889124728993&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ck_igarashi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ck_igarashi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031_hu_fefe4ef6ac729c95.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/031_hu_298b2020792bf385.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;普拉提工作室廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ピラティス教室の広告画像を作成したい テキストはよりユーザーが登録をするのに惹かれるような文言にし、画像内には女性がピラティスを実際に行っている様子を映して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;六模塊時尚廣告提示詞公式&#34;&gt;六模塊時尚廣告提示詞公式
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/anacoding/status/2046904999045628114&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/anacoding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@anacoding&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032.webp&#34;
	width=&#34;1200&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032_hu_978a06ca6d6ab538.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/032_hu_f0b66b26ea02deff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;六模塊時尚廣告提示詞公式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Old money Hamptons editorial, tall blonde woman late 20s, serene elegant expression, wearing cream cashmere cable sweater, pleated beige tennis skirt, pearl earrings, Hermès silk scarf, leather flats, Slim Aarons photography style, medium format film photography, sitting on a white wooden porch of a Cape Cod house, golden hour light, ocean in the background
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sony-a7-爆炸圖拆解提示詞&#34;&gt;Sony A7 爆炸圖拆解提示詞
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iaPulse_/status/2046903739429097660&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/iaPulse_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iaPulse_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033_hu_8ea3e4a967c5fe31.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/033_hu_216e262211d2baa2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sony A7 爆炸圖拆解提示詞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Descomposición detallada de una cámara de la marca Sony modelo A7 indicando todas sus piezas y con sus nombres.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;1900-年獨立大街全景提示詞&#34;&gt;1900 年獨立大街全景提示詞
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ai_gezgini/status/2046903631509705030&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ai_gezgini&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ai_gezgini&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034.webp&#34;
	width=&#34;1200&#34;
	height=&#34;595&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034_hu_261edcda8ca3abd1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/034_hu_c8efc03f5c4fdc7f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;1900 年獨立大街全景提示詞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;201&#34;
		data-flex-basis=&#34;484px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;360 equirectangular image of Istiklal Street, Istanbul in 1900
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;主題科學百科卡片&#34;&gt;主題科學百科卡片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq/status/2046378199681257920&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/alanlovelq&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@alanlovelq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035_hu_63664ea9802825bb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/035_hu_4e9730ca7264bcfa.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;主題科學百科卡片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题】生成一张高质量竖版「科普百科图」。 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;这张图不是普通海报,也不是单纯插画,而是一张兼具“图鉴感、百科感、信息结构感、收藏感”的模块化科普信息图。整体风格参考高级博物图鉴、现代百科书页、生活方式知识卡和社交媒体高传播信息图的结合。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请让画面包含:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 一个清晰漂亮的主题主视觉
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若干局部特征放大细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 多个圆角模块化信息分区
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 清楚的标题层级与重点标签
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 简洁但丰富的百科内容
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 可视化评分、要点总结或Top 5模块
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;内容栏目请根据主题自动适配,优先从这些方向中选择并合理组合:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;基础档案、分类信息、外观特征、习性/生态、形成机制/结构组成、生长或使用条件、养护或维护建议、风险与注意事项、适合人群或适用场景、优缺点对比、快速评分卡。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;视觉要求:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;浅色干净背景,柔和配色,轻阴影,精致小图标,圆角信息框,整洁排版,信息密度高但不拥挤,阅读体验好。整体必须像真正可以发布、阅读、收藏、系列化生产的科普百科卡,而不是广告图。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请不要做成普通商业宣传海报。要突出“知识整理 + 模块信息 + 图鉴式展示”的特征。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;辣椒炒肉烹飪流程圖&#34;&gt;辣椒炒肉烹飪流程圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kurt_Rousey466/status/2046267707881029934&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Kurt_Rousey466&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Kurt_Rousey466&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036_hu_b5058bd6ddbe2e29.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/036_hu_fb0f9b9736277e92.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;辣椒炒肉烹飪流程圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我制作辣椒炒肉这道菜的详细制作流程图,真实风格,适用于小红书图文比例
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電影感信息圖概念海報&#34;&gt;電影感信息圖概念海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant/status/2046228485841334559&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/A9Quant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@A9Quant&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037_hu_4786868151e9758a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/037_hu_7fb4793db00ce0dd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電影感信息圖概念海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请围绕【主题】自动生成一张顶级概念海报 / 信息图式电影海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唯一输入变量只有:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【主题】:__中国历史上的皇帝排名_         
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求 AI 根据这个主题,自动推导并统一设计以下全部视觉系统,不需要我额外指定:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 核心主体(可以自动判断更适合人物、产品、建筑、器物、符号、场景或抽象意象)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 底部支撑结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 上方悬浮符号或精神象征
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 场景包裹元素
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 隐喻系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 色彩层级
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质对比
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 光影逻辑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题、副标题、辅助文案
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 品牌感与高级感表达方式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最终画面必须是:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一张震撼、精密、统一、电影级、超高细节、可用于高端印刷的概念主视觉海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【总风格】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;超写实 3D 商业 CGI 渲染,融合电影级布光、奢侈品视觉语言、未来感概念设计与史诗级构图。画面必须具有“唯一主视觉核心”,不能杂乱,不能像拼贴,不能像普通电商海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【自动推导规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AI 必须依据【主题】自动决定最合适的:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. 核心视觉隐喻
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. 主体类型与姿态
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. 支撑结构形式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. 悬浮元素形式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. 场景外壳与空间氛围
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;6. 主色、辅色、强调色
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7. 材质组合
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;8. 文字气质与版式风格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;例如:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏权力、秩序、资本、统治,则自动偏向王座、冠冕、机械、神殿、红幕、金属、权力结构
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏科技、AI、芯片、未来,则自动偏向机械结构、能量核心、光束、深色金属、全息感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏奢侈品、高定、稀缺、收藏,则自动偏向珠宝、镜面材质、黑金体系、展台、博物馆式布光
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏人物、IP、角色,则自动以人物为主视觉核心,并自动匹配对应世界观与象征系统
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果主题偏城市、文明、史诗、命运,则自动转化为宏大叙事型空间结构与仪式感场景
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【构图规则】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 绝对高级感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 强烈中心秩序,整体统一
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 允许中轴对称或接近中轴的史诗级构图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 视觉重力明确,从上到下形成清晰的层级落点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 边缘负空间干净、克制、有呼吸感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不允许无意义装饰,不允许风格污染,不允许多个系统互相打架
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【视觉质量】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 超高细节
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 体积光清晰
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 材质真实
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 反射、折射、阴影、雾气、景深自然
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 每个元素都像经过工业级视觉总监审美控制
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体达到高端品牌 campaign key visual / luxury invitation poster / conceptual editorial poster 水准
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【排版系统】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 整体为 90% 视觉,10% 文字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- AI 根据【主题】自动生成最匹配的主标题和副标题
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 标题必须简洁、锋利、有气势
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文案分布在安全负空间内,不压主体
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 若主题适合中文,则优先生成中文标题;若主题更适合英文,则自动生成英文标题;也可中英结合,但必须统一高级
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 文字必须尽量少而准,不要堆字
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【署名要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在画面底部角落自然加入作者署名:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;@a9quant
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;署名要小,但清晰、精致、高级,不喧宾夺主,像顶级视觉作品中的正式作者落款。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【输出要求】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;输出为单张统一构图海报。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;自动根据【主题】完成全部视觉决策。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面必须具备史诗感、秩序感、控制力、仪式感、商业完成度。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最大细节密度,超清,电影级,印刷级,高端成片质感。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戶外全身照中的年輕白人女性&#34;&gt;戶外全身照中的年輕白人女性&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2047234995627172229&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戶外全身照中的年輕白人女性…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A full-body outdoor shot captures a young Caucasian woman, possibly in her late 20s, striding through a city crosswalk. She wears an oversized, matte chocolate-brown leather jacket paired with a free-flowing black skirt and sleek knee-high black boots, conveying a sense of high fashion street style. Her long, dark brown hair is wind-swept, complementing her poised and confident expression as she glances sideways. Behind her, a blurred urban backdrop features a yellow taxi and pedestrians, with buildings displaying varied architectural details in neutral tones. The scene utilizes soft ambient daylight filtering through light cloud cover, producing a muted, overcast lighting effect. The warm, earthy color palette consists of brown, black, and touches of beige. The image, likely from a high-resolution digital camera, presents a wide-angle view that maintains focus throughout, emphasizing a dynamic and fashionable feel.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;冷藏氣泡水專業產品攝影&#34;&gt;冷藏氣泡水專業產品攝影
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695/status/2047227172486824002&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/meng_dagg695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@meng_dagg695&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039_hu_de370bf7dfdeccac.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/039_hu_586efe83d344a1c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;冷藏氣泡水專業產品攝影&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A professional product photography shot of a cold sparkling water
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can placed upright in golden beach sand. The can is silver and teal,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;covered in realistic water droplets condensation, with a pineapple
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;illustration and tropical branding. The can is slightly tilted,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;planted in a small mound of fine golden sand with tiny white pebbles
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and small green tropical leaves/grass scattered around the base.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background features a bold split composition - bright sky-blue on
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;the left and vivid yellow on the right, with a large blurred real
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pineapple placed behind the can on the right side. A blurred tropical
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;palm leaf drapes in from the upper left corner, adding depth and
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;framing. Macro-level water condensation droplets visible on the
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can surface. Lighting is bright, vibrant, commercial studio lighting
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;with clean shadows. Shallow depth of field - can in sharp focus,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;background softly blurred. Mood: summer, tropical, fresh, refreshing.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Commercial product photography, ultra-detailed, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;360-度等距柱狀全景圖&#34;&gt;360 度等距柱狀全景圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rs_elwood/status/2047192228758692036&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/rs_elwood&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rs_elwood&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;360 度等距柱狀全景圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;360度 equirectangular （正距円筒図法）画像を2:1で生成
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Online 360° Panorama Viewer VR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和詩意兒童書插畫水彩與水粉質感&#34;&gt;柔和詩意兒童書插畫，水彩與水粉質感&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey/status/2047174895293849972&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dotey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040_hu_424e23fdce1730a6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/040_hu_b3e249d6b567c7ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和詩意兒童書插畫，水彩與水粉質感…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Soft poetic children&amp;#39;s book illustration with watercolor and gouache textures.Clear gentle daylight with slightly brighter highlights.Muted pastel colors with soft blue and warm tones.Visible brush strokes and paper grain.Minimalist composition with large negative space.Calm, thoughtful, slightly open-ended atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Child character (around 12 years old).Subtle visual metaphors like light, shadow, perspective, reflection.Hand-painted picture book style, not cartoon, not anime, not 3D.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Two children in calm conversation,soft connection forming.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;畫幅比例916-豎版&#34;&gt;畫幅比例：9:16 豎版
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2047220831491858766&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041_hu_27f5a8dc11c92271.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/041_hu_a84f0f87582688a5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;畫幅比例：9:16 豎版&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect Ratio: 9:16 Vertical
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【IDENTITY &amp;amp; REALISM (CRITICAL PRIORITY)】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject is an adult female whose facial features and bone structure must 100% perfectly match the provided FACE_REF image. Eye spacing, nose bridge, jawline, and cheekbone structure must be exact; no identity drift is allowed. Skin texture must be photorealistic, showing pores and fine details—do not over-smooth or apply an Instagram filter look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【PHOTOGRAPHY &amp;amp; CINEMATOGRAPHY】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end editorial fashion photograph with a cinematic quality, rivaling covers of Vogue, Harper’s Bazaar, or ELLE.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lens &amp;amp; Focus: Use an 85mm lens (for medium shot) or 50mm/70mm (for full body) with a shallow depth of field. The subject&amp;#39;s eyes must be perfectly sharp.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Natural winter daylight supplemented by soft, professional fill light. Gold ornaments and precious stones should have realistic specular highlights without being blown out. Embroidery textures must be incredibly sharp and tactile.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Color Grading: Rich, cinematic colors. The red walls and the attire&amp;#39;s main color must be distinct and clean, not muddy. The overall image should feel deep, textured, and expensive.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition: A clean magazine cover layout with deliberate negative space at the top or sides for typography. No torn paper or hand-drawn effects.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【SETTING: FORBIDDEN CITY WINTER】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The location is a red-walled long corridor in the Beijing Forbidden City.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment: Visible details include vermilion walls, red pillars, intricate carved windows, and painted wooden beams with strong perspective depth. The scene must be clean: no tourists, modern signs, or watermarks.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Weather Condition (Selected Randomly):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[If Snowfall selected]: Fine snowflakes are gently falling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[If Post-Snow selected]: The air is crisp and clear, with remnant snow on the eaves and steps.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【WARDROBE: MING DYNASTY HEAVY INDUSTRY COUTURE】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The subject wears opulent, multi-layered Ming Dynasty ceremonial Hanfu. The aesthetic is gold-heavy, dense tassels, phoenix crown, large-area woven gold embroidery, complex layering, dignified and luxurious.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Structure: A visible, crisp white standing inner collar provides a clean boundary. Over this is a structured duijin ao (jacket) with wide sleeves, topped by a heavy xiapei/pibo (stole) structure held by a large central yajin ornament.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fabric &amp;amp; Craft: The main fabric is real zhijin jin (woven gold brocade) with palpable fiber texture. The embroidery is heavy industry—using panjin goldwork, couched gold
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;杭州西湖旅行海報&#34;&gt;杭州西湖旅行海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/BNBOKBt5/status/2047210189741605082&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/BNBOKBt5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@BNBOKBt5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042_hu_121803730c1fc8a5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/042_hu_92d74e842ca118a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;杭州西湖旅行海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我生成一个介绍杭州西湖的海报
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;東方不敗武俠角色海報&#34;&gt;東方不敗武俠角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047204566559756707&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043_hu_f3f496fc67669877.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/043_hu_a9f9996a5ef7415d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;東方不敗武俠角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：电影角色海报，东方不败红衣饮酒，悬崖落日，武侠意境
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：东方不败绣花针如飞，红衣长发立于悬崖，黑木崖夕阳如血
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;大話西遊-90-年代港片海報&#34;&gt;大話西遊 90 年代港片海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047201597697245252&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044_hu_9b7cbd43d6d2017c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/044_hu_bfba6b6b10add752.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;大話西遊 90 年代港片海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：大话西游海报重制为90年代港片风格，至尊宝紫霞城墙拥吻，胶片颗粒
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：杜蕾斯吉祥物×猪八戒，八戒害羞脸红遮面，文案取经路上要安全
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;西遊記女兒國海報&#34;&gt;西遊記女兒國海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cj858cjsoul/status/2047103956535697822&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/cj858cjsoul&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cj858cjsoul&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045_hu_b530de8d4d6545cd.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/045_hu_a133286d0a68118d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;西遊記女兒國海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;西游记女儿国诱惑海报，六位艳丽的女儿国大臣在后宫温泉中，迷雾朦胧妖冶，生成图片
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4.23早上测试成功
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;鹿鼎記角色海報&#34;&gt;鹿鼎記角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/caiziboshi/status/2047091751731519744&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/caiziboshi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@caiziboshi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046_hu_d4a2c9eabefe3664.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/046_hu_b867ff1faed1ddbd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;鹿鼎記角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成鹿鼎记海报，展现韦小宝跟老婆XXX，忠于原著的描述，夸大特点，强调女性的美艳和男性的气质
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成帶規格與價格的賽車海報&#34;&gt;生成帶規格與價格的賽車海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/verysmallwoods/status/2047033599229137126&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/verysmallwoods&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@verysmallwoods&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047_hu_7f424966b0d91e90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/047_hu_d8fee19c94371ed7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成帶規格與價格的賽車海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate an image of a racing car poster with its spec and pricing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;卓別林產品海報重設計&#34;&gt;卓別林產品海報重設計
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chenenpei/status/2046985783715025135&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chenenpei&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chenenpei&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048.webp&#34;
	width=&#34;799&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048_hu_1d48865872d9a3b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/048_hu_6819b669cb7910c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;卓別林產品海報重設計&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;159px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;重新生成一张海报，卓别林拿着商品图里的止痒膏，面露微笑。风格要简约干净。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;左边是 GPT-image-2 右边是
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華運動服籃球運動員廣告海報&#34;&gt;奢華運動服籃球運動員廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shorelyn_/status/2047949711181832558&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shorelyn_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shorelyn_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049_hu_672f777993b43681.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/049_hu_d32a1c4adebdc905.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華運動服籃球運動員廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium luxury sportswear campaign poster featuring a confident female athlete in a modern studio environment. Full body pose with strong fashion attitude, standing tall while holding a basketball at her side, chin raised slightly, direct powerful expression. Athletic toned physique, sleek pulled back hair, clean glowing skin, sharp editorial posture.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit includes an oversized cropped varsity jacket, fitted sports bra, tailored biker shorts, white crew socks, and modern high top sneakers. Neutral monochrome styling with subtle premium branding.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is a clean light gray studio wall with giant bold condensed black typography reading “POWER” stretched vertically across the backdrop behind the model. Text should feel oversized and dominant, framing the athlete in the center.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Floor is glossy reflective studio surface with subtle court markings and soft reflections. A few basketballs placed naturally around the floor for depth and campaign styling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is bright luxury studio lighting with crisp highlights, soft shadows, and polished commercial finish. Sharp focus, ultra realistic skin texture, premium fabric texture, cinematic contrast.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style should feel modern, minimal, elite, bold, high fashion sports campaign, luxury brand advertisement, clean composition, balanced negative space, strong visual impact, high resolution, square format.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;亞洲服飾街頭時尚廣告海報&#34;&gt;亞洲服飾街頭時尚廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis/status/2047921293123895520&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/harboriis&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@harboriis&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050.webp&#34;
	width=&#34;1152&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050_hu_906676598a55c4d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/050_hu_758213b443022f5c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;亞洲服飾街頭時尚廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium streetwear fashion campaign poster inspired by modern Asian apparel advertising. Full body portrait of a stylish young male model standing confidently with legs crossed at the ankles, hands inside jacket pockets, head turned slightly upward and sideways with a calm thoughtful expression. Curly tousled medium length hair with soft volume. Slim athletic build.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit includes a dark olive green padded hooded jacket worn open, clean white crewneck sweatshirt underneath with a tiny chest logo, relaxed black cargo style trousers, and minimal white sneakers. Styling is clean, youthful, and contemporary.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is a vibrant electric blue seamless studio backdrop with subtle gradient lighting, soft glow streaks, and glossy floor reflection. Lighting is soft studio light with gentle shadows and polished commercial finish.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Graphic poster layout with giant bold condensed sans serif text reading “JEANSWEST” vertically stretched across the background behind the model in light gray white. Add large text on lower right reading “JW26”. 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition should feel premium, trendy, clean, commercial, youthful, modern fashion ad campaign. Sharp focus, ultra realistic fabric texture, cinematic lighting, balanced negative space, sleek branding design, high resolution, vertical poster ratio.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;職業生涯高光時刻電影感海報模板&#34;&gt;職業生涯高光時刻電影感海報模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Goodmanprotocol/status/2047900470921040270&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Goodmanprotocol&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Goodmanprotocol&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051.webp&#34;
	width=&#34;1122&#34;
	height=&#34;1402&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051_hu_2f9da72c29fe71be.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/051_hu_84ede77a008103b4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;職業生涯高光時刻電影感海報模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an epic poster showcasing the most iconic moments of [Insert Name]&amp;#39;s career. Cinematic style, lens flare. Portrait orientation. A1 poster size. aspect ratio 4:5 https://t.co/L9OHPKUNRp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先鋒籃球雕塑運動時尚廣告&#34;&gt;先鋒籃球雕塑運動時尚廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithkhan/status/2047886964037398989&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithkhan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithkhan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052_hu_e4ef64e0fec4e145.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/052_hu_4ef81fda3ea058a2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先鋒籃球雕塑運動時尚廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde sports fashion advertisement, oversized basketball posed like a monumental sculpture, female athlete reclining across the ball’s curved surface as if modern furniture, giant word “ELEVATE” in bold typography behind, burnt orange studio backdrop, glossy reflective floor, luxury athletic editorial aesthetic, cinematic lighting, ultra-clean composition, 1:1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先鋒網球拍雕塑運動時尚廣告&#34;&gt;先鋒網球拍雕塑運動時尚廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSynthia/status/2047884609321619831&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSynthia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSynthia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053.webp&#34;
	width=&#34;1254&#34;
	height=&#34;1254&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053_hu_be592ae0d8fc17c8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/053_hu_93bbc60441311c05.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先鋒網球拍雕塑運動時尚廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde sports fashion advertisement, oversized tennis racket positioned like monumental sculpture, female athlete seated casually on the strings as if a suspended lounge, giant word “PRECISION” in bold typography behind, crisp white studio backdrop, reflective court-like floor, luxury sportswear editorial aesthetic, cinematic lighting, ultra-clean composition, 1:1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超現實酒類品牌高級時裝海報&#34;&gt;超現實酒類品牌高級時裝海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/hmontilla_/status/2047884126343032995&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/hmontilla_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@hmontilla_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_ff5a247e2a801b2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/038_hu_4fbacbb1e8c8dfe8.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超現實酒類品牌高級時裝海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Un póster publicitario surrealista de alta costura para Aguardiente Amarillo. La escena se sitúa en un estudio minimalista y monocromático de color naranja claro, con un suelo semirreflectante.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;El foco central es una botella de Aguardiente Amarillo de tamaño descomunal y gigante, colocada en ángulo diagonal y que sirve como respaldo. Un modelo masculino de moda, de cabello largo y oscuro, vestido con un conjunto impecable y totalmente blanco —compuesto por una sudadera y pantalones de pierna ancha—, apoya toda su espalda contra la botella gigante en una postura relajada e inclinada. Mira hacia la derecha, de perfil, con la vista al frente y una expresión serena; calza zapatillas blancas de tamaño estándar.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;En el fondo, la palabra &amp;#34;AGUARDIENTE&amp;#34; aparece escrita con una tipografía sans-serif condensada, blanca, masiva y en negrita, parcialmente oculta por la botella gigante y por el modelo para crear una sensación de profundidad. En la esquina superior derecha se lee: &amp;#34;Creado por @HMontilla_&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;En la parte inferior central, una frase publicitaria en tipografía sans-serif blanca reza: &amp;#34;El Aguardiente Amarillo de Manzanares es un icónico licor colombiano, originario de 1885 en Manzanares, Caldas&amp;#34;. La iluminación es suave, fría y uniforme, proyectando sombras tenues y un reflejo sutil de los sujetos sobre el suelo azul brillante. La estética general es limpia, moderna y de alto concepto.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Establecer la relación de aspecto en 3:4.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端食譜海報優雅版式&#34;&gt;高端食譜海報優雅版式
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Preda2005/status/2047883394152088004&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Preda2005&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Preda2005&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054.webp&#34;
	width=&#34;1366&#34;
	height=&#34;2048&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054_hu_4c7931fba65879d6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/054_hu_803c37bfc869f6dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端食譜海報優雅版式&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium food preparation poster for
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; [ DISH NAME ], with a beautiful hero dish, warm natural lighting, cream background, elegant step-by-step recipe layout, ingredients, cooking process, premium food photography, refined English typography, luxury restaurant advertisement style, clean design, rich colors, highly detailed, visually irresistible, cinematic masterpiece.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;黑白奢華時尚雜誌封面&#34;&gt;黑白奢華時尚雜誌封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrealsnow/status/2047883187527856345&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/iamrealsnow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@iamrealsnow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1536&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055_hu_bbe14247cc60a4e5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/055_hu_94215ca614388d4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;黑白奢華時尚雜誌封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a high fashion editorial magazine cover inspired by luxury fashion publications. Use the reference image of the male subject. Black and white portrait photography with a clean off white studio background. Subject is posed confidently from a low angle, looking slightly upward, sharp jawline, soft parted lips, tousled wavy hair with natural volume. Outfit includes a dark turtleneck layered under a textured tailored plaid blazer. Lighting is soft yet dramatic, creating sculpted facial shadows and elegant contrast.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Magazine layout design with oversized serif masthead text at the top reading “VOGUE”, partially hidden behind the subject’s head. Minimal premium typography across the page. Add side text “FASHION”, issue date “2026 MAY”, left side headline “27 DIFFERENT STYLES”, and bold bottom right cover line “LOOK FAMOUS”. Include a small red translucent square overlay on one eye area with the word “CATCHY”.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style should feel premium, modern, cinematic, clean composition, sharp focus, ultra realistic skin texture, editorial luxury aesthetic, balanced negative space, timeless fashion cover design. Vertical magazine ratio, high resolution.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超現實-rolex-奢華腕錶時尚海報&#34;&gt;超現實 Rolex 奢華腕錶時尚海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Sheldon056/status/2047873913049538927&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Sheldon056&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Sheldon056&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056.webp&#34;
	width=&#34;1086&#34;
	height=&#34;1448&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056_hu_f062a2ae9ecc796.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/056_hu_6b8f3f5827776d86.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超現實 Rolex 奢華腕錶時尚海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-fashion surrealist poster for Rolex. A deep emerald green minimalist studio with a polished reflective floor. A massive Rolex watch stands upright like a monument. A male model in a tailored dark green suit leans casually against the watch face, wearing a matching Rolex.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;孔雀植物復古對稱藝術畫&#34;&gt;孔雀植物復古對稱藝術畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey/status/2047803054422901046&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/dotey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dotey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057.webp&#34;
	width=&#34;1536&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057_hu_1d9e0402fbb0405e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/057_hu_9a4124b40f74310f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;孔雀植物復古對稱藝術畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;symmetrical design featuring two elegant blue peacocks with detailed feather patterns, surrounded by blue floral elements, intricate vintage botanical ornament, soft beige background, classical floral decor style with rich navy and sky blue details, decorative art illustration --ar 3:2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;splash-時尚品牌超寫實廣告海報&#34;&gt;SPLASH 時尚品牌超寫實廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/miratechtool/status/2047780974709346606&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/miratechtool&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@miratechtool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058.webp&#34;
	width=&#34;1054&#34;
	height=&#34;1492&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058_hu_7b524443874af7f8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/058_hu_5c9db5a9d7637f12.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;SPLASH 時尚品牌超寫實廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a hyper-realistic fashion poster for “SPLASH” featuring the same girl from the reference image (keep her face 100% identical). She is sitting confidently on a glossy, liquid-style 3D SPLASH logo with water splash effects. One leg relaxed, one bent, strong editorial pose.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background has massive bold “SPLASH” text filling the frame, partially behind her. Add small tagline: “Own Your Style.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Outfit: modern black street-fashion (blazer, fitted top, trousers, sneakers).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: cinematic studio, soft key light + rim light, reflective highlights on liquid logo.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: luxury brand campaign (Zara / H&amp;amp;M), clean glossy environment.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Camera: 85mm lens, shallow depth of field, 8K, ultra-detailed, photorealistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;先鋒吉他雕塑時尚廣告&#34;&gt;先鋒吉他雕塑時尚廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/QamarRiaz1/status/2047777016733110722&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/QamarRiaz1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@QamarRiaz1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059.webp&#34;
	width=&#34;1448&#34;
	height=&#34;1086&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059_hu_9ce332a29f23dd91.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/059_hu_59f9454b2ce4155b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;先鋒吉他雕塑時尚廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Avant-garde fashion advertisement, oversized guitar positioned like sculpture, a guitarist in jeans casually seated on the a button as if furniture, giant word &amp;#34;Plism Art&amp;#34; behind in bold white typography, powder pastel studio background, reflective floor, luxury eyewear campaign aesthetic, ultra-clean layout, editorial magazine styling, Bold quote &amp;#34; What are you listening&amp;#34;   Tag : Create Own Change
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市美食地圖插畫&#34;&gt;城市美食地圖插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mm_zzm44854/status/2045861258520568230&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mm_zzm44854&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mm_zzm44854&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060.webp&#34;
	width=&#34;1080&#34;
	height=&#34;1080&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060_hu_e1522261822e773e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/060_hu_3a266ee6d774e351.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市美食地圖插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;illustrated map infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: &amp;#34;{argument name=\&amp;#34;art style\&amp;#34; default=\&amp;#34;watercolor and ink hand-drawn illustration on vintage parchment\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;title_section&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;text&amp;#34;: &amp;#34;{argument name=\&amp;#34;city name\&amp;#34; default=\&amp;#34;成都\&amp;#34;} {argument name=\&amp;#34;map title\&amp;#34; default=\&amp;#34;吃货暴走地图\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;mascot&amp;#34;: &amp;#34;cartoon red chili pepper wearing sunglasses and giving a thumbs up&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;border&amp;#34;: &amp;#34;{argument name=\&amp;#34;border decoration\&amp;#34; default=\&amp;#34;vine of green leaves and red chili peppers\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;textured beige parchment paper with yellow roads, blue rivers, and green park areas&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;landmarks&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 6,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;illustrations&amp;#34;: [&amp;#34;traditional pavilion&amp;#34;, &amp;#34;traditional monastery&amp;#34;, &amp;#34;modern skyscraper with climbing panda&amp;#34;, &amp;#34;tall TV tower&amp;#34;, &amp;#34;traditional gate&amp;#34;, &amp;#34;industrial buildings&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;人民公园&amp;#34;, &amp;#34;文殊院&amp;#34;, &amp;#34;IFS&amp;#34;, &amp;#34;339电视塔&amp;#34;, &amp;#34;宽窄巷子&amp;#34;, &amp;#34;东郊记忆&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;food_spots&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 12,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;illustrations&amp;#34;: [&amp;#34;mapo tofu&amp;#34;, &amp;#34;dumplings in chili oil&amp;#34;, &amp;#34;skewers in pot&amp;#34;, &amp;#34;sticky rice balls&amp;#34;, &amp;#34;egg baking cake&amp;#34;, &amp;#34;nine-grid hotpot&amp;#34;, &amp;#34;sweet potato noodles&amp;#34;, &amp;#34;cold skewers&amp;#34;, &amp;#34;spicy mixed dish&amp;#34;, &amp;#34;covered tea bowl&amp;#34;, &amp;#34;ice jelly dessert&amp;#34;, &amp;#34;spicy rabbit heads&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;1 陈麻婆豆腐&amp;#34;, &amp;#34;2 钟水饺&amp;#34;, &amp;#34;3 春熙路&amp;#34;, &amp;#34;4 宽窄巷子·三大炮&amp;#34;, &amp;#34;5 建设路·叶婆婆蛋烘糕&amp;#34;, &amp;#34;6 玉林路·小龙坎火锅&amp;#34;, &amp;#34;7 香香巷·肥肠粉&amp;#34;, &amp;#34;8 武侯祠大街·钵钵鸡&amp;#34;, &amp;#34;9 东郊记忆·冒椒火辣&amp;#34;, &amp;#34;10 人民公园·鹤鸣茶社&amp;#34;, &amp;#34;11 锦里古街·冰粉&amp;#34;, &amp;#34;12 双流老妈兔头&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;图例&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 5,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;items&amp;#34;: [&amp;#34;red dot&amp;#34;, &amp;#34;green house&amp;#34;, &amp;#34;green tree&amp;#34;, &amp;#34;blue line&amp;#34;, &amp;#34;yellow double line&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;美食地点&amp;#34;, &amp;#34;地标景点&amp;#34;, &amp;#34;公园绿地&amp;#34;, &amp;#34;河流湖泊&amp;#34;, &amp;#34;主要道路&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: &amp;#34;giant panda sitting and eating bamboo&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_right_extras&amp;#34;: [&amp;#34;vintage compass rose with N, S, E, W&amp;#34;, &amp;#34;disclaimer text &amp;#39;温馨提示:吃辣需谨慎,肠胃要保护~&amp;#39; with a red chili pepper icon&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3d-石階演變信息圖&#34;&gt;3D 石階演變信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2045792240044511277&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061_hu_11d526a0273d47c5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/061_hu_fc07f266c625fe79.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;3D 石階演變信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;evolutionary timeline infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;instruction&amp;#34;: &amp;#34;Using REFERENCE_0 as a structural base, transform the flat vector design into a highly realistic 3D infographic. Replace the smooth ramps with distinct stone steps and upgrade all organisms to photorealistic 3D models.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;{argument name=\&amp;#34;background style\&amp;#34; default=\&amp;#34;vintage textured parchment paper\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;staircase&amp;#34;: &amp;#34;{argument name=\&amp;#34;staircase material\&amp;#34; default=\&amp;#34;realistic textured stone blocks\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;subjects&amp;#34;: &amp;#34;{argument name=\&amp;#34;organism style\&amp;#34; default=\&amp;#34;highly detailed photorealistic 3D renders\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_title&amp;#34;: &amp;#34;{argument name=\&amp;#34;main title\&amp;#34; default=\&amp;#34;人类演化\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;left sidebar&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;labels&amp;#34;: [&amp;#34;L0: 单细胞生命&amp;#34;, &amp;#34;L1: 多细胞生物&amp;#34;, &amp;#34;L2: 动物界&amp;#34;, &amp;#34;L3: 脊索动物&amp;#34;, &amp;#34;L4: 上陆革命&amp;#34;, &amp;#34;L5: 哺乳纲&amp;#34;, &amp;#34;L6: 人科演化&amp;#34;, &amp;#34;L7: 智人纪元&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;获得的功能 / 失去的功能&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;description&amp;#34;: &amp;#34;Legend with plus and minus icons&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom center&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;演化关键里程碑&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 6,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;description&amp;#34;: &amp;#34;Timeline with a silhouette graphic of 6 figures showing ape-to-human evolution&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;description&amp;#34;: &amp;#34;Winding stone staircase with 25 numbered steps featuring specific organisms.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 25,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;notable_elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 07: Jellyfish&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 09: Ammonite&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 10: Trilobite&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 24: Walking human&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Step 25: {argument name=\&amp;#34;future evolution concept\&amp;#34; default=\&amp;#34;glowing cosmic silhouette with a question mark\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;仿生-skyray-飛機海報&#34;&gt;仿生 Skyray 飛機海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/_simonsmith/status/2048172203946996041&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/_simonsmith&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@_simonsmith&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062_hu_531e35a6a1142002.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/062_hu_33b717ad1d5e51b6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;仿生 Skyray 飛機海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;biomimetic aerospace concept poster&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;vehicle&amp;#34;:&amp;#34;futuristic aircraft concept&amp;#34;,&amp;#34;name&amp;#34;:&amp;#34;{argument name=\&amp;#34;vehicle name\&amp;#34; default=\&amp;#34;SKYRAY\&amp;#34;}&amp;#34;,&amp;#34;inspiration&amp;#34;:&amp;#34;{argument name=\&amp;#34;animal inspiration\&amp;#34; default=\&amp;#34;stingray\&amp;#34;}&amp;#34;,&amp;#34;design&amp;#34;:&amp;#34;blended-wing-body aircraft shaped like a manta ray or stingray, wide triangular planform, smooth organic curves, sharp pointed nose, slightly raised central spine, tapered wing tips curling subtly upward, dark graphite-black metallic skin with fine panel lines and faint blue illuminated accents along edges and seams&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;mood&amp;#34;:&amp;#34;premium futuristic industrial design presentation&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hyper-detailed cinematic 3D concept art mixed with blueprint visualization&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;black, charcoal, gunmetal, silver, deep ocean blue, electric cyan highlights&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;low-key dramatic studio lighting with glossy reflections, cool rim light, subtle underwater ambience in the top inspiration strip&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;full black poster with faint technical grid lines and soft vignetting&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;header&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;emblem mark&amp;#34;,&amp;#34;SKYRAY&amp;#34;,&amp;#34;INSPIRED BY THE SEA. ENGINEERED FOR THE SKY.&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;evolution strip&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper middle&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;realistic stingray underwater at far left&amp;#34;,&amp;#34;top-view biological stingray study&amp;#34;,&amp;#34;abstract aerodynamic line sketch&amp;#34;,&amp;#34;faceted aircraft blueprint transition drawing&amp;#34;,&amp;#34;final sleek aircraft concept at far right&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;hero render&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;large three-quarter view of the aircraft&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;technical views grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower middle&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;TOP&amp;#34;,&amp;#34;SIDE&amp;#34;,&amp;#34;FRONT&amp;#34;,&amp;#34;REAR&amp;#34;,&amp;#34;UNDERSIDE&amp;#34;,&amp;#34;DETAIL&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;footer text&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;{argument name=\&amp;#34;body text\&amp;#34; default=\&amp;#34;A biomimetic high-speed aircraft concept shaped by the hydrodynamic elegance of the stingray. Its blended wing body, low-drag silhouette, and fluid control surfaces translate ocean-born efficiency into atmospheric performance.\&amp;#34;}&amp;#34;]}],&amp;#34;technical views&amp;#34;:{&amp;#34;TOP&amp;#34;:&amp;#34;top orthographic view with measurement ticks&amp;#34;,&amp;#34;SIDE&amp;#34;:&amp;#34;thin side profile with long smooth belly curve&amp;#34;,&amp;#34;FRONT&amp;#34;:&amp;#34;front orthographic view emphasizing broad wingspan and central cockpit hump&amp;#34;,&amp;#34;REAR&amp;#34;:&amp;#34;rear orthographic view showing narrow tail end and wing sweep&amp;#34;,&amp;#34;UNDERSIDE&amp;#34;:&amp;#34;underside three-quarter view&amp;#34;,&amp;#34;DETAIL&amp;#34;:&amp;#34;close-up crop of metallic skin, seam lines, and glowing blue edge strip&amp;#34;}},&amp;#34;graphics&amp;#34;:{&amp;#34;logo&amp;#34;:&amp;#34;minimal four-point symmetrical emblem above title, resembling a stylized ray silhouette&amp;#34;,&amp;#34;arrows&amp;#34;:&amp;#34;4 thin cyan arrows connecting the 5 stages in the evolution strip&amp;#34;,&amp;#34;typography&amp;#34;:&amp;#34;widely spaced modern sans-serif uppercase text, clean luxury-tech branding&amp;#34;},&amp;#34;camera&amp;#34;:{&amp;#34;hero render&amp;#34;:&amp;#34;slightly elevated front-left three-quarter angle&amp;#34;,&amp;#34;technical views&amp;#34;:&amp;#34;orthographic&amp;#34;,&amp;#34;inspiration image&amp;#34;:&amp;#34;underwater side angle with light rays from above&amp;#34;},&amp;#34;quality&amp;#34;:&amp;#34;ultra-clean, polished, high contrast, sharp, poster-ready, concept design board for aerospace branding or speculative industrial design&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;道教三魂七魄海報&#34;&gt;道教三魂七魄海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/leyu37829/status/2048125950681075833&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/leyu37829&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@leyu37829&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063_hu_c232614ef0c677ad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/063_hu_98a733b8e5499d36.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;道教三魂七魄海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed vertical Taoist esoteric infographic poster in the style of an ancient Chinese religious scroll, printed on aged beige rice paper with fine ornamental borders, inked calligraphy, faded stains, and classical diagram annotations. At the top center, large black brush-calligraphy title text reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;道·三魂七魄&amp;#34;}. Directly below the title is a smaller paragraph of classical Chinese explanatory text in neat calligraphy. The composition is perfectly symmetrical and centered on a glowing vertical spiritual axis made of white-gold energy, mist, and lightning-like qi currents running from the bottom of the page to the heavens. At the very top, above the axis, depict 3 seated Taoist immortals or deities on clouds in a golden celestial realm, arranged left, center, and right, with halos and flowing robes in muted green, cream, and blue. Beneath them, create a towering multi-layered cosmological body diagram made of 9 stacked circular realms or platforms connected by swirling clouds and luminous energy. The upper 5 larger realms represent the five zang organs as miniature mythic landscapes: 1 forested green realm labeled liver/wood, 1 fiery red-gold temple city realm labeled heart/fire, 1 yellow earth realm with terraces labeled spleen/earth, 1 silver-blue mountain-and-water realm labeled lung/metal, and 1 dark blue watery abyss realm labeled kidney/water. Place a glowing meditating figure in a bright orb at the center junction between the upper organ realms and lower spirit layers. Below these, add 7 progressively darker circular underworld-like realms for the seven po souls, each densely populated with tiny scenes of human figures, spirits, beasts, ritual activity, suffering, temptation, conflict, and karmic symbolism, all wrapped by drifting smoke and energy ribbons. At the very bottom, show a seated human figure in meditation within a root-like cavern or corporeal foundation, surrounded by chains, rocks, and embodied worldly attachments. Around the central column, include exactly 9 labeled side panels and diagrams in traditional Chinese layout: top left a bagua and yin-yang cosmology circle; top right a dotted numerological or constellation-like chart; left upper a boxed list for 3 souls; right upper a boxed list for 7 po souls; left middle a five-elements relationship diagram with 5 colored nodes; right middle a circular essence-qi-spirit cycle diagram with 3 nodes; left lower a vertical boxed list of 7 categories or stages; right lower a boxed correspondence table; bottom left a five-direction and five-element human-body relation chart; bottom right a standing and seated meridian or cultivation body diagram. Use many small Chinese labels throughout every section, with classical seal stamps in red. The overall palette is antique parchment, sepia ink, muted jade, cinnabar red, smoky gray, gold, teal, and indigo. The style should feel like a museum-quality Daoist metaphysical chart, ultra intricate, hand-painted gongbi plus ink wash illustration, sacred, mystical, scholarly, dense with symbolism, extremely fine linework, soft cloud layering, and high-resolution poster design.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;復古-claude-shannon-信息圖海報&#34;&gt;復古 Claude Shannon 信息圖海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17/status/2048118645017219381&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mob_17&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064.webp&#34;
	width=&#34;1200&#34;
	height=&#34;849&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064_hu_76812c0cd0392b65.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/064_hu_362a7a69ff76f1c3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;復古 Claude Shannon 信息圖海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;141&#34;
		data-flex-basis=&#34;339px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;vintage editorial infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;Claude Shannon and information theory&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;era&amp;#34;:&amp;#34;1940s Bell Labs archival poster&amp;#34;,&amp;#34;look&amp;#34;:&amp;#34;aged cream paper, blueprint drafting grid, thin ink linework, muted navy and charcoal printing, subtle stains and paper wear, technical illustration mixed with newspaper editorial design&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;high-detail diagrammatic collage with engraved portrait, scientific charts, labeled panels, and hand-drawn signal graphics&amp;#34;},&amp;#34;poster&amp;#34;:{&amp;#34;headline&amp;#34;:&amp;#34;Claude Shannon — The Architecture of Information&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;How uncertainty became measurable, and communication became engineering.&amp;#34;,&amp;#34;topRightMeta&amp;#34;:{&amp;#34;note&amp;#34;:&amp;#34;NOTE TOSELF No. 6713–2&amp;#34;,&amp;#34;date&amp;#34;:&amp;#34;MAY 1948&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;A Mathematical Theory of Communication&amp;#34;}},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;left archival sidebar&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;far left vertical column&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;BELL LABORATORIES MURRAY HILL, N.J.&amp;#34;,&amp;#34;ENGINEERING THE INTANGIBLE&amp;#34;,&amp;#34;CLAUDE E. SHANNON 1916–2001&amp;#34;,&amp;#34;TOOLS OF THE INFORMATION AGE&amp;#34;,&amp;#34;quote panel&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;THE COMMUNICATION MODEL&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper middle wide panel&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;1 INFORMATION SOURCE&amp;#34;,&amp;#34;2 ENCODER&amp;#34;,&amp;#34;3 CHANNEL&amp;#34;,&amp;#34;4 DECODER&amp;#34;,&amp;#34;5 DESTINATION&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;ENTROPY: THE MEASURE OF UNCERTAINTY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right box&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;H(X) = −Σ p(x) log2 p(x)&amp;#34;,&amp;#34;PROBABILITY DISTRIBUTION p(x)&amp;#34;,&amp;#34;MORE EVEN MORE MAXED UNCERTAINTY&amp;#34;,&amp;#34;MORE LOPSIDED LESS UNCERTAINTY&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;lower theory panels&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle to lower band&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;A ENTROPY — uncertainty before a message is known&amp;#34;,&amp;#34;B NOISE — randomness that corrupts transmission&amp;#34;,&amp;#34;C Redundancy &amp;amp; Error Correction — structure added so signals can survive failure&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;THEORY THAT TRANSFORMED CIVILIZATION&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom horizontal timeline&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;labels&amp;#34;:[&amp;#34;1840s TELEGRAPHY&amp;#34;,&amp;#34;1876+ TELEPHONE NETWORKS&amp;#34;,&amp;#34;1930s–40s DIGITAL COMPUTERS&amp;#34;,&amp;#34;1950s–60s SATELLITE COMMUNICATION&amp;#34;,&amp;#34;1970s INTERNET PROTOCOLS&amp;#34;,&amp;#34;1980s–90s DATA COMPRESSION&amp;#34;,&amp;#34;1990s–2000s CRYPTOGRAPHY&amp;#34;,&amp;#34;2010s+ AI &amp;amp; INFORMATION SYSTEMS&amp;#34;]}],&amp;#34;centerpiece&amp;#34;:&amp;#34;a large abstract cloud of blue and gray signal noise, dots, lines, and waveforms behind the communication model, with arrows moving left to right through the five stages&amp;#34;},&amp;#34;visualElements&amp;#34;:{&amp;#34;portrait&amp;#34;:{&amp;#34;subject&amp;#34;:&amp;#34;{argument name=\&amp;#34;scientist name\&amp;#34; default=\&amp;#34;Claude Shannon\&amp;#34;}&amp;#34;,&amp;#34;placement&amp;#34;:&amp;#34;left-center&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;black-and-white archival seated portrait at a desk with the face intentionally obscured by a pale square censor block, wearing suit and tie, writing on paper&amp;#34;},&amp;#34;objectsLeft&amp;#34;:[&amp;#34;rotary telephone on desk&amp;#34;,&amp;#34;open notebook or papers&amp;#34;,&amp;#34;technical console with CRT screen and knobs behind portrait&amp;#34;,&amp;#34;small icon row of 4 tools: oscilloscope, signal meter, relay, punched tape&amp;#34;],&amp;#34;communicationModel&amp;#34;:[&amp;#34;book and symbols under source&amp;#34;,&amp;#34;binary digits under encoder&amp;#34;,&amp;#34;large noisy channel cloud with wave overlays&amp;#34;,&amp;#34;binary digits and interpretation under decoder&amp;#34;,&amp;#34;light bulb icon under destination&amp;#34;],&amp;#34;chartsAndDiagrams&amp;#34;:[&amp;#34;bar chart for entropy probabilities&amp;#34;,&amp;#34;two low vs high entropy mini bar charts&amp;#34;,&amp;#34;tree diagram and entropy notation&amp;#34;,&amp;#34;signal distortion sketches labeled thermal noise, cross talk, distortion&amp;#34;,&amp;#34;error-correction binary pipeline from original message to recovered message&amp;#34;],&amp;#34;bottomDecor&amp;#34;:[&amp;#34;small waveform legend with sine wave, digital signal, and noise&amp;#34;,&amp;#34;archival stamp or footer on lower right&amp;#34;]},&amp;#34;color&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;warm ivory paper&amp;#34;,&amp;#34;primaryInk&amp;#34;:&amp;#34;dark navy&amp;#34;,&amp;#34;secondaryInk&amp;#34;:&amp;#34;charcoal gray&amp;#34;,&amp;#34;accent&amp;#34;:&amp;#34;faded steel blue&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;symmetrical wide poster with dense boxed annotations, fine border lines, and a museum-quality educational infographic feel&amp;#34;,&amp;#34;textDensity&amp;#34;:&amp;#34;very high, with many small labels, formulas, captions, and historical notes in a carefully organized grid&amp;#34;,&amp;#34;aspectRatio&amp;#34;:&amp;#34;16:9 landscape&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;鄭問致敬水墨海報&#34;&gt;鄭問致敬水墨海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17/status/2048118645017219381&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mob_17&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mob_17&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065.webp&#34;
	width=&#34;849&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065_hu_7220895371d0d86.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/065_hu_969f4ee59faccfd2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;鄭問致敬水墨海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vintage editorial poster on aged rice paper celebrating {argument name=&amp;#34;artist name&amp;#34; default=&amp;#34;CHEN UEN&amp;#34;}, designed like a museum infographic mixed with Chinese ink wash illustration and calligraphy. The format is a single vertically oriented poster with a weathered parchment background, ink splatters, faded handwritten annotations, red seal stamps, and a scholarly, archival atmosphere. At the very top, place large black Chinese calligraphy for the name 鄭問, followed by a slash and the romanized name {argument name=&amp;#34;romanized name&amp;#34; default=&amp;#34;CHEN UEN&amp;#34;} in large serif capitals, with a small red seal beside it. Under the title, add the subtitle {argument name=&amp;#34;subtitle text&amp;#34; default=&amp;#34;The Taiwanese Master Who Turned Comics into Ink-Born Epic&amp;#34;} in elegant reddish-brown serif text. In the center, feature a dramatic painterly scene of 1 seated male artist in a loose white shirt at a desk, holding a brush over paper, his face intentionally obscured by a soft rectangular blur. Behind him, surround him with a swirling halo-like storm of monochrome ink-brush warriors and historical figures: exact count 9 visible character figures, including armored generals, swordsmen, and mounted riders, emerging from explosive black brushwork and smoke-like ink textures. On the left side, create a vertical section titled “Life &amp;amp; Milestones” with a black brushstroke header and smaller Chinese subtitle text. List exactly 6 timeline entries with red year markers and bilingual captions: 1958 born in Taiwan, 1983 Warrior Panther, 1989 Abi Sword, 1990 Heroes of the Eastern Zhou, 1991 Japan Cartoonists Association Award, 2017 legacy continues. Below that, add a small section titled “Ink in Detail” containing exactly 4 boxed brush studies labeled with short English captions: Dry brush texture, Ink wash gradient, Splatter energy, Bold contour line. On the right side, create a vertical section titled “Visual Method” with a black brushstroke header and smaller Chinese subtitle text. Include exactly 5 stacked boxed studies with image-and-caption layout: Brush as blade, Ink as atmosphere, Anatomy as fate, History as theatre, Speed lines become calligraphy. In the lower center, create a section titled “Major Works Constellation” with a dark brushstroke heading. Arrange exactly 5 circular work nodes around a central ink ring with Chinese calligraphy inside. Label the 5 nodes: Abi Sword, Heroes of the Eastern Zhou, Assassin Biographies, Magical Super Asia, Game character design legacy. Each circle contains a distinct monochrome or muted-color ink illustration, with subtle connecting marks like a constellation diagram. At the lower right, add a section titled “Studio Notes” containing exactly 6 visible objects: 4 hanging calligraphy brushes, 1 ink bowl, and 1 painter’s palette with blue and red pigment; beneath them place a sketchbook page with light pencil figure studies. Across the bottom, add a wide section titled “Why He Matters” with a black brushstroke header and smaller Chinese subtitle text, followed by a paragraph of serif body text in English describing his importance to comics, painting, calligraphy, cinema, and epic storytelling. Use a restrained palette of sepia, black ink, off-white paper, muted gray, with small accents of deep red and occasional blue. The whole image should feel like a refined cultural tribute poster, dense but balanced, highly detailed, painterly, and authentic to Chinese ink aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;水象星座角色海報&#34;&gt;水象星座角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066_hu_fa9b9087f2064039.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/066_hu_d08b612af3d235a1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;水象星座角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese zodiac-style character infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;twelve zodiac character list, water signs edition&amp;#34;,&amp;#34;language&amp;#34;:&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;elegant anime-inspired character catalog with editorial infographic layout&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;soft polished digital illustration, pastel gradients, delicate sparkles, ornamental border design&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;dreamy, celestial, refined, feminine, aquatic&amp;#34;},&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;2:3&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;very light pearl white with pale blue-lavender tint, subtle texture, thin decorative frame with filigree corners and tiny stars&amp;#34;},&amp;#34;header&amp;#34;:{&amp;#34;title&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;十二星座角色清單|水象星座\&amp;#34;}&amp;#34;,&amp;#34;subtitle&amp;#34;:&amp;#34;感受・直覺・共鳴&amp;#34;,&amp;#34;icons&amp;#34;:[&amp;#34;small stars&amp;#34;,&amp;#34;water droplet emblem in top right&amp;#34;,&amp;#34;curled cloud-like line art in top left&amp;#34;]},&amp;#34;layout&amp;#34;:{&amp;#34;sections_count&amp;#34;:3,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;巨蟹座 Cancer&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;powder blue&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Cancer glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Cancer constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:情感守護者,把人放在心上&amp;#34;,&amp;#34;性格:溫柔、敏感、顧家&amp;#34;,&amp;#34;行動原則:先確認感受,再保護重要的人&amp;#34;,&amp;#34;戀愛傾向:慢慢靠近,越熟越黏&amp;#34;,&amp;#34;人際怪癖:嘴上說沒事,實際會記很久&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, facing forward, arms gently wrapped around a large seashell pillow&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark hair in a low ponytail&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;light blue celestial slip dress with lace trim and sheer cardigan embroidered with stars and moons&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;minimal jewelry&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;soft blue night sky with crescent moon, seashell, sparkling stars, stylized ocean wave and tiny water droplets&amp;#34;}},{&amp;#34;title&amp;#34;:&amp;#34;天蠍座 Scorpio&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;deep violet&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Scorpio glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Scorpio constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:深海偵察者,情緒有深度&amp;#34;,&amp;#34;性格:專注、神秘、意志強&amp;#34;,&amp;#34;行動原則:先觀察,再一擊到位&amp;#34;,&amp;#34;戀愛傾向:愛得深,重忠誠與獨占感&amp;#34;,&amp;#34;人際怪癖:越在乎越不說,會偷偷試探&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, one hand near chin in a composed, enigmatic gesture&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark ponytail&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;black semi-sheer dress with gothic details and a dark plum off-shoulder shawl&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;dangling earrings and layered necklace&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;dark purple celestial sea scene with crescent moon, bubbles, stars, and curling misty water shapes&amp;#34;}},{&amp;#34;title&amp;#34;:&amp;#34;雙魚座 Pisces&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom panel&amp;#34;,&amp;#34;theme_color&amp;#34;:&amp;#34;lavender&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Pisces glyph inside circle at left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;Pisces constellation at upper right&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;元素:水&amp;#34;,&amp;#34;概念:夢境共感者,靠直覺導航&amp;#34;,&amp;#34;性格:浪漫、柔軟、有想像力&amp;#34;,&amp;#34;行動原則:先感受,再順流找答案&amp;#34;,&amp;#34;戀愛傾向:容易心動,渴望靈魂陪伴&amp;#34;,&amp;#34;人際怪癖:常把別人的情緒也一起感受&amp;#34;],&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;same young woman model reimagined as zodiac character&amp;#34;,&amp;#34;pose&amp;#34;:&amp;#34;half-body portrait, one hand lifted as if balancing floating bubbles, other hand resting lightly at chest&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark ponytail with a pale flower hair ornament&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;translucent lavender fantasy dress with soft draped sleeves and shimmering fabric&amp;#34;,&amp;#34;accessories&amp;#34;:&amp;#34;delicate earrings and necklace&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;pale lilac underwater-celestial blend with bubbles, sparkles, and flowing translucent wave forms&amp;#34;}}],&amp;#34;dividers&amp;#34;:&amp;#34;three horizontal framed panels with thin ornamental borders&amp;#34;},&amp;#34;footer&amp;#34;:{&amp;#34;center_icon&amp;#34;:&amp;#34;small blue seashell emblem&amp;#34;,&amp;#34;decorations&amp;#34;:[&amp;#34;tiny stars&amp;#34;,&amp;#34;fine scrollwork&amp;#34;]},&amp;#34;constraints&amp;#34;:[&amp;#34;all three zodiac entries must use the same woman as the base character with different styling, clothing, pose, and mood&amp;#34;,&amp;#34;text should be clean, editorial, and readable&amp;#34;,&amp;#34;each panel should clearly separate illustration area on the left and text block on the right&amp;#34;,&amp;#34;maintain cohesive water-element theme across all 3 signs&amp;#34;,&amp;#34;do not include the other nine zodiac signs in this image&amp;#34;]}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;土象星座角色海報&#34;&gt;土象星座角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067_hu_f718ee29bebcc79f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/067_hu_b8570c65f3d8c476.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;土象星座角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;vintage zodiac character infographic poster&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;earth signs only&amp;#34;,&amp;#34;language&amp;#34;:&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;elegant editorial infographic with soft anime-inspired live-action portrait compositing&amp;#34;,&amp;#34;palette&amp;#34;:&amp;#34;warm beige, cream, taupe, olive-gray, muted brown, antique gold&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;stable, refined, calm, practical&amp;#34;,&amp;#34;texture&amp;#34;:&amp;#34;aged paper background with subtle speckles and thin ornamental borders&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;clean high-resolution print poster, soft lighting, delicate botanical and celestial line art&amp;#34;},&amp;#34;poster&amp;#34;:{&amp;#34;orientation&amp;#34;:&amp;#34;vertical&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;3:4&amp;#34;,&amp;#34;title&amp;#34;:&amp;#34;十二星座角色清單|土象星座&amp;#34;,&amp;#34;subtitle&amp;#34;:&amp;#34;穩定・務實・沉著&amp;#34;,&amp;#34;decorations&amp;#34;:[&amp;#34;ornamental corner filigree&amp;#34;,&amp;#34;small gold sparkles&amp;#34;,&amp;#34;botanical branches&amp;#34;,&amp;#34;mountain illustrations&amp;#34;,&amp;#34;thin panel dividers&amp;#34;],&amp;#34;sections_count&amp;#34;:3},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;金牛座 Taurus&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:感官收藏家,穩穩生活&amp;#34;,&amp;#34;性格:務實、耐心、重享受&amp;#34;,&amp;#34;行動原則:先確認值得,再長線投入&amp;#34;,&amp;#34;戀愛傾向:慢熱但專情,重安全感&amp;#34;,&amp;#34;人際怪癖:對喜歡的人會默默餵食&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;處女座 Virgo&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:秩序管理者,細節控場&amp;#34;,&amp;#34;性格:理性、細膩、可靠&amp;#34;,&amp;#34;行動原則:先整理,再精準出手&amp;#34;,&amp;#34;戀愛傾向:用照顧和實際行動表達喜歡&amp;#34;,&amp;#34;人際怪癖:嘴上挑剔,心裡其實很在乎&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;摩羯座 Capricorn&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;元素:土&amp;#34;,&amp;#34;概念:登峰實幹家,目標導向&amp;#34;,&amp;#34;性格:穩重、自律、有責任感&amp;#34;,&amp;#34;行動原則:先規劃,再穩定推進&amp;#34;,&amp;#34;戀愛傾向:慢熟務實,願意長期承諾&amp;#34;,&amp;#34;人際怪癖:關心常包裝成提醒與安排&amp;#34;]}],&amp;#34;centerpiece&amp;#34;:&amp;#34;three stacked horizontal character cards, each with a portrait on the left and text profile on the right&amp;#34;},&amp;#34;character&amp;#34;:{&amp;#34;identity&amp;#34;:&amp;#34;the same young East Asian woman appears in all 3 sections&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;early 20s&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;long dark brown to black hair in a low ponytail with side part&amp;#34;,&amp;#34;face&amp;#34;:&amp;#34;soft feminine features, natural makeup, calm expression&amp;#34;,&amp;#34;customization&amp;#34;:&amp;#34;keep the same base character across all zodiac entries, differentiated by wardrobe, pose, props, and themed background motifs&amp;#34;},&amp;#34;cards&amp;#34;:[{&amp;#34;sign&amp;#34;:&amp;#34;Taurus&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♉&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, slightly turned, holding a ceramic mug with both hands&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;cream knit sleeveless top under a soft sage-gray cardigan with delicate floral embroidery&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;gentle, relaxed, nurturing&amp;#34;,&amp;#34;props_count&amp;#34;:1,&amp;#34;props&amp;#34;:[&amp;#34;mug&amp;#34;]},&amp;#34;background&amp;#34;:&amp;#34;large pale circular halo, floral branch illustration, soft botanical motifs, small mountain drawing in upper right&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;comfort, sensuality, domestic calm, slow living&amp;#34;},{&amp;#34;sign&amp;#34;:&amp;#34;Virgo&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♍&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, one hand holding a pen near the chin, the other arm holding an open notebook or planner&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;light cream blouse with a bow tie collar under a pale sage vest with gold buttons&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;thoughtful, analytical, composed&amp;#34;,&amp;#34;props_count&amp;#34;:2,&amp;#34;props&amp;#34;:[&amp;#34;pen&amp;#34;,&amp;#34;notebook&amp;#34;]},&amp;#34;background&amp;#34;:&amp;#34;fine geometric diagram lines, botanical sprigs, diamond emblem with leaf motif&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;order, precision, intelligence, organization&amp;#34;},{&amp;#34;sign&amp;#34;:&amp;#34;Capricorn&amp;#34;,&amp;#34;symbol&amp;#34;:&amp;#34;♑&amp;#34;,&amp;#34;portrait&amp;#34;:{&amp;#34;pose&amp;#34;:&amp;#34;waist-up, arms crossed, confident upright stance&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;charcoal tailored blazer over a dark vest and crisp white shirt, small round lapel pin&amp;#34;,&amp;#34;expression&amp;#34;:&amp;#34;serious, disciplined, self-assured&amp;#34;,&amp;#34;props_count&amp;#34;:0,&amp;#34;props&amp;#34;:[]},&amp;#34;background&amp;#34;:&amp;#34;dramatic layered mountain landscape in sepia tones with subtle star-like sparkles&amp;#34;,&amp;#34;visual_concept&amp;#34;:&amp;#34;ambition, endurance, authority, climbing toward goals&amp;#34;}],&amp;#34;typography&amp;#34;:{&amp;#34;title_font&amp;#34;:&amp;#34;classic high-contrast serif Chinese type&amp;#34;,&amp;#34;sign_name_font&amp;#34;:&amp;#34;large bold Chinese serif with elegant italic Latin zodiac name&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean readable Chinese print font&amp;#34;,&amp;#34;icon_style&amp;#34;:&amp;#34;filled circular brown icons next to each bullet line&amp;#34;},&amp;#34;composition&amp;#34;:{&amp;#34;margin&amp;#34;:&amp;#34;generous cream margins&amp;#34;,&amp;#34;panel_style&amp;#34;:&amp;#34;rounded rectangular panels with thin gold-brown borders&amp;#34;,&amp;#34;spacing&amp;#34;:&amp;#34;even vertical stacking with narrow separators&amp;#34;,&amp;#34;text_alignment&amp;#34;:&amp;#34;left-aligned profile bullets on the right side of each card&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;火象星座角色海報&#34;&gt;火象星座角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068_hu_7ef6d97057f11809.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/068_hu_ea85fb4d58a7f224.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;火象星座角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A polished vertical infographic poster in elegant East Asian editorial style, themed around the fire signs of the zodiac using one consistent female character reimagined in three different costumes. Cream parchment background with thin ornamental borders, small corner flourishes, tiny sparkles, and warm red-orange-gold accents throughout. Large Chinese headline at the top reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;十二星座角色清單|火象星座&amp;#34;}, with a smaller subheading beneath reading {argument name=&amp;#34;subheading text&amp;#34; default=&amp;#34;熱情・行動・勇氣&amp;#34;}, and a decorative flame icon at the top right. The layout contains exactly 3 stacked profile panels with rounded rectangular borders and generous margins: Aries on top, Leo in the middle, Sagittarius on the bottom. Each panel is split visually with the character on the left and a text/spec area on the right, plus a zodiac symbol badge on the far left and a small constellation diagram on the far right.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the same young East Asian woman in all 3 panels, slim build, long dark hair in a high ponytail, shown from about thigh-up to waist-up, facing slightly toward camera, styled as a fashion-model zodiac character sheet. Keep facial features neutral and refined, clean beauty lighting, soft airbrushed illustration-photo composite look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 1: Aries. Chinese title and English subtitle: &amp;#34;牡羊座 Aries&amp;#34;. Dominant color scheme: vivid red with warm coral highlights. Zodiac symbol badge shows Aries glyph. Constellation on the right. Behind the character, faint circular mystical line art and flame motifs. Outfit: sporty warrior idol styling with a white crop top, red open short-sleeve jacket with gold trim, red belt, and red wrist wraps or fingerless arm accessories. Pose: confident, energetic, one fist raised near the shoulder and the other hand on her hip. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:點火者,直覺先行&amp;#34; 3) &amp;#34;性格:熱情、直接、好勝&amp;#34; 4) &amp;#34;行動原則:先衝再修正&amp;#34; 5) &amp;#34;戀愛傾向:心動就追,喜歡熱烈互動&amp;#34; 6) &amp;#34;人際怪癖:嫌節奏太慢時會自己接手&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 2: Leo. Chinese title and English subtitle: &amp;#34;獅子座 Leo&amp;#34;. Dominant color scheme: gold, champagne, and soft amber. Zodiac symbol badge shows Leo glyph. Constellation on the right. Background includes radiant sunburst styling and a faint majestic lion illustration silhouette behind the character. Outfit: glamorous regal gown in pale gold with ornate embroidery, jeweled bodice details, flowing translucent cape sleeves, elegant necklace, and a small crown or tiara. Pose: poised and queenly, one hand lightly touching the chest or collarbone, shoulders open, projecting confidence and star power. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:舞台中心,自帶光芒&amp;#34; 3) &amp;#34;性格:大方、自信、要面子&amp;#34; 4) &amp;#34;行動原則:先定氣場,再帶隊前進&amp;#34; 5) &amp;#34;戀愛傾向:喜歡被偏愛,也樂於寵人&amp;#34; 6) &amp;#34;人際怪癖:明明在意,卻要裝沒事&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 3: Sagittarius. Chinese title and English subtitle: &amp;#34;射手座 Sagittarius&amp;#34;. Dominant color scheme: rust red, burnt orange, brown leather, and warm ivory. Zodiac symbol badge shows Sagittarius glyph. Constellation on the right. Background features faint compass-circle graphics and flame accents. Outfit: adventurous archer styling with an ivory blouse, red scarf, brown leather harness straps, utility belt, and arm bracers. Pose: dynamic action shot drawing a bow, arrow aimed to the right, with a small glowing spark at the bow grip or arrow rest. Include exactly 6 info lines with small circular icons before each line, all in Chinese: 1) &amp;#34;元素:火&amp;#34; 2) &amp;#34;概念:自由旅人,邊走邊發現&amp;#34; 3) &amp;#34;性格:樂觀、坦率、好奇&amp;#34; 4) &amp;#34;行動原則:先出發,路上再找答案&amp;#34; 5) &amp;#34;戀愛傾向:喜歡輕鬆真誠,不愛被綁住&amp;#34; 6) &amp;#34;人際怪癖:聊到一半常被新鮮事帶走&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Overall design should feel premium, feminine, mystical, and collectible, like a social-media-ready zodiac character list poster. Use elegant serif-style Chinese typography for the main sign names and italic calligraphic English for Aries, Leo, and Sagittarius. Keep all text crisp, aligned, and readable. Add one small decorative fire emblem centered near the bottom border. Aspect ratio 3:4 portrait.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;風象星座角色海報&#34;&gt;風象星座角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia/status/2048114825398731143&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/komorimedia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@komorimedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069.webp&#34;
	width=&#34;848&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069_hu_42522190a4347a3c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/069_hu_cb063e06d04af3cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;風象星座角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese zodiac-themed character infographic poster&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;3:4&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;clean pastel editorial infographic with anime-inspired fashion photography, soft magical accents, elegant horoscope design, premium magazine layout&amp;#34;,&amp;#34;background&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;warm ivory&amp;#34;,&amp;#34;border&amp;#34;:&amp;#34;thin decorative gold frame with small ornamental corners and tiny sparkles&amp;#34;,&amp;#34;top_right_motif&amp;#34;:&amp;#34;large pale air-element swirl ornament&amp;#34;},&amp;#34;title_block&amp;#34;:{&amp;#34;headline&amp;#34;:&amp;#34;十二星座角色清單|風象星座&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;靈活・交流・思辨&amp;#34;,&amp;#34;alignment&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;headline_color&amp;#34;:&amp;#34;deep desaturated blue&amp;#34;,&amp;#34;subheadline_color&amp;#34;:&amp;#34;muted gold&amp;#34;},&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;description&amp;#34;:&amp;#34;the same young East Asian woman used as the base character appears in 3 separate horoscope panels, each shown from about thigh-up to waist-up with long dark hair and soft feminine styling, photographed frontally and integrated into illustrated pastel zodiac backdrops&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;雙子座 Gemini&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;butter yellow and cream&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Gemini glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Gemini constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;playful double peace signs raised beside her face&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;pale yellow cardigan over a white ribbed crop top, light bottoms, yellow belt, delicate necklace&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;speech bubble icon&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;curved flowing lines&amp;#34;,&amp;#34;soft dots&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:資訊玩家,靈感跳接&amp;#34;,&amp;#34;性格:機靈、善聊、多變&amp;#34;,&amp;#34;行動原則:先交流,再快速轉向&amp;#34;,&amp;#34;戀愛傾向:喜歡有趣互動與腦力火花&amp;#34;,&amp;#34;人際怪癖:話題切換速度快到像開分頁&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;天秤座 Libra&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;middle panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;blush pink and pastel lavender&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Libra glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Libra constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;one hand raised open-palmed as if presenting balance, the other hand near her chin in an elegant thoughtful pose&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;pink blazer draped over shoulders, pastel pink-and-blue wrapped dress, jeweled belt, earrings, necklace, bracelet&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;scales illustration&amp;#34;,&amp;#34;flowing ribbon-like swirls&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;soft gradient haze&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:關係設計師,追求平衡&amp;#34;,&amp;#34;性格:優雅、圓融、審美強&amp;#34;,&amp;#34;行動原則:先衡量,再找最順解法&amp;#34;,&amp;#34;戀愛傾向:重氛圍與互相體面&amp;#34;,&amp;#34;人際怪癖:選太久,但又很會照顧場面&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;水瓶座 Aquarius&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom panel&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;theme_color&amp;#34;:&amp;#34;lavender, icy blue, and silver&amp;#34;,&amp;#34;zodiac_symbol&amp;#34;:&amp;#34;Aquarius glyph inside a circle on the left&amp;#34;,&amp;#34;constellation&amp;#34;:&amp;#34;small Aquarius constellation in the upper right&amp;#34;,&amp;#34;character_pose&amp;#34;:&amp;#34;holding and tilting a futuristic transparent vessel as glowing water-like energy pours out in looping streams&amp;#34;,&amp;#34;outfit&amp;#34;:&amp;#34;metallic silver crop top and skirt set with translucent iridescent jacket, futuristic straps, reflective accessories&amp;#34;,&amp;#34;background_motifs_count&amp;#34;:4,&amp;#34;background_motifs&amp;#34;:[&amp;#34;glowing circular energy rings&amp;#34;,&amp;#34;constellation lines&amp;#34;,&amp;#34;sparkles&amp;#34;,&amp;#34;light trails&amp;#34;],&amp;#34;text_items_count&amp;#34;:6,&amp;#34;text_items&amp;#34;:[&amp;#34;元素:風&amp;#34;,&amp;#34;概念:未來觀察員,規則改革者&amp;#34;,&amp;#34;性格:獨立、理想派、腦洞大&amp;#34;,&amp;#34;行動原則:先思考原理,再另闢路線&amp;#34;,&amp;#34;戀愛傾向:重精神共鳴,也需要個人空間&amp;#34;,&amp;#34;人際怪癖:忽冷忽熱,其實是在充電&amp;#34;]}],&amp;#34;panel_count&amp;#34;:3},&amp;#34;typography&amp;#34;:{&amp;#34;languages&amp;#34;:[&amp;#34;Traditional Chinese&amp;#34;,&amp;#34;English zodiac names&amp;#34;],&amp;#34;headline_font&amp;#34;:&amp;#34;elegant high-contrast serif&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean legible Chinese serif or sans-serif hybrid&amp;#34;,&amp;#34;zodiac_english&amp;#34;:&amp;#34;italic calligraphic serif&amp;#34;},&amp;#34;visual_rules&amp;#34;:{&amp;#34;each_panel_has&amp;#34;:8,&amp;#34;panel_elements&amp;#34;:[&amp;#34;left zodiac glyph badge&amp;#34;,&amp;#34;center-left character&amp;#34;,&amp;#34;right text block&amp;#34;,&amp;#34;English zodiac name&amp;#34;,&amp;#34;small constellation&amp;#34;,&amp;#34;pastel illustrated background motifs&amp;#34;,&amp;#34;thin panel border&amp;#34;,&amp;#34;6 bullet-style info lines with icons&amp;#34;],&amp;#34;spacing&amp;#34;:&amp;#34;generous margins and symmetrical alignment&amp;#34;,&amp;#34;render_quality&amp;#34;:&amp;#34;high resolution, crisp print-ready infographic&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;藏族禮儀帽民族誌圖版&#34;&gt;藏族禮儀帽民族誌圖版
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/degewa/status/2048104569037783226&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/degewa&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@degewa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070_hu_9defc08da0469adb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/070_hu_9668df56d438f17a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;藏族禮儀帽民族誌圖版&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using REFERENCE_0 and REFERENCE_1, create a clean ethnographic archive plate focused on the ceremonial hat. Use REFERENCE_0 as the historical Tibetan context and silhouette reference, and REFERENCE_1 as the color, material, and ornament reference for the hat. Isolate and reconstruct the hat as a museum-style object study, removing the seated body as the main subject. Present the hat on an off-white document page as a scholarly catalog sheet in Chinese with small romanization. Add 8 numbered callouts around the object with fine dashed leader lines, each pointing to a specific structural detail. The centerpiece should be one large three-quarter underside view of the hat. Also include exactly 4 supplementary views/details: 1 side-profile wearing sketch with a faint line-drawn bust, 1 underside interior view, 1 top-down view, and 2 square close-up material swatches. Add exactly 4 thread-color samples near the lower right: blue, red, white, and yellow. At the top center, add the large title {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;唐徐帽&amp;#34;} with the romanization {argument name=&amp;#34;romanization&amp;#34; default=&amp;#34;(thang zhwa)&amp;#34;} beneath it, plus a smaller subtitle describing it as a summer ceremonial hat of high-ranking Tibetan monks. In the upper left, add a boxed metadata panel with multiple short Chinese fields, and in the upper right add a plate number reading {argument name=&amp;#34;plate number&amp;#34; default=&amp;#34;图版 No. 27&amp;#34;}. At the bottom, add one bordered note paragraph in Chinese. Overall style: meticulous archival infographic, anthropological catalog illustration, historically informed, precise woven texture, ivory-gold base with blue and red ornament, elegant print layout, thin rules and decorative divider marks, high-detail object rendering on a plain paper background.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;復古-prs-吉他譜系海報&#34;&gt;復古 PRS 吉他譜系海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GlennHasABeard/status/2048087784141857235&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/GlennHasABeard&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GlennHasABeard&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071_hu_c00ca7ff3d8542ef.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/071_hu_3776a06329c3d552.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;復古 PRS 吉他譜系海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;luxury vintage guitar comparison infographic poster&amp;#34;,&amp;#34;subject&amp;#34;:&amp;#34;a highly detailed, vertically oriented PRS electric guitar lineup chart designed like a premium museum poster or collector&amp;#39;s reference board&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;ornate, dark, glossy, high-contrast, gold-foil typography, elegant wood-and-metal textures, symmetrical grid layout, premium catalog aesthetic, subtle vintage patina, ultra sharp graphic design&amp;#34;,&amp;#34;branding&amp;#34;:{&amp;#34;main headline&amp;#34;:&amp;#34;THE LEGENDARY LINEAGE OF {argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;PRS GUITARS\&amp;#34;}&amp;#34;,&amp;#34;subheadline&amp;#34;:&amp;#34;EVERY ICON. EVERY LINE. ONE HERITAGE.&amp;#34;,&amp;#34;signature&amp;#34;:&amp;#34;Paul Reed Smith&amp;#34;,&amp;#34;left seal&amp;#34;:&amp;#34;PAUL REED SMITH GUITARS&amp;#34;,&amp;#34;right seal&amp;#34;:&amp;#34;MADE IN MARYLAND U.S.A.&amp;#34;},&amp;#34;palette&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;black and deep charcoal with dark figured wood accents&amp;#34;,&amp;#34;primary&amp;#34;:&amp;#34;antique gold&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;cream&amp;#34;,&amp;#34;accent colors&amp;#34;:[&amp;#34;deep green&amp;#34;,&amp;#34;teal&amp;#34;,&amp;#34;royal blue&amp;#34;,&amp;#34;purple&amp;#34;,&amp;#34;gold&amp;#34;,&amp;#34;burgundy&amp;#34;]},&amp;#34;layout&amp;#34;:{&amp;#34;format&amp;#34;:&amp;#34;single-page vertical poster&amp;#34;,&amp;#34;header&amp;#34;:{&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;elements&amp;#34;:[&amp;#34;large central title&amp;#34;,&amp;#34;small tagline below&amp;#34;,&amp;#34;script signature&amp;#34;,&amp;#34;2 circular emblems in upper left and upper right&amp;#34;,&amp;#34;3 horizontal legend boxes under the title&amp;#34;]},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;PRESTIGE TIER KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper left below title&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;SE&amp;#34;,&amp;#34;S2&amp;#34;,&amp;#34;CE&amp;#34;,&amp;#34;CORE&amp;#34;,&amp;#34;WOOD LIBRARY&amp;#34;,&amp;#34;PRIVATE STOCK&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;PICKUP ICON KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper center-right below title&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;HH&amp;#34;,&amp;#34;HSH&amp;#34;,&amp;#34;P-90&amp;#34;,&amp;#34;SOAP&amp;#34;,&amp;#34;58/15&amp;#34;,&amp;#34;TCI&amp;#34;,&amp;#34;Bass&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;TONAL CHARACTER KEY&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right below title&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;Warm / Vintage&amp;#34;,&amp;#34;Balanced / All-around&amp;#34;,&amp;#34;Bright / Articulate&amp;#34;,&amp;#34;High Gain / Modern&amp;#34;,&amp;#34;Blues / Classic Rock&amp;#34;,&amp;#34;Metal / Progressive&amp;#34;,&amp;#34;Funk / Soul / Clean&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;CORE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;first main row left label&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;Custom 24&amp;#34;,&amp;#34;McCarty 594&amp;#34;,&amp;#34;DGT (David Grissom)&amp;#34;,&amp;#34;Custom 22&amp;#34;,&amp;#34;Hollowbody II&amp;#34;,&amp;#34;SC 594&amp;#34;,&amp;#34;row category panel&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;S2&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;second main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;S2 Custom 24&amp;#34;,&amp;#34;S2 McCarty 594&amp;#34;,&amp;#34;S2 Standard 24&amp;#34;,&amp;#34;S2 Vela&amp;#34;,&amp;#34;S2 Singlecut&amp;#34;,&amp;#34;S2 Mira&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;SE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;third main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;SE Custom 24&amp;#34;,&amp;#34;SE Standard 24&amp;#34;,&amp;#34;SE Paul&amp;#39;s Guitar&amp;#34;,&amp;#34;SE Santana&amp;#34;,&amp;#34;SE Hollowbody II&amp;#34;,&amp;#34;SE Mark Holcomb&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;CE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;fourth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;CE 24&amp;#34;,&amp;#34;CE 22&amp;#34;,&amp;#34;CE 24 Semi-Hollow&amp;#34;,&amp;#34;CE 24 Floyd&amp;#34;,&amp;#34;CE 24 Satin&amp;#34;,&amp;#34;CE Bass&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;BOLT-ON SERIES&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;fifth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;NF 53&amp;#34;,&amp;#34;Silver Sky&amp;#34;,&amp;#34;NF 3&amp;#34;,&amp;#34;NF 53 Satin&amp;#34;,&amp;#34;DGT Bolt-On&amp;#34;,&amp;#34;Studio&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;PRIVATE STOCK&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;sixth main row left label&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;Dragon I&amp;#34;,&amp;#34;Frostbite&amp;#34;,&amp;#34;#4004&amp;#34;,&amp;#34;The Tree of Life&amp;#34;,&amp;#34;#8731&amp;#34;,&amp;#34;PS DGT&amp;#34;]}],&amp;#34;footer&amp;#34;:{&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;elements&amp;#34;:[&amp;#34;small badge at lower left&amp;#34;,&amp;#34;centered company line&amp;#34;,&amp;#34;right-side script signature&amp;#34;]}},&amp;#34;content grid&amp;#34;:{&amp;#34;total guitar models shown&amp;#34;:37,&amp;#34;card design&amp;#34;:&amp;#34;each product card contains a guitar render, model name, year, small pickup icons, a short descriptive blurb, and origin/wood specs at the bottom&amp;#34;,&amp;#34;row side panels&amp;#34;:6},&amp;#34;visual details&amp;#34;:{&amp;#34;guitars&amp;#34;:&amp;#34;front-facing electric guitars with varied body shapes and highly polished figured maple tops, metallic and transparent finishes, some solid colors, some natural wood&amp;#34;,&amp;#34;typography&amp;#34;:&amp;#34;all caps serif headlines, small serif body text, script signature accents&amp;#34;,&amp;#34;borders&amp;#34;:&amp;#34;thin decorative gold rules around every panel and the full poster&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;studio-lit instruments against dark panel backgrounds&amp;#34;,&amp;#34;render quality&amp;#34;:&amp;#34;clean infographic precision with realistic product renders&amp;#34;},&amp;#34;camera&amp;#34;:&amp;#34;straight-on flat poster view, no perspective distortion, centered composition&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;ultra detailed, print-ready, high-resolution editorial infographic, luxury brand poster&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;阿里山一日遊旅行海報&#34;&gt;阿里山一日遊旅行海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/TWnese/status/2048077204786212887&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/TWnese&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@TWnese&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072_hu_5de06e0cd01c812b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/072_hu_2721a3ee37bf1887.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;阿里山一日遊旅行海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vintage illustrated travel poster in traditional Chinese for {argument name=&amp;#34;destination name&amp;#34; default=&amp;#34;阿里山國家風景區&amp;#34;}, designed as a one-day itinerary infographic with a split vertical layout. The left panel is a parchment-textured itinerary card in warm beige with ornate gold Art Nouveau borders and dark brown typography, and the right panel is a dramatic painted fantasy-realism map scene of a mountain journey at sunrise and sunset tones. At the top of the left panel, large headline text reads {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;阿里山國家風景區一日遊&amp;#34;}. Beneath it, include a short centered tagline in traditional Chinese: 「一座高山,五個經典景點。難忘的奇幻旅程。」 with a small decorative mountain divider. The left panel must contain exactly 5 numbered itinerary stops stacked vertically, each with a circular black-and-gold number badge, a small vignette illustration, a bold location name, a time in parentheses, and a short Chinese description. The 5 stops are: 1. 「阿里山車站」 at 「(8:00 AM)」 with a wooden mountain railway station illustration and description 「開啟探索神木與森林的旅程。」 2. 「阿里山森林鐵路」 at 「(9:30 AM)」 with a red-and-black steam train illustration and description 「穿越森林,體驗百年林鐵風情。」 3. 「神木區棧道」 at 「(11:30 AM)」 with giant cedar trees and elevated wooden boardwalk illustration and description 「漫步千年巨木下,感受森林靈氣。」 4. 「姊妹潭」 at 「(1:30 PM)」 with a tranquil forest lake and pavilion illustration and description 「欣賞靜謐湖光,聆聽自然樂章。」 5. 「小笠原山展望台」 at 「(4:00 PM)」 with a wooden observation deck above clouds at sunset illustration and description 「觀賞壯闊山景與雲海,欣賞日落。」 The right panel should depict a continuous glowing golden path winding through exactly 5 numbered map markers that match the left panel labels in order, with black-and-gold marker plaques reading: 1 「阿里山車站」, 2 「阿里山森林鐵路」, 3 「神木區棧道」, 4 「姊妹潭」, 5 「小笠原山展望台」. Show stop 1 as a rustic alpine wooden station perched on a cliff among pine forests; stop 2 as a small steam locomotive traveling on a curved mountain railway with smoke drifting upward; stop 3 as towering ancient red cypress trees with a spiral and zigzag wooden walkway around the trunks; stop 4 as an emerald lake surrounded by dense forest with a small pavilion and arched bridge; stop 5 as a lookout deck on a peak above a sea of clouds, facing a glowing sunset. The environment should feature layered mountain ranges, mist-filled valleys, evergreen forests, golden-hour light, luminous cloud seas, and a romantic painterly atmosphere with rich detail. At the bottom right, add a decorative compass rose labeled N, E, S, W, plus a dark green and gold information box with exactly 2 stats in traditional Chinese: 「總距離 ~9公里 / 5.6英里」 and 「預計時間 全天 - 14,500步」. Overall style: premium tourism poster, painterly digital illustration, nostalgic national-park brochure aesthetic, highly detailed, warm sepia and gold accents, elegant composition, readable Chinese text, vertical 2:3 poster.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;舞蹈動作參考表&#34;&gt;舞蹈動作參考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ciri_ai/status/2048074587955658848&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Ciri_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ciri_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073.webp&#34;
	width=&#34;1080&#34;
	height=&#34;611&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073_hu_d0c36a5b8c2b80e0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/073_hu_79ce36609849f62.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;舞蹈動作參考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;424px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[STYLE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;monochromatic grayscale illustration, 3D rendered character, clean instructional reference sheet, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;white background, comic-style cell grid layout, technical diagram aesthetic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[LAYOUT]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4x4 grid layout, 16 panels total, each panel separated by thin black border lines, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;numbered cells from 1 to 16, consistent panel size
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[CHARACTER]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;character&amp;#34; default=&amp;#34;young female dancer, athletic build, ponytail hairstyle, crop top and baggy pants, sneakers&amp;#34;}, same character in all panels
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[PANEL STRUCTURE - per cell]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;top-left: bold number badge + {argument name=&amp;#34;title&amp;#34; default=&amp;#34;Korean title text&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;center: full-body character pose illustration
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bottom-left: {argument name=&amp;#34;description&amp;#34; default=&amp;#34;Korean description text (3-4 lines)&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;overlay: directional arrows indicating movement direction
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ARROWS / MOTION INDICATORS]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curved arrows, straight arrows, circular rotation indicators, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;placed around the character to show movement flow and direction
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[RENDERING STYLE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;high detail 3D sculpt style, soft studio lighting, subtle shadows, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no color, grayscale shading, clean linework, game concept art quality
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[NEGATIVE]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no background scenery, no color tones, no extra characters, 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;no cluttered backgrounds
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫博物館背景轉換&#34;&gt;動漫博物館背景轉換
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Dakiny/status/2048175219966394695&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Dakiny&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Dakiny&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074.webp&#34;
	width=&#34;1200&#34;
	height=&#34;804&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074_hu_12694e8f33f66c40.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/074_hu_ad2db60cad455b09.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫博物館背景轉換&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;358px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference photo, recreate the same museum facade and frontal composition as a polished theatrical anime background illustration. Keep the architecture, signage, 3 flagpoles, broad steps, and overall layout consistent, but convert the image from realistic photography into a highly detailed hand-painted anime film style with clean linework, soft cel shading, gentle pastel stone colors, and crisp atmospheric lighting. Add dramatic sunlight from the upper right so the glass pyramid casts a large geometric lattice shadow across the central wall and left side of the entrance. Simplify and stylize the people into anime background characters, keeping the 2 visible groups: 1 lone figure on the left and 1 small cluster of 7 people near the center-right entrance. Preserve the clear blue-sky daytime mood while making the scene feel elegant, refined, and cinematic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-姿勢舞蹈戰鬥參考表&#34;&gt;16 姿勢舞蹈戰鬥參考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075.webp&#34;
	width=&#34;1199&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075_hu_6291dd73dfb1fe6a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/075_hu_9ed3fc068d4b623d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 姿勢舞蹈戰鬥參考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;theme&amp;#34;:&amp;#34;hip-hop dance and combat-ready movement chart&amp;#34;,&amp;#34;character&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;gender_presentation&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;body_type&amp;#34;:&amp;#34;fit athletic dancer&amp;#34;,&amp;#34;skin_tone&amp;#34;:&amp;#34;light tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;black&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail with loose strands&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;count&amp;#34;:5,&amp;#34;items&amp;#34;:[&amp;#34;white sports bra or cropped athletic top&amp;#34;,&amp;#34;baggy purple jogger pants&amp;#34;,&amp;#34;white chunky sneakers&amp;#34;,&amp;#34;purple wristbands or forearm bands on both arms&amp;#34;,&amp;#34;small hoop earrings&amp;#34;]}}},&amp;#34;style&amp;#34;:{&amp;#34;image_type&amp;#34;:&amp;#34;photorealistic studio pose sheet&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;clean even studio lighting&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;plain light gray to white seamless backdrop&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;sharp realistic anatomy, dynamic motion, slight shadow under feet&amp;#34;,&amp;#34;face&amp;#34;:&amp;#34;intentionally blurred or obscured&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16},&amp;#34;numbering&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;],&amp;#34;position&amp;#34;:&amp;#34;top-left corner of each cell&amp;#34;},&amp;#34;cell_borders&amp;#34;:&amp;#34;thin black divider lines between all panels&amp;#34;},&amp;#34;poses&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;items&amp;#34;:[{&amp;#34;label&amp;#34;:&amp;#34;1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide low squat, knees bent outward, torso angled slightly left, both arms extended loosely in a defensive dance stance&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep side lunge to the left, left arm pointing straight left, right hand near the head, energetic directional pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low crouch with one hand touching the floor, one knee bent under the body, opposite arm extended horizontally&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;upright one-leg balance, left knee lifted high, both arms spread outward for rhythm and balance&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;5&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;similar one-leg raised pose with the other leg supporting, arms stretched outward in a lighter dance variation&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;6&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very wide grounded squat, torso pitched forward, one hand reaching toward the floor between the legs, other arm extended back&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;7&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;dramatic standing back arch, chest lifted upward, hips forward, both arms opened behind and to the sides&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;8&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small jump or suspended squat, both feet off the floor, knees bent, arms spread wide symmetrically&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;9&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;floor-supported seated lean, one hand planted behind, one arm reaching diagonally upward, legs bent to one side&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;10&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;front-facing balance with one knee raised to hip height, one arm bent in guard position and the other extended sideways&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;11&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep lateral stance, feet far apart, knees bent, both hands raised open near shoulder level like a ready combat pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;12&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low side lunge split, one hand planted on the floor, the other arm reaching vertically overhead, torso arched upward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;13&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;standing backward lean with relaxed bent knees, chest up, arms hanging loosely behind in a groove pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;14&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;compact twisting crouch, weight low over bent legs, torso rotated, one arm pulled in and the other extended outward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;15&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very wide side lunge stretch, one hand to the floor near the front foot, opposite arm reaching diagonally overhead&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;16&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;one-leg lifted pose with knee high, one hand behind the head and the other arm extended forward, confident finishing stance&amp;#34;}]},&amp;#34;composition&amp;#34;:&amp;#34;show the same dancer in all 16 panels with consistent outfit and scale, centered within each frame, designed like a movement library or choreography reference chart&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-格舞蹈姿勢參考表&#34;&gt;16 格舞蹈姿勢參考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076.webp&#34;
	width=&#34;1200&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076_hu_9cad5c551cf69b7b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/076_hu_34fa4cea34edd581.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 格舞蹈姿勢參考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;dance pose reference sheet&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;clean studio pose chart, photoreal fitness-dance reference, white seamless background, sharp full-body photography, soft even lighting, minimal shadows, thin black grid lines separating panels&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;person&amp;#34;:{&amp;#34;gender_presentation&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;slim athletic toned dancer&amp;#34;,&amp;#34;skin_tone&amp;#34;:&amp;#34;light tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;{argument name=\&amp;#34;hair color\&amp;#34; default=\&amp;#34;dark brown\&amp;#34;}&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail with loose strands&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;items&amp;#34;:[&amp;#34;white fitted sports bra or cropped athletic tank&amp;#34;,&amp;#34;baggy blue-gray jogger pants&amp;#34;,&amp;#34;white sneakers&amp;#34;]}}},&amp;#34;layout&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;total_panels&amp;#34;:16,&amp;#34;numbering&amp;#34;:&amp;#34;black panel numbers in the top-left corner of each cell, labeled 1 through 16&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;pose grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;full page&amp;#34;,&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;]}]},&amp;#34;poses&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;items&amp;#34;:[{&amp;#34;panel&amp;#34;:1,&amp;#34;description&amp;#34;:&amp;#34;wide stance, knees bent, torso upright, right arm extended straight to the right in a pointing gesture, left arm bent near the body&amp;#34;},{&amp;#34;panel&amp;#34;:2,&amp;#34;description&amp;#34;:&amp;#34;deep low squat facing forward, feet wide apart, one hand lifted in front of the chest, the other resting near the thigh&amp;#34;},{&amp;#34;panel&amp;#34;:3,&amp;#34;description&amp;#34;:&amp;#34;low floor-supported pose, leaning back on one hand with hips low, one knee bent under the body, opposite arm stretched diagonally upward&amp;#34;},{&amp;#34;panel&amp;#34;:4,&amp;#34;description&amp;#34;:&amp;#34;standing on one leg with the other knee raised, one arm curved overhead, opposite arm extended to the right in a strong dance line&amp;#34;},{&amp;#34;panel&amp;#34;:5,&amp;#34;description&amp;#34;:&amp;#34;deep squat with legs wide, one hand on thigh and the other arm reaching straight upward&amp;#34;},{&amp;#34;panel&amp;#34;:6,&amp;#34;description&amp;#34;:&amp;#34;light upright pose with one knee lifted and both arms relaxed outward for balance&amp;#34;},{&amp;#34;panel&amp;#34;:7,&amp;#34;description&amp;#34;:&amp;#34;wide stance with both arms crossed tightly in front of the chest, feet planted apart&amp;#34;},{&amp;#34;panel&amp;#34;:8,&amp;#34;description&amp;#34;:&amp;#34;low crouch close to the floor, one hand braced on the ground, the other arm crossing the torso&amp;#34;},{&amp;#34;panel&amp;#34;:9,&amp;#34;description&amp;#34;:&amp;#34;dynamic side-leaning wide stance, one arm bent upward beside the head, opposite arm pointing strongly to the right&amp;#34;},{&amp;#34;panel&amp;#34;:10,&amp;#34;description&amp;#34;:&amp;#34;compact crouch with weight centered low, one elbow resting near a knee and head tilted slightly downward&amp;#34;},{&amp;#34;panel&amp;#34;:11,&amp;#34;description&amp;#34;:&amp;#34;deep side lunge with one leg extended long to the side, one hand on the floor and the other arm reaching straight up&amp;#34;},{&amp;#34;panel&amp;#34;:12,&amp;#34;description&amp;#34;:&amp;#34;upright wide-legged stance, one arm extended vertically overhead, the other hand relaxed near the hip&amp;#34;},{&amp;#34;panel&amp;#34;:13,&amp;#34;description&amp;#34;:&amp;#34;standing balance pose with one knee raised and both hands held low near the thighs&amp;#34;},{&amp;#34;panel&amp;#34;:14,&amp;#34;description&amp;#34;:&amp;#34;low horse stance with knees bent wide and forearms crossed in front of the chest&amp;#34;},{&amp;#34;panel&amp;#34;:15,&amp;#34;description&amp;#34;:&amp;#34;kneeling or very low crouched pose with one hand on the floor and the other resting on the raised knee&amp;#34;},{&amp;#34;panel&amp;#34;:16,&amp;#34;description&amp;#34;:&amp;#34;high side kick, balancing on one leg while the other leg extends horizontally, both arms bent in a guarded fighting pose&amp;#34;}]},&amp;#34;intent&amp;#34;:&amp;#34;a {argument name=\&amp;#34;sheet purpose\&amp;#34; default=\&amp;#34;dance move sheet chart that can also be used for combat pose reference\&amp;#34;}, emphasizing silhouette variety, balance, rhythm, and dynamic athletic body lines&amp;#34;,&amp;#34;image_size&amp;#34;:&amp;#34;landscape 16:9&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-格女性舞蹈姿勢表&#34;&gt;16 格女性舞蹈姿勢表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077.webp&#34;
	width=&#34;1200&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077_hu_5a6068da941351fa.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/077_hu_800aceba14c16426.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 格女性舞蹈姿勢表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;description&amp;#34;:&amp;#34;a fit young woman dancer shown repeatedly in a clean studio reference layout&amp;#34;,&amp;#34;appearance&amp;#34;:{&amp;#34;gender&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;athletic, toned midriff&amp;#34;,&amp;#34;skin tone&amp;#34;:&amp;#34;light to medium tan&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;dark brown&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high messy ponytail with loose strands framing the face&amp;#34;},&amp;#34;expression&amp;#34;:&amp;#34;neutral to focused&amp;#34;},&amp;#34;wardrobe&amp;#34;:{&amp;#34;top&amp;#34;:&amp;#34;charcoal gray sports bra or cropped athletic bralette&amp;#34;,&amp;#34;bottom&amp;#34;:&amp;#34;oversized dark gray parachute cargo pants with gathered ankles&amp;#34;,&amp;#34;shoes&amp;#34;:&amp;#34;white sneakers&amp;#34;,&amp;#34;accessories&amp;#34;:[&amp;#34;black wristband or fingerless glove on one hand&amp;#34;,&amp;#34;subtle sporty styling&amp;#34;]}},&amp;#34;layout&amp;#34;:{&amp;#34;background&amp;#34;:&amp;#34;plain white seamless studio background&amp;#34;,&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;cell labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;]},&amp;#34;style&amp;#34;:&amp;#34;clean contact-sheet or choreography chart with thin black dividers between panels and small black numbers at the upper left of each panel&amp;#34;},&amp;#34;poses&amp;#34;:[{&amp;#34;label&amp;#34;:&amp;#34;1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;relaxed standing pose, weight on one leg, one hand near hip, slight contrapposto&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide low dance stance, one arm bent behind the head, the other arm extended and pointing to the right&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;legs spread in a grounded stance, torso slightly tilted, one hand resting near the upper thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;very low wide squat facing forward, torso leaning back, one hand near the face and the other near the thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;5&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide side lunge stance, one arm arched overhead, the other arm extended outward in a stylized dance line&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;6&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;balancing on one leg with the other knee lifted high, one hand near the face in a punchy hip-hop pose&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;7&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;floorwork pose supported by one hand on the ground, torso reclined sideways, legs bent and lifted in a dynamic breakdance-like position&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;8&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;casual upright pose with one hand behind the head and one knee bent upward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;9&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;one-legged balance pose with the lifted knee bent, both arms extended outward for motion and rhythm&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;10&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;low kneeling or crouched pose, one knee up and one knee down, one arm thrust forward toward the viewer&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;11&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;deep squat with legs apart, one arm curved overhead in a dramatic arc&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;12&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;standing lean to one side with one arm extended sideways and the other hand near the hip or thigh&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;13&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;reclining floor pose supported by one hand behind the body, one leg bent and one leg extended&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;14&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;upright standing pose with one arm fully extended and pointing to the right&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;15&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;front-facing pose stepping forward with one knee lifted, one arm reaching or pointing forward&amp;#34;},{&amp;#34;label&amp;#34;:&amp;#34;16&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide confident stance with one arm pointing diagonally upward to the right&amp;#34;}],&amp;#34;rendering&amp;#34;:{&amp;#34;medium&amp;#34;:&amp;#34;photorealistic studio fashion and dance reference image&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft even studio lighting with faint shadows beneath the feet and body&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance in every panel&amp;#34;,&amp;#34;quality&amp;#34;:&amp;#34;sharp, high-resolution, realistic anatomy and fabric folds&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;16-姿勢舞蹈參考表&#34;&gt;16 姿勢舞蹈參考表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe/status/2048143577264402629&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ExquisitMe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ExquisitMe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078.webp&#34;
	width=&#34;1199&#34;
	height=&#34;680&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078_hu_918cd255b0091e22.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/078_hu_bd23bdaedc026045.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;16 姿勢舞蹈參考表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pose reference sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;category&amp;#34;:&amp;#34;female dancer fitness model&amp;#34;,&amp;#34;age_appearance&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;build&amp;#34;:&amp;#34;slim athletic&amp;#34;,&amp;#34;hair&amp;#34;:{&amp;#34;color&amp;#34;:&amp;#34;dark brown&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;high ponytail&amp;#34;},&amp;#34;outfit&amp;#34;:{&amp;#34;top&amp;#34;:&amp;#34;light gray or white sports bra crop top&amp;#34;,&amp;#34;bottom&amp;#34;:&amp;#34;baggy light gray sweatpants&amp;#34;,&amp;#34;shoes&amp;#34;:&amp;#34;white sneakers&amp;#34;},&amp;#34;face&amp;#34;:&amp;#34;softly blurred or de-emphasized facial features&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;image_type&amp;#34;:&amp;#34;studio dance pose chart&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;clean seamless white background&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;bright even studio lighting with minimal shadows&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;neutral whites and light grays&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;full-body framing, straight-on view, consistent distance&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;photorealistic&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:4,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:16,&amp;#34;border&amp;#34;:&amp;#34;thin black dividers between cells&amp;#34;},&amp;#34;numbering&amp;#34;:{&amp;#34;count&amp;#34;:16,&amp;#34;labels&amp;#34;:[&amp;#34;1&amp;#34;,&amp;#34;2&amp;#34;,&amp;#34;3&amp;#34;,&amp;#34;4&amp;#34;,&amp;#34;5&amp;#34;,&amp;#34;6&amp;#34;,&amp;#34;7&amp;#34;,&amp;#34;8&amp;#34;,&amp;#34;9&amp;#34;,&amp;#34;10&amp;#34;,&amp;#34;11&amp;#34;,&amp;#34;12&amp;#34;,&amp;#34;13&amp;#34;,&amp;#34;14&amp;#34;,&amp;#34;15&amp;#34;,&amp;#34;16&amp;#34;],&amp;#34;position&amp;#34;:&amp;#34;top-left corner of each panel&amp;#34;},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;row 1&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;1 side lunge with one arm extended straight sideways and the other bent near chest&amp;#34;,&amp;#34;2 low floor pose leaning on one hand with one knee down and opposite arm arched upward&amp;#34;,&amp;#34;3 wide squat facing front with both arms opened in angular dance position&amp;#34;,&amp;#34;4 standing balance on one leg with opposite knee lifted and forearms crossed near chest&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 2&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper-middle&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;5 deep backbend in wide stance with torso arched and one arm curved overhead&amp;#34;,&amp;#34;6 wide squat with one hand behind head and the other arm pointing outward&amp;#34;,&amp;#34;7 kneeling side stretch with one hand on floor and opposite arm reaching straight up&amp;#34;,&amp;#34;8 standing arabesque-style extension with torso tilted forward and one leg lifted high behind/sideways&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 3&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-middle&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;9 wide squat with torso tilted left, one arm curved overhead and one arm extended low&amp;#34;,&amp;#34;10 front-facing wide squat with both arms stretched diagonally in opposite directions&amp;#34;,&amp;#34;11 relaxed standing pose with legs apart and both forearms crossing in front of torso&amp;#34;,&amp;#34;12 floor recline supported on one hand and one knee, torso leaning back with bent legs&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;row 4&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;13 small jump or lifted balance with one knee raised and one arm bent upward&amp;#34;,&amp;#34;14 low crouch squat with one hand reaching toward floor and other arm extended sideways&amp;#34;,&amp;#34;15 dramatic side backbend in wide stance with hair swinging and one arm curved overhead&amp;#34;,&amp;#34;16 powerful wide squat with one hand at chest and the other lowered to the side&amp;#34;]}],&amp;#34;overall_composition&amp;#34;:&amp;#34;all 16 poses shown as separate panels in a uniform contact sheet&amp;#34;},&amp;#34;prompt&amp;#34;:&amp;#34;Create a clean studio contact sheet of {argument name=\&amp;#34;pose count\&amp;#34; default=\&amp;#34;16\&amp;#34;} full-body dance or combat-reference poses featuring a {argument name=\&amp;#34;subject type\&amp;#34; default=\&amp;#34;young athletic woman\&amp;#34;} in a {argument name=\&amp;#34;outfit\&amp;#34; default=\&amp;#34;light gray sports bra, loose gray sweatpants, and white sneakers\&amp;#34;}. Use a seamless {argument name=\&amp;#34;background color\&amp;#34; default=\&amp;#34;white\&amp;#34;} background, bright even lighting, and a consistent straight-on camera. Arrange the poses in a 4x4 grid with thin black panel lines and small black numbers 1 through 16 in the top-left of each cell. The poses should mix standing, squatting, kneeling, floorwork, balance, kick-extension, backbend, and angular arm positions suitable for a dance sheet chart or combat movement reference. Keep the styling photorealistic, crisp, minimal, and instructional, with consistent wardrobe and hair across all panels.&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;氣態巨行星下降分鏡&#34;&gt;氣態巨行星下降分鏡
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/xRahultripathi/status/2048140775356354892&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/xRahultripathi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@xRahultripathi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079.webp&#34;
	width=&#34;1200&#34;
	height=&#34;676&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079_hu_8b65f2fca14570b3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/079_hu_ec4b1b2c4e1077ff.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;氣態巨行星下降分鏡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;cinematic sci-fi storyboard contact sheet&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;primary&amp;#34;:&amp;#34;a small futuristic spacecraft descending into a massive gas giant storm system&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;an enormous leviathan-like silhouette hidden within the clouds&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;oppressive, catastrophic, awe-struck, high tension, cosmic dread&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;photorealistic cinematic concept art with dark sci-fi realism, volumetric storm clouds, strong contrast, amber and black palette with occasional cold blue lightning&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;16:9&amp;#34;},&amp;#34;vehicle&amp;#34;:{&amp;#34;design&amp;#34;:&amp;#34;compact armored deep-atmosphere ship with 3 bright rear engines, angular industrial hull, worn metallic panels&amp;#34;,&amp;#34;scale&amp;#34;:&amp;#34;tiny compared to the planet and creature&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:3,&amp;#34;columns&amp;#34;:4,&amp;#34;count&amp;#34;:12},&amp;#34;sections&amp;#34;:[{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;wide exterior shot of the ship entering the upper atmosphere of a colossal gas giant at extreme speed, glowing clouds streaked with fire and friction around the vessel, curved planetary horizon visible&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;cockpit POV, dark interior filled with red and cyan holographic instruments, forward visibility collapsing into turbulent storm layers and electrical haze&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;exterior mid-wide shot of the ship diving into a gigantic rotating cloud funnel, surrounded by violent spiraling storm structure&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 1 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;extreme close exterior of the ship hull as bright lightning strikes dangerously close, white electric energy crawling across the metal surface&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;dashboard warning screen in red, showing a critical systems failure interface with the exact visible text count of 4 warning lines and 1 large percentage readout: [&amp;#39;WARNING&amp;#39;,&amp;#39;ENGINES COMPROMISED&amp;#39;,&amp;#39;THRUST FLUCTUATION&amp;#39;,&amp;#39;GRAVITY SPIKE DETECTED&amp;#39;,&amp;#39;DESCENT RATE -453%&amp;#39;]&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;rear three-quarter exterior of the ship fighting turbulence inside dense storm clouds, engines burning hard while the craft barely holds course&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;massive circular disturbance forming in the clouds like an eye or maw, entire storm systems displaced by something huge moving beneath&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 2 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;second cockpit view with radar-like navigation display and red alert text, pilot making a blind evasive maneuver through lightning-filled darkness&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 1&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;first reveal of the colossal creature shape rising near the ship, black organic surface and immense curved anatomy emerging from darkness, ship tiny at lower left&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 2&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;spiral descent shot, ship caught inside a vortex tunnel of clouds, spinning downward with engines flaring as it struggles to recover&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 3&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;sudden breakthrough into a calm void, minimal composition, ship flying in eerie silence through dark open space with soft mist and no visible storm around it&amp;#34;},{&amp;#34;position&amp;#34;:&amp;#34;row 3 col 4&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;final reveal, gigantic leviathan fully emerging behind or beside the ship in cleared space, backlit by a pale circular storm opening, enormous open maw-like silhouette dwarfing the craft&amp;#34;}],&amp;#34;continuity&amp;#34;:&amp;#34;all 12 panels depict one continuous descent sequence from atmospheric entry to final creature reveal&amp;#34;},&amp;#34;lighting&amp;#34;:{&amp;#34;primary&amp;#34;:&amp;#34;glowing amber storm light&amp;#34;,&amp;#34;secondary&amp;#34;:&amp;#34;red cockpit interface glow&amp;#34;,&amp;#34;accents&amp;#34;:&amp;#34;blue-white lightning and engine exhaust&amp;#34;},&amp;#34;environment&amp;#34;:{&amp;#34;location&amp;#34;:&amp;#34;inside the upper and middle storm layers of a gigantic gas giant&amp;#34;,&amp;#34;weather&amp;#34;:&amp;#34;violent turbulence, electrical storms, vortex funnels, cloud walls, pressure chaos&amp;#34;,&amp;#34;threat&amp;#34;:&amp;#34;no safe zone, repeated near-failure, unknown colossal presence driving the storm&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超現實巴洛克繪畫現實裂隙&#34;&gt;超現實巴洛克繪畫現實裂隙
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/JohnnyWang8802/status/2048129335853559824&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/JohnnyWang8802&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@JohnnyWang8802&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080_hu_f7cfa4116ae04487.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/080_hu_a2a534f0c6c47a7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超現實巴洛克繪畫現實裂隙&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A {argument name=&amp;#34;painting style&amp;#34; default=&amp;#34;baroque oil painting&amp;#34;} comes to life — its painted figures climbing out of the gilded frame into a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;modern white gallery&amp;#34;}, half their bodies still in flat 2D paint, half fully volumetric 3D humans, brushstrokes visible on their skin, the painting&amp;#39;s background leaking watercolor clouds into the gallery ceiling, museum visitors frozen in shock, hyper-detailed, {argument name=&amp;#34;artist influence&amp;#34; default=&amp;#34;René Magritte meets Pixar&amp;#34;}, reality fracturing at every boundary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;城市小巷壁畫藝術家&#34;&gt;城市小巷壁畫藝術家
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Professor_134/status/2048066672398102896&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Professor_134&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Professor_134&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081_hu_27c628d6f3b8d9ae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/081_hu_237b894b0489f783.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;城市小巷壁畫藝術家&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic, ultra-realistic night scene of a {argument name=&amp;#34;artist&amp;#34; default=&amp;#34;young male street artist&amp;#34;} painting a large-scale {argument name=&amp;#34;mural subject&amp;#34; default=&amp;#34;mural of a woman’s face&amp;#34;} in a {argument name=&amp;#34;setting&amp;#34; default=&amp;#34;narrow urban alley&amp;#34;}. The camera angle is slightly low, creating a dramatic, powerful perspective. The artist has medium-length, slightly messy dark hair and light stubble or a short beard, giving him a rugged, creative look.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;He wears a loose white t-shirt and casual jeans, slightly oversized, with a relaxed streetwear vibe. His posture is focused and engaged as he stands close to the wall, actively spray-painting.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;He is creating a massive, hyper-realistic mural of a woman’s face on a textured brick wall. The mural is incredibly detailed—smooth skin tones, realistic lighting, expressive eyes, and glossy lips—appearing almost like a photograph. Fine mist from the spray paint is visible in the air, catching light and adding motion and atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The setting is a narrow urban alley at night, surrounded by tall buildings. The environment is gritty and textured—aged brick walls, paint splashes, subtle grime, and urban wear. Neon signs and distant streetlights cast vibrant reflections in teal, magenta, and blue tones, creating a cinematic, slightly cyberpunk mood.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is dramatic and layered: cool ambient light fills the alley, while warmer neon highlights create contrast. A subtle rim light outlines the artist’s silhouette, separating him from the dark background. The mural is partially illuminated, acting as a strong focal point.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Atmosphere includes light fog or mist, enhancing depth and making the lighting glow softly. The scene feels immersive, quiet, and artistically intense.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Depth of field is moderately shallow: the artist and mural are in sharp focus, while the background fades into soft blur with bokeh highlights.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: hyper-realistic, cinematic photography, street art aesthetic, ultra-detailed textures, high dynamic range, subtle film grain.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Camera details: 35mm or 50mm lens, f/1.8–f/2.8 aperture, low-light photography, slight low-angle shot, natural perspective.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Composition: vertical frame (4:5 or 9:16), subject slightly off-center, mural dominating the frame for strong visual storytelling.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate image using uploaded image as reference
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rpg-地圖轉動漫事件場景&#34;&gt;RPG 地圖轉動漫事件場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ArtwlDesign/status/2048054726768709769&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ArtwlDesign&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ArtwlDesign&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082.webp&#34;
	width=&#34;1200&#34;
	height=&#34;670&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082_hu_5fa142826c4329ce.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/082_hu_6fbce33f5d6ee037.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;RPG 地圖轉動漫事件場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;179&#34;
		data-flex-basis=&#34;429px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference image, transform the top-down RPG town map into a polished anime-style event illustration from a human eye-level perspective. Keep the same village location and layout cues: the central stone well, the path network, the hedges, the wooden houses, and the narrow water canal on the left. Convert the 2 small sprite characters by the well into 2 full-size fantasy characters in the foreground: a silver-haired mage in a purple robe holding a staff, and a blonde elf in green-and-brown adventurer clothing, both leaning over and looking into the well. Add a cinematic JRPG feel with soft daylight, detailed painterly rendering, clean line art, and gentle depth of field. Preserve the sense that this scene is taking place in the same town square, but enrich it with natural perspective, more environmental detail, and 5 background villagers: 1 man cropped at the far left edge, 2 small figures standing on the center path in the distance, and 2 townspeople talking near the right-side buildings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;柔和粉彩動漫少女全身像&#34;&gt;柔和粉彩動漫少女全身像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/hoshi122221/status/2048025730425196801&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/hoshi122221&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@hoshi122221&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083.webp&#34;
	width=&#34;848&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083_hu_26ed0e341e792fed.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/083_hu_9903bb8f94f62715.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;柔和粉彩動漫少女全身像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A full-body anime girl character design on a plain white background, centered and floating slightly, drawn in a soft minimalist pastel style with very thin gray linework and delicate flat colors. She has a petite youthful build and a cute, gentle silhouette, with special emphasis on a soft rounded face shape, smooth cheeks, and a softened jawline and chin. Her face is completely obscured by a blank skin-colored rectangular block with no facial features visible. She has short bob hair in {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;light ash brown&amp;#34;}, slightly tousled with wispy ends, long bangs covering part of the forehead, and a small ribbon hair tie on the right side in pale blue-gray. She wears 3 visible clothing pieces: an oversized pale blue cardigan with loose sleeves and front buttons, a cream-white slip dress with a scalloped neckline and a tiny button detail at the chest, and a frilled hem with a small ribbon near the right thigh. She is barefoot with slim pale legs, posed front-facing with both arms relaxed slightly outward, open hands, one leg straight and the other gently bent inward for a shy, weightless look. The illustration should feel airy, cute, understated, and clean, like a simple Japanese anime fashion sketch, with lots of negative space and no props, no shadows, and no background elements.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;都市奇幻共存路口&#34;&gt;都市奇幻共存路口
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ray_CROWN0/status/2048024227664494775&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Ray_CROWN0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ray_CROWN0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084_hu_e9ef25b7a1fdff74.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/084_hu_70840d2c5970afb3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;都市奇幻共存路口&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A highly detailed anime-style urban fantasy illustration set at a busy Tokyo-style scramble crossing on a bright clear day, viewed at street level with a wide cinematic composition. The city blends modern realism with mythic fantasy: dense high-rise buildings covered in giant billboards, a red broadcast tower in the middle distance, blue sky with fluffy clouds, and a crowded crosswalk full of pedestrians. In the foreground, show 7 prominent character figures: a silver-haired elf woman in a flowing white dress holding an iced drink and tote bag on the far left; a central schoolgirl with long dark hair, black animal ears, a navy school blazer, plaid skirt, blue ribbon, and large navy shoulder bag, lifting one hand to her head; a young man in a dark suit looking down at a smartphone; an androgynous white-haired angelic figure in an elegant white-and-gold ceremonial outfit with large white wings; a small blonde girl in an ornate pastel pink frilled dress beside the angel; a dark-haired woman in a black coat in right foreground profile; and a small blue-haired cat-eared child in a blue dress with a bow standing near a cave entrance on the right. In the midground crowd, include mixed humans and fantasy races walking together naturally. Add 4 clearly visible nonhuman or supernatural background beings: 1 dragon flying in the sky, 1 winged female angel descending above the street, 1 lizard-headed businessman in a suit near the angelic figure, and 1 tall red-skinned horned demon with crossed arms standing by the hillside path. On the right side, transition the city into a lush shrine hillside with large green trees, a red torii gate, stone steps, and a wooden signboard reading Japanese kanji. Below it, place a rocky cave-like tunnel entrance glowing blue, with a wooden sign over the entrance and several figures descending into an underground shared district lit by crystals. Show 6 major billboard/sign elements across the cityscape: a huge left billboard reading &amp;#34;Shinpi Sekai 神秘世界&amp;#34; with a cosmic planet image; a large central political poster with Japanese text and a raised fist icon; 2 rooftop signs reading &amp;#34;未来研究所&amp;#34; on separate buildings; a large right billboard with Japanese text about coexistence and silhouettes of different beings; and 1 vertical banner with Japanese text on a nearby building. Emphasize the theme of coexistence between ordinary modern city life and hidden fantasy societies. Crisp anime linework, polished light novel key visual rendering, rich textures, soft sunlight, subtle atmospheric perspective, vibrant but believable colors, intricate clothing details, and a sense of awe, everyday bustle, and worldbuilding depth.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;親子誤解信息圖&#34;&gt;親子誤解信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sarinaashapi/status/2048307780864606708&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sarinaashapi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sarinaashapi&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085_hu_26d0e5c826e59305.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/085_hu_fa7e495c6ca472c4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;親子誤解信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Japanese infographic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;simple, easy-to-understand flat vector diagram, clean white background, rounded light-gray outer frame, minimal pastel color palette, presentation-slide design, clear hierarchy, lots of whitespace, modern sans-serif Japanese typography&amp;#34;,&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;16:9&amp;#34;},&amp;#34;headline&amp;#34;:{&amp;#34;text&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;親子のすれ違いは、記録があるかないかで起こる\&amp;#34;}&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;size&amp;#34;:&amp;#34;large bold black&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;structure&amp;#34;:&amp;#34;2 side-by-side rounded panels beneath the headline&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;記録がない場合(ズレる)&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;header_color&amp;#34;:&amp;#34;muted blue-gray&amp;#34;,&amp;#34;panel_border&amp;#34;:&amp;#34;light gray&amp;#34;,&amp;#34;labels&amp;#34;:[&amp;#34;親の記憶&amp;#34;,&amp;#34;子どもの記憶&amp;#34;,&amp;#34;あのとき決まったよね&amp;#34;,&amp;#34;まだ考えてたのに&amp;#34;,&amp;#34;ズレが大きくなる&amp;#34;,&amp;#34;志望校がコロコロ変わる&amp;#34;,&amp;#34;理由が『なんとなく』&amp;#34;,&amp;#34;言ってることが違う&amp;#34;,&amp;#34;関係がギクシャク&amp;#34;,&amp;#34;現実を見てほしい&amp;#34;,&amp;#34;ちゃんと決めてほしい&amp;#34;,&amp;#34;口を出しすぎると関係が悪くなる&amp;#34;],&amp;#34;contents&amp;#34;:{&amp;#34;top_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;parent icon with thought bubble&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;blue&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;親の記憶&amp;#34;,&amp;#34;bubble_text&amp;#34;:&amp;#34;あのとき\n決まったよね&amp;#34;},&amp;#34;top_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;child icon with thought bubble&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;pink&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;子どもの記憶&amp;#34;,&amp;#34;bubble_text&amp;#34;:&amp;#34;まだ考えてたのに&amp;#34;},&amp;#34;center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;horizontal double-headed arrow&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;blue-gray&amp;#34;},&amp;#34;bottom_center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;downward arrow leading to burst shape&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;light gray&amp;#34;,&amp;#34;burst_text&amp;#34;:&amp;#34;ズレが\n大きくなる&amp;#34;},&amp;#34;bottom_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;rounded note box&amp;#34;,&amp;#34;bullet_count&amp;#34;:4,&amp;#34;bullets&amp;#34;:[&amp;#34;志望校がコロコロ変わる&amp;#34;,&amp;#34;理由が『なんとなく』&amp;#34;,&amp;#34;言ってることが違う&amp;#34;,&amp;#34;関係がギクシャク&amp;#34;]},&amp;#34;bottom_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;rounded note box&amp;#34;,&amp;#34;bullet_count&amp;#34;:3,&amp;#34;bullets&amp;#34;:[&amp;#34;現実を見てほしい&amp;#34;,&amp;#34;ちゃんと決めてほしい&amp;#34;,&amp;#34;口を出しすぎると関係が悪くなる&amp;#34;]}}},{&amp;#34;title&amp;#34;:&amp;#34;記録がある場合(ズレにくい)&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;right&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;header_color&amp;#34;:&amp;#34;mustard yellow&amp;#34;,&amp;#34;panel_border&amp;#34;:&amp;#34;light yellow&amp;#34;,&amp;#34;labels&amp;#34;:[&amp;#34;親の認識&amp;#34;,&amp;#34;子どもの認識&amp;#34;,&amp;#34;記録&amp;#34;],&amp;#34;contents&amp;#34;:{&amp;#34;top_left&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;parent icon with thought bubble containing document symbol&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;blue&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;親の認識&amp;#34;},&amp;#34;top_right&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;child icon with thought bubble containing document symbol&amp;#34;,&amp;#34;icon_color&amp;#34;:&amp;#34;pink&amp;#34;,&amp;#34;caption&amp;#34;:&amp;#34;子どもの認識&amp;#34;},&amp;#34;center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;horizontal double-headed arrow&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;mustard yellow&amp;#34;},&amp;#34;bottom_center&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;circular record icon with document symbol&amp;#34;,&amp;#34;outline_color&amp;#34;:&amp;#34;mustard yellow&amp;#34;,&amp;#34;text&amp;#34;:&amp;#34;記録&amp;#34;},&amp;#34;bottom_left_connector&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;curved arrow from parent to record&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;blue&amp;#34;},&amp;#34;bottom_right_connector&amp;#34;:{&amp;#34;type&amp;#34;:&amp;#34;curved arrow from child to record&amp;#34;,&amp;#34;color&amp;#34;:&amp;#34;pink&amp;#34;}}}],&amp;#34;spacing&amp;#34;:&amp;#34;balanced, symmetrical&amp;#34;},&amp;#34;visual_language&amp;#34;:{&amp;#34;icons&amp;#34;:&amp;#34;generic human bust icons and simple document line icons&amp;#34;,&amp;#34;emphasis&amp;#34;:&amp;#34;contrast the left panel&amp;#39;s misunderstanding with the right panel&amp;#39;s shared record&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;educational, calm, practical&amp;#34;},&amp;#34;text_language&amp;#34;:&amp;#34;Japanese&amp;#34;,&amp;#34;render_quality&amp;#34;:&amp;#34;crisp vector edges, infographic suitable for social media educational posts&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;好洗澡日編輯風海報&#34;&gt;好洗澡日編輯風海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Kazuch75240438/status/2048205418238030327&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Kazuch75240438&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Kazuch75240438&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086_hu_d9cf8eee6ceebcb6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/086_hu_86ce7cfe747e2670.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;好洗澡日編輯風海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a soft editorial lifestyle poster for {argument name=&amp;#34;event date&amp;#34; default=&amp;#34;4.26&amp;#34;} celebrating Japanese bath culture, designed like a refined magazine feature page in portrait orientation. The layout is split into two main columns with a pale cream and warm gray background, thin divider lines, elegant serif typography, and muted sage-green accents. At the top left, include the small heading “LIFESTYLE / FEATURE”, then a large date line reading “{argument name=&amp;#34;event date&amp;#34; default=&amp;#34;4.26&amp;#34;} EVENT”, followed by the large Japanese title “よい風呂の日” and the subtitle “特集” in sage green, with a small bathtub icon nearby. Beneath that, add the Japanese tagline “心も体も、ととのう時間。” and several short body-text blocks in Japanese explaining the meaning of Good Bath Day, including references to “4(よ)2(ふ)6(ろ)” and the benefits of bathing for body and mind. On the right side, show a bright, airy bathroom interior lit by soft natural morning light from a window, with beige and off-white tones, a wooden counter, folded white towels, a pump bottle, a sponge, woven baskets, and a few green plants. In front of the bathroom scene, place a youthful anime-style person with {argument name=&amp;#34;hair color&amp;#34; default=&amp;#34;soft medium brown&amp;#34;} tousled short hair, fair skin, and a relaxed expression, standing in a casual post-bath pose. The character wears a loose white T-shirt with a tiny dark square chest logo and light brown drawstring lounge pants, one hand in a pocket and the other holding a white towel up near the face and shoulder, conveying a fresh, just-bathed feeling. Near the character, include the handwritten-style Japanese side note “湯上がりの、リラックスタイム。” Add an oval badge on the lower right of the main image area with the English heading “GOOD BATH DAY” and Japanese explanatory text inside, plus a small bathtub icon. Below the main feature, include exactly 2 small inset images of the same character in the bathroom, each framed as rectangular mini-panels with narrow vertical Japanese captions beside them. At the bottom, create exactly 4 rounded rectangular information cards in a row: card 1 labeled “POINT 01” with the heading “お風呂の基本” and text about soaking in lukewarm water around 38–40°C; card 2 labeled “POINT 02” with the heading “日常でできること” and text about making bathing part of a routine instead of only showering; card 3 labeled “POINT 03” with the heading “楽しみ方・取り入れ方” and text about bath salts, scents, music, and lighting; card 4 labeled “まとめ” with concluding Japanese text about sustainable self-care. Decorate the cards with small illustrated elements such as leaves, a bathtub, a candle, a bottle, lavender sprigs, and a basket of folded towels. Along the very bottom, add a horizontal green tip strip labeled “今日からできる TIP” with exactly 3 checklist items: “就寝の1〜2時間前に入浴する”, “スマホは浴室に持ち込まない”, and “水分補給を忘れずに”. Place a final handwritten-style Japanese phrase at the lower right reading “自分をいたわる時間を。” The overall look should be clean, gentle, wellness-focused, feminine-neutral, and polished like a Japanese seasonal magazine infographic, with delicate anime illustration, soft shadows, subtle textures, and calm spa-like atmosphere.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式科幻換裝流程板&#34;&gt;日式科幻換裝流程板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yy7482933910896/status/2048192904922075161&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yy7482933910896&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yy7482933910896&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087_hu_b07edc1e2ab93dae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/087_hu_7eadfa0842e62977.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式科幻換裝流程板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Japanese sci-fi armor dressing-process infographic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;cinematic live-action tokusatsu-inspired promotional board, realistic industrial lighting, polished metal surfaces, sharp photographic detail&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;manual pre-battle suit-up sequence for a female hero in a red, silver, black, and blue protector suit&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;character&amp;#34;:{&amp;#34;gender&amp;#34;:&amp;#34;female&amp;#34;,&amp;#34;age&amp;#34;:&amp;#34;young adult&amp;#34;,&amp;#34;identity&amp;#34;:&amp;#34;helmetless heroine during assembly, face intentionally obscured or anonymized in every unhelmeted panel&amp;#34;,&amp;#34;hair&amp;#34;:&amp;#34;dark brown to black hair tied in a high ponytail with bangs&amp;#34;,&amp;#34;undersuit&amp;#34;:&amp;#34;glossy black skintight inner suit with silver chest panel and white neck ring&amp;#34;,&amp;#34;armor&amp;#34;:&amp;#34;retro-futuristic protector armor with red shoulder and arm plates, silver breastplate and torso plating, circular blue chest core, red waist unit, white gloves, red forearm guards with yellow stripe accents&amp;#34;,&amp;#34;helmet&amp;#34;:&amp;#34;round red-and-silver helmet with black visor&amp;#34;},&amp;#34;environment&amp;#34;:{&amp;#34;location&amp;#34;:&amp;#34;high-tech industrial hangar or armor bay&amp;#34;,&amp;#34;background elements&amp;#34;:[&amp;#34;metal framework&amp;#34;,&amp;#34;robotic equipment&amp;#34;,&amp;#34;tool benches&amp;#34;,&amp;#34;armor racks&amp;#34;,&amp;#34;computer monitors&amp;#34;,&amp;#34;workshop lighting&amp;#34;,&amp;#34;bay corridor marked BAY-07 in final panel&amp;#34;]}},&amp;#34;layout&amp;#34;:{&amp;#34;header&amp;#34;:{&amp;#34;count&amp;#34;:2,&amp;#34;labels&amp;#34;:[&amp;#34;ソルジャンヌ・スーツ 手動装着プロセス&amp;#34;,&amp;#34;専用プロテクタースーツ『ソルジャンヌ』を、戦闘前に手動で装着する様子。各ユニットを確実に装着し、システムを起動する。&amp;#34;],&amp;#34;design&amp;#34;:&amp;#34;wide black-to-red gradient banner across top, large bold white Japanese text, diagonal red accent&amp;#34;},&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;1 インナースーツの確認&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;各部のセンサーとコネクタをチェック。戦闘に備え、身体の状態を最終認する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;three-quarter view of the heroine in only the black glossy inner suit, looking down while checking or tightening a wrist connector&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;2 胸部・肩部アーマーの装着&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;胸部ユニットと肩部プロテクターを装着。コネクタを接続し、ロックを固定する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;mid shot with chest armor and red shoulder plates installed, heroine fastening the front torso area with both hands&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;3 腰部ユニット・ベルトの固定&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ウエストユニットを装着し、各部のロックを確認。可動部の動作チェックを行う。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;mid shot with torso armor completed, heroine tightening or checking the waist belt and side locks&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;4 ヘルメットの準備&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ヘルメットのバイザーと内部システムをチェック。ヘッドセットとの同期を確認する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;heroine holding the red helmet in both hands at chest height, showing the glossy black visor&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;5 ヘルメットの装着・システム起動&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ヘルメットを装着し、直上のコネクタをロック。全身のシステムが起動し、胸部コアが発光する。&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;heroine placing the helmet onto her head with both hands; blue chest core glowing brightly&amp;#34;},{&amp;#34;title&amp;#34;:&amp;#34;6 装着完了&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom-right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;全システムの最終チェックを行い、戦闘モードへ。ソルジャンヌ、出撃準備完了!&amp;#34;],&amp;#34;image&amp;#34;:&amp;#34;full-body frontal hero pose in a futuristic corridor, fully suited with helmet on, arms relaxed at sides&amp;#34;}],&amp;#34;footer&amp;#34;:{&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;一つ一つの装着が、命を守り、力を引き出す。 ソルジャンヌの戦いは、ここから始まる。&amp;#34;],&amp;#34;design&amp;#34;:&amp;#34;dark red cinematic footer strip with centered white Japanese slogan&amp;#34;},&amp;#34;grid&amp;#34;:{&amp;#34;rows&amp;#34;:2,&amp;#34;columns&amp;#34;:3,&amp;#34;panel_count&amp;#34;:6,&amp;#34;panel_borders&amp;#34;:&amp;#34;thin white dividers&amp;#34;,&amp;#34;number_badges&amp;#34;:6}},&amp;#34;text_rendering&amp;#34;:{&amp;#34;language&amp;#34;:&amp;#34;Japanese&amp;#34;,&amp;#34;font&amp;#34;:&amp;#34;bold sans-serif headline with smaller sans-serif body text&amp;#34;,&amp;#34;colors&amp;#34;:&amp;#34;white text on black, red, and white info bars; red numbered squares with white numerals&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;16:9 wide infographic board, six equal photo panels arranged in a 3-by-2 grid, each panel captioned below with a red numbered box from 1 to 6&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;moody workshop lighting with metallic reflections and red accent lights, realistic shadows, cinematic sci-fi atmosphere&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;夢幻澀谷泡泡少女&#34;&gt;夢幻澀谷泡泡少女
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/terunari/status/2048308270914490666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/terunari&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@terunari&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088_hu_ac2ca09b4bcbac9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/088_hu_d945777b617775df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;夢幻澀谷泡泡少女&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dreamy anime-style full-body illustration of a fashionable young woman standing in the middle of the Shibuya scramble crossing in Tokyo on a bright clear day, with the iconic cylindrical SHIBUYA 109 building centered in the background and recognizable commercial billboards surrounding it, including signs resembling H&amp;amp;M, DHC, DMM TV, Big Echo, and other dense Japanese city advertisements. She is the single main subject, posed gracefully as if floating or weightless, standing on top of one giant iridescent translucent soap bubble beneath her skirt. Her face is softly obscured and de-emphasized, while her long dark violet-black hair flows dramatically in the wind, with soft bangs and a pink floral headband accessory with ribbon on one side. She wears a sweet feminine spring outfit in pastel pink: a long-sleeved frilled blouse under a sleeveless pink dress with a ribbon tie at the chest, a tan belt at the waist, layered ruffles at the hem, and subtle sakura flower embroidery near the lower skirt. Her expression and body language should feel gentle, elegant, whimsical, and slightly magical. One hand is raised with her index finger pointing upward toward a floating bubble that contains 1 smartphone; her other hand holds a loop handle attached to a large transparent iridescent shopping-bag-like bubble containing 3 visible items: 1 SHIBUYA 109 paper shopping bag, 1 pink shopping bag or package, and 1 small pink bunny-faced pouch. Also include 1 separate floating smartphone/tablet-like device outside the bubbles near the lower left side, and 1 floating bubble on the lower right containing 1 compact camera. Surround her with many soap bubbles of different sizes, all highly reflective with rainbow highlights and delicate transparency, creating a soft sparkling atmosphere. The city scene should be busy but slightly softened, with pedestrians in the far background, crosswalk stripes in the foreground, and warm sunlight filtering through the urban canyon. Use polished high-detail anime illustration rendering, luminous pastel colors, glossy reflections, soft bloom, a romantic spring palette, and a magical everyday Tokyo aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;暴風雨熱帶城市與屋頂飛機&#34;&gt;暴風雨熱帶城市與屋頂飛機
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gerry/status/2048303505702629537&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Gerry&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gerry&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089.webp&#34;
	width=&#34;1199&#34;
	height=&#34;678&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089_hu_8c85bf73daf63068.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/089_hu_e78d6f4e7fd96e6f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;暴風雨熱帶城市與屋頂飛機&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;424px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A cinematic wide aerial view of a tropical coastal city at sunset during a violent storm, split dramatically between dark storm clouds on the left and blazing golden sunlight on the right. In the foreground, a small single-engine light airplane with a high wing and visible tail is parked or perched precariously on a flat rooftop, seen from behind and slightly above, centered near the bottom of the frame. To the left midair, 1 helicopter flies low over the city with its searchlight cast downward. In the sky, include 1 faint lightning bolt on the far left. The city below is dense with wet streets, reflective pavement, low-rise commercial buildings, and a few taller modern towers, including 1 prominent striped high-rise near the center. A glowing red circular neon sign is visible near the middle distance. On the right side, a calm bay or inlet curves through the city, lined with 1 row of tall palm trees along the waterfront road, and crossed by 1 long low bridge in the distance. The water and streets glisten from recent rain, reflecting the orange sunlight breaking through the clouds. Mood is tense, dramatic, and slightly surreal, like a movie still from an urban disaster thriller. Photorealistic, ultra-detailed, high dynamic range lighting, volumetric sun rays, storm atmosphere, wet surfaces, rich contrast, deep shadows, golden highlights, wide-angle lens, epic composition.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戶外運動服飾網格廣告&#34;&gt;戶外運動服飾網格廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2049081198211736062&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090_hu_f1558c734cabdcd9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/090_hu_b0414569d42985bc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戶外運動服飾網格廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dynamic 2×2 grid collage of modern outdoor sportswear advertising posters, each panel representing a different adventure lifestyle brand. High-energy, editorial-style composition with bold typography and textured graphic design.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top-left panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Athletic male model in a bright blue insulated winter jacket, black snow pants, gloves, and sunglasses, stepping forward in a snowy environment. Snow particles flying, dramatic motion. Background features rough blue paint brush strokes. Bold distressed typography reads: “NEVER STOP EXPLORING.” Additional small text: “Built for extremes.” High contrast, rugged winter exploration theme.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top-right panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Fit male hiker climbing rocky terrain, wearing an olive green shirt, black trekking pants, and a large black backpack with orange straps. Dust and debris kicking up from the ground. Background includes orange paint strokes and sketched mountain graphics. Bold text: “BUILT FOR HERE – INDIA TESTED.” Handwritten Hindi accents and arrows. Warm earthy tones.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-left panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Calm outdoor scene with a male model sitting on a rock, wearing a green jacket, beanie, sunglasses, and hiking shoes. Minimal scenic mountain illustration in the background with soft green tones. Typography reads: “ESCAPE THE NOISE – JUST GO OUTSIDE.” Clean, relaxed, nature-focused aesthetic with subtle graphic elements.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-right panel:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Energetic female runner in motion wearing a purple athletic t-shirt, black shorts, and running shoes. Bright, playful background with purple and yellow paint splashes, doodles, arrows, and sun illustration. Bold typography: “READY FOR EVERYONE – START YOUR JOURNEY.” Youthful, vibrant fitness energy.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Overall style:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-resolution, photorealistic sportswear campaign
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bold brushstroke textures and grunge overlays
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mixed typography: distressed, handwritten, and modern sans-serif
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Strong color blocking per panel (blue, orange, green, purple)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Dynamic poses conveying motion, strength, and adventure
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Clean grid layout with balanced spacing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Commercial advertising / brand campaign aesthetic (Nike, Decathlon style)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Professional, cinematic lighting with sharp detail and contrast
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mood: Energetic, adventurous, motivational
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Aspect ratio: 1:1 (square collage)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;地形字母衛星圖面板&#34;&gt;地形字母衛星圖面板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/madpencil_/status/2049080259476349218&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/madpencil_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@madpencil_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091_hu_62b8746b955a3fad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/091_hu_bbe920a4698343b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;地形字母衛星圖面板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic satellite view from space, a clean modern editorial layout of 9 vertical panels arranged side-by-side on a white background, together forming the word &amp;#34;MADPENCIL&amp;#34;, each panel containing one letter created entirely from natural Earth topography, no artificial text overlays:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 1 (M): rugged mountain ranges and deep valleys forming a sharp, angular &amp;#34;M&amp;#34;, rocky textures, high elevation shadows
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 2 (A): winding river cutting through dense green forest forming an organic &amp;#34;A&amp;#34;, strong contrast between water and vegetation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 3 (D): desert dunes and wind-sculpted sand patterns shaping a smooth &amp;#34;D&amp;#34;, warm tones, soft gradients
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 4 (P): agricultural farmland grids and patchwork fields forming a structured &amp;#34;P&amp;#34;, geometric patterns clearly visible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 5 (E): glacier and ice formations carving a crisp &amp;#34;E&amp;#34;, bright whites and icy blues, fractured textures
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 6 (N): braided river system across floodplains forming &amp;#34;N&amp;#34;, branching channels with natural flow lines
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 7 (C): coastal shoreline and ocean edge shaping a curved &amp;#34;C&amp;#34;, waves and sediment gradients visible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 8 (I): narrow canyon or straight river cutting through terrain forming a minimal &amp;#34;I&amp;#34;, strong vertical emphasis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Panel 9 (L): volcanic terrain with lava flows forming an &amp;#34;L&amp;#34;, dark rock with glowing red/orange lava accents
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;top-down satellite perspective, NASA Earth observation style, hyper-detailed textures, realistic geography, consistent scale and lighting across all panels, minimal clouds, high contrast, sharp focus, subtle atmospheric haze, natural color grading, ultra high resolution 8K, clean spacing between panels, modern gallery-style composition, visually cohesive but each panel distinctly different biome, letters clearly readable yet organically integrated into terrain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;冰咖啡產品信息圖&#34;&gt;冰咖啡產品信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2049082049995362785&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092_hu_f430dbb0b53aa34d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/092_hu_bfc913c0d69a3a17.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;冰咖啡產品信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end café-style product photograph of a transparent glass filled with iced coffee, centered against a soft beige and cream seamless studio background. The drink shows a rich dark coffee base blending with creamy milk swirls, creating a smooth gradient effect. Several clear ice cubes are visible with realistic transparency and light refraction. The glass has subtle condensation droplets, adding freshness. Soft natural studio lighting creates delicate highlights and a clean shadow beneath the glass. Ultra-sharp focus, premium beverage advertisement style, DSLR macro photography, hyper realistic, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PROMPT 2 - Create a hyper-realistic exploded vertical infographic composition of an iced coffee.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top → Bottom structure:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Foam Layer (light creamy foam with soft airy texture)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Coffee Liquid (rich dark espresso layer with smooth gradient)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Ice Cubes (transparent cubes with sharp edges and reflections)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Milk Layer (soft creamy white layer with smooth blend effect)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;→ Glass Base (clear minimal glass structure)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;All elements must be perfectly centered, evenly spaced, and aligned vertically. Use a soft beige seamless background with clean café-style lighting and subtle realistic shadows beneath each floating element. The composition should feel like a premium beverage ad combined with a clean infographic layout.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add clean minimalist text labels with thin pointer lines using these exact labels:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Foam”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Coffee”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Ice”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Milk”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;“Glass”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic liquid detail, sharp reflections, premium commercial photography, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;時尚連衣裙系列信息圖&#34;&gt;時尚連衣裙系列信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab/status/2049073530738754042&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cellinlab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093.webp&#34;
	width=&#34;819&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093_hu_47c6ab77e8e2fa59.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/093_hu_9d02d9742ac6b6c1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;時尚連衣裙系列信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;79&#34;
		data-flex-basis=&#34;191px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;image_type&amp;#34;: &amp;#34;Commercial Fashion Infographic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;Young Asian woman with elegant features and dark hair tied in a loose bun&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;attire&amp;#34;: &amp;#34;Satin midi dress with spaghetti straps and a draped cowl neckline&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;fit&amp;#34;: &amp;#34;Bodycon / slim fit with side ruching and a subtle leg slit&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout_structure&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;composition&amp;#34;: &amp;#34;Multi-panel editorial layout&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;header&amp;#34;: &amp;#34;Bold serif typography reading &amp;#39;DRESS COLLECTION&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_feature&amp;#34;: &amp;#34;Large centered portrait of the model, a young Asian woman, wearing a wine-red satin dress&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;secondary_panels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Features grid with minimalist icons&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Guide sidebar detailing neckline, sleeve, and length&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Color Collection row showing the dress in Black, Emerald Green, Navy, Champagne, and Royal Blue&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;Dress Style Guide footer featuring the model in various atmospheric evening settings&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;aesthetic_style&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;color_palette&amp;#34;: &amp;#34;Deep jewel tones (Wine Red, Emerald, Navy, Royal Blue) contrasted with Champagne and Black against a warm cream or beige background&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;lighting&amp;#34;: &amp;#34;Soft studio lighting with elegant highlights on the satin fabric texture&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;vibe&amp;#34;: &amp;#34;Luxurious, timeless, and sophisticated commercial advertising&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;typography&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;primary&amp;#34;: &amp;#34;Classic Serif for titles&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;secondary&amp;#34;: &amp;#34;Clean Sans-Serif for body text and technical details&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;單色時尚封面&#34;&gt;單色時尚封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sha_zdiii/status/2049088961008848905&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sha_zdiii&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sha_zdiii&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094.webp&#34;
	width=&#34;670&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094_hu_f5db21fbfc89aec1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/094_hu_7eb4175a44dfb464.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;單色時尚封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;55&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Ultra-realistic high-fashion magazine cover, black and white cinematic portrait of a confident young female model, slightly messy wet-look hair, sharp jawline, intense gaze, natural glossy lips, wearing a premium black leather trench coat over a minimal outfit.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The model is posing slightly tilted forward with attitude, hands adjusting the coat, accessorized with multiple rings, ear piercings, and layered chain necklaces.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting is dramatic studio lighting with soft shadows, high contrast, editorial Vogue-style aesthetic, ultra-detailed skin texture, 8K resolution, sharp focus.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background is minimal gradient grey with soft light streaks for depth.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Magazine cover layout included:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Large bold serif title at top: “VOID ELITE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Subtitle small: “Edition 07 / 2026”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Left text: “NOT BUILT TO FOLLOW — BUILT TO DOMINATE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom left: “HIGH-FASHION STREET LUXURY”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Right vertical text: “UNTOUCHABLE PRESENCE”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom right: “SILENCE IS POWER”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a small holographic glitch-style label over the eyes with text “ICON”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: luxury fashion editorial, Vogue, Harper’s Bazaar, monochrome aesthetic, modern typography, clean layout, ultra premium branding
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--ar 2:3 --style raw --quality 2 --sharp focus --photorealistic
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;快餐角色海報&#34;&gt;快餐角色海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/LoovaAI/status/2049085173015425354&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/LoovaAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@LoovaAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095.webp&#34;
	width=&#34;880&#34;
	height=&#34;1168&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095_hu_4c7f3d39e545b335.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/095_hu_7ced76a3701ab5be.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;快餐角色海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the character in image 1 as the main subject. Create a vertical poster ad in American fast food diner style. Low angle, wide lens. Red / yellow / white palette with ketchup splashes, melting cheese graphics, comic burst shapes, retro diner typography, and bold fast food poster collage aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;跨越兩個世紀的紐約電影感海報&#34;&gt;跨越兩個世紀的紐約電影感海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010/status/2049460661109879022&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Shinning1010&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Shinning1010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096_hu_712435186164880e.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/096_hu_40c0d17ec5a1c06c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;跨越兩個世紀的紐約電影感海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a cinematic 3:4 vertical poster of New York City that feels truly epic and unconventional, showing the passage from the 20th century to the 21st century in one seamless image. Place a lone figure at the center of the composition, standing in the middle of the street and looking forward as if witnessing New York across time. The left side should depict 20th-century New York with warm sepia atmosphere, vintage taxis, old newsstands, retro lamps, and landmarks like the Chrysler Building and Empire State Building. The right side should depict 21st-century New York with glass skyscrapers, One World Trade Center, digital billboards, and modern urban energy. Make the transition natural rather than split-screen, with coherent perspective, wet reflective pavement, realistic textures, atmospheric depth, and no text.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;藍眼淚雞尾酒教程信息圖海報&#34;&gt;藍眼淚雞尾酒教程信息圖海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab/status/2049460927121244510&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/cellinlab&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@cellinlab&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097.webp&#34;
	width=&#34;1067&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097_hu_9c4415e7dcaa1d2c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/097_hu_a9eaadf9e22e347a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;藍眼淚雞尾酒教程信息圖海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;88&#34;
		data-flex-basis=&#34;213px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;试着帮我生成调制一杯蓝色眼泪鸡尾酒（配料流程你自己发挥想象，但是要写清楚确保可复现）的流程教学图和概念设计宣传图，轻奢酒咖海报风格，横版。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ascii-登革熱信息圖&#34;&gt;ASCII 登革熱信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mapasbr/status/2049458767520051448&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mapasbr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mapasbr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098_hu_17f07d5693cbf7c6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/098_hu_8e33f45aa7a814cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;ASCII 登革熱信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;infográfico ASCII DENGUE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/poster.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：電商、海報、人像、UI 全收錄</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/</guid>
        <description>&lt;p&gt;這是一組 GPT Image 2 提示詞案例索引。原始案例量很大，單頁收錄會過長，所以這裡按內部分類拆成多個頁面。&lt;/p&gt;
&lt;h2 id=&#34;分類導航&#34;&gt;分類導航
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;分類&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;案例數&lt;/th&gt;
          &lt;th&gt;頁面&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;電商主圖&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;廣告創意&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;人像攝影&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;海報插畫&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;角色設計&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI 與社媒&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社媒案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;對比與社群案例&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社群案例&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ecommerce.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;電商主圖案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ad-creative.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;廣告創意案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/portrait.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;人像攝影案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/poster.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;海報插畫案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/character.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;角色設計案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ui.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UI 與社媒案例&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/comparison.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;對比與社群案例&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：電商主圖案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;電商主圖&lt;/code&gt; 分類下的 20 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;電商主圖&#34;&gt;電商主圖
&lt;/h2&gt;&lt;h3 id=&#34;電商主圖---奢華琥珀香水廣告&#34;&gt;電商主圖 - 奢華琥珀香水廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Polanco_IA/status/2047689647967609037&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Polanco_IA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Polanco_IA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000_hu_f485d4c5980da91f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/000_hu_79f504b06facaeba.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 奢華琥珀香水廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxurious cinematic product photograph of a classic rectangular perfume bottle inspired by {argument name=&amp;#34;brand label&amp;#34; default=&amp;#34;N°5 CHANEL PARIS PARFUM&amp;#34;}, placed upright on a glossy black marble surface with white veining. The bottle is centered slightly to the right, made of clear faceted glass with a large transparent crystal stopper, filled with rich amber-gold perfume that glows from within. Tiny condensation droplets cover the glass, adding texture and realism. Dramatic warm lighting from the upper left creates golden highlights, deep reflections on the marble, and a soft luminous bloom in the background. Wisps of elegant smoke curl around the bottle on both sides, enhancing a moody high-end advertisement feel. Dark background, shallow depth of field, ultra-detailed studio product photography, luxury beauty campaign aesthetic, crisp focus on the bottle, realistic reflections, warm black-and-gold color palette. Add a small white {argument name=&amp;#34;corner logo&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;} in the top-right corner. Square composition, premium commercial ad, photorealistic, high contrast, refined and sophisticated.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---護膚品棚拍圖&#34;&gt;電商主圖 - 護膚品棚拍圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2047636636847231222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001.webp&#34;
	width=&#34;1002&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001_hu_9109c57a0d6d7ec.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/001_hu_8aeaca4f0da10272.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 護膚品棚拍圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;83&#34;
		data-flex-basis=&#34;200px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A soft {argument name=&amp;#34;bottle color&amp;#34; default=&amp;#34;cream-colored&amp;#34;} bottle with a {argument name=&amp;#34;pump color&amp;#34; default=&amp;#34;pastel yellow&amp;#34;} pump stands on a matte podium, surrounded by silky foam and {argument name=&amp;#34;flowers&amp;#34; default=&amp;#34;chamomile blossoms&amp;#34;}. The background is a pale yellow gradient with subtle bubble details. The label emphasizes organic chamomile and calming care. Fresh chamomile flowers accentuate the gentle appeal.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---熱帶柑橘汽水廣告海報&#34;&gt;電商主圖 - 熱帶柑橘汽水廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/edimakorfr/status/2047635133466124726&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/edimakorfr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@edimakorfr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002_hu_50a6f41beed238c7.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/002_hu_4bc62e586c85aec0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 熱帶柑橘汽水廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a vibrant tropical commercial poster for a citrus soda bottle, in a bright summer advertising style. Show a single large plastic bottle of {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Soda&amp;#34;} centered slightly to the right, tilted a little left, with a yellow cap and transparent bottle covered in cold condensation droplets, filled with glowing golden-orange soda. The label should feature sliced oranges and citrus artwork with the brand text &amp;#34;{argument name=&amp;#34;product name&amp;#34; default=&amp;#34;Soda&amp;#34;}&amp;#34;, the phrase &amp;#34;aux agrumes d&amp;#39;été&amp;#34;, and a small green &amp;#34;500 ml&amp;#34; mark. Use a sunny beach background with vivid blue sky, turquoise ocean, soft clouds, and blurred tropical palm leaves entering from the upper right corner. Add dramatic water splashes around the base of the bottle, scattered clear ice cubes, and 5 visible citrus pieces in the foreground: 2 orange wedges, 1 lime half, 1 grapefruit half, and 1 partial orange slice at the far right edge. Place large French promotional text on the left: a huge white headline &amp;#34;{argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Soda&amp;#34;}&amp;#34; with a small splash accent above it, then yellow script text &amp;#34;aux agrumes d&amp;#39;été&amp;#34; underneath. Add a yellow paint-stroke badge at mid-left with the text &amp;#34;LA FRAÎCHEUR QUI PÉTILLE !&amp;#34;. Add a vertical feature list on the lower left with 3 round icons and French captions: &amp;#34;SAVEURS NATURELLES&amp;#34;, &amp;#34;SANS COLORANTS ARTIFICIELS&amp;#34;, and &amp;#34;EXTRA RAFRAÎCHISSANT&amp;#34;. Add a green brushstroke banner at the bottom left reading &amp;#34;FORMAT PRATIQUE 500 ml&amp;#34;. Add a round beige eco-style seal at the bottom right with green outline and leaf motif, containing the text &amp;#34;{argument name=&amp;#34;seal text&amp;#34; default=&amp;#34;PLAISIR FRUITÉ À CHAQUE GORGÉE&amp;#34;}&amp;#34;. Lighting should be glossy and high-energy with strong sun flare from the upper left, saturated citrus colors, crisp packaging detail, realistic droplets, and polished supermarket-ad realism.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---工業設計展示圖&#34;&gt;電商主圖 - 工業設計展示圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ShamsAmin56/status/2047627860752621647&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ShamsAmin56&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ShamsAmin56&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003_hu_8784fe7f2988eab8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/003_hu_78434c2c0300ee54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 工業設計展示圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Core Subject: [{argument name=&amp;#34;reference&amp;#34; default=&amp;#34;use the uploaded image&amp;#34;}, keep the details, typography and structure locked 100%]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Layout &amp;amp; Composition: A {argument name=&amp;#34;presentation type&amp;#34; default=&amp;#34;professional industrial design presentation sheet&amp;#34;}. The image should be organized into a clean grid system.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top Row: A 3x3 layout showing top-down flat lay views and close-up macro details of materials.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Middle Section: Three hero shots of the product standing upright in different color ways (Matte Black, Arctic White, and accented variants). The products should be slightly tilted to show depth and form.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom Section: A dynamic &amp;#34;floating&amp;#34; composition featuring two products overlapping at opposing angles to showcase the front and side profiles simultaneously.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Environment &amp;amp; Lighting: Set against a minimalist, neutral studio gray background. Soft top-down lighting with realistic contact shadows. High-end product photography aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style &amp;amp; Finish: Matte textures, clean silhouettes, and sharp edges. Leave designated blank areas on the product surfaces for &amp;#34;Placeholder Branding&amp;#34; and &amp;#34;Graphic Mockups.&amp;#34; 4k resolution, Unreal Engine 5 render style, hyper-realistic, clean aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---奢華毛裏樂福鞋生活方式照片&#34;&gt;電商主圖 - 奢華毛裏樂福鞋生活方式照片
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/dynamicwangs/status/2047580984342925545&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/dynamicwangs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@dynamicwangs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004_hu_50c9da49cd05f85d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/004_hu_49bd32fdee48211d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 奢華毛裏樂福鞋生活方式照片&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A warm, editorial-style lifestyle product photo shot indoors from a low close-up angle, focused on a woman&amp;#39;s lower legs and feet as she tries on 1 pair of black leather backless loafers with tan faux-fur lining. One loafer is worn on the right foot and the left foot is bare, hovering just above the textured cream shag rug, while the second matching loafer lies on the rug in the lower left foreground. The shoes have smooth black leather uppers, a rounded almond toe, open mule-style heel, plush brown fur spilling out around the opening, and a small polished gold horsebit hardware detail across the vamp. The model wears cropped medium-blue denim jeans with a raw frayed hem. The setting is a cozy minimalist interior with a cream rug featuring 2 thin irregular black lines, a neutral wall, and a leaning rectangular mirror with a medium wood frame in the upper right background, softly reflecting the rug and part of the scene. Use soft natural window light, shallow depth of field, subtle film grain, realistic skin texture, muted beige and black palette, relaxed candid composition, premium fashion catalog mood, high detail, photorealistic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---大理石梳妝檯香水廣告&#34;&gt;電商主圖 - 大理石梳妝檯香水廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MiguelMaestroIA/status/2047555836252151831&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MiguelMaestroIA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MiguelMaestroIA&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005_hu_5d7059f8adafa1a9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/005_hu_1be1808bff17b871.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 大理石梳妝檯香水廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxury e-commerce advertising photo of a premium perfume bottle on a polished gray-and-white marble vanity, shot in a warm cinematic studio style with soft golden lighting, shallow depth of field, and elegant reflections. The composition is square and high-end, with the perfume bottle centered slightly right of frame and promotional text on the left. The bottle is a tall sculpted hourglass-shaped glass flacon with smoky transparent gray glass fading darker at the base, a glossy gold spherical cap, a gold collar engraved with fine branding, and a large metallic gold interlocking monogram on the front. Keep the branding-inspired feel but do not add extra products. In the foreground left, include 1 cut-crystal bowl with a gold rim, partially cropped. In the background right, include 1 brushed gold cylindrical vase holding 1 bouquet of soft white flowers, blurred. Behind the bottle, add 1 black marble rectangular box with subtle white veining and gold trim. In the lower right foreground, include 1 draped piece of champagne-colored satin fabric, softly out of focus. The background should be dark, luxurious, and softly blurred, with rich brown-black tones and a vertical shadowed panel on the left to support typography. Add elegant serif headline text on the upper left reading {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Premium Perfume,&amp;#34;} in large warm beige letters, with a smaller serif subheading beneath reading {argument name=&amp;#34;tagline&amp;#34; default=&amp;#34;Subtlety and Elegance&amp;#34;}, plus a thin short gold horizontal line below the subheading. Place a small white logo in the top-right corner reading {argument name=&amp;#34;brand logo&amp;#34; default=&amp;#34;Pollo.ai&amp;#34;}. Emphasize premium materials, realistic glass refraction, gold metallic highlights, luxury product photography, refined composition, soft bokeh, and upscale beauty-ad aesthetics.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---微縮場景護膚品廣告&#34;&gt;電商主圖 - 微縮場景護膚品廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2048074514278563949&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006_hu_7a1232684c10cd23.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/006_hu_a4c6ffc53a2a0509.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 微縮場景護膚品廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-realistic miniature diorama product advertisement featuring an oversized luxury skincare pump bottle labeled &amp;#34;LUXEVEIL Skin Science – Radiance Nourishing Body Lotion&amp;#34; in cream/beige with a polished gold pump top, placed on a circular platform. Tiny figurine construction workers dressed in yellow coveralls and white hard hats swarm around the bottle climbing scaffolding, painting the bottle with rollers, operating a tower crane, working near industrial tanks and pipework, and unloading a miniature flatbed truck. The scene includes metal scaffolding structures, industrial silos, orange traffic cones, wooden barricades, and storage barrels. The overall color palette is warm beige, cream, gold, and mustard yellow. Studio photography style with soft diffused lighting, no shadows, clean beige background. The concept metaphorically shows workers &amp;#34;crafting&amp;#34; or &amp;#34;building&amp;#34; the perfect lotion. Tilt-shift miniature aesthetic, ultra-detailed, commercial product photography, 8K resolution, photorealistic CGI render.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---中國傳統藝術與瓷瓶&#34;&gt;電商主圖 - 中國傳統藝術與瓷瓶
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2048046906585280977&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007_hu_f04a5b4d6381699.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/007_hu_d9ceaf33efae3a35.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 中國傳統藝術與瓷瓶&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A scarf inspired by &amp;#39;A Thousand Li of Rivers and Mountains&amp;#39;, surrounded by Wang Ximeng&amp;#39;s blue-green landscape, with a silky texture and soft lighting.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A famille rose porcelain vase featuring Lady Yang Guifei enjoying flowers, with peony and butterfly patterns in the style of imperial kilns.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---高端遊戲主板棚拍圖&#34;&gt;電商主圖 - 高端遊戲主板棚拍圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/rojassartorio/status/2048019666816163867&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/rojassartorio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@rojassartorio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008.webp&#34;
	width=&#34;1200&#34;
	height=&#34;900&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008_hu_dfe6d504cd7e65ab.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/008_hu_f4c8963d2dfc27a9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 高端遊戲主板棚拍圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;133&#34;
		data-flex-basis=&#34;320px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end enthusiast ATX gaming motherboard product photo on a dark studio background, shown in a three-quarter top-down perspective angled from the lower left toward the upper right. The board is mostly matte black and gunmetal with sharp geometric armor plates, brushed metal textures, and subtle RGB edge lighting in blue, purple, and magenta. Feature an exposed modern Intel-style CPU socket near the upper center, 4 black DIMM memory slots on the right, large VRM heatsinks across the top and upper left, and multiple reinforced PCIe slots in the lower half. Include 3 major branded heatsink zones: a tall rear I/O shroud at upper left with an illuminated RGB eye logo and the text &amp;#34;MAXIMUS HERO&amp;#34;, a left-side chipset/slot armor piece with the text &amp;#34;SUPREMEFX&amp;#34;, and a large angular lower-right chipset cover with a silver ROG-style emblem plus a lower strip that reads &amp;#34;FOR THOSE WHO DARE&amp;#34;. Show detailed capacitors, headers, power connectors, debug display reading &amp;#34;88&amp;#34; at the top right, and a small round start button nearby. Ultra-detailed commercial product photography, crisp focus across the board, realistic reflections on metal, premium luxury tech aesthetic, dramatic low-key lighting, clean black seamless backdrop, no cables, no CPU, no RAM, no other objects.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---高端穀物粉廣告板&#34;&gt;電商主圖 - 高端穀物粉廣告板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WooGabriel76263/status/2047988112094101770&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/WooGabriel76263&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WooGabriel76263&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009_hu_1aee47064dac42f4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/009_hu_59cfbae4fc6e62d6.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 高端穀物粉廣告板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;Chinese e-commerce product marketing board&amp;#34;,&amp;#34;product&amp;#34;:{&amp;#34;category&amp;#34;:&amp;#34;instant grain powder drink&amp;#34;,&amp;#34;brand&amp;#34;:&amp;#34;五谷磨房&amp;#34;,&amp;#34;name&amp;#34;:&amp;#34;核桃芝麻黑豆粉&amp;#34;,&amp;#34;packaging&amp;#34;:&amp;#34;matte black retail box with gold Chinese typography and a large swirling bowl graphic on the front, plus individual black sachets inside&amp;#34;,&amp;#34;net weight&amp;#34;:&amp;#34;320g (32g×10袋)&amp;#34;},&amp;#34;style&amp;#34;:{&amp;#34;overall&amp;#34;:&amp;#34;premium dark food advertising layout&amp;#34;,&amp;#34;color palette&amp;#34;:[&amp;#34;black&amp;#34;,&amp;#34;deep brown&amp;#34;,&amp;#34;warm gold&amp;#34;,&amp;#34;beige&amp;#34;,&amp;#34;walnut brown&amp;#34;],&amp;#34;lighting&amp;#34;:&amp;#34;dramatic studio lighting with glossy highlights and warm rim light&amp;#34;,&amp;#34;mood&amp;#34;:&amp;#34;luxurious, nourishing, healthy, appetizing&amp;#34;},&amp;#34;layout&amp;#34;:{&amp;#34;format&amp;#34;:&amp;#34;single tall composite board divided into 5 major sections plus a bottom storyboard table&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;主图/Main image&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-left&amp;#34;,&amp;#34;count&amp;#34;:8,&amp;#34;labels&amp;#34;:[&amp;#34;五谷磨房&amp;#34;,&amp;#34;核桃芝麻黑豆粉&amp;#34;,&amp;#34;32g×10袋 独立包装&amp;#34;,&amp;#34;五黑谷物&amp;#34;,&amp;#34;香浓醇厚&amp;#34;,&amp;#34;独立小袋&amp;#34;,&amp;#34;即冲即饮&amp;#34;,&amp;#34;product box and drink cup&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;详情页/Details page&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top-right&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;黑芝麻&amp;#34;,&amp;#34;黑豆&amp;#34;,&amp;#34;黑米&amp;#34;,&amp;#34;核桃&amp;#34;,&amp;#34;谷物粉&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;香浓细腻 顺滑好喝&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;mid-right&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;一冲即饮 营养美味&amp;#34;,&amp;#34;粉质细腻 Fine powder&amp;#34;,&amp;#34;浓香醇厚 Rich &amp;amp; Smooth&amp;#34;,&amp;#34;营养代餐 Nutritious&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;冲泡方式 HOW TO MAKE&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;mid-left lower&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;1 倒入一袋粉(32g)&amp;#34;,&amp;#34;2 加入200ml 热水或牛奶&amp;#34;,&amp;#34;3 搅拌均匀 即可享用&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;一杯好谷物 轻松好生活&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-left&amp;#34;,&amp;#34;count&amp;#34;:4,&amp;#34;labels&amp;#34;:[&amp;#34;元气早餐&amp;#34;,&amp;#34;办公室下午茶&amp;#34;,&amp;#34;健身代餐&amp;#34;,&amp;#34;睡前暖饮&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;独立小袋 随身携带&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower-right&amp;#34;,&amp;#34;count&amp;#34;:3,&amp;#34;labels&amp;#34;:[&amp;#34;独立小袋 便携卫生&amp;#34;,&amp;#34;锁住新鲜 防潮防氧化&amp;#34;,&amp;#34;1袋1杯 精准份量&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;视频推广广告 seedance 2.0 视频提示词 + 分镜头脚本&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;bottom full width&amp;#34;,&amp;#34;count&amp;#34;:7,&amp;#34;labels&amp;#34;:[&amp;#34;镜头1 开场-产品展示&amp;#34;,&amp;#34;镜头2 食材特写&amp;#34;,&amp;#34;镜头3 倒粉入杯&amp;#34;,&amp;#34;镜头4 冲泡搅拌&amp;#34;,&amp;#34;镜头5 饮用场景&amp;#34;,&amp;#34;镜头6 产品卖点&amp;#34;,&amp;#34;镜头7 结尾口号&amp;#34;]}],&amp;#34;grid&amp;#34;:&amp;#34;top area split into left main image and right detail page; middle area split into preparation guide and feature panel; lower area split into lifestyle scenarios and sachet carry section; bottom is a full-width tabular storyboard&amp;#34;},&amp;#34;scene_elements&amp;#34;:{&amp;#34;ingredients&amp;#34;:[{&amp;#34;name&amp;#34;:&amp;#34;black sesame&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;small black seeds in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;black beans&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;glossy whole beans in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;black rice&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;dark long grains in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;walnuts&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;walnut halves in a round bowl&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;grain powder&amp;#34;,&amp;#34;form&amp;#34;:&amp;#34;light beige powder in a round bowl&amp;#34;}],&amp;#34;serving&amp;#34;:{&amp;#34;drink&amp;#34;:&amp;#34;thick gray-brown sesame walnut bean beverage with smooth surface swirl&amp;#34;,&amp;#34;cup&amp;#34;:&amp;#34;transparent glass cup with handle&amp;#34;,&amp;#34;utensil&amp;#34;:&amp;#34;metal spoon stirring or resting inside drink&amp;#34;},&amp;#34;supporting props&amp;#34;:[&amp;#34;walnuts on table&amp;#34;,&amp;#34;scattered black beans&amp;#34;,&amp;#34;grain stalks or wheat stems&amp;#34;,&amp;#34;dark tabletop&amp;#34;,&amp;#34;ingredient bowls&amp;#34;,&amp;#34;open package showing 5 visible sachets&amp;#34;]},&amp;#34;text_treatment&amp;#34;:{&amp;#34;headline_font&amp;#34;:&amp;#34;bold elegant Chinese display type in metallic gold&amp;#34;,&amp;#34;body_font&amp;#34;:&amp;#34;clean sans serif Chinese with occasional English subtitles&amp;#34;,&amp;#34;accent&amp;#34;:&amp;#34;thin gold divider lines and circular ingredient frames&amp;#34;},&amp;#34;camera_and_composition&amp;#34;:{&amp;#34;product_shots&amp;#34;:&amp;#34;front-facing hero box, angled sachet display box, close-up beverage macro&amp;#34;,&amp;#34;food_photography&amp;#34;:&amp;#34;high-detail commercial food styling, shallow depth of field, crisp texture emphasis&amp;#34;,&amp;#34;aspect_ratio&amp;#34;:&amp;#34;portrait, approximately 9:16&amp;#34;},&amp;#34;quality&amp;#34;:&amp;#34;ultra-detailed commercial design mockup, polished e-commerce key visual plus details page plus ad storyboard, 4K&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---耳機電商信息圖&#34;&gt;電商主圖 - 耳機電商信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2047981795552153860&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010_hu_cc55fe000899aae1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/010_hu_eb8189134e486547.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 耳機電商信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact e-commerce infographic for &amp;#34;{argument name=&amp;#34;product&amp;#34; default=&amp;#34;Apple Pods Pro 3&amp;#34;}&amp;#34; wireless earbuds.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Foreground: An extreme close-up of a hand holding an open glossy white wireless earbud charging case toward the camera. Inside the case are two sleek white earbuds with black speaker accents. A small glowing green LED indicator is visible on the front of the case. The hand and case have slight macro-lens depth blur for realism.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-ground: A {argument name=&amp;#34;model&amp;#34; default=&amp;#34;confident young woman&amp;#34;} with tan skin, brown eyes, and dark hair tied in a messy bun. She has natural makeup with a dewy glow. She is wearing a plain {argument name=&amp;#34;clothing&amp;#34; default=&amp;#34;yellow athletic t-shirt&amp;#34;} (no logos). One white earbud is in her ear. She is looking directly at the camera with a subtle, confident expression.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background: Clean soft gray gradient studio backdrop with shallow depth of field. Diagonal rainbow prism lens flares and soft light leaks across the scene. Several blurred floating white earbuds in the background for depth and motion.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: Soft professional studio lighting with glossy highlights on the product, subtle rim light on the model, high dynamic range.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Typography (modern sans-serif, white):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top center (behind model): Large bold text “AIRPODS”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Top right: “Apple Pods Pro 3”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-left: “Premium sound and noise cancellation”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mid-right: Large bold “30” with “hours of battery life”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Bottom-right: Large bold “1” with “year warranty”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: Ultra-realistic, commercial product photography, 8k resolution, sharp focus on product case, shallow depth of field, vibrant yet clean color palette, premium advertising aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---可持續-t-恤種植吊牌廣告&#34;&gt;電商主圖 - 可持續 T 恤種植吊牌廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme/status/2047957339974828092&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Diplomeme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Diplomeme&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011_hu_2738b20eb2a75528.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/011_hu_de172573b08c1c84.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 可持續 T 恤種植吊牌廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A premium eco-conscious fashion advertisement, shot as a refined editorial product photo. A single off-white or natural cream crew-neck T-shirt hangs on a smooth wooden hanger with a black metal hook, placed against a lush wall of dense green leaves and climbing vines. The hanger has a small minimalist brand monogram engraved near the neck. The shirt is shown from the upper torso down to part of the hem, slightly angled, with soft natural folds and high-quality cotton texture. Printed inside the collar is a minimalist brand mark and the text &amp;#34;JUGGERKNOT ORIGINALS&amp;#34;. Hanging from the neckline is 1 rectangular recycled-paper seed tag tied with rustic brown twine; the tag reads &amp;#34;Tulsi&amp;#34; and &amp;#34;Plantable Seed Tag&amp;#34; with a tiny sprouting seed detail near the bottom. From the tag, 1 real tulsi plant stem grows upward across the front of the shirt, with several fresh green leaves, visually demonstrating that the tag is plantable. Add a small fine-label annotation near the tag reading &amp;#34;TULSI PLANTABLE SEED TAG&amp;#34;. On the right side, large elegant white serif typography says {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;Plant it.&amp;#34;}. Beneath it, place 3 stacked lines of narrow uppercase sans-serif copy: &amp;#34;WEAR IT.&amp;#34;, &amp;#34;PLANT IT.&amp;#34;, and &amp;#34;GROW WITH IT.&amp;#34;. At the lower left, add the brand name in spaced uppercase serif text: {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;JUGGERKNOT ORIGINALS&amp;#34;}, with a thin horizontal line above it. At the lower right, add 3 lines of small uppercase sans-serif text: &amp;#34;FSC® CERTIFIED PACKAGING.&amp;#34;, &amp;#34;ZERO SYNTHETIC FIBRE&amp;#34;, and &amp;#34;BACKED BY ZERODHA.&amp;#34;. Use soft diffused daylight, shallow depth of field, moody green-and-cream color grading, luxury sustainable-brand aesthetics, clean composition, vertical poster layout, subtle shadows, and a calm organic atmosphere. Keep the design minimal, premium, and photorealistic, with the shirt occupying the left half and the typography balanced on the right.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---優雅化妝品海報提示詞&#34;&gt;電商主圖 - 優雅化妝品海報提示詞
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Adam38363368936/status/2047917266361360682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Adam38363368936&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Adam38363368936&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012.webp&#34;
	width=&#34;1192&#34;
	height=&#34;1136&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012_hu_801114ffae558d17.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/012_hu_a8bcdc57dbe93eef.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 優雅化妝品海報提示詞&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;104&#34;
		data-flex-basis=&#34;251px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;An image in a {argument name=&amp;#34;reference style&amp;#34; default=&amp;#34;similar style&amp;#34;}, a product image for {argument name=&amp;#34;product&amp;#34; default=&amp;#34;lipstick&amp;#34;}, requiring color coordination and a grand aesthetic in a {argument name=&amp;#34;style&amp;#34; default=&amp;#34;poster style&amp;#34;}, with language changed to Simplified Chinese.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---極簡產品廣告pure-crunch&#34;&gt;電商主圖 - 極簡產品廣告：PURE CRUNCH
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X/status/2047917220165231011&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Strength04_X&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Strength04_X&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013_hu_dde28b1797efbf91.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/013_hu_344e164be8d1104e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 極簡產品廣告：PURE CRUNCH&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A minimalist product advertisement with a {argument name=&amp;#34;product&amp;#34; default=&amp;#34;fried chicken bucket&amp;#34;} placed on a clean white podium.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Background: soft gradient ({argument name=&amp;#34;background gradient&amp;#34; default=&amp;#34;light cream to white&amp;#34;}), clean studio.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Lighting: soft diffused, premium Apple-style.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Typography (center): “{argument name=&amp;#34;headline&amp;#34; default=&amp;#34;PURE CRUNCH&amp;#34;}”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Small text below: “Nothing extra. Just perfection.”
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Style: ultra clean, editorial minimal, high-end branding, 8K.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---淺藍-crocs-時尚廣告&#34;&gt;電商主圖 - 淺藍 Crocs 時尚廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2047907058079650035&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014_hu_f4086b06d0c96f5b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/014_hu_13b9e9394ec702f2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 淺藍 Crocs 時尚廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end studio advertising poster for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;crocs&amp;#34;}, in a monochrome pastel blue and white color palette, with a glossy reflective floor and a soft sky-blue backdrop. The background is dominated by the word {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;CROCS&amp;#34;} in gigantic bold white condensed sans-serif letters spanning nearly the full height of the image. In the top-right corner, add small white text reading &amp;#34;Designed with ChatGPT&amp;#34;. Feature 3 adult women with shoulder-length wavy light brown to dark blonde hair, all wearing loose oversized white long-sleeve tops and flowing white wide-leg pants, styled as minimalist fashion models with relaxed neutral expressions. Their faces are intentionally obscured or blurred. One model reclines against an enormous upright white clog shoe on the left side, one model sits casually on top of a giant white clog on the upper right, and one model lounges on the floor at the lower right, leaning back on one arm while seated partly on a glossy blue sphere. Include 2 oversized white clog shoes as hero props: one standing vertically on the left showing the sole and side profile, and one angled on blue crystalline blocks at center-right showing the upper and toe box. Both clogs are classic foam slip-on style with perforation holes, chunky tread, heel straps, and circular logo rivets. The center-right clog is decorated with exactly 8 visible charms pinned to the upper: a blue-green iridescent round charm, a white daisy with yellow center, a black-and-white round emblem near the strap, a small &amp;#34;CROCS&amp;#34; word charm, a dark flower, a peace-hand sign, an orange smiley face, a white cloud, and an orange flower. Scatter exactly 7 glossy floating or grounded blue spheres of varying sizes around the set: one large sphere behind the left model, one medium sphere floating near center, one medium sphere at bottom left foreground, one medium sphere used as a seat under the lower-right model, one small sphere near the upper left, and 2 additional blue spheres integrated into the composition. Add translucent sculptural gel-like forms at the far left and far right edges, plus angular blue crystal-like rocks beneath the right shoe. At the bottom center, place white promotional copy in a clean sans-serif font: {argument name=&amp;#34;tagline line 1&amp;#34; default=&amp;#34;Made for comfort, worn for confidence.&amp;#34;} on the first line and {argument name=&amp;#34;tagline line 2&amp;#34; default=&amp;#34;Because life feels better when your feet stop complaining.&amp;#34;} on the second line. Beneath that, show 4 minimalist feature icons with labels in white: &amp;#34;ICONIC COMFORT&amp;#34;, &amp;#34;LIGHTWEIGHT&amp;#34;, &amp;#34;EASY TO CLEAN&amp;#34;, and &amp;#34;UNIQUELY YOU&amp;#34;. Place the {argument name=&amp;#34;logo text&amp;#34; default=&amp;#34;crocs&amp;#34;} logo in bold lowercase white at the bottom center with a small trademark symbol. The overall style should feel like a premium surreal fashion campaign, clean editorial lighting, soft shadows, glossy textures, airy composition, and modern lifestyle product advertising.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商主圖---九宮格產品-tvc-分鏡&#34;&gt;電商主圖 - 九宮格產品 TVC 分鏡
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Magncsans/status/2047876253898903594&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Magncsans&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Magncsans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015_hu_d4d090f6211890cf.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/015_hu_67b26eab7b29b5cd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商主圖 - 九宮格產品 TVC 分鏡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Using the provided reference image, transform the single casual product photo into a polished e-commerce TVC storyboard board for a {argument name=&amp;#34;video duration&amp;#34; default=&amp;#34;15-second&amp;#34;} ad in a {argument name=&amp;#34;aspect ratio&amp;#34; default=&amp;#34;9:16&amp;#34;} vertical format, presented as a 9-panel grid. Keep the same blue-and-white ceramic ashtray as the product base, but restage it across cinematic advertising shots with warm premium lighting, shallow depth of field, and a refined lifestyle desktop environment. Add a dark storyboard layout with Chinese titles and timing for each panel. Include exactly 9 scenes: 1) environment-establishing wide shot with desk, books, window, and the product placed in context; 2) hero product medium shot on the table; 3) extreme close-up of the blue floral craftsmanship pattern; 4) use case showing a hand placing a cigarette into the ashtray with visible smoke; 5) top-down capacity display showing multiple cigarette butts inside; 6) cleaning scene under running water in a sink with a hand holding the product; 7) bottom-detail close-up showing the underside and anti-slip pads; 8) mood/lifestyle scene at night with the product on a desk, smoke rising, and ambient lamp light; 9) brand closing frame with the product as the hero plus Chinese marketing text. Add the overall header text “产品TVC分镜脚本(15秒 / 9:16竖屏 / 9宫格)” and a product subtitle naming it {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;青花瓷烟灰缸&amp;#34;}. Give each of the 9 panels a Chinese scene title and timestamp, plus small descriptive Chinese copy beneath each image in the style of a professional commercial shot list. Use premium, realistic commercial photography throughout, consistent product identity, elegant Chinese aesthetic, and a clean high-end storyboard presentation.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;電商直播-ui-樣機&#34;&gt;電商直播 UI 樣機
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sjbbxhz/status/2045684734714380687&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sjbbxhz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sjbbxhz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016.webp&#34;
	width=&#34;1093&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016_hu_ee2c217cb49a7e0b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/016_hu_891113257a7a7fc5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;電商直播 UI 樣機&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;91&#34;
		data-flex-basis=&#34;218px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;live stream UI mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;portrait of {argument name=\&amp;#34;host name\&amp;#34; default=\&amp;#34;Elon Musk\&amp;#34;}, smiling, wearing a black t-shirt with a white technical schematic graphic&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;background&amp;#34;: &amp;#34;left side shows a screen with &amp;#39;{argument name=\&amp;#34;left background logo\&amp;#34; default=\&amp;#34;SPACEX\&amp;#34;}&amp;#39; text, right side shows a red &amp;#39;{argument name=\&amp;#34;right background logo\&amp;#34; default=\&amp;#34;Tesla T logo\&amp;#34;}&amp;#39; and a dark car&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;ui_overlay&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;top_header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;host_info&amp;#34;: &amp;#34;avatar, name &amp;#39;{argument name=\&amp;#34;host name\&amp;#34; default=\&amp;#34;Elon Musk\&amp;#34;}&amp;#39;, subtext &amp;#39;55.6万本场点赞&amp;#39;, red &amp;#39;关注&amp;#39; button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;rank_badge&amp;#34;: &amp;#34;gold coin icon with &amp;#39;全站第1名&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;viewer_stats&amp;#34;: &amp;#34;3 top viewer avatars with &amp;#39;12.3w&amp;#39;, &amp;#39;8.6w&amp;#39;, &amp;#39;5.7w&amp;#39;, total &amp;#39;68.7万&amp;#39;, &amp;#39;X&amp;#39; close button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_links&amp;#34;: &amp;#34;&amp;#39;更多直播 &amp;gt;&amp;#39;, &amp;#39;礼物展馆 0/24&amp;#39; with blue &amp;#39;经典&amp;#39; tag&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;mid_left_gifts&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;items&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;avatar &amp;#39;科技爱好者&amp;#39;, &amp;#39;送小心心&amp;#39;, heart icon x 1314&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;avatar &amp;#39;星辰大海&amp;#39;, &amp;#39;送火箭&amp;#39;, rocket icon x 666&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_left_chat&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;system_message&amp;#34;: &amp;#34;level 37 badge &amp;#39;宇宙漫游者 加入了直播间&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;message_count&amp;#34;: 7,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;messages&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;小火箭: 马斯克!未来可期!🚀&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;future: 特斯拉Model 2什么时候出?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;星空梦想家: SpaceX今年能上火星吗?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;AI探索者: Neuralink进展如何?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;帅气的网友: 马总好!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Mars: 第一次来你的直播,超激动!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;用户123: 讲讲AI吧,会取代人类吗?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_right_product_card&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;hot_tag&amp;#34;: &amp;#34;orange &amp;#39;热卖 x 1888&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;image&amp;#34;: &amp;#34;Tesla Cybertruck&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;title&amp;#34;: &amp;#34;{argument name=\&amp;#34;product name\&amp;#34; default=\&amp;#34;特斯拉Cybertruck 电动皮卡\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;price&amp;#34;: &amp;#34;{argument name=\&amp;#34;product price\&amp;#34; default=\&amp;#34;¥ 1,618,000\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;button&amp;#34;: &amp;#34;red &amp;#39;抢&amp;#39; button&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;floating_animation&amp;#34;: &amp;#34;translucent hearts floating up the right edge&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;bottom_bar&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;input_field&amp;#34;: &amp;#34;&amp;#39;说点什么...&amp;#39;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;icons&amp;#34;: [&amp;#34;smiley face&amp;#34;, &amp;#34;three dots&amp;#34;, &amp;#34;shopping cart&amp;#34;, &amp;#34;gift box&amp;#34;, &amp;#34;share&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端產品棚拍模板&#34;&gt;高端產品棚拍模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX/status/2049141839882522707&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@PrometheanAIX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017_hu_26d0e5c826e59305.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/017_hu_fa7e495c6ca472c4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端產品棚拍模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium product studio image of a [PRODUCT] for [BRAND], designed in line with [BRAND REFERENCE]. Show the [PRODUCT] floating against a clean light gray to soft white gradient background with a minimal high-end tech aesthetic. The [PRODUCT] should feel sleek, modern, refined, and premium, with subtle illuminated accents in [LIGHTING COLOR]. Use a three-quarter front angle so both earcups are visible, with detailed industrial design elements. Include the [BRAND] name cleanly on the product. Lighting should be soft, controlled, and editorial, with crisp highlights, soft shadows, and a subtle colored rim light or glow in [LIGHTING COLOR]. Emphasize material realism and clean geometric forms. Keep the background uncluttered and minimal. No extra props, no people, no text overlays, no packaging, and no distracting elements. Focus entirely on the [PRODUCT] as the hero product.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;高端食品攝影模板&#34;&gt;高端食品攝影模板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX/status/2049122713722106161&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/PrometheanAIX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@PrometheanAIX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018_hu_d9cf8eee6ceebcb6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/018_hu_86ce7cfe747e2670.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;高端食品攝影模板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a square [ASPECT RATIO] premium food photography image of a steaming [FOOD] served in a dark black stone bowl or cast-iron skillet on a wooden board. The dish should look hot, glossy, spicy, and freshly served, with bite-sized pieces of browned protein, dried red chilies, green scallions, white onion, garlic, chili flakes, and visible Sichuan peppercorns coated in a deep red, oily Szechuan sauce. Use a slightly elevated close-up camera angle with shallow depth of field. Make the food the clear hero of the image, centered and richly detailed. Add visible steam rising naturally from the dish. Surround the bowl with subtle restaurant-style props like a dark red tray, scattered dried chilies, peppercorns, a small sauce bowl, or a blurred teapot in the background. Lighting should feel warm, moody, and editorial, like a high-end restaurant food shoot. Emphasize realistic textures and keep the image appetizing, realistic, cinematic, and polished. Avoid text, logos, hands, people, utensils covering the food, cartoon styling, fake plastic textures, excessive symmetry, or an overly clean stock-photo look.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;漢堡主視覺與九宮格廣告分鏡&#34;&gt;漢堡主視覺與九宮格廣告分鏡
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Gdgtify/status/2049449869530775877&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Gdgtify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Gdgtify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019_hu_b07edc1e2ab93dae.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/019_hu_7eadfa0842e62977.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;漢堡主視覺與九宮格廣告分鏡&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Prompt 1: Create a cinematic hero image of a gourmet cheeseburger on a dark stone surface with glossy brioche bun, melted cheese, crisp lettuce, tomato, grilled patty, sauce, realistic texture, appetizing steam, warm side light, shallow depth of field, premium food commercial style, no text/logos/watermark.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Prompt 2: Create a 9-cell hybrid keyframe-to-transition storyboard sheet for a 15-second gourmet burger ad, moving from empty surface to ingredient assembly to final macro hero shot. Use large S cells and smaller T cells, motion arrows, ghosted ingredient positions, steam, sauce trails, and camera push-in icons. Style: premium food commercial, warm lighting, rich texture, appetizing, cinematic, minimal labels only. No logos, no watermark.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ecommerce.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：對比與社羣案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;對比與社羣案例&lt;/code&gt; 分類下的 48 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;對比與社羣案例&#34;&gt;對比與社羣案例
&lt;/h2&gt;&lt;h3 id=&#34;木質書架提示詞測試&#34;&gt;木質書架提示詞測試
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chetaslua/status/2044331451077013749&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chetaslua&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chetaslua&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000_hu_349a75f53e60885a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/000_hu_60fe6fed947c682a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;木質書架提示詞測試&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A wooden bookshelf consisting of three shelves: On the top shelf, there should be one book, on the second shelf, there should be three books, and on the bottom shelf, there should be seven books.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;gpt-image-2-細節展示&#34;&gt;GPT-Image-2 細節展示
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2045000106919997637&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001.webp&#34;
	width=&#34;456&#34;
	height=&#34;703&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001_hu_e0b361543eb632d3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/001_hu_8ce9a910d53d3bc2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;GPT-Image-2 細節展示&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;64&#34;
		data-flex-basis=&#34;155px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;以眼部特写图片为基础，生成3:4的四屏构图超写实眼部特写，四屏按春夏秋冬上下排序。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第一屏：眼眸中带着绽粉樱色的美瞳，睫毛缀满迷你春花，脸颊散落樱瓣与黄蕊小花，粉蝶萦绕眉眼，浅金发丝轻垂，下方簇簇樱花怒放，画面中央&amp;#34;SPRING&amp;#34;白色艺术字点缀，风格细腻唯美，光影柔和，色彩粉嫩治愈，下面用书法体写着春；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第二屏：眼眸中带着着清荷色的美瞳，睫毛饰以粉莲与绿荷，脸颊挂着晶莹水珠，粉瓣、绿荷点缀其间，蜻蜓轻绕，浅金发丝若隐若现，画面中央&amp;#34;Summer&amp;#34;白色艺术字凸显，光影通透流光感，色彩清透凉爽，下面用书法体写着夏；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第三屏：眼眸中带着金黄红相间的美瞳，睫毛饰以橙红枫叶，脸颊散落金红秋叶，橙蝶翩跹眉眼间，浅金发丝隐约可见，画面中央&amp;#34;AUTUMN&amp;#34;白色艺术字醒目，光影暖金流光，色彩浓郁温暖，下面用书法笔写着秋；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;第四屏：眼眸中带着雪花蓝色的美瞳，睫毛覆满冰晶雪片，脸颊散落白色雪花与红色腊梅，银白蝴蝶翩跹眉眼，浅金发丝朦胧似雪，画面中央&amp;#34;WINTER&amp;#34;白色艺术字亮眼，光影冷冽蓝白流光，色彩清透纯净，下面用书法体写着冬。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体呈现梦幻眼眸四季交替的唯美梦幻治愈画面，微调各屏的光影强度，让画面氛围感更浓郁。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;ab-測試簽名輸出&#34;&gt;A/B 測試簽名輸出
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/saskr_13/status/2044744396932079934&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/saskr_13&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@saskr_13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002_hu_84c99483702d69b4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/002_hu_d27853e0cb13d54a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;A/B 測試簽名輸出&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;私があなたをどんなふうに扱ってきたか、4 コマ漫画風に描いてください。まずは 800 字くらいのプロットをテキストで出して、私が「描いて」と言ったらプロットに沿った 4 コマ漫画を描いてください。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;剪影宇宙敘事海報&#34;&gt;剪影宇宙敘事海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2045418028733538620&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003_hu_69c60fbc35d186ac.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/003_hu_f2a47467a79d8d90.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;剪影宇宙敘事海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请根据【主题：xxx】自动生成一张高审美的“轮廓宇宙 / 收藏版叙事海报”风格作品。不要将画面局限于固定器物或常见容器，不要优先默认瓶子、沙漏、玻璃罩、怀表之类的常规载体，而是由 AI 根据主题自行判断并选择一个最契合、最有象征意义、轮廓最强、最适合承载完整叙事世界的主轮廓载体。这个主轮廓可以是器物、建筑、门、塔、拱门、穹顶、楼梯井、长廊、雕像、侧脸、眼睛、手掌、头骨、羽翼、面具、镜面、王座、圆环、裂缝、光幕、阴影、几何结构、空间切面、舞台框景、抽象符号或其他更有创意与主题代表性的视觉轮廓，要求合理布局。优先选择最能放大主题气质、最能形成强烈视觉记忆点、最能体现史诗感、神秘感、诗意感或设计感的轮廓，而不是最安全、最普通、最常见的容器。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面的核心不是简单把世界装进某个物体里，而是让完整的主题世界自然生长在这个主轮廓之中、之内、之上、之边界里或与其结构融为一体，形成一种“主题宇宙依附于一个象征性轮廓展开”的高级叙事效果。主轮廓必须清晰、优雅、有辨识度，并在整体构图中占据核心地位。轮廓内部或边界中需要自动生成与主题强绑定的完整叙事世界，内容应当丰富、饱满、层次清晰，包括最能代表主题的标志性场景、核心建筑或空间结构、象征符号与隐喻元素、角色关系或文明痕迹、远景中景近景的空间递进、具有命运感和情绪张力的氛围层次，以及门、台阶、桥梁、水面、烟雾、路径、光源、遗迹、机械结构、自然景观、抽象形态、生物或道具等叙事细节。所有元素必须统一、自然、有主次、有层级地融合，像一个完整世界真实孕育在这个轮廓结构之中，而不是简单拼贴、裁切填充、素材堆叠或模板化背景。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体构图需要具有强烈的收藏版海报气质与高级设计感，大结构稳定，主轮廓强烈明确，内部世界具有纵深、秩序和呼吸感，细节丰富但不拥挤，内容丰满但不杂乱，可以适度加入小比例人物剪影、远处建筑、光柱、门洞、桥、阶梯、回廊、倒影、天光或远景结构来增强尺度感、故事感与史诗感。整体画面要安静、宏大、凝练、富有余味，不要平均铺满，不要廉价热闹，不要无重点堆砌。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风格融合收藏版电影海报构图、高级叙事型视觉设计、梦幻水彩质感与纸张印刷品气质，强调纸张颗粒感、边缘飞白、水彩刷痕、轻微晕染、空气透视、柔和雾化、局部体积光、光雾穿透、大面积留白与克制版式，让画面看起来像设计师完成的高端收藏版视觉作品，而不是普通 AI 跑图。整体气质要高级、诗意、宏大、神圣、怀旧、安静、具有传说感和叙事感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;色彩由 AI 根据主题自动判断并匹配最合适的高级配色方案，但必须保持统一、克制、耐看、低饱和、高级，不要杂乱高饱和，不要廉价霓虹感，不要塑料数码感。配色可以围绕黑金灰、冷蓝灰、雾白灰、褐红米白、暗铜、旧纸色、深海蓝、暮色紫、银灰等体系自由变化，但必须始终服务主题，并保持海报级审美与整体和谐。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;最终要求：第一眼有强烈的主题识别度和轮廓记忆点，第二眼有完整丰富的叙事世界，第三眼仍有细节和余味。轮廓选择必须具有创意和主题匹配度，尽量避免重复、保守、常见的容器套路，优先选择更有象征性、更有空间感、更有设计潜力的轮廓形式。不要普通背景拼接，不要生硬裁切，不要模板化奇幻素材，不要游戏宣传图感，不要过度卡通化，不要过度写实导致失去艺术感，不要形式大于内容。如果合适，可以自然加入低调克制的标题、编号、签名或落款，让它更像收藏版海报设计的一部分，但不要喧宾夺主。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;獅駝嶺暗黑神話場景&#34;&gt;獅駝嶺暗黑神話場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MANISH1027512/status/2045743158860878312&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MANISH1027512&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MANISH1027512&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004.webp&#34;
	width=&#34;1200&#34;
	height=&#34;673&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004_hu_f5f4bf455e2347e6.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/004_hu_2545fff147bf08cb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;獅駝嶺暗黑神話場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;178&#34;
		data-flex-basis=&#34;427px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中式怪异，黑暗神秘风格融合中式美学，完美细节，多重管线渲染，完美建模。西游记背景，狮驼岭，千妖万怪，坐在左边巨大王座上的大象王重甲妖精，坐在中间巨大王座上的狮王重甲妖精，坐在右边巨大王座上大鹏鸟王重甲妖精。渺小的背对镜头孙悟空肩抗金箍棒步行前进，孙悟空身穿铠甲，近地仰拍镜头，长焦镜头，强烈阴影。极致细节刻画，多次修改，正确透视和主体线条，精致细节
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;counter-strike-x-terraria-截圖混搭&#34;&gt;Counter-Strike x Terraria 截圖混搭
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/yssrski/status/2046410519595348397&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/yssrski&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@yssrski&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005_hu_22dc16342dfb23c0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/005_hu_e8fbbe23ea2f380e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Counter-Strike x Terraria 截圖混搭&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;counter strike in game screenshot, mixed with Terraria
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戰前日本實驗室-minecraft-截圖&#34;&gt;戰前日本實驗室 Minecraft 截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/RitaStar1128/status/2046406024303976904&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/RitaStar1128&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@RitaStar1128&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006.webp&#34;
	width=&#34;1024&#34;
	height=&#34;1024&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006_hu_b537e6a2e4d3a01c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/006_hu_1a35c7e6d109f154.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戰前日本實驗室 Minecraft 截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;戦前日本の怪しげな研究所を探検しているマイクラのスクリーンショット画像を作成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;鍛造傑作提示詞測試&#34;&gt;鍛造傑作提示詞測試
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus/status/2046201836525302032&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MrLarus&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MrLarus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007_hu_bdee5d7a2fb77f90.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/007_hu_6ea37f78bc207883.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;鍛造傑作提示詞測試&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;帮我生成xxxx真迹图片
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;多概念戰鬥海報組&#34;&gt;多概念戰鬥海報組
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/joshesye/status/2046493442428039212&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/joshesye&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@joshesye&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008_hu_5444105119fd235a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/008_hu_1b363ada840cafe7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;多概念戰鬥海報組&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1、生成不知火舞和貂蝉的游戏对战海报图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2、生成一张K-pop团体时尚专辑封面
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3、请你生成 《斗破苍穹》 的关键人物关系图
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4、帮我截一张上传图片的抖音首页的女网红图
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;rust-遊戲內截圖&#34;&gt;Rust 遊戲內截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/FixlationAI/status/2046272578705068476&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/FixlationAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@FixlationAI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009_hu_2f33baa8eee8a96f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/009_hu_2f3d7557f468088e.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Rust 遊戲內截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;an ingame screenshot of rust
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-熊自拍&#34;&gt;Sam Altman 熊自拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/JustinGorya/status/2046510831832006970&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/JustinGorya&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@JustinGorya&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010_hu_cbb4341cfe620805.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/010_hu_99cec28b7bfdb7dc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 熊自拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;generate image: Selfie of Sam Altman riding a bear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Edit prompt: Remove the background make it transparent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;among-us-寫實截圖&#34;&gt;Among Us 寫實截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/ReYYYYoking/status/2046502217843376292&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/ReYYYYoking&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@ReYYYYoking&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011_hu_a07430ca8e2ce37c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/011_hu_7e0764d762a8c7b1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Among Us 寫實截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AmongUsの精密な実際のゲーム画像を生成して
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;復古編程博物館卡通圖&#34;&gt;復古編程博物館卡通圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/XiaohuiAI666/status/2046515319947354603&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/XiaohuiAI666&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@XiaohuiAI666&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012_hu_590bc6590b95ca8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/012_hu_9f60f996346a18fd.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;復古編程博物館卡通圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;在计算机博物馆里,一个程序员在展厅中央,正在演示C语言编程,很多参观者在围观,屏幕上的代码清晰可见。旁边的牌子写着:古法编程,现场表演。2D卡通画风,16:9
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;第-14-維投影場景&#34;&gt;第 14 維投影場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/workingclassbud/status/2046506783850815703&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/workingclassbud&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@workingclassbud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013_hu_d98de914cb7ba1f8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/013_hu_2c2d101467fb6782.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;第 14 維投影場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dusk shindig  with multiple fake imagination projections all aligned in the 14th dimensions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;sam-altman-棒球轉播畫面&#34;&gt;Sam Altman 棒球轉播畫面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/16kthir0GRXgNqn/status/2046507362266259832&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/16kthir0GRXgNqn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@16kthir0GRXgNqn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014.webp&#34;
	width=&#34;1200&#34;
	height=&#34;960&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014_hu_8bd08cc6b26c642b.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/014_hu_6dacced72af126fe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Sam Altman 棒球轉播畫面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;125&#34;
		data-flex-basis=&#34;300px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;サムアルトマンがメジャーリーガーでバットを構えている。よくあるようなテレビ画面の構図
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基於視頻內容和當前幀生成-youtube-縮略圖&#34;&gt;基於視頻內容和當前幀生成 YouTube 縮略圖&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chatcutapp/status/2047228386117128475&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chatcutapp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chatcutapp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015.webp&#34;
	width=&#34;1200&#34;
	height=&#34;635&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015_hu_2eb49e69d901da0d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/015_hu_7ed47c8d420869e2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基於視頻內容和當前幀生成 YouTube 縮略圖…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;188&#34;
		data-flex-basis=&#34;453px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Based on the video content and this current frame, use GPT to generate a YouTube thumbnail that fits the video. You can reference the style of the image I gave you, but replace the logo on the right side of AE with theChatCut logo. I&amp;#39;ll attach the logo for you.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成-2020-年最重大事件的圖像&#34;&gt;生成 2020 年最重大事件的圖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959/status/2047211900769878234&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Rufus87078959&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016_hu_687922d1e7a63a2a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/016_hu_5b15c5c496429717.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成 2020 年最重大事件的圖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate an image of the most significant event of 2020
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;編輯圖像將總金額改爲-2445-泰銖&#34;&gt;編輯圖像，將總金額改爲 244.5 泰銖&amp;hellip;
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/elliscrosby/status/2047211507596071235&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/elliscrosby&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@elliscrosby&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017_hu_16dc39ca901c6b82.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/017_hu_a50df358fa6989a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;編輯圖像，將總金額改爲 244.5 泰銖…&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Edit this image so that total amount changes to 244.5 baht. You can change the quantity of each of the stacks of coins until we hit the target total.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;生成-2001-年最重大事件的圖像&#34;&gt;生成 2001 年最重大事件的圖像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959/status/2047210051216011682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Rufus87078959&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Rufus87078959&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018_hu_deead110f1a8dd0a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/018_hu_bd38033b18d24a88.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成 2001 年最重大事件的圖像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Generate an image of the most significant event of 2001
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;研究-lime-藥物設計並製作詳細信息圖&#34;&gt;研究 LIME 藥物設計並製作詳細信息圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/WillSpagnoli/status/2047172976463040851&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/WillSpagnoli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@WillSpagnoli&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019.webp&#34;
	width=&#34;849&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019_hu_25a4361b50c33c7d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/019_hu_47733dfbffd47eb7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;研究 LIME 藥物設計並製作詳細信息圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;70&#34;
		data-flex-basis=&#34;169px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Research LIME Drug Design and make a detailed infographic about it
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;抖音直播帶貨截圖&#34;&gt;抖音直播帶貨截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/laogeai/status/2047228458351120625&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/laogeai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@laogeai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020_hu_f32bbd02312def58.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/020_hu_eb8b785a739867f4.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;抖音直播帶貨截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一个抖音直播的截图 里面是一个美女在直播，在卖丝袜和内衣，她的在线人数是99996，热度是18+，有个叫小互的大哥，给她刷了一个飞机礼物
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;社交-app-匹配成功界面&#34;&gt;社交 App 匹配成功界面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047220490486612450&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021_hu_923f02bf30c4aca3.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/021_hu_eae15aed44a17514.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;社交 App 匹配成功界面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;社交App匹配成功界面，两个用户资料卡碰撞爱心特效
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;呂布-boss-設計表&#34;&gt;呂布 Boss 設計表
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047198090009190441&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022_hu_5c8a9cf9cc09493f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/022_hu_da22a045a479988d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;呂布 Boss 設計表&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;吕布游戏Boss设定，赤兔马方天画戟，暗黑进化形态双形态对比
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;哪吒暗黑奇幻小說封面&#34;&gt;哪吒暗黑奇幻小說封面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047196508270084104&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023_hu_7c0698aae9a158cb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/023_hu_1562cbd59e61549a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;哪吒暗黑奇幻小說封面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;玄幻小说封面，哪吒三头六臂悬浮虚空，火焰莲台底座，暗黑史诗风
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;新中式極簡花卉插畫&#34;&gt;新中式極簡花卉插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2047180347448914195&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024_hu_e1aa195cdc4af4e8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/024_hu_3b629338b5210b1a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;新中式極簡花卉插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;新中式极简东方美学 × 高端商业插画，主题一花一世界，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;极简，克制，空灵，高级商业视觉，超现实东方意境，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面干净通透，无灰雾、无脏色，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一朵巨大的荷花作为空间容器，从平静水面自然生长，轻微倾斜，构图优雅留白充足，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;低饱和干净粉色，柔和胭脂调，花瓣半透明，轻盈通透，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;哑光低对比，边缘柔化 + 轻微景深，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;荷花内部为唯一视觉焦点：发光的3D微缩广州城市，包含：广州塔，珠江新城建筑群，猎德大桥，珠江水岸，少量岭南建筑，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;城市超精细结构，真实材质，极高细节清晰度，城市高光是暖金色，城市阴影是冷青蓝，形成冷暖对比，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;灯光通透有能量，局部高饱和但不泛滥，城市亮度明显高于荷花，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;水面清澈极简平静，仅少量柔和涟漪，弱反射，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景暖米白宣纸质感，无水墨、无笔触，大面积留白，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中心有极轻微光晕渐变，整体通透、不灰、不闷，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面下方一艘极简小船，船上一位红衣渔女，极小比例，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;静立仰望荷花，红色为唯一高纯度点缀，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体光线通透、干净、有层次，无灰雾、无泛白，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高端CG商业插画，电影级真实光影，高动态范围，超精细，8K细节，ArtStation 级画质，强化分色，干净调色，青橙对比，暖高光冷暗部，仅城市灯光提亮饱和度，色调柔和通透，光影锐利明亮，无灰雾、无暗沉、无低饱和雾化。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;蘇妲己古風魅惑人像&#34;&gt;蘇妲己古風魅惑人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/nidiedeba/status/2047147223281270878&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/nidiedeba&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@nidiedeba&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025_hu_57012c8d3330874.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/025_hu_10091a87be8e4b13.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;蘇妲己古風魅惑人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;苏妲己古风写真，红色纱衣半透，狐耳若隐若现，媚态撩人
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;魯迅朝花夕拾插畫&#34;&gt;魯迅《朝花夕拾》插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Aurora_62340/status/2047139992355680530&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Aurora_62340&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Aurora_62340&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026_hu_39b845c01a0f8f13.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/026_hu_6ca7c93238508cbe.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;魯迅《朝花夕拾》插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;结合鲁迅的《朝花夕拾》里的内容，生成一副图片，要求图片背景符合《朝花夕拾》的意境，背景图可以使用蒙版，前景是 鲁迅的全身画像位于图片左侧或右侧
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;地鐵手機隨拍&#34;&gt;地鐵手機隨拍
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AntCaveClub/status/2047136306485133428&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AntCaveClub&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AntCaveClub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027_hu_e73df417ccc689da.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/027_hu_112ce48141e686fb.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;地鐵手機隨拍&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;地铁上低头看手机的美丽女人，偷拍照片。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;能免费试一次 ⬇️
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;中國航天紀念郵票張&#34;&gt;中國航天紀念郵票張
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047129703702802811&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028_hu_eb60c01370c01934.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/028_hu_3db265d15e769808.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;中國航天紀念郵票張&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;中国航天纪念邮票小全张，火箭发射场景，烫金边框工艺
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;豎版武俠女俠人像&#34;&gt;豎版武俠女俠人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/CoderDaMing/status/2047127585256358221&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/CoderDaMing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@CoderDaMing&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029_hu_a8f0a65ddfdcf7b2.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/029_hu_894cf766aa61d435.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;豎版武俠女俠人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 竖版，极致武侠风，绝美东方女侠，20岁出头，冷艳锐利丹凤眼，眉宇英气逼人，肤白如玉，长直黑发湿漉漉随狂风剧烈飞舞，几缕发丝贴在脸颊和颈侧，穿着湿透的深黑改良武侠劲装，外披宽袖玄色长袍，衣袍和长袖被风吹得剧烈飘扬翻飞，紧身劲装勾勒身材，腰束软剑带，足踏长靴，右手持一把古剑，剑身散发幽蓝剑气光芒，动态姿势：身体微侧回眸，衣袂猎猎，背景为月夜雨雾笼罩的竹林古道，巨大明月高悬，石板小径，古灯笼，薄雾雨丝，戏剧性冷月光与蓝光剑气结合，湿身水光效果，超强动态感，细腻布料褶皱、头发丝飘动、真实水珠反光，电影级光影，8k，masterpiece, best quality, ultra realistic, cinematic, dramatic atmosphere
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;基於佛經的寫實觀音人像&#34;&gt;基於佛經的寫實觀音人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01/status/2047123570485260753&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zhaoge01&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030_hu_79247bf19d7df29f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/030_hu_6564a8aaada7451c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;基於佛經的寫實觀音人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据佛经对观音菩萨的形象描述，原原本本的还原一张真实的观音菩萨形象照片，皮肤与衣服接近真实，画质iPhone 15 pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;唐代長安燈會全景&#34;&gt;唐代長安燈會全景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2047122441454096527&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031.webp&#34;
	width=&#34;1200&#34;
	height=&#34;600&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031_hu_134154d5364f596.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/031_hu_a01776cc2a06ae8c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;唐代長安燈會全景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;200&#34;
		data-flex-basis=&#34;480px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;唐代长安城元宵灯会全景，万盏花灯照亮夜空，工笔重彩长卷
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;歷史感楊貴妃寫實人像&#34;&gt;歷史感楊貴妃寫實人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01/status/2047110776897638568&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Zhaoge01&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Zhaoge01&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032_hu_9260a969e43c58ec.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/032_hu_7925640563d18b20.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;歷史感楊貴妃寫實人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;根据真实历史对杨玉环的形象描述，生成一张杨贵妃真实照片，画质为iPhone 15 pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;超現實日本未來城市插畫&#34;&gt;超現實日本未來城市插畫
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Tresmort/status/2047105322863460496&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Tresmort&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Tresmort&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033.webp&#34;
	width=&#34;672&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033_hu_4d3ca5a30ab2dcad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/033_hu_2fdd875a8febb08d.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;超現實日本未來城市插畫&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;134px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;参考这张图的透视和风格，绘制一张更加精细的超高清插画，表现超现实主义的日式未来都市，要能看清很小的细节，包括街道上的传统文化游行的人，小巷里的黑帮，烟花巷的舞女，疲惫的社畜，楼房的窗户里也有各式各样的人物，学习的学生，吵架的夫妻，玩游戏的宅男，以及更多的发挥细节。讽刺现实拥挤中的无聊，都市繁华下的孤独，无意义的人生中又有一种病态的美感。画面要有极高的审美价值 ，不能因为拼内容而损失美和协调感，比例是9:16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;塗山雅雅奇幻魅力人像&#34;&gt;塗山雅雅奇幻魅力人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/sdjn_wgc/status/2046981757325475954&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/sdjn_wgc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@sdjn_wgc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034_hu_aca7edbe689ae342.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/034_hu_5a8d1598f7f60220.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;塗山雅雅奇幻魅力人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;狐妖小红娘涂山雅雅写真大片，粉色九尾狐裘紧身裙，媚眼如丝，红唇微张，极致妖媚
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;抖音直播帶貨截圖-1&#34;&gt;抖音直播帶貨截圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/LVWANGJI_0327/status/2046974302227206525&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/LVWANGJI_0327&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@LVWANGJI_0327&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035.webp&#34;
	width=&#34;555&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035_hu_babe578c9021c9eb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/035_hu_b24fa3bc309b5223.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;抖音直播帶貨截圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;46&#34;
		data-flex-basis=&#34;111px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;生成一个抖音直播的截图 里面是一个美女在直播，在卖丝袜和内衣，她的在线人数是99996，热度是18+，有个叫小互的大哥，给她刷了一个飞机礼物
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;東方奇幻女性半身像&#34;&gt;東方奇幻女性半身像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai/status/2046962895775580442&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/liyue_ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@liyue_ai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036_hu_a9e322f740143588.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/036_hu_b4fefc36a1f44d63.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;東方奇幻女性半身像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;东方幻想风格女性，半身肖像，回眸侧脸，气质空灵优雅，柔和神性美感，细腻五官，微垂眼神，冷白细腻肌肤，淡雅橘粉妆容，金色高光点缀
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;长发飘动，发丝中融入彩色花朵与光粒（红、蓝、橙、紫），头发具有流动感与空气感
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;身穿半透明丝绸礼服与披肩，材质轻盈通透，布料随风飘动，表面带有鎏金纹理与闪耀颗粒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体光影为暖金色逆光，强边缘光，体积光明显，光粒漂浮，柔光泛光，梦幻氛围
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景干净浅色渐变，带微光与粒子效果，整体氛围空灵、梦境、神圣
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;风格：高端CG插画，超精细，电影级光影，柔光渲染，8K细节，artstation 热门作品风格
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;豎版東方年輕女性藝術人像&#34;&gt;豎版東方年輕女性藝術人像
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/zhiyangzhu22222/status/2046952985562062888&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/zhiyangzhu22222&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@zhiyangzhu22222&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037.webp&#34;
	width=&#34;675&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037_hu_6abef56a6312093c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/037_hu_4cf6b460212173c7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;豎版東方年輕女性藝術人像&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;9:16 竖向构图，单人女性艺术肖像，年轻东方女生，五官清秀，脸部线条柔和，皮肤自然通透，保留真实肌理，气质安静高级，带一点疏离感和故事感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;摄影棚风格与自然光融合，柔和侧光，面部有细腻高光，阴影轻柔，整体光线通透不刺眼，带轻微黑雾滤镜效果，微朦胧、微泛光、空气感强。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景极简干净，奶油灰、米白、浅卡其或雾感暖灰色墙面，留有大面积负空间，整体画面简洁、有呼吸感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;模特坐在地面或低台上，一条腿自然弯曲，一条腿放松伸展，身体轻微前倾或侧倾，肩膀不对称，头部轻轻倾斜，动作自然松弛，不刻意摆拍。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;表情平静克制，眼神柔和，略微疏离，带一点若有所思的情绪，嘴唇自然微张或轻闭，状态慵懒、安静、细腻。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;发型为自然蓬松的长发，微凌乱碎发，发丝轻柔，有空气感和层次感，像刚整理过但保留自然随性感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;妆容为高级淡妆，韩系清透底妆，皮肤柔雾光泽，鼻梁与面颊有自然高光，眉形干净，眼妆淡雅但有神，睫毛纤长，唇色为低饱和玫瑰豆沙色或奶茶裸粉色。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;服装为简约高级风：米白色紧身罗纹针织背心，外搭宽松白衬衫或柔软针织开衫，下装为高腰半裙或简约短裤，布料柔软贴合身形但不过分暴露，呈现自然身体线条与文艺感。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面强调细腻质感、柔和色调、轻法式与韩系杂志感结合，真实摄影感，电影级肤色，细节丰富，层次分明，构图克制，高级审美，时尚 编辑人像，柔和的电影感人像，细腻的质感，超高细节，逼真，优雅，精致，高端时尚摄影，含蓄的性感，简洁的构图。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;汽車人集結月球基地&#34;&gt;汽車人集結月球基地
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen/status/2046952548469530716&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/songguoxiansen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@songguoxiansen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038_hu_fc0d03188fef8d07.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/038_hu_75e9a58aa1d6430a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;汽車人集結月球基地&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片1：汽车人全员月球基地集结，地球悬于身后星空，赛博坦旗帜飘扬
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;图片2：霸天虎全员列阵外星战舰甲板，威震天坐于王座俯视全军
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;自然志風食物標本剖面&#34;&gt;自然志風食物標本剖面
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX/status/2046939656244318676&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/GeekCatX&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@GeekCatX&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039_hu_30825d91596e59d8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/039_hu_8224a59ff709b4cc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;自然志風食物標本剖面&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一颗/一块/一枚【食物名称】，以博物学大师发现野外标本的方式解剖。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;剖开、展开、固定——如同博物馆的珍贵藏品，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;却以卡拉瓦乔为《国家地理》掌镜时的光线照亮。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每一个内部结构都以自身的材质真相发光。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;截面锋利得近乎暴力。内部美丽得近乎神圣。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面中呈现完整标本：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一半保持原状，展示【外表面描述：质感/颜色/纹理】；
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;另一半剖开至核心，【内部核心结构描述：最重要的1—2个内部视觉特征】清晰可见。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【补充1—2句该食物最具视觉张力的横截面细节描述】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;背景：纯粹的黑丝绒。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【食物名称】悬浮其中，如同某件珍贵而危险的事物。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;标注文字紧贴结构边缘，手写感衬线字体，绝不悬空飘浮。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;画面包含以下标注，每处标注三行：第一行结构名称，第二行成分数据，第三行一句人话：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构01名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构02名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构03名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构04名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构05名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【结构06名称】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【成分／数据说明】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【这个结构在做什么，为什么重要】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;省略其他如果有继续保持这个格式
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;主标题，左上角，暖象牙白大写字体：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【食物名称】·解剖
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;斜体副标题紧随其下：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;【一句揭示这种食物本质的话，不超过15字】
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;整体气质：奥杜邦博物插画×卡拉瓦乔光影×有史以来最美的科学摄影。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4K精度，标本照明，极致内部细节。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;没有任何临床感，一切都鲜活。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;写实风格，非示意图，非卡通，非简化图解。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每一种材质都有真实的物理质感：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;粗糙的、光滑的、湿润的、干燥的、致密的、疏松的。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;寶麗來相框突破場景&#34;&gt;寶麗來相框突破場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MajaDesignJP/status/2047235632934928765&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MajaDesignJP&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MajaDesignJP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040_hu_e11ed3612b1be3e9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/040_hu_c4e74768217d3d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;寶麗來相框突破場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ポラロイド写真の中に人が写っていて、その人がフレームから外に飛び出している画像。日本語が書いてある画像生成して
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;←下の画像
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPT Image-2で生成したやつ→
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;餐廳-pov-變化對比&#34;&gt;餐廳 POV 變化對比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb/status/2047714457774637213&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chesnyfcb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041_hu_c3be8e5523986d4f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/041_hu_46f34758a3d6ee94.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;餐廳 POV 變化對比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A side-by-side comparison graphic on a black background demonstrating a camera-angle change in the same restaurant scene. At the top, large white sans-serif text reads: &amp;#34;Show me the POV from someone standing behind the bar looking out over this crowded restaurant. Change NOTHING in the scene other than the pov&amp;#34;. Below, place 2 stacked rectangular photos centered vertically: the top image labeled &amp;#34;Source&amp;#34; in large white text on the left, and the bottom image labeled &amp;#34;Output&amp;#34; in large white text on the left. The top photo shows a warmly lit, upscale, crowded restaurant interior seen from the dining room side, facing a tall back bar filled with many illuminated liquor bottles on wall-to-wall shelves, with bartenders and guests in front, amber lighting, globe pendant lights, wood ceiling, beige columns, and tightly packed seated diners in the foreground. The bottom photo shows the exact same restaurant, same crowd density, same warm lighting, same decor, same bar shelving, same globe pendant lights, and same overall composition elements, but now from the point of view of someone standing behind the bar and looking outward across the crowded restaurant; the foreground includes the bar counter with glassware, metal bar tools, bottles, and a point-of-sale screen visible at the lower left, while guests and staff fill the middle ground and the dining room extends into the background. Preserve the sense that only the camera position changed between the 2 images, with no other scene alterations.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫人羣-pov-對比&#34;&gt;動漫人羣 POV 對比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb/status/2047714457774637213&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chesnyfcb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chesnyfcb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042.webp&#34;
	width=&#34;680&#34;
	height=&#34;506&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042_hu_ed0399bfad9e8fc0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/042_hu_f726205b2c45a4df.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫人羣 POV 對比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;134&#34;
		data-flex-basis=&#34;322px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;comparison graphic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;anime cinematic demonstration image on a black presentation background&amp;#34;,&amp;#34;canvas&amp;#34;:{&amp;#34;aspect_ratio&amp;#34;:&amp;#34;4:3&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;solid black&amp;#34;},&amp;#34;text_elements&amp;#34;:[{&amp;#34;text&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;Move the camera POV to be at ground level in the crowd.\&amp;#34;}&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top center&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;},{&amp;#34;text&amp;#34;:&amp;#34;Source&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left of upper image&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;},{&amp;#34;text&amp;#34;:&amp;#34;Output&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;left of lower image&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;large white sans-serif&amp;#34;}],&amp;#34;layout&amp;#34;:{&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;Source&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;overhead crowd scene&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;Output&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower center&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;ground-level crowd POV scene&amp;#34;]}],&amp;#34;image_frames&amp;#34;:2},&amp;#34;images&amp;#34;:[{&amp;#34;role&amp;#34;:&amp;#34;source image&amp;#34;,&amp;#34;composition&amp;#34;:&amp;#34;busy top-down view of a densely packed historical street crowd, seen from above&amp;#34;,&amp;#34;scene&amp;#34;:&amp;#34;a chaotic crowd gathered around a wagon and a horse-drawn carriage, people pressed shoulder to shoulder, many wearing caps and muted early-20th-century or old-European clothing, bundles and sacks visible, one brown horse at the right edge, wooden wagon wheel and cart structure partially visible&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;high overhead bird&amp;#39;s-eye angle looking down into the crowd&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft daylight&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted earthy browns, dusty blues, beige, olive, warm gray&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hand-painted anime film still, detailed crowd illustration, slightly soft shading&amp;#34;},{&amp;#34;role&amp;#34;:&amp;#34;output image&amp;#34;,&amp;#34;composition&amp;#34;:&amp;#34;the same crowded historical street reimagined from inside the mass of people at near-ground height&amp;#34;,&amp;#34;scene&amp;#34;:&amp;#34;view from within the crowd beside a carriage wheel, bodies filling the foreground and midground, a person in dark maroon clothing bent forward at left, a crouched figure in green near the bottom center, a woman in a light blue dress at right-center turning back, tightly packed figures, horse and cart implied nearby, dramatic sense of compression and closeness&amp;#34;,&amp;#34;camera&amp;#34;:&amp;#34;very low ground-level POV from inside the crowd, upward and forward through people, emphasizing complex occlusion and depth&amp;#34;,&amp;#34;lighting&amp;#34;:&amp;#34;soft daylight with warm cinematic shadows&amp;#34;,&amp;#34;color_palette&amp;#34;:&amp;#34;muted earthy browns, dusty blues, beige, olive, warm gray&amp;#34;,&amp;#34;rendering&amp;#34;:&amp;#34;hand-painted anime film still, cinematic perspective shift, detailed character crowding, soft painterly shading&amp;#34;}],&amp;#34;overall_goal&amp;#34;:&amp;#34;show a before-and-after camera angle transformation of the same anime crowd scene, with the output moving from an overhead view to a low immersive POV inside the crowd&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;霓虹-ai-縮略圖對比&#34;&gt;霓虹 AI 縮略圖對比
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043_hu_33f15e3a0c84a481.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/043_hu_175d60632bcf6b51.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;霓虹 AI 縮略圖對比&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a dramatic Japanese YouTube thumbnail in a futuristic neon cyberpunk style, 16:9 landscape. Use a dark tech-city background with faint skyscrapers, digital grid lines, glowing particles, and high-contrast blue, pink, and gold lighting. In the exact center, place a young woman from the waist up with long straight pastel blue hair, wearing a plain white short-sleeve T-shirt and a light pink skirt, posing thoughtfully with one hand near her chin and the other arm folded; anonymize her face with a soft rectangular blur. Across the very top, add huge distressed bold white Japanese headline text reading 主導権が揺れた, and directly below it add large bold yellow text reading {argument name=&amp;#34;subheadline text&amp;#34; default=&amp;#34;Nano Bananaから&amp;#34;}. On the left side, create a glowing blue hexagonal-framed panel titled Nano Banana with a smaller subtitle 画像生成. Inside that panel, include exactly 4 image tiles in a 2x2 grid: 1) a fantasy floating island landscape at sunset, 2) a sunlit forest path with tall trees, 3) a neon futuristic city street at night, 4) an outer-space planet scene with stars and a spacecraft. Beneath the left panel, add a blue glowing ribbon label reading かつては優位だった. On the right side, create a glowing magenta hexagonal-framed panel titled {argument name=&amp;#34;right panel title&amp;#34; default=&amp;#34;GPT Image 2&amp;#34;} with a smaller subtitle 実務で使える出力へ. Inside it, include exactly 4 example thumbnail cards in a 2x2 grid, each featuring the same blue-haired woman with a blurred face and bold Japanese text. The 4 card labels above the tiles are: サムネイル画像, 記事のアイキャッチ画像, LPのセクション画像, SNS投稿画像. The large text inside the 4 cards should read respectively: 1) AIで変わるクリエイティブの未来, 2) AI時代のクリエイティブ戦略 成功する企業の条件, 3) AIで加速するビジネス成長, 4) 未来をつくるのは AI×あなたのアイデア. Between the left and right panels, place a bright glowing gold arrow pointing from left to right with spark-like particle trails, indicating transition or superiority shift. Along the bottom, add a very large black banner with a glowing gold border and massive bold gold text reading {argument name=&amp;#34;bottom banner text&amp;#34; default=&amp;#34;GPT Image 2へ&amp;#34;}. Overall composition should feel like a comparison graphic showing a shift from older image generation to more practical commercial output, with aggressive thumbnail typography, strong glow effects, metallic texture on major text, and polished social-media marketing visuals.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;賽博朋克-ai-工具對比海報&#34;&gt;賽博朋克 AI 工具對比海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044_hu_e993eef1ea220a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/044_hu_6755473a85ce3e57.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;賽博朋克 AI 工具對比海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A futuristic Japanese tech comparison poster in a dark cyberpunk control-room setting, wide 16:9 composition. Large distressed white Japanese headline text at the upper left reading &amp;#34;三つ巴&amp;#34;, with a bold gold subtitle directly below reading &amp;#34;それぞれの武器&amp;#34;. Across the center-left are 3 glowing holographic comparison panels arranged horizontally and connected by neon arrows: a blue panel labeled &amp;#34;Google&amp;#34;, an amber-gold panel labeled &amp;#34;Claude&amp;#34;, and a purple-magenta panel labeled &amp;#34;OpenAI&amp;#34;. The Google panel contains 4 inner cards: 2 larger top cards labeled &amp;#34;Gemini&amp;#34; and &amp;#34;Antigravity&amp;#34;, plus 2 smaller bottom cards showing analytics/dashboard-like visuals and a blue isometric cube graphic. The Claude panel contains 4 inner cards: 1 large top card labeled &amp;#34;Claude Code&amp;#34;, plus 3 smaller bottom cards showing a network diagram, text/code list, and chart analytics. The OpenAI panel contains 5 inner cards: 2 larger top cards labeled &amp;#34;ChatGPT&amp;#34; and &amp;#34;Codex&amp;#34;, plus 3 smaller bottom cards showing interface/code windows and a geometric wireframe cube. Add glowing bidirectional arrows between Google and Claude, and between Claude and OpenAI. At the bottom center, place a large neon-framed banner with gold text reading &amp;#34;Google / Claude / OpenAI&amp;#34;. On the right side, include a young woman standing and pointing left toward the panels, with long straight split-dyed hair in pastel pink and cyan blue, a plain white t-shirt with black text reading &amp;#34;{argument name=&amp;#34;shirt text&amp;#34; default=&amp;#34;OKIHIRO AI Creative&amp;#34;}&amp;#34;, and a soft pink pleated skirt. Her face is obscured by a smooth rectangular blur block. Use cinematic sci-fi lighting, glossy hologram UI details, high contrast, vivid blue-gold-purple accents, and a polished YouTube thumbnail aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式-ai-對戰-youtube-縮略圖&#34;&gt;日式 AI 對戰 YouTube 縮略圖
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219/status/2047698611665096732&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/MoveHiro1219&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@MoveHiro1219&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045.webp&#34;
	width=&#34;1199&#34;
	height=&#34;675&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045_hu_70f595024db82dbb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/045_hu_e83698ae32159172.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式 AI 對戰 YouTube 縮略圖&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;177&#34;
		data-flex-basis=&#34;426px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A bold Japanese YouTube thumbnail about the AI competition era, 16:9 widescreen, high contrast, dramatic tech-news style. Use a dark futuristic control-room background filled with 3 glowing holographic dashboard screens and blue cyber interface elements around the edges. On the left and center, place a luminous circular hub labeled “AI” in bright blue, with 3 directional glowing energy arrows branching outward to competing platforms: “Google” on the left in a blue electric region, “Claude” on the upper right in a gold electric region, and “OpenAI” at the bottom center in a magenta-purple electric region. Add a subtle world-map or territory-battle visualization effect under each brand region, like illuminated digital land masses or influence zones. On the right side, show a young Japanese-looking woman from waist up, facing forward, wearing a long straight split-color wig with pastel pink on one side and pastel blue on the other, a plain white T-shirt with the printed text “OKIHIRO AI Creative”, and a light pink skirt. She raises one index finger beside her face in a presenter pose. Her face is fully obscured by a large soft-edged rectangular blur block. Across the top, add huge distressed white Japanese headline text: {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;AI戦国時代&amp;#34;}. Beneath it, add a second line in bold gold Japanese text: {argument name=&amp;#34;subheadline text&amp;#34; default=&amp;#34;性能だけの話じゃない&amp;#34;}. Across the bottom, place a wide black banner with massive bold gold Japanese text: {argument name=&amp;#34;bottom text&amp;#34; default=&amp;#34;空気を取った側が勝つ&amp;#34;}. Make the typography oversized, gritty, and attention-grabbing, with slight glow and drop shadow. Use a color palette of black, electric blue, gold, magenta, and neon white, with intense contrast and thumbnail readability.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;東京-disneysea-前排戰鬥-ui&#34;&gt;東京 DisneySea 前排戰鬥 UI
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/mikko_20100518/status/2047514897404354598&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/mikko_20100518&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@mikko_20100518&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046.webp&#34;
	width=&#34;1200&#34;
	height=&#34;800&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046_hu_b2c64723a1135d80.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/046_hu_445e6e63a044c7d2.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;東京 DisneySea 前排戰鬥 UI&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;150&#34;
		data-flex-basis=&#34;360px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a hyper-detailed comedic Japanese arcade fighting game screenshot styled like a versus battle scene, using a real-world photo aesthetic with game UI overlaid on top. The scene shows an intense mock battle between two groups of theme-park fans competing for the front row at an outdoor show plaza in Tokyo DisneySea. Use a wide 16:9 composition. In the background, clearly show Mediterranean Harbor and Mount Prometheus under bright daytime skies, with the waterfront and DisneySea architecture visible. In the foreground, show exactly 10 young adult people in winter casual clothing, split into 2 opposing teams of 5, physically leaning, grabbing, reaching, and shoving in a tug-of-war-like scrum over position, with exaggerated competitive body language and frozen action as if in a fighting game. Faces should be anonymized with soft blurred blocks. Add floating character labels above each person with levels and names in Japanese. The overall tone is absurdly realistic, like a real candid photo transformed into a polished arcade game battle screen.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Add a full Japanese fighting-game HUD with glossy blue-versus-red interface styling. At the very top, place a center stage title bar reading &amp;#34;東京ディズニーシー ミッキー広場 ショー最前列バトル&amp;#34; and a large timer in the middle reading &amp;#34;TIME 89&amp;#34;. In the top left, add a blue team header &amp;#34;PLAYER1&amp;#34; and team name &amp;#34;最前列ガチ勢A&amp;#34;. In the top right, add a red team header &amp;#34;RIVAL&amp;#34; and team name &amp;#34;ライバルグループB&amp;#34;. On the left side, stack exactly 5 blue player status panels with portraits, level, Japanese class-like nicknames, HP, SP, and BURST meters. The 5 left-side labels are: &amp;#34;Lv.25 ガチ勢リーダー ユウキ&amp;#34;, &amp;#34;Lv.24 筋肉マン タケシ&amp;#34;, &amp;#34;Lv.23 眼鏡オタク シンジ&amp;#34;, &amp;#34;Lv.23 開角心MAX ケント&amp;#34;, &amp;#34;Lv.22 サポート要員 リョウ&amp;#34;. On the right side, stack exactly 5 red rival status panels with the labels: &amp;#34;Lv.27 ライバルリーダー ダイキ&amp;#34;, &amp;#34;Lv.26 パワフル代表 マサル&amp;#34;, &amp;#34;Lv.24 戦略家 コウジ&amp;#34;, &amp;#34;Lv.23 熱血漢 リク&amp;#34;, &amp;#34;Lv.22 サポート女子 サキ&amp;#34;. Each panel should include numeric HP and SP values and segmented BURST gauges, styled like a Japanese arcade RPG-fighter interface.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Place exactly 10 in-battle nameplates above the fighters in the center scene, color-coded blue for the left team and red for the right team. The 10 labels are: &amp;#34;Lv.24 タケシ&amp;#34;, &amp;#34;Lv.25 ユウキ&amp;#34;, &amp;#34;Lv.23 シンジ&amp;#34;, &amp;#34;Lv.23 ケント&amp;#34;, &amp;#34;Lv.22 リョウ&amp;#34;, &amp;#34;Lv.27 ダイキ&amp;#34;, &amp;#34;Lv.26 マサル&amp;#34;, &amp;#34;Lv.23 リク&amp;#34;, &amp;#34;Lv.22 サキ&amp;#34;, &amp;#34;Lv.22 ミサキ&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the lower left, add a skill menu titled &amp;#34;スキル&amp;#34; listing exactly 5 skills with SP costs: &amp;#34;ダッシュ突撃 SP 20&amp;#34;, &amp;#34;肩押し強奪 SP 25&amp;#34;, &amp;#34;荷物で場所確保 SP 15&amp;#34;, &amp;#34;ロープくぐり SP 10&amp;#34;, &amp;#34;本気の根性 SP 50&amp;#34;. Beneath that, add a dark description box explaining the highlighted skill &amp;#34;本気の根性&amp;#34; with the Japanese text: &amp;#34;気合で相手を威圧し、どかす! 一定時間、相手が怯みやすくなる! (バーストゲージを大きく消費する) 効果時間:10秒&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;At the bottom center, add an item menu titled &amp;#34;アイテム&amp;#34; with exactly 5 item slots showing icons and counts: a water bottle &amp;#34;x3&amp;#34;, a folded purple towel &amp;#34;x2&amp;#34;, a blue drawstring bag &amp;#34;x1&amp;#34;, a gray backpack &amp;#34;x1&amp;#34;, and a boxed meal &amp;#34;x2&amp;#34;. At the lower right, add a quest panel titled &amp;#34;クエスト&amp;#34; with the mission text &amp;#34;ショー開始までに最前列を死守しろ!&amp;#34; and condition text &amp;#34;条件:ライバルグループを全員後ろに押し戻せ!&amp;#34; and countdown text &amp;#34;ショー開始まで:02:30&amp;#34;. Beside it, add a mini-map titled &amp;#34;ミッキー広場MAP&amp;#34; showing red and blue dots for both teams in the plaza. Along the very bottom edge, include small controller prompts in Japanese for actions such as skill use, item use, grab/push, and dash.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use dramatic, saturated lighting, crisp detail, realistic clothing folds, authentic plaza stone pavement, and a high-end Japanese game screenshot look. The image should feel like a ridiculous but believable crossover between a real Tokyo DisneySea crowd photo and a competitive arcade battle game interface.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;宮崎駿風短片流程&#34;&gt;宮崎駿風短片流程
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/happycapyai/status/2049468986828697940&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/happycapyai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@happycapyai&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047.webp&#34;
	width=&#34;832&#34;
	height=&#34;709&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047_hu_c16f4cb372376a6f.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/047_hu_b83a8c81f3c6afa3.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;宮崎駿風短片流程&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;117&#34;
		data-flex-basis=&#34;281px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Given a story concept, generate a complete Miyazaki-style animated short film: write a 30-shot script → generate watercolor storyboard images (gpt-image-1) → plan SOFT/HARD transitions → produce video clips with Seedance 2.0 using first/last-frame binding → synthesize the original ambient piano score → stitch everything into a final MP4 with music.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/comparison.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 提示詞寶庫：廣告創意案例</title>
        <link>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/</link>
        <pubDate>Sat, 02 May 2026 11:35:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/</guid>
        <description>&lt;p&gt;本頁收錄 &lt;code&gt;廣告創意&lt;/code&gt; 分類下的 19 個案例。每個條目保留原案例連結、作者、生成圖和完整提示詞。&lt;/p&gt;
&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;廣告創意&#34;&gt;廣告創意
&lt;/h2&gt;&lt;h3 id=&#34;四宮格日式數字廣告橫幅&#34;&gt;四宮格日式數字廣告橫幅
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/makaneko_AI/status/2045764016858087720&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/makaneko_AI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@makaneko_AI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000_hu_b4b22c98e45c267c.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/000_hu_b3b79859672a67c1.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;四宮格日式數字廣告橫幅&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;96
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;2x2 grid of Japanese digital advertisement banners&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;structure&amp;#34;: &amp;#34;4 equal quadrants&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;quadrants&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top-left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Travel&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;A couple holding hands on a white sand beach, looking out at turquoise ocean water under a bright blue sky.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;red hibiscus flower in bottom left corner&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;今年こそ、解き放て。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;travel destination\&amp;#34; default=\&amp;#34;沖縄旅行\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;3日間の癒やし旅&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;航空券+ホテル&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;39,800円〜&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;絶景、グルメ、体験 ぜんぶ叶う!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;icons&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;descriptions&amp;#34;: [&amp;#34;airplane&amp;#34;, &amp;#34;hotel building&amp;#34;, &amp;#34;car&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Skincare&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Close-up portrait of a young woman with glowing, dewy skin, eyes closed, gently touching her cheeks.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;soft pink gradient background&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;dynamic water splash effects&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;pink cosmetic jar labeled &amp;#39;{argument name=\&amp;#34;skincare product name\&amp;#34; default=\&amp;#34;LUMIÈRE\&amp;#34;} Brightening Gel&amp;#39;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;毛穴・くすみ卒業!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;透明感あふれる&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;水光肌へ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;新感覚スキンケア&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;初回限定 78%OFF&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;discount price\&amp;#34; default=\&amp;#34;1,980円\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;gold circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;毛穴ケア&amp;#34;, &amp;#34;高保湿&amp;#34;, &amp;#34;ハリ・ツヤ&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Gourmet Food&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Thick, sliced, medium-rare steak sizzling on a dark grill plate.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;garlic chips&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;rosemary sprig&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;dark background with smoke and glowing embers&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;とろける旨さ!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;food item\&amp;#34; default=\&amp;#34;黒毛和牛\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;贅沢ステーキ&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;期間限定&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;特別価格&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;通常価格 8,980円&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;4,980円&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;red circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;A4 A5等級&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom-right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;theme&amp;#34;: &amp;#34;Online Education&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subject&amp;#34;: &amp;#34;Young man in a blue shirt studying at a desk, writing in a notebook next to an open laptop.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;bright indoor lighting&amp;#34;, &amp;#34;desk environment&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;text_labels&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;スキマ時間で&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;{argument name=\&amp;#34;education goal\&amp;#34; default=\&amp;#34;最短合格!\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;オンライン資格講座&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;スマホで完結&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;効率学習で差がつく!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;今だけ! 受講料 20%OFF&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;badges&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 1,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;style&amp;#34;: &amp;#34;blue circular&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;受講者数 10万人 突破!&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;icons&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;descriptions&amp;#34;: [&amp;#34;smartphone&amp;#34;, &amp;#34;open book&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;動漫角色品牌識別與周邊展示板&#34;&gt;動漫角色品牌識別與周邊展示板
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/chi_vc_/status/2046061073720369228&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/chi_vc_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@chi_vc_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001_hu_6a8012585d54d59a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/001_hu_e92905938aad48d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;動漫角色品牌識別與周邊展示板&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;brand identity and merchandise design board&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;theme&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;color_palette&amp;#34;: &amp;#34;{argument name=\&amp;#34;theme color\&amp;#34; default=\&amp;#34;pastel pink\&amp;#34;} and white&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;motif&amp;#34;: &amp;#34;{argument name=\&amp;#34;motif\&amp;#34; default=\&amp;#34;cherry blossoms\&amp;#34;} and pink hearts&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;character&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;anime girl with short brown bob hair, pink eyes, wearing a white hoodie, gentle smile&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;branding&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;main_logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;character name\&amp;#34; default=\&amp;#34;癒音ちー\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sub_logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;character subtext\&amp;#34; default=\&amp;#34;ゆおんちー\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;header banner&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;top&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;large main logo&amp;#34;, &amp;#34;sub logo&amp;#34;, &amp;#34;cherry blossom graphics&amp;#34;, &amp;#34;character portrait on the right&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;product packaging&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;middle left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;1 square box with heart-shaped transparent window showing pink heart candies&amp;#34;, &amp;#34;character illustration on box&amp;#34;, &amp;#34;2 individual candy wrappers&amp;#34;, &amp;#34;5 scattered heart candies&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;promotional poster&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;middle right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;character portrait&amp;#34;, &amp;#34;heart-shaped candy bowl&amp;#34;, &amp;#34;main logo&amp;#34;, &amp;#34;text &amp;#39;4.26 NEW OPEN&amp;#39;&amp;#34;, &amp;#34;text &amp;#39;{argument name=\&amp;#34;social handle\&amp;#34; default=\&amp;#34;@yuonchii\&amp;#34;}&amp;#39;&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;horizontal web banner&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;lower middle&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;main logo&amp;#34;, &amp;#34;cherry blossoms&amp;#34;, &amp;#34;character portrait on the right&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;social media profile mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom left&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;header image with logo&amp;#34;, &amp;#34;1 circular profile picture&amp;#34;, &amp;#34;handle &amp;#39;{argument name=\&amp;#34;social handle\&amp;#34; default=\&amp;#34;@yuonchii\&amp;#34;}&amp;#39;&amp;#34;, &amp;#34;1 follow button&amp;#34;, &amp;#34;mock bio text&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;type&amp;#34;: &amp;#34;merchandise collection&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;position&amp;#34;: &amp;#34;bottom right&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;count&amp;#34;: 9,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;items&amp;#34;: [&amp;#34;1 white t-shirt with logo&amp;#34;, &amp;#34;1 white mug with character&amp;#34;, &amp;#34;4 round pin badges&amp;#34;, &amp;#34;1 acrylic keychain&amp;#34;, &amp;#34;2 candy packets&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;深色模式營銷案例-ui&#34;&gt;深色模式營銷案例 UI
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/IndieDevHailey/status/2044974254769463312&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/IndieDevHailey&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@IndieDevHailey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002.webp&#34;
	width=&#34;569&#34;
	height=&#34;1199&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002_hu_7b2c77f5b4960ac5.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/002_hu_6146746c8fe8f5d5.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;深色模式營銷案例 UI&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;UI/UX landing page mockup&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;theme&amp;#34;: &amp;#34;dark mode, sleek modern aesthetic, glassmorphism, {argument name=\&amp;#34;primary accent color\&amp;#34; default=\&amp;#34;neon purple and blue\&amp;#34;} glowing accents&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;logo&amp;#34;: &amp;#34;{argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;goViralX\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;top_right_tag&amp;#34;: &amp;#34;VIRAL CAMPAIGN CASE STUDY&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Hero&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;headline&amp;#34;: &amp;#34;{argument name=\&amp;#34;hero headline\&amp;#34; default=\&amp;#34;How We Created 10M+ Viral Impact\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;subheadline&amp;#34;: &amp;#34;3天引爆全网, 助力品牌实现指数级增长&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;stats_row&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;count&amp;#34;: 4,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;labels&amp;#34;: [&amp;#34;总播放量&amp;#34;, &amp;#34;互动率&amp;#34;, &amp;#34;转化咨询&amp;#34;, &amp;#34;执行周期&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;values&amp;#34;: [&amp;#34;{argument name=\&amp;#34;main statistic\&amp;#34; default=\&amp;#34;10,240,000+\&amp;#34;}&amp;#34;, &amp;#34;18.7%&amp;#34;, &amp;#34;3,200+&amp;#34;, &amp;#34;72小时&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;visual&amp;#34;: &amp;#34;cinematic shot of a person in a hoodie looking at glowing digital screens and graphs, large play button overlay&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Strategy&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;Our 3-Day Execution Strategy&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;layout_type&amp;#34;: &amp;#34;vertical timeline&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;steps_count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements_per_step&amp;#34;: [&amp;#34;timeline node&amp;#34;, &amp;#34;title&amp;#34;, &amp;#34;bullet points&amp;#34;, &amp;#34;video thumbnail with play button&amp;#34;, &amp;#34;description box&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;Data-Driven Performance&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;left_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;stat_cards_count&amp;#34;: 4,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;values&amp;#34;: [&amp;#34;10M+&amp;#34;, &amp;#34;43%&amp;#34;, &amp;#34;28,000+&amp;#34;, &amp;#34;3,200+&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;right_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;charts_count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;chart_1&amp;#34;: &amp;#34;line graph showing 7-day growth peaking at Day 3&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;chart_2&amp;#34;: &amp;#34;horizontal segmented bar chart showing platform distribution (TikTok 52%, Instagram 24%, X 15%, YouTube 9%)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Keys to Success&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;The 3 Keys to Viral Success&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;cards_count&amp;#34;: 3,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;card_elements&amp;#34;: [&amp;#34;glowing icon (fire, target, antenna)&amp;#34;, &amp;#34;title&amp;#34;, &amp;#34;description&amp;#34;, &amp;#34;VIEW DETAIL link&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Social Proof&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;TRUSTED BY CREATORS &amp;amp; BRANDS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;left_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;logos_count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;grid&amp;#34;: &amp;#34;2x4&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;brands&amp;#34;: [&amp;#34;SHEIN&amp;#34;, &amp;#34;SHOPLINE&amp;#34;, &amp;#34;Blueglass&amp;#34;, &amp;#34;instacart&amp;#34;, &amp;#34;lemon8&amp;#34;, &amp;#34;mi&amp;#34;, &amp;#34;CIDER&amp;#34;, &amp;#34;bellroy&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;right_column&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;testimonial_cards_count&amp;#34;: 2,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &amp;#34;elements&amp;#34;: [&amp;#34;quote&amp;#34;, &amp;#34;author title (SaaS Founder, Growth Manager)&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;name&amp;#34;: &amp;#34;Call to Action&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;READY TO GO VIRAL?&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;interactive_elements&amp;#34;: [&amp;#34;text input field&amp;#34;, &amp;#34;glowing button with text &amp;#39;{argument name=\&amp;#34;call to action text\&amp;#34; default=\&amp;#34;获取专属增长方案 -&amp;gt;\&amp;#34;}&amp;#39;&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;visual&amp;#34;: &amp;#34;3D render of a rocket ship taking off with purple and blue flames&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;18-頁吉祥物品牌識別文檔&#34;&gt;18 頁吉祥物品牌識別文檔
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Colin_Leeee/status/2044802802149650631&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Colin_Leeee&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Colin_Leeee&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003_hu_38654e96cad54ea8.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/003_hu_b4c26ee66844dace.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;18 頁吉祥物品牌識別文檔&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;18-panel brand identity and character design document&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;brand&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;name&amp;#34;: &amp;#34;{argument name=\&amp;#34;brand name\&amp;#34; default=\&amp;#34;沐阳 MUYANG TEA\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;industry&amp;#34;: &amp;#34;{argument name=\&amp;#34;industry\&amp;#34; default=\&amp;#34;tea shop\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;colors&amp;#34;: [&amp;#34;{argument name=\&amp;#34;primary color\&amp;#34; default=\&amp;#34;yellow\&amp;#34;}&amp;#34;, &amp;#34;{argument name=\&amp;#34;secondary color\&amp;#34; default=\&amp;#34;green\&amp;#34;}&amp;#34;, &amp;#34;white&amp;#34;, &amp;#34;brown&amp;#34;, &amp;#34;dark green&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: &amp;#34;{argument name=\&amp;#34;character description\&amp;#34; default=\&amp;#34;3D rendered cute Shiba Inu mascot wearing a green apron\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;grid&amp;#34;: &amp;#34;3 columns by 6 rows&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;sections&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;01 品牌DNA分析 / BRAND DNA ANALYSIS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;logo&amp;#34;, &amp;#34;5 color swatches&amp;#34;, &amp;#34;6 icons&amp;#34;, &amp;#34;target audience charts&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;02 概念构思 / CONCEPT MOODBOARD&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 photo references&amp;#34;, &amp;#34;4 mood icons&amp;#34;, &amp;#34;design equation&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;03 形态研究 / FORM STUDY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;4 logo anatomy icons&amp;#34;, &amp;#34;4 evolution steps&amp;#34;, &amp;#34;4 silhouettes&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;04 概念探索 / CONCEPT EXPLORATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;12 line-art character sketches&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;05 精细线稿 / REFINED LINE ART&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;3 rows of front and side line art with proportion guides&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;06 细节精修 / DETAIL REFINEMENT&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;2 full-body renders with labels&amp;#34;, &amp;#34;4 circular close-ups&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;07 表情设定 / EXPRESSION SHEET&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;11 3D rendered head expressions&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;08 姿势库 / POSE LIBRARY&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;9 full-body 3D rendered poses&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;09 转身视图 / TURNAROUND VIEW&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 full-body 3D renders&amp;#34;, &amp;#34;5 matching line-art views&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;10 色彩开发 / COLOR DEVELOPMENT&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 rows of 5-color palettes&amp;#34;, &amp;#34;color psychology text&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;11 材质规格 / MATERIAL SPECIFICATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;5 texture swatches&amp;#34;, &amp;#34;property sliders&amp;#34;, &amp;#34;4 manufacturing icons&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;12 色彩应用 / COLOR APPLICATION&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;4 color variant renders&amp;#34;, &amp;#34;2 light/dark renders&amp;#34;, &amp;#34;4 contrast rating circles&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;13 构造指南 / CONSTRUCTION GUIDE&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;2 line-art diagrams for geometry and grid&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;14 设计系统规则 / DESIGN SYSTEM RULES&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;minimum size icons&amp;#34;, &amp;#34;clear space diagram&amp;#34;, &amp;#34;4 usage examples&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;15 资产变体 / ASSET VARIANTS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;3 size variants&amp;#34;, &amp;#34;3 line-art variants&amp;#34;, &amp;#34;3 simplified flat heads&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;16 数字应用 / DIGITAL APPLICATIONS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;1 app icon&amp;#34;, &amp;#34;2 social avatars&amp;#34;, &amp;#34;UI elements&amp;#34;, &amp;#34;3-step animation cycle&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;17 实物应用 / PHYSICAL APPLICATIONS&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;plush toy mockup&amp;#34;, &amp;#34;packaging mockup&amp;#34;, &amp;#34;merchandise mockup&amp;#34;, &amp;#34;storefront mockup&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;title&amp;#34;: &amp;#34;18 最终主视觉 / FINAL RENDERING&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;elements&amp;#34;: [&amp;#34;large high-res 3D render of mascot holding tea&amp;#34;, &amp;#34;logo&amp;#34;, &amp;#34;file format list&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;日式中餐外賣傳單&#34;&gt;日式中餐外賣傳單
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/xc5_/status/2048310696686014935&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/xc5_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@xc5_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004_hu_1975f05f33c39ac1.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/004_hu_52b41b2a6d938981.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;日式中餐外賣傳單&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A Japanese neighborhood Chinese restaurant delivery flyer for mailbox posting (3:4 aspect ratio). Designed to look like a double-sided B5 print.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Flyer characteristics (following the grammar of real delivery flyers):
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Flashy red and yellow color scheme.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Large text at the top: &amp;#34;Delivery Available! {argument name=&amp;#34;shop name&amp;#34; default=&amp;#34;Mona-Hanten&amp;#34;}&amp;#34; (shadowed Gothic font).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- An illustration of a {argument name=&amp;#34;character&amp;#34; default=&amp;#34;Chinese girl in a red cheongsam with a brown short bob&amp;#34;} holding ramen and saying &amp;#34;Welcome!&amp;#34; in a speech bubble.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A menu photo grid (4x3) featuring various dishes: different types of ramen, fried rice, gyoza, sweet and sour pork, shrimp in chili sauce, mapo tofu, liver and leek stir-fry, tenshinhan, twice-cooked pork, spring rolls, annin tofu, and fried rice sets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Names and prices for each dish.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- A large yellow banner saying &amp;#34;Free delivery on all menu items over ¥1,000!&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &amp;#34;Order by phone! ☎ 072-XX-XXXX&amp;#34; emphasized with a red circle.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Business hours &amp;#34;11:00-22:00 (Closed on Tuesdays)&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Delivery area map (simple schematic map).
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Coupon (perforated line for clipping): &amp;#34;One free plate of gyoza with this flyer!&amp;#34;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Texture of cheap paper printing. Includes fold marks. Precision that could be mistaken for a real Japanese delivery flyer.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;粉彩水母房間商品海報&#34;&gt;粉彩水母房間商品海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Ayu_AI_0912/status/2048309565817766139&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Ayu_AI_0912&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Ayu_AI_0912&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005.webp&#34;
	width=&#34;898&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005_hu_f904a82df3a72a81.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/005_hu_b36028bbd48c5f54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;粉彩水母房間商品海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{&amp;#34;type&amp;#34;:&amp;#34;pastel lifestyle poster / character room-goods feature sheet&amp;#34;,&amp;#34;theme&amp;#34;:&amp;#34;soft dreamy lavender jellyfish aesthetic&amp;#34;,&amp;#34;style&amp;#34;:&amp;#34;Japanese cute editorial graphic, airy white background, pastel lilac palette, delicate handwritten notes, sparkles and tiny doodles, soft product photography mixed with magazine layout&amp;#34;,&amp;#34;subject&amp;#34;:{&amp;#34;character&amp;#34;:{&amp;#34;name&amp;#34;:&amp;#34;{argument name=\&amp;#34;character name\&amp;#34; default=\&amp;#34;くらげちゃん\&amp;#34;}&amp;#34;,&amp;#34;appearance&amp;#34;:&amp;#34;young woman with a short platinum-blonde bob haircut, wearing a fluffy pale-lavender zip hoodie over a white inner top, shown from chest up on the lower right, face intentionally obscured with a plain beige rectangle&amp;#34;}},&amp;#34;layout&amp;#34;:{&amp;#34;orientation&amp;#34;:&amp;#34;vertical poster&amp;#34;,&amp;#34;background&amp;#34;:&amp;#34;clean white with faint pastel doodles of stars, bubbles, tiny jellyfish, and musical notes&amp;#34;,&amp;#34;sections&amp;#34;:[{&amp;#34;title&amp;#34;:&amp;#34;header&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;top&amp;#34;,&amp;#34;count&amp;#34;:5,&amp;#34;labels&amp;#34;:[&amp;#34;speech bubble intro&amp;#34;,&amp;#34;main title&amp;#34;,&amp;#34;small subtitle GOODS&amp;#34;,&amp;#34;horizontal lavender ribbon tagline&amp;#34;,&amp;#34;round badge on the top right&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;featured goods grid&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper and middle left&amp;#34;,&amp;#34;count&amp;#34;:6,&amp;#34;labels&amp;#34;:[&amp;#34;ゆらゆらくらげランプ&amp;#34;,&amp;#34;くらげと夢見るベッドリネン&amp;#34;,&amp;#34;くらげシェルミラー&amp;#34;,&amp;#34;くらげグラデマグ&amp;#34;,&amp;#34;くらげのときめき収納ボックス&amp;#34;,&amp;#34;くらげふわもこマット&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;side handwritten note&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;upper right&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;みんなも くらげちゃんRoomで いっしょに まったりしよー♡♡&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;room concept box&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;くらげちゃんの お部屋作りのこだわり&amp;#34;]},{&amp;#34;title&amp;#34;:&amp;#34;pick up circle&amp;#34;,&amp;#34;position&amp;#34;:&amp;#34;lower center-left&amp;#34;,&amp;#34;count&amp;#34;:1,&amp;#34;labels&amp;#34;:[&amp;#34;Pick up!&amp;#34;]}],&amp;#34;product_images&amp;#34;:{&amp;#34;count&amp;#34;:6,&amp;#34;items&amp;#34;:[{&amp;#34;name&amp;#34;:&amp;#34;ゆらゆらくらげランプ&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small translucent jellyfish-shaped lamp on a white base, glowing softly in pale blue-lavender&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげと夢見るベッドリネン&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;plush pastel-lavender bed with fluffy comforter and pillows, dreamy cozy bedroom styling&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげシェルミラー&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small tabletop mirror with a puffy shell-like pastel-lilac frame and rounded base&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげグラデマグ&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;ceramic mug with lavender-to-pink gradient and a simple jellyfish illustration&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげのときめき収納ボックス&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;pastel storage box holding cosmetics and small bottles, decorated with a jellyfish emblem&amp;#34;},{&amp;#34;name&amp;#34;:&amp;#34;くらげふわもこマット&amp;#34;,&amp;#34;description&amp;#34;:&amp;#34;small fluffy cloud-like or jellyfish-like mat in pale lavender and white&amp;#34;}]},&amp;#34;text_elements&amp;#34;:{&amp;#34;main_title&amp;#34;:&amp;#34;{argument name=\&amp;#34;headline text\&amp;#34; default=\&amp;#34;くらげちゃんの お部屋アイテム\&amp;#34;}&amp;#34;,&amp;#34;badge_text&amp;#34;:&amp;#34;くらげちゃんの Room お部屋作りの こだわりポイントも 教えちゃうよ。&amp;#34;,&amp;#34;tagline&amp;#34;:&amp;#34;ふわふわで甘くて、ちょっぴり夢みたいな私のお部屋へようこそ♡&amp;#34;,&amp;#34;speech_bubble&amp;#34;:&amp;#34;くらげちゃんの お気に入りだけ集めた お部屋アイテムを紹介するよ♪&amp;#34;,&amp;#34;concept_points&amp;#34;:{&amp;#34;count&amp;#34;:3,&amp;#34;items&amp;#34;:[&amp;#34;色は白とラベンダーで統一!&amp;#34;,&amp;#34;光が集まるふわっとした空間に&amp;#34;,&amp;#34;お友達入りのアイテムに囲まれて 自分らしくいられる空間を大切にしてるよ♪&amp;#34;]},&amp;#34;product_blurbs&amp;#34;:&amp;#34;each product has a short handwritten Japanese description in a cute casual font beside or below the image&amp;#34;},&amp;#34;composition&amp;#34;:&amp;#34;the poster is left-heavy with product cards and text, while the character portrait occupies the lower right third, slightly overlapping the layout&amp;#34;,&amp;#34;color_palette&amp;#34;:{&amp;#34;count&amp;#34;:5,&amp;#34;colors&amp;#34;:[&amp;#34;white&amp;#34;,&amp;#34;pastel lavender&amp;#34;,&amp;#34;soft lilac&amp;#34;,&amp;#34;pale gray-violet&amp;#34;,&amp;#34;touches of pastel blue-pink gradient&amp;#34;]},&amp;#34;rendering_notes&amp;#34;:&amp;#34;keep everything very soft, feminine, and cozy; rounded corners on all product photos; mix of bold Japanese headline typography and light handwritten annotations; subtle shadows; clean high-key lighting; social-media-ready editorial collage aesthetic&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;魔法種子包裝微縮場景&#34;&gt;魔法種子包裝微縮場景
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AllaAisling/status/2048156345518768190&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AllaAisling&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AllaAisling&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006.webp&#34;
	width=&#34;1200&#34;
	height=&#34;801&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006_hu_444babc81c045359.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/006_hu_b9411ae15ce3b04.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;魔法種子包裝微縮場景&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;149&#34;
		data-flex-basis=&#34;359px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Epic 3D scene: a weathered seed packet lying open on a potting bench, its promise erupting into the garden it describes. The illustration on the front becomes real. {argument name=&amp;#34;plant type&amp;#34; default=&amp;#34;[PLANT / FLOWER]&amp;#34;} growing at full scale from the paper, roots visible through the packet&amp;#39;s base pushing into soil below.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{argument name=&amp;#34;detail left&amp;#34; default=&amp;#34;[DETAIL 1]&amp;#34;} in full bloom at one corner. {argument name=&amp;#34;detail right&amp;#34; default=&amp;#34;[DETAIL 2]&amp;#34;} mid-growth at the other, not yet what it will be.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tiny insects that belong to this plant, {argument name=&amp;#34;insect type&amp;#34; default=&amp;#34;[BEE / BUTTERFLY / BEETLE]&amp;#34;}, hovering at correct scale.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The written instructions on the back become garden calendar, &amp;#34;sow in spring&amp;#34; manifests as actual spring light. &amp;#34;full sun&amp;#34; manifests as a single shaft of it, hitting the tallest bloom perfectly.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Scattered seeds between packet and soil each showing their germination stage, split coat, first root, first shoot, first leaf.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The packet&amp;#39;s torn top edge becomes a treeline.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Potting bench surface with soil scatter and water droplets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Tilt-shift depth of field, greenhouse morning light, the packet as the garden it always intended.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華計時腕錶廣告&#34;&gt;奢華計時腕錶廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007_hu_53f7b8075433d847.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/007_hu_6b013650585f2bb7.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華計時腕錶廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A dramatic luxury product advertising image for a motorsport-inspired chronograph wristwatch in a dark studio. Center-left foreground, show a single stainless steel chronograph watch standing upright at a slight three-quarter angle, with a black dial, two red-accent subdials, slim silver hour markers, a tachymeter bezel, and visible crown and pushers on the right side. The watch has a black leather strap with bold red stitching along both edges and a sporty premium finish. To the right of the watch, place one black square presentation box slightly behind it, textured like leather, with red stitching around the lid and a silver embossed eye-shaped logo above the text “NESS STUDIO” and smaller red text “TRACK SURFACE.” At the top center of the composition, add the same silver eye logo with the words “NESS STUDIO” and smaller “BY NICOLAS.” Across the background, place one oversized blurred word, {argument name=&amp;#34;headline text&amp;#34; default=&amp;#34;PRECISION&amp;#34;}, in large gray capital letters spanning nearly the full width. The scene is set against a deep black background with cinematic red and white horizontal light streaks crossing behind the products from left to right, suggesting speed and racetrack energy. Use a glossy wet ground plane with reflective texture, catching red highlights and mirrorlike reflections beneath the watch and box. At the bottom center, add the text “CHRONOGRAPH SERIES” in clean white spaced capitals with thin red horizontal lines extending on both sides, and below it smaller red capitals reading {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;ALSACE MADE&amp;#34;}. Color palette: black, charcoal gray, silver steel, vivid racing red, and a touch of white. Lighting should be high-contrast and premium, with crisp specular highlights on the metal case, subtle soft fill on the box, and moody shadows. Overall style: ultra-polished commercial product photography, luxury watch campaign, sharp focus on the products, sleek branding, high-end automotive aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;霓虹-nike-lumina-廣告海報&#34;&gt;霓虹 Nike Lumina 廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008_hu_3e7d872b50e43c6a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/008_hu_2465c5288bde964a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;霓虹 Nike Lumina 廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-energy vertical Nike fashion campaign poster featuring a single athletic young woman mid-jump against a futuristic neon studio background. She is captured in a dynamic airborne pose with one knee bent up, the other leg folded back, one arm extended outward and the other bent near her chest, conveying motion and power. Her face is obscured by a clean rectangular blur block centered over the face. She wears a cropped iridescent white hooded windbreaker with a black zipper and small Nike logo on the chest, holographic metallic lavender-blue leggings with a subtle Nike swoosh on the thigh, a black branded waistband visible above the leggings, and white chunky Nike sneakers. Her brown hair is tied in a high ponytail flying outward with the jump. Behind her, enormous glowing white serif letters spell “NIKE” across the upper half, with a small white Nike swoosh centered above the word. Across the middle background, the phrase “LUMINA” appears once in wide bold glowing letters with a horizontal glitch and scanline distortion effect, partially obscured by the model. The color palette is saturated magenta, violet, cyan, and electric blue with strong bloom, glossy highlights, lens flares, and chromatic aberration. Add sweeping circular light trails wrapping around the model’s legs and body, suggesting speed and motion. The overall style is premium sportswear advertising, ultra-polished, cinematic, high contrast, hyperreal retouching, crisp product detail, dramatic rim lighting, and a luminous holographic aesthetic. Place 2 small text lines at the bottom: bottom left reads {argument name=&amp;#34;tagline text&amp;#34; default=&amp;#34;LIGHT. MOTION. ENERGY.&amp;#34;}, bottom right reads {argument name=&amp;#34;collection name&amp;#34; default=&amp;#34;NIKE LUMINA COLLECTION&amp;#34;} followed by a small Nike swoosh. Include exactly 3 visible Nike swooshes total: 1 above the large NIKE headline, 1 on the jacket chest, and 1 on the leggings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;街頭潮鞋廣告海報&#34;&gt;街頭潮鞋廣告海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca/status/2048147643809865950&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AlwaveNazca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AlwaveNazca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009_hu_b072e862c874c197.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/009_hu_f2d16261ff61d346.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;街頭潮鞋廣告海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a bold streetwear poster advertisement for {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;} featuring a young adult model seated casually on the ground in a low-angle fashion pose, one knee raised and one leg extended toward the camera so the sneaker in front appears oversized and dominant. The model wears a dark brown oversized leather bomber jacket, a black shirt, light blue loose-fit jeans, white socks, and chunky black-white-gray sneakers with a red accent in the sole and the {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;} logo visible on the shoe side and tongue. The face is intentionally obscured by a soft rectangular blur block centered over the face. Use an off-white textured paper background with distressed grunge design elements and collage layering. Behind the model, place a large rough red paint brushstroke shape spanning diagonally across the center. Add black ink splatters, sketch circles, torn paper scraps, and hand-painted graffiti accents. Include 4 major graphic doodles: a large black X in the upper right, a hand-drawn upward arrow in the lower left, a rough crown sketch in the lower right, and a circular scribble near the top center. In the upper left, place a stylized eye logo above the text &amp;#34;{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;}&amp;#34; and a smaller tagline below reading &amp;#34;A MOMENT OF YOUR STYLE&amp;#34;. On the left middle area, add the handwritten slogan &amp;#34;INNOVATE CREATE INSPIRE&amp;#34; in stacked black brush lettering. On the right middle area, place a torn black paper patch with the handwritten white slogan &amp;#34;BUILT DIFFERENT MOVE DIFFERENT&amp;#34; and a red underline stroke. In the lower left near the shoe, add a black distressed label sticker containing a globe scribble, the text &amp;#34;{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;NESS STUDIO&amp;#34;}&amp;#34;, and a barcode. Along the bottom footer, create a clean horizontal strip with 3 social media icons and handles separated by thin vertical dividers: Instagram, Facebook, and Twitter, each followed by &amp;#34;@NESS.STUDIO&amp;#34;. The overall style should be edgy, urban, youthful, high-contrast, editorial street fashion, mixing product advertising photography with graffiti poster design, collage textures, and dynamic branding.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;編輯風-osaka-six-衛衣廣告&#34;&gt;編輯風 Osaka Six 衛衣廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/_LaurentB/status/2048126606313464040&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/_LaurentB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@_LaurentB&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010.webp&#34;
	width=&#34;675&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010_hu_7de8847fc2baaabb.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/010_hu_78efa95ff3f40433.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;編輯風 Osaka Six 衛衣廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;56&#34;
		data-flex-basis=&#34;135px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A clean editorial fashion advertisement poster on a pale powder-blue studio background with a glossy reflective floor. The composition is vertical and minimal, dominated by oversized bold white condensed sans-serif typography in the background reading “OSAKA SIX:” on the top line and “006 REMAINS” below, filling most of the upper half behind the subject. In the top right corner, small white branding text reads “Designed by ARTTEESHOW.” Centered in the lower middle is an oversized forest-green crewneck sweatshirt standing upright like a sculptural object, with soft heavy cotton fabric, dropped shoulders, extra-long sleeves pooled on the floor, and a small black neck label that reads ARTTEESHOW. On the chest of the sweatshirt is a large abstract collage print made from torn paper fragments in beige, tan, black, gray, white, and vivid red, arranged vertically like layered scraps. Leaning against the right side of the giant sweatshirt is a slim female fashion model with long straight black hair, wearing a matching {argument name=&amp;#34;sweatshirt color&amp;#34; default=&amp;#34;forest green&amp;#34;} sweatshirt and relaxed wide-leg sweatpants with clean white low-top sneakers. She is posed in profile with a calm detached editorial attitude, one hand in her pocket, her body reclining diagonally against the giant garment, legs extended forward; her face is obscured by a soft rectangular blur for an anonymous art-fashion look. The smaller worn sweatshirt has the same abstract torn-paper collage graphic centered on the chest. At the bottom center, add 2 lines of small white copy text: “Made for comfort, worn for confidence.” and “Because life feels better when someone’s carrying the weight of the world.” The image should feel like a premium conceptual streetwear campaign from the early 1990s reimagined as contemporary luxury advertising, with crisp studio lighting, soft shadows, subtle floor reflections, precise product focus, surreal scale contrast between the oversized sweatshirt and the model, and a polished magazine-poster aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;editorial-perfume-shot-on-moss&#34;&gt;Editorial Perfume Shot on Moss
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr/status/2048103506125463983&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Salmaaboukarr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011_hu_58556ac875587cf0.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/011_hu_37ab90329d9dc54.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Editorial Perfume Shot on Moss&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A high-end editorial product photograph of a single luxury perfume bottle centered in a warm earthy still-life scene. The product is a clear rectangular glass bottle filled with golden amber liquid, topped with a glossy rounded black cap, with a clean white front label that reads &amp;#34;BYREDO&amp;#34;, &amp;#34;BAL D’AFRIQUE&amp;#34;, and &amp;#34;EAU DE PARFUM&amp;#34;. Place the bottle upright on 1 curved piece of pale weathered driftwood, surrounded by a dense carpet of 1 layer of rich green moss covering the foreground and lower frame. Use a minimal studio composition with the product isolated against a smooth warm brown-to-amber gradient background, softly illuminated like sunset light. Light the scene with dramatic directional warm light from the upper right, creating a bright glow on the background, a crisp highlight on the cap, soft reflections in the glass, and gentle shadows across the wood and moss. Keep the framing vertical, the bottle centered slightly low in the composition with generous negative space above, and the overall mood natural, luxurious, earthy, cinematic, and polished like a premium fragrance campaign shot.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;金色皮草中的編輯風香水瓶&#34;&gt;金色皮草中的編輯風香水瓶
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr/status/2048103506125463983&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/Salmaaboukarr&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@Salmaaboukarr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012.webp&#34;
	width=&#34;420&#34;
	height=&#34;525&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012_hu_73064ca43b4caaf4.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/012_hu_9004ce57fc60b92a.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;金色皮草中的編輯風香水瓶&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A luxurious editorial product photograph of a single perfume bottle nestled into dense, plush faux fur in rich golden caramel and honey-brown tones. Center the composition on one clear oval glass bottle filled with warm amber liquid, with a glossy rounded black cap and a clean white rectangular label. The label text should read {argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;BYREDO&amp;#34;} at the top, {argument name=&amp;#34;product name&amp;#34; default=&amp;#34;BAL D’AFRIQUE&amp;#34;} large in the middle, and {argument name=&amp;#34;product type&amp;#34; default=&amp;#34;EAU DE PARFUM&amp;#34;} in small text near the bottom. Shoot it as a close-up still life with soft studio lighting, subtle highlights on the glass and cap, gentle shadows in the folds of the fur, and a warm cinematic color palette. The bottle should sit slightly embedded in the fur so the surrounding texture frames it from all sides, creating a premium fashion editorial mood, minimal composition, shallow depth of field, crisp focus on the label, and a high-end beauty campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華-miniature-dubai-city-model&#34;&gt;奢華 Miniature Dubai City Model
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/silentempiredev/status/2048086378383384773&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/silentempiredev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@silentempiredev&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013.webp&#34;
	width=&#34;1199&#34;
	height=&#34;685&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013_hu_bd1831eec05090ea.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/013_hu_57037a0472ed195f.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華 Miniature Dubai City Model&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;175&#34;
		data-flex-basis=&#34;420px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A hyper-detailed cinematic isometric miniature city model of {argument name=&amp;#34;landmark tower&amp;#34; default=&amp;#34;Burj Khalifa&amp;#34;} rising dramatically from the center of a square architectural master-plan board, presented like a luxury urban planning maquette on a black background. The composition shows one dominant ultra-tall silver skyscraper in the exact center, surrounded by a dense ring of modern high-rise towers, illuminated roads, bridges, and glowing warm city lights. Curving turquoise-blue water features and artificial lakes wrap around the central district in multiple connected pools and canals, with one large circular fountain-like feature near the tower base and several small island shapes visible in the water. In the lower right quadrant, include a large low-rise complex with rounded geometric roofs and subtle green-lit sections, connected by multilane roads and looping interchanges. The entire city sits on one square beige map board engraved with faint street grids and planning lines, with the board edges clearly visible and slightly raised. Viewpoint is a high three-quarter isometric angle, centered and symmetrical, with the tower extending far upward into negative space. Lighting is dramatic and luxurious: warm golden edge lights on buildings and roads, cool reflections in the water, crisp metallic highlights on the central tower, and a deep black void surrounding the model. Style should feel like a photorealistic architectural visualization mixed with a premium collectible scale model, extremely intricate, sharp, polished, and elegant.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;戲仿奢侈品廣告&#34;&gt;戲仿奢侈品廣告
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/tonysimons_/status/2048057490940596595&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/tonysimons_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@tonysimons_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014.webp&#34;
	width=&#34;960&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014_hu_9f0c8e2d76f0f3a.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/014_hu_580b634c7e74ca8c.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;戲仿奢侈品廣告&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;80&#34;
		data-flex-basis=&#34;192px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-impact parody e-commerce infographic for “{argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;}” malt beverage. Foreground: An extreme close-up of a rough, weathered hand holding a tall, brightly colored can of {argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;} toward the camera. The can is slightly cold with visible condensation droplets and a loud, chaotic flavor design. The hand and can have a slight macro-lens blur for depth, with the can still reading clearly as the hero product. Central Subject: In the mid-ground, a funny, disheveled {argument name=&amp;#34;subject&amp;#34; default=&amp;#34;homeless-looking man&amp;#34;} sitting casually on a milk crate in an urban alley. He has a scruffy beard, messy hair, layered worn clothing, and a huge unbothered grin. He should look chaotic but oddly charismatic, like the accidental king of bad decisions. He is posed like a confident lifestyle-ad model, proudly showing off the can. Background &amp;amp; Lighting: A ridiculously polished ad-style backdrop mixed with a grimy city alley setting. Soft-focus urban textures, dumpster shapes, graffiti hints, and scattered clutter in the distance. Add dramatic studio lighting, soft glow, rainbow prism flares, and subtle light leaks to make the whole thing look way too premium for the subject matter. A few blurred {argument name=&amp;#34;product&amp;#34; default=&amp;#34;Four Loko&amp;#34;} cans can float artistically in the background for extra absurdity. Typography &amp;amp; Layout (Bold sans-serif, white and neon accent styling): Top Center (Background): Massive, bold text reading “{argument name=&amp;#34;brand name&amp;#34; default=&amp;#34;FOUR LOKO&amp;#34;}” positioned behind the subject. Top Right: Bold text reading “The Champagne of Bad Ideas”. Mid-Left: “Premium chaos and zero self-control” Mid-Right: Large, bold “23” with the text “ounces of terrible decisions.” Bottom-Right: Large, bold “1&amp;#34; with the text “can to ruin tomorrow.” Optional small callout text near the bottom: “Now with more regret.” Style: Ultra-detailed, 8k parody commercial photography, sharp focus on the can, shallow depth of field, vibrant trashy color palette, clean advertising composition, exaggerated premium product-ad aesthetic, funny visual contrast between polished branding and the wrecked subject.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;vr-headset-exploded-view-海報&#34;&gt;VR Headset Exploded View 海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/wory37303852/status/2045925660401795478&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/wory37303852&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@wory37303852&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015.webp&#34;
	width=&#34;800&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015_hu_e4202369328020d9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/015_hu_8571ff57bc5363a0.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;VR Headset Exploded View 海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;66&#34;
		data-flex-basis=&#34;160px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;type&amp;#34;: &amp;#34;exploded view product diagram poster&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;subject&amp;#34;: &amp;#34;VR headset&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;style&amp;#34;: &amp;#34;clean high-tech 3D render, studio lighting, glowing accents&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;background&amp;#34;: &amp;#34;{argument name=\&amp;#34;background color\&amp;#34; default=\&amp;#34;soft purple and blue gradient\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;header&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;logo&amp;#34;: &amp;#34;∞ {argument name=\&amp;#34;product name\&amp;#34; default=\&amp;#34;Meta Quest 3\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;subtitle&amp;#34;: &amp;#34;{argument name=\&amp;#34;main catchphrase\&amp;#34; default=\&amp;#34;まったく新しい現実を、まったく新しい構造から。\&amp;#34;}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &amp;#34;layout&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;centerpiece&amp;#34;: &amp;#34;vertically stacked exploded view of a VR headset showing 9 distinct layers of internal components: outer shell, camera sensors, motherboard with chip, pancake lenses, internal frame, battery packs, side straps, top strap, and facial interface cushion.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;callout_labels&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;count&amp;#34;: 8,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;left_side&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;Snapdragon® XR2 Gen 2\n圧倒的な処理性能でリアルタイムな体験を。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;調整可能なIPD機構\n幅広いユーザーに快適なフィット感を。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;精密設計されたヘッドストラップ\n快適さと安定性を追求したエルゴノミクス。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_side&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;フェイスプレート\n洗練されたデザインと最適な重量バランス。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;トラッキングカメラ\n高精度な位置トラッキングと環境認識を実現。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;パンケーキレンズ\n薄型設計で広い視野角と鮮明な映像を提供。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;高性能バッテリー\n長時間駆動を支える最適化された電源設計。&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;柔らかなフェイスインターフェース\n長時間でも快適な装着感を実現。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;#34;footer&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;left_text_block&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;headline&amp;#34;: &amp;#34;{argument name=\&amp;#34;bottom headline\&amp;#34; default=\&amp;#34;体験は、構造から進化する。\&amp;#34;}&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &amp;#34;body&amp;#34;: &amp;#34;一つひとつのパーツに、没入体験を支える最先端テクノロジーとこだわりの設計。Meta Quest 3は、未来を感じさせる体験を内部から生み出しています。&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &amp;#34;right_logo&amp;#34;: &amp;#34;∞ Meta&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;虛構-ai-廣告打印機奢華海報&#34;&gt;虛構 AI 廣告打印機奢華海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/nijisora_yuma/status/2049462065639858687&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/nijisora_yuma&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@nijisora_yuma&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016.webp&#34;
	width=&#34;896&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016_hu_f1558c734cabdcd9.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/016_hu_b0414569d42985bc.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;虛構 AI 廣告打印機奢華海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;74&#34;
		data-flex-basis=&#34;179px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;縦型3:4の、高級商業ポスターを制作してください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;テーマは、架空の新商品広告です。商品は「BRAND PRESS 01（ブランドプレス・ゼロワン）」という、Pollo AIを搭載した架空の広告ポスター生成プリンターです。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;この商品は、まだ存在しないブランド名・商品ジャンル・世界観・ターゲット層を入力すると、Pollo AIがコピー、ビジュアル、レイアウトまで完成された商業広告ポスターを自動生成し、高精細な印刷物としてその場で出力する未来型プリンターです。単なるAIサービスの概念広告ではなく、実際に販売されていそうな架空商品の広告として成立させてください。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;メインコンセプト: 「まだないブランドに、最初の一目惚れを。」
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;商品ビジュアル: 画面中央に実物の商品「BRAND PRESS 01」を大きく配置。未来型の高級プロ用印刷デバイスとして、黒い金属筐体、シルバーのエッジ、透明カバー、青白く発光するAIコア、精密な印刷ヘッド、ローラー、タッチパネル、排紙スロット、ポスター受けトレイを備える。排紙スロットから、架空の高級香水ブランド広告ポスターが紙として大きく出力されている構図。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;構図: ややローアングル、斜め45度。背景は暗いネイビーから黒の高級広告制作スタジオ。映画的でドラマチックな高級プロダクト広告。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;広告レイアウト: 上部に大きなキャッチコピー、中央にプリンター本体と排出中のポスター、右側に機能説明、左下に価格と発売日、下部にCTA。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;入れる文字: 「まだないブランドに、最初の一目惚れを。」 / BRAND PRESS 01 / 「Pollo AI搭載・広告ポスター生成プリンター」 / 「名前だけのアイデアを、完成された商業ポスターとして出力。」 / 「構想、コピー、ビジュアル、印刷まで。1台で。」
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;奢華-chocolate-campaign-system&#34;&gt;奢華 chocolate campaign system
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07/status/2049459155086500321&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/SPEEDAI07&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@SPEEDAI07&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017.webp&#34;
	width=&#34;1200&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017_hu_62b8746b955a3fad.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/017_hu_bbe920a4698343b.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;奢華 chocolate campaign system&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;100&#34;
		data-flex-basis=&#34;240px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium, square (1:1) product advertisement for a fictional luxury chocolate brand called Noirvelle Chocolat, inspired by high-end chocolate brands. The ad should feel like a high-end editorial campaign, combining luxury food photography, refined packaging design, and cinematic lighting. Use matte black wrapper, subtle gold foil, elegant serif typography, and realistic product rendering. Generate flavor variants such as Blood Orange Noir, Salted Pistachio Muse, and Raspberry Ember with distinct mood, color palette, ingredients, headline, and supporting copy. Keep the chocolate bar as hero centerpiece with subtle reflections, shallow depth of field, luxury minimalism, and a small CTA: “Shop the drop.”
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;urban-fruit-juice-ad-海報&#34;&gt;Urban fruit juice ad 海報
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_/status/2049452842931630202&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原案例&lt;/a&gt; / 作者: &lt;a class=&#34;link&#34; href=&#34;https://x.com/AIwithSarah_&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@AIwithSarah_&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018.webp&#34;
	width=&#34;900&#34;
	height=&#34;1200&#34;
	srcset=&#34;https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018_hu_f430dbb0b53aa34d.webp 480w, https://knightli.com/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/018_hu_bfc913c0d69a3a17.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;Urban fruit juice ad 海報&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;75&#34;
		data-flex-basis=&#34;180px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;完整提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create a premium modern beverage advertisement poster in a vertical 3:4 format featuring a stylish young female model crouching confidently in a bright urban indoor hallway with colorful graffiti wall art on one side and clean minimal architecture on the other. In the foreground, a giant realistic fruit juice bottle is held toward the camera in forced perspective, with fictional branding like “VIVAJUICE”. Add brand logo, tagline, huge bold overlapping typography, four icon-based feature badges, and three smaller bottle variants at bottom right. Use soft natural lighting mixed with commercial studio polish, realistic shadows, shallow depth of field, glossy floor reflections, and a premium energetic eCommerce campaign aesthetic.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;分類導航: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;總目錄&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;電商主圖&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;廣告創意&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;人像攝影&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;海報插畫&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;角色設計&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI 與社羣媒體&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;對比與社羣案例&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;原倉庫連結&#34;&gt;原倉庫連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;專案首頁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts/blob/main/cases/ad-creative.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;原分類檔案&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>faster-whisper：更快的 Whisper 轉寫引擎</title>
        <link>https://knightli.com/zh-tw/2026/05/01/faster-whisper-speech-to-text/</link>
        <pubDate>Fri, 01 May 2026 22:31:26 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/faster-whisper-speech-to-text/</guid>
        <description>&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 是 SYSTRAN 維護的 Whisper 推理實作。它使用 CTranslate2 作為後端，在保持 Whisper 使用方式接近的同時，讓推理速度、顯存占用和部署彈性更適合工程場景。&lt;/p&gt;
&lt;p&gt;如果你已經用過 &lt;code&gt;openai/whisper&lt;/code&gt;，可以把 &lt;code&gt;faster-whisper&lt;/code&gt; 理解成一個更偏生產環境的替代方案：介面仍然圍繞模型載入、音訊轉寫、分段結果展開，但底層執行效率更高，也更容易依照 CPU、GPU、量化和批次處理策略做取捨。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;Whisper 的效果很好，但原版實作直接部署時經常會遇到幾個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;長音訊轉寫耗時明顯。&lt;/li&gt;
&lt;li&gt;GPU 顯存占用偏高。&lt;/li&gt;
&lt;li&gt;CPU 環境可用，但速度不一定理想。&lt;/li&gt;
&lt;li&gt;批次處理大量音影片時，吞吐不容易提升。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 主要就是圍繞這些問題做最佳化。專案 README 中說明，在相同精度下，它可以比 &lt;code&gt;openai/whisper&lt;/code&gt; 快到 4 倍，並且記憶體占用更低；如果使用 8-bit 量化，速度還可以進一步提升。&lt;/p&gt;
&lt;h2 id=&#34;安裝&#34;&gt;安裝
&lt;/h2&gt;&lt;p&gt;一般 Python 環境裡可以直接安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install faster-whisper
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要使用 GPU，需要確認本機 CUDA、cuDNN 與 CTranslate2 版本相容。這裡最容易踩坑的是顯示卡驅動和 CUDA runtime 版本不一致：程式碼本身可能沒問題，但執行時會在載入模型或首次推理時失敗。&lt;/p&gt;
&lt;h2 id=&#34;基本用法&#34;&gt;基本用法
&lt;/h2&gt;&lt;p&gt;最小範例很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;faster_whisper&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;beam_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Detected language &amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39; with probability &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;language&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;language_probability&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡有幾個關鍵參數：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;參數&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;model_size&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;選擇 Whisper 模型規格，例如 &lt;code&gt;small&lt;/code&gt;、&lt;code&gt;medium&lt;/code&gt;、&lt;code&gt;large-v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;device&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;推理裝置，常見值是 &lt;code&gt;cuda&lt;/code&gt; 或 &lt;code&gt;cpu&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;compute_type&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;計算精度，例如 &lt;code&gt;float16&lt;/code&gt;、&lt;code&gt;int8_float16&lt;/code&gt;、&lt;code&gt;int8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;beam_size&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;解碼搜尋寬度，通常越大越穩，但速度越慢&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目標是本機快速轉寫，通常可以先從 &lt;code&gt;medium&lt;/code&gt; 或 &lt;code&gt;large-v3&lt;/code&gt; 開始測試。顯存緊張時，再考慮量化。&lt;/p&gt;
&lt;h2 id=&#34;cpu-和-gpu-怎麼選&#34;&gt;CPU 和 GPU 怎麼選
&lt;/h2&gt;&lt;p&gt;有 NVIDIA GPU 時，優先用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;顯存不夠時可以換成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;large-v3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;int8_float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;沒有 GPU 時，可以在 CPU 上跑：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;small&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cpu&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;int8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CPU 模式更適合輕量任務、後台低頻任務，或者沒有顯示卡的伺服器。要處理大量長音訊，GPU 仍然更合適。&lt;/p&gt;
&lt;h2 id=&#34;批次轉寫&#34;&gt;批次轉寫
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 也提供批次轉寫能力。批次處理適合大量短音訊，或者需要提升 GPU 吞吐的場景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;faster_whisper&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BatchedInferencePipeline&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;WhisperModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;turbo&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;device&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;cuda&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compute_type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;float16&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;batched_model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BatchedInferencePipeline&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;batched_model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;batch_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;batch_size&lt;/code&gt; 不是越大越好。它會提高吞吐，但也會增加顯存壓力。實際部署時建議從 4、8、16 這樣的值逐步測試，找到機器能穩定承受的點。&lt;/p&gt;
&lt;h2 id=&#34;vad-和詞級時間戳&#34;&gt;VAD 和詞級時間戳
&lt;/h2&gt;&lt;p&gt;語音轉文字經常會遇到長靜音、背景噪音和字幕對齊問題。&lt;code&gt;faster-whisper&lt;/code&gt; 內建了一些實用參數，可以直接在轉寫時啟用。&lt;/p&gt;
&lt;p&gt;啟用 VAD：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vad_filter&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;取得詞級時間戳：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;info&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transcribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;audio.mp3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word_timestamps&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segments&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;segment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;[&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s -&amp;gt; &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%.2f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;s] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%s&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;word&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;VAD 適合處理會議錄音、Podcast、直播回放這類包含長靜音的音訊。詞級時間戳則適合生成字幕、做逐字稿校對，或者後續接入播放器高亮。&lt;/p&gt;
&lt;h2 id=&#34;模型怎麼選&#34;&gt;模型怎麼選
&lt;/h2&gt;&lt;p&gt;模型選擇主要看三件事：準確率、速度、機器資源。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;場景&lt;/th&gt;
          &lt;th&gt;建議&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;快速測試&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;small&lt;/code&gt; 或 &lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中文內容品質優先&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;large-v3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPU 顯存緊張&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;int8_float16&lt;/code&gt; 或更小模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU 跑後台任務&lt;/td&gt;
          &lt;td&gt;小模型加 &lt;code&gt;int8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;批次短音訊&lt;/td&gt;
          &lt;td&gt;嘗試 &lt;code&gt;BatchedInferencePipeline&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果是中文語音，建議優先測試 &lt;code&gt;large-v3&lt;/code&gt;。如果機器壓力太大，再降低模型規格或使用量化。不要一開始就只看速度，轉寫品質下降後，人工校對時間可能會把省下來的推理時間抵消掉。&lt;/p&gt;
&lt;h2 id=&#34;適合的使用場景&#34;&gt;適合的使用場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 很適合這些任務：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;影片字幕生成。&lt;/li&gt;
&lt;li&gt;Podcast、會議、課程錄音轉文字。&lt;/li&gt;
&lt;li&gt;Bilibili、YouTube 等影片的本機轉寫流程。&lt;/li&gt;
&lt;li&gt;批次音訊歸檔和檢索。&lt;/li&gt;
&lt;li&gt;把語音內容接入 RAG、知識庫或搜尋系統。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它不直接解決說話人分離、摘要、章節切分這些上層問題，但可以作為穩定的轉寫層。後面可以再接 pyannote 做說話人分離，接 LLM 做摘要和結構化整理。&lt;/p&gt;
&lt;h2 id=&#34;部署建議&#34;&gt;部署建議
&lt;/h2&gt;&lt;p&gt;實際使用時，可以按這個順序調試：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用一段 1 到 3 分鐘的音訊確認環境能跑通。&lt;/li&gt;
&lt;li&gt;再換成目標語言和目標音質的樣本測試準確率。&lt;/li&gt;
&lt;li&gt;確認顯存占用，再決定是否啟用量化。&lt;/li&gt;
&lt;li&gt;長音訊先切分，避免一次性任務失敗後重跑成本過高。&lt;/li&gt;
&lt;li&gt;輸出結果同時保存 TXT 和 SRT，後續校對更方便。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果是伺服器任務，最好把模型載入放在服務啟動階段，不要每次請求都重新載入模型。模型載入本身會消耗時間，頻繁載入也容易讓顯存管理變得不穩定。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; 的價值在於把 Whisper 變成更適合長期使用的轉寫元件。它不是換一個模型，而是換一套更高效的推理後端和工程介面。&lt;/p&gt;
&lt;p&gt;對於個人工作流，可以用它快速把影片、會議、課程音訊變成文字。對於伺服器端任務，可以透過 GPU、量化、批次處理和 VAD 做效能調校。只要機器環境配置正確，它會比原版 Whisper 更適合承擔穩定、批次的語音轉文字工作。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/SYSTRAN/faster-whisper&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>如何在 Cline 中呼叫 DeepSeek V4 Pro</title>
        <link>https://knightli.com/zh-tw/2026/05/01/use-deepseek-v4-pro-in-cline/</link>
        <pubDate>Fri, 01 May 2026 20:59:06 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/use-deepseek-v4-pro-in-cline/</guid>
        <description>&lt;p&gt;Cline 本身已經支援 OpenAI Compatible Provider。
DeepSeek API 也相容 OpenAI SDK 風格的呼叫方式，所以把 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 接到 Cline 裡並不複雜：選 OpenAI Compatible，填 DeepSeek 的 Base URL、API Key 和模型名即可。&lt;/p&gt;
&lt;p&gt;下面按 VS Code 外掛介面和 Cline CLI 兩種方式整理。&lt;/p&gt;
&lt;h2 id=&#34;準備-deepseek-api-key&#34;&gt;準備 DeepSeek API Key
&lt;/h2&gt;&lt;p&gt;先到 DeepSeek 開放平台建立 API Key。&lt;/p&gt;
&lt;p&gt;需要準備三個值：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;填寫內容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Provider&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;OpenAI Compatible&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Base URL&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;https://api.deepseek.com&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Model ID&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DeepSeek 官方文件說明，V4 系列使用既有 OpenAI 相容介面，&lt;code&gt;base_url&lt;/code&gt; 保持為 &lt;code&gt;https://api.deepseek.com&lt;/code&gt;，呼叫時把 &lt;code&gt;model&lt;/code&gt; 設定為 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;在-cline-外掛裡設定&#34;&gt;在 Cline 外掛裡設定
&lt;/h2&gt;&lt;p&gt;如果你用的是 VS Code 裡的 Cline 外掛，可以按這個路徑設定：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 VS Code 側邊欄裡的 Cline。&lt;/li&gt;
&lt;li&gt;進入 Cline 的設定或模型設定頁面。&lt;/li&gt;
&lt;li&gt;Provider 選擇 &lt;code&gt;OpenAI Compatible&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;API Key 填入 DeepSeek API Key。&lt;/li&gt;
&lt;li&gt;Base URL 填：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Model ID 填：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;儲存設定，回到 Cline 對話框測試一次簡單任務。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以先讓 Cline 做一個低風險測試：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請讀取目前專案目錄結構，並總結這個專案是什麼類型，不要修改任何檔案。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能正常讀取和回答，說明模型鏈路已經通了。&lt;/p&gt;
&lt;h2 id=&#34;在-cline-cli-中設定&#34;&gt;在 Cline CLI 中設定
&lt;/h2&gt;&lt;p&gt;如果你使用 Cline CLI，可以用 &lt;code&gt;cline provider configure openai-compatible&lt;/code&gt; 進入互動式設定。&lt;/p&gt;
&lt;p&gt;範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline provider configure openai-compatible
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;互動時填寫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定完成後，可以用一個只讀任務測試：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cline &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summarize this repository structure without changing files.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你希望先降低成本，也可以把 Model ID 臨時改成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;等遇到複雜規劃、事實核查、多工具協作或高風險程式碼修改時，再切回 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;推薦的模型分工&#34;&gt;推薦的模型分工
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 Flash 更適合分工使用。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;日常程式碼閱讀、批量改小問題、生成腳本、整理上下文、低風險前端修改&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;架構規劃、複雜 bug、跨檔案重構、事實核查、多工具呼叫、高風險改動&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;對 Cline 這類 Agent 工具來說，成本主要來自長上下文、反覆讀檔案、生成計畫和多輪工具呼叫。
如果任務很輕，可以先用 Flash 跑量；如果任務需要更強判斷，再切 Pro。&lt;/p&gt;
&lt;h2 id=&#34;上下文長度怎麼填&#34;&gt;上下文長度怎麼填
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro 和 Flash 都支援很長上下文。
在 Cline 裡如果需要手動填寫 context window，可以按 DeepSeek 官方模型頁給出的 1M 上下文來理解。&lt;/p&gt;
&lt;p&gt;實際使用時不建議一開始就把所有檔案都塞進上下文。
Cline 會按任務讀取檔案，通常更好的方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先讓它看目錄結構；&lt;/li&gt;
&lt;li&gt;再讓它定位相關檔案；&lt;/li&gt;
&lt;li&gt;最後只圍繞目標檔案執行修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣更省 Token，也更容易保持任務邊界清晰。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;h3 id=&#34;1-提示模型不存在&#34;&gt;1. 提示模型不存在
&lt;/h3&gt;&lt;p&gt;先檢查 Model ID 是否寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要寫成 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;、&lt;code&gt;deepseek-v4&lt;/code&gt; 或其他顯示名稱。&lt;/p&gt;
&lt;h3 id=&#34;2-提示-401-或認證失敗&#34;&gt;2. 提示 401 或認證失敗
&lt;/h3&gt;&lt;p&gt;檢查 API Key：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否複製完整；&lt;/li&gt;
&lt;li&gt;是否帶了多餘空格；&lt;/li&gt;
&lt;li&gt;是否填到了 Cline 目前正在使用的 provider 設定裡；&lt;/li&gt;
&lt;li&gt;DeepSeek 帳戶是否有可用額度。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-提示連線失敗&#34;&gt;3. 提示連線失敗
&lt;/h3&gt;&lt;p&gt;檢查 Base URL：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要在末尾額外拼 &lt;code&gt;/v1/chat/completions&lt;/code&gt;。
Cline 的 OpenAI Compatible Provider 會自己按相容介面組織請求。&lt;/p&gt;
&lt;h3 id=&#34;4-cline-呼叫很貴怎麼辦&#34;&gt;4. Cline 呼叫很貴怎麼辦
&lt;/h3&gt;&lt;p&gt;可以先把日常任務切到 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;，只在複雜任務裡使用 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;另外，盡量把任務描述寫清楚：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;只修改登入頁相關檔案，不要重構無關模組。先給出計畫，確認後再改程式碼。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agent 任務最怕邊界不清。
邊界越清楚，讀檔案越少，工具呼叫越少，成本也越可控。&lt;/p&gt;
&lt;h3 id=&#34;5-報錯-reasoning_content-must-be-passed-back&#34;&gt;5. 報錯 reasoning_content must be passed back
&lt;/h3&gt;&lt;p&gt;如果你看到類似錯誤：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;400 The `reasoning_content` in the thinking mode must be passed back to the API.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;code&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;invalid_request_error&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;modelId&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;deepseek-v4-pro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這通常不是 Key、額度或 Base URL 的問題，而是 DeepSeek V4 Pro 的 thinking mode 和目前客戶端的多輪工具呼叫記錄沒有對齊。&lt;/p&gt;
&lt;p&gt;DeepSeek 官方文件說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thinking mode 預設是 &lt;code&gt;enabled&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;thinking mode 下會返回 &lt;code&gt;reasoning_content&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;如果某一輪發生了 tool call，後續請求必須把該輪 assistant message 裡的 &lt;code&gt;reasoning_content&lt;/code&gt; 一起傳回 API；&lt;/li&gt;
&lt;li&gt;如果客戶端沒有正確回傳，就會返回 400。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cline 透過 OpenAI Compatible Provider 接入時，如果目前版本沒有完整保留並回傳 DeepSeek 的 &lt;code&gt;reasoning_content&lt;/code&gt;，就可能在第二輪或工具呼叫後觸發這個錯誤。&lt;/p&gt;
&lt;p&gt;可嘗試的處理順序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先升級 Cline 到最新版；&lt;/li&gt;
&lt;li&gt;確認使用的是 &lt;code&gt;OpenAI Compatible&lt;/code&gt;，而不是普通 &lt;code&gt;OpenAI&lt;/code&gt; provider；&lt;/li&gt;
&lt;li&gt;如果 Cline 支援自訂 request body，嘗試關閉 thinking mode：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;disabled&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;如果 Cline 不支援額外 body 參數，暫時改用不觸發該問題的模型或服務中轉；&lt;/li&gt;
&lt;li&gt;等 Cline 適配 DeepSeek V4 的 &lt;code&gt;reasoning_content&lt;/code&gt; 回傳後，再切回 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;需要注意：關閉 thinking mode 會犧牲一部分複雜推理能力，但可以繞開客戶端沒有回傳 &lt;code&gt;reasoning_content&lt;/code&gt; 的相容性問題。&lt;/p&gt;
&lt;h2 id=&#34;一個可直接複製的設定清單&#34;&gt;一個可直接複製的設定清單
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-你的 DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-pro
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要低成本模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provider: OpenAI Compatible
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API Key: sk-你的 DeepSeek API Key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base URL: https://api.deepseek.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model ID: deepseek-v4-flash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;在 Cline 中呼叫 DeepSeek V4 Pro 的關鍵只有三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provider 選擇 &lt;code&gt;OpenAI Compatible&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;Base URL 填 &lt;code&gt;https://api.deepseek.com&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;Model ID 填 &lt;code&gt;deepseek-v4-pro&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;設定完成後，建議先用只讀任務測試，再逐步交給它執行真實程式碼修改。
如果你經常跑 Agent 任務，可以把 Flash 和 Pro 分開用：Flash 負責高頻輕量任務，Pro 負責複雜判斷和兜底。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/openai-compatible&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：OpenAI Compatible Provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cline.bot/provider-config/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cline Docs：Provider Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news202605&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：Models &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 降價如何改寫 AI Agent 的成本模型</title>
        <link>https://knightli.com/zh-tw/2026/05/01/deepseek-v4-price-cuts-ai-agent-economics/</link>
        <pubDate>Fri, 01 May 2026 19:47:47 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/deepseek-v4-price-cuts-ai-agent-economics/</guid>
        <description>&lt;p&gt;DeepSeek V4 發布時沒有製造出特別誇張的聲量。
沒有大型發布會，也沒有一眼碾壓所有對手的跑分敘事。
但幾天之後，它真正影響行業的地方開始顯現：連續降價。&lt;/p&gt;
&lt;p&gt;這次變化的重點不是「模型強了一點」，而是「使用成本被打到另一個層級」。
當 Token 價格低到普通 Agent 任務幾毛錢、一兩塊錢就能跑完時，很多 Coding Plan、Token Plan 的商業邏輯都會被重新審視。&lt;/p&gt;
&lt;h2 id=&#34;發布當天沒有炸場&#34;&gt;發布當天沒有炸場
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的第一波反饋並不算熱烈。
很多人期待它像 R1 那樣帶來強烈衝擊：跑分全面領先、國產算力驗證、多模態和 Agent 能力一起爆發。
但真正發布後，大家發現它更像一次穩健升級。&lt;/p&gt;
&lt;p&gt;V4 Pro 確實是強模型，尤其在程式碼、數學、長上下文和 agentic coding 上表現不錯。
但它不是那種讓所有同類模型瞬間失色的產品。
所以發布當天，輿論一度有些尷尬：想誇，但很難找到一個足夠爆炸的角度。&lt;/p&gt;
&lt;p&gt;真正的轉折點不是發布當天，而是後續價格調整。&lt;/p&gt;
&lt;h2 id=&#34;連續降價才是關鍵&#34;&gt;連續降價才是關鍵
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 發布後，價格開始連續下探。
按照 DeepSeek 官方價格頁和原文整理的資訊，當時的大致價格是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek V4 Flash：輸入 100 萬 Token 約 1 元；快取命中後 100 萬 Token 約 2 分錢；&lt;/li&gt;
&lt;li&gt;DeepSeek V4 Pro：輸入 100 萬 Token 約 3 元；快取命中後 100 萬 Token 約 2.5 分；&lt;/li&gt;
&lt;li&gt;全系列模型輸入快取命中價格降到首發價格的 1/10；&lt;/li&gt;
&lt;li&gt;V4 Pro 曾處在 2.5 折優惠期，優惠延長到 2026 年 5 月 31 日 23:59。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果按美元 API 價格看，會更直觀：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;快取命中輸入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;非快取輸入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;輸出&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;上下文&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0028 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.14 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.28 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 促銷價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.003625 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.435 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.87 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 原價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0145 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1.74 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3.48 / 100萬 Token&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1M&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這裡要注意兩個點。&lt;/p&gt;
&lt;p&gt;第一，V4 Pro 的 $0.435 / $0.87 是促銷價，不是長期原價。
DeepSeek 官方說明裡，這個 75% 折扣延長到 2026 年 5 月 31 日 15:59 UTC。&lt;/p&gt;
&lt;p&gt;第二，快取命中價格才是 Agent 成本模型裡的關鍵。
Flash 的快取命中輸入低到 $0.0028 / 100萬 Token，Pro 促銷期快取命中輸入是 $0.003625 / 100萬 Token。
這意味著大量重複專案上下文、工具定義、系統提示詞和歷史摘要，不再按完整輸入價格計費。&lt;/p&gt;
&lt;p&gt;這個價格最重要的地方，是它讓很多任務的 Token 成本變得「不敏感」。
過去開發者會擔心一次 Agent 任務吃掉大量上下文、反覆讀寫程式碼、頻繁呼叫工具。
現在只要快取命中率足夠高，成本會被壓得很低。&lt;/p&gt;
&lt;h2 id=&#34;和-gptclaude-的價格對比&#34;&gt;和 GPT、Claude 的價格對比
&lt;/h2&gt;&lt;p&gt;只看 DeepSeek 自己的價格，還不容易感受到差距。
把它和同期常見的閉源模型放在一起，對比會更明顯。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;輸入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;快取輸入&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;輸出&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.14 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0028 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.28 / M&lt;/td&gt;
          &lt;td&gt;高頻 Agent、常規 coding、批量任務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 促銷價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.435 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.003625 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.87 / M&lt;/td&gt;
          &lt;td&gt;複雜 coding、規劃、事實核查&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; 原價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1.74 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0145 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3.48 / M&lt;/td&gt;
          &lt;td&gt;促銷結束後的 Pro 成本基準&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$30 / M&lt;/td&gt;
          &lt;td&gt;高品質複雜任務、通用推理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$2.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.25 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$15 / M&lt;/td&gt;
          &lt;td&gt;程式設計和專業任務的中檔選擇&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4 mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.75 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.075 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$4.50 / M&lt;/td&gt;
          &lt;td&gt;成本更低的通用/子任務模型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.7&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.50 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$25 / M&lt;/td&gt;
          &lt;td&gt;高品質寫作、複雜推理、長任務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.30 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$15 / M&lt;/td&gt;
          &lt;td&gt;程式設計、Agent、綜合任務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.10 / M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$5 / M&lt;/td&gt;
          &lt;td&gt;輕量任務、摘要、分類&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這張表裡最刺眼的是輸出價格。
Agent 不只讀上下文，還會不斷生成計畫、補丁、解釋、日誌和下一步動作。
如果輸出很多，DeepSeek V4 Pro 促銷價的 $0.87 / M 和 GPT-5.5 的 $30 / M、Claude Sonnet 4.6 的 $15 / M 相比，差距會被不斷放大。&lt;/p&gt;
&lt;p&gt;即使按 V4 Pro 原價 $3.48 / M 輸出算，它也明顯低於 GPT-5.4、GPT-5.5 和 Claude Sonnet / Opus。
如果任務可以用 Flash 承擔，輸出價會進一步降到 $0.28 / M。&lt;/p&gt;
&lt;p&gt;快取輸入差距更誇張。
DeepSeek V4 Flash 的快取輸入是 $0.0028 / M，而 GPT-5.5 和 Claude Opus 4.7 的快取輸入都是 $0.50 / M。
這不是同一個數量級。
對反覆讀取同一程式碼倉庫的 Agent 來說，這個差距比普通聊天更重要。&lt;/p&gt;
&lt;h2 id=&#34;agent-任務為什麼特別受影響&#34;&gt;Agent 任務為什麼特別受影響
&lt;/h2&gt;&lt;p&gt;AI Agent 和普通聊天不一樣。
普通聊天通常是一問一答，輸入上下文相對有限。
Agent 任務會反覆讀取專案檔案、生成計畫、呼叫工具、檢查結果、再修改程式碼。&lt;/p&gt;
&lt;p&gt;這類任務有兩個特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Token 消耗大；&lt;/li&gt;
&lt;li&gt;重複上下文多。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第二點很關鍵。
在程式碼專案裡，模型會反覆讀取同一批檔案、目錄結構、錯誤日誌和修改結果。
如果平台支援快取命中，重複輸入的成本會大幅下降。&lt;/p&gt;
&lt;p&gt;原文裡提到一次實際體驗：把 DeepSeek V4 Pro 和 Flash 接到 Claude Code 一類工具中，讓它拉取一個提示詞倉庫並做成本地搜尋網站。
任務最終完成，總成本大約 8 毛多，其中 Pro 快取命中率達到 98.7%。&lt;/p&gt;
&lt;p&gt;這個例子說明了一個現實問題：Agent 任務越像「圍繞同一個專案反覆工作」，快取命中越有價值。
如果一次生成網站、修 bug、改前端只花幾毛錢到幾塊錢，訂閱套餐的吸引力就會下降。&lt;/p&gt;
&lt;p&gt;可以用一個簡化任務估算差距。
假設一次 coding agent 任務包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;50 萬 Token 輸入，其中 80% 能命中快取；&lt;/li&gt;
&lt;li&gt;5 萬 Token 輸出；&lt;/li&gt;
&lt;li&gt;不計算工具呼叫、搜尋和平台加價，只看模型 Token 成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大致成本如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算成本&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $0.03&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro 促銷價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $0.09&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro 原價&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $0.36&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4 mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $0.30&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $1.01&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $1.75&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $1.11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Opus 4.7&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 $1.65&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這個估算不是說 DeepSeek 在所有任務上都更好。
模型品質、工具呼叫穩定性、長上下文檢索能力、程式碼風格和事實可靠性都要單獨評估。
但從成本上看，DeepSeek V4 把「讓 Agent 多跑幾輪」的邊際成本壓得很低。
這會鼓勵開發者設計更長流程、更頻繁的自檢和更多候選方案，而不是每次都擔心 Token 帳單。&lt;/p&gt;
&lt;h2 id=&#34;coding-plan-和-token-plan-的差別&#34;&gt;Coding Plan 和 Token Plan 的差別
&lt;/h2&gt;&lt;p&gt;很多 AI 產品現在會提供兩類套餐：Coding Plan 和 Token Plan。&lt;/p&gt;
&lt;p&gt;它們的差別大致是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coding Plan 通常主要面向程式設計；&lt;/li&gt;
&lt;li&gt;Token Plan 通常覆蓋更多能力，例如 STT、TTS、繪圖、搜尋、embedding、RAG；&lt;/li&gt;
&lt;li&gt;STT 是語音轉文字；&lt;/li&gt;
&lt;li&gt;TTS 是文字轉語音；&lt;/li&gt;
&lt;li&gt;Coding Plan 往往把使用者限制在程式設計場景裡，其他能力還需要另買。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從商業角度看，Coding Plan 更像自助餐。
使用者預先付一筆固定費用，廠商賭的是大多數人不會把額度用滿。
有人用得多，有人用得少，平均下來平台仍然能賺錢。&lt;/p&gt;
&lt;p&gt;但如果按量 Token 價格足夠低，使用者就會開始計算：我為什麼一定要買套餐？
如果一個月真實使用成本只有幾塊錢、十幾塊錢，買 40 元、200 元的套餐就不一定划算。&lt;/p&gt;
&lt;h2 id=&#34;降價為什麼會衝擊套餐模式&#34;&gt;降價為什麼會衝擊套餐模式
&lt;/h2&gt;&lt;p&gt;訂閱套餐的成立，需要一個前提：使用者覺得單次使用很貴，或者不想計算每次呼叫成本。
當 Token 價格高時，套餐看起來更安心。
當 Token 價格低到幾乎無感時，按量付費反而更自然。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 的降價相當於把底牌亮出來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 任務可以很便宜；&lt;/li&gt;
&lt;li&gt;長上下文不一定貴到不能用；&lt;/li&gt;
&lt;li&gt;快取命中可以顯著降低成本；&lt;/li&gt;
&lt;li&gt;普通開發者不一定需要固定訂閱；&lt;/li&gt;
&lt;li&gt;模型入口可以從「套餐平台」轉向「低價 API」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這會讓做 Coding Plan 的平台不舒服。
如果使用者發現按量呼叫更便宜、更自由，就沒必要為了一個平台的套餐被綁定。&lt;/p&gt;
&lt;h2 id=&#34;flash-和-pro-怎麼選&#34;&gt;Flash 和 Pro 怎麼選
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的一個實用思路，是把 Flash 和 Pro 分工使用。&lt;/p&gt;
&lt;p&gt;Flash 適合高頻、輕量、可重複的任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改 bug；&lt;/li&gt;
&lt;li&gt;寫前端；&lt;/li&gt;
&lt;li&gt;寫腳本；&lt;/li&gt;
&lt;li&gt;做常規程式碼理解；&lt;/li&gt;
&lt;li&gt;處理較長上下文裡的普通資訊整理；&lt;/li&gt;
&lt;li&gt;跑大量子任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flash 便宜，速度快，而且同樣支援很長上下文。
對日常 coding agent 來說，很多任務不需要一上來就用 Pro。&lt;/p&gt;
&lt;p&gt;Pro 更適合複雜判斷和兜底任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多輪規劃；&lt;/li&gt;
&lt;li&gt;複雜 Agent 流程；&lt;/li&gt;
&lt;li&gt;多次 function call；&lt;/li&gt;
&lt;li&gt;事實核查；&lt;/li&gt;
&lt;li&gt;財經研究；&lt;/li&gt;
&lt;li&gt;需要更強知識和判斷力的內容生產；&lt;/li&gt;
&lt;li&gt;高風險程式碼修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個合理配置是：Flash 負責跑量，Pro 負責兜底。
普通任務先用 Flash，遇到長程規劃、複雜判斷、事實核查或多工具協作時再切 Pro。
這樣既能控制成本，也能保留模型品質。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-為什麼可以這麼定價&#34;&gt;DeepSeek 為什麼可以這麼定價
&lt;/h2&gt;&lt;p&gt;DeepSeek 和很多大廠的業務結構不同。
它沒有電商、社交、短影片、雲計算、手機、汽車、辦公套件、作業系統、瀏覽器或大規模企業 SaaS 生態。&lt;/p&gt;
&lt;p&gt;這意味著它不需要把使用者鎖在一個完整平台裡。
它可以只賣文字模型能力：你在這裡用便宜的文字模型，其他能力要呼叫誰都可以。&lt;/p&gt;
&lt;p&gt;大廠的邏輯通常不同。
如果你買了它的 Coding Plan 或 Token Plan，就會被拉進它的雲、搜尋、繪圖、語音、資料庫和開發工具生態。
套餐不是單純賣模型，而是在爭奪使用者入口。&lt;/p&gt;
&lt;p&gt;DeepSeek 的打法更直接：把文字模型價格壓低，爭取成為 Agent 的預設模型入口。
只要預設入口被占住，很多開發者和工具鏈就會自然圍繞它適配。&lt;/p&gt;
&lt;h2 id=&#34;開源模型和預設入口&#34;&gt;開源模型和預設入口
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 如果保持開放模型路線，第三方雲廠商和平台很可能會自行部署並提供服務。
這對 DeepSeek 來說既是傳播，也可能是分流。&lt;/p&gt;
&lt;p&gt;低價官方 API 的意義就在這裡。
如果官方價格已經足夠低，其他平台即使能部署，也很難在價格上明顯更有優勢。
使用者會傾向於直接使用預設、便宜、穩定的入口。&lt;/p&gt;
&lt;p&gt;對 Agent 工具尤其如此。
Agent 任務依賴長上下文、快取、工具呼叫和穩定吞吐。
一旦某個模型在這些場景裡成本足夠低，它就有機會成為預設選項。&lt;/p&gt;
&lt;h2 id=&#34;coding-plan-仍然不是完全沒用&#34;&gt;Coding Plan 仍然不是完全沒用
&lt;/h2&gt;&lt;p&gt;這並不意味著 Coding Plan 會馬上消失。
它仍然有適合的人群。&lt;/p&gt;
&lt;p&gt;如果某些使用者真的是高強度使用者，每天把套餐額度打滿，那麼固定訂閱可能仍然划算。
就像自助餐，如果完全沒有人能吃回本，使用者也不會願意買。&lt;/p&gt;
&lt;p&gt;但問題在於，絕大多數使用者不是這種極端高頻使用者。
低頻使用者、輕量開發者、偶爾寫腳本或改專案的人，更適合按量付費。
當 DeepSeek 把按量成本壓低後，套餐的吸引力會被削弱。&lt;/p&gt;
&lt;p&gt;未來更可能出現的是分層選擇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻重度使用者繼續買 Coding Plan；&lt;/li&gt;
&lt;li&gt;普通使用者轉向低價 API；&lt;/li&gt;
&lt;li&gt;Agent 工具根據任務自動選擇 Flash / Pro；&lt;/li&gt;
&lt;li&gt;平台套餐需要提供更多非模型價值，例如工作流、IDE 整合、部署、團隊管理和安全稽核。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 的發布並沒有靠跑分製造最大衝擊。
真正改變行業預期的是後續降價。&lt;/p&gt;
&lt;p&gt;當輸入 Token 和快取命中價格被壓到很低時，AI Agent 的使用成本會發生變化。
過去看起來昂貴的長上下文、程式碼專案分析、多輪工具呼叫，現在可能變成幾毛錢到幾塊錢的日常消耗。&lt;/p&gt;
&lt;p&gt;這會直接衝擊 Coding Plan 和 Token Plan 的商業邏輯。
如果使用者可以按量付費、自由組合模型和工具，而且成本足夠低，就不一定願意被綁定在某個平台套餐裡。&lt;/p&gt;
&lt;p&gt;DeepSeek V4 這次真正動到的，不只是模型能力排名，而是 AI Agent 的成本結構和預設入口之爭。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/quick_start/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek API Docs：Models &amp;amp; Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/api/pricing/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI API Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/about-claude/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic Claude API Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>NVIDIA 發布 Nemotron 3 Nano Omni：面向智慧體的開放全模態推理模型</title>
        <link>https://knightli.com/zh-tw/2026/05/01/nvidia-nemotron-3-nano-omni-multimodal-agents/</link>
        <pubDate>Fri, 01 May 2026 12:07:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/nvidia-nemotron-3-nano-omni-multimodal-agents/</guid>
        <description>&lt;p&gt;NVIDIA 發布了 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt;，這是一款面向智慧體工作流的開放式全模態推理模型。
它的重點不是只做文字問答，而是把語言、視覺、音訊放進同一個推理框架裡，讓模型能夠處理更接近真實工作流的輸入。&lt;/p&gt;
&lt;p&gt;從定位看，&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 更像是給 AI Agent 準備的底層模型。
它可以理解螢幕、文件、圖片、語音和影片中的資訊，並把這些資訊轉成可執行的推理結果。
這類能力適合電腦操作、文件智慧、影片理解、語音互動、客服、教育和企業流程自動化。&lt;/p&gt;
&lt;h2 id=&#34;模型規格&#34;&gt;模型規格
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 採用 MoE 架構。
NVIDIA 給出的核心規格是：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;資訊&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;模型名稱&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;架構&lt;/td&gt;
          &lt;td&gt;MoE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;參數規模&lt;/td&gt;
          &lt;td&gt;30B total / 3B active&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;模態&lt;/td&gt;
          &lt;td&gt;文字、圖像、音訊、影片&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;上下文長度&lt;/td&gt;
          &lt;td&gt;256K token&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;授權&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主要部署方向&lt;/td&gt;
          &lt;td&gt;AI Agent、多模態推理、企業智慧體&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這裡最值得注意的是 &lt;code&gt;30B-A3B&lt;/code&gt;。
它代表模型總參數規模約 30B，但每次推理只啟用約 3B 參數。
這能在能力和推理成本之間做一個折衷：模型保留較大的專家容量，同時執行時只使用其中一部分。&lt;/p&gt;
&lt;p&gt;不過，MoE 的 &lt;code&gt;active params&lt;/code&gt; 不等於顯存只按 3B 模型估算。
完整部署仍然要考慮專家權重、KV cache、視覺/音訊編碼模組、上下文長度和推理框架開銷。&lt;/p&gt;
&lt;h2 id=&#34;它解決的不是單一模態問題&#34;&gt;它解決的不是單一模態問題
&lt;/h2&gt;&lt;p&gt;傳統大語言模型主要處理文字。
多模態模型進一步支援圖片理解。
而 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的目標更寬：它強調全模態輸入，也就是把文字、圖像、音訊和影片統一納入推理。&lt;/p&gt;
&lt;p&gt;這對 Agent 很關鍵。
真正的智慧體任務往往不是「給一段文字，生成一段文字」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看螢幕上的按鈕、表格和視窗；&lt;/li&gt;
&lt;li&gt;讀 PDF、截圖、圖表和網頁；&lt;/li&gt;
&lt;li&gt;聽語音說明或會議錄音；&lt;/li&gt;
&lt;li&gt;理解影片中的動作、場景和時序；&lt;/li&gt;
&lt;li&gt;把這些資訊綜合成下一步操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果模型只能處理單一模態，Agent 就需要額外拼接多個專用模型。
全模態模型的價值在於減少這種拼接成本，讓同一個模型直接處理更複雜的環境輸入。&lt;/p&gt;
&lt;h2 id=&#34;面向電腦操作和文件智慧&#34;&gt;面向電腦操作和文件智慧
&lt;/h2&gt;&lt;p&gt;NVIDIA 特別提到，&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 可用於電腦操作相關任務。
這類任務通常要求模型理解使用者介面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;螢幕上有哪些控制項；&lt;/li&gt;
&lt;li&gt;目前視窗處於什麼狀態；&lt;/li&gt;
&lt;li&gt;哪個按鈕或選單是下一步目標；&lt;/li&gt;
&lt;li&gt;表格、彈窗、輸入框中的內容意味著什麼。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是現在 AI Agent 落地時很難繞開的能力。
如果智慧體要幫人操作辦公軟體、瀏覽器、企業後台或開發工具，它必須能看懂介面，而不是只讀 API 文件。&lt;/p&gt;
&lt;p&gt;文件智慧也是類似邏輯。
企業資料經常混合文字、表格、圖像、掃描頁和圖表。
全模態模型可以把這些內容放在同一個上下文裡理解，適合做合約審閱、報表分析、票據處理、知識庫問答和流程自動化。&lt;/p&gt;
&lt;h2 id=&#34;音訊和影片讓-agent-更接近真實場景&#34;&gt;音訊和影片讓 Agent 更接近真實場景
&lt;/h2&gt;&lt;p&gt;音訊和影片輸入會讓 Agent 的應用範圍明顯擴大。&lt;/p&gt;
&lt;p&gt;音訊場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;會議錄音總結；&lt;/li&gt;
&lt;li&gt;客服通話分析；&lt;/li&gt;
&lt;li&gt;語音指令理解；&lt;/li&gt;
&lt;li&gt;教育和培訓內容整理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;影片場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教學影片理解；&lt;/li&gt;
&lt;li&gt;安防和工業巡檢；&lt;/li&gt;
&lt;li&gt;螢幕錄製分析；&lt;/li&gt;
&lt;li&gt;操作流程複盤；&lt;/li&gt;
&lt;li&gt;多步驟任務中的時序判斷。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些任務如果只靠文字轉寫，會丟掉很多視覺和時序資訊。
全模態模型可以直接把聲音、畫面和文字線索結合起來，給 Agent 更完整的環境感知。&lt;/p&gt;
&lt;h2 id=&#34;部署與生態&#34;&gt;部署與生態
&lt;/h2&gt;&lt;p&gt;NVIDIA 將 &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 放進開放生態裡，模型採用 Apache 2.0 授權。
這對開發者和企業很重要，因為它降低了試驗、整合和二次開發的授權門檻。&lt;/p&gt;
&lt;p&gt;從 NVIDIA 的介紹看，這個模型也和其推理生態綁定緊密。
對企業使用者來說，真正部署時通常會關注這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否能在 NVIDIA GPU 上高效推理；&lt;/li&gt;
&lt;li&gt;是否支援長上下文和多模態輸入；&lt;/li&gt;
&lt;li&gt;是否能接入現有 Agent 框架；&lt;/li&gt;
&lt;li&gt;是否能處理企業內部文件、音影片和介面截圖；&lt;/li&gt;
&lt;li&gt;是否可以在私有環境裡部署。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NVIDIA 強調該模型在吞吐方面有明顯優勢，並稱其最高可達到同類開放全模態推理模型的 9 倍。
這個數字的實際價值，還要結合具體硬體、上下文長度、輸入模態和推理框架來看。
但方向很明確：NVIDIA 想把開放多模態模型和自己的推理基礎設施一起推向企業 Agent 場景。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些場景&#34;&gt;適合哪些場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 更適合下面這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要同時理解文字、圖片、音訊和影片的 Agent；&lt;/li&gt;
&lt;li&gt;企業內部文件智慧和知識庫問答；&lt;/li&gt;
&lt;li&gt;基於螢幕截圖或網頁介面的電腦操作；&lt;/li&gt;
&lt;li&gt;會議、客服、教學內容的多模態分析；&lt;/li&gt;
&lt;li&gt;影片理解、流程複盤和時序判斷；&lt;/li&gt;
&lt;li&gt;對開放授權和私有化部署有要求的團隊。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不一定適合所有普通使用者。
如果只是本地聊天、程式碼補全或簡單問答，單模態語言模型可能更輕、更快、更省資源。
&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的價值主要體現在複雜輸入和多模態 Agent 工作流裡。&lt;/p&gt;
&lt;h2 id=&#34;這對-ai-agent-意味著什麼&#34;&gt;這對 AI Agent 意味著什麼
&lt;/h2&gt;&lt;p&gt;AI Agent 要真正進入工作場景，不能只會寫文字。
它需要看得懂介面，聽得懂語音，讀得懂文件，理解影片裡的變化，還要把這些資訊轉成下一步行動。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; 的意義就在這裡。
它不是單純把模型參數做大，而是把 Agent 需要面對的多種輸入統一到一個推理模型裡。
這會讓開發者更容易構建面向真實任務的智慧體，而不是只圍繞聊天視窗做應用。&lt;/p&gt;
&lt;p&gt;從這個角度看，NVIDIA 發布這款模型的重點不只是「又一個多模態模型」，而是繼續把開放模型、GPU 推理、企業 Agent 和私有部署連接起來。
未來真正值得關注的是，它在具體 Agent 框架、企業工作流和本地部署中的實際表現。&lt;/p&gt;
&lt;p&gt;參考來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blogs.nvidia.cn/blog/nemotron-3-nano-omni-multimodal-ai-agents/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA 技術部落格：NVIDIA Nemotron 3 Nano Omni&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 Qwen3.6：27B 與 35B-A3B 各量化版本需要多少顯存</title>
        <link>https://knightli.com/zh-tw/2026/05/01/qwen3-6-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 12:02:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/qwen3-6-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;Qwen3.6 目前最適合本地部署討論的開放權重版本，主要是兩類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;：27B 稠密模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;：35B total / 3B active 的 MoE 模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;還有一些線上產品名或 API 模型名，例如 &lt;code&gt;Qwen3.6-Plus&lt;/code&gt;、&lt;code&gt;Qwen3.6-Max&lt;/code&gt;。
這類模型如果沒有公開完整權重和穩定量化檔案，就不適合列入本地顯存表。
本文只整理可以圍繞 Hugging Face 權重與 GGUF 量化檔案部署的版本。&lt;/p&gt;
&lt;p&gt;和 &lt;code&gt;/05/10&lt;/code&gt; 的 Gemma 4 表一樣，這裡也要先區分兩個概念：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF 檔案體積&lt;/strong&gt;：模型權重檔案本身有多大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;實際顯存占用&lt;/strong&gt;：模型權重、KV cache、上下文長度、執行後端、多模態模組、批次大小共同決定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qwen3.6 的預設上下文很長，官方模型卡裡寫到原生支援 &lt;code&gt;262,144&lt;/code&gt; tokens，並可擴展到 &lt;code&gt;1,010,000&lt;/code&gt; tokens。
所以表格裡的「最低顯存」只適合短上下文或中等上下文。
如果你真的要跑 128K、256K 或更長上下文，必須額外給 KV cache 留大量空間。&lt;/p&gt;
&lt;h2 id=&#34;先看結論&#34;&gt;先看結論
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;顯存&lt;/th&gt;
          &lt;th&gt;比較合適的選擇&lt;/th&gt;
          &lt;th&gt;不建議硬上&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;27B / 35B-A3B 的 2-bit 極限嘗試，品質風險較高&lt;/td&gt;
          &lt;td&gt;Q4 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;27B Q2/Q3，35B-A3B Q2/Q3 短上下文&lt;/td&gt;
          &lt;td&gt;27B Q4 長上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;27B Q3/Q4，35B-A3B Q3/IQ4_XS&lt;/td&gt;
          &lt;td&gt;35B-A3B Q4 長上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;27B Q4/Q5/Q6，35B-A3B Q4&lt;/td&gt;
          &lt;td&gt;35B-A3B Q8、BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;27B Q8，35B-A3B Q5/Q6&lt;/td&gt;
          &lt;td&gt;BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;35B-A3B Q8，27B 長上下文更從容&lt;/td&gt;
          &lt;td&gt;35B-A3B BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB+&lt;/td&gt;
          &lt;td&gt;27B / 35B-A3B BF16&lt;/td&gt;
          &lt;td&gt;沒有必要為普通本地聊天追 BF16&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你是 24GB 顯卡，重點看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B UD-Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只有 16GB 顯存，優先從低位寬版本開始，不要一上來就開超長上下文。&lt;/p&gt;
&lt;h2 id=&#34;官方權重體積&#34;&gt;官方權重體積
&lt;/h2&gt;&lt;p&gt;以下是官方 Hugging Face 倉庫中 &lt;code&gt;model.safetensors.index.json&lt;/code&gt; 統計到的 BF16 權重體積。
它可以作為原始權重規模參考。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;架構&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;官方 BF16 權重體積&lt;/th&gt;
          &lt;th&gt;官方上下文&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;27B dense&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55.56GB&lt;/td&gt;
          &lt;td&gt;262K 原生，可擴展到 1,010K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;35B total / 3B active MoE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.90GB&lt;/td&gt;
          &lt;td&gt;262K 原生，可擴展到 1,010K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;35B-A3B&lt;/code&gt; 雖然每次只啟用約 3B 參數，但它仍然需要載入完整 MoE 權重。
所以它不能按 3B 小模型來估算顯存。&lt;/p&gt;
&lt;h2 id=&#34;qwen36-27b-顯存表&#34;&gt;Qwen3.6-27B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt; 是稠密模型，優點是能力穩定，缺點是推理成本更接近傳統 27B 模型。
從本地部署角度看，它比 35B-A3B 更吃計算，但顯存需求更容易預估。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.39GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;極限低顯存嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.85GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低顯存可用性優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.85GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低位寬折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ3_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.99GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;省顯存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;3-bit 入門&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.59GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.44GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的省顯存選擇&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_NL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.07GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.82GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;27B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19.51GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更穩的高品質量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.52GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;品質優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td&gt;研究、評測、精度對比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是普通本地編碼和聊天，&lt;code&gt;Q4_K_M&lt;/code&gt; 是最容易推薦的起點。
24GB 顯卡可以比較舒服地跑 &lt;code&gt;Q4_K_M&lt;/code&gt;，但如果要長上下文，最好降低量化位寬或減少上下文長度。&lt;/p&gt;
&lt;h2 id=&#34;qwen36-35b-a3b-顯存表&#34;&gt;Qwen3.6-35B-A3B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt; 是 MoE 模型，35B total，但每次啟用約 3B 參數。
它的優勢是速度和能力之間的平衡很好，尤其適合本地 Agent、工具呼叫、程式碼協作。&lt;/p&gt;
&lt;p&gt;但要注意：MoE 的 &lt;code&gt;3B active&lt;/code&gt; 主要影響計算量，不代表顯存只需要 3B 模型級別。
完整執行仍要載入專家權重。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.76GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;極限低顯存嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.52GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低顯存可用性優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.29GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低位寬折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ3_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.21GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;省顯存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 入門&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;17.73GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_NL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.04GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的推薦選擇&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.13GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;35B-A3B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.46GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;更穩的高品質量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.31GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td&gt;品質優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.90GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.37GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;研究、評測、精度對比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;24GB 顯存可以把 &lt;code&gt;UD-Q4_K_M&lt;/code&gt; 作為重點選擇，但上下文不要開得太誇張。
如果想給 128K 以上上下文留空間，&lt;code&gt;UD-IQ4_XS&lt;/code&gt;、&lt;code&gt;UD-IQ4_NL&lt;/code&gt; 或 3-bit 版本會更現實。&lt;/p&gt;
&lt;h2 id=&#34;27b-和-35b-a3b-怎麼選&#34;&gt;27B 和 35B-A3B 怎麼選
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;需求&lt;/th&gt;
          &lt;th&gt;更推薦&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;穩定稠密模型表現&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;更快響應、Agent 和工具呼叫&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB 顯存日常本地用&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt; 或 &lt;code&gt;27B Q4_K_M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB 顯存嘗試&lt;/td&gt;
          &lt;td&gt;兩者都選 2-bit/3-bit，不建議長上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;長上下文優先&lt;/td&gt;
          &lt;td&gt;降低量化位寬，留更多 KV cache 空間&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;品質優先且有 32GB+ 顯存&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;27B Q5/Q6&lt;/code&gt; 或 &lt;code&gt;35B-A3B Q5/Q6&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你主要寫程式碼、跑 Agent、做工具呼叫，&lt;code&gt;35B-A3B&lt;/code&gt; 更值得先試。
如果你更在意稠密模型的穩定性和一致性，&lt;code&gt;27B&lt;/code&gt; 更直觀。&lt;/p&gt;
&lt;h2 id=&#34;為什麼長上下文會吃掉大量顯存&#34;&gt;為什麼長上下文會吃掉大量顯存
&lt;/h2&gt;&lt;p&gt;Qwen3.6 的模型卡建議在複雜任務中保持較長上下文，甚至提到 128K 以上上下文對思考能力有幫助。
但對本地部署來說，長上下文意味著更大的 &lt;code&gt;KV cache&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;影響實際顯存的因素包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;：上下文越長，占用越高。&lt;/li&gt;
&lt;li&gt;是否啟用視覺輸入：Qwen3.6 是帶視覺編碼器的模型，多模態場景會增加額外開銷。&lt;/li&gt;
&lt;li&gt;是否使用 &lt;code&gt;--language-model-only&lt;/code&gt;：在 vLLM 等執行時裡，跳過視覺部分可以釋放一部分記憶體給 KV cache。&lt;/li&gt;
&lt;li&gt;批次大小和並發：並發越高，顯存需求越高。&lt;/li&gt;
&lt;li&gt;KV cache 量化：&lt;code&gt;q8_0&lt;/code&gt;、&lt;code&gt;q4_0&lt;/code&gt; 等設定可以省顯存，但可能影響細節。&lt;/li&gt;
&lt;li&gt;執行時差異：llama.cpp、vLLM、SGLang、KTransformers、LM Studio 的占用不完全一樣。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以不要只看 GGUF 檔案大小。
如果檔案已經接近顯存上限，模型即使能載入，也可能在生成長文字或長上下文時 OOM。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;如果你只是想本地體驗 Qwen3.6：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12GB 顯存：嘗試 &lt;code&gt;27B UD-IQ2_M&lt;/code&gt; 或 &lt;code&gt;35B-A3B UD-IQ2_M&lt;/code&gt;，上下文要短。&lt;/li&gt;
&lt;li&gt;16GB 顯存：嘗試 &lt;code&gt;27B Q3_K_M&lt;/code&gt; 或 &lt;code&gt;35B-A3B UD-IQ3_XXS&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;24GB 顯存：優先看 &lt;code&gt;27B Q4_K_M&lt;/code&gt;、&lt;code&gt;35B-A3B UD-IQ4_NL&lt;/code&gt;、&lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;32GB 顯存：可以考慮 &lt;code&gt;27B Q5/Q6&lt;/code&gt; 或 &lt;code&gt;35B-A3B Q5/Q6&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;48GB 以上：可以嘗試 &lt;code&gt;Q8_0&lt;/code&gt;，或者給長上下文留更多空間。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般使用者不需要追 BF16。
Qwen3.6 的本地部署重點不是「檔案越大越好」，而是在顯存、上下文長度、速度和輸出品質之間找到平衡。&lt;/p&gt;
&lt;h2 id=&#34;參考來源&#34;&gt;參考來源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-27B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-27B - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-35B-A3B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-35B-A3B - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-27B-FP8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-27B-FP8 - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/Qwen/Qwen3.6-35B-A3B-FP8&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen/Qwen3.6-35B-A3B-FP8 - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-27B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-27B-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/Qwen3.6-35B-A3B-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 DeepSeek V4：Pro、Flash 與 Base 版本顯存占用估算表</title>
        <link>https://knightli.com/zh-tw/2026/05/01/deepseek-v4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:55:25 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/deepseek-v4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;DeepSeek V4 和 Gemma 4 的本地部署不是一個量級。
Gemma 4 的 26B、31B 還能討論 24GB、32GB 顯卡怎麼選量化版；DeepSeek V4 則是超大 MoE 模型，真正完整本地部署時，顯存需求會直接進入多卡工作站或伺服器級別。&lt;/p&gt;
&lt;p&gt;官方發布的 DeepSeek V4 Preview 主要包含兩個推理版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;：&lt;code&gt;1.6T total / 49B active params&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;：&lt;code&gt;284B total / 13B active params&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugging Face 官方 collection 裡還包含兩個 Base 版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash-Base&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這篇只討論&lt;strong&gt;完整載入模型權重&lt;/strong&gt;時的大致顯存門檻。
MoE 的 &lt;code&gt;active params&lt;/code&gt; 主要影響每個 token 的計算量，不等於只需要載入這部分參數。
如果沒有專家按需載入、CPU/NVMe offload、分散式推理或專門執行時最佳化，顯存仍然要按完整權重來估。&lt;/p&gt;
&lt;h2 id=&#34;先看結論&#34;&gt;先看結論
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;顯存規模&lt;/th&gt;
          &lt;th&gt;能比較現實地嘗試什麼&lt;/th&gt;
          &lt;th&gt;不建議期待什麼&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;不能完整跑 DeepSeek V4；只能跑小型蒸餾模型或 API&lt;/td&gt;
          &lt;td&gt;V4-Flash / V4-Pro 完整本地載入&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;仍不適合完整載入；可做小模型或遠端 API 用戶端&lt;/td&gt;
          &lt;td&gt;V4-Flash Q4 穩定執行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB&lt;/td&gt;
          &lt;td&gt;理論上可嘗試 V4-Flash Q2/Q3 或強 offload&lt;/td&gt;
          &lt;td&gt;V4-Pro&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;128GB&lt;/td&gt;
          &lt;td&gt;V4-Flash Q4 比較現實；Q5/Q6 仍緊&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;192GB&lt;/td&gt;
          &lt;td&gt;V4-Flash FP8/Q6 更從容；Pro Q2 勉強進入討論&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;256GB&lt;/td&gt;
          &lt;td&gt;V4-Flash FP8 比較穩；Pro Q2/Q3 可實驗&lt;/td&gt;
          &lt;td&gt;V4-Pro Q5 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;512GB&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4 開始進入可討論範圍&lt;/td&gt;
          &lt;td&gt;V4-Pro FP8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1TB+&lt;/td&gt;
          &lt;td&gt;V4-Pro FP8、Pro-Base 低位寬更現實&lt;/td&gt;
          &lt;td&gt;單機低成本部署&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2TB+&lt;/td&gt;
          &lt;td&gt;Pro-Base FP8 級別&lt;/td&gt;
          &lt;td&gt;普通工作站部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目標是個人電腦本地執行，DeepSeek V4 並不是合適對象。
更現實的路線是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 DeepSeek 官方 API 或相容服務；&lt;/li&gt;
&lt;li&gt;等社群穩定的 GGUF/EXL2/MLX 量化和推理支援；&lt;/li&gt;
&lt;li&gt;使用更小的 DeepSeek 蒸餾模型；&lt;/li&gt;
&lt;li&gt;或者把本地模型換成 Qwen、Gemma、Llama 等 7B 到 70B 級別模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;官方權重體積&#34;&gt;官方權重體積
&lt;/h2&gt;&lt;p&gt;以下是 Hugging Face 官方倉庫的 &lt;code&gt;model.safetensors.index.json&lt;/code&gt; 中統計到的權重總量。
它反映的是目前公開權重檔案大小，不等於長上下文執行時的完整顯存占用。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;參數規模&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;官方權重體積&lt;/th&gt;
          &lt;th&gt;說明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;284B total / 13B active&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;159.61GB&lt;/td&gt;
          &lt;td&gt;推理版，體積相對最小&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1.6T total / 49B active&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;864.70GB&lt;/td&gt;
          &lt;td&gt;推理版，能力更強，體積巨大&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Flash-Base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;284B total&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;294.67GB&lt;/td&gt;
          &lt;td&gt;Base 版，更接近全量 FP8 權重體積&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;DeepSeek-V4-Pro-Base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;1.6T total&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1606.03GB&lt;/td&gt;
          &lt;td&gt;Base 版，約 1.6TB 級別&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以看到，即使是最小的 &lt;code&gt;V4-Flash&lt;/code&gt;，官方權重也已經接近 160GB。
這就是為什麼它不能按「13B active params」理解成 13B 小模型。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-顯存估算&#34;&gt;DeepSeek V4 Flash 顯存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Flash&lt;/code&gt; 是 DeepSeek V4 裡最適合本地嘗試的一檔。
但「最適合」只是相對 Pro 而言，它仍然不是消費級單卡模型。&lt;/p&gt;
&lt;p&gt;下面按官方 159.61GB 權重體積做折算。
其中 Q4/Q3/Q2 是按位寬估算，不代表目前已經有穩定可用的官方 GGUF 版本。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算權重體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方權重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;159.61GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td&gt;多卡伺服器、推理服務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;120GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td&gt;品質優先的量化嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td&gt;Flash 本地化較現實的起點&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;大顯存單卡或多卡實驗&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td&gt;極限低位寬實驗，品質風險明顯&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果未來社群出現成熟的 &lt;code&gt;V4-Flash Q4&lt;/code&gt;，它大機率也不是 24GB 顯卡的模型。
更現實的硬體起點是 96GB 到 128GB 級別的總顯存，或者依賴 CPU 記憶體/offload 換速度。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-顯存估算&#34;&gt;DeepSeek V4 Pro 顯存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro&lt;/code&gt; 是旗艦推理版，官方權重體積約 864.70GB。
即使做 4-bit 量化，完整權重也仍然是數百 GB 級別。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算權重體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方權重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;864.70GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB+&lt;/td&gt;
          &lt;td&gt;多機多卡推理服務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;648GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td&gt;高品質量化服務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;540GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td&gt;高品質與成本折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;432GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td&gt;Pro 本地化較現實的最低品質線&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;324GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td&gt;低位寬實驗&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;216GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320GB&lt;/td&gt;
          &lt;td&gt;極限實驗，品質和穩定性風險高&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;對個人使用者來說，&lt;code&gt;V4-Pro&lt;/code&gt; 更適合透過 API 使用。
如果目標是完整本地部署，至少要把它當成多卡伺服器模型，而不是 4090、5090、RTX PRO 單卡模型。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-base-顯存估算&#34;&gt;DeepSeek V4 Flash-Base 顯存估算
&lt;/h2&gt;&lt;p&gt;Base 版通常用於研究、微調或繼續訓練，不是普通聊天部署的首選。
&lt;code&gt;V4-Flash-Base&lt;/code&gt; 官方權重體積約 294.67GB。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算權重體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方權重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;294.67GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td&gt;研究、訓練前處理、評測&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;221GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320GB&lt;/td&gt;
          &lt;td&gt;高品質量化研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;184GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;224GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;256GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;224GB&lt;/td&gt;
          &lt;td&gt;Base 版低成本實驗&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;111GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160GB&lt;/td&gt;
          &lt;td&gt;低位寬實驗&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128GB&lt;/td&gt;
          &lt;td&gt;極限實驗&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是要使用 DeepSeek V4 能力，不建議從 Base 版開始。
Base 版的部署和調優成本更高，普通應用更適合推理版或 API。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-base-顯存估算&#34;&gt;DeepSeek V4 Pro-Base 顯存估算
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro-Base&lt;/code&gt; 是最重的一檔，官方權重體積約 1606.03GB。
這已經是 1.6TB 級別的模型檔案。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;版本/量化&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;估算權重體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / 官方權重&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1606.03GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.4TB+&lt;/td&gt;
          &lt;td&gt;大規模研究叢集&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1205GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.5TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2TB&lt;/td&gt;
          &lt;td&gt;高品質量化研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1004GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.5TB&lt;/td&gt;
          &lt;td&gt;研究與評測&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;803GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.2TB&lt;/td&gt;
          &lt;td&gt;低位寬研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;602GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;768GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1TB&lt;/td&gt;
          &lt;td&gt;極限低位寬研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;402GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;512GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;640GB&lt;/td&gt;
          &lt;td&gt;極限實驗&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;這類模型不適合被放進「家用顯卡能不能跑」的框架裡討論。
哪怕是 Q4，也已經超過絕大多數單機工作站的舒適範圍。&lt;/p&gt;
&lt;h2 id=&#34;為什麼不能只看-active-params&#34;&gt;為什麼不能只看 active params
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 是 MoE 模型。
MoE 的特點是每個 token 只啟用一部分專家，因此計算量會明顯低於總參數量。
但這不等於顯存只需要放 active params。&lt;/p&gt;
&lt;p&gt;完整本地推理通常還要考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有專家權重是否需要常駐 GPU；&lt;/li&gt;
&lt;li&gt;是否支援按需專家載入；&lt;/li&gt;
&lt;li&gt;CPU 記憶體與 GPU 顯存之間的資料搬運成本；&lt;/li&gt;
&lt;li&gt;NVMe offload 的延遲；&lt;/li&gt;
&lt;li&gt;KV cache 在長上下文下的增長；&lt;/li&gt;
&lt;li&gt;1M context 場景下的額外執行時開銷；&lt;/li&gt;
&lt;li&gt;多機多卡通訊成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，&lt;code&gt;49B active&lt;/code&gt; 的 &lt;code&gt;V4-Pro&lt;/code&gt; 不能當成 49B 模型來部署。
&lt;code&gt;13B active&lt;/code&gt; 的 &lt;code&gt;V4-Flash&lt;/code&gt; 也不能當成 13B 小模型來部署。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;如果你只是普通個人使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不建議完整本地部署 DeepSeek V4。&lt;/li&gt;
&lt;li&gt;需要 DeepSeek V4 能力時，優先用官方 API。&lt;/li&gt;
&lt;li&gt;需要本地私有化時，優先看是否有成熟推理服務商或內部多卡伺服器。&lt;/li&gt;
&lt;li&gt;只有 24GB 到 48GB 顯存時，轉向 7B、14B、32B、70B 級別量化模型更實際。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有 128GB 到 256GB 總顯存：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以關注 &lt;code&gt;V4-Flash Q4/Q5&lt;/code&gt; 是否有穩定社群實作。&lt;/li&gt;
&lt;li&gt;不建議把 &lt;code&gt;V4-Pro&lt;/code&gt; 當成主力本地模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有 512GB 以上總顯存：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro Q4&lt;/code&gt; 才開始進入工程驗證範圍。&lt;/li&gt;
&lt;li&gt;仍然要關注推理框架、專家調度、KV cache、吞吐和並發。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek V4 的本地部署重點不是「下載哪個量化檔案」，而是「有沒有足夠的系統級推理能力」。
它更接近一個伺服器模型，而不是普通桌面模型。&lt;/p&gt;
&lt;h2 id=&#34;參考來源&#34;&gt;參考來源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release - DeepSeek API Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/deepseek-ai/deepseek-v4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-V4 collection - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Pro - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Flash - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro-Base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Pro-Base - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Base&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deepseek-ai/DeepSeek-V4-Flash-Base - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>本地部署 Gemma 4：E2B、E4B、26B、31B 各量化版本需要多少顯存</title>
        <link>https://knightli.com/zh-tw/2026/05/01/gemma-4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:42:34 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/gemma-4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;Gemma 4 現在主要有四個本地部署尺寸：&lt;code&gt;E2B&lt;/code&gt;、&lt;code&gt;E4B&lt;/code&gt;、&lt;code&gt;26B A4B&lt;/code&gt; 和 &lt;code&gt;31B&lt;/code&gt;。
其中 &lt;code&gt;E2B&lt;/code&gt;、&lt;code&gt;E4B&lt;/code&gt; 面向輕量和邊緣裝置，&lt;code&gt;26B A4B&lt;/code&gt; 是 MoE 架構，&lt;code&gt;31B&lt;/code&gt; 是更大的稠密模型。&lt;/p&gt;
&lt;p&gt;本地執行時，最容易混淆的是兩個數字：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF 檔案體積&lt;/strong&gt;：模型權重檔案本身有多大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;實際顯存占用&lt;/strong&gt;：模型權重、KV cache、執行時開銷、上下文長度、是否載入多模態投影檔共同決定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面的表格按 GGUF 檔案體積估算顯存需求。
預設假設是 &lt;code&gt;llama.cpp&lt;/code&gt;、LM Studio、Ollama 這類本地推理場景，主要跑文字，使用中短上下文。
如果要開長上下文、視覺/音訊輸入、並發請求，顯存要繼續往上留餘量。&lt;/p&gt;
&lt;h2 id=&#34;先看結論&#34;&gt;先看結論
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;顯存&lt;/th&gt;
          &lt;th&gt;比較合適的選擇&lt;/th&gt;
          &lt;th&gt;不建議硬上&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;4GB&lt;/td&gt;
          &lt;td&gt;E2B 的低位元量化&lt;/td&gt;
          &lt;td&gt;E4B 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6GB&lt;/td&gt;
          &lt;td&gt;E2B Q4/Q5，E4B 低位元量化&lt;/td&gt;
          &lt;td&gt;26B、31B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8GB&lt;/td&gt;
          &lt;td&gt;E2B Q8，E4B Q4/Q5&lt;/td&gt;
          &lt;td&gt;26B Q4、31B Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12GB&lt;/td&gt;
          &lt;td&gt;E4B Q8，26B/31B 的 2-bit/3-bit 低品質嘗試&lt;/td&gt;
          &lt;td&gt;26B Q4 長上下文、31B Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;26B 低位元量化，31B 低位元量化&lt;/td&gt;
          &lt;td&gt;31B Q4 長上下文、26B Q5 以上&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24GB&lt;/td&gt;
          &lt;td&gt;26B Q4/Q5，31B Q4&lt;/td&gt;
          &lt;td&gt;31B Q8、BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32GB&lt;/td&gt;
          &lt;td&gt;26B Q6/Q8，31B Q5/Q6&lt;/td&gt;
          &lt;td&gt;BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;31B Q8 更從容，26B Q8 長上下文&lt;/td&gt;
          &lt;td&gt;31B BF16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB+&lt;/td&gt;
          &lt;td&gt;26B/31B BF16&lt;/td&gt;
          &lt;td&gt;普通消費卡單卡部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果只是想本地可用，優先從 &lt;code&gt;E4B Q4_K_M&lt;/code&gt; 或 &lt;code&gt;E2B Q4_K_M&lt;/code&gt; 開始。
如果有 24GB 顯存，&lt;code&gt;26B A4B Q4_K_M&lt;/code&gt; 和 &lt;code&gt;31B Q4_K_M&lt;/code&gt; 才開始進入比較舒服的範圍。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e2b-顯存表&#34;&gt;Gemma 4 E2B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E2B&lt;/code&gt; 是最輕量的版本，適合筆電、迷你主機、行動端和低顯存測試。
它的優勢是容易跑，缺點是複雜推理、程式碼和長任務穩定性有限。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.29GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;極限低顯存測試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;低顯存可用性優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.54GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td&gt;輕量聊天、摘要&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.98GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.11GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;E2B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.36GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;比 Q4 更穩一點&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.50GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;小模型高品質量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.05GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;接近原始精度的輕量部署&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.31GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;除錯、對比、研究&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;E2B 的 &lt;code&gt;Q4_K_M&lt;/code&gt; 已經夠日常體驗。
如果只有 4GB 顯存，可以嘗試 2-bit 或 3-bit，但輸出品質會更容易波動。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e4b-顯存表&#34;&gt;Gemma 4 E4B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E4B&lt;/code&gt; 是更實用的輕量版本。
它比 E2B 更適合日常寫作、資料總結、輕量程式碼輔助和本地助手。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;低顯存嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td&gt;低顯存可用性優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.06GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td&gt;輕量本地助手&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.72GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;品質和速度折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.98GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;E4B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.48GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td&gt;更穩的日常使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7.07GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;品質優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.19GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;15.05GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;研究、評測、精度對比&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的顯卡是 8GB，&lt;code&gt;E4B Q4_K_M&lt;/code&gt; 是很現實的起點。
如果是 12GB 或 16GB，&lt;code&gt;E4B Q8_0&lt;/code&gt; 也可以考慮。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-26b-a4b-顯存表&#34;&gt;Gemma 4 26B A4B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;26B A4B&lt;/code&gt; 是 MoE 版本，參數規模更大，但每次推理只啟用其中一部分專家。
它適合更複雜的問答、程式碼、工具呼叫和 Agent 工作流。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.97GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;16GB 顯卡極限嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.55GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;低顯存跑 26B&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;品質略好，仍偏省顯存&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.42GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;品質和體積折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.87GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;26B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.15GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更穩的高品質量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.17GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;品質優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.86GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.51GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td&gt;單卡消費級不現實&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;24GB 顯存是 26B A4B 比較舒服的分界線。
16GB 顯卡可以嘗試低位元版本，但上下文長度、並發和多模態都要收斂。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-31b-顯存表&#34;&gt;Gemma 4 31B 顯存表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; 是更大的稠密模型。
它的優點是綜合能力更強，缺點是顯存壓力比 26B A4B 更直接。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF 檔案體積&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;最低顯存&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;更穩妥顯存&lt;/th&gt;
          &lt;th&gt;適合場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_XXS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.53GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td&gt;極限低顯存嘗試，品質犧牲明顯&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-IQ2_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.75GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18GB&lt;/td&gt;
          &lt;td&gt;低顯存嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;UD-Q2_K_XL&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11.77GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td&gt;16GB 顯卡可嘗試&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.21GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;更省顯存的 3-bit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14.74GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;3-bit 常用折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;IQ4_XS&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.37GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td&gt;接近 Q4 的折中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;24GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;31B 常用推薦&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.66GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td&gt;更穩的高品質量化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q6_K&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.20GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td&gt;品質優先&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;32.64GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;40GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48GB&lt;/td&gt;
          &lt;td&gt;接近原始精度&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;BF16&lt;/code&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.41GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80GB&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96GB&lt;/td&gt;
          &lt;td&gt;伺服器或大顯存工作站&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;31B 的低位元版本可以在 16GB 顯卡上做實驗，但如果想日常使用，最好從 24GB 顯存起步。
&lt;code&gt;Q4_K_M&lt;/code&gt; 是比較平衡的選擇，&lt;code&gt;Q5_K_M&lt;/code&gt; 往上更適合 32GB 以上顯存。&lt;/p&gt;
&lt;h2 id=&#34;為什麼實際占用會比檔案體積更高&#34;&gt;為什麼實際占用會比檔案體積更高
&lt;/h2&gt;&lt;p&gt;GGUF 檔案體積只是權重大小。
真正執行時還會增加這些開銷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;：上下文越長，占用越高。&lt;/li&gt;
&lt;li&gt;批次大小和並發：一次處理更多 token 或多使用者並發，會增加顯存。&lt;/li&gt;
&lt;li&gt;多模態組件：圖片、音訊、影片輸入通常還要載入 &lt;code&gt;mmproj&lt;/code&gt; 或額外處理模組。&lt;/li&gt;
&lt;li&gt;執行時後端：CUDA、Metal、ROCm、CPU/GPU 分層載入的占用不同。&lt;/li&gt;
&lt;li&gt;KV cache 量化：開啟 &lt;code&gt;q8_0&lt;/code&gt;、&lt;code&gt;q4_0&lt;/code&gt; 等 KV cache 量化可以省顯存，但可能影響細節。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以表格裡的「最低顯存」只能理解為「能啟動並短上下文執行」的門檻。
如果你要 32K、64K、128K 甚至 256K 上下文，顯存需求會明顯增加。&lt;/p&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;如果只是想在本地體驗 Gemma 4：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4GB 到 6GB 顯存：選 &lt;code&gt;E2B Q3_K_M&lt;/code&gt; 或 &lt;code&gt;E2B Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;8GB 顯存：優先選 &lt;code&gt;E4B Q4_K_M&lt;/code&gt;，也可以跑 &lt;code&gt;E2B Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;12GB 顯存：選 &lt;code&gt;E4B Q8_0&lt;/code&gt;，或者嘗試 26B/31B 的低位元版本。&lt;/li&gt;
&lt;li&gt;16GB 顯存：可以嘗試 &lt;code&gt;26B A4B UD-Q3_K_M&lt;/code&gt; 或 &lt;code&gt;31B Q3_K_S&lt;/code&gt;，但不要期待長上下文很舒服。&lt;/li&gt;
&lt;li&gt;24GB 顯存：&lt;code&gt;26B A4B UD-Q4_K_M&lt;/code&gt; 和 &lt;code&gt;31B Q4_K_M&lt;/code&gt; 是重點選擇。&lt;/li&gt;
&lt;li&gt;32GB 以上：可以考慮 &lt;code&gt;Q5_K_M&lt;/code&gt;、&lt;code&gt;Q6_K&lt;/code&gt;，或者更長上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般使用者不需要追 BF16。
本地部署的重點不是檔案越大越好，而是在顯存、速度、上下文和輸出品質之間找到平衡。&lt;/p&gt;
&lt;h2 id=&#34;參考來源&#34;&gt;參考來源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E2B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E2B-it - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B-it - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/ggml-org/gemma-4-26B-A4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggml-org/gemma-4-26B-A4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-E2B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-E2B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-E4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-26B-A4B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/unsloth/gemma-4-31B-it-GGUF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;unsloth/gemma-4-31B-it-GGUF - Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 推出 Advanced Account Security：ChatGPT 和 Codex 帳號多了一層高強度保護</title>
        <link>https://knightli.com/zh-tw/2026/05/01/openai-advanced-account-security/</link>
        <pubDate>Fri, 01 May 2026 06:15:29 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/openai-advanced-account-security/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 30 日推出了 &lt;code&gt;Advanced Account Security&lt;/code&gt;，這是面向 ChatGPT 帳號的可選進階安全設定。&lt;/p&gt;
&lt;p&gt;它主要服務兩類使用者：一類是記者、民選官員、政治異議人士、研究人員等更容易遭遇定向攻擊的人；另一類是希望給 ChatGPT 和 Codex 帳號加上更強保護的安全敏感使用者。&lt;/p&gt;
&lt;p&gt;這項功能開啟後，不只保護 ChatGPT，也會保護同一登入帳號下存取的 Codex。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-chatgpt-帳號需要更高安全等級&#34;&gt;為什麼 ChatGPT 帳號需要更高安全等級
&lt;/h2&gt;&lt;p&gt;現在很多人會把 ChatGPT 用在越來越私密、越來越高風險的工作裡。&lt;/p&gt;
&lt;p&gt;一個 ChatGPT 帳號裡可能包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;個人問題和長期對話&lt;/li&gt;
&lt;li&gt;工作文件與專案上下文&lt;/li&gt;
&lt;li&gt;已連接工具和工作流程&lt;/li&gt;
&lt;li&gt;Codex 裡的程式碼與開發任務&lt;/li&gt;
&lt;li&gt;企業、研究或安全相關材料&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果帳號被接管，損失不只是聊天記錄外洩。攻擊者還可能存取連接的工具、查看敏感上下文，甚至干擾使用者正在進行的工作。&lt;/p&gt;
&lt;p&gt;所以 OpenAI 這次推出的不是一個普通登入選項，而是一組更嚴格的帳號保護措施。&lt;/p&gt;
&lt;h2 id=&#34;advanced-account-security-包含哪些保護&#34;&gt;Advanced Account Security 包含哪些保護
&lt;/h2&gt;&lt;p&gt;OpenAI 把這項能力放在 ChatGPT 網頁端帳號的 Security 設定裡，使用者可以主動開啟。&lt;/p&gt;
&lt;p&gt;開啟後，它會從幾個方面提高帳號安全性。&lt;/p&gt;
&lt;p&gt;第一，登入方式更強。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; 要求使用 &lt;code&gt;passkeys&lt;/code&gt; 或實體安全金鑰，並禁用基於密碼的登入。這樣做的目的，是讓更抗釣魚的登入方式成為預設選擇。&lt;/p&gt;
&lt;p&gt;第二，帳號恢復更嚴格。&lt;/p&gt;
&lt;p&gt;傳統帳號恢復經常依賴信箱或簡訊。如果攻擊者控制了使用者的信箱或手機號碼，就可能藉此重設帳號。為降低這個風險，Advanced Account Security 會禁用郵件和 SMS 恢復，改用更強的恢復方式，例如備用 passkeys、安全金鑰和恢復金鑰。&lt;/p&gt;
&lt;p&gt;這裡有一個重要代價：開啟後，帳號恢復會更依賴使用者自己保管這些恢復方式。OpenAI 明確說明，已開啟該功能的使用者如果遺失恢復手段，OpenAI Support 無法協助恢復帳號。&lt;/p&gt;
&lt;p&gt;第三，工作階段時間更短，管理更清楚。&lt;/p&gt;
&lt;p&gt;OpenAI 會縮短登入工作階段，以降低裝置或活躍工作階段被盜用後的暴露窗口。使用者也會收到登入提醒，並可以查看和管理目前登入的裝置工作階段。&lt;/p&gt;
&lt;p&gt;第四，自動排除訓練。&lt;/p&gt;
&lt;p&gt;對處理敏感資訊的人來說，不讓對話用於模型訓練是一項重要隱私設定。開啟 Advanced Account Security 後，這個偏好會自動生效：這些帳號的對話不會用於訓練 OpenAI 模型。&lt;/p&gt;
&lt;h2 id=&#34;與-yubico-合作推廣實體安全金鑰&#34;&gt;與 Yubico 合作推廣實體安全金鑰
&lt;/h2&gt;&lt;p&gt;OpenAI 還宣布與 Yubico 合作，給使用者提供定製的安全金鑰組合。&lt;/p&gt;
&lt;p&gt;其中包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;YubiKey C Nano&lt;/code&gt;：適合長期插在筆電上，日常登入摩擦更小&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YubiKey C NFC&lt;/code&gt;：適合作為備用，也方便在筆電和行動裝置之間使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI 表示，使用者也可以使用其他符合 FIDO 標準的實體安全金鑰，或者使用軟體 passkeys。&lt;/p&gt;
&lt;p&gt;這說明 Advanced Account Security 並不綁定某一種硬體，而是圍繞抗釣魚認證方式設計。&lt;/p&gt;
&lt;h2 id=&#34;cyber-可信存取使用者會被要求開啟&#34;&gt;Cyber 可信存取使用者會被要求開啟
&lt;/h2&gt;&lt;p&gt;OpenAI 還提到，針對 &lt;code&gt;Trusted Access for Cyber&lt;/code&gt; 的個人成員，如果他們要存取更強、更寬鬆的網路安全模型，從 2026 年 6 月 1 日開始將被要求開啟 Advanced Account Security。&lt;/p&gt;
&lt;p&gt;組織使用者可以用另一種方式滿足要求：證明自己的單一登入流程已經採用抗釣魚認證。&lt;/p&gt;
&lt;p&gt;這個安排很合理。越強的模型能力越需要更強的帳號保護，尤其是面向網路安全研究、漏洞分析和紅隊等場景時，帳號本身就會成為高價值目標。&lt;/p&gt;
&lt;h2 id=&#34;適合誰開啟&#34;&gt;適合誰開啟
&lt;/h2&gt;&lt;p&gt;這項功能不一定適合所有人。&lt;/p&gt;
&lt;p&gt;如果只是普通聊天，且不想承擔更嚴格帳號恢復帶來的複雜性，可以先觀望。&lt;/p&gt;
&lt;p&gt;但以下使用者值得認真考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;經常在 ChatGPT 中處理敏感工作材料的人&lt;/li&gt;
&lt;li&gt;使用 Codex 處理私有程式碼倉庫的人&lt;/li&gt;
&lt;li&gt;記者、公共事務人員、研究人員、企業高階主管等高風險使用者&lt;/li&gt;
&lt;li&gt;網路安全從業者&lt;/li&gt;
&lt;li&gt;已經習慣使用 passkeys 或實體安全金鑰的人&lt;/li&gt;
&lt;li&gt;對帳號被釣魚、簡訊劫持或信箱接管特別敏感的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;開啟之前，最好先準備好備用 passkey、安全金鑰和恢復金鑰，並確認它們被妥善保存。否則，安全性提高的同時，帳號恢復難度也會明顯提高。&lt;/p&gt;
&lt;h2 id=&#34;這對-ai-產品意味著什麼&#34;&gt;這對 AI 產品意味著什麼
&lt;/h2&gt;&lt;p&gt;Advanced Account Security 不是一個模型能力更新，但它反映了 AI 產品正在進入更高風險的使用階段。&lt;/p&gt;
&lt;p&gt;當 ChatGPT 和 Codex 開始承載工作流程、程式碼、文件、企業連接器和長期上下文時，帳號就不再只是「登入聊天工具」的入口，而是 AI 工作環境的鑰匙。&lt;/p&gt;
&lt;p&gt;這類產品越像個人工作台，帳號安全、恢復機制、工作階段管理和訓練資料控制就越重要。&lt;/p&gt;
&lt;p&gt;OpenAI 這次把 passkeys、實體安全金鑰、恢復限制、工作階段管理和訓練排除放到同一個設定裡，方向是對的。它讓高風險使用者可以用一個明確入口，把帳號保護提升到更適合敏感工作的級別。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; 可以理解為 ChatGPT 和 Codex 的高安全模式。&lt;/p&gt;
&lt;p&gt;它透過更強登入、更嚴格恢復、更短工作階段、登入提醒和自動排除訓練，降低帳號被接管後的風險。代價是使用者需要更認真地管理自己的恢復方式，因為開啟後傳統郵件和簡訊恢復不再可用，OpenAI Support 也無法替使用者兜底。&lt;/p&gt;
&lt;p&gt;如果你已經把 ChatGPT 或 Codex 用在重要工作裡，尤其是涉及私有程式碼、敏感文件或高風險身份，這項功能值得關注。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/advanced-account-security/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing Advanced Account Security - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini 進入 Google built-in 汽車：車載語音助理開始變得更像真正的 AI 助理</title>
        <link>https://knightli.com/zh-tw/2026/05/01/gemini-cars-with-google-built-in/</link>
        <pubDate>Fri, 01 May 2026 06:09:57 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/gemini-cars-with-google-built-in/</guid>
        <description>&lt;p&gt;Google 在 2026 年 4 月 30 日宣布，&lt;code&gt;Gemini&lt;/code&gt; 開始進入搭載 &lt;code&gt;Google built-in&lt;/code&gt; 的汽車，作為 Google Assistant 的升級版本陸續推送。&lt;/p&gt;
&lt;p&gt;這件事的重點不只是「車裡多了一個 AI 助理」，而是車載語音互動正在從固定命令，轉向更自然的連續對話。使用者不需要嚴格記住指令格式，可以像和一般助理交流一樣，讓 Gemini 幫忙導航、處理訊息、查詢車輛資訊，甚至控制部分車內設定。&lt;/p&gt;
&lt;h2 id=&#34;先從美國英語使用者開始&#34;&gt;先從美國英語使用者開始
&lt;/h2&gt;&lt;p&gt;根據 Google 的說明，這次更新會涵蓋新車和既有車輛，前提是車輛支援 &lt;code&gt;Google built-in&lt;/code&gt;，並且使用者已經在車機裡登入 Google 帳號。&lt;/p&gt;
&lt;p&gt;rollout 會先從美國英語使用者開始，之後再擴展到更多語言和國家。符合條件的使用者會在車內看到升級到 Gemini 的提示。升級後，可以透過以下方式喚起 Gemini：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;說出 &lt;code&gt;Hey Google&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;點擊主畫面上的麥克風&lt;/li&gt;
&lt;li&gt;使用方向盤上的語音按鈕&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明 Google 沒有把 Gemini 做成一個需要重新學習的新入口，而是延續原本的車載語音入口，只是把底層助理換成更強的 Gemini。&lt;/p&gt;
&lt;h2 id=&#34;車載語音不再只靠固定命令&#34;&gt;車載語音不再只靠固定命令
&lt;/h2&gt;&lt;p&gt;過去車載語音助理常見的問題是：能做的事不少，但使用者必須說得很「標準」。一旦表達稍微複雜，助理就容易聽不懂，或者只能執行最基礎的動作。&lt;/p&gt;
&lt;p&gt;Gemini 進入車機後，Google 強調的是自然對話能力。比如使用者可以直接說：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I need to grab lunch, find some highly rated sit-down restaurants along the way. I&amp;rsquo;m not in a rush, oh, and I’d like to eat outside.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Gemini 會結合 Google Maps 找沿途合適的餐廳。使用者還可以繼續追問停車情況、是否有素食選項等，不需要重新發起一輪完整搜尋。&lt;/p&gt;
&lt;p&gt;這種互動更符合駕駛場景。人在開車時很難像使用手機一樣反覆篩選、點擊和修改條件，語音助理如果能理解更完整的意圖，就能明顯減少分心。&lt;/p&gt;
&lt;h2 id=&#34;地圖訊息和音樂會變得更順手&#34;&gt;地圖、訊息和音樂會變得更順手
&lt;/h2&gt;&lt;p&gt;Google 給出的幾個例子，基本都圍繞駕駛時最常見的需求。&lt;/p&gt;
&lt;p&gt;第一類是路線和地點搜尋。&lt;/p&gt;
&lt;p&gt;Gemini 可以根據 Google Maps 資訊尋找沿途餐廳、景點或充電站，也可以回答和目前路線相關的問題。比如經過體育場附近時，使用者可以問附近是否有活動、是否會影響交通。&lt;/p&gt;
&lt;p&gt;第二類是訊息處理。&lt;/p&gt;
&lt;p&gt;使用者可以讓 Gemini 總結新簡訊，再根據上下文回覆。比如讓它回覆朋友「我在路上，並附上預計到達時間」。如果臨時想改內容，也可以繼續補充，不必從頭開始。&lt;/p&gt;
&lt;p&gt;第三類是音樂和氛圍。&lt;/p&gt;
&lt;p&gt;使用者不一定需要知道電台名或具體歌單，可以直接描述想聽的內容。例如播放爵士電台，或者在 YouTube Music 裡播放適合山路駕駛的歡快 70 年代 folk-rock，並跳過慢歌。&lt;/p&gt;
&lt;p&gt;這些功能本身並不新，但 Gemini 的價值在於把多個條件合在一句自然語言裡處理，而不是把使用者逼回固定命令。&lt;/p&gt;
&lt;h2 id=&#34;gemini-live-讓車裡也能邊走邊聊&#34;&gt;Gemini Live 讓車裡也能邊走邊聊
&lt;/h2&gt;&lt;p&gt;Google 還提到，&lt;code&gt;Gemini Live&lt;/code&gt; 也會進入車載場景，目前處於 beta。使用者可以點擊 Gemini Live 按鈕，或者說 &lt;code&gt;Hey Google, let&#39;s talk&lt;/code&gt; 開始更自由的對話。&lt;/p&gt;
&lt;p&gt;這類場景更像「開車時的陪伴式學習和腦力激盪」。例如開車去 Lake Tahoe 時，可以讓 Gemini 講當地歷史和趣聞；聽到感興趣的內容後，可以隨時打斷追問。也可以讓 Gemini 幫忙規劃到達目的地後的徒步路線和活動安排。&lt;/p&gt;
&lt;p&gt;這和傳統車載助理的差異很明顯。傳統助理更像工具按鈕，Gemini Live 則更像一個可以連續交流的語音介面。&lt;/p&gt;
&lt;h2 id=&#34;車輛說明書和即時車況是關鍵差異&#34;&gt;車輛說明書和即時車況是關鍵差異
&lt;/h2&gt;&lt;p&gt;更值得注意的是，Gemini 不只是回答通用問題。Google 表示，他們和車廠合作，把 Gemini 更深入地接入車輛系統。&lt;/p&gt;
&lt;p&gt;這帶來幾類更貼近汽車本身的能力。&lt;/p&gt;
&lt;p&gt;第一，使用者可以詢問車輛功能。&lt;/p&gt;
&lt;p&gt;比如「自動洗車前我應該怎麼準備？」或者「我的車庫天花板太低，後車廂門會碰到，怎麼設定後車廂不要完全打開？」Gemini 會根據車廠提供的車主手冊，給出適配具體車型的答案。不同品牌和車型能提供的資訊細節會有所差異。&lt;/p&gt;
&lt;p&gt;第二，電動車使用者可以詢問即時電量和續航。&lt;/p&gt;
&lt;p&gt;例如目前電量、到達目的地時預計剩餘電量，或者讓 Gemini 查找附近充電站。它還可以結合 Google Maps，幫使用者找充電附近的咖啡店等地點。&lt;/p&gt;
&lt;p&gt;第三，部分車內設定可以透過自然語言調整。&lt;/p&gt;
&lt;p&gt;Google 舉的例子是使用者說「車裡又起霧又冷」，Gemini 可以理解背後的意圖，調高暖風並打開除霧。&lt;/p&gt;
&lt;p&gt;這類能力比單純把聊天機器人搬進車機更實際。汽車是一個有明確狀態、硬體能力和安全邊界的環境，AI 助理如果能理解車輛上下文，價值會比普通問答更高。&lt;/p&gt;
&lt;h2 id=&#34;車載-ai-的邊界也更重要&#34;&gt;車載 AI 的邊界也更重要
&lt;/h2&gt;&lt;p&gt;車內場景對 AI 的要求和手機、網頁不同。&lt;/p&gt;
&lt;p&gt;開車時使用者不能頻繁看螢幕，也不能花太多注意力糾正 AI。助理需要足夠簡潔、可靠，並且不能在關鍵場景裡製造新的負擔。&lt;/p&gt;
&lt;p&gt;所以 Gemini 進入汽車並不意味著所有複雜任務都適合在車裡完成。更合理的方向是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;降低導航和資訊查詢的操作成本&lt;/li&gt;
&lt;li&gt;用自然語言替代多層選單&lt;/li&gt;
&lt;li&gt;幫使用者快速理解車輛功能&lt;/li&gt;
&lt;li&gt;在不分散注意力的前提下處理訊息和媒體&lt;/li&gt;
&lt;li&gt;給 EV 使用者更順滑的充電與路線資訊&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反過來，高風險操作仍然需要清晰邊界。比如影響駕駛安全的設定、需要確認的訊息發送、涉及車輛控制的動作，都應該有足夠明確的確認流程。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Gemini 進入 &lt;code&gt;Google built-in&lt;/code&gt; 汽車，是 AI 助理從手機和網頁繼續向日常環境擴展的一步。&lt;/p&gt;
&lt;p&gt;它的意義不在於車裡終於可以「聊天」，而在於車載語音助理開始理解更複雜的意圖，並能結合地圖、訊息、音樂、車輛說明書和部分車況資訊來完成任務。&lt;/p&gt;
&lt;p&gt;如果 rollout 順利，車載語音互動可能會從「記住命令」逐漸變成「描述需求」。這對開車場景很重要，因為真正好的車載 AI，不應該要求駕駛者為它分配太多注意力。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.google/products-and-platforms/platforms/android/cars-with-google-built-in-gemini-tips-2026/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Your car with Google built-in is about to get smarter, thanks to Gemini - Google Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude for Creative Work：Anthropic 把 Claude 接進 Adobe、Blender、Ableton 和 SketchUp</title>
        <link>https://knightli.com/zh-tw/2026/05/01/claude-for-creative-work-connectors/</link>
        <pubDate>Fri, 01 May 2026 05:52:14 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/claude-for-creative-work-connectors/</guid>
        <description>&lt;p&gt;Anthropic 在 2026 年 4 月 28 日發布了 &lt;code&gt;Claude for Creative Work&lt;/code&gt;，重點不是再談一個新的聊天機器人，而是把 Claude 接進創意產業已經在使用的軟體裡。&lt;/p&gt;
&lt;p&gt;這次合作名單很有代表性：&lt;code&gt;Blender&lt;/code&gt;、&lt;code&gt;Autodesk&lt;/code&gt;、&lt;code&gt;Adobe&lt;/code&gt;、&lt;code&gt;Ableton&lt;/code&gt;、&lt;code&gt;Splice&lt;/code&gt;，還包括 &lt;code&gt;Affinity by Canva&lt;/code&gt;、&lt;code&gt;Resolume&lt;/code&gt;、&lt;code&gt;SketchUp&lt;/code&gt; 等工具生態。&lt;/p&gt;
&lt;p&gt;簡單說，Anthropic 想做的是：讓 Claude 不只在聊天框裡給建議，而是進入設計、3D、音樂、影片和現場視覺這些具體工作流程。&lt;/p&gt;
&lt;h2 id=&#34;claude-不能取代審美但可以取代很多苦工&#34;&gt;Claude 不能取代審美，但可以取代很多苦工
&lt;/h2&gt;&lt;p&gt;Anthropic 在公告裡的態度比較克制：Claude 不能取代創作者的品味和想像力。&lt;/p&gt;
&lt;p&gt;這個判斷是對的。創意工作的關鍵往往不是「生成一個東西」，而是判斷哪個方向值得繼續、哪個細節需要保留、哪個方案符合專案氣質。&lt;/p&gt;
&lt;p&gt;但創意流程裡也有大量重複勞動：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批次調整圖片&lt;/li&gt;
&lt;li&gt;替圖層改名&lt;/li&gt;
&lt;li&gt;匯出不同格式檔案&lt;/li&gt;
&lt;li&gt;整理素材&lt;/li&gt;
&lt;li&gt;查軟體文件&lt;/li&gt;
&lt;li&gt;寫腳本修改場景&lt;/li&gt;
&lt;li&gt;在多個工具之間轉換格式&lt;/li&gt;
&lt;li&gt;把一個想法快速做成可看的草稿&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些環節不一定需要「靈感」，但很消耗時間。Claude 的作用更像是把創作者從這些機械步驟裡釋放出來。&lt;/p&gt;
&lt;h2 id=&#34;connectors-是這次的核心&#34;&gt;Connectors 是這次的核心
&lt;/h2&gt;&lt;p&gt;這次發布的關鍵是 &lt;code&gt;connectors&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;connectors&lt;/code&gt; 可以理解為 Claude 連接外部平台和軟體的橋。使用者不是把需求複製到 Claude，再手動回到軟體裡操作，而是讓 Claude 直接理解工具、呼叫能力或讀取相關文件。&lt;/p&gt;
&lt;p&gt;Anthropic 公告裡提到的連接方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ableton&lt;/code&gt;：讓 Claude 基於 Live 和 Push 的官方文件回答問題。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Adobe for creativity&lt;/code&gt;：連接 Creative Cloud 中的 50 多個工具，涵蓋 Photoshop、Premiere、Express 等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Affinity by Canva&lt;/code&gt;：自動化專業創意工作流裡的重複生產任務，例如批次圖片調整、圖層重新命名和檔案匯出。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Autodesk Fusion&lt;/code&gt;：讓有 Fusion 訂閱的設計師和工程師透過對話建立和修改 3D 模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Blender&lt;/code&gt;：透過自然語言使用 Blender 的 Python API，協助理解複雜場景、存取文件和擴充功能。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resolume Arena&lt;/code&gt; 和 &lt;code&gt;Resolume Wire&lt;/code&gt;：讓 VJ 和現場視覺藝術家用自然語言即時控制 Arena、Avenue 和 Wire。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SketchUp&lt;/code&gt;：把與 Claude 的對話變成 3D 建模起點，例如描述房間、家具或場地概念，再到 SketchUp 裡繼續細化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Splice&lt;/code&gt;：讓音樂製作人直接從 Claude 裡搜尋免版稅採樣庫。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些整合涵蓋了設計、音訊、3D、影片、現場演出和工程建模。它們不是單一方向的小實驗，而是 Anthropic 明確在往「創意軟體工作台」前進。&lt;/p&gt;
&lt;h2 id=&#34;對創意工作有什麼用&#34;&gt;對創意工作有什麼用
&lt;/h2&gt;&lt;p&gt;從公告來看，Claude 在創意工作裡的用途可以分成幾類。&lt;/p&gt;
&lt;p&gt;第一類是學習複雜工具。&lt;/p&gt;
&lt;p&gt;很多創意軟體很強，但學習曲線也很陡。Blender、Ableton、Fusion、Premiere 都是典型例子。使用者可以讓 Claude 解釋某個 modifier stack、講一個合成技巧、示範某個陌生功能，而不是在搜尋結果、論壇和官方文件之間來回跳。&lt;/p&gt;
&lt;p&gt;第二類是寫腳本和外掛。&lt;/p&gt;
&lt;p&gt;創意軟體都有大量可自動化空間。Claude Code 可以幫使用者寫腳本、外掛、shader、程序化動畫或參數化模型。對會一點技術但不想一直查 API 的創作者來說，這個價值很實際。&lt;/p&gt;
&lt;p&gt;第三類是打通工具鏈。&lt;/p&gt;
&lt;p&gt;真實專案通常不是一個軟體完成的。設計可能在 Adobe，3D 在 Blender 或 SketchUp，音訊在 Ableton，素材來自 Splice，最後還要進入影片或演出系統。Claude 可以協助轉換格式、重組資料、同步素材，減少手工交接。&lt;/p&gt;
&lt;p&gt;第四類是快速探索和交付。&lt;/p&gt;
&lt;p&gt;Anthropic 還提到 &lt;code&gt;Claude Design&lt;/code&gt;，這是 Anthropic Labs 的一個新產品，用於探索軟體體驗想法。它可以根據回饋迭代視覺方案，並且設計結果可以匯出到其他工具，起點是 Canva。&lt;/p&gt;
&lt;p&gt;第五類是減少重複生產工作。&lt;/p&gt;
&lt;p&gt;例如批次處理素材、搭建專案結構、批次調整場景物件、自動化匯出。很多創作者並不是不會做，而是不想把一個下午浪費在重複點擊上。&lt;/p&gt;
&lt;h2 id=&#34;blender-是最值得注意的一環&#34;&gt;Blender 是最值得注意的一環
&lt;/h2&gt;&lt;p&gt;這次公告裡，&lt;code&gt;Blender&lt;/code&gt; 的位置很特別。&lt;/p&gt;
&lt;p&gt;Blender 是免費開源的 3D 創作套件，涵蓋獨立遊戲、動態影像、建築視覺化、影視製作等場景。它本身就有強大的 Python API，也有大量複雜工作流。&lt;/p&gt;
&lt;p&gt;Blender 開發者已經建立了一個 MCP connector，現在可以在 Claude 中正式使用。&lt;/p&gt;
&lt;p&gt;這個連接器能做的事情包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析和除錯整個 Blender 場景&lt;/li&gt;
&lt;li&gt;批次修改場景裡的物件&lt;/li&gt;
&lt;li&gt;使用 Blender Python API 寫自訂腳本&lt;/li&gt;
&lt;li&gt;把新工具直接加到 Blender 介面裡&lt;/li&gt;
&lt;li&gt;幫使用者理解複雜設定和文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更重要的是，Anthropic 加入了 Blender Development Fund，成為 Blender 專案的 patron，用來支持 Blender 繼續發展 Python API。&lt;/p&gt;
&lt;p&gt;這件事有兩個信號。&lt;/p&gt;
&lt;p&gt;第一，Anthropic 不只是想接入商業軟體，也在押注開源創作工具。&lt;/p&gt;
&lt;p&gt;第二，這個 connector 基於 &lt;code&gt;MCP&lt;/code&gt;，理論上不只 Claude 能用，其他大型模型也可以接入。這和 Blender 的開源與互操作方向比較一致。&lt;/p&gt;
&lt;h2 id=&#34;這不是ai-取代設計師而是ai-進入工具層&#34;&gt;這不是「AI 取代設計師」，而是「AI 進入工具層」
&lt;/h2&gt;&lt;p&gt;這次發布最值得關注的地方，不是 Claude 能不能生成一張圖、一段音樂或一個 3D 模型。&lt;/p&gt;
&lt;p&gt;更關鍵的是：AI 正在從聊天框進入工具層。&lt;/p&gt;
&lt;p&gt;過去很多 AI 創作工具的體驗是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 AI 工具裡描述需求。&lt;/li&gt;
&lt;li&gt;得到一個結果。&lt;/li&gt;
&lt;li&gt;下載或複製出來。&lt;/li&gt;
&lt;li&gt;回到專業軟體裡手動修改。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;現在的方向更像是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude 理解你的創意軟體。&lt;/li&gt;
&lt;li&gt;Claude 讀取相關文件或專案上下文。&lt;/li&gt;
&lt;li&gt;Claude 生成腳本、操作工具、整理素材或建立草稿。&lt;/li&gt;
&lt;li&gt;創作者在熟悉的軟體裡繼續判斷和精修。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這對專業使用者更有吸引力，因為他們不想離開原本的工具鏈，也不想把所有工作遷移到一個全新的 AI 平台。&lt;/p&gt;
&lt;h2 id=&#34;對學生和創意教育的影響&#34;&gt;對學生和創意教育的影響
&lt;/h2&gt;&lt;p&gt;Anthropic 也提到正在和藝術與設計專案合作，支持包含 creative computation 的課程。&lt;/p&gt;
&lt;p&gt;首批專案包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rhode Island School of Design 的 Art and Computation&lt;/li&gt;
&lt;li&gt;Ringling College of Art and Design 的 Fundamentals of AI for Creatives&lt;/li&gt;
&lt;li&gt;Goldsmiths, University of London 的 MA/MFA Computational Arts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;學生和教師會獲得 Claude 以及新 connectors 的存取權限，他們的回饋會幫助 Anthropic 理解創意實踐者真正需要什麼。&lt;/p&gt;
&lt;p&gt;這點也很有意思。AI 創作能力如果只停留在「生成素材」，很容易變成炫技。但進入課程後，更重要的問題會變成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;學生如何理解工具背後的過程&lt;/li&gt;
&lt;li&gt;如何把 AI 作為探索和原型工具&lt;/li&gt;
&lt;li&gt;如何保留自己的判斷力&lt;/li&gt;
&lt;li&gt;如何用程式碼和自動化擴展創作邊界&lt;/li&gt;
&lt;li&gt;如何避免所有作品都變成同一種 AI 味道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題比單純討論「AI 會不會取代創作者」更實際。&lt;/p&gt;
&lt;h2 id=&#34;誰最適合關注這次發布&#34;&gt;誰最適合關注這次發布
&lt;/h2&gt;&lt;p&gt;這次 &lt;code&gt;Claude for Creative Work&lt;/code&gt; 對幾類人尤其值得關注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 Blender、SketchUp、Fusion 做 3D 建模的人&lt;/li&gt;
&lt;li&gt;使用 Adobe、Affinity 做設計和影片生產的人&lt;/li&gt;
&lt;li&gt;使用 Ableton、Splice 做音樂製作的人&lt;/li&gt;
&lt;li&gt;需要把多個創意工具串成工作流的人&lt;/li&gt;
&lt;li&gt;會一點腳本，希望自動化創意軟體的人&lt;/li&gt;
&lt;li&gt;正在做創意教育、互動設計、計算藝術課程的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶爾讓 AI 生成圖片，這次發布未必馬上改變體驗。&lt;/p&gt;
&lt;p&gt;但如果你已經在專業軟體裡工作，並且經常遇到「我知道要做什麼，但這些步驟太繁瑣」的情況，connectors 會很有價值。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的邊界&#34;&gt;需要注意的邊界
&lt;/h2&gt;&lt;p&gt;這類工具也不是萬能的。&lt;/p&gt;
&lt;p&gt;第一，Claude 仍然需要使用者判斷結果是否符合審美、品牌和專案目標。&lt;/p&gt;
&lt;p&gt;第二，自動化操作專業軟體時，最好從小範圍任務開始，不要一上來就讓它批次修改不可恢復的專案檔案。&lt;/p&gt;
&lt;p&gt;第三，連接器品質很關鍵。如果 connector 只能查文件，和能真實操作軟體，是兩種完全不同的體驗。&lt;/p&gt;
&lt;p&gt;第四，創意軟體專案往往有複雜檔案、素材依賴和版本管理。AI 參與之後，更需要備份和可回滾流程。&lt;/p&gt;
&lt;p&gt;第五，版權、授權和素材來源仍然要自己把關。比如 Splice 強調的是 royalty-free samples，但實際專案使用時仍要確認具體授權條件。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude for Creative Work&lt;/code&gt; 不是一次單點功能更新，而是 Anthropic 把 Claude 推進創意軟體生態的一步。&lt;/p&gt;
&lt;p&gt;它的重點不是讓 Claude 變成創作者，而是讓 Claude 成為創作者身邊的工具助手：查文件、寫腳本、批次處理、連通軟體、生成草稿、減少重複勞動。&lt;/p&gt;
&lt;p&gt;真正有長期價值的地方，是 Claude 開始進入 Blender、Adobe、Ableton、SketchUp 這些創作者每天使用的環境裡。&lt;/p&gt;
&lt;p&gt;當 AI 不再只是一個單獨網頁，而是能理解和呼叫專業工具時，創意工作流會發生更實際的變化。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/news/claude-for-creative-work&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude for Creative Work - Anthropic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>FinceptTerminal：開源金融終端、量化研究和 AI Agent 工作台</title>
        <link>https://knightli.com/zh-tw/2026/05/01/finceptterminal-open-source-financial-terminal/</link>
        <pubDate>Fri, 01 May 2026 03:47:18 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/finceptterminal-open-source-financial-terminal/</guid>
        <description>&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 是 Fincept Corporation 開源的金融終端專案。&lt;/p&gt;
&lt;p&gt;從 README 的描述看，它不是一個簡單行情面板，而是一個面向金融分析、量化研究、交易工作流和 AI Agent 的綜合桌面平台。專案 v4 使用 C++20 和 Qt6 構建原生桌面應用，同時嵌入 Python 生態，用來支援分析、腳本、機器學習和金融建模。&lt;/p&gt;
&lt;p&gt;如果要類比，它更接近一個開源金融研究工作台：一邊連接資料源，一邊做圖表、組合、量化、交易、情報分析和自動化工作流。&lt;/p&gt;
&lt;p&gt;需要先說明：這類工具可以用於研究、分析、教育和內部工具建設，但不能把任何輸出直接當成投資建議。金融市場有風險，資料、模型、策略和執行都需要獨立驗證。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;金融研究經常被拆散在很多工具裡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行情資料在一個軟體裡&lt;/li&gt;
&lt;li&gt;研究程式碼在 Jupyter 裡&lt;/li&gt;
&lt;li&gt;圖表在另一個工具裡&lt;/li&gt;
&lt;li&gt;組合分析在表格裡&lt;/li&gt;
&lt;li&gt;交易記錄在券商系統裡&lt;/li&gt;
&lt;li&gt;新聞和情報在瀏覽器裡&lt;/li&gt;
&lt;li&gt;AI 分析又在聊天視窗裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種方式能用，但協作和復現很困難。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 想解決的是把這些能力整合到一個桌面終端裡，讓使用者可以在同一個環境中完成資料接入、分析、建模、視覺化、Agent 協作和交易相關流程。&lt;/p&gt;
&lt;p&gt;它的目標不是替代所有專業系統，而是提供一個可擴展的開源金融終端底座。&lt;/p&gt;
&lt;h2 id=&#34;技術架構&#34;&gt;技術架構
&lt;/h2&gt;&lt;p&gt;README 中提到 v4 採用 C++20 和 Qt6。&lt;/p&gt;
&lt;p&gt;這意味著它不是純 Web 面板，而是原生桌面應用。對金融終端來說，原生應用有幾個優勢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 回應更穩定&lt;/li&gt;
&lt;li&gt;更適合複雜視窗和多面板布局&lt;/li&gt;
&lt;li&gt;更容易處理本地檔案和系統資源&lt;/li&gt;
&lt;li&gt;可以嵌入高效能元件&lt;/li&gt;
&lt;li&gt;適合長期執行的桌面工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同時，專案也嵌入 Python。&lt;/p&gt;
&lt;p&gt;這點很關鍵。金融研究和量化分析裡，Python 是事實上的主流語言之一。資料分析、機器學習、統計、回測、圖表、金融建模都離不開 Python 生態。C++/Qt 負責應用框架和桌面體驗，Python 負責研究與擴展能力，這是一種很實用的組合。&lt;/p&gt;
&lt;h2 id=&#34;資料連接器&#34;&gt;資料連接器
&lt;/h2&gt;&lt;p&gt;README 中提到專案提供 100+ 資料連接器。&lt;/p&gt;
&lt;p&gt;金融終端的價值很大程度取決於資料接入。沒有資料，再好的 UI 和模型都只是空殼。&lt;/p&gt;
&lt;p&gt;這類連接器通常可以覆蓋不同來源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市場行情&lt;/li&gt;
&lt;li&gt;總體經濟資料&lt;/li&gt;
&lt;li&gt;公司財務&lt;/li&gt;
&lt;li&gt;新聞與情報&lt;/li&gt;
&lt;li&gt;交易所資料&lt;/li&gt;
&lt;li&gt;加密資產資料&lt;/li&gt;
&lt;li&gt;研究資料源&lt;/li&gt;
&lt;li&gt;內部或自訂 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對使用者來說，資料連接器的意義是減少「下載 CSV、手動整理、再匯入」的流程，讓分析更接近即時和自動化。&lt;/p&gt;
&lt;p&gt;不過也要注意，金融資料的品質、授權、延遲、覆蓋範圍和費用都很關鍵。使用任何資料源前，都要確認許可和用途邊界。&lt;/p&gt;
&lt;h2 id=&#34;ai-agents-模組&#34;&gt;AI Agents 模組
&lt;/h2&gt;&lt;p&gt;專案強調 AI Agents，這也是它和傳統金融終端不同的地方。&lt;/p&gt;
&lt;p&gt;傳統終端更多是人操作介面，人看資料，人做判斷。加入 AI Agent 後，工具可以承擔更多輔助任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;彙總市場資訊&lt;/li&gt;
&lt;li&gt;解釋財報和公告&lt;/li&gt;
&lt;li&gt;生成研究摘要&lt;/li&gt;
&lt;li&gt;幫助篩選資料&lt;/li&gt;
&lt;li&gt;輔助編寫分析腳本&lt;/li&gt;
&lt;li&gt;組織交易或研究工作流&lt;/li&gt;
&lt;li&gt;在多個模組之間傳遞上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不代表 AI 可以替代研究員或交易員。&lt;/p&gt;
&lt;p&gt;更合理的定位是：AI Agent 幫你減少重複整理工作，提供初步分析和互動式查詢，但重要結論仍然需要資料驗證、模型驗證和人工判斷。&lt;/p&gt;
&lt;h2 id=&#34;量化研究能力&#34;&gt;量化研究能力
&lt;/h2&gt;&lt;p&gt;FinceptTerminal 也面向量化研究。&lt;/p&gt;
&lt;p&gt;量化研究通常包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料清洗&lt;/li&gt;
&lt;li&gt;因子構建&lt;/li&gt;
&lt;li&gt;策略假設&lt;/li&gt;
&lt;li&gt;回測&lt;/li&gt;
&lt;li&gt;風險評估&lt;/li&gt;
&lt;li&gt;組合最佳化&lt;/li&gt;
&lt;li&gt;交易成本估計&lt;/li&gt;
&lt;li&gt;結果視覺化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個終端能把資料連接、Python 分析、圖表和工作流整合起來，對量化研究會很有幫助。研究者可以在一個環境裡從資料到策略驗證逐步推進。&lt;/p&gt;
&lt;p&gt;不過，量化研究最怕「看起來有效」。一個策略如果沒有嚴格處理樣本外驗證、交易成本、滑點、倖存者偏差、過擬合和資料洩漏，回測再漂亮也不可靠。&lt;/p&gt;
&lt;p&gt;所以這類工具應該被當作研究平台，而不是自動賺錢機器。&lt;/p&gt;
&lt;h2 id=&#34;quantlib-和金融建模&#34;&gt;QuantLib 和金融建模
&lt;/h2&gt;&lt;p&gt;README 中提到 QuantLib 相關能力。&lt;/p&gt;
&lt;p&gt;QuantLib 是金融工程裡很常見的開源庫，常用於利率、債券、期權、衍生品定價、曲線構建和風險計算等方向。&lt;/p&gt;
&lt;p&gt;這說明 FinceptTerminal 不只是看股票行情，也試圖覆蓋更專業的金融建模場景。&lt;/p&gt;
&lt;p&gt;這類能力適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;金融工程學習&lt;/li&gt;
&lt;li&gt;衍生品定價實驗&lt;/li&gt;
&lt;li&gt;曲線與風險指標計算&lt;/li&gt;
&lt;li&gt;投資組合風險分析&lt;/li&gt;
&lt;li&gt;研究模型原型驗證&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但金融建模本身門檻很高。模型參數、市場假設、資料來源和定價邏輯都會影響結果。工具能降低操作成本，不能替代專業判斷。&lt;/p&gt;
&lt;h2 id=&#34;節點工作流&#34;&gt;節點工作流
&lt;/h2&gt;&lt;p&gt;README 中還提到節點式工作流。&lt;/p&gt;
&lt;p&gt;節點工作流適合把複雜任務拆成視覺化流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀取資料&lt;/li&gt;
&lt;li&gt;清洗資料&lt;/li&gt;
&lt;li&gt;執行模型&lt;/li&gt;
&lt;li&gt;生成圖表&lt;/li&gt;
&lt;li&gt;觸發 AI 分析&lt;/li&gt;
&lt;li&gt;輸出報告&lt;/li&gt;
&lt;li&gt;發送通知&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對金融場景來說，這種方式有兩個優點。&lt;/p&gt;
&lt;p&gt;第一，流程視覺化。複雜分析不再只藏在一堆腳本裡，使用者可以看到資料如何流動。&lt;/p&gt;
&lt;p&gt;第二，適合自動化。重複研究流程可以被保存、複用和調整。&lt;/p&gt;
&lt;p&gt;如果後續能和 Python 腳本、資料連接器、Agent、報告系統結合，這類節點工作流會成為金融終端裡很有價值的模組。&lt;/p&gt;
&lt;h2 id=&#34;交易與組合管理&#34;&gt;交易與組合管理
&lt;/h2&gt;&lt;p&gt;專案也提到交易和組合相關能力。&lt;/p&gt;
&lt;p&gt;這類功能最需要謹慎。&lt;/p&gt;
&lt;p&gt;組合管理可以幫助使用者理解資產暴露、收益、回撤、波動、相關性和風險集中度。交易模組則可能涉及訂單、帳戶、執行和記錄。&lt;/p&gt;
&lt;p&gt;但只要觸及真實交易，就必須考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料延遲&lt;/li&gt;
&lt;li&gt;訂單執行風險&lt;/li&gt;
&lt;li&gt;API 權限&lt;/li&gt;
&lt;li&gt;交易成本&lt;/li&gt;
&lt;li&gt;滑點&lt;/li&gt;
&lt;li&gt;流動性&lt;/li&gt;
&lt;li&gt;風控限制&lt;/li&gt;
&lt;li&gt;稽核和日誌&lt;/li&gt;
&lt;li&gt;策略誤觸發&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;開發和研究環境裡的交易功能，不應直接等同於生產級交易系統。真正接入實盤前，需要嚴格測試、權限隔離、風控機制和人工審核。&lt;/p&gt;
&lt;h2 id=&#34;和-bloomberg-terminal-有什麼區別&#34;&gt;和 Bloomberg Terminal 有什麼區別
&lt;/h2&gt;&lt;p&gt;很多金融終端專案都會被拿來和 Bloomberg Terminal 對比。&lt;/p&gt;
&lt;p&gt;但兩者定位不同。&lt;/p&gt;
&lt;p&gt;Bloomberg Terminal 的價值不僅是軟體介面，還包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料覆蓋&lt;/li&gt;
&lt;li&gt;資料授權&lt;/li&gt;
&lt;li&gt;新聞網路&lt;/li&gt;
&lt;li&gt;交易生態&lt;/li&gt;
&lt;li&gt;客戶支援&lt;/li&gt;
&lt;li&gt;金融機構工作流&lt;/li&gt;
&lt;li&gt;長期積累的行業信任&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FinceptTerminal 更像一個開源金融終端框架和研究平台。它的優勢在於可擴展、可定製、可本地化、可與 Python 和 AI 工作流結合。&lt;/p&gt;
&lt;p&gt;它不應該被簡單理解成 Bloomberg 的免費替代品。&lt;/p&gt;
&lt;p&gt;更合理的看法是：如果你想研究金融終端怎麼構建，或者想搭建自己的金融分析工作台，FinceptTerminal 提供了一個開源起點。&lt;/p&gt;
&lt;h2 id=&#34;授權和商業邊界&#34;&gt;授權和商業邊界
&lt;/h2&gt;&lt;p&gt;README 中提到專案使用 AGPL 和商業授權模式。&lt;/p&gt;
&lt;p&gt;AGPL 對網路服務和衍生作品有明確要求。如果你只是學習、研究或個人實驗，問題通常不大。但如果準備把它改造成商業產品、內部平台或對外服務，就需要認真閱讀許可證。&lt;/p&gt;
&lt;p&gt;特別是金融工具常常會進入企業內部系統。這個時候，開源協議、商業授權、資料授權、模型授權都要一起看，而不是只看程式碼能不能執行。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼人關注&#34;&gt;適合什麼人關注
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 適合這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究金融終端架構的開發者&lt;/li&gt;
&lt;li&gt;做量化研究或金融工程實驗的人&lt;/li&gt;
&lt;li&gt;想把 Python 分析能力嵌入桌面工具的人&lt;/li&gt;
&lt;li&gt;想探索 AI Agent + 金融工作流的人&lt;/li&gt;
&lt;li&gt;想搭建內部金融分析平台的團隊&lt;/li&gt;
&lt;li&gt;想學習 C++/Qt 金融應用開發的人&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想看幾隻股票的行情，普通行情軟體可能更簡單。&lt;/p&gt;
&lt;p&gt;如果你想理解一個金融終端如何把資料、圖表、模型、Agent、交易和工作流整合起來，這個專案就更值得研究。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意&#34;&gt;使用時要注意
&lt;/h2&gt;&lt;p&gt;第一，先區分研究和交易。&lt;/p&gt;
&lt;p&gt;研究環境可以容忍實驗和失敗，交易環境不能。不要把研究工具未經驗證就接入真實帳戶。&lt;/p&gt;
&lt;p&gt;第二，重視資料授權。&lt;/p&gt;
&lt;p&gt;金融資料不是隨便抓來就能商用。不同資料源有不同授權條款，尤其是行情、新聞、財務和交易所資料。&lt;/p&gt;
&lt;p&gt;第三，不要迷信 AI Agent。&lt;/p&gt;
&lt;p&gt;AI 可以輔助整理資訊，但金融結論必須回到資料、模型、風險和事實驗證。&lt;/p&gt;
&lt;p&gt;第四，關注安全。&lt;/p&gt;
&lt;p&gt;如果工具連接帳戶、API key、交易介面或內部資料，必須處理好金鑰管理、權限隔離、日誌和網路邊界。&lt;/p&gt;
&lt;p&gt;第五，理解開源協議。&lt;/p&gt;
&lt;p&gt;AGPL 對商業使用和服務化有重要影響。準備做產品化前，應該先處理授權問題。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; 值得關注的地方，是它把金融終端、Python 量化研究、AI Agents、資料連接器和節點工作流放進了同一個開源桌面平台設想裡。&lt;/p&gt;
&lt;p&gt;它更適合作為金融技術研究和內部工具建設的起點，而不是被當成可以直接替代專業金融終端或實盤交易系統的成品。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mattpocock/skills：給 AI 編程 Agent 準備的實用技能集合</title>
        <link>https://knightli.com/zh-tw/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</link>
        <pubDate>Fri, 01 May 2026 03:43:20 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</guid>
        <description>&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 是 Matt Pocock 公開的一組 AI 編程 agent skills。&lt;/p&gt;
&lt;p&gt;它不是一個完整的應用，也不是一個新的聊天客戶端，而是一套可以給 AI 編程助手使用的工作技能。它的思路很實用：把 AI 編程裡經常出現的問題拆成一個個小技能，讓 Agent 在合適的任務裡呼叫，而不是每次都靠一大段提示詞硬撐。&lt;/p&gt;
&lt;p&gt;如果你經常使用 Claude Code、Codex、Cursor 或類似的 AI 編程工具，這類 skills 很值得關注。因為真正影響 AI 編程體驗的，往往不是「模型會不會寫程式碼」，而是它能不能按你的工作方式推進任務。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;AI 編程助手很強，但也很容易出問題。&lt;/p&gt;
&lt;p&gt;常見情況包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;還沒理解需求就開始改程式碼&lt;/li&gt;
&lt;li&gt;一次性改太多檔案&lt;/li&gt;
&lt;li&gt;輸出解釋很多，真正有用的行動很少&lt;/li&gt;
&lt;li&gt;遇到錯誤後盲目嘗試&lt;/li&gt;
&lt;li&gt;沒有及時執行測試或檢查&lt;/li&gt;
&lt;li&gt;忽略專案裡已有模式&lt;/li&gt;
&lt;li&gt;為了完成任務引入不必要的抽象&lt;/li&gt;
&lt;li&gt;寫完程式碼後沒有真正 review 風險&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題不一定是模型能力不夠，而是工作流沒有被約束好。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 的價值在於，把這些常見失敗模式拆成可以複用的操作方式，讓 Agent 在不同場景下更像一個有經驗的工程協作者。&lt;/p&gt;
&lt;h2 id=&#34;skills-是什麼&#34;&gt;Skills 是什麼
&lt;/h2&gt;&lt;p&gt;在 AI Agent 語境裡，skill 可以理解成一段可複用的任務說明、工作方法或專業流程。&lt;/p&gt;
&lt;p&gt;它不一定是程式碼插件，也不一定必須呼叫外部服務。很多時候，一個 skill 就是一套明確規則：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什麼時候使用&lt;/li&gt;
&lt;li&gt;先做什麼&lt;/li&gt;
&lt;li&gt;不要做什麼&lt;/li&gt;
&lt;li&gt;需要輸出什麼&lt;/li&gt;
&lt;li&gt;怎麼判斷任務完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這和普通提示詞模板有點像，但粒度更接近「任務能力」。&lt;/p&gt;
&lt;p&gt;普通提示詞模板通常是使用者每次臨時複製貼上；skills 則更適合作為 agent 工具箱的一部分，讓 Agent 根據任務選擇合適流程。&lt;/p&gt;
&lt;h2 id=&#34;為什麼要小而可組合&#34;&gt;為什麼要小而可組合
&lt;/h2&gt;&lt;p&gt;README 中強調這些 skills 是小而可組合的。&lt;/p&gt;
&lt;p&gt;這個方向很重要。&lt;/p&gt;
&lt;p&gt;如果一個 skill 試圖包辦所有事情，它很快就會變成新的大提示詞：又長、又模糊、又難維護。小技能的優勢是邊界清楚。&lt;/p&gt;
&lt;p&gt;比如一個 skill 專門負責：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先做計劃&lt;/li&gt;
&lt;li&gt;修復 TypeScript 錯誤&lt;/li&gt;
&lt;li&gt;執行測試並根據結果修復&lt;/li&gt;
&lt;li&gt;做程式碼 review&lt;/li&gt;
&lt;li&gt;總結專案約定&lt;/li&gt;
&lt;li&gt;改進提示詞&lt;/li&gt;
&lt;li&gt;清理無用抽象&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些技能可以按任務組合使用。簡單任務只用一個技能，複雜任務再串起來。&lt;/p&gt;
&lt;p&gt;這更接近真實工程工作：你不會用同一套流程處理所有問題，而是根據問題選擇工具。&lt;/p&gt;
&lt;h2 id=&#34;保留工程師控制權&#34;&gt;保留工程師控制權
&lt;/h2&gt;&lt;p&gt;這個倉庫的一個重要取向，是讓工程師仍然掌握控制權。&lt;/p&gt;
&lt;p&gt;AI 編程很容易滑向兩種極端：&lt;/p&gt;
&lt;p&gt;第一種是完全手動。AI 只是幫你寫幾行程式碼，所有上下文、計劃、驗證都靠你自己盯。&lt;/p&gt;
&lt;p&gt;第二種是完全放手。你把任務丟給 Agent，讓它自己大改一通，最後再面對一堆難以審查的 diff。&lt;/p&gt;
&lt;p&gt;skills 的作用是在中間找一個更穩的位置。&lt;/p&gt;
&lt;p&gt;它讓 AI 承擔更多重複流程，但仍然用規則限制它：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先理解任務再動手&lt;/li&gt;
&lt;li&gt;先閱讀相關檔案再改&lt;/li&gt;
&lt;li&gt;修改範圍要可控&lt;/li&gt;
&lt;li&gt;出現不確定時要回報&lt;/li&gt;
&lt;li&gt;改完要驗證&lt;/li&gt;
&lt;li&gt;不能為了炫技重構無關程式碼&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是削弱 AI，而是讓 AI 的行動更容易被人類審查和接管。&lt;/p&gt;
&lt;h2 id=&#34;對齊問題&#34;&gt;對齊問題
&lt;/h2&gt;&lt;p&gt;AI 編程失敗的第一類問題通常是對齊失敗。&lt;/p&gt;
&lt;p&gt;使用者想要的是一個很具體的改動，但 Agent 可能理解成一個更大的重構；使用者只想修 Bug，它卻順手改了樣式；使用者希望遵守現有架構，它卻引入新模式。&lt;/p&gt;
&lt;p&gt;Skills 可以在任務開始階段幫助 Agent 做幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重述目標&lt;/li&gt;
&lt;li&gt;找出影響範圍&lt;/li&gt;
&lt;li&gt;識別已有實現模式&lt;/li&gt;
&lt;li&gt;給出計劃&lt;/li&gt;
&lt;li&gt;明確不做哪些事情&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一步很像工程師開工前的自檢。&lt;/p&gt;
&lt;p&gt;如果 Agent 連任務邊界都沒說清楚，就直接寫程式碼，後面很容易越走越偏。&lt;/p&gt;
&lt;h2 id=&#34;回饋循環問題&#34;&gt;回饋循環問題
&lt;/h2&gt;&lt;p&gt;AI 寫程式碼不能只靠一次生成。&lt;/p&gt;
&lt;p&gt;真實開發裡，回饋循環很重要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;改一小步&lt;/li&gt;
&lt;li&gt;跑測試或型別檢查&lt;/li&gt;
&lt;li&gt;看錯誤&lt;/li&gt;
&lt;li&gt;修正&lt;/li&gt;
&lt;li&gt;再驗證&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;很多 Agent 失敗，是因為它跳過了中間回饋。它一次性改很多內容，然後憑感覺總結「應該可以工作」。&lt;/p&gt;
&lt;p&gt;Skills 可以把回饋循環顯式寫進流程裡。比如要求 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改後執行相關檢查&lt;/li&gt;
&lt;li&gt;如果檢查失敗，先讀錯誤訊息&lt;/li&gt;
&lt;li&gt;不要盲目改無關檔案&lt;/li&gt;
&lt;li&gt;每輪修復後重新驗證&lt;/li&gt;
&lt;li&gt;最後報告驗證結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這會讓 AI 編程更像真實除錯，而不是一次性作文。&lt;/p&gt;
&lt;h2 id=&#34;架構控制問題&#34;&gt;架構控制問題
&lt;/h2&gt;&lt;p&gt;AI 很擅長生成抽象，也很擅長過度生成抽象。&lt;/p&gt;
&lt;p&gt;為了完成一個小需求，它可能新建服務層、工具函式、配置物件、型別包裝、適配器，最後讓程式碼比需求本身複雜得多。&lt;/p&gt;
&lt;p&gt;這類問題在大型專案裡尤其危險。因為 AI 生成的抽象看起來很「專業」，但它可能不符合專案已有風格，也可能增加維護成本。&lt;/p&gt;
&lt;p&gt;好的 skills 會提醒 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;優先沿用現有模式&lt;/li&gt;
&lt;li&gt;不引入沒有必要的新抽象&lt;/li&gt;
&lt;li&gt;不順手重構無關區域&lt;/li&gt;
&lt;li&gt;修改要和任務規模匹配&lt;/li&gt;
&lt;li&gt;先理解程式碼再設計結構&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這能減少「看起來很工程化，實際上更難維護」的輸出。&lt;/p&gt;
&lt;h2 id=&#34;review-技能為什麼重要&#34;&gt;Review 技能為什麼重要
&lt;/h2&gt;&lt;p&gt;寫程式碼和 review 程式碼是兩種不同狀態。&lt;/p&gt;
&lt;p&gt;Agent 在寫程式碼時，通常會傾向於證明自己的實現成立。它會解釋為什麼這樣改可以工作，但不一定主動找風險。&lt;/p&gt;
&lt;p&gt;Review skill 的意義，是讓 Agent 切換角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找潛在 Bug&lt;/li&gt;
&lt;li&gt;找行為回歸&lt;/li&gt;
&lt;li&gt;找遺漏測試&lt;/li&gt;
&lt;li&gt;找邊界條件&lt;/li&gt;
&lt;li&gt;找複雜度上升&lt;/li&gt;
&lt;li&gt;找和現有約定不一致的地方&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這對 AI 編程很重要。因為 AI 生成程式碼的速度很快，如果沒有 review，使用者很容易被大量 diff 淹沒。&lt;/p&gt;
&lt;p&gt;一個好的 review 輸出應該優先列問題，而不是先誇實現。它要幫助工程師判斷這次改動能不能合併。&lt;/p&gt;
&lt;h2 id=&#34;和普通-rules-檔案有什麼區別&#34;&gt;和普通 rules 檔案有什麼區別
&lt;/h2&gt;&lt;p&gt;很多 AI 編程工具都支援 rules、instructions 或 memory。&lt;/p&gt;
&lt;p&gt;這些檔案通常記錄長期規則，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案技術棧&lt;/li&gt;
&lt;li&gt;命名規範&lt;/li&gt;
&lt;li&gt;測試命令&lt;/li&gt;
&lt;li&gt;不要修改哪些目錄&lt;/li&gt;
&lt;li&gt;回答風格偏好&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 更偏任務流程。&lt;/p&gt;
&lt;p&gt;rules 告訴 Agent「長期應該怎麼做」，skills 告訴 Agent「面對某類任務時應該怎麼執行」。&lt;/p&gt;
&lt;p&gt;兩者最好一起用。&lt;/p&gt;
&lt;p&gt;比如 rules 裡寫專案用 &lt;code&gt;pnpm test&lt;/code&gt;，review skill 裡要求改完後檢查測試覆蓋。這樣 Agent 不僅知道命令，也知道什麼時候該用。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 這類倉庫適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻使用 AI 編程工具&lt;/li&gt;
&lt;li&gt;經常讓 Agent 處理真實程式碼庫&lt;/li&gt;
&lt;li&gt;想減少 AI 越界修改&lt;/li&gt;
&lt;li&gt;想讓 Agent 更主動地驗證結果&lt;/li&gt;
&lt;li&gt;想把自己的工程習慣沉澱成技能&lt;/li&gt;
&lt;li&gt;想學習別人如何設計 agent workflows&lt;/li&gt;
&lt;li&gt;想把一堆臨時提示詞整理成可維護的技能集合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶爾讓 AI 寫一個小函式，可能不需要專門維護 skills。&lt;/p&gt;
&lt;p&gt;但如果你已經把 AI 當成長期開發夥伴，skills 會逐漸變得重要。它們相當於給 Agent 配了一套可複用的工作方法。&lt;/p&gt;
&lt;h2 id=&#34;怎麼借鑑這個倉庫&#34;&gt;怎麼借鑑這個倉庫
&lt;/h2&gt;&lt;p&gt;即使你不直接使用其中的每個 skill，也可以從這個倉庫學到幾件事。&lt;/p&gt;
&lt;p&gt;第一，把失敗模式寫下來。&lt;/p&gt;
&lt;p&gt;不要只在 AI 出錯時臨時抱怨。把它經常出錯的模式整理成規則，下一次讓 skill 提前防住。&lt;/p&gt;
&lt;p&gt;第二，技能要短。&lt;/p&gt;
&lt;p&gt;一個 skill 最好解決一個明確問題。越短越容易被正確呼叫，也越容易維護。&lt;/p&gt;
&lt;p&gt;第三，輸出格式要清楚。&lt;/p&gt;
&lt;p&gt;如果你希望 Agent 先列計劃、再執行、最後總結驗證結果，就把輸出結構寫清楚。模糊要求通常會得到模糊結果。&lt;/p&gt;
&lt;p&gt;第四，保留人工接管點。&lt;/p&gt;
&lt;p&gt;好的 skill 不應該讓 AI 獨自跑到很遠。遇到不確定、影響範圍擴大、測試失敗或需要產品判斷時，應該讓它停下來說明情況。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意&#34;&gt;使用時要注意
&lt;/h2&gt;&lt;p&gt;第一，不要把所有事情都技能化。&lt;/p&gt;
&lt;p&gt;太多 skills 會讓系統變複雜，Agent 也可能不知道該選哪個。先從最高頻、最痛的幾個場景開始。&lt;/p&gt;
&lt;p&gt;第二，skills 需要迭代。&lt;/p&gt;
&lt;p&gt;第一次寫出來的 skill 不一定好。看 AI 實際執行效果，再逐步刪減、補充和改寫。&lt;/p&gt;
&lt;p&gt;第三，不要讓 skill 替代工程判斷。&lt;/p&gt;
&lt;p&gt;Skill 可以改善流程，但不能保證實現正確。測試、review、構建檢查和人類判斷仍然重要。&lt;/p&gt;
&lt;p&gt;第四，注意不同 Agent 的差異。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot 對 instructions、skills、rules 的支援方式不同。同一套思想可以複用，但具體格式要按工具調整。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; 值得關注的地方，不是裡面某一個神奇提示詞，而是它展示了一種更實用的 AI 編程思路：把工程經驗拆成小技能，再讓 Agent 按場景組合使用。&lt;/p&gt;
&lt;p&gt;當 AI 編程從偶爾輔助變成日常工作流，skills 會成為約束 Agent、保留工程師控制權和提升回饋品質的重要工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>free-claude-code：用代理把 Claude Code 接到 OpenRouter、DeepSeek 和本地模型</title>
        <link>https://knightli.com/zh-tw/2026/05/01/free-claude-code-anthropic-compatible-proxy/</link>
        <pubDate>Fri, 01 May 2026 03:41:49 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/free-claude-code-anthropic-compatible-proxy/</guid>
        <description>&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 是一個給 &lt;code&gt;Claude Code&lt;/code&gt; 使用的 Anthropic-compatible proxy。&lt;/p&gt;
&lt;p&gt;它的思路不是破解 Claude Code，也不是提供官方免費的 Claude 服務，而是在本地啟動一個相容 Anthropic API 形狀的代理服務，把 Claude Code 發出的請求轉發到其他模型後端。README 中提到的後端包括 NVIDIA NIM、OpenRouter、DeepSeek、LM Studio、llama.cpp 和 Ollama。&lt;/p&gt;
&lt;p&gt;簡單說，它想解決的是：你喜歡 Claude Code 的終端體驗，但希望把模型請求接到別的 provider 或本地模型上。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;Claude Code 的互動體驗很適合開發任務。&lt;/p&gt;
&lt;p&gt;它可以在終端裡閱讀程式碼、修改檔案、執行命令、根據專案上下文推進任務。問題是，很多使用者並不一定想始終使用同一個模型後端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想試試 OpenRouter 上的不同模型&lt;/li&gt;
&lt;li&gt;想用 DeepSeek 這類模型降低成本&lt;/li&gt;
&lt;li&gt;想把請求接到本地 Ollama&lt;/li&gt;
&lt;li&gt;想用 LM Studio 或 llama.cpp 跑本地模型&lt;/li&gt;
&lt;li&gt;想在開發環境裡統一走一個代理入口&lt;/li&gt;
&lt;li&gt;想比較不同模型在 Claude Code 工作流裡的表現&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的定位，就是在 Claude Code 和這些模型服務之間加一層相容代理。&lt;/p&gt;
&lt;p&gt;這樣 Claude Code 仍然按 Anthropic 風格發請求，代理負責把請求適配到不同後端。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;可以把它理解成三層：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前端是 Claude Code&lt;/li&gt;
&lt;li&gt;中間是 &lt;code&gt;free-claude-code&lt;/code&gt; 代理&lt;/li&gt;
&lt;li&gt;後端是 OpenRouter、DeepSeek、本地模型或其他模型服務&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Claude Code 以為自己在存取一個 Anthropic-compatible API。&lt;/p&gt;
&lt;p&gt;代理收到請求後，根據配置選擇目標 provider，轉換必要欄位，再把回應返回給 Claude Code。&lt;/p&gt;
&lt;p&gt;這類結構的好處是，你不用改 Claude Code 本身，也不用讓每個模型服務都原生支援 Claude Code。只要代理能把介面對齊，就能把更多模型接進同一個工作流。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些後端&#34;&gt;支援哪些後端
&lt;/h2&gt;&lt;p&gt;README 中列出的方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA NIM&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;LM Studio&lt;/li&gt;
&lt;li&gt;llama.cpp&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些後端代表了幾類不同使用方式。&lt;/p&gt;
&lt;p&gt;OpenRouter 更像模型聚合入口，可以測試不同商業和開源模型。&lt;/p&gt;
&lt;p&gt;DeepSeek 適合關注中文能力、程式碼能力和成本的人。&lt;/p&gt;
&lt;p&gt;LM Studio、llama.cpp、Ollama 則偏本地模型路線。它們適合在自己的機器或內網環境裡執行模型，減少外部 API 依賴，也方便做離線實驗。&lt;/p&gt;
&lt;p&gt;NVIDIA NIM 則更偏企業和 GPU 推理部署場景。&lt;/p&gt;
&lt;h2 id=&#34;為什麼是-anthropic-compatible-proxy&#34;&gt;為什麼是 Anthropic-compatible proxy
&lt;/h2&gt;&lt;p&gt;Claude Code 本來圍繞 Anthropic 的介面和模型習慣設計。&lt;/p&gt;
&lt;p&gt;如果你想讓它接入其他模型，最直接的問題就是介面不一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;請求欄位不同&lt;/li&gt;
&lt;li&gt;模型名稱不同&lt;/li&gt;
&lt;li&gt;streaming 格式不同&lt;/li&gt;
&lt;li&gt;tool use 表達不同&lt;/li&gt;
&lt;li&gt;錯誤返回格式不同&lt;/li&gt;
&lt;li&gt;token 和上下文限制不同&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代理層的價值就在這裡。&lt;/p&gt;
&lt;p&gt;它把 Claude Code 這邊看到的介面維持在接近 Anthropic 的形狀，再在後端做適配。對使用者來說，配置一次代理後，就可以在相同 Claude Code 工作流裡測試不同模型。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想用 Claude Code 的終端工作流&lt;/li&gt;
&lt;li&gt;想測試非 Anthropic 模型在 Claude Code 裡的表現&lt;/li&gt;
&lt;li&gt;想降低模型呼叫成本&lt;/li&gt;
&lt;li&gt;想把 Claude Code 接到 OpenRouter&lt;/li&gt;
&lt;li&gt;想接入 DeepSeek 等相容模型服務&lt;/li&gt;
&lt;li&gt;想用 Ollama、LM Studio、llama.cpp 跑本地模型&lt;/li&gt;
&lt;li&gt;想為團隊統一配置一個模型代理入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是正常使用官方 Claude Code，並且對模型提供方、成本和本地部署沒有特殊需求，那不一定需要這類代理。&lt;/p&gt;
&lt;p&gt;但如果你經常比較模型，或者希望讓 Claude Code 接入本地和第三方模型，這類工具會很有用。&lt;/p&gt;
&lt;h2 id=&#34;和直接用-openrouter-或-ollama-有什麼區別&#34;&gt;和直接用 OpenRouter 或 Ollama 有什麼區別
&lt;/h2&gt;&lt;p&gt;直接用 OpenRouter、Ollama 或 LM Studio，通常只是和模型聊天，或者透過 API 呼叫模型。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的重點不是替代這些服務，而是把它們接到 Claude Code 這個開發工作流裡。&lt;/p&gt;
&lt;p&gt;區別在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你仍然使用 Claude Code 的終端體驗&lt;/li&gt;
&lt;li&gt;AI 可以圍繞程式碼倉庫執行任務&lt;/li&gt;
&lt;li&gt;模型後端可以換成其他 provider&lt;/li&gt;
&lt;li&gt;本地模型也有機會進入 Claude Code 工作流&lt;/li&gt;
&lt;li&gt;配置集中在代理層，而不是每個工具單獨改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像橋接器，而不是新的聊天客戶端。&lt;/p&gt;
&lt;h2 id=&#34;本地模型要注意什麼&#34;&gt;本地模型要注意什麼
&lt;/h2&gt;&lt;p&gt;把 Claude Code 接到本地模型很有吸引力，但也要注意現實限制。&lt;/p&gt;
&lt;p&gt;第一，模型能力差距。&lt;/p&gt;
&lt;p&gt;Claude Code 的任務通常不只是聊天，還包括理解程式碼、規劃修改、編輯檔案、處理命令輸出。本地小模型不一定能穩定完成這些任務。&lt;/p&gt;
&lt;p&gt;第二，上下文視窗。&lt;/p&gt;
&lt;p&gt;程式碼任務很吃上下文。模型上下文太小，會導致它讀不全檔案、漏掉約束，或者在多輪任務裡丟失背景。&lt;/p&gt;
&lt;p&gt;第三，tool use 相容性。&lt;/p&gt;
&lt;p&gt;Claude Code 工作流依賴工具呼叫和結構化行為。後端模型即使能聊天，也未必擅長遵循工具呼叫協議。&lt;/p&gt;
&lt;p&gt;第四，速度和硬體。&lt;/p&gt;
&lt;p&gt;本地模型的速度取決於機器配置、量化方式和模型大小。程式碼任務如果回應太慢，體驗會明顯下降。&lt;/p&gt;
&lt;p&gt;所以，本地模型更適合實驗、低風險任務和特定場景。真正複雜的程式碼任務，仍然要根據模型能力謹慎選擇。&lt;/p&gt;
&lt;h2 id=&#34;使用邊界&#34;&gt;使用邊界
&lt;/h2&gt;&lt;p&gt;這類專案很容易被標題誤解，所以邊界要說清楚。&lt;/p&gt;
&lt;p&gt;第一，它不是官方 Claude Code 免費額度。&lt;/p&gt;
&lt;p&gt;它只是把 Claude Code 的請求轉發到其他模型後端。你使用 OpenRouter、DeepSeek、NVIDIA NIM 或其他 API 時，仍然需要遵守對應服務的價格、額度和使用條款。&lt;/p&gt;
&lt;p&gt;第二，它不是繞過授權的工具。&lt;/p&gt;
&lt;p&gt;使用任何代理工具時，都應該遵守 Claude Code、模型服務商和專案本身的授權協議。不要把它理解成規避官方限制的方式。&lt;/p&gt;
&lt;p&gt;第三，代理會處理你的請求內容。&lt;/p&gt;
&lt;p&gt;程式碼、命令輸出、專案上下文可能會經過代理和後端服務。部署時要考慮日誌、金鑰、網路和隱私邊界。涉及公司程式碼或敏感專案時，最好使用受控環境。&lt;/p&gt;
&lt;p&gt;第四，不同模型表現差異會很大。&lt;/p&gt;
&lt;p&gt;同樣的 Claude Code 操作，換一個模型後可能出現完全不同的行為。不要預設所有模型都能替代 Claude。&lt;/p&gt;
&lt;h2 id=&#34;和-litellm-這類代理有什麼關係&#34;&gt;和 LiteLLM 這類代理有什麼關係
&lt;/h2&gt;&lt;p&gt;從思路上看，&lt;code&gt;free-claude-code&lt;/code&gt; 屬於「相容介面代理」這一類工具。&lt;/p&gt;
&lt;p&gt;這類工具的共同目標是減少上層應用和底層模型服務之間的耦合。上層應用只需要面對一個相對統一的介面，底層 provider 可以按配置切換。&lt;/p&gt;
&lt;p&gt;不同專案的側重點不同。有的更偏通用模型閘道，有的更偏 OpenAI-compatible API，有的專門為 Claude Code 這類工具做適配。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 值得關注的地方，是它把目標場景直接放在 Claude Code 上，而不是做一個泛泛的聊天代理。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的使用者&#34;&gt;適合怎樣的使用者
&lt;/h2&gt;&lt;p&gt;它更適合有一定折騰能力的使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;熟悉 Claude Code&lt;/li&gt;
&lt;li&gt;知道 API key 和模型 provider 怎麼配置&lt;/li&gt;
&lt;li&gt;能理解代理服務的啟動和環境變數&lt;/li&gt;
&lt;li&gt;能排查網路、連接埠、模型名稱和 streaming 問題&lt;/li&gt;
&lt;li&gt;願意比較不同模型在程式碼任務裡的表現&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只想開箱即用，官方配置通常更省心。&lt;/p&gt;
&lt;p&gt;如果你願意搭代理、換模型、調參數，並且想讓 Claude Code 進入更多模型環境，這個專案就值得研究。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; 的價值，不在於「免費」這個詞，而在於它把 Claude Code 和更多模型後端之間接了一座橋。&lt;/p&gt;
&lt;p&gt;當你想保留 Claude Code 的開發體驗，同時測試 OpenRouter、DeepSeek、本地模型或企業推理服務時，這類 Anthropic-compatible proxy 就有了用武之地。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Compound Engineering Plugin：把 AI 編程變成計劃、執行、評審的工程循環</title>
        <link>https://knightli.com/zh-tw/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</link>
        <pubDate>Fri, 01 May 2026 03:15:39 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</guid>
        <description>&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 是 Every Inc 開源的一個 AI 編程工作流插件。&lt;/p&gt;
&lt;p&gt;它關注的不是「讓 AI 更快寫一段程式碼」，而是把 AI 編程放進一個更像工程團隊的循環裡：先計劃，再實現，再評審，再把經驗沉澱下來。對經常使用 Claude Code、Codex、Cursor、Copilot 這類工具的人來說，這類插件解決的是工作流問題，而不只是提示詞問題。&lt;/p&gt;
&lt;p&gt;AI 編程工具越來越強，但真實專案裡最難的往往不是生成程式碼，而是讓它持續按專案規則做事、理解任務邊界、避免重複犯錯，並在多輪迭代中積累上下文。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多人使用 AI 編程助手時，流程大概是這樣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;直接描述需求&lt;/li&gt;
&lt;li&gt;讓 AI 改程式碼&lt;/li&gt;
&lt;li&gt;看結果是否能跑&lt;/li&gt;
&lt;li&gt;出錯後繼續補充說明&lt;/li&gt;
&lt;li&gt;下次新任務再從頭解釋一遍&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這種方式能完成小任務，但在複雜專案裡很容易遇到問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求沒有先拆清楚，AI 直接開始改&lt;/li&gt;
&lt;li&gt;改完程式碼後缺少系統性 review&lt;/li&gt;
&lt;li&gt;專案規範靠使用者反覆提醒&lt;/li&gt;
&lt;li&gt;同類錯誤下次仍然出現&lt;/li&gt;
&lt;li&gt;多個 Agent 工具之間缺少統一工作方法&lt;/li&gt;
&lt;li&gt;經驗沒有沉澱成可複用規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 想解決的就是這類問題。它把 AI 編程拆成多個階段，讓 Agent 不只是執行命令，而是參與一個更完整的工程流程。&lt;/p&gt;
&lt;h2 id=&#34;什麼是-compound-engineering&#34;&gt;什麼是 Compound Engineering
&lt;/h2&gt;&lt;p&gt;從專案 README 的描述看，Compound Engineering 可以理解為一種 AI 輔助軟體開發方法。&lt;/p&gt;
&lt;p&gt;它強調一個循環：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;計劃：先理解目標、拆分任務、確認路徑&lt;/li&gt;
&lt;li&gt;執行：按計劃修改程式碼、執行命令、處理問題&lt;/li&gt;
&lt;li&gt;評審：檢查實現品質、風險和測試覆蓋&lt;/li&gt;
&lt;li&gt;學習：把經驗沉澱成後續可複用的規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個循環很像真實工程團隊的工作方式。&lt;/p&gt;
&lt;p&gt;一個可靠的工程師不會拿到需求就立刻亂改，也不會改完就直接交差。他會先判斷影響範圍，再動手實現，之後檢查風險和測試結果，最後把踩過的坑記錄下來。AI Agent 也需要類似約束。&lt;/p&gt;
&lt;h2 id=&#34;為什麼需要插件&#34;&gt;為什麼需要插件
&lt;/h2&gt;&lt;p&gt;提示詞可以告訴 AI「請先計劃再執行」，但提示詞本身不一定穩定。&lt;/p&gt;
&lt;p&gt;一旦會話變長、上下文變複雜，模型可能會跳過計劃、忽略規則，或者為了完成任務而過度自信。插件的價值在於把流程固化下來，讓不同 Agent 環境都能遵循類似方法。&lt;/p&gt;
&lt;p&gt;這類插件通常會把工作流拆成命令、規則、模板或子流程。使用者不需要每次手寫完整提示詞，而是透過固定入口觸發某個階段。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先讓 Agent 生成計劃&lt;/li&gt;
&lt;li&gt;再按計劃逐步實現&lt;/li&gt;
&lt;li&gt;改完後觸發 review&lt;/li&gt;
&lt;li&gt;發現問題後返回修正&lt;/li&gt;
&lt;li&gt;把值得保留的經驗寫入記憶或規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這會讓 AI 編程更像「受控協作」，而不是一次性聊天。&lt;/p&gt;
&lt;h2 id=&#34;支援哪些-agent-環境&#34;&gt;支援哪些 Agent 環境
&lt;/h2&gt;&lt;p&gt;README 中提到，專案支援多個 AI 編程環境，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code&lt;/li&gt;
&lt;li&gt;Codex&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Amp&lt;/li&gt;
&lt;li&gt;Factory&lt;/li&gt;
&lt;li&gt;Qwen Code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這點值得注意。&lt;/p&gt;
&lt;p&gt;很多工作流工具只綁定一個客戶端，換工具後規則就不能複用。&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 更像一套跨 Agent 的工程方法，把類似的計劃、執行、評審流程帶到不同工具裡。&lt;/p&gt;
&lt;p&gt;如果你同時使用多個 AI 編程助手，這類統一工作流會更有價值。不同工具能力不同，但專案規範、評審習慣和任務拆解方法應該盡量一致。&lt;/p&gt;
&lt;h2 id=&#34;計劃階段有什麼用&#34;&gt;計劃階段有什麼用
&lt;/h2&gt;&lt;p&gt;計劃階段的價值，是防止 AI 過早動手。&lt;/p&gt;
&lt;p&gt;複雜任務裡，真正重要的問題通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要改哪些檔案&lt;/li&gt;
&lt;li&gt;哪些模組可能受影響&lt;/li&gt;
&lt;li&gt;現有模式是什麼&lt;/li&gt;
&lt;li&gt;有沒有測試&lt;/li&gt;
&lt;li&gt;風險點在哪裡&lt;/li&gt;
&lt;li&gt;是否需要先閱讀文件&lt;/li&gt;
&lt;li&gt;能不能拆成更小步驟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Agent 沒有先想清楚這些問題，就直接開始寫程式碼，很容易做出看似完成、實際偏離專案結構的實現。&lt;/p&gt;
&lt;p&gt;計劃並不一定要很長。好的計劃應該短、具體、可執行。它的目的不是製造文件，而是讓後續實現有邊界。&lt;/p&gt;
&lt;h2 id=&#34;執行階段要避免什麼&#34;&gt;執行階段要避免什麼
&lt;/h2&gt;&lt;p&gt;AI 執行程式碼任務時，最容易出現幾類問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;順手重構無關程式碼&lt;/li&gt;
&lt;li&gt;覆蓋使用者已有修改&lt;/li&gt;
&lt;li&gt;只改 happy path&lt;/li&gt;
&lt;li&gt;忽略錯誤處理&lt;/li&gt;
&lt;li&gt;不按專案已有風格寫&lt;/li&gt;
&lt;li&gt;沒有執行必要驗證&lt;/li&gt;
&lt;li&gt;遇到錯誤後盲目嘗試&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工作流插件無法保證這些問題完全消失，但可以透過規則和階段約束減少發生機率。&lt;/p&gt;
&lt;p&gt;比如，執行階段可以要求 Agent 按計劃逐步推進；遇到超出計劃範圍的發現時，先說明風險；修改共享模組時，補充測試或至少執行相關驗證。&lt;/p&gt;
&lt;p&gt;這種約束對大型程式碼庫尤其重要。AI 寫程式碼越快，越需要流程來限制它的慣性。&lt;/p&gt;
&lt;h2 id=&#34;評審階段為什麼重要&#34;&gt;評審階段為什麼重要
&lt;/h2&gt;&lt;p&gt;很多 AI 編程失敗，不是因為程式碼完全不能執行，而是因為細節有問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;邊界條件沒處理&lt;/li&gt;
&lt;li&gt;狀態更新不一致&lt;/li&gt;
&lt;li&gt;API 合約被悄悄改了&lt;/li&gt;
&lt;li&gt;測試覆蓋不到關鍵路徑&lt;/li&gt;
&lt;li&gt;錯誤提示不清楚&lt;/li&gt;
&lt;li&gt;效能或安全風險沒有被提到&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;評審階段就是把 Agent 從「作者模式」切換到「審查模式」。&lt;/p&gt;
&lt;p&gt;作者模式容易為自己的實現找理由；審查模式則要主動找漏洞、回歸風險和遺漏測試。把這兩個階段分開，會比讓同一個回覆裡同時完成實現和自我審查更可靠。&lt;/p&gt;
&lt;p&gt;對使用者來說，評審輸出也更有價值。它能幫助你快速判斷這次修改是否值得合併，還是需要繼續返工。&lt;/p&gt;
&lt;h2 id=&#34;學習和記憶的意義&#34;&gt;學習和記憶的意義
&lt;/h2&gt;&lt;p&gt;專案名字裡的 “Compound” 暗示了一個重要想法：工程經驗應該複利增長。&lt;/p&gt;
&lt;p&gt;如果 AI 每次犯錯後只是當場修好，下次又犯同樣錯誤，效率提升就很有限。更好的方式是把有價值的經驗沉澱下來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這個專案的目錄約定&lt;/li&gt;
&lt;li&gt;某類錯誤的排查方法&lt;/li&gt;
&lt;li&gt;測試命令和注意事項&lt;/li&gt;
&lt;li&gt;不要觸碰的生成檔案&lt;/li&gt;
&lt;li&gt;程式碼風格偏好&lt;/li&gt;
&lt;li&gt;常見實現模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些經驗可以變成規則、記憶、文件或模板。後續任務中，Agent 先讀取這些沉澱，再開始工作。&lt;/p&gt;
&lt;p&gt;這就是 AI 編程從「單次問答」走向「長期協作」的關鍵。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長期使用 AI Agent 寫程式碼&lt;/li&gt;
&lt;li&gt;一個專案會被多次、多輪修改&lt;/li&gt;
&lt;li&gt;希望 AI 先計劃再實現&lt;/li&gt;
&lt;li&gt;希望改完後自動進入 review 思維&lt;/li&gt;
&lt;li&gt;團隊想統一 AI 編程流程&lt;/li&gt;
&lt;li&gt;同時使用 Claude Code、Codex、Cursor 等多個工具&lt;/li&gt;
&lt;li&gt;希望把專案經驗沉澱成可複用規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是偶爾讓 AI 寫一個小腳本，完整流程可能顯得偏重。&lt;/p&gt;
&lt;p&gt;但如果你正在把 AI 編程助手當成日常開發夥伴，計劃、執行、評審、學習這套循環就會明顯有用。&lt;/p&gt;
&lt;h2 id=&#34;和普通提示詞模板有什麼區別&#34;&gt;和普通提示詞模板有什麼區別
&lt;/h2&gt;&lt;p&gt;普通提示詞模板通常解決的是「怎麼說清楚任務」。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;請一步步思考&lt;/li&gt;
&lt;li&gt;請先閱讀檔案&lt;/li&gt;
&lt;li&gt;請保持程式碼風格一致&lt;/li&gt;
&lt;li&gt;請執行測試&lt;/li&gt;
&lt;li&gt;請總結修改內容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些提示當然有用，但它們還是依賴使用者每次正確使用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 更偏工作流層。它把這些要求組織成可重複的過程，並適配不同 Agent 工具。這樣你不是每次從零寫提示詞，而是在一套流程裡推進任務。&lt;/p&gt;
&lt;p&gt;簡單說，提示詞模板像提醒，工作流插件像制度。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意&#34;&gt;使用時要注意
&lt;/h2&gt;&lt;p&gt;第一，不要把流程變成負擔。&lt;/p&gt;
&lt;p&gt;小任務不一定需要完整計劃和長篇評審。好的工作流應該能根據任務複雜度調整，簡單問題快速處理，複雜問題再走完整循環。&lt;/p&gt;
&lt;p&gt;第二，評審不能替代測試。&lt;/p&gt;
&lt;p&gt;Agent review 能發現很多問題，但它仍然可能漏掉真實執行時錯誤。最終判斷還要看測試、型別檢查、構建結果和人工審查。&lt;/p&gt;
&lt;p&gt;第三，規則要持續清理。&lt;/p&gt;
&lt;p&gt;沉澱經驗很重要，但規則越積越多也會變成噪音。過時規則、重複規則、只適合某次任務的臨時經驗，都應該定期整理。&lt;/p&gt;
&lt;p&gt;第四，跨工具一致不等於完全相同。&lt;/p&gt;
&lt;p&gt;Claude Code、Codex、Cursor、Copilot 等工具能力和互動方式不同。統一的是工作方法，不一定是每個命令、每個配置細節都完全一樣。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的團隊&#34;&gt;適合怎樣的團隊
&lt;/h2&gt;&lt;p&gt;如果一個團隊已經允許 AI Agent 修改真實程式碼，那麼只討論「哪個模型更強」是不夠的。&lt;/p&gt;
&lt;p&gt;更應該關心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI 修改前是否理解任務&lt;/li&gt;
&lt;li&gt;AI 修改中是否遵守專案邊界&lt;/li&gt;
&lt;li&gt;AI 修改後是否主動審查風險&lt;/li&gt;
&lt;li&gt;AI 是否能從歷史錯誤中學習&lt;/li&gt;
&lt;li&gt;團隊是否有統一的 Agent 使用規範&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 這類專案的意義就在這裡。它把 AI 編程從個人技巧，往團隊可複用流程推進了一步。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; 值得關注的地方，不是多一個 AI 編程命令，而是把 AI 編程組織成可循環改進的工程流程。&lt;/p&gt;
&lt;p&gt;當 AI Agent 開始參與真實專案，計劃、執行、評審和經驗沉澱會比單次生成程式碼更重要。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>TradingAgents-CN：面向中文使用者的多智能體金融交易研究框架</title>
        <link>https://knightli.com/zh-tw/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/</link>
        <pubDate>Fri, 01 May 2026 03:14:15 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 是一個面向中文使用者的多智能體金融交易研究框架。&lt;/p&gt;
&lt;p&gt;它的目標不是給出「買哪隻股票」的簡單答案，而是用多個 AI Agent 模擬一個更完整的金融分析團隊：有人看基本面，有人看技術面，有人關注新聞和情緒，也有人負責風險和最終決策。對想研究 LLM + Agent + 金融分析的人來說，這類專案很適合作為實驗入口。&lt;/p&gt;
&lt;p&gt;需要先說清楚：這類工具適合學習、研究和輔助分析，不應該被當成實盤交易建議。金融市場有風險，模型輸出也可能出錯、滯後或過度自信。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;普通聊天模型當然也能分析股票。&lt;/p&gt;
&lt;p&gt;你可以直接問：「幫我分析某某公司能不能買。」模型會給出一段看起來完整的回答。但這種方式有幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析鏈路不透明&lt;/li&gt;
&lt;li&gt;不同維度容易混在一起&lt;/li&gt;
&lt;li&gt;缺少角色分工&lt;/li&gt;
&lt;li&gt;缺少正反觀點碰撞&lt;/li&gt;
&lt;li&gt;風險提示可能流於形式&lt;/li&gt;
&lt;li&gt;很難復現同一套分析流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的思路是把金融分析拆成多個角色，讓不同 Agent 負責不同角度，再透過協作、討論和總結形成分析結果。&lt;/p&gt;
&lt;p&gt;這更接近真實投研流程。一個投資判斷通常不會只看一條新聞或一個技術指標，而是要結合公司基本面、市場環境、價格走勢、資金情緒、政策風險和倉位控制。&lt;/p&gt;
&lt;h2 id=&#34;多智能體分析是什麼意思&#34;&gt;多智能體分析是什麼意思
&lt;/h2&gt;&lt;p&gt;多智能體不是簡單地讓多個模型輪流說話。&lt;/p&gt;
&lt;p&gt;更有價值的做法，是給不同 Agent 分配清楚職責。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;市場分析 Agent：關注行情走勢、價格變化和市場環境&lt;/li&gt;
&lt;li&gt;基本面分析 Agent：關注公司業務、財務資料和長期價值&lt;/li&gt;
&lt;li&gt;新聞分析 Agent：關注公告、新聞、輿情和事件影響&lt;/li&gt;
&lt;li&gt;技術分析 Agent：關注趨勢、指標、支撐阻力和交易訊號&lt;/li&gt;
&lt;li&gt;風險管理 Agent：關注波動、回撤、倉位和不確定性&lt;/li&gt;
&lt;li&gt;決策 Agent：綜合不同意見，形成最終判斷&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣的結構可以減少單個模型「一口氣說完所有結論」的問題。&lt;/p&gt;
&lt;p&gt;當不同角色圍繞同一個標的展開分析時，系統更容易呈現出多維度判斷，也更容易暴露分歧。對學習者來說，這比只看一段總結更有啟發。&lt;/p&gt;
&lt;h2 id=&#34;為什麼需要中文版本&#34;&gt;為什麼需要中文版本
&lt;/h2&gt;&lt;p&gt;金融分析和語言環境關係很深。&lt;/p&gt;
&lt;p&gt;中文使用者關注的資料來源、市場習慣、股票名稱、交易制度、新聞表達和常見術語，都和英文環境不同。直接使用英文框架，經常會遇到幾類問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文股票名稱和代碼處理不順&lt;/li&gt;
&lt;li&gt;A 股、港股、美股語境混雜&lt;/li&gt;
&lt;li&gt;中文財經新聞理解不穩定&lt;/li&gt;
&lt;li&gt;國內資料源接入不方便&lt;/li&gt;
&lt;li&gt;輸出風格不符合中文使用者閱讀習慣&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的意義在於把這套多智能體金融分析流程面向中文使用者做了適配。它讓中文使用者更容易搭建、執行和理解整個交易分析實驗流程。&lt;/p&gt;
&lt;h2 id=&#34;可以用來做什麼&#34;&gt;可以用來做什麼
&lt;/h2&gt;&lt;p&gt;這個專案更適合做研究和輔助分析，而不是自動下單。&lt;/p&gt;
&lt;p&gt;比較合適的用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;學習多智能體系統如何協作&lt;/li&gt;
&lt;li&gt;研究 LLM 在金融分析中的表現&lt;/li&gt;
&lt;li&gt;對股票進行多角度資訊整理&lt;/li&gt;
&lt;li&gt;比較不同模型在投研任務中的差異&lt;/li&gt;
&lt;li&gt;搭建自己的金融分析 Agent 原型&lt;/li&gt;
&lt;li&gt;複盤某個標的的歷史資訊和風險點&lt;/li&gt;
&lt;li&gt;練習把投研流程拆成可執行任務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你正在學習量化交易、金融工程、AI Agent 或 LLM 應用開發，這類專案可以幫助你理解「AI 投研助手」背後的工程結構。&lt;/p&gt;
&lt;h2 id=&#34;不適合做什麼&#34;&gt;不適合做什麼
&lt;/h2&gt;&lt;p&gt;它不適合被直接當成穩賺工具。&lt;/p&gt;
&lt;p&gt;尤其不適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接根據輸出滿倉買賣&lt;/li&gt;
&lt;li&gt;用模型結論替代自己的風險判斷&lt;/li&gt;
&lt;li&gt;把短期價格預測當成確定結果&lt;/li&gt;
&lt;li&gt;忽略交易成本、滑點和流動性&lt;/li&gt;
&lt;li&gt;不做回測就接入真實帳戶&lt;/li&gt;
&lt;li&gt;用單次分析結論替代長期投資策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLM 擅長整理資訊、生成解釋、模擬推理流程，但它並不天然擁有穩定預測市場的能力。金融市場裡，資訊噪音、突發事件和行為博弈都很強，模型輸出只能作為參考材料之一。&lt;/p&gt;
&lt;h2 id=&#34;和普通量化框架有什麼區別&#34;&gt;和普通量化框架有什麼區別
&lt;/h2&gt;&lt;p&gt;傳統量化框架更關注資料、因子、回測、組合優化和交易執行。&lt;/p&gt;
&lt;p&gt;比如你會定義策略規則：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;均線突破&lt;/li&gt;
&lt;li&gt;動量因子&lt;/li&gt;
&lt;li&gt;價值因子&lt;/li&gt;
&lt;li&gt;波動率過濾&lt;/li&gt;
&lt;li&gt;止損止盈&lt;/li&gt;
&lt;li&gt;倉位管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然後用歷史資料回測策略表現。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 更偏向「智能體分析框架」。它關注的是如何讓多個 LLM Agent 圍繞金融任務協作，如何模擬投研討論，如何把新聞、基本面、技術面和風險判斷組織起來。&lt;/p&gt;
&lt;p&gt;兩者不是替代關係。&lt;/p&gt;
&lt;p&gt;更現實的用法是：傳統量化系統負責可驗證的規則和回測，Agent 系統負責資訊整理、報告生成、觀點對比和輔助決策。最終能不能進入真實交易，還要經過嚴謹回測、風控和人工審核。&lt;/p&gt;
&lt;h2 id=&#34;和直接問-chatgpt-有什麼區別&#34;&gt;和直接問 ChatGPT 有什麼區別
&lt;/h2&gt;&lt;p&gt;直接問模型的門檻最低，但流程很鬆散。&lt;/p&gt;
&lt;p&gt;你問一次，它答一次。換個問法，結論可能就變了。你很難保證它每次都從同樣的維度分析，也很難讓它穩定扮演多個互相制衡的角色。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 的價值是把分析流程結構化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;角色更明確&lt;/li&gt;
&lt;li&gt;步驟更可復現&lt;/li&gt;
&lt;li&gt;資訊來源更容易組織&lt;/li&gt;
&lt;li&gt;觀點碰撞更自然&lt;/li&gt;
&lt;li&gt;風險檢查更容易單獨處理&lt;/li&gt;
&lt;li&gt;輸出更像一份投研流程結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這對學習和研究很有用。你可以觀察不同 Agent 如何影響最終結論，也可以替換模型、調整提示詞、修改角色分工，比較結果變化。&lt;/p&gt;
&lt;h2 id=&#34;使用時要關注哪些風險&#34;&gt;使用時要關注哪些風險
&lt;/h2&gt;&lt;p&gt;第一，資料品質。&lt;/p&gt;
&lt;p&gt;金融分析非常依賴資料。如果行情、財報、新聞或公告資料不完整、不及時，Agent 分析再流暢也可能建立在錯誤基礎上。&lt;/p&gt;
&lt;p&gt;第二，模型幻覺。&lt;/p&gt;
&lt;p&gt;LLM 可能編造不存在的事實、誤解資料含義，或者把舊資訊當成新資訊。涉及具體股票時，必須回到資料源核對。&lt;/p&gt;
&lt;p&gt;第三，過度解釋。&lt;/p&gt;
&lt;p&gt;模型很擅長給出「看起來合理」的解釋，但市場價格變化未必真的來自它列出的原因。不要把事後解釋誤當成因果證明。&lt;/p&gt;
&lt;p&gt;第四，回測和實盤差距。&lt;/p&gt;
&lt;p&gt;即便某個策略在歷史資料中表現不錯，真實交易中仍然會遇到滑點、手續費、流動性、停牌、漲跌停、極端行情等問題。&lt;/p&gt;
&lt;p&gt;第五，許可證和商用邊界。&lt;/p&gt;
&lt;p&gt;README 中提到專案採用混合許可證。個人學習研究和商業使用的條件可能不同。如果準備把它放進商業產品或服務，需要先仔細閱讀專案許可證說明。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的人研究&#34;&gt;適合怎樣的人研究
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 適合這些人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想學習 AI Agent 架構的開發者&lt;/li&gt;
&lt;li&gt;想研究 LLM 金融分析能力的人&lt;/li&gt;
&lt;li&gt;做量化交易但想加入自然語言分析的人&lt;/li&gt;
&lt;li&gt;想搭建投研輔助工具的團隊&lt;/li&gt;
&lt;li&gt;想了解多角色協作如何影響決策的人&lt;/li&gt;
&lt;li&gt;希望用中文環境實驗交易 Agent 的使用者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目標只是獲得一個簡單的買賣建議，這個專案反而不是最合適的打開方式。它更值得關注的是流程、角色、協作和風險控制，而不是某一次輸出的結論。&lt;/p&gt;
&lt;h2 id=&#34;可以怎麼擴展&#34;&gt;可以怎麼擴展
&lt;/h2&gt;&lt;p&gt;這類框架後續有很多可擴展方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;接入更多可靠資料源&lt;/li&gt;
&lt;li&gt;增加本地模型支援&lt;/li&gt;
&lt;li&gt;加入回測模組&lt;/li&gt;
&lt;li&gt;細化 A 股、港股、美股不同市場規則&lt;/li&gt;
&lt;li&gt;增加產業分析 Agent&lt;/li&gt;
&lt;li&gt;增加組合管理和倉位控制&lt;/li&gt;
&lt;li&gt;加強報告引用和資料溯源&lt;/li&gt;
&lt;li&gt;把 Agent 結論和傳統量化訊號結合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正有價值的金融 AI 系統，通常不是讓模型單獨決定一切，而是讓它嵌入一個可驗證、可追蹤、可風控的流程裡。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; 值得關注的地方，不是它能不能預測下一根 K 線，而是它把金融分析拆成了一個多智能體協作流程。&lt;/p&gt;
&lt;p&gt;把它當作學習和研究工具，會比把它當作自動賺錢機器更合理。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>qmd：給 AI Agent 使用的本地 Markdown 文件搜尋工具</title>
        <link>https://knightli.com/zh-tw/2026/05/01/qmd-markdown-search-for-ai-agents/</link>
        <pubDate>Fri, 01 May 2026 03:12:57 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/qmd-markdown-search-for-ai-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 是一個面向本地 Markdown 文件的搜尋工具，重點服務對象是 AI Agent。&lt;/p&gt;
&lt;p&gt;它解決的問題很具體：當你的專案裡有大量 &lt;code&gt;.md&lt;/code&gt; 文件時，AI 編程助手經常不知道該讀哪一份、該引用哪一段、哪些說明才是最新的。靠全文 grep 可以找到關鍵詞，但很難理解語義；直接把整套文件塞進上下文，又浪費視窗，還容易混入無關內容。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的思路是先為 Markdown 文件建立索引，再透過搜尋介面把最相關的片段交給 AI 使用。它既可以作為命令列工具使用，也可以透過 SDK 整合，還可以作為 MCP Server 接入支援 MCP 的客戶端。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;真實專案裡的文件通常不是一兩篇 README。&lt;/p&gt;
&lt;p&gt;你可能會有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架構說明&lt;/li&gt;
&lt;li&gt;API 文件&lt;/li&gt;
&lt;li&gt;開發規範&lt;/li&gt;
&lt;li&gt;部署流程&lt;/li&gt;
&lt;li&gt;設計決策記錄&lt;/li&gt;
&lt;li&gt;故障排查筆記&lt;/li&gt;
&lt;li&gt;需求文件&lt;/li&gt;
&lt;li&gt;AI 使用說明&lt;/li&gt;
&lt;li&gt;各種工具鏈備忘錄&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人類查文件時可以順著目錄慢慢看，但 AI Agent 更需要一個明確的檢索入口。否則它可能會：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀錯文件&lt;/li&gt;
&lt;li&gt;漏掉關鍵約束&lt;/li&gt;
&lt;li&gt;使用過時說明&lt;/li&gt;
&lt;li&gt;把不相關內容塞進上下文&lt;/li&gt;
&lt;li&gt;在回答裡憑經驗補全不存在的規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的價值就在這裡：它把本地 Markdown 文件變成可檢索的知識源，讓 AI 在需要上下文時先搜尋，再基於匹配片段回答或執行任務。&lt;/p&gt;
&lt;h2 id=&#34;搜尋方式有什麼特點&#34;&gt;搜尋方式有什麼特點
&lt;/h2&gt;&lt;p&gt;README 中提到，&lt;code&gt;qmd&lt;/code&gt; 使用了多種檢索方式組合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BM25 關鍵詞搜尋&lt;/li&gt;
&lt;li&gt;向量搜尋&lt;/li&gt;
&lt;li&gt;LLM reranking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BM25 適合處理明確關鍵詞。比如你搜尋某個函式名稱、配置項、錯誤碼、檔案名稱，它通常很直接。&lt;/p&gt;
&lt;p&gt;向量搜尋更適合語義問題。比如你問「這個專案怎麼處理權限校驗」，文件裡未必正好寫了「權限校驗」四個字，但可能有相關的認證、存取控制、角色判斷說明。&lt;/p&gt;
&lt;p&gt;LLM reranking 則用於重新排序候選結果。前兩步先把可能相關的內容找出來，再讓模型判斷哪些片段更符合當前問題。&lt;/p&gt;
&lt;p&gt;這種組合比單純關鍵詞搜尋更適合 AI Agent。因為 Agent 的問題往往不是固定關鍵詞，而是任務意圖。&lt;/p&gt;
&lt;h2 id=&#34;為什麼是-markdown&#34;&gt;為什麼是 Markdown
&lt;/h2&gt;&lt;p&gt;Markdown 是開發專案裡最常見的文件格式。&lt;/p&gt;
&lt;p&gt;它足夠簡單，可以放進 Git；也足夠結構化，有標題、列表、程式碼區塊、連結和表格。對 AI 來說，Markdown 也比 PDF、網頁快照或截圖更容易解析。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 專注 Markdown，意味著它可以圍繞開發文件做更直接的處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按標題和段落切分內容&lt;/li&gt;
&lt;li&gt;保留程式碼區塊&lt;/li&gt;
&lt;li&gt;保留文件路徑&lt;/li&gt;
&lt;li&gt;返回適合引用的片段&lt;/li&gt;
&lt;li&gt;讓 Agent 知道答案來自哪份文件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比讓 AI 隨機掃描倉庫更穩，也比把所有文件一次性塞進 prompt 更省上下文。&lt;/p&gt;
&lt;h2 id=&#34;三種使用入口&#34;&gt;三種使用入口
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 提供 CLI、SDK 和 MCP Server 三種入口。&lt;/p&gt;
&lt;h3 id=&#34;1-cli&#34;&gt;1. CLI
&lt;/h3&gt;&lt;p&gt;CLI 適合直接在終端裡使用，也適合放進腳本。&lt;/p&gt;
&lt;p&gt;你可以把文件目錄索引起來，然後用命令搜尋相關內容。對開發者來說，CLI 是最容易驗證效果的入口：先看它能不能搜到正確文件，再考慮接入更複雜的工作流。&lt;/p&gt;
&lt;p&gt;這類工具放在本地專案裡很有用。比如你可以在改程式碼前先搜尋設計文件，在排錯前先查故障筆記，在寫介面時先查 API 約定。&lt;/p&gt;
&lt;h3 id=&#34;2-sdk&#34;&gt;2. SDK
&lt;/h3&gt;&lt;p&gt;SDK 適合把 &lt;code&gt;qmd&lt;/code&gt; 接入自己的工具。&lt;/p&gt;
&lt;p&gt;如果你正在做內部開發助手、文件問答系統、程式碼審查機器人或專案知識庫，可以透過 SDK 呼叫搜尋能力，而不是讓使用者直接敲命令。&lt;/p&gt;
&lt;p&gt;SDK 的好處是可以更自由地控制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜尋目錄&lt;/li&gt;
&lt;li&gt;查詢內容&lt;/li&gt;
&lt;li&gt;返回數量&lt;/li&gt;
&lt;li&gt;結果格式&lt;/li&gt;
&lt;li&gt;後續是否交給模型總結&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這適合需要深度整合的場景。&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-server&#34;&gt;3. MCP Server
&lt;/h3&gt;&lt;p&gt;MCP 是 &lt;code&gt;qmd&lt;/code&gt; 對 AI Agent 最有價值的入口。&lt;/p&gt;
&lt;p&gt;透過 MCP Server，支援 MCP 的客戶端可以把 &lt;code&gt;qmd&lt;/code&gt; 當作一個文件搜尋工具來呼叫。這樣 Agent 在執行任務時，不必猜專案規則，而是可以先檢索本地 Markdown 文件。&lt;/p&gt;
&lt;p&gt;典型流程可以是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用者要求 AI 修改某個功能&lt;/li&gt;
&lt;li&gt;AI 先呼叫 &lt;code&gt;qmd&lt;/code&gt; 搜尋相關設計文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qmd&lt;/code&gt; 返回最相關的 Markdown 片段&lt;/li&gt;
&lt;li&gt;AI 基於文件約束再修改程式碼&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這比「開新會話時手動把所有規則貼進去」更自然，也更適合長期專案。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案裡有大量 Markdown 文件&lt;/li&gt;
&lt;li&gt;AI Agent 經常需要查專案規則&lt;/li&gt;
&lt;li&gt;團隊希望 AI 回答時引用本地文件&lt;/li&gt;
&lt;li&gt;文件分散在多個目錄裡&lt;/li&gt;
&lt;li&gt;需要在 CLI、SDK、MCP 之間複用同一套檢索能力&lt;/li&gt;
&lt;li&gt;想減少 AI 編程助手憑空猜測專案約定&lt;/li&gt;
&lt;li&gt;想把本地知識庫接入 Claude Desktop、Claude Code 或其他 MCP 客戶端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的專案只有一份很短的 README，直接讓 AI 讀取檔案就夠了。&lt;/p&gt;
&lt;p&gt;但如果文件已經增長到幾十篇、幾百篇，或者你希望 Agent 每次先查文件再行動，這類索引工具就有意義。&lt;/p&gt;
&lt;h2 id=&#34;和-grep-有什麼區別&#34;&gt;和 grep 有什麼區別
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;rg&lt;/code&gt; 這類工具非常適合精確搜尋。&lt;/p&gt;
&lt;p&gt;比如你知道要找 &lt;code&gt;DATABASE_URL&lt;/code&gt;、&lt;code&gt;authMiddleware&lt;/code&gt;、&lt;code&gt;404&lt;/code&gt;、&lt;code&gt;docker compose&lt;/code&gt;，直接搜關鍵詞通常最快。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 更適合你不知道精確詞的情況。&lt;/p&gt;
&lt;p&gt;例如你想問：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這個專案的發布流程是什麼&lt;/li&gt;
&lt;li&gt;新增 API 時要遵守哪些規範&lt;/li&gt;
&lt;li&gt;之前有沒有記錄過快取策略&lt;/li&gt;
&lt;li&gt;AI 修改程式碼前應該讀哪些文件&lt;/li&gt;
&lt;li&gt;某個模組的設計背景在哪裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題往往需要語義檢索，而不是只匹配一個詞。&lt;code&gt;qmd&lt;/code&gt; 的 BM25 + 向量 + reranking 組合，就是為了讓這類問題更容易找到正確上下文。&lt;/p&gt;
&lt;h2 id=&#34;和-rag-有什麼關係&#34;&gt;和 RAG 有什麼關係
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 可以看作一個面向 Markdown 文件的輕量 RAG 元件。&lt;/p&gt;
&lt;p&gt;它不試圖替你完成整套問答系統，而是專注在「把相關文件片段找出來」這一步。至於後續怎麼使用這些片段，可以交給 CLI、SDK、MCP 客戶端或你自己的 Agent 流程。&lt;/p&gt;
&lt;p&gt;這種定位比較實用。很多專案並不需要一個龐大的知識庫系統，只需要讓 AI 在本地文件裡查得準一點、快一點，並且能把結果帶回當前任務。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意&#34;&gt;使用時要注意
&lt;/h2&gt;&lt;p&gt;第一，文件品質仍然重要。&lt;/p&gt;
&lt;p&gt;檢索工具只能幫你找到已有內容。如果文件本身過時、重複、互相矛盾，AI 仍然可能拿到錯誤上下文。把 &lt;code&gt;qmd&lt;/code&gt; 接入 Agent 之前，最好先清理關鍵文件。&lt;/p&gt;
&lt;p&gt;第二，索引範圍不要過寬。&lt;/p&gt;
&lt;p&gt;把整個倉庫所有 Markdown 都塞進去不一定更好。比如依賴包文件、臨時記錄、舊方案草稿可能會污染結果。更好的做法是明確哪些目錄是可信文件源。&lt;/p&gt;
&lt;p&gt;第三，搜尋結果需要保留來源。&lt;/p&gt;
&lt;p&gt;AI 使用文件片段時，最好知道它來自哪份檔案、哪個章節。這樣人類複核時才能追溯，也能減少「看起來像文件結論，其實只是模型總結」的問題。&lt;/p&gt;
&lt;p&gt;第四，不要完全替代人工判斷。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 能提高上下文召回品質，但它不是專案真理源的替代品。重要變更仍然要看當前程式碼、測試結果和最新需求。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的團隊&#34;&gt;適合怎樣的團隊
&lt;/h2&gt;&lt;p&gt;如果你的團隊已經開始把 AI Agent 放進日常開發流程，&lt;code&gt;qmd&lt;/code&gt; 這類工具會很有價值。&lt;/p&gt;
&lt;p&gt;尤其是下面幾種團隊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件寫得比較多&lt;/li&gt;
&lt;li&gt;專案歷史比較長&lt;/li&gt;
&lt;li&gt;新人和 AI 都需要快速理解背景&lt;/li&gt;
&lt;li&gt;經常維護架構決策記錄&lt;/li&gt;
&lt;li&gt;有大量 Markdown 規範文件&lt;/li&gt;
&lt;li&gt;希望 AI 修改程式碼前先查規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的目標不是讓 AI「全知全能」，而是讓 AI 少猜一點，多查一點。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; 的價值，是把本地 Markdown 文件變成 AI Agent 能穩定呼叫的搜尋入口。&lt;/p&gt;
&lt;p&gt;當專案文件從「給人看的說明」變成「給人和 AI 都能檢索的上下文源」，AI 編程助手才更容易按專案規則做事。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code Hooks Mastery：13 個 Hooks 生命週期與自動化控制入門</title>
        <link>https://knightli.com/zh-tw/2026/05/01/claude-code-hooks-mastery-guide/</link>
        <pubDate>Fri, 01 May 2026 03:11:27 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/claude-code-hooks-mastery-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; 是一個圍繞 &lt;code&gt;Claude Code Hooks&lt;/code&gt; 的學習專案。&lt;/p&gt;
&lt;p&gt;它不是只給幾個零散腳本，而是把 Claude Code 的 hooks 生命週期、配置方式、腳本寫法和常見自動化場景放在一起講清楚。對想讓 Claude Code 更可控、更像工程化助手的人來說，這類資料很值得看。&lt;/p&gt;
&lt;p&gt;Claude Code 預設已經能讀程式碼、改檔案、跑命令。但如果你想讓它在特定時機自動檢查權限、攔截危險操作、注入專案規範、執行測試、提醒團隊規則，單靠聊天指令就不夠穩定。Hooks 的價值就在這裡：把「每次都要提醒 AI 的規則」變成可執行的流程。&lt;/p&gt;
&lt;h2 id=&#34;hooks-解決什麼問題&#34;&gt;Hooks 解決什麼問題
&lt;/h2&gt;&lt;p&gt;使用 Claude Code 一段時間後，常見痛點大概有這些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每次新會話都要重複告訴它專案規則&lt;/li&gt;
&lt;li&gt;擔心它執行不該執行的命令&lt;/li&gt;
&lt;li&gt;希望檔案修改前後自動做檢查&lt;/li&gt;
&lt;li&gt;想在提交前自動跑格式化、測試或安全掃描&lt;/li&gt;
&lt;li&gt;想把團隊規範寫成固定流程，而不是靠口頭提醒&lt;/li&gt;
&lt;li&gt;想在工具呼叫前後拿到上下文，做記錄或攔截&lt;/li&gt;
&lt;li&gt;希望複雜任務可以觸發子代理或專門腳本處理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hooks 就是為這些「固定時機的自動動作」準備的。&lt;/p&gt;
&lt;p&gt;你可以把它理解成 Claude Code 工作流裡的事件鉤子：當會話開始、使用者提交提示詞、模型準備呼叫工具、工具呼叫完成、代理即將結束等節點發生時，Claude Code 可以執行你配置的腳本。&lt;/p&gt;
&lt;h2 id=&#34;13-個-hooks-生命週期&#34;&gt;13 個 Hooks 生命週期
&lt;/h2&gt;&lt;p&gt;專案 README 的重點之一，是系統整理了 Claude Code 的 13 個 hook 事件。&lt;/p&gt;
&lt;p&gt;這些事件覆蓋了從會話開始到工具呼叫、從使用者輸入到代理結束的多個節點。按用途可以粗略分成幾類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;會話啟動相關：用於初始化環境、注入專案上下文&lt;/li&gt;
&lt;li&gt;使用者輸入相關：用於檢查提示詞、補充規則、做稽核&lt;/li&gt;
&lt;li&gt;工具呼叫前相關：用於權限判斷、命令攔截、安全檢查&lt;/li&gt;
&lt;li&gt;工具呼叫後相關：用於記錄結果、觸發格式化、執行驗證&lt;/li&gt;
&lt;li&gt;任務結束相關：用於總結、清理、通知或保存狀態&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種生命週期設計讓你不必把所有規則都寫進一個超長提示詞裡。&lt;/p&gt;
&lt;p&gt;比如，權限控制應該發生在工具呼叫前；格式化檢查更適合發生在檔案修改後；專案規範注入適合發生在會話開始或使用者輸入後。把規則放到正確的 hook 節點，通常比把所有內容塞進 system prompt 更可靠。&lt;/p&gt;
&lt;h2 id=&#34;配置檔案在哪裡&#34;&gt;配置檔案在哪裡
&lt;/h2&gt;&lt;p&gt;Claude Code 的 hooks 通常透過設定檔配置。&lt;/p&gt;
&lt;p&gt;常見位置包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者級配置：&lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;專案級配置：&lt;code&gt;.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用者級配置適合放個人偏好，比如通用安全規則、命令攔截、日誌路徑。&lt;/p&gt;
&lt;p&gt;專案級配置適合放倉庫相關規則，比如這個專案必須跑什麼測試、哪些目錄不能改、生成檔案怎麼處理、提交前要做哪些檢查。&lt;/p&gt;
&lt;p&gt;如果你在團隊裡使用 Claude Code，更推薦把專案級配置放進倉庫。這樣每個人打開專案時，拿到的是同一套 AI 協作約束，而不是各自憑記憶提醒。&lt;/p&gt;
&lt;h2 id=&#34;單檔案腳本為什麼重要&#34;&gt;單檔案腳本為什麼重要
&lt;/h2&gt;&lt;p&gt;專案裡強調了 &lt;code&gt;UV&lt;/code&gt; 單檔案腳本的寫法。&lt;/p&gt;
&lt;p&gt;這類腳本的好處是部署簡單。一個 Python 檔案就可以宣告依賴並執行，不必為了一個 hook 單獨維護複雜環境。對 hooks 來說，這很合適，因為很多 hook 只是做一件小事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;檢查命令是否允許執行&lt;/li&gt;
&lt;li&gt;判斷檔案路徑是否安全&lt;/li&gt;
&lt;li&gt;讀取專案規範並返回給 Claude&lt;/li&gt;
&lt;li&gt;掃描輸出中是否包含敏感資訊&lt;/li&gt;
&lt;li&gt;在修改後執行格式化或測試&lt;/li&gt;
&lt;li&gt;把事件寫入日誌&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hook 腳本越小，越容易維護，也越不容易變成新的複雜系統。&lt;/p&gt;
&lt;h2 id=&#34;可以做哪些自動化&#34;&gt;可以做哪些自動化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; 展示的方向比較多，實際工作中最常見的是下面幾類。&lt;/p&gt;
&lt;h3 id=&#34;1-權限和安全控制&#34;&gt;1. 權限和安全控制
&lt;/h3&gt;&lt;p&gt;這是 hooks 最直接的用途。&lt;/p&gt;
&lt;p&gt;比如在 Claude Code 準備執行命令之前，先檢查命令內容。如果命令包含刪除、重置、清空、覆蓋等高風險動作，就阻止執行或要求人工確認。&lt;/p&gt;
&lt;p&gt;類似規則還可以用於檔案路徑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不允許修改生產配置&lt;/li&gt;
&lt;li&gt;不允許寫入金鑰檔案&lt;/li&gt;
&lt;li&gt;不允許刪除遷移腳本&lt;/li&gt;
&lt;li&gt;不允許觸碰指定目錄&lt;/li&gt;
&lt;li&gt;不允許執行未批准的網路命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類保護放在工具呼叫前，比寫一句「不要做危險操作」更可靠。&lt;/p&gt;
&lt;h3 id=&#34;2-上下文注入&#34;&gt;2. 上下文注入
&lt;/h3&gt;&lt;p&gt;很多專案都有固定背景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技術棧&lt;/li&gt;
&lt;li&gt;編碼規範&lt;/li&gt;
&lt;li&gt;測試命令&lt;/li&gt;
&lt;li&gt;分支策略&lt;/li&gt;
&lt;li&gt;目錄結構&lt;/li&gt;
&lt;li&gt;禁止事項&lt;/li&gt;
&lt;li&gt;生成檔案處理規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些內容每次手動告訴 Claude Code 很麻煩，也容易漏。Hooks 可以在會話開始或使用者提交提示詞後，把必要上下文自動注入進去。&lt;/p&gt;
&lt;p&gt;這相當於給 Claude Code 配一個專案級的工作說明書。它不會替代 README 或開發文件，但能讓 AI 在執行任務前更快進入正確狀態。&lt;/p&gt;
&lt;h3 id=&#34;3-修改後的驗證&#34;&gt;3. 修改後的驗證
&lt;/h3&gt;&lt;p&gt;當 Claude Code 修改檔案後，可以透過 hook 自動觸發檢查。&lt;/p&gt;
&lt;p&gt;常見動作包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;執行格式化&lt;/li&gt;
&lt;li&gt;執行 lint&lt;/li&gt;
&lt;li&gt;執行單元測試&lt;/li&gt;
&lt;li&gt;檢查型別錯誤&lt;/li&gt;
&lt;li&gt;掃描生成檔案&lt;/li&gt;
&lt;li&gt;校驗 Markdown 或 JSON 格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這對減少低級錯誤很有幫助。尤其是 AI 改動多個檔案時，修改後自動跑一輪輕量驗證，可以更早發現問題。&lt;/p&gt;
&lt;p&gt;不過也要注意，hook 裡不適合預設塞太重的任務。每次檔案改動都跑完整測試套件，可能會讓體驗變得很慢。更實用的做法是按檔案類型、目錄和任務風險選擇檢查範圍。&lt;/p&gt;
&lt;h3 id=&#34;4-團隊規則驗證&#34;&gt;4. 團隊規則驗證
&lt;/h3&gt;&lt;p&gt;如果團隊已經有明確約定，可以把一部分約定放進 hooks。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提交訊息格式&lt;/li&gt;
&lt;li&gt;程式碼風格規則&lt;/li&gt;
&lt;li&gt;禁止直接修改某些生成檔案&lt;/li&gt;
&lt;li&gt;文件必須同步更新&lt;/li&gt;
&lt;li&gt;API 變更必須改測試&lt;/li&gt;
&lt;li&gt;某些目錄只能用指定工具生成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這會讓 Claude Code 更像團隊流程的一部分，而不是一個不受約束的外部助手。&lt;/p&gt;
&lt;p&gt;當然，hooks 不應該替代 CI。它更適合做本地快速提醒和前置攔截，真正的最終驗證仍然應該交給 CI、review 和測試系統。&lt;/p&gt;
&lt;h3 id=&#34;5-子代理和專門任務&#34;&gt;5. 子代理和專門任務
&lt;/h3&gt;&lt;p&gt;README 裡還提到子代理相關內容。&lt;/p&gt;
&lt;p&gt;這類用法適合把複雜任務拆給更專門的流程處理。比如主會話負責理解需求，hook 或配置觸發專門的檢查、稽核、總結、文件整理任務。&lt;/p&gt;
&lt;p&gt;對個人使用者來說，最先值得做的不是複雜代理編排，而是把重複、明確、低風險的動作交給 hooks。等規則穩定後，再考慮更複雜的自動化。&lt;/p&gt;
&lt;h2 id=&#34;statusline-和輸出樣式&#34;&gt;Statusline 和輸出樣式
&lt;/h2&gt;&lt;p&gt;專案還覆蓋了狀態列和輸出樣式。&lt;/p&gt;
&lt;p&gt;這部分看起來像體驗細節，但對長期使用 Claude Code 很有意義。狀態列可以展示當前上下文、任務狀態、環境資訊或提示資訊；輸出樣式則可以讓 Claude Code 的回答更符合你的工作習慣。&lt;/p&gt;
&lt;p&gt;如果你每天都在同一個終端裡和 AI 協作，這些細節會影響效率。好的狀態提示能減少誤操作，也能讓你更快判斷當前會話是否處在正確專案、正確分支、正確環境裡。&lt;/p&gt;
&lt;h2 id=&#34;不要把-hooks-寫得過重&#34;&gt;不要把 hooks 寫得過重
&lt;/h2&gt;&lt;p&gt;Hooks 很強，但不適合什麼都往裡面塞。&lt;/p&gt;
&lt;p&gt;比較好的規則是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻動作要快&lt;/li&gt;
&lt;li&gt;安全攔截要明確&lt;/li&gt;
&lt;li&gt;輸出要短&lt;/li&gt;
&lt;li&gt;失敗原因要可讀&lt;/li&gt;
&lt;li&gt;腳本盡量單一職責&lt;/li&gt;
&lt;li&gt;重型檢查交給顯式命令或 CI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個 hook 每次都執行十幾秒，使用者很快就會想關掉它。如果一個 hook 攔截規則含糊不清，Claude Code 和使用者都會難以理解下一步該怎麼做。&lt;/p&gt;
&lt;p&gt;Hooks 最適合處理那些邊界清楚的事情：允許或拒絕、補充上下文、記錄日誌、執行輕量檢查、提示下一步。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的使用者&#34;&gt;適合怎樣的使用者
&lt;/h2&gt;&lt;p&gt;如果你只是偶爾讓 Claude Code 改一小段程式碼，可能暫時不需要深入 hooks。&lt;/p&gt;
&lt;p&gt;但如果你符合下面幾種情況，就很適合研究這個專案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻使用 Claude Code&lt;/li&gt;
&lt;li&gt;經常讓 AI 修改真實專案程式碼&lt;/li&gt;
&lt;li&gt;擔心 AI 執行危險命令&lt;/li&gt;
&lt;li&gt;想把團隊規範自動注入 AI 工作流&lt;/li&gt;
&lt;li&gt;希望修改後自動跑檢查&lt;/li&gt;
&lt;li&gt;想把重複提醒變成配置&lt;/li&gt;
&lt;li&gt;正在搭建更穩定的 AI 編程流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;尤其是多人協作專案，hooks 的意義會更明顯。它可以把一部分團隊經驗沉澱成腳本，而不是靠每個人臨時提醒 AI。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意&#34;&gt;使用時要注意
&lt;/h2&gt;&lt;p&gt;第一，先從安全類 hook 開始。&lt;/p&gt;
&lt;p&gt;相比複雜自動化，命令攔截、路徑保護、敏感檔案檢查更容易落地，也更能立刻降低風險。&lt;/p&gt;
&lt;p&gt;第二，專案級規則要謹慎提交。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.claude/settings.json&lt;/code&gt; 會影響所有使用這個倉庫的人。把規則提交前，最好確認它不會過度限制正常開發，也不會依賴只有你本機才存在的路徑。&lt;/p&gt;
&lt;p&gt;第三，hook 輸出要簡潔。&lt;/p&gt;
&lt;p&gt;Claude Code 會消費這些輸出。輸出太長，會污染上下文；輸出太模糊，又起不到指導作用。最好只返回必要判斷和下一步建議。&lt;/p&gt;
&lt;p&gt;第四，保持可除錯。&lt;/p&gt;
&lt;p&gt;Hooks 一旦變多，問題可能出在配置、腳本、權限、路徑、依賴或 Claude Code 本身。給腳本留下清楚日誌，會讓後續排查輕鬆很多。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code Hooks&lt;/code&gt; 的價值，是把「希望 AI 每次都記住的規矩」變成真正會執行的流程。&lt;/p&gt;
&lt;p&gt;如果你已經開始把 Claude Code 用在真實專案裡，hooks 會是從「會聊天的編程助手」走向「可約束的工程協作者」的關鍵一步。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt Optimizer：開源提示詞優化、測試與 MCP 工具</title>
        <link>https://knightli.com/zh-tw/2026/05/01/prompt-optimizer-prompt-engineering-tool/</link>
        <pubDate>Fri, 01 May 2026 03:09:07 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/prompt-optimizer-prompt-engineering-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 是一個開源的提示詞優化工具，目標很直接：幫助你把一段粗糙的提示詞改得更清楚、更穩定，也更容易被大型語言模型執行。&lt;/p&gt;
&lt;p&gt;它不只是一個「幫我潤飾 prompt」的頁面。專案同時提供提示詞優化、結果測試、對比評估、多模型接入、圖像生成提示詞處理，以及 MCP 整合。對經常寫系統提示詞、使用者提示詞、AI 工作流模板的人來說，它更像一個專門用來打磨提示詞的工作台。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多人使用 AI 時都會遇到類似問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提示詞越寫越長，但模型輸出沒有明顯變好&lt;/li&gt;
&lt;li&gt;同一個需求換個模型就表現不穩定&lt;/li&gt;
&lt;li&gt;系統提示詞和使用者提示詞混在一起，很難拆開除錯&lt;/li&gt;
&lt;li&gt;改了一版 prompt，不知道是不是真的比上一版更好&lt;/li&gt;
&lt;li&gt;想複用變數模板，但每次都要手動替換和測試&lt;/li&gt;
&lt;li&gt;想把提示詞優化能力接入其他 AI 工具，卻缺少標準介面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 主要圍繞這些問題設計。它把「寫 prompt」拆成優化、測試、評估、對比、迭代幾個環節，讓提示詞不再只靠感覺調整。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;h3 id=&#34;1-優化系統提示詞和使用者提示詞&#34;&gt;1. 優化系統提示詞和使用者提示詞
&lt;/h3&gt;&lt;p&gt;提示詞並不只有一種。&lt;/p&gt;
&lt;p&gt;系統提示詞通常負責定義角色、目標、邊界、輸出規範和工作方法；使用者提示詞則更接近一次具體任務的輸入。兩者混在一起時，模型容易抓不住重點，後續複用也困難。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 支援系統提示詞優化和使用者提示詞優化。你可以分別處理長期複用的角色設定，也可以處理某次具體任務的輸入表達。&lt;/p&gt;
&lt;p&gt;這對下面幾類場景比較有用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寫 AI 編程助手的工作規則&lt;/li&gt;
&lt;li&gt;寫客服、審稿、翻譯、分析類角色提示詞&lt;/li&gt;
&lt;li&gt;優化文生圖提示詞&lt;/li&gt;
&lt;li&gt;把臨時需求整理成可複用模板&lt;/li&gt;
&lt;li&gt;為不同模型準備不同風格的 prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-測試和對比輸出&#34;&gt;2. 測試和對比輸出
&lt;/h3&gt;&lt;p&gt;只優化提示詞還不夠，關鍵是要知道優化後有沒有變好。&lt;/p&gt;
&lt;p&gt;專案支援分析、單結果評估、多結果對比評估。也就是說，你可以把原始提示詞和優化後的提示詞放到同一個任務裡跑，看模型輸出是否更準確、更穩定、更符合目標。&lt;/p&gt;
&lt;p&gt;這比單純「看起來更專業」的 prompt 更實用。因為很多提示詞表面上寫得完整，實際輸出卻可能更囉嗦、更僵硬，甚至把模型引向錯誤方向。對比測試能幫助你盡早發現這種問題。&lt;/p&gt;
&lt;h3 id=&#34;3-支援多模型&#34;&gt;3. 支援多模型
&lt;/h3&gt;&lt;p&gt;README 中提到專案支援 OpenAI、Gemini、DeepSeek、智譜 AI、SiliconFlow 等模型服務，也支援自訂 OpenAI 相容介面。&lt;/p&gt;
&lt;p&gt;這點很重要。提示詞效果和模型強相關，同一段 prompt 在不同模型上的表現可能差別很大。多模型測試可以幫助你判斷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是提示詞本身寫得不好&lt;/li&gt;
&lt;li&gt;還是某個模型不適合這個任務&lt;/li&gt;
&lt;li&gt;是否需要為不同模型準備不同版本&lt;/li&gt;
&lt;li&gt;小模型能否透過更清楚的提示詞接近可用效果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你在本地使用 Ollama，或者公司內部有相容 OpenAI 介面的模型服務，也可以透過自訂介面接入。&lt;/p&gt;
&lt;h3 id=&#34;4-高級測試模式&#34;&gt;4. 高級測試模式
&lt;/h3&gt;&lt;p&gt;專案提供上下文變數管理、多輪會話測試和 Function Calling 支援。&lt;/p&gt;
&lt;p&gt;變數管理適合模板化任務。比如你有一套二手交易回覆、商品描述、郵件回覆、程式碼審查或文件生成提示詞，只需要替換商品、價格、語氣、目標使用者等變數，就能快速測試不同輸入下的表現。&lt;/p&gt;
&lt;p&gt;多輪會話測試適合驗證長期對話能力。很多 prompt 在單輪問答裡看起來不錯，一旦進入多輪追問，就會忘記約束、偏離角色或重複解釋。多輪測試可以更接近真實使用場景。&lt;/p&gt;
&lt;p&gt;Function Calling 支援則適合更工程化的 AI 應用。它能幫助你驗證模型在工具呼叫、參數生成和結構化輸出上的表現。&lt;/p&gt;
&lt;h3 id=&#34;5-圖像生成提示詞&#34;&gt;5. 圖像生成提示詞
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 也支援文生圖和圖生圖相關能力，README 中提到整合 Gemini、Seedream 等圖像模型。&lt;/p&gt;
&lt;p&gt;文生圖提示詞的優化重點和文字任務不同。它更關注主體、構圖、空間關係、風格、材質、光線、情緒和限制條件。把一句很模糊的想法拆成更可控的視覺描述，通常比單純加長提示詞更有價值。&lt;/p&gt;
&lt;p&gt;如果你經常需要生成產品圖、封面、插畫、主視覺或風格參考圖，這類優化會比較實用。&lt;/p&gt;
&lt;h2 id=&#34;使用方式&#34;&gt;使用方式
&lt;/h2&gt;&lt;p&gt;專案提供多種入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;線上版本&lt;/li&gt;
&lt;li&gt;Vercel 自部署&lt;/li&gt;
&lt;li&gt;桌面應用&lt;/li&gt;
&lt;li&gt;Chrome 擴充功能&lt;/li&gt;
&lt;li&gt;Docker 部署&lt;/li&gt;
&lt;li&gt;Docker Compose 部署&lt;/li&gt;
&lt;li&gt;MCP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;線上版本適合快速體驗。專案說明中提到它是純前端應用，資料儲存在瀏覽器本地，並直接與 AI 服務商互動。&lt;/p&gt;
&lt;p&gt;桌面應用適合需要直接連接各種模型 API 的使用者。瀏覽器環境容易遇到跨域限制，桌面應用可以繞過這類問題，尤其適合連接本地 Ollama 或一些跨域策略嚴格的商業 API。&lt;/p&gt;
&lt;p&gt;Docker 部署適合放在自己的伺服器或內網環境裡使用。README 給出的基礎命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8081:80 --restart unless-stopped --name prompt-optimizer linshen/prompt-optimizer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要配置 API 金鑰和存取密碼，可以透過環境變數傳入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d -p 8081:80 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;VITE_OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_key &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;ACCESS_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_username &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;ACCESS_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_password &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --restart unless-stopped &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name prompt-optimizer &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  linshen/prompt-optimizer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;國內存取 Docker Hub 較慢時，專案也提供了阿里雲映像地址，可按 README 中的說明替換映像名稱。&lt;/p&gt;
&lt;h2 id=&#34;mcp-能做什麼&#34;&gt;MCP 能做什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 支援 Model Context Protocol，也就是 MCP。&lt;/p&gt;
&lt;p&gt;透過 Docker 執行時，MCP 服務可以和 Web 應用一起啟動，並透過 &lt;code&gt;/mcp&lt;/code&gt; 路徑存取。這樣它就不只是一個網頁工具，而是可以被 Claude Desktop 等支援 MCP 的應用呼叫。&lt;/p&gt;
&lt;p&gt;README 中列出的 MCP 工具包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;optimize-user-prompt&lt;/code&gt;：優化使用者提示詞&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optimize-system-prompt&lt;/code&gt;：優化系統提示詞&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iterate-prompt&lt;/code&gt;：對已有提示詞做定向迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類介面很適合放進 AI 工作流裡。比如你在寫複雜任務提示詞時，可以讓支援 MCP 的客戶端直接呼叫提示詞優化能力，而不必每次打開網頁手動複製。&lt;/p&gt;
&lt;h2 id=&#34;和普通聊天工具有什麼區別&#34;&gt;和普通聊天工具有什麼區別
&lt;/h2&gt;&lt;p&gt;普通聊天工具當然也能幫你改 prompt，但它通常缺少幾個環節：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不方便保存和對比多個版本&lt;/li&gt;
&lt;li&gt;不方便同時測試多個模型&lt;/li&gt;
&lt;li&gt;不方便把變數模板化&lt;/li&gt;
&lt;li&gt;不方便做多輪會話驗證&lt;/li&gt;
&lt;li&gt;不方便接入 MCP 或部署到自己的環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 的價值在於把提示詞優化做成一個可重複的流程。它不只是給你一版「看起來更完整」的文字，而是讓你圍繞實際輸出持續調整。&lt;/p&gt;
&lt;h2 id=&#34;適合誰使用&#34;&gt;適合誰使用
&lt;/h2&gt;&lt;p&gt;如果你符合下面幾種情況，可以重點關注這個專案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;經常寫系統提示詞&lt;/li&gt;
&lt;li&gt;經常為 AI 應用設計角色和輸出格式&lt;/li&gt;
&lt;li&gt;需要比較不同模型的輸出效果&lt;/li&gt;
&lt;li&gt;想把 prompt 做成可複用模板&lt;/li&gt;
&lt;li&gt;需要測試多輪對話或工具呼叫&lt;/li&gt;
&lt;li&gt;想把提示詞優化能力接入 MCP 工作流&lt;/li&gt;
&lt;li&gt;希望在本地或內網部署提示詞工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶爾問 AI 一個簡單問題，用普通聊天頁面就夠了。這個工具更適合那些把提示詞當成可維護資產的人。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，不要把優化結果當成絕對正確。&lt;/p&gt;
&lt;p&gt;提示詞優化工具可以提高表達品質，但不能保證模型一定不會誤解。重要任務仍然需要測試樣例、人工檢查和版本對比。&lt;/p&gt;
&lt;p&gt;第二，不要只追求更長。&lt;/p&gt;
&lt;p&gt;好的 prompt 不一定更長。它應該更清楚地表達目標、邊界、輸入輸出格式和判斷標準。無意義的規則堆疊反而會讓模型抓不住重點。&lt;/p&gt;
&lt;p&gt;第三，要按模型調 prompt。&lt;/p&gt;
&lt;p&gt;不同模型對角色設定、格式約束、推理步驟和範例的敏感度不同。一個在大模型上表現很好的提示詞，不一定適合小模型。多模型測試正是這個工具值得使用的原因之一。&lt;/p&gt;
&lt;p&gt;第四，部署時要考慮金鑰和存取控制。&lt;/p&gt;
&lt;p&gt;如果你把它部署到公網，應該配置存取密碼，並謹慎處理 API key。專案支援透過環境變數配置存取控制，不要把敏感配置直接寫到公開倉庫裡。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; 適合用來把提示詞從「臨時手寫的一段話」整理成「可以測試、可以比較、可以迭代的工作資產」。&lt;/p&gt;
&lt;p&gt;當你開始在多個模型、多個場景、多個版本之間維護 prompt 時，這類工具會比普通聊天視窗更順手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude-Mem：給 Claude Code 加上跨會話長期記憶</title>
        <link>https://knightli.com/zh-tw/2026/05/01/claude-mem-persistent-memory-for-claude-code/</link>
        <pubDate>Fri, 01 May 2026 03:01:02 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 是一個給 &lt;code&gt;Claude Code&lt;/code&gt; 使用的持久化記憶系統。&lt;/p&gt;
&lt;p&gt;它想解決的問題很具體：AI 編程助手每次開新會話時，往往會忘記之前討論過的架構決策、踩過的坑、專案偏好和實作背景。&lt;br&gt;
如果一個專案做得久，每次都重新解釋上下文，非常浪費時間。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的思路是：把 Claude Code 的會話內容壓縮成記憶，存進本地資料庫和向量庫，之後再透過搜尋工具找回來。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;Claude Code 很適合處理程式碼任務，但會話上下文畢竟有限。&lt;/p&gt;
&lt;p&gt;常見痛點包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新會話不知道舊會話做過什麼&lt;/li&gt;
&lt;li&gt;專案裡的設計決策需要反覆解釋&lt;/li&gt;
&lt;li&gt;曾經排查過的問題容易重複踩&lt;/li&gt;
&lt;li&gt;長期任務缺少連續記憶&lt;/li&gt;
&lt;li&gt;多次對話之間很難沉澱專案知識&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 就是圍繞這些問題設計的。&lt;/p&gt;
&lt;p&gt;它不是簡單保存聊天記錄，而是把會話壓縮成更容易檢索的記憶片段。這樣後續需要時，可以透過語義搜尋把相關上下文找回來。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;從 README 的設計看，&lt;code&gt;Claude-Mem&lt;/code&gt; 主要由幾部分組成。&lt;/p&gt;
&lt;p&gt;第一部分是 hooks。&lt;/p&gt;
&lt;p&gt;它會接入 Claude Code 的會話流程，在合適的時機捕獲會話資料。&lt;/p&gt;
&lt;p&gt;第二部分是後台 worker。&lt;/p&gt;
&lt;p&gt;worker 負責把原始會話內容處理成更短、更可檢索的記憶。&lt;/p&gt;
&lt;p&gt;第三部分是本地儲存。&lt;/p&gt;
&lt;p&gt;專案使用 &lt;code&gt;SQLite&lt;/code&gt; 保存結構化元資料，用 &lt;code&gt;Chroma&lt;/code&gt; 保存向量索引。這樣既能保留會話記錄的基本資訊，也能支援語義檢索。&lt;/p&gt;
&lt;p&gt;第四部分是 &lt;code&gt;mem-search&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這是給 Claude Code 使用的查詢入口。需要找回舊上下文時，可以透過它搜尋相關記憶。&lt;/p&gt;
&lt;p&gt;整體流程可以理解為：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 會話產生內容&lt;/li&gt;
&lt;li&gt;hooks 捕獲會話資料&lt;/li&gt;
&lt;li&gt;worker 非同步壓縮和整理&lt;/li&gt;
&lt;li&gt;記憶寫入 SQLite 與 Chroma&lt;/li&gt;
&lt;li&gt;後續透過 &lt;code&gt;mem-search&lt;/code&gt; 檢索&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 適合長期專案，而不是一次性小任務。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個倉庫持續開發很多天&lt;/li&gt;
&lt;li&gt;程式碼結構複雜，背景說明很多&lt;/li&gt;
&lt;li&gt;需要記住專案約定、命名習慣和架構選擇&lt;/li&gt;
&lt;li&gt;經常讓 Claude Code 修 Bug、寫功能、整理文件&lt;/li&gt;
&lt;li&gt;希望 AI 能記住「之前為什麼這麼改」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是臨時讓 Claude Code 改一行程式碼，長期記憶意義不大。&lt;br&gt;
但如果你把 Claude Code 當作長期協作者，它就會變得有用。&lt;/p&gt;
&lt;h2 id=&#34;安裝和啟動&#34;&gt;安裝和啟動
&lt;/h2&gt;&lt;p&gt;README 中給出的安裝方式很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g claude-mem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動時可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看狀態：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要停止：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些命令背後的目標，是把記憶系統作為一個長期執行的本地服務接到 Claude Code 工作流裡。&lt;/p&gt;
&lt;h2 id=&#34;mem-search-怎麼用&#34;&gt;&lt;code&gt;mem-search&lt;/code&gt; 怎麼用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; 是找回記憶的關鍵入口。&lt;/p&gt;
&lt;p&gt;它的用途不是替代普通搜尋，而是讓 Claude Code 能按語義查詢過去會話中的內容。&lt;/p&gt;
&lt;p&gt;比如你可以讓 Claude Code 查詢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某個模組之前為什麼這樣設計&lt;/li&gt;
&lt;li&gt;某個 Bug 當時怎麼排查&lt;/li&gt;
&lt;li&gt;專案裡約定的命名規則&lt;/li&gt;
&lt;li&gt;之前討論過的技術取捨&lt;/li&gt;
&lt;li&gt;某次重構的背景原因&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種查詢和簡單關鍵字搜尋不同。&lt;br&gt;
如果記憶壓縮和向量索引做得好，即使你不記得原話，也能找回相近語義的內容。&lt;/p&gt;
&lt;h2 id=&#34;和普通專案文件有什麼區別&#34;&gt;和普通專案文件有什麼區別
&lt;/h2&gt;&lt;p&gt;專案文件適合記錄穩定結論。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架構說明&lt;/li&gt;
&lt;li&gt;部署流程&lt;/li&gt;
&lt;li&gt;API 約定&lt;/li&gt;
&lt;li&gt;資料庫結構&lt;/li&gt;
&lt;li&gt;開發規範&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 更適合記錄會話過程中產生的上下文。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;為什麼某個方案被放棄&lt;/li&gt;
&lt;li&gt;某個臨時問題怎麼繞過&lt;/li&gt;
&lt;li&gt;某個實作背後的討論過程&lt;/li&gt;
&lt;li&gt;還沒來得及寫進文件的專案偏好&lt;/li&gt;
&lt;li&gt;多次對話裡積累出的任務背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;兩者不是互相替代。&lt;br&gt;
比較好的方式是：穩定知識寫進專案文件，過程性上下文交給記憶系統輔助檢索。&lt;/p&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，長期記憶不是越多越好。&lt;/p&gt;
&lt;p&gt;如果所有對話都無差別保存，後續檢索可能會變得嘈雜。真正有價值的是專案決策、實作背景、問題排查和長期偏好。&lt;/p&gt;
&lt;p&gt;第二，記憶不能替代程式碼和文件。&lt;/p&gt;
&lt;p&gt;AI 搜到的舊上下文只能作為參考。最終判斷仍然要看目前程式碼、測試結果和最新需求。&lt;/p&gt;
&lt;p&gt;第三，隱私和本地資料要注意。&lt;/p&gt;
&lt;p&gt;既然它會保存會話內容，就要清楚哪些專案適合接入，哪些敏感資訊不應該進入對話。&lt;/p&gt;
&lt;p&gt;第四，記憶系統需要維護。&lt;/p&gt;
&lt;p&gt;隨著專案推進，舊記憶可能過時。過時的上下文如果被誤用，反而會誤導後續任務。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這類工具值得關注&#34;&gt;為什麼這類工具值得關注
&lt;/h2&gt;&lt;p&gt;AI 編程工具正在從「單次問答」走向「長期協作」。&lt;/p&gt;
&lt;p&gt;單次問答裡，模型只要回答目前問題就夠了。&lt;br&gt;
長期協作裡，它需要知道專案歷史、之前的決策、團隊偏好和已經踩過的坑。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 這類工具的意義就在這裡：它把「記住上下文」從臨時聊天能力，變成一個可以安裝、執行、檢索的本地系統。&lt;/p&gt;
&lt;p&gt;對真實工程專案來說，這比單純讓模型上下文窗口變長更實用。&lt;br&gt;
因為很多資訊不是一次性塞進上下文就好，而是需要在合適的時候被找回來。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;如果你符合下面幾種情況，可以考慮試試：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻使用 Claude Code&lt;/li&gt;
&lt;li&gt;經常跨天處理同一個專案&lt;/li&gt;
&lt;li&gt;專案上下文比較複雜&lt;/li&gt;
&lt;li&gt;經常需要向 AI 重複解釋背景&lt;/li&gt;
&lt;li&gt;想把會話裡的經驗沉澱下來&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶爾使用 Claude Code，或者專案很小，暫時不一定需要這類系統。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的重點不是「保存聊天記錄」，而是讓 Claude Code 能在後續任務裡找回有用上下文。&lt;/p&gt;
&lt;p&gt;當 AI 編程從一次性任務變成長期專案協作，記憶系統會越來越重要。&lt;br&gt;
它不能替代文件和測試，但可以減少重複解釋，讓 AI 更像一個了解專案歷史的助手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Google LangExtract：用 LLM 從長文本裡抽取結構化資料</title>
        <link>https://knightli.com/zh-tw/2026/05/01/google-langextract-llm-structured-data-extraction/</link>
        <pubDate>Fri, 01 May 2026 02:58:21 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/01/google-langextract-llm-structured-data-extraction/</guid>
        <description>&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 是 Google 開源的一個 Python 函式庫，用來從非結構化文本中抽取結構化資訊。&lt;/p&gt;
&lt;p&gt;它的使用場景很直接：給它一段文本、一個提示詞和少量範例，讓大型語言模型按你定義的欄位抽取內容，並把結果組織成可處理的資料。&lt;/p&gt;
&lt;p&gt;和普通「讓模型總結一下」不同，&lt;code&gt;LangExtract&lt;/code&gt; 更關注三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按固定結構抽取資訊&lt;/li&gt;
&lt;li&gt;保留抽取結果和原文位置的對應關係&lt;/li&gt;
&lt;li&gt;支援長文件和視覺化檢查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你經常需要從報告、論文、病歷、合約、日誌或網頁文本裡抽取實體、事件、關係和屬性，這類工具會比手寫正則更靈活，也比純聊天式提問更容易進入後續資料處理流程。&lt;/p&gt;
&lt;h2 id=&#34;它解決什麼問題&#34;&gt;它解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多文本抽取任務看起來簡單，實際做起來很麻煩。&lt;/p&gt;
&lt;p&gt;比如你想從一篇長文裡抽取：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人名、機構名、地點&lt;/li&gt;
&lt;li&gt;事件、時間、參與方&lt;/li&gt;
&lt;li&gt;藥物、劑量、不良反應&lt;/li&gt;
&lt;li&gt;產品型號、參數、價格&lt;/li&gt;
&lt;li&gt;合約條款、義務、期限&lt;/li&gt;
&lt;li&gt;日誌裡的錯誤類型和上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果格式固定，正則或傳統解析器可以解決。&lt;br&gt;
但只要文本表達稍微自然一點，規則就會迅速變複雜。&lt;/p&gt;
&lt;p&gt;大型語言模型適合理解自然語言，但直接讓模型「抽一下」又容易出現幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸出格式不穩定&lt;/li&gt;
&lt;li&gt;不知道資訊來自原文哪裡&lt;/li&gt;
&lt;li&gt;長文件容易漏&lt;/li&gt;
&lt;li&gt;很難批量處理&lt;/li&gt;
&lt;li&gt;結果不方便人工複核&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 想解決的就是這一層問題：把 LLM 的理解能力包裝成更可控的抽取流程。&lt;/p&gt;
&lt;h2 id=&#34;langextract-的幾個特點&#34;&gt;LangExtract 的幾個特點
&lt;/h2&gt;&lt;h3 id=&#34;1-用範例約束抽取格式&#34;&gt;1. 用範例約束抽取格式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的思路不是只給一句含糊提示詞，而是透過 prompt 和 examples 告訴模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要抽取什麼&lt;/li&gt;
&lt;li&gt;欄位叫什麼&lt;/li&gt;
&lt;li&gt;每個欄位應該怎麼填&lt;/li&gt;
&lt;li&gt;不確定時應該怎麼處理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種 few-shot 方式很適合資訊抽取任務。&lt;br&gt;
你給的範例越貼近真實資料，模型越容易穩定輸出相同結構。&lt;/p&gt;
&lt;h3 id=&#34;2-抽取結果能對應回原文&#34;&gt;2. 抽取結果能對應回原文
&lt;/h3&gt;&lt;p&gt;資訊抽取最怕「看起來對，但不知道從哪來的」。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的一個重點是把抽取結果和原文位置對齊。這樣你後續檢查時，不只是看到一個 JSON 結果，還能回到原文看這條資訊來自哪一段。&lt;/p&gt;
&lt;p&gt;這對需要複核的場景很重要，比如醫學文本、法律文本、研究資料和企業內部文件。&lt;/p&gt;
&lt;h3 id=&#34;3-支援長文件&#34;&gt;3. 支援長文件
&lt;/h3&gt;&lt;p&gt;長文件抽取容易遇到上下文窗口、漏抽和重複抽取問題。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 提供了面向長文本的處理方式，可以把長文件拆分後並行處理，再把抽取結果組織起來。&lt;/p&gt;
&lt;p&gt;這讓它更適合處理完整報告、論文、長網頁、批量資料，而不是只處理一小段文本。&lt;/p&gt;
&lt;h3 id=&#34;4-支援視覺化檢查&#34;&gt;4. 支援視覺化檢查
&lt;/h3&gt;&lt;p&gt;抽取結果如果只能看 JSON，很容易漏掉問題。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 支援把抽取結果視覺化，讓你更直觀地查看模型從哪裡抽了什麼。&lt;br&gt;
這對調 prompt、查漏抽、查誤抽都很有幫助。&lt;/p&gt;
&lt;h2 id=&#34;什麼時候適合用&#34;&gt;什麼時候適合用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你要從自然語言文本中抽結構化欄位&lt;/li&gt;
&lt;li&gt;文本格式不完全固定&lt;/li&gt;
&lt;li&gt;需要保留抽取結果和原文的對應關係&lt;/li&gt;
&lt;li&gt;需要處理較長文件&lt;/li&gt;
&lt;li&gt;結果需要人工複核&lt;/li&gt;
&lt;li&gt;後續要進入表格、資料庫或資料分析流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型例子包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;從醫學文本裡抽取症狀、藥物、劑量和反應&lt;/li&gt;
&lt;li&gt;從合約裡抽取甲乙方、義務、金額和期限&lt;/li&gt;
&lt;li&gt;從論文裡抽取研究對象、方法、結論&lt;/li&gt;
&lt;li&gt;從產品資料裡抽取規格參數&lt;/li&gt;
&lt;li&gt;從客服記錄裡抽取問題類型和處理結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是臨時問一段文本的大意，用普通聊天模型就夠。&lt;br&gt;
如果你要把文本變成後續可處理的資料，&lt;code&gt;LangExtract&lt;/code&gt; 會更合適。&lt;/p&gt;
&lt;h2 id=&#34;基本安裝&#34;&gt;基本安裝
&lt;/h2&gt;&lt;p&gt;專案支援透過 &lt;code&gt;pip&lt;/code&gt; 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install langextract
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以從原始碼安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/google/langextract.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; langextract
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要使用模型 API，需要按對應模型提供方配置 API key。&lt;br&gt;
專案文件裡重點展示了 Gemini 相關用法，也支援透過適配層接入其他模型提供方。&lt;/p&gt;
&lt;h2 id=&#34;基本使用思路&#34;&gt;基本使用思路
&lt;/h2&gt;&lt;p&gt;一個典型流程大概是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;準備原始文本&lt;/li&gt;
&lt;li&gt;寫清楚抽取目標&lt;/li&gt;
&lt;li&gt;給少量範例&lt;/li&gt;
&lt;li&gt;呼叫 &lt;code&gt;LangExtract&lt;/code&gt; 執行抽取&lt;/li&gt;
&lt;li&gt;檢查結構化結果&lt;/li&gt;
&lt;li&gt;必要時產生視覺化頁面複核&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這裡最關鍵的是第二步和第三步。&lt;/p&gt;
&lt;p&gt;提示詞要描述清楚任務，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只抽取文本中明確出現的資訊&lt;/li&gt;
&lt;li&gt;不要根據常識補充&lt;/li&gt;
&lt;li&gt;欄位缺失時留空&lt;/li&gt;
&lt;li&gt;同一類實體保持欄位結構一致&lt;/li&gt;
&lt;li&gt;輸出中保留原文片段或位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;範例要盡量接近真實輸入。&lt;br&gt;
如果真實文本裡有雜訊、縮寫、換行、表格殘留，範例裡最好也體現出來。&lt;/p&gt;
&lt;h2 id=&#34;用它時要注意什麼&#34;&gt;用它時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，不要把抽取任務寫得太泛。&lt;/p&gt;
&lt;p&gt;比如「抽取有用資訊」就太寬。&lt;br&gt;
更好的寫法是「抽取藥物名稱、劑量、給藥頻率和不良反應」。&lt;/p&gt;
&lt;p&gt;第二，不要完全信任模型輸出。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 能把結果和原文對齊，但這不等於模型永遠不會漏抽或誤抽。重要場景仍然需要抽樣檢查，必要時加人工複核。&lt;/p&gt;
&lt;p&gt;第三，範例比長篇解釋更有用。&lt;/p&gt;
&lt;p&gt;資訊抽取任務裡，模型往往更依賴範例來理解輸出格式。&lt;br&gt;
與其寫一大段抽象規則，不如給幾個高品質 example。&lt;/p&gt;
&lt;p&gt;第四，長文件要關注成本和速度。&lt;/p&gt;
&lt;p&gt;長文件拆分、並行抽取、模型呼叫都會帶來成本。正式批量處理前，最好先拿一小批樣本調好提示詞和欄位結構。&lt;/p&gt;
&lt;h2 id=&#34;和正則傳統-nlp-有什麼區別&#34;&gt;和正則、傳統 NLP 有什麼區別
&lt;/h2&gt;&lt;p&gt;正則適合格式穩定、規則清楚的文本。&lt;/p&gt;
&lt;p&gt;傳統 NLP 管線適合任務邊界明確、模型或詞典已經準備好的場景。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 更適合格式不那麼固定、但語義比較明確的文本。&lt;br&gt;
它不要求你為每種表達都寫規則，而是讓 LLM 根據範例理解抽取目標。&lt;/p&gt;
&lt;p&gt;但這也意味著它不是正則的完全替代品：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對格式固定的文本，正則更便宜、更穩定&lt;/li&gt;
&lt;li&gt;對高風險場景，仍然要驗證和複核&lt;/li&gt;
&lt;li&gt;對大規模批量處理，要考慮模型呼叫成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較實際的做法是：規則清楚的部分用程式處理，語義變化大的部分交給 &lt;code&gt;LangExtract&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;適合怎樣的開發者&#34;&gt;適合怎樣的開發者
&lt;/h2&gt;&lt;p&gt;如果你正在做下面這些事情，可以關注 &lt;code&gt;LangExtract&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把長文本整理成表格&lt;/li&gt;
&lt;li&gt;從文件中抽實體和關係&lt;/li&gt;
&lt;li&gt;做知識庫入庫前的資料清洗&lt;/li&gt;
&lt;li&gt;從業務文本中抽取欄位&lt;/li&gt;
&lt;li&gt;做 LLM 驅動的資訊抽取原型&lt;/li&gt;
&lt;li&gt;需要保留抽取結果和原文證據&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不是一個「點一下就自動懂所有文件」的工具，更像是一個幫你把 LLM 抽取流程工程化的函式庫。&lt;/p&gt;
&lt;p&gt;你仍然需要設計欄位、寫範例、檢查結果。&lt;br&gt;
但相比每次手寫模型呼叫、拼 prompt、解析輸出，它提供了更完整的抽取框架。&lt;/p&gt;
&lt;h2 id=&#34;參考&#34;&gt;參考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; 的價值在於把「讓 LLM 從文本裡找資訊」這件事做得更可控。&lt;/p&gt;
&lt;p&gt;它適合的不是隨口總結，而是有欄位、有證據、有複核需求的資訊抽取任務。&lt;br&gt;
如果你的工作裡經常要把長文本變成結構化資料，可以把它作為一個值得試用的工具。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude.md 不是越長越好：AI 編程全域記憶文件該怎麼寫</title>
        <link>https://knightli.com/zh-tw/2026/04/29/how-to-write-claude-md-for-ai-coding/</link>
        <pubDate>Wed, 29 Apr 2026 21:07:37 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/29/how-to-write-claude-md-for-ai-coding/</guid>
        <description>&lt;p&gt;最近看到一個關於 AI 編程全域記憶文件的討論：專案裡使用 &lt;code&gt;Claude.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 這類文件之後，效果不一定會變好，甚至可能讓成功率下降，同時推理成本還會上升。&lt;/p&gt;
&lt;p&gt;這件事乍看有點反直覺。我們通常會覺得，給 AI 更多專案背景、更多規則、更多說明，它應該更容易寫對程式碼。&lt;br&gt;
但實際問題在於：&lt;code&gt;Claude.md&lt;/code&gt; 不是普通文件，而是每次對話都會被塞進上下文的全域記憶。它寫得越多，模型每次都要讀得越多；它寫得越含糊，模型每次都要多做判斷；它寫進了不該寫的流程，模型還可能在不相關的任務裡觸發多餘動作。&lt;/p&gt;
&lt;p&gt;所以，&lt;code&gt;Claude.md&lt;/code&gt; 真正難寫的地方，不是怎麼把內容寫全，而是怎麼判斷哪些內容值得長期佔用上下文。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-到底是什麼&#34;&gt;Claude.md 到底是什麼
&lt;/h2&gt;&lt;p&gt;在 AI 編程工具裡，&lt;code&gt;Claude.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 這類文件本質上都是全域記憶文件。&lt;/p&gt;
&lt;p&gt;普通對話會進入上下文，但上下文長度有限。對話長了以後，歷史內容會被壓縮，部分細節會丟失。全域記憶文件的作用，是把一些重要規則固定下來，讓模型在每次任務開始時都能看到。&lt;/p&gt;
&lt;p&gt;這意味著兩件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寫進去的內容更不容易被遺忘&lt;/li&gt;
&lt;li&gt;寫進去的內容也會在每次任務裡產生成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不像一份 README，只在需要時被閱讀。它更像一套長期有效的工作約束。只要放進去，就預設每次都會影響模型的判斷。&lt;/p&gt;
&lt;p&gt;因此，&lt;code&gt;Claude.md&lt;/code&gt; 不是專案介紹，也不是經驗合集，更不是把所有開發流程都塞進去的地方。它應該只存放那些模型如果不知道，就容易反覆犯錯的規則。&lt;/p&gt;
&lt;h2 id=&#34;為什麼寫了反而可能變差&#34;&gt;為什麼寫了反而可能變差
&lt;/h2&gt;&lt;p&gt;全域記憶文件寫得不好，主要會帶來三類問題。&lt;/p&gt;
&lt;p&gt;第一，它會佔用上下文。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;Claude.md&lt;/code&gt; 有一千行，那麼這些內容會長期進入模型上下文。真正與當前任務有關的程式碼、錯誤資訊、需求說明，反而會被擠壓。上下文不是免費的空間，越大的全域規則，越容易稀釋當前任務的重點。&lt;/p&gt;
&lt;p&gt;第二，它會觸發多餘行為。&lt;/p&gt;
&lt;p&gt;比如在全域文件裡寫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每次開始任務前，都要完整閱讀專案目錄。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每次修改後，都要執行完整鏈路測試。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些話看起來很負責，但放在全域記憶裡就會變成「所有任務都預設執行」。哪怕只是改一行文案，模型也可能因為這條規則去做不必要的探索和測試。結果就是任務變慢、成本變高，甚至引入新的干擾。&lt;/p&gt;
&lt;p&gt;第三，它會增加判斷負擔。&lt;/p&gt;
&lt;p&gt;像「保持程式碼優雅、簡潔、可維護、可擴展」這類話，聽起來正確，但實際約束很弱。模型每次生成程式碼時都要判斷什麼叫優雅、什麼叫可擴展，卻沒有得到明確邊界。&lt;/p&gt;
&lt;p&gt;更好的寫法不是堆抽象美德，而是寫具體禁令或反例。比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要為了單個調用點新增通用抽象。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要在沒有測試覆蓋的情況下改動共享解析邏輯。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要把臨時腳本放進業務源碼目錄。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些規則更具體，也更容易被執行。&lt;/p&gt;
&lt;h2 id=&#34;應該寫什麼&#34;&gt;應該寫什麼
&lt;/h2&gt;&lt;p&gt;判斷一條內容要不要寫進 &lt;code&gt;Claude.md&lt;/code&gt;，可以用一個簡單標準：&lt;/p&gt;
&lt;p&gt;如果不寫，AI 就會反覆犯同一種錯誤，那它值得寫進去。&lt;/p&gt;
&lt;p&gt;適合寫進全域記憶文件的內容，通常有這些特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長期有效&lt;/li&gt;
&lt;li&gt;與當前倉庫強相關&lt;/li&gt;
&lt;li&gt;無法從程式碼結構自然推斷&lt;/li&gt;
&lt;li&gt;能明確改變模型行為&lt;/li&gt;
&lt;li&gt;最好是約束、禁令、路徑規則或固定命令&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;所有 Hugo 文章只改 index.zh-cn.md，不自動生成其他語言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;文章 front matter 必須包含 title/date/draft/tags/categories/slug/description。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;不要修改 public/ 目錄裡的構建產物。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PowerShell 下執行部署時使用 scripts/deploy.ps1。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些內容不是泛泛而談，而是和倉庫的真實工作方式綁定。模型如果不知道，就可能做錯；模型知道以後，確實能減少誤操作。&lt;/p&gt;
&lt;h2 id=&#34;不該寫什麼&#34;&gt;不該寫什麼
&lt;/h2&gt;&lt;p&gt;很多人容易把 &lt;code&gt;Claude.md&lt;/code&gt; 寫成專案說明書，這通常沒有必要。&lt;/p&gt;
&lt;p&gt;不太適合寫進去的內容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案願景和背景介紹&lt;/li&gt;
&lt;li&gt;大段目錄結構說明&lt;/li&gt;
&lt;li&gt;臨時任務計畫&lt;/li&gt;
&lt;li&gt;一次性的除錯步驟&lt;/li&gt;
&lt;li&gt;抽象的程式碼審美要求&lt;/li&gt;
&lt;li&gt;只在少數情況下才需要執行的長流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如「這是一個電商專案，包含商品、訂單、使用者模組」這種描述，對模型完成具體編程任務幫助有限。真正開發時，模型應該根據當前需求、規格文件、程式碼結構和測試來判斷，而不是靠全域記憶裡的粗略介紹。&lt;/p&gt;
&lt;p&gt;目錄結構也是類似。除非某個目錄有特殊約定，比如「共享元件只能從這個目錄引用」，否則沒必要把整個樹狀結構都寫進去。模型可以自己讀取專案目錄，硬塞一份靜態目錄說明反而容易過期。&lt;/p&gt;
&lt;h2 id=&#34;流程更適合做成技能或命令&#34;&gt;流程更適合做成技能或命令
&lt;/h2&gt;&lt;p&gt;如果一段內容是「第一步做什麼、第二步做什麼、第三步做什麼」，它未必適合放進 &lt;code&gt;Claude.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;長期流程可以沉澱成技能、腳本或命令。這樣做的好處是：全域記憶裡只需要保留名稱和觸發條件，真正的詳細步驟只在需要時載入。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;當使用者要求翻譯 Hugo 文章時，使用 post-translate 技能。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;當使用者要求部署站點時，執行 hugo-rsync-deploy 流程。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這比把完整翻譯流程、部署流程都寫進 &lt;code&gt;Claude.md&lt;/code&gt; 更輕。全域記憶保持短，具體流程交給可觸發的工具。&lt;/p&gt;
&lt;p&gt;Claude 最近的初始化流程也在往這個方向走：不只是生成一個 &lt;code&gt;Claude.md&lt;/code&gt;，還會嘗試把可複用流程拆成 skills，把固定事件拆成 hooks。這個變化背後的思路很清楚：全域記憶只做入口，細節按需載入。&lt;/p&gt;
&lt;h2 id=&#34;claudemd-需要持續迭代&#34;&gt;Claude.md 需要持續迭代
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; 不應該一次寫完就不管。&lt;/p&gt;
&lt;p&gt;更合理的方式是先保持簡短，讓模型在真實任務裡暴露問題。某個錯誤出現一次，可以先人工處理；如果同類錯誤出現兩次以上，就說明它可能值得沉澱為全域規則。&lt;/p&gt;
&lt;p&gt;這類迭代比一開始寫一大堆規則更有效。因為一開始你不知道哪些規則真的有用，也不知道哪些內容會變成噪音。隨著專案變大、協作變多、模型行為逐漸穩定，再慢慢把高頻問題寫進去。&lt;/p&gt;
&lt;p&gt;還有一個重要趨勢：模型越強，全域記憶文件反而應該越短。&lt;/p&gt;
&lt;p&gt;以前很多需要寫進提示詞的要求，現在模型已經能自然做到。繼續把這些基礎要求塞進 &lt;code&gt;Claude.md&lt;/code&gt;，只會增加上下文負擔。全域記憶應該隨著模型能力提升而收縮，只保留這個倉庫獨有、模型無法自動推斷的部分。&lt;/p&gt;
&lt;h2 id=&#34;一個更實用的寫法&#34;&gt;一個更實用的寫法
&lt;/h2&gt;&lt;p&gt;寫 &lt;code&gt;Claude.md&lt;/code&gt; 時，可以按這個順序思考：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;這個倉庫有什麼特殊約定？&lt;/li&gt;
&lt;li&gt;哪些錯誤模型已經犯過不止一次？&lt;/li&gt;
&lt;li&gt;哪些目錄、文件或命令絕對不能誤用？&lt;/li&gt;
&lt;li&gt;哪些流程應該改成技能、腳本或命令，而不是常駐上下文？&lt;/li&gt;
&lt;li&gt;哪些內容只是介紹，可以刪掉？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最後得到的文件，可能只有幾十行。它不需要完整解釋專案，而是要精確約束行為。&lt;/p&gt;
&lt;p&gt;一個好的 &lt;code&gt;Claude.md&lt;/code&gt;，應該像這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# 工作規則
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 只改與當前任務相關的文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不要修改 public/、resources/ 這類構建產物目錄。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Hugo 文章改寫只處理 index.zh-cn.md，不生成其他語言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 如果涉及部署，先執行 hugo 構建，再執行既有 rsync 腳本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 遇到已有使用者改動時，不要回滾，必須基於現狀繼續修改。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它短，但每一條都能影響實際行為。這樣的內容才值得長期佔用上下文。&lt;/p&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; 的價值不在於讓 AI「知道更多」，而在於讓 AI「少犯固定錯誤」。&lt;/p&gt;
&lt;p&gt;它不是知識庫，也不是專案百科，而是 AI 編程過程裡的長期約束文件。&lt;br&gt;
寫得越具體、越短、越貼近真實錯誤，它越有用；寫得越泛、越長、越像專案介紹，它越可能拖慢模型，甚至讓結果變差。&lt;/p&gt;
&lt;p&gt;把全域記憶當成稀缺資源，而不是無限草稿紙。這大概就是寫好 &lt;code&gt;Claude.md&lt;/code&gt; 最重要的一條原則。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 開始控制電腦，對以後意味著什麼？</title>
        <link>https://knightli.com/zh-tw/2026/04/29/codex-computer-use-update/</link>
        <pubDate>Wed, 29 Apr 2026 11:28:25 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/29/codex-computer-use-update/</guid>
        <description>&lt;p&gt;Codex 這次最值得關注的變化，不是又多了一個普通按鈕，而是它開始往「控制電腦」這個方向走。&lt;/p&gt;
&lt;p&gt;以前我們使用 AI，更多是在聊天框裡提問、複製、貼上、再手動操作軟體。&lt;br&gt;
現在這個邊界開始往外擴：AI 不只是回答你，而是可以根據你的目標去操作桌面應用。&lt;/p&gt;
&lt;p&gt;這件事短期看是一個新功能，長期看可能會改變很多人使用電腦的方式。&lt;/p&gt;
&lt;h2 id=&#34;這個功能是什麼&#34;&gt;這個功能是什麼
&lt;/h2&gt;&lt;p&gt;簡單說，Codex 的電腦使用能力，就是讓它能接觸並操作桌面環境。&lt;/p&gt;
&lt;p&gt;它可以做的事包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以選擇並控制某個應用&lt;/li&gt;
&lt;li&gt;可以用自然語言下達任務&lt;/li&gt;
&lt;li&gt;可以打開瀏覽器、AI 工具、本地文件或其他軟體&lt;/li&gt;
&lt;li&gt;可以輸入內容、點擊按鈕、等待結果&lt;/li&gt;
&lt;li&gt;可以把多個步驟串成一個任務&lt;/li&gt;
&lt;li&gt;可以在後台繼續執行，不需要使用者每一步都手動跟著&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的定位不是單純替你寫一段文字，而是替你完成一段操作流程。&lt;/p&gt;
&lt;p&gt;這就是 Agent 和普通聊天機器人的關鍵差別：&lt;br&gt;
聊天機器人主要給答案，Agent 更接近「拿到目標後去執行」。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這件事重要&#34;&gt;為什麼這件事重要
&lt;/h2&gt;&lt;p&gt;過去很多自動化都要求你會寫腳本。&lt;/p&gt;
&lt;p&gt;比如你想完成一個跨軟體流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打開網頁&lt;/li&gt;
&lt;li&gt;找資料&lt;/li&gt;
&lt;li&gt;複製內容&lt;/li&gt;
&lt;li&gt;交給另一個 AI 工具處理&lt;/li&gt;
&lt;li&gt;保存文件&lt;/li&gt;
&lt;li&gt;再打開本地目錄檢查結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要自動化這件事，傳統做法可能是寫瀏覽器腳本、調用 API、寫本地程序，甚至還要處理各種軟體窗口。&lt;/p&gt;
&lt;p&gt;但很多普通使用者不會寫這些東西。&lt;br&gt;
就算會寫，也未必值得為一個臨時任務專門寫腳本。&lt;/p&gt;
&lt;p&gt;電腦使用能力的意義就在這裡：它把「腳本能力」往自然語言方向推了一步。&lt;/p&gt;
&lt;p&gt;你不一定要告訴它每一步怎麼點。&lt;br&gt;
你可以告訴它你要什麼結果，讓它自己去嘗試完成。&lt;/p&gt;
&lt;h2 id=&#34;它能改變哪些工作流&#34;&gt;它能改變哪些工作流
&lt;/h2&gt;&lt;p&gt;我覺得最先被改變的，不會是特別嚴肅、特別高風險的工作，而是那些「煩、雜、重複、但又不值得專門寫程序」的流程。&lt;/p&gt;
&lt;h3 id=&#34;1-跨軟體搬運&#34;&gt;1. 跨軟體搬運
&lt;/h3&gt;&lt;p&gt;最典型的就是在多個軟體之間搬資訊。&lt;/p&gt;
&lt;p&gt;以前你可能要在瀏覽器、文檔、聊天窗口、本地資料夾之間來回切。&lt;br&gt;
以後可以把這類任務交給 Agent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;去找某類資料&lt;/li&gt;
&lt;li&gt;匯總成文檔&lt;/li&gt;
&lt;li&gt;保存到指定目錄&lt;/li&gt;
&lt;li&gt;打開結果給你確認&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類工作不難，但很耗注意力。&lt;br&gt;
Agent 的價值就是把這些碎操作吃掉。&lt;/p&gt;
&lt;h3 id=&#34;2-多個-ai-工具協同&#34;&gt;2. 多個 AI 工具協同
&lt;/h3&gt;&lt;p&gt;現在很多人的真實工作流已經不是只用一個 AI。&lt;/p&gt;
&lt;p&gt;可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個工具寫程式碼&lt;/li&gt;
&lt;li&gt;一個工具查資料&lt;/li&gt;
&lt;li&gt;一個工具生成圖片&lt;/li&gt;
&lt;li&gt;一個工具整理文檔&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以前這些工具之間靠人手複製貼上。&lt;br&gt;
以後 Agent 可以成為中間層：它負責打開工具、傳遞上下文、等待輸出、整理結果。&lt;/p&gt;
&lt;p&gt;這會讓「多個 AI 協同」從手工流程變成半自動流程。&lt;/p&gt;
&lt;h3 id=&#34;3-辦公軟體自動化&#34;&gt;3. 辦公軟體自動化
&lt;/h3&gt;&lt;p&gt;表格、PPT、文檔、郵件，這些軟體都有一個共同特點：功能很強，但很多操作很碎。&lt;/p&gt;
&lt;p&gt;如果 Agent 能穩定控制這些軟體，以後的辦公自動化門檻會明顯下降。&lt;/p&gt;
&lt;p&gt;你不用記選單在哪裡，也不用學複雜快捷鍵。&lt;br&gt;
你只需要說清楚目標，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把這份表格整理成月報&lt;/li&gt;
&lt;li&gt;根據這份文檔做一頁總結&lt;/li&gt;
&lt;li&gt;把這些資料合併成一個結構清楚的說明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正麻煩的按鈕操作，會逐漸被隱藏到自然語言後面。&lt;/p&gt;
&lt;h2 id=&#34;對普通使用者意味著什麼&#34;&gt;對普通使用者意味著什麼
&lt;/h2&gt;&lt;p&gt;對普通使用者來說，這類功能的影響可能比「模型又聰明了一點」更直接。&lt;/p&gt;
&lt;p&gt;因為它降低的不是知識門檻，而是操作門檻。&lt;/p&gt;
&lt;p&gt;很多人不是不會表達需求，而是不知道軟體裡該點哪裡、怎麼組合功能。&lt;br&gt;
Agent 如果能接管這部分，人使用電腦的方式就會變成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我描述目標
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent 操作軟體
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我檢查結果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這比單純聊天更接近真實生產力。&lt;/p&gt;
&lt;h2 id=&#34;對軟體形態的影響&#34;&gt;對軟體形態的影響
&lt;/h2&gt;&lt;p&gt;如果這類 Agent 能力繼續成熟，軟體本身也會被反向影響。&lt;/p&gt;
&lt;p&gt;過去軟體設計主要服務人類點擊。&lt;br&gt;
以後軟體可能還要服務 Agent 操作。&lt;/p&gt;
&lt;p&gt;這意味著：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;介面元素需要更清晰&lt;/li&gt;
&lt;li&gt;操作回饋需要更穩定&lt;/li&gt;
&lt;li&gt;本地權限需要更細&lt;/li&gt;
&lt;li&gt;軟體可能會提供更適合 Agent 調用的介面&lt;/li&gt;
&lt;li&gt;使用者會更在意「能不能被 AI 順利操作」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;長期看，應用之間的邊界可能會變薄。&lt;br&gt;
使用者關心的不再是「我打開哪個軟體」，而是「我要完成什麼任務」。&lt;/p&gt;
&lt;h2 id=&#34;現在還不能過度樂觀&#34;&gt;現在還不能過度樂觀
&lt;/h2&gt;&lt;p&gt;當然，現在還不到完全放手的時候。&lt;/p&gt;
&lt;p&gt;這類能力目前還有幾個明顯限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;穩定性還需要觀察&lt;/li&gt;
&lt;li&gt;複雜任務可能中途出錯&lt;/li&gt;
&lt;li&gt;權限邊界必須謹慎&lt;/li&gt;
&lt;li&gt;涉及帳號、支付、刪除文件等操作不能隨便放權&lt;/li&gt;
&lt;li&gt;額度消耗也不是完全可以忽略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以現階段最合適的用法，不是讓它完全接管電腦，而是讓它處理低風險、可檢查、步驟繁瑣的任務。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;整理資料&lt;/li&gt;
&lt;li&gt;生成草稿&lt;/li&gt;
&lt;li&gt;跨工具搬運內容&lt;/li&gt;
&lt;li&gt;打開和檢查文件&lt;/li&gt;
&lt;li&gt;做一些可以人工複核的半自動流程&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;Codex 這次更新真正重要的地方，是它把 AI 從「回答問題」推向了「操作環境」。&lt;/p&gt;
&lt;p&gt;短期看，它是一個電腦使用功能。&lt;br&gt;
長期看，它可能是個人電腦互動方式的一次轉向。&lt;/p&gt;
&lt;p&gt;以後我們使用電腦，可能會越來越少地記按鈕、找選單、切窗口。&lt;br&gt;
更多時候，我們只需要說清楚目標，然後讓 Agent 去執行，再由人做最後判斷。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Skill 明明在目錄裡，為什麼就是不顯示？</title>
        <link>https://knightli.com/zh-tw/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</link>
        <pubDate>Wed, 29 Apr 2026 11:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</guid>
        <description>&lt;p&gt;這次遇到的問題很隱蔽：&lt;code&gt;~/.codex/skills&lt;/code&gt; 裡明明已經放好了多個 skill，新開 Codex 執行緒之後，側邊欄卻還是只能看到少數幾個。&lt;/p&gt;
&lt;p&gt;一開始看起來像是快取或索引問題，但實際原因更具體：幾個 &lt;code&gt;SKILL.md&lt;/code&gt; 文件開頭帶了 UTF-8 BOM，Codex 0.111.0 的 skill loader 沒有跳過這個位元組，於是誤判文件沒有合法的 YAML front matter。&lt;/p&gt;
&lt;h2 id=&#34;現象&#34;&gt;現象
&lt;/h2&gt;&lt;p&gt;本地目錄裡有這些 skill：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/git-commit-push/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/hugo-rsync-deploy/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/bilibili-speech-transcriber/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/product-cutout-normalize/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但新開執行緒時，實際暴露出來的只有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是說，文件存在不等於當前會話一定能載入成功。Codex 會先解析每個 &lt;code&gt;SKILL.md&lt;/code&gt; 的 front matter，解析失敗的 skill 會直接被排除。&lt;/p&gt;
&lt;h2 id=&#34;排查&#34;&gt;排查
&lt;/h2&gt;&lt;p&gt;用 &lt;code&gt;codex exec&lt;/code&gt; 啟動一個新會話時，可以看到更直接的錯誤。在 VS Code 等 IDE 中，可能看不到這些 log：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;failed to load skill C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md: missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些文件肉眼看起來都有正常的開頭：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: post-rewrite
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;真正的問題在位元組層面。&lt;/p&gt;
&lt;p&gt;失敗文件的開頭是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;能正常載入的文件開頭是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;2D-2D-2D&lt;/code&gt; 就是 &lt;code&gt;---&lt;/code&gt;。前面的 &lt;code&gt;EF-BB-BF&lt;/code&gt; 是 UTF-8 BOM。&lt;/p&gt;
&lt;h2 id=&#34;原因&#34;&gt;原因
&lt;/h2&gt;&lt;p&gt;Codex 0.111.0 的 skill loader 目前要求 &lt;code&gt;SKILL.md&lt;/code&gt; 文件第一個位元組就是 &lt;code&gt;---&lt;/code&gt; 的第一個 &lt;code&gt;-&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果文件前面帶了 UTF-8 BOM，那麼文件實際開頭就不再是 &lt;code&gt;---&lt;/code&gt;，而是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BOM + ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;於是 loader 會認為它沒有以前置資料分隔符開頭，最後報：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;missing YAML frontmatter delimited by ---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這不是 skill 內容寫錯了，也不是目錄放錯了，而是編碼細節讓解析器沒認出來。&lt;/p&gt;
&lt;h2 id=&#34;修復&#34;&gt;修復
&lt;/h2&gt;&lt;p&gt;把出問題的 &lt;code&gt;SKILL.md&lt;/code&gt; 轉成無 BOM 的 UTF-8 即可。&lt;/p&gt;
&lt;p&gt;PowerShell 可以這樣處理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\git-commit-push\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s1&#34;&gt;&amp;#39;C:\Users\knightli\.codex\skills\hugo-rsync-deploy\SKILL.md&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;New-Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;UTF8Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;vm&#34;&gt;$false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;Text.Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTF8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;IO.File&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteAllText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$utf8NoBom&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;處理後再檢查文件頭，應該從：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;EF-BB-BF-2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;變成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2D-2D-2D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;驗證&#34;&gt;驗證
&lt;/h2&gt;&lt;p&gt;重新啟動一個 Codex 會話後，可見 skill 恢復為：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo-rsync-deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bilibili-speech-transcriber
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果側邊欄仍然只顯示舊的列表，可以退出當前 Codex sidebar 或窗口，再重新打開專案。skill 列表通常在會話啟動時載入，中途改文件不一定會立刻刷新到當前執行緒。&lt;/p&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;這類問題最容易誤判成「Codex 沒重新索引」或「skill 沒安裝好」。&lt;/p&gt;
&lt;p&gt;實際排查時可以先看三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 是否真的在正確目錄&lt;/li&gt;
&lt;li&gt;文件頭部是否有合法的 &lt;code&gt;---&lt;/code&gt; front matter&lt;/li&gt;
&lt;li&gt;文件是否是無 BOM 的 UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這次的關鍵就是第三點：文件看起來沒問題，但第一個位元組不是 &lt;code&gt;-&lt;/code&gt;，Codex 就沒有把它當作一個有效 skill。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 裡的 ~/.codex/skills 和 專案/.codex/skills 有什麼差別</title>
        <link>https://knightli.com/zh-tw/2026/04/29/difference-between-global-and-project-codex-skills/</link>
        <pubDate>Wed, 29 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;很多人整理 Codex skills 時，最容易卡住的問題就兩個：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 和 &lt;code&gt;專案/.codex/skills&lt;/code&gt; 有什麼差別&lt;/li&gt;
&lt;li&gt;為什麼 skill 明明在目錄裡，當前會話裡卻不一定顯示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這篇就直接說結論。&lt;/p&gt;
&lt;h2 id=&#34;兩者的差別&#34;&gt;兩者的差別
&lt;/h2&gt;&lt;p&gt;先記最短版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的全域技能庫&lt;/li&gt;
&lt;li&gt;&lt;code&gt;專案/.codex/skills&lt;/code&gt; 是這個倉庫的本地技能庫&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codexskills&#34;&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;適合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你自己跨專案反覆會用的 skill&lt;/li&gt;
&lt;li&gt;跟具體倉庫無關的通用流程&lt;/li&gt;
&lt;li&gt;很明顯屬於你個人習慣的工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;post-rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post-translate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git-commit-push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo-rsync-deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bilibili-speech-transcriber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類 skill 的特點就是：&lt;strong&gt;離開當前專案也還能用。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;專案codexskills&#34;&gt;&lt;code&gt;專案/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;適合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只對這個倉庫成立的流程&lt;/li&gt;
&lt;li&gt;跟當前專案目錄結構、腳本、模板綁定很深的規則&lt;/li&gt;
&lt;li&gt;需要讓團隊一起共享的 skill&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這個倉庫特有的發布流程&lt;/li&gt;
&lt;li&gt;只能在這個專案裡用的生成模板&lt;/li&gt;
&lt;li&gt;跟專案私有腳本強綁定的自動化步驟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類 skill 的特點是：&lt;strong&gt;離開這個倉庫就沒意義。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;什麼時候放全域什麼時候放專案裡&#34;&gt;什麼時候放全域，什麼時候放專案裡
&lt;/h2&gt;&lt;p&gt;直接這樣判斷就夠了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跟你個人習慣有關，放 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;跟倉庫規則有關，放 &lt;code&gt;專案/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;能跨專案複用，優先放全域&lt;/li&gt;
&lt;li&gt;要多人共享、跟倉庫一起演進，優先放專案裡&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;當前這個倉庫是什麼情況&#34;&gt;當前這個倉庫是什麼情況
&lt;/h2&gt;&lt;p&gt;按我現在看到的實際狀態：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的本機裡有 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;當前倉庫裡沒有 &lt;code&gt;.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以你現在主要依賴的是全域 skills。&lt;/p&gt;
&lt;p&gt;也就是說，像 &lt;code&gt;post-rewrite&lt;/code&gt;、&lt;code&gt;post-translate&lt;/code&gt;、&lt;code&gt;git-commit-push&lt;/code&gt; 這些流程，現在更多是你個人工作流的一部分，不是這個倉庫顯式自帶的一部分。&lt;/p&gt;
&lt;h2 id=&#34;為什麼磁碟裡有當前會話裡卻不一定顯示&#34;&gt;為什麼磁碟裡有，當前會話裡卻不一定顯示
&lt;/h2&gt;&lt;p&gt;這裡要分清兩件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;磁碟存在&lt;/strong&gt;：說明 skill 文件在本地目錄裡&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;會話暴露&lt;/strong&gt;：說明當前會話把它註冊進了可用 skill 列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這兩者不是一回事。&lt;/p&gt;
&lt;p&gt;所以會出現這種情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 裡已經有 skill&lt;/li&gt;
&lt;li&gt;但 &lt;code&gt;/&lt;/code&gt; 後面的列表裡沒有顯示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這通常不代表 skill 壞了，更常見的原因是：&lt;strong&gt;當前會話沒有把它重新索引進去。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;怎樣讓-skill-被當前會話暴露&#34;&gt;怎樣讓 skill 被當前會話暴露
&lt;/h2&gt;&lt;p&gt;最實用的步驟就這幾條：&lt;/p&gt;
&lt;h3 id=&#34;1-目錄放對&#34;&gt;1. 目錄放對
&lt;/h3&gt;&lt;p&gt;全域：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;專案級：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;專案/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-skillmd-頭部可識別&#34;&gt;2. &lt;code&gt;SKILL.md&lt;/code&gt; 頭部可識別
&lt;/h3&gt;&lt;p&gt;最少要有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: your-skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 這個 skill 是做什麼的
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-新建或修改後開新會話&#34;&gt;3. 新建或修改後，開新會話
&lt;/h3&gt;&lt;p&gt;很多時候 skill 沒顯示，不是文件有問題，而是當前會話啟動時就已經把可用 skill 列表定下來了。&lt;/p&gt;
&lt;p&gt;所以你中途新建 skill，磁碟裡雖然已經有了，這次會話也未必會重新認。&lt;/p&gt;
&lt;p&gt;最穩的做法就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;放好 skill&lt;/li&gt;
&lt;li&gt;結束當前會話&lt;/li&gt;
&lt;li&gt;重新進入專案&lt;/li&gt;
&lt;li&gt;開一個新會話&lt;/li&gt;
&lt;li&gt;再看 &lt;code&gt;/&lt;/code&gt; 裡有沒有出現&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-專案-skill-最好提前放好&#34;&gt;4. 專案 skill 最好提前放好
&lt;/h3&gt;&lt;p&gt;如果你想讓 &lt;code&gt;專案/.codex/skills&lt;/code&gt; 更穩定地被識別，最好在進入倉庫、啟動會話之前，就把這些 skill 放進專案裡。&lt;/p&gt;
&lt;h2 id=&#34;最後一句&#34;&gt;最後一句
&lt;/h2&gt;&lt;p&gt;最短結論就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的個人技能庫&lt;/li&gt;
&lt;li&gt;&lt;code&gt;專案/.codex/skills&lt;/code&gt; 是倉庫的本地規則庫&lt;/li&gt;
&lt;li&gt;skill 在目錄裡，不等於當前會話一定會顯示&lt;/li&gt;
&lt;li&gt;想讓它顯示，最常見的辦法就是放對目錄、寫好 &lt;code&gt;SKILL.md&lt;/code&gt;，然後開新會話&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT 5.5、Claude Opus 4.7、DeepSeek V4、Qwen 3.6 Max 怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/04/28/coding-ai-benchmark-gpt55-claude-opus47-deepseek-v4-qwen36max/</link>
        <pubDate>Tue, 28 Apr 2026 22:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/28/coding-ai-benchmark-gpt55-claude-opus47-deepseek-v4-qwen36max/</guid>
        <description>&lt;p&gt;如果你現在只想知道一句話答案，那可以先記這個版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要最穩、最省時間，優先看 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;要頁面觀感、創意和展示感，&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 還是強&lt;/li&gt;
&lt;li&gt;要看國產模型裡誰最接近第一梯隊，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 現在很有競爭力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 不是不能打，但波動比前面幾家更明顯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多人問「現在最強編程 AI 到底是誰」，其實問到最後，通常不是在問排行榜，而是在問一件更實際的事：&lt;br&gt;
&lt;strong&gt;我現在要寫頁面、做 demo、生成小工具、補互動，哪一個最容易一次就給我能用的東西。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;從這個角度看，這幾家模型的差別已經很清楚了。&lt;/p&gt;
&lt;h2 id=&#34;先說總判斷&#34;&gt;先說總判斷
&lt;/h2&gt;&lt;p&gt;如果把 &lt;code&gt;GPT 5.5&lt;/code&gt;、&lt;code&gt;Claude Opus 4.7&lt;/code&gt;、&lt;code&gt;DeepSeek V4&lt;/code&gt;、&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 放在一起看，綜合能力最穩的還是 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它不一定每次都是最花俏的那個，但它很少讓你明顯失望。速度快，第一次生成的完成度高，邏輯、互動、動效、小遊戲這一類綜合任務通常都比較順。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 的特點很不一樣。它最強的地方不是「最穩」，而是頁面氣質、UI 組織和展示感。很多時候你一打開它寫的東西，會先覺得「這個看起來像回事」。如果你更在意頁面呈現，它還是很值得看。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 是這幾家裡最值得重新看的一個。它已經不是「國產裡能用」這個級別了，而是有些場景下真的能和 &lt;code&gt;GPT 5.5&lt;/code&gt; 直接拼效果。尤其是前端頁面、視覺完成度、擬真感這些部分，它已經開始有明顯存在感。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 的問題不是完全不行，而是不夠穩。它能寫出來的時候並不弱，甚至有些場景還不錯，但上下限差得比另外幾家更明顯。你有時候會覺得它挺能打，有時候又會覺得怎麼突然掉下去了。&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-強在哪&#34;&gt;&lt;code&gt;GPT 5.5&lt;/code&gt; 強在哪
&lt;/h2&gt;&lt;p&gt;如果你平時最常做的是這些事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接生成一個完整網頁&lt;/li&gt;
&lt;li&gt;做帶動效的小 demo&lt;/li&gt;
&lt;li&gt;寫有一點邏輯的互動頁面&lt;/li&gt;
&lt;li&gt;生成小遊戲或多狀態互動&lt;/li&gt;
&lt;li&gt;想盡量少返工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;GPT 5.5&lt;/code&gt; 基本還是最穩的答案。&lt;/p&gt;
&lt;p&gt;它的優勢主要有幾個：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出代碼速度快&lt;/li&gt;
&lt;li&gt;第一次成品可用度高&lt;/li&gt;
&lt;li&gt;邏輯和互動比較少出硬傷&lt;/li&gt;
&lt;li&gt;綜合題表現穩定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;說得更直接一點，&lt;code&gt;GPT 5.5&lt;/code&gt; 最像一個「你把需求丟過去，它大概率能先把地基搭對」的模型。&lt;br&gt;
很多人真正缺的不是某一項最驚艷，而是第一版別翻車。這件事上它現在還是最讓人省心。&lt;/p&gt;
&lt;p&gt;當然，它也不是完全沒有短板。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某些偏視覺表現的頁面，不一定是最有驚喜的&lt;/li&gt;
&lt;li&gt;有時候太穩了，反而少一點設計感上的記憶點&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你問「要一個預設推薦」，那還是 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;br&gt;
但如果你問「要不要只看它」，答案也不是。&lt;/p&gt;
&lt;h2 id=&#34;claude-opus-47-適合什麼人&#34;&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 適合什麼人
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 這類模型的吸引力，更多來自頁面觀感。&lt;/p&gt;
&lt;p&gt;它的長處通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UI 結構更順&lt;/li&gt;
&lt;li&gt;視覺表現更完整&lt;/li&gt;
&lt;li&gt;某些頁面更有展示感&lt;/li&gt;
&lt;li&gt;在可視化和創意感上更容易出彩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你讓模型去做的是這些東西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;演示頁面&lt;/li&gt;
&lt;li&gt;數據展示頁面&lt;/li&gt;
&lt;li&gt;強調觀感的小網頁&lt;/li&gt;
&lt;li&gt;想要一打開就「看起來比較高級」的結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;Claude&lt;/code&gt; 依然值得進前排。&lt;/p&gt;
&lt;p&gt;不過它的問題也一直比較明顯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;穩定性不如 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;有時看著不錯，但細節邏輯會偏掉&lt;/li&gt;
&lt;li&gt;個別場景裡會出現功能能跑，但核心體驗不夠準的情況&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;Claude&lt;/code&gt; 更像一個有審美加成的前端型選手。&lt;br&gt;
你要是更看重頁面「長得好不好」，它很有優勢；你要是最怕第一次輸出就出邏輯問題，那還是得更謹慎一點。&lt;/p&gt;
&lt;h2 id=&#34;qwen-36-max-為什麼值得認真看&#34;&gt;&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 為什麼值得認真看
&lt;/h2&gt;&lt;p&gt;這幾家裡，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 給人的最大變化感最明顯。&lt;/p&gt;
&lt;p&gt;以前很多人看國產編程 AI，更多是抱著「能不能跟上」的心態。現在看 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;，已經是另一種問題了：&lt;br&gt;
&lt;strong&gt;它在一些前端直出場景裡，到底能不能直接和國外頭部模型打。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它現在比較突出的地方有這些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;頁面觀感不錯&lt;/li&gt;
&lt;li&gt;某些動效和擬真效果做得挺好&lt;/li&gt;
&lt;li&gt;生成結果比較有完成感&lt;/li&gt;
&lt;li&gt;有些題目裡，效果已經能接近甚至咬住 &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明一件事：&lt;br&gt;
如果你的使用場景偏網頁、偏前端、偏展示結果，那 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 已經不是「備用選項」，而是可以認真放進主選名單的模型。&lt;/p&gt;
&lt;p&gt;當然，它還沒有穩到完全沒有短板。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;互動邏輯題上，偶爾還是會掉一點完成度&lt;/li&gt;
&lt;li&gt;有些頁面很好看，但有些任務又會突然平一點&lt;/li&gt;
&lt;li&gt;起伏比 &lt;code&gt;GPT 5.5&lt;/code&gt; 還是大一些&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但整體上，它現在的存在感已經非常強了。&lt;br&gt;
如果你想知道「國產模型裡現在最該重點看誰」，那 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 很難繞開。&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-現在處在什麼位置&#34;&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 現在處在什麼位置
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; 的情況稍微複雜一點。&lt;/p&gt;
&lt;p&gt;它的問題不是完全做不好，而是你不太容易預判它這次會落在哪個區間。&lt;br&gt;
有時候它能把事情做出來，觀感和功能都不算差；有時候遇到稍微複雜一點、同時要求動畫、邏輯、數據表現的任務，它又容易掉鏈子。&lt;/p&gt;
&lt;p&gt;它目前給人的感覺更像這樣：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能力有&lt;/li&gt;
&lt;li&gt;不算弱&lt;/li&gt;
&lt;li&gt;某些題目可以交卷&lt;/li&gt;
&lt;li&gt;但穩定性還不夠讓人完全放心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這就決定了它現在更適合什麼樣的人。&lt;/p&gt;
&lt;p&gt;如果你願意多試幾次、能接受偶爾需要重來、或者你本來就會自己檢查和修代碼，那 &lt;code&gt;DeepSeek V4&lt;/code&gt; 還是可以繼續用。&lt;br&gt;
但如果你就是想少折騰、想把第一次生成成功率放在前面，那它現在還不是最穩的答案。&lt;/p&gt;
&lt;h2 id=&#34;普通用戶到底該怎麼選&#34;&gt;普通用戶到底該怎麼選
&lt;/h2&gt;&lt;p&gt;如果你不是做模型評測，而是真的想拿來幹活，那其實可以直接按用途選。&lt;/p&gt;
&lt;h3 id=&#34;1-想少折騰想提高第一次成功率&#34;&gt;1. 想少折騰，想提高第一次成功率
&lt;/h3&gt;&lt;p&gt;選 &lt;code&gt;GPT 5.5&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它最適合的就是「我給需求，你先給我一版能用的」。&lt;br&gt;
尤其是你沒有太多時間來回調、反覆修的時候，它的綜合穩定性最有價值。&lt;/p&gt;
&lt;h3 id=&#34;2-更看重頁面展示感和視覺完成度&#34;&gt;2. 更看重頁面展示感和視覺完成度
&lt;/h3&gt;&lt;p&gt;選 &lt;code&gt;Claude Opus 4.7&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你想要的是一個看起來更像成品的頁面，或者你做的是偏演示型、展示型的東西，&lt;code&gt;Claude&lt;/code&gt; 的優勢會更容易體現出來。&lt;/p&gt;
&lt;h3 id=&#34;3-想重點看國產裡最強的前端直出能力&#34;&gt;3. 想重點看國產裡最強的前端直出能力
&lt;/h3&gt;&lt;p&gt;優先看 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它現在已經不是「將就用」，而是真的可以拿來正面比較。&lt;br&gt;
如果你的任務偏網頁、偏動效、偏展示，&lt;code&gt;Qwen&lt;/code&gt; 的競爭力已經很實際了。&lt;/p&gt;
&lt;h3 id=&#34;4-能接受波動想繼續觀察國產綜合能力&#34;&gt;4. 能接受波動，想繼續觀察國產綜合能力
&lt;/h3&gt;&lt;p&gt;可以繼續看 &lt;code&gt;DeepSeek V4&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它的問題不是沒實力，而是發揮不夠整齊。&lt;br&gt;
如果後面穩定性繼續補上，它的存在感還會更強。&lt;/p&gt;
&lt;h2 id=&#34;最後一句話&#34;&gt;最後一句話
&lt;/h2&gt;&lt;p&gt;現在這幾家主流編程 AI，差距已經不再是「誰能寫、誰不能寫」，而是「誰更穩、誰更好看、誰更適合你的任務」。&lt;/p&gt;
&lt;p&gt;如果你就想要一個最省事的答案，&lt;code&gt;GPT 5.5&lt;/code&gt; 還是第一選擇。&lt;br&gt;
如果你想要更強的展示感，&lt;code&gt;Claude Opus 4.7&lt;/code&gt; 仍然很有味道。&lt;br&gt;
如果你關心國產模型裡誰最值得認真看，&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; 現在已經站到很靠前的位置。&lt;br&gt;
&lt;code&gt;DeepSeek V4&lt;/code&gt; 則更像一個還在繼續補穩定性的強力選手。&lt;/p&gt;
&lt;p&gt;真要壓成一句最短結論，就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最穩看 &lt;code&gt;GPT 5.5&lt;/code&gt;，最有觀感看 &lt;code&gt;Claude&lt;/code&gt;，國產裡最值得重點看的是 &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph 和多智能體協同：怎麼讓 AI 長時間穩定工作</title>
        <link>https://knightli.com/zh-tw/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</link>
        <pubDate>Mon, 27 Apr 2026 08:19:02 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</guid>
        <description>&lt;p&gt;如果你最近在折騰 coding agent，很快就會遇到一個現實問題：&lt;strong&gt;AI 當然能幹活，但怎麼讓它連續幹幾個小時，還不在中途跑偏、忘要求、返工一堆？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;圍繞 &lt;code&gt;Ralph&lt;/code&gt; 和多智能體協同的這類討論，真正值得看的也正是這個問題。它不是單純比較某個模型有多強，而是把重點放在一層更實際的東西上：&lt;strong&gt;怎麼設計工作流，才能讓 AI 在長任務裡保持穩定輸出。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把這個問題拆開看，常見的路線主要有兩條：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 方案：不斷啟動新會話，透過檔案系統銜接上下文&lt;/li&gt;
&lt;li&gt;多智能體方案：主 Agent 做協調，子 Agent 分工執行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把它壓成一句更好理解的話，這裡討論的其實不是「哪個模型更厲害」，而是「怎麼把 AI 組織起來，讓它更像一個能持續交付的小團隊」。&lt;/p&gt;
&lt;h2 id=&#34;01-為什麼長時任務容易失控&#34;&gt;01 為什麼長時任務容易失控
&lt;/h2&gt;&lt;p&gt;短任務裡，很多問題不明顯。你給一句指令，模型讀幾份檔案，改幾行程式碼，事情也就結束了。&lt;/p&gt;
&lt;p&gt;但任務一旦拉長，問題會集中冒出來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;會話越來越長，上下文開始膨脹&lt;/li&gt;
&lt;li&gt;早先的要求被新資訊擠掉&lt;/li&gt;
&lt;li&gt;一個 Agent 既要想方案，又要寫程式碼，還要自己測，容易顧不過來&lt;/li&gt;
&lt;li&gt;沒有明確驗收環節時，看起來「做完了」，其實只是「說自己做完了」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以長時間運行 AI，真正考驗的往往不是模型單次輸出能力，而是 &lt;strong&gt;任務拆分、狀態銜接、角色分工和回饋回路&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;02-ralph-方案把長任務拆成很多短回合&#34;&gt;02 Ralph 方案：把長任務拆成很多短回合
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 的思路很適合先解決「上下文越跑越髒」這個問題。&lt;/p&gt;
&lt;p&gt;它的核心做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用循環不斷啟動新的 agent 會話&lt;/li&gt;
&lt;li&gt;每輪只處理一個足夠小的任務&lt;/li&gt;
&lt;li&gt;把跨輪狀態放到檔案裡，而不是全壓在同一個對話上下文裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的好處很直接：每次都是 fresh context，單輪會更聚焦，也更不容易被歷史訊息拖慢。&lt;/p&gt;
&lt;p&gt;如果你已經看過 &lt;code&gt;Ralph&lt;/code&gt; 相關專案，會發現這套方法背後的邏輯很一致：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;當前任務寫在結構化檔案裡&lt;/li&gt;
&lt;li&gt;中間經驗寫到進度檔案裡&lt;/li&gt;
&lt;li&gt;程式碼變化留在 git 歷史裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，&lt;code&gt;Ralph&lt;/code&gt; 不是試圖讓一個 Agent「永遠記住所有事」，而是主動把記憶外置，讓會話本身保持輕一點。&lt;/p&gt;
&lt;p&gt;這類方案特別適合下面幾種情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任務已經能拆成一組小 story&lt;/li&gt;
&lt;li&gt;每個 story 都能在單個上下文視窗裡完成&lt;/li&gt;
&lt;li&gt;專案裡已經有測試、typecheck 或其他檢查機制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解決的是「如何讓 AI 一輪一輪穩定推進」。&lt;/p&gt;
&lt;h2 id=&#34;03-多智能體方案把一個人做不完的事分出去&#34;&gt;03 多智能體方案：把一個人做不完的事分出去
&lt;/h2&gt;&lt;p&gt;另一條路線是多智能體協同。&lt;/p&gt;
&lt;p&gt;從這類工作流設計思路來看，更值得推薦的通常是這種方式：主 Agent 不直接埋頭幹活，而是負責協調；子 Agent 各自處理開發、測試、檢查、驗收等不同任務。&lt;/p&gt;
&lt;p&gt;這和 &lt;code&gt;Ralph&lt;/code&gt; 的區別在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更像串行迭代&lt;/li&gt;
&lt;li&gt;多智能體更像並行分工&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果任務裡天然有不同角色，多智能體會更順手。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個 Agent 負責拆任務和寫執行計畫&lt;/li&gt;
&lt;li&gt;一個 Agent 負責具體實作&lt;/li&gt;
&lt;li&gt;一個 Agent 負責測試和驗證&lt;/li&gt;
&lt;li&gt;一個 Agent 負責回看結果是不是符合最初需求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的價值不是「多開幾個視窗顯得很高級」，而是讓不同工作職責分離開。原來塞在一個 Agent 身上的幾件事，現在可以拆成幾個更明確的環節。&lt;/p&gt;
&lt;p&gt;一旦角色邊界清楚，很多問題都會變輕：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寫的人不必同時當審的人&lt;/li&gt;
&lt;li&gt;跑測試的人不必重新推導整套需求&lt;/li&gt;
&lt;li&gt;主 Agent 不會被實作細節淹沒&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解決的是「如何讓 AI 像一個小團隊那樣配合」。&lt;/p&gt;
&lt;h2 id=&#34;04-真正關鍵的不是多開而是怎麼拆&#34;&gt;04 真正關鍵的，不是多開，而是怎麼拆
&lt;/h2&gt;&lt;p&gt;無論是 &lt;code&gt;Ralph&lt;/code&gt; 還是多智能體，最容易被忽略的一點都是：&lt;strong&gt;流程設計比多開幾個 Agent 更重要。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果任務拆分不對，就算開再多 Agent，也只是把混亂並行化。&lt;/p&gt;
&lt;p&gt;比較穩的拆法通常有幾個特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個任務只對應一個明確目標&lt;/li&gt;
&lt;li&gt;一個角色只負責一類輸出&lt;/li&gt;
&lt;li&gt;每輪都有清楚的完成標準&lt;/li&gt;
&lt;li&gt;上一輪的結果能被下一輪直接消費&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如比起給 AI 一個「把整個功能做完」的大指令，更穩的方式往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先拆出需求和邊界&lt;/li&gt;
&lt;li&gt;再拆實作&lt;/li&gt;
&lt;li&gt;再拆測試&lt;/li&gt;
&lt;li&gt;最後單獨做驗收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類拆法的好處是，問題一旦出現，更容易知道是出在理解、實作、測試，還是交付標準上。&lt;/p&gt;
&lt;h2 id=&#34;05-為什麼驗收環節特別重要&#34;&gt;05 為什麼驗收環節特別重要
&lt;/h2&gt;&lt;p&gt;很多 AI 工作流失敗，不是因為前面完全沒做事，而是因為最後缺了一個真正獨立的確認動作。&lt;/p&gt;
&lt;p&gt;在長任務裡，「已經生成結果」和「結果真的可用」之間，經常隔著一整層差距。&lt;/p&gt;
&lt;p&gt;這裡有個很值得重視的方向，就是把開發和驗收拆開看。哪怕不做到特別複雜，至少也應該把這些問題單獨問一遍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它真的完成了最初那條任務嗎&lt;/li&gt;
&lt;li&gt;有沒有只改表面、沒解決根因&lt;/li&gt;
&lt;li&gt;測試是不是只驗證了最順利的路徑&lt;/li&gt;
&lt;li&gt;有沒有把上游要求悄悄改掉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要這層檢查缺位，AI 很容易在長流程裡不斷「自我宣布成功」。&lt;/p&gt;
&lt;h2 id=&#34;06-兩條路線怎麼選&#34;&gt;06 兩條路線怎麼選
&lt;/h2&gt;&lt;p&gt;如果只是想快速判斷，可以先這麼理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你最痛的是上下文膨脹和長會話失焦，先看 &lt;code&gt;Ralph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;你最痛的是一個 Agent 身兼多職、任務之間互相打架，先看多智能體&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再具體一點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; 更適合流程清楚、任務細碎、可以按回合推進的工作&lt;/li&gt;
&lt;li&gt;多智能體更適合角色明顯、需要並行和交叉驗證的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多時候，這兩條路也不是非此即彼。比較成熟的做法，反而可能是把它們組合起來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外層用 &lt;code&gt;Ralph&lt;/code&gt; 這種迭代循環推進大任務&lt;/li&gt;
&lt;li&gt;內層在單輪裡再用多智能體處理研究、實作、測試和驗收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣既能控制長上下文，又能提高單輪內部的協作效率。&lt;/p&gt;
&lt;h2 id=&#34;07-一句話總結&#34;&gt;07 一句話總結
&lt;/h2&gt;&lt;p&gt;這類方法最值得看的地方，不是單獨推薦了 &lt;code&gt;Ralph&lt;/code&gt; 或多智能體，而是把一個很現實的問題講清楚了：&lt;strong&gt;讓 AI 長時間穩定工作，關鍵從來不只是模型本身，而是你有沒有把上下文、任務、角色和驗收設計好。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已經開始讓 &lt;code&gt;Claude Code&lt;/code&gt;、&lt;code&gt;Codex&lt;/code&gt; 或其他 coding agent 處理更長的真實任務，這類工作流思路會比「再換一個更強模型」更值得優先補課。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph 是什麼：把 Claude Code 和 Amp 變成可循環執行的自主開發流程</title>
        <link>https://knightli.com/zh-tw/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</link>
        <pubDate>Mon, 27 Apr 2026 08:08:55 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</guid>
        <description>&lt;p&gt;如果你最近在關注 coding agent 的長流程執行，&lt;code&gt;snarktank/ralph&lt;/code&gt; 是個很值得看一眼的小專案。它不是再做一個新的模型外殼，也不是再包一層聊天介面，而是把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 組織成一個可以反覆運行的 autonomous loop，讓 AI 按 &lt;code&gt;PRD&lt;/code&gt; 裡的 story 一項一項往前做，直到全部完成。&lt;/p&gt;
&lt;p&gt;它的核心思路其實很直接：&lt;strong&gt;不要讓同一個 agent 在一個越來越長、越來越髒的上下文裡硬撐，而是每輪都重新啟動一個全新的 AI coding session。&lt;/strong&gt; 這樣做的好處是，上下文不會一路膨脹，任務邊界也更清楚。&lt;/p&gt;
&lt;h2 id=&#34;01-ralph-是什麼&#34;&gt;01 Ralph 是什麼
&lt;/h2&gt;&lt;p&gt;Ralph 的官方定位很明確：它是一個 autonomous AI agent loop，會反覆呼叫 AI coding tool，直到 &lt;code&gt;PRD&lt;/code&gt; 裡的項目都做完。&lt;/p&gt;
&lt;p&gt;目前倉庫支援兩種工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Amp CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一輪迭代都會啟動一個 fresh instance。也就是說，它不依賴「同一個會話一直聊下去」，而是依賴這些外部狀態來保存記憶：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git 歷史&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這點非常關鍵。很多人讓 agent 跑長任務時，最大的痛點不是模型不會寫，而是會話越跑越重，最後開始漏掉上下文、忘記要求、反覆返工。Ralph 的設計，基本就是衝著這個問題去的。&lt;/p&gt;
&lt;h2 id=&#34;02-它怎麼工作&#34;&gt;02 它怎麼工作
&lt;/h2&gt;&lt;p&gt;Ralph 的工作流分成三步：&lt;/p&gt;
&lt;h3 id=&#34;1-先寫-prd&#34;&gt;1. 先寫 PRD
&lt;/h3&gt;&lt;p&gt;README 建議先用配套的 &lt;code&gt;prd&lt;/code&gt; skill 生成需求文件，把功能拆成比較細的 story。&lt;/p&gt;
&lt;h3 id=&#34;2-再把-prd-轉成-prdjson&#34;&gt;2. 再把 PRD 轉成 &lt;code&gt;prd.json&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;然後用 &lt;code&gt;ralph&lt;/code&gt; skill，把 Markdown 版 PRD 轉成結構化的 &lt;code&gt;prd.json&lt;/code&gt;。這個檔案裡會保存 user stories，以及每一項是不是已經通過。&lt;/p&gt;
&lt;h3 id=&#34;3-執行循環腳本&#34;&gt;3. 執行循環腳本
&lt;/h3&gt;&lt;p&gt;真正執行的是 &lt;code&gt;ralph.sh&lt;/code&gt;。命令大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh --tool claude &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設是 10 輪。每一輪大致會做這些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;從 &lt;code&gt;branchName&lt;/code&gt; 建立分支&lt;/li&gt;
&lt;li&gt;選擇優先級最高、&lt;code&gt;passes: false&lt;/code&gt; 的 story&lt;/li&gt;
&lt;li&gt;只實作這一項&lt;/li&gt;
&lt;li&gt;跑品質檢查，比如 typecheck 和 tests&lt;/li&gt;
&lt;li&gt;檢查通過後提交程式碼&lt;/li&gt;
&lt;li&gt;更新 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把經驗追加到 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;繼續下一輪&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是說，Ralph 並不追求「一口氣把整件事做完」，而是把任務壓縮成很多個能在單個上下文視窗裡完成的小閉環。&lt;/p&gt;
&lt;h2 id=&#34;03-ralph-最有意思的地方&#34;&gt;03 Ralph 最有意思的地方
&lt;/h2&gt;&lt;h3 id=&#34;1-每輪都是-fresh-context&#34;&gt;1. 每輪都是 fresh context
&lt;/h3&gt;&lt;p&gt;這是 Ralph 最核心的設計點。README 強調，每次迭代都是一個新的 AI instance，跨輪記憶只靠 git、&lt;code&gt;progress.txt&lt;/code&gt; 和 &lt;code&gt;prd.json&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這和很多人平常直接在一個長對話裡讓 Claude Code 或其他工具連續工作很不一樣。後者在任務變大後，很容易被歷史訊息拖慢，還會逐漸失去焦點。Ralph 則是主動接受「單輪記不住全部」，然後把記憶放到外部檔案裡。&lt;/p&gt;
&lt;h3 id=&#34;2-強制把任務拆小&#34;&gt;2. 強制把任務拆小
&lt;/h3&gt;&lt;p&gt;倉庫文件特別強調，單個 PRD item 必須小到能在一個 context window 裡完成。像「加一個篩選器」「改一個 server action」「補一欄資料庫欄位」這種粒度比較合適；而「重構整個 API」「做完整 dashboard」這種就太大了。&lt;/p&gt;
&lt;p&gt;這個約束其實很現實。很多 autonomous agent 跑崩，不是 loop 本身有問題，而是任務切分太粗，讓模型一輪裡就背了過量目標。&lt;/p&gt;
&lt;h3 id=&#34;3-不只是程式碼連經驗也要沉澱&#34;&gt;3. 不只是程式碼，連經驗也要沉澱
&lt;/h3&gt;&lt;p&gt;除了 &lt;code&gt;progress.txt&lt;/code&gt;，README 還特別強調要更新 &lt;code&gt;AGENTS.md&lt;/code&gt;。原因也很實際：未來迭代和未來開發者都會讀這些說明，所以每輪發現的模式、坑點、約定，最好都落到專案文件裡。&lt;/p&gt;
&lt;p&gt;換句話說，Ralph 不只是讓 agent 連續寫程式，也想讓它連續累積對程式碼庫的工作記憶。&lt;/p&gt;
&lt;h2 id=&#34;04-它適合什麼場景&#34;&gt;04 它適合什麼場景
&lt;/h2&gt;&lt;p&gt;如果你的任務具備這些特徵，Ralph 會比較對路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;已經能拆成一組明確的 user stories&lt;/li&gt;
&lt;li&gt;程式碼庫裡有比較可靠的回饋回路，比如測試、typecheck、CI&lt;/li&gt;
&lt;li&gt;你希望 agent 持續推進，但不想把所有事壓在單個長對話裡&lt;/li&gt;
&lt;li&gt;你接受它按迭代方式一點點完成，而不是一次性全做完&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;反過來說，如果你的需求還很模糊，或者任務本身高度依賴來回討論、頻繁改方向，那 Ralph 可能還不是第一選擇。它更適合「需求已經整理好，現在需要穩定推進執行」的階段。&lt;/p&gt;
&lt;h2 id=&#34;05-它和一般-claude-code-用法有什麼不同&#34;&gt;05 它和一般 Claude Code 用法有什麼不同
&lt;/h2&gt;&lt;p&gt;如果平常直接用 &lt;code&gt;Claude Code&lt;/code&gt;，常見模式是你開一個會話，讓它持續讀程式碼、改程式碼、跑命令。這個方式在中小任務上很好用，但在大任務上容易碰到兩個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文越來越長&lt;/li&gt;
&lt;li&gt;中間決策不容易結構化沉澱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralph 的做法更像把 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 變成一個「批次執行器」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任務來源不是臨時聊天，而是 &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;每輪只認一個 story&lt;/li&gt;
&lt;li&gt;完成狀態寫回檔案&lt;/li&gt;
&lt;li&gt;經驗寫進 &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;程式碼提交進 git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像是「給 coding agent 加了一層迭代控制器」，而不是換了一個新的 AI assistant。&lt;/p&gt;
&lt;h2 id=&#34;06-一個值得注意的前提&#34;&gt;06 一個值得注意的前提
&lt;/h2&gt;&lt;p&gt;Ralph 能不能跑順，關鍵不在 loop 本身，而在回饋回路夠不夠好。README 寫得很直接：如果沒有 typecheck、tests、CI 這些機制，錯誤會在後續迭代裡不斷累積。&lt;/p&gt;
&lt;p&gt;對前端任務來說，倉庫甚至明確建議把「用瀏覽器驗證」寫進 acceptance criteria。因為如果沒有實際驗證，agent 很容易把「看起來寫完了」和「真的可用」混在一起。&lt;/p&gt;
&lt;p&gt;這點很重要。Ralph 不是 magical automation，它更像是把你現有的工程紀律放大。如果你的專案本來就有清晰任務拆分和可靠檢查，它會更有價值；如果這些基礎還沒有，loop 只會把混亂重複很多次。&lt;/p&gt;
&lt;h2 id=&#34;07-一句話總結&#34;&gt;07 一句話總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; 最值得看的地方，不是它寫了多少新基礎設施，而是它把一個樸素但很有用的思路落成了現成流程：&lt;strong&gt;讓 &lt;code&gt;Claude Code&lt;/code&gt; 或 &lt;code&gt;Amp&lt;/code&gt; 每輪只做一個足夠小的 story，用 fresh context 保持專注，再靠 &lt;code&gt;git&lt;/code&gt;、&lt;code&gt;prd.json&lt;/code&gt; 和 &lt;code&gt;progress.txt&lt;/code&gt; 維持跨輪連續性。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你已經開始把 coding agent 用到真實專案裡，並且正被「長任務怎麼穩定推進」這個問題困住，Ralph 這套方法很值得參考。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 倉庫：&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/snarktank/ralph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;互動式流程圖：&lt;a class=&#34;link&#34; href=&#34;https://snarktank.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://snarktank.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek V4 Pro 對比 GPT-5.5：前端、寫作、程式實測後，差距比想像更大</title>
        <link>https://knightli.com/zh-tw/2026/04/25/deepseek-v4-pro-vs-gpt-5-5-frontend-writing-code/</link>
        <pubDate>Sat, 25 Apr 2026 11:12:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/25/deepseek-v4-pro-vs-gpt-5-5-frontend-writing-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 這種對比，最近越來越容易引發討論。因為它已經不是「誰能不能用」的問題，而是：&lt;strong&gt;當任務落到前端、寫作、程式這三類高頻場景時，誰更適合當主力？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人做這類比較時，習慣先問一句：哪個更強。&lt;br&gt;
但更有價值的問題通常不是這個，而是：&lt;strong&gt;在具體任務裡，哪個更穩、哪個更省溝通成本、哪個更容易產出能直接繼續推進的結果。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果先給一個簡化版結論，可以大致這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要更均衡、產品化體驗更完整的綜合輸出時，很多人還是會先看 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要中文語境下高頻迭代、對成本更敏感、追求回應效率時，&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 會更容易進入候選名單&lt;/li&gt;
&lt;li&gt;真正決定體驗的，往往不是模型名字本身，而是任務類型、提示方式，以及你後續還要不要繼續改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面按三個最常見的比較場景展開。&lt;/p&gt;
&lt;h2 id=&#34;1-前端任務比的不是會不會寫頁面而是能不能繼續接著改&#34;&gt;1. 前端任務：比的不是「會不會寫頁面」，而是能不能繼續接著改
&lt;/h2&gt;&lt;p&gt;前端任務看起來很適合拿來做模型對比，因為結果很直觀：&lt;br&gt;
頁面能不能跑、樣式好不好看、結構清不清楚，一眼就能看到。&lt;/p&gt;
&lt;p&gt;但真正拉開差距的，往往不是第一版能不能寫出來，而是後續這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;結構是不是夠清晰&lt;/li&gt;
&lt;li&gt;元件拆分是否自然&lt;/li&gt;
&lt;li&gt;改一處時會不會連帶改壞別的地方&lt;/li&gt;
&lt;li&gt;能不能在多輪指令下繼續保持同一套實作思路&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是為什麼很多「首輪效果驚艷」的前端演示，放進真實工作流後未必依然佔優。&lt;/p&gt;
&lt;p&gt;如果你的任務是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快速生成一個可執行的頁面原型&lt;/li&gt;
&lt;li&gt;先把一個落地頁思路寫出來&lt;/li&gt;
&lt;li&gt;按要求補齊樣式、按鈕、卡片、表單等基礎元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那兩類模型通常都能完成得八九不離十，差別更多體現在輸出風格。&lt;/p&gt;
&lt;p&gt;而如果你的任務變成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持續多輪改 UI&lt;/li&gt;
&lt;li&gt;一邊讀現有程式碼一邊接著改&lt;/li&gt;
&lt;li&gt;同時兼顧元件結構、樣式一致性和可維護性&lt;/li&gt;
&lt;li&gt;從靜態頁面逐步推進到真實專案程式碼&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那你更應該觀察的就不是「第一輪誰更像樣」，而是「誰在第五輪以後還不容易跑偏」。&lt;/p&gt;
&lt;p&gt;所以前端對比真正該看的，不是模型能不能生成頁面，而是它能不能在你連續追加限制之後，依舊保持結構穩定、命名一致、修改成本可控。&lt;/p&gt;
&lt;h2 id=&#34;2-寫作任務比的不是字多不多而是風格穩不穩重寫順不順&#34;&gt;2. 寫作任務：比的不是字多不多，而是風格穩不穩、重寫順不順
&lt;/h2&gt;&lt;p&gt;寫作是另一類特別容易出現誤判的場景。&lt;/p&gt;
&lt;p&gt;因為很多時候，模型第一次輸出看起來都不差：&lt;br&gt;
結構完整、段落齊全、語氣順滑，乍看之下很容易覺得「差不多」。&lt;/p&gt;
&lt;p&gt;但只要你把任務往前推一步，差異就會冒出來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能不能準確理解你要的受眾&lt;/li&gt;
&lt;li&gt;能不能在同一主題下切換不同口吻&lt;/li&gt;
&lt;li&gt;重寫時會不會丟掉原文重點&lt;/li&gt;
&lt;li&gt;壓縮、擴寫、改標題、換結構時是否穩定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;寫作任務裡最怕的不是「寫不出來」，而是「看起來寫出來了，但你還得重改很多遍」。&lt;/p&gt;
&lt;p&gt;所以在 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 之間，更實用的比較方式通常不是讓它們各寫一篇，而是連續做這幾輪：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先寫初稿&lt;/li&gt;
&lt;li&gt;再換一個語氣重寫&lt;/li&gt;
&lt;li&gt;再壓縮成更短版本&lt;/li&gt;
&lt;li&gt;再改成更適合標題黨或搜尋分發的寫法&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果一個模型在這幾輪裡仍然能保持重點不散、表達不飄、結構不亂，那它在真實寫作工作流裡的價值才會更高。&lt;/p&gt;
&lt;p&gt;也就是說，寫作任務真正比的不是「文采」，而是&lt;strong&gt;改稿能力、服從度和連續協作感&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;3-程式任務真正拉開差距的是長鏈路穩定性&#34;&gt;3. 程式任務：真正拉開差距的是長鏈路穩定性
&lt;/h2&gt;&lt;p&gt;程式任務比前端任務更容易暴露模型真實水平，因為它不只是要「輸出」，還要「對接現實」。&lt;/p&gt;
&lt;p&gt;你很快就會遇到這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它能不能理解既有專案結構&lt;/li&gt;
&lt;li&gt;能不能同時修改多個檔案&lt;/li&gt;
&lt;li&gt;改完以後有沒有引入新的問題&lt;/li&gt;
&lt;li&gt;出錯時會不會順著日誌繼續往下查&lt;/li&gt;
&lt;li&gt;多輪之後還記不記得前面已經做過什麼&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類任務裡，使用者最在意的通常不是某一段程式碼漂不漂亮，而是：&lt;strong&gt;能不能幫我持續往前推進，而不是讓我來收拾殘局。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所以比較 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 時，最值得看的往往不是單點題，而是這種更接近真實工作的過程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀一個既有倉庫&lt;/li&gt;
&lt;li&gt;找到一個 bug&lt;/li&gt;
&lt;li&gt;改多個相關檔案&lt;/li&gt;
&lt;li&gt;根據報錯繼續修&lt;/li&gt;
&lt;li&gt;最後把結果整理清楚&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要任務進入這種連續推進模式，模型的上下文保持能力、執行習慣、解釋品質和返工率，都會比「單輪答題效果」更重要。&lt;/p&gt;
&lt;p&gt;這也是為什麼很多使用者在程式場景裡，最後形成的不是「永遠只用一個模型」，而是按任務階段切換主力。&lt;/p&gt;
&lt;h2 id=&#34;4-真正值得比較的不是輸贏而是哪類任務交給誰更划算&#34;&gt;4. 真正值得比較的，不是輸贏，而是「哪類任務交給誰更划算」
&lt;/h2&gt;&lt;p&gt;把 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt; 放在一起時，如果目標只是爭一個總冠軍，最後往往會得到一個很空的結論。&lt;/p&gt;
&lt;p&gt;因為現實任務不是統一題目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有的是一次性生成&lt;/li&gt;
&lt;li&gt;有的是多輪協作&lt;/li&gt;
&lt;li&gt;有的是中文寫作&lt;/li&gt;
&lt;li&gt;有的是工程改動&lt;/li&gt;
&lt;li&gt;有的是強調速度&lt;/li&gt;
&lt;li&gt;有的是強調穩定性&lt;/li&gt;
&lt;li&gt;有的是強調成本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更接近真實使用的方法，通常是按任務目標分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想要更完整的綜合體驗、更成熟的互動和更穩定的通用輸出，可以優先試 &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想要在中文環境裡高頻試錯、快速迭代，並且更關注投入產出比，&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 值得重點放進工作流裡&lt;/li&gt;
&lt;li&gt;如果任務本身是長鏈路、多輪修正、多人協作，那就不要只看第一輪結果，要看五輪以後誰還更穩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，真正該問的不是「誰絕對更強」，而是：&lt;br&gt;
&lt;strong&gt;前端、寫作、程式這三類任務裡，哪一個模型更像你當前階段最順手的工具。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;5-怎麼做一次更像樣的模型對比&#34;&gt;5. 怎麼做一次更像樣的模型對比
&lt;/h2&gt;&lt;p&gt;如果你自己也準備測 &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; 和 &lt;code&gt;GPT-5.5&lt;/code&gt;，一個更可靠的做法通常不是只跑一輪，而是這樣測：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;給兩邊同一份初始需求&lt;/li&gt;
&lt;li&gt;保持相同限制條件&lt;/li&gt;
&lt;li&gt;連續追問三到五輪&lt;/li&gt;
&lt;li&gt;記錄改動品質、跑偏次數和返工量&lt;/li&gt;
&lt;li&gt;最後再看速度、成本和最終可用度&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣測出來的結果，會比「誰第一輪更驚艷」更接近真實工作。&lt;/p&gt;
&lt;p&gt;尤其在前端、寫作、程式這三類任務裡，很多時候真正決定體驗的不是起跑線，而是&lt;strong&gt;誰能陪你把事情做完&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;6-可以先這樣記&#34;&gt;6. 可以先這樣記
&lt;/h2&gt;&lt;p&gt;如果只想先記一個夠用的版本，可以先這麼理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;：更像綜合型、產品化、預設可用的主流工作台&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;：更像在中文環境和高頻試錯裡更值得納入日常工作流的競爭者&lt;/li&gt;
&lt;li&gt;真正的比較重點：不是首輪炫技，而是多輪修改之後誰更穩、誰更省事&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以這類對比裡，真正重要的從來都不是「誰贏了」，而是：&lt;br&gt;
&lt;strong&gt;你的前端、寫作、程式任務，交給誰之後最容易持續推進、最少返工、最能穩定產出。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ChatGPT、Claude、Gemini 怎麼分工：日常對話、程式開發與特殊能力該怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/04/25/chatgpt-claude-gemini-task-selection/</link>
        <pubDate>Sat, 25 Apr 2026 10:51:19 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/25/chatgpt-claude-gemini-task-selection/</guid>
        <description>&lt;p&gt;現在很多人不再只用一個模型，而是會在 &lt;code&gt;ChatGPT&lt;/code&gt;、&lt;code&gt;Claude&lt;/code&gt; 和 &lt;code&gt;Gemini&lt;/code&gt; 之間來回切換。問題也因此變得很實際：&lt;strong&gt;到底什麼任務該交給誰？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;這件事之所以容易讓人糾結，不是因為三家都不夠強，而是因為它們已經強到開始「分工不同」。如果還是用「誰更聰明」這種非常籠統的標準去選，反而更容易選錯。&lt;/p&gt;
&lt;p&gt;如果先講一個簡化版結論，可以大致這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常對話和綜合型任務，很多人會先想到 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;命令列程式開發、長上下文協作、持續推進型任務，&lt;code&gt;Claude&lt;/code&gt; 往往更順手&lt;/li&gt;
&lt;li&gt;需要依賴 Google 生態、搜尋、多模態入口或某些產品級特殊能力時，&lt;code&gt;Gemini&lt;/code&gt; 更有存在感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面分三塊來講。&lt;/p&gt;
&lt;h2 id=&#34;1-日常對話為什麼很多人還是先打開-chatgpt&#34;&gt;1. 日常對話：為什麼很多人還是先打開 &lt;code&gt;ChatGPT&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;對大多數一般使用情境來說，&lt;code&gt;ChatGPT&lt;/code&gt; 仍然很像「預設入口」。&lt;/p&gt;
&lt;p&gt;這裡說的不是某一個 benchmark，而是整體體驗：&lt;br&gt;
當你臨時想問一個問題、整理一個思路、寫一段文案、做一份初稿、總結一篇資料時，&lt;code&gt;ChatGPT&lt;/code&gt; 通常給人的感覺會比較均衡。&lt;/p&gt;
&lt;p&gt;它的優勢往往體現在幾個地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;回答風格比較穩定&lt;/li&gt;
&lt;li&gt;一般使用者上手門檻低&lt;/li&gt;
&lt;li&gt;多數綜合型任務不需要太多額外調教&lt;/li&gt;
&lt;li&gt;產品完成度高，適合高頻日常使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你的任務是下面這種：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;幫我整理一個主題&lt;/li&gt;
&lt;li&gt;把一段想法寫成結構化內容&lt;/li&gt;
&lt;li&gt;總結一篇長文&lt;/li&gt;
&lt;li&gt;腦力激盪幾個方案&lt;/li&gt;
&lt;li&gt;把表達潤飾得更清楚&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;ChatGPT&lt;/code&gt; 往往就是一個很自然的起點。&lt;/p&gt;
&lt;p&gt;這並不代表它在所有專業任務裡都一定最強，而是它在「廣譜通用」這件事上，通常更像一個預設工作台。&lt;/p&gt;
&lt;h2 id=&#34;2-命令列程式開發與長任務為什麼很多人更偏向-claude&#34;&gt;2. 命令列程式開發與長任務：為什麼很多人更偏向 &lt;code&gt;Claude&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;一旦任務從「聊一聊」切換成「把事情持續做完」，很多人的偏好就會開始轉向 &lt;code&gt;Claude&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;尤其是在這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;命令列程式開發&lt;/li&gt;
&lt;li&gt;大型專案上下文理解&lt;/li&gt;
&lt;li&gt;多檔案協作修改&lt;/li&gt;
&lt;li&gt;長鏈路除錯&lt;/li&gt;
&lt;li&gt;一邊讀程式碼一邊推進任務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類任務的關鍵，往往不是單輪回答有多驚艷，而是模型能不能在更長的任務鏈裡保持穩定。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude&lt;/code&gt; 經常被偏愛的原因，通常不是「它一句話比別人更會說」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對長上下文任務更耐用&lt;/li&gt;
&lt;li&gt;連續讀檔案、讀日誌、讀規則時體驗更穩定&lt;/li&gt;
&lt;li&gt;更適合逐步推進複雜編碼任務&lt;/li&gt;
&lt;li&gt;在命令列與 agent 工作流裡更常被當成主力模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是在做 &lt;code&gt;vibe coding&lt;/code&gt;、命令列修 bug、理解專案結構，或跨多個檔案改功能，&lt;code&gt;Claude&lt;/code&gt; 的優勢會更容易體現出來。&lt;/p&gt;
&lt;p&gt;簡單說，&lt;code&gt;Claude&lt;/code&gt; 比較像那種適合一起「幹活」的模型，而不只是適合問一句答一句。&lt;/p&gt;
&lt;h2 id=&#34;3-gemini-的優勢往往不在跟別人正面拼一切&#34;&gt;3. &lt;code&gt;Gemini&lt;/code&gt; 的優勢往往不在「跟別人正面拼一切」
&lt;/h2&gt;&lt;p&gt;很多人討論 &lt;code&gt;Gemini&lt;/code&gt; 時，容易把問題問成：它到底是不是三家裡最強。&lt;/p&gt;
&lt;p&gt;但從實際使用體驗來看，更有用的問題通常不是這個，而是：&lt;strong&gt;它在哪些情境裡特別值得單獨拿出來用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Gemini&lt;/code&gt; 的價值，往往更容易體現在這些方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google 生態整合&lt;/li&gt;
&lt;li&gt;搜尋與資料取得&lt;/li&gt;
&lt;li&gt;多模態入口&lt;/li&gt;
&lt;li&gt;某些產品側功能聯動&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的工作流本來就和 Google 的工具鏈很近，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜尋&lt;/li&gt;
&lt;li&gt;文件&lt;/li&gt;
&lt;li&gt;郵件&lt;/li&gt;
&lt;li&gt;瀏覽器側使用&lt;/li&gt;
&lt;li&gt;手機端入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 &lt;code&gt;Gemini&lt;/code&gt; 的實際便利性可能會高於單純的模型分數對比。&lt;/p&gt;
&lt;p&gt;也就是說，&lt;code&gt;Gemini&lt;/code&gt; 的可用性很多時候來自「它在哪裡更順手接入你的工作流」，而不只是「它單輪回答是不是贏了誰」。&lt;/p&gt;
&lt;h2 id=&#34;4-真正有用的選法不是問誰最強而是問任務類型&#34;&gt;4. 真正有用的選法，不是問誰最強，而是問任務類型
&lt;/h2&gt;&lt;p&gt;把三家模型放在一起比較時，最容易踩的坑就是試圖找出一個「唯一最強」。&lt;/p&gt;
&lt;p&gt;但現實裡的任務差異太大了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有的是一次性問答&lt;/li&gt;
&lt;li&gt;有的是長對話陪跑&lt;/li&gt;
&lt;li&gt;有的是程式碼工程&lt;/li&gt;
&lt;li&gt;有的是資訊檢索&lt;/li&gt;
&lt;li&gt;有的是多模態處理&lt;/li&gt;
&lt;li&gt;有的是工具鏈協作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更有效的選法，通常是按任務類型來分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要一個綜合型、日常高頻、打開就能用的助手：先看 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要長上下文、命令列、程式開發協作、持續推進複雜任務：優先試 &lt;code&gt;Claude&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要借力 Google 生態、搜尋、多模態入口或某些產品聯動能力：重點看 &lt;code&gt;Gemini&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣分工，比硬要爭一個總冠軍更接近真實使用。&lt;/p&gt;
&lt;h2 id=&#34;5-為什麼很多重度使用者會同時訂三家&#34;&gt;5. 為什麼很多重度使用者會同時訂三家
&lt;/h2&gt;&lt;p&gt;從輕度使用者視角來看，同時訂三家模型服務很容易顯得「重複」。&lt;br&gt;
但從重度使用者視角來看，這更像是在為不同任務配不同工具。&lt;/p&gt;
&lt;p&gt;原因很簡單：&lt;br&gt;
如果三家的長處已經開始明顯分化，那麼同時使用它們，本質上就不是重複付費，而是在降低任務切換成本與試錯成本。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常整理和綜合問答，用 &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;程式開發主任務，用 &lt;code&gt;Claude&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;某些檢索、多模態或 Google 相關鏈路，用 &lt;code&gt;Gemini&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種組合方式的邏輯，和設計師同時裝多個軟體、開發者同時使用多個 IDE，並沒有本質差別。&lt;/p&gt;
&lt;h2 id=&#34;6-什麼時候不要來回切太多模型&#34;&gt;6. 什麼時候不要來回切太多模型
&lt;/h2&gt;&lt;p&gt;當然，模型多也不一定總是更好。&lt;/p&gt;
&lt;p&gt;如果你本身還在建立穩定工作流，過早在三個模型之間頻繁橫跳，反而可能讓自己更亂。常見問題包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一個任務來回重複講三遍&lt;/li&gt;
&lt;li&gt;不同模型給出不同建議，自己更難判斷&lt;/li&gt;
&lt;li&gt;上下文斷裂，協作成本反而更高&lt;/li&gt;
&lt;li&gt;還沒形成自己的使用邊界，就先被工具選擇拖住&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更穩的方式通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先給每個模型一個主場景&lt;/li&gt;
&lt;li&gt;在主場景裡連續用一段時間&lt;/li&gt;
&lt;li&gt;再逐步形成自己的分工習慣&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣你會更容易得到真正可複用的經驗，而不是永遠停留在「今天換這個試試」的階段。&lt;/p&gt;
&lt;h2 id=&#34;7-可以先這樣記住&#34;&gt;7. 可以先這樣記住
&lt;/h2&gt;&lt;p&gt;如果只想先記一個夠用的版本，可以直接記這張口語化分工表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ChatGPT&lt;/code&gt;：更像通用型預設助手&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude&lt;/code&gt;：更像長任務和程式開發協作主力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini&lt;/code&gt;：更像在搜尋、多模態和 Google 生態裡更有優勢的工具&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是絕對規則，也不是說三者彼此不能替代，而是一個更接近真實使用體驗的起點。&lt;/p&gt;
&lt;p&gt;真正重要的不是選出「宇宙最強模型」，而是盡快知道：&lt;br&gt;
&lt;strong&gt;你手上的這類任務，用哪個模型最省時間、最省心、最容易做出結果。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型 API 為什麼按 Token 收費：一文講清輸入、輸出和上下文成本</title>
        <link>https://knightli.com/zh-tw/2026/04/25/llm-token-pricing-principles/</link>
        <pubDate>Sat, 25 Apr 2026 08:44:32 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/25/llm-token-pricing-principles/</guid>
        <description>&lt;p&gt;在大模型 API 的計費方式裡，最容易讓人困惑的一點，就是為什麼幾乎所有平台最後都會落到 &lt;code&gt;token&lt;/code&gt; 這個單位上：&lt;strong&gt;大模型為什麼按 token 收費，而且不同 token 還會有不同價格。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人剛接觸模型 API 時，最困惑的不是模型能力，而是帳單。明明只問了幾個問題，為什麼費用會漲得這麼快？為什麼輸入便宜、輸出更貴？為什麼上下文一長，成本就開始明顯失控？&lt;/p&gt;
&lt;p&gt;如果把這件事講簡單一點，可以先記住一句話：&lt;strong&gt;模型收費，買的不是「一次回答」，而是整段推理過程中消耗的計算與帶寬資源。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-什麼是-token&#34;&gt;1. 什麼是 token
&lt;/h2&gt;&lt;p&gt;在大模型計費裡，&lt;code&gt;token&lt;/code&gt; 不是「字數」也不是「單詞數」，而是模型處理文字時使用的切分單位。&lt;/p&gt;
&lt;p&gt;它可能是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一個漢字&lt;/li&gt;
&lt;li&gt;一個英文單詞的一部分&lt;/li&gt;
&lt;li&gt;一個標點符號&lt;/li&gt;
&lt;li&gt;一小段常見詞組&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 API 平台通常不會按「每句話」或「每次請求」收費，而是按模型實際讀入和生成的 token 數量收費。&lt;br&gt;
這比按請求次數計費更合理，因為同樣是一次請求，可能只輸入 20 個字，也可能塞進 20 萬 token 的上下文，兩者消耗完全不是一個量級。&lt;/p&gt;
&lt;h2 id=&#34;2-為什麼輸入和輸出要分開定價&#34;&gt;2. 為什麼輸入和輸出要分開定價
&lt;/h2&gt;&lt;p&gt;現在大多數模型 API，都會把價格拆成兩部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸入 token 價格&lt;/li&gt;
&lt;li&gt;輸出 token 價格&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而且常見情況是：&lt;strong&gt;輸出 token 比輸入 token 更貴。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原因並不難理解。&lt;/p&gt;
&lt;p&gt;模型處理輸入時，本質上是在「讀」和「編碼」已有內容；但生成輸出時，它需要一步一步預測下一個 token，再繼續預測下一個 token。這個過程不只是讀取，而是持續進行推理和採樣，所以通常更耗算力。&lt;/p&gt;
&lt;p&gt;你可以把它粗略理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸入：像把材料遞給模型&lt;/li&gt;
&lt;li&gt;輸出：像讓模型現場寫答案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「現場寫」的計算成本，通常比「把材料讀一遍」更高，所以輸出價格更貴是很常見的設計。&lt;/p&gt;
&lt;h2 id=&#34;3-為什麼上下文越長費用越容易失控&#34;&gt;3. 為什麼上下文越長，費用越容易失控
&lt;/h2&gt;&lt;p&gt;很多人以為自己只是在「多貼一點背景資料」，但從模型帳單的角度看，這件事的影響往往比想像中大。&lt;/p&gt;
&lt;p&gt;原因在於：&lt;strong&gt;模型每次調用時，通常都要重新處理目前請求裡帶進去的整段上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也就是說，如果你目前請求裡包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系統提示詞&lt;/li&gt;
&lt;li&gt;歷史對話&lt;/li&gt;
&lt;li&gt;工具返回結果&lt;/li&gt;
&lt;li&gt;長文件片段&lt;/li&gt;
&lt;li&gt;程式碼檔案內容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些內容都會一起進入輸入 token 計費。&lt;/p&gt;
&lt;p&gt;所以真正讓帳單變大的，往往不是最後那一句提問，而是它前面拖著的一大串上下文。&lt;br&gt;
當對話輪數增加、工具調用變多、歷史訊息不斷回灌時，token 成本就會一輪一輪被放大。&lt;/p&gt;
&lt;h2 id=&#34;4-工具調用為什麼特別容易漲-token&#34;&gt;4. 工具調用為什麼特別容易漲 token
&lt;/h2&gt;&lt;p&gt;在 Agent、程式碼助手、工作流自動化這類場景裡，token 消耗通常比普通聊天高得多。&lt;/p&gt;
&lt;p&gt;問題不只是「模型回答了一段話」，而是整個流程裡會不斷出現這些內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀檔案&lt;/li&gt;
&lt;li&gt;看日誌&lt;/li&gt;
&lt;li&gt;調 API&lt;/li&gt;
&lt;li&gt;返回 JSON&lt;/li&gt;
&lt;li&gt;把工具結果再回填給模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一次工具調用的結果，只要被重新塞回下一輪上下文，就會繼續變成新的輸入 token。&lt;/p&gt;
&lt;p&gt;這就是為什麼很多開發者最後會發現：&lt;br&gt;
&lt;strong&gt;不是模型本身單價特別離譜，而是工作流把 token 帳單一層層疊上去了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;例如一個編碼 Agent 連續做下面這些事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;讀取專案結構&lt;/li&gt;
&lt;li&gt;打開幾個原始碼檔案&lt;/li&gt;
&lt;li&gt;跑一次測試&lt;/li&gt;
&lt;li&gt;把報錯日誌餵回模型&lt;/li&gt;
&lt;li&gt;再讀更多相關檔案&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;每一步都可能讓後續請求背著更長的上下文繼續跑。這樣即使單價不變，總帳單也會很快增長。&lt;/p&gt;
&lt;h2 id=&#34;5-為什麼同樣是模型價格會差很多&#34;&gt;5. 為什麼同樣是模型，價格會差很多
&lt;/h2&gt;&lt;p&gt;不同模型的 token 價格差異，背後通常不只是「廠商想賣貴一點」，而是和幾個因素直接相關：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型規模&lt;/li&gt;
&lt;li&gt;推理效率&lt;/li&gt;
&lt;li&gt;上下文長度&lt;/li&gt;
&lt;li&gt;部署成本&lt;/li&gt;
&lt;li&gt;目標市場&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型越大、活躍參數越多、推理鏈路越複雜，單次生成一個 token 的成本通常就越高。&lt;br&gt;
如果模型還支援超長上下文、複雜推理、工具調用優化，那它的基礎設施壓力也會進一步增加。&lt;/p&gt;
&lt;p&gt;所以定價本質上是在覆蓋幾類成本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU / 加速卡資源&lt;/li&gt;
&lt;li&gt;顯存占用&lt;/li&gt;
&lt;li&gt;推理延遲&lt;/li&gt;
&lt;li&gt;網路與服務穩定性&lt;/li&gt;
&lt;li&gt;峰值並發能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;便宜模型不一定差，貴模型也不一定適合所有場景。很多時候價格差，反映的是「這類能力大概值多少基礎設施成本」。&lt;/p&gt;
&lt;h2 id=&#34;6-為什麼快取輸入會更便宜&#34;&gt;6. 為什麼快取輸入會更便宜
&lt;/h2&gt;&lt;p&gt;不少模型平台現在會提供：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cached input&lt;/li&gt;
&lt;li&gt;prompt caching&lt;/li&gt;
&lt;li&gt;prefix caching&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類能力的共同思路是：如果一大段輸入已經算過，就不要每次都從頭按原價重算。&lt;/p&gt;
&lt;p&gt;比如一段固定 system prompt、固定工具說明、固定長文件前綴，如果每輪都完全重複發送，平台就有機會把其中一部分計算快取下來。這樣同樣是輸入 token，命中快取的部分就可以按更低價格計費。&lt;/p&gt;
&lt;p&gt;這也解釋了為什麼很多 API 價格頁會出現三檔甚至更多價格：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;普通輸入&lt;/li&gt;
&lt;li&gt;快取輸入&lt;/li&gt;
&lt;li&gt;輸出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它們反映的不是文字內容不同，而是底層計算是否可以重用。&lt;/p&gt;
&lt;h2 id=&#34;7-便宜-token為什麼不等於總成本更低&#34;&gt;7. 「便宜 token」為什麼不等於「總成本更低」
&lt;/h2&gt;&lt;p&gt;很多人看到某個模型「每百萬 token 超便宜」，第一反應是總成本一定更低。實際上不一定。&lt;/p&gt;
&lt;p&gt;因為總帳單大致等於：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;token 單價 × 實際消耗量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而實際消耗量又會被很多因素放大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;提示詞寫得太長&lt;/li&gt;
&lt;li&gt;歷史訊息不清理&lt;/li&gt;
&lt;li&gt;工具結果回填過多&lt;/li&gt;
&lt;li&gt;輸出太囉唆&lt;/li&gt;
&lt;li&gt;一個任務反覆重試&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正決定帳單的，通常不是單價一個變數，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型單價&lt;/li&gt;
&lt;li&gt;每輪輸入長度&lt;/li&gt;
&lt;li&gt;每輪輸出長度&lt;/li&gt;
&lt;li&gt;調用次數&lt;/li&gt;
&lt;li&gt;工作流設計&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是為什麼「低單價模型」在某些 Agent 任務裡，最後總費用仍然可能不低。因為它可能需要更多輪互動、更多補充上下文、更多失敗重試。&lt;/p&gt;
&lt;h2 id=&#34;8-開發者該怎麼估算-token-成本&#34;&gt;8. 開發者該怎麼估算 token 成本
&lt;/h2&gt;&lt;p&gt;如果你想在專案裡更穩地控制預算，可以先用一個很樸素的估算方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;統計平均每次請求的輸入 token&lt;/li&gt;
&lt;li&gt;統計平均每次請求的輸出 token&lt;/li&gt;
&lt;li&gt;估算一個任務會調用多少輪&lt;/li&gt;
&lt;li&gt;再乘上對應模型單價&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;舉個思路上的例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每輪輸入 &lt;code&gt;8k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;每輪輸出 &lt;code&gt;1k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;一個任務跑 &lt;code&gt;10&lt;/code&gt; 輪&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那它真正消耗的就不是「一次問答」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸入約 &lt;code&gt;80k tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;輸出約 &lt;code&gt;10k tokens&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果中途還有日誌、工具結果、檔案內容不斷追加，總量還會繼續上升。&lt;/p&gt;
&lt;p&gt;所以做預算時，最好不要只看單輪，而要看&lt;strong&gt;一個完整任務閉環&lt;/strong&gt;到底會吃掉多少 token。&lt;/p&gt;
&lt;h2 id=&#34;9-怎麼實際控制帳單&#34;&gt;9. 怎麼實際控制帳單
&lt;/h2&gt;&lt;p&gt;如果你已經在用 API 或 Agent，下面這些做法通常最有效：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;縮短 system prompt，避免重複廢話&lt;/li&gt;
&lt;li&gt;定期裁剪歷史訊息&lt;/li&gt;
&lt;li&gt;工具返回結果只保留必要欄位&lt;/li&gt;
&lt;li&gt;長文件先檢索，再餵局部片段&lt;/li&gt;
&lt;li&gt;控制輸出長度，避免模型無上限展開&lt;/li&gt;
&lt;li&gt;高價值任務用貴模型，低價值任務用便宜模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多時候，省錢最有效的方式不是一味換更便宜的模型，而是先把工作流裡沒有意義的 token 消耗砍掉。&lt;/p&gt;
&lt;h2 id=&#34;10-這件事真正該怎麼理解&#34;&gt;10. 這件事真正該怎麼理解
&lt;/h2&gt;&lt;p&gt;大模型 token 定價，說到底是在替「模型讀了多少、想了多少、寫了多少」計費。&lt;/p&gt;
&lt;p&gt;它不是傳統軟體那種按帳號、按次數、按包月就能完全描述的資源模型，因為模型調用本身就是一個動態計算過程。你塞進去的上下文、拉起的工具、要求的輸出長度，都會直接影響成本。&lt;/p&gt;
&lt;p&gt;所以理解 token 定價，最重要的不是背價格表，而是先建立一個直覺：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長上下文會漲輸入成本&lt;/li&gt;
&lt;li&gt;長輸出會漲生成成本&lt;/li&gt;
&lt;li&gt;工具鏈會放大總 token&lt;/li&gt;
&lt;li&gt;快取和工作流設計會明顯影響帳單&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要把這幾個點想清楚，大多數模型 API 的價格結構其實都不難理解。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-V4 Preview 發布：1M 上下文、雙模型與 API 切換提醒</title>
        <link>https://knightli.com/zh-tw/2026/04/24/deepseek-v4-preview-release/</link>
        <pubDate>Fri, 24 Apr 2026 22:39:46 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/24/deepseek-v4-preview-release/</guid>
        <description>&lt;p&gt;DeepSeek 在 &lt;code&gt;2026-04-24&lt;/code&gt; 發布了 &lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek V4 Preview Release&lt;/a&gt;。從官方新聞頁來看，這次更新的重點非常集中：&lt;code&gt;1M context&lt;/code&gt;、&lt;code&gt;V4-Pro&lt;/code&gt; 與 &lt;code&gt;V4-Flash&lt;/code&gt; 雙模型、針對 Agent 場景的專門優化，以及 API 側的模型切換。&lt;/p&gt;
&lt;p&gt;如果只看一句話，這次發布的核心訊號是：DeepSeek 不只是繼續做更強的模型，而是在把超長上下文和 Agent 能力一起往「可以直接上線使用」的方向推進。&lt;/p&gt;
&lt;h2 id=&#34;1-這次一共發布了什麼&#34;&gt;1. 這次一共發布了什麼
&lt;/h2&gt;&lt;p&gt;官方頁面裡，&lt;code&gt;DeepSeek-V4 Preview&lt;/code&gt; 主要包含兩條產品線：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對應的官方描述也很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt;：&lt;code&gt;1.6T total / 49B active params&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek-V4-Flash&lt;/code&gt;：&lt;code&gt;284B total / 13B active params&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從命名就能看出來，這次不是單模型升級，而是把高性能版本和更高性價比版本同時推出。&lt;/p&gt;
&lt;p&gt;其中 &lt;code&gt;V4-Pro&lt;/code&gt; 更強調上限，官方表示它的表現已經可以和全球頂級閉源模型競爭；&lt;code&gt;V4-Flash&lt;/code&gt; 則更強調速度、效率和成本，更適合對回應速度和 API 成本更敏感的場景。&lt;/p&gt;
&lt;h2 id=&#34;2-1m-context-是這次最突出的賣點&#34;&gt;2. &lt;code&gt;1M context&lt;/code&gt; 是這次最突出的賣點
&lt;/h2&gt;&lt;p&gt;官方頁面最醒目的表述之一，就是：&lt;strong&gt;「Welcome to the era of cost-effective 1M context length.」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DeepSeek 這次不只是說「支援長上下文」，而是明確把 &lt;code&gt;1M context&lt;/code&gt; 當成這代模型的預設能力來講。頁面裡也寫得很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt; 已經成為官方 DeepSeek 服務的預設標準&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4-Pro&lt;/code&gt; 和 &lt;code&gt;V4-Flash&lt;/code&gt; 都支援 &lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這件事的意義不只是「能塞更多 token」。它更直接影響下面這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長程式碼倉庫理解&lt;/li&gt;
&lt;li&gt;長文件問答與資料整理&lt;/li&gt;
&lt;li&gt;多輪 Agent 工作流&lt;/li&gt;
&lt;li&gt;橫跨多檔案、多工具、多階段的複雜任務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果上下文窗口夠大，模型就比較不容易因為中途丟失上下文而反覆回讀材料，這對 Agent 編碼和複雜知識工作會特別重要。&lt;/p&gt;
&lt;h2 id=&#34;3-v4-pro-主要在強調什麼&#34;&gt;3. &lt;code&gt;V4-Pro&lt;/code&gt; 主要在強調什麼
&lt;/h2&gt;&lt;p&gt;從官方頁的措辭來看，&lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt; 重點強調三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agentic Coding 能力&lt;/li&gt;
&lt;li&gt;世界知識&lt;/li&gt;
&lt;li&gt;推理能力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;頁面提到，&lt;code&gt;V4-Pro&lt;/code&gt; 在 Agentic Coding benchmark 上達到開源 SOTA；在世界知識方面領先目前的開源模型，只落後於 &lt;code&gt;Gemini-3.1-Pro&lt;/code&gt;；在數學、&lt;code&gt;STEM&lt;/code&gt; 和編碼能力上超過目前的開源模型，並且可以和頂級閉源模型競爭。&lt;/p&gt;
&lt;p&gt;換句話說，&lt;code&gt;V4-Pro&lt;/code&gt; 的定位並不是單純回答問題，而是更偏向高難度推理、複雜編碼和長任務執行。&lt;/p&gt;
&lt;h2 id=&#34;4-v4-flash-並不是簡單的縮水版&#34;&gt;4. &lt;code&gt;V4-Flash&lt;/code&gt; 並不是簡單的縮水版
&lt;/h2&gt;&lt;p&gt;另一個值得注意的點是，官方沒有把 &lt;code&gt;V4-Flash&lt;/code&gt; 包裝成「低配模型」，而是強調它在很多實際任務裡已經足夠強。&lt;/p&gt;
&lt;p&gt;按照新聞頁給出的說法，&lt;code&gt;V4-Flash&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推理能力已經很接近 &lt;code&gt;V4-Pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在簡單 Agent 任務上與 &lt;code&gt;V4-Pro&lt;/code&gt; 表現相當&lt;/li&gt;
&lt;li&gt;參數規模更小、回應更快、API 定價更便宜&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著 DeepSeek 這次給出的並不是「一個旗艦、一個入門」這種非常割裂的組合，而更像是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro&lt;/code&gt;：追求更高性能和更強上限&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4-Flash&lt;/code&gt;：追求更低延遲和更好的成本效率&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對開發者來說，這樣的組合會更實用，因為很多線上任務真正需要的不是「理論最強」，而是「夠強、夠快、夠省」。&lt;/p&gt;
&lt;h2 id=&#34;5-官方特別強調了-agent-優化&#34;&gt;5. 官方特別強調了 Agent 優化
&lt;/h2&gt;&lt;p&gt;這次發布頁裡還有一個很明確的方向：DeepSeek 在主動把 &lt;code&gt;V4&lt;/code&gt; 往 Agent 場景上推。&lt;/p&gt;
&lt;p&gt;官方頁面提到，&lt;code&gt;DeepSeek-V4&lt;/code&gt; 已經和一些主流 AI Agent 深度整合，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Claude Code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenClaw&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenCode&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同時 DeepSeek 也提到，&lt;code&gt;V4&lt;/code&gt; 已經在內部 agentic coding 場景中使用。&lt;/p&gt;
&lt;p&gt;這說明它想覆蓋的，不再只是聊天或普通補全，而是更長鏈路的工作方式：讀程式碼、理解結構、調用工具、生成結果，再把整條流程串起來。&lt;/p&gt;
&lt;p&gt;如果你最近剛好在關注 coding agent，這個訊號值得留意。因為它意味著模型廠商已經不再只拼 benchmark，而是在拼「能不能真正接進工作流」。&lt;/p&gt;
&lt;h2 id=&#34;6-底層結構創新是在為長上下文服務&#34;&gt;6. 底層結構創新是在為長上下文服務
&lt;/h2&gt;&lt;p&gt;在技術描述上，官方頁把這次的結構創新總結為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token-wise compression&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DSA (DeepSeek Sparse Attention)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;頁面給出的方向非常明確：目標是把長上下文做得更便宜、更高效，盡量降低計算和顯存成本。&lt;/p&gt;
&lt;p&gt;雖然新聞頁沒有展開完整技術細節，但這至少說明 DeepSeek 這次不是單純靠「更大算力硬堆更長窗口」，而是在結構層面針對長上下文效率做了專門優化。&lt;/p&gt;
&lt;p&gt;對實際使用者來說，這通常比單純「窗口數字變大」更重要，因為真正決定可用性的，不只是能不能開到 &lt;code&gt;1M&lt;/code&gt;，還包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;速度是否還能接受&lt;/li&gt;
&lt;li&gt;成本是否還能接受&lt;/li&gt;
&lt;li&gt;長上下文任務是否真的穩定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-api-已經可用但要注意模型切換&#34;&gt;7. API 已經可用，但要注意模型切換
&lt;/h2&gt;&lt;p&gt;官方頁面明確寫到，這次 API 當天就已經可用。&lt;/p&gt;
&lt;p&gt;接入方式也比較簡單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;base_url&lt;/code&gt; 保持不變&lt;/li&gt;
&lt;li&gt;把模型名切換為 &lt;code&gt;deepseek-v4-pro&lt;/code&gt; 或 &lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同時頁面說明，這兩個模型都支援：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Thinking / Non-Thinking&lt;/code&gt; 雙模式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OpenAI ChatCompletions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Anthropic APIs&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著如果你原本已經接了 DeepSeek API，升級門檻並不高，主要是模型名切換和能力驗證。&lt;/p&gt;
&lt;h2 id=&#34;8-舊模型的退役時間也寫得很明確&#34;&gt;8. 舊模型的退役時間也寫得很明確
&lt;/h2&gt;&lt;p&gt;對開發者來說，這次新聞頁裡最不能忽略的資訊之一，其實是舊模型退役提醒。&lt;/p&gt;
&lt;p&gt;官方寫明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deepseek-chat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deepseek-reasoner&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;會在 &lt;strong&gt;2026 年 7 月 24 日 15:59（UTC）&lt;/strong&gt; 後完全退役並不可訪問。&lt;/p&gt;
&lt;p&gt;頁面還說明，當前這兩個模型實際上已經路由到 &lt;code&gt;deepseek-v4-flash&lt;/code&gt; 的非思考 / 思考模式。&lt;/p&gt;
&lt;p&gt;這意味著如果你的專案裡還直接寫著 &lt;code&gt;deepseek-chat&lt;/code&gt; 或 &lt;code&gt;deepseek-reasoner&lt;/code&gt;，現在就應該開始安排遷移，而不要拖到正式下線前再處理。&lt;/p&gt;
&lt;h2 id=&#34;9-這次發布值得怎麼理解&#34;&gt;9. 這次發布值得怎麼理解
&lt;/h2&gt;&lt;p&gt;如果把這次更新濃縮成幾個重點，大概可以這樣看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek 開始把 &lt;code&gt;1M context&lt;/code&gt; 從「高配能力」變成預設標準&lt;/li&gt;
&lt;li&gt;雙模型路線更清晰：一個衝性能上限，一個衝速度和性價比&lt;/li&gt;
&lt;li&gt;Agent 能力已經被放到很核心的位置&lt;/li&gt;
&lt;li&gt;API 升級路徑相對直接，但舊模型退役時間需要盡快關注&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對一般使用者來說，最直觀的變化可能是：長文件、長程式碼、長流程任務會更容易放進一次上下文裡。&lt;br&gt;
對開發者來說，更重要的是：如果你已經在做 Agent、程式碼助手、資料整理、複雜工作流，這一代模型顯然就是朝這些場景設計的。&lt;/p&gt;
&lt;p&gt;DeepSeek 這次發布，不只是一次常規模型更新，更像是在明確它下一階段的產品方向：&lt;strong&gt;超長上下文 + Agent 優化 + 更實際的 API 可用性。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;DeepSeek 官方新聞頁：&lt;a class=&#34;link&#34; href=&#34;https://api-docs.deepseek.com/news/news260424&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://api-docs.deepseek.com/news/news260424&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tech Report：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro/blob/main/DeepSeek_V4.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro/blob/main/DeepSeek_V4.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open Weights：&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/deepseek-ai/deepseek-v4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/collections/deepseek-ai/deepseek-v4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>解決 Ollama 使用 CPU 而不使用 GPU 運算的問題</title>
        <link>https://knightli.com/zh-tw/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</link>
        <pubDate>Fri, 24 Apr 2026 18:30:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</guid>
        <description>&lt;p&gt;本地跑大模型時，最讓人困惑的一類問題就是：機器明明有顯卡，&lt;code&gt;Ollama&lt;/code&gt; 卻還是主要吃 &lt;code&gt;CPU&lt;/code&gt;，速度也慢得離譜。&lt;/p&gt;
&lt;p&gt;先說結論，這類問題通常不是單一原因。最常見的幾類分別是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; 根本沒有識別到可用 GPU&lt;/li&gt;
&lt;li&gt;驅動、&lt;code&gt;ROCm&lt;/code&gt; 或 &lt;code&gt;CUDA&lt;/code&gt; 環境沒裝對&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; 服務啟動時沒有繼承正確的環境變數&lt;/li&gt;
&lt;li&gt;模型太大，實際已經退回到 &lt;code&gt;CPU&lt;/code&gt; 或 &lt;code&gt;CPU/GPU&lt;/code&gt; 混合載入&lt;/li&gt;
&lt;li&gt;AMD 平台存在額外相容性問題，例如 &lt;code&gt;ROCm&lt;/code&gt; 版本、&lt;code&gt;gfx&lt;/code&gt; 代號或裝置可見性設定不對&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面按最省時間的順序排查。&lt;/p&gt;
&lt;h2 id=&#34;1-先確認是不是真的沒用到-gpu&#34;&gt;1. 先確認是不是真的沒用到 GPU
&lt;/h2&gt;&lt;p&gt;最直接的方法是看：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重點看 &lt;code&gt;PROCESSOR&lt;/code&gt; 這一欄。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;：表示模型完整跑在顯卡上&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;：表示完全沒用上顯卡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt; 這類結果：表示模型部分進了顯存，部分落到系統記憶體&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你看到的是 &lt;code&gt;100% CPU&lt;/code&gt;，後面就該重點查環境和服務設定。&lt;br&gt;
如果看到的是混合載入，那不一定代表顯卡沒生效，更可能只是顯存不夠。&lt;/p&gt;
&lt;h2 id=&#34;2-先排除最常見的誤區模型塞不進顯存&#34;&gt;2. 先排除最常見的誤區：模型塞不進顯存
&lt;/h2&gt;&lt;p&gt;很多人以為只要裝了 GPU，&lt;code&gt;Ollama&lt;/code&gt; 就一定會全顯卡推理。其實不是。&lt;/p&gt;
&lt;p&gt;如果模型太大、上下文太長，或者機器上已經有其他模型佔著顯存，&lt;code&gt;Ollama&lt;/code&gt; 很可能會退回到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部分 GPU + 部分 CPU&lt;/li&gt;
&lt;li&gt;直接 &lt;code&gt;100% CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這時候可以先做兩個最簡單的驗證：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;換一個更小的模型測試&lt;br&gt;
例如先用 &lt;code&gt;4B&lt;/code&gt;、&lt;code&gt;7B&lt;/code&gt; 這類小模型，而不是一上來就跑更大的參數量。&lt;/li&gt;
&lt;li&gt;卸載其他已載入的模型後再試&lt;br&gt;
先看 &lt;code&gt;ollama ps&lt;/code&gt;，確認沒有別的模型佔著顯存。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果小模型能上 GPU、大模型不行，問題通常就不在驅動，而在顯存容量。&lt;/p&gt;
&lt;h2 id=&#34;3-檢查顯卡驅動和底層環境是否可用&#34;&gt;3. 檢查顯卡驅動和底層環境是否可用
&lt;/h2&gt;&lt;p&gt;如果連小模型都只能跑 &lt;code&gt;CPU&lt;/code&gt;，下一步就該看底層環境。&lt;/p&gt;
&lt;h3 id=&#34;nvidia-方向&#34;&gt;NVIDIA 方向
&lt;/h3&gt;&lt;p&gt;先確認驅動正常、系統能看到顯卡。常見檢查方式包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果這裡都報錯，&lt;code&gt;Ollama&lt;/code&gt; 幾乎不可能正常使用 GPU。&lt;/p&gt;
&lt;h3 id=&#34;amd--rocm-方向&#34;&gt;AMD / ROCm 方向
&lt;/h3&gt;&lt;p&gt;如果你是 &lt;code&gt;AMD GPU&lt;/code&gt;，尤其是 &lt;code&gt;ROCm&lt;/code&gt; 環境，重點先看：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocminfo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rocm-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果這些工具都不能正常列出裝置，說明問題還在 &lt;code&gt;Ollama&lt;/code&gt; 之前，先不要繼續折騰應用層。&lt;/p&gt;
&lt;p&gt;對 AMD 來說，最常見的問題不是「有沒有裝驅動」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 版本和系統版本不匹配&lt;/li&gt;
&lt;li&gt;當前 GPU 架構支援不完整&lt;/li&gt;
&lt;li&gt;裝置雖然存在，但執行環境沒有正確暴露給 &lt;code&gt;Ollama&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-重啟-ollama-服務不要只重開終端&#34;&gt;4. 重啟 Ollama 服務，不要只重開終端
&lt;/h2&gt;&lt;p&gt;這是非常高頻的坑。&lt;/p&gt;
&lt;p&gt;很多人裝完驅動、改完環境變數、補完 &lt;code&gt;ROCm&lt;/code&gt; 之後，只是重新開一個終端，然後直接繼續 &lt;code&gt;ollama run&lt;/code&gt;。但如果 &lt;code&gt;Ollama&lt;/code&gt; 是以背景服務方式執行，它很可能還在用舊環境。&lt;/p&gt;
&lt;p&gt;所以更穩的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完整重啟 &lt;code&gt;Ollama&lt;/code&gt; 服務&lt;/li&gt;
&lt;li&gt;必要時直接重啟系統&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是在 Linux 上以服務方式執行，通常要確認服務進程已經重新拉起，而不是沿用之前的舊進程。&lt;/p&gt;
&lt;h2 id=&#34;5-檢查服務環境變數有沒有真的傳進去&#34;&gt;5. 檢查服務環境變數有沒有真的傳進去
&lt;/h2&gt;&lt;p&gt;這一步在 &lt;code&gt;AMD ROCm&lt;/code&gt; 環境尤其重要。&lt;/p&gt;
&lt;p&gt;有些機器在終端裡手動執行命令沒問題，但 &lt;code&gt;Ollama&lt;/code&gt; 服務還是只跑 &lt;code&gt;CPU&lt;/code&gt;，原因就是服務進程沒有拿到你在 shell 裡設定的變數。&lt;/p&gt;
&lt;p&gt;常見需要關注的變數包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ROCR_VISIBLE_DEVICES
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HSA_OVERRIDE_GFX_VERSION
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 用來限制或指定 &lt;code&gt;ROCm&lt;/code&gt; 能看到哪些 GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; 常見於某些 AMD 平台的相容性處理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是在當前終端裡臨時 &lt;code&gt;export&lt;/code&gt; 了變數，但 &lt;code&gt;Ollama&lt;/code&gt; 是 systemd、桌面背景服務或其他守護進程啟動的，這些變數未必會生效。&lt;/p&gt;
&lt;p&gt;也就是說，終端裡「看起來已經設定好了」，不代表 &lt;code&gt;Ollama&lt;/code&gt; 真的拿到了。&lt;/p&gt;
&lt;h2 id=&#34;6-amd-平台重點看-rocm-相容性&#34;&gt;6. AMD 平台重點看 ROCm 相容性
&lt;/h2&gt;&lt;p&gt;從公開頁面資訊來看，這個問題對應的影片主題本身就落在 &lt;code&gt;AMD Max+ 395&lt;/code&gt;、&lt;code&gt;strix halo&lt;/code&gt;、&lt;code&gt;AMD ROCm&lt;/code&gt; 這條線上。&lt;br&gt;
這類環境裡，&lt;code&gt;Ollama&lt;/code&gt; 不走 GPU，往往比 NVIDIA 平台更依賴版本匹配。&lt;/p&gt;
&lt;p&gt;可以優先排查下面幾項：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 版本是否適合當前系統和顯卡&lt;/li&gt;
&lt;li&gt;當前 GPU 是否屬於 &lt;code&gt;ROCm&lt;/code&gt; 支援較好的架構範圍&lt;/li&gt;
&lt;li&gt;是否需要補 &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;是否是舊版 &lt;code&gt;Ollama&lt;/code&gt; 或舊版底層推理庫導致相容性問題&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你已經確認 &lt;code&gt;rocminfo&lt;/code&gt; 正常、GPU 也能被系統識別，但 &lt;code&gt;Ollama&lt;/code&gt; 仍然只跑 &lt;code&gt;CPU&lt;/code&gt;，那大概率就要回到版本組合上重新檢查，而不是繼續盲目調模型參數。&lt;/p&gt;
&lt;h2 id=&#34;7-dockerwsl-或遠端環境要額外檢查裝置映射&#34;&gt;7. Docker、WSL 或遠端環境要額外檢查裝置映射
&lt;/h2&gt;&lt;p&gt;如果你不是直接在裸機跑，而是在下面這些環境裡執行：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;WSL&lt;/li&gt;
&lt;li&gt;遠端容器&lt;/li&gt;
&lt;li&gt;虛擬化環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那還要多看一層：GPU 裝置有沒有真的暴露進去。&lt;/p&gt;
&lt;p&gt;典型現象是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主機能看到 GPU&lt;/li&gt;
&lt;li&gt;容器裡的 &lt;code&gt;Ollama&lt;/code&gt; 卻只能跑 &lt;code&gt;CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這時要先確認不是 &lt;code&gt;Ollama&lt;/code&gt; 本身的問題，而是容器或子系統根本沒拿到 GPU 存取權限。&lt;/p&gt;
&lt;h2 id=&#34;8-最後再看日誌而不是一開始就亂猜&#34;&gt;8. 最後再看日誌，而不是一開始就亂猜
&lt;/h2&gt;&lt;p&gt;如果前面都查過了，最有效的做法不是繼續反覆重裝，而是直接看 &lt;code&gt;Ollama&lt;/code&gt; 的啟動日誌和執行日誌。&lt;/p&gt;
&lt;p&gt;重點看兩類資訊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有沒有識別到 GPU&lt;/li&gt;
&lt;li&gt;有沒有出現驅動、庫載入、裝置初始化失敗之類的報錯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要日誌裡明確出現類似「找不到相容 GPU」或「ROCm/CUDA 初始化失敗」，排查方向就會立刻清楚很多。&lt;/p&gt;
&lt;h2 id=&#34;排查順序&#34;&gt;排查順序
&lt;/h2&gt;&lt;p&gt;如果你只想記最短路徑，可以按這個順序來：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;ollama ps&lt;/code&gt; 看現在到底是 &lt;code&gt;GPU&lt;/code&gt;、&lt;code&gt;CPU&lt;/code&gt; 還是混合載入&lt;/li&gt;
&lt;li&gt;換一個更小的模型，排除顯存不夠&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;nvidia-smi&lt;/code&gt;、&lt;code&gt;rocminfo&lt;/code&gt;、&lt;code&gt;rocm-smi&lt;/code&gt; 先確認底層環境正常&lt;/li&gt;
&lt;li&gt;完整重啟 &lt;code&gt;Ollama&lt;/code&gt; 服務&lt;/li&gt;
&lt;li&gt;檢查服務環境變數，尤其是 AMD 的 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;、&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;如果是 Docker / WSL，再檢查裝置映射&lt;/li&gt;
&lt;li&gt;最後看日誌定位具體報錯&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ollama&lt;/code&gt; 使用 &lt;code&gt;CPU&lt;/code&gt; 而不使用 &lt;code&gt;GPU&lt;/code&gt;，本質上通常是三類問題之一：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU 根本沒有被識別&lt;/li&gt;
&lt;li&gt;GPU 能被識別，但執行環境沒有傳到 &lt;code&gt;Ollama&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;GPU 在工作，但模型太大，最後還是回落到 &lt;code&gt;CPU&lt;/code&gt; 或混合記憶體&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先把這三類分開，排查就會快很多。&lt;br&gt;
如果你是 AMD 平台，尤其要把注意力放在 &lt;code&gt;ROCm&lt;/code&gt; 版本、裝置可見性和相容性變數上，而不是只看 &lt;code&gt;Ollama&lt;/code&gt; 命令本身。&lt;/p&gt;
&lt;p&gt;原影片：&lt;a class=&#34;link&#34; href=&#34;https://www.bilibili.com/video/BV1cHoYBqE8k/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.bilibili.com/video/BV1cHoYBqE8k/&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>NVIDIA nvbandwidth 是什麼：GPU 頻寬測試工具怎麼用</title>
        <link>https://knightli.com/zh-tw/2026/04/24/nvidia-nvbandwidth-guide/</link>
        <pubDate>Fri, 24 Apr 2026 14:41:35 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/24/nvidia-nvbandwidth-guide/</guid>
        <description>&lt;p&gt;如果你最近在排查多張 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 之間的互連效能，或是想確認 &lt;code&gt;PCIe&lt;/code&gt;、&lt;code&gt;NVLink&lt;/code&gt;、主機記憶體到顯存之間的實際頻寬，&lt;code&gt;NVIDIA/nvbandwidth&lt;/code&gt; 是一個很值得知道的小工具。&lt;/p&gt;
&lt;p&gt;它不是通用跑分軟體，也不是大模型框架裡的隱藏命令，而是 NVIDIA 開源出來、專門用來測量 GPU 相關記憶體拷貝頻寬與延遲的工具。相比只看理論頻寬，&lt;code&gt;nvbandwidth&lt;/code&gt; 更適合回答一個實際問題：&lt;strong&gt;這台機器目前這組 GPU 和互連鏈路，實際到底能跑出多少頻寬。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-nvbandwidth-是做什麼的&#34;&gt;1. &lt;code&gt;nvbandwidth&lt;/code&gt; 是做什麼的
&lt;/h2&gt;&lt;p&gt;從官方 README 的定位來看，&lt;code&gt;nvbandwidth&lt;/code&gt; 是一個用來測量 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 頻寬的命令列工具。&lt;/p&gt;
&lt;p&gt;它重點關注的是各種 &lt;code&gt;memcpy&lt;/code&gt; 模式下的傳輸表現，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; CPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;多節點 GPU 之間的傳輸&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類測試特別適合下面幾種場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;排查多卡訓練或推理時的互連瓶頸&lt;/li&gt;
&lt;li&gt;驗證 &lt;code&gt;NVLink&lt;/code&gt;、&lt;code&gt;PCIe&lt;/code&gt;、&lt;code&gt;C2C&lt;/code&gt; 等鏈路的實際表現&lt;/li&gt;
&lt;li&gt;比較不同伺服器、不同拓撲、不同驅動或 CUDA 版本下的傳輸差異&lt;/li&gt;
&lt;li&gt;做叢集部署前的基礎硬體驗收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單說，&lt;code&gt;nvbandwidth&lt;/code&gt; 看的不是模型吞吐，而是更底層的「資料搬運能力」。&lt;/p&gt;
&lt;h2 id=&#34;2-它測的不是單一分數&#34;&gt;2. 它測的不是單一分數
&lt;/h2&gt;&lt;p&gt;很多人會把「頻寬測試」理解成最後只得到一個分數，但 &lt;code&gt;nvbandwidth&lt;/code&gt; 實際輸出的資訊會更細。&lt;/p&gt;
&lt;p&gt;它會依照測試類型給出矩陣結果。比如在 &lt;code&gt;device_to_device_memcpy_write_ce&lt;/code&gt; 這類測試裡，輸出會按 GPU 的行列展示每一對裝置之間的頻寬。這樣你不只知道「這台機器大概有多快」，還可以看出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪兩張卡之間速度特別高&lt;/li&gt;
&lt;li&gt;哪些卡之間明顯受限於 &lt;code&gt;PCIe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;某些 GPU 配對之間是否存在異常低頻寬&lt;/li&gt;
&lt;li&gt;多卡拓撲是否符合預期&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你在看八卡伺服器、雙路平台或跨節點系統，這類矩陣結果通常會比單一平均值更有參考意義。&lt;/p&gt;
&lt;h2 id=&#34;3-ce-和-sm-兩類拷貝怎麼理解&#34;&gt;3. &lt;code&gt;CE&lt;/code&gt; 和 &lt;code&gt;SM&lt;/code&gt; 兩類拷貝怎麼理解
&lt;/h2&gt;&lt;p&gt;官方文件把測試分成兩類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CE&lt;/code&gt;：基於 &lt;code&gt;memcpy&lt;/code&gt; API 的 copy engine 拷貝&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SM&lt;/code&gt;：基於 kernel 的拷貝&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這兩類結果不一定會完全一樣，因為它們代表的是不同的拷貝路徑。&lt;br&gt;
如果你只是想看裝置之間的一般資料搬運表現，通常會先關注 &lt;code&gt;CE&lt;/code&gt;；如果你要研究更細的執行路徑，再繼續看 &lt;code&gt;SM&lt;/code&gt; 會更合適。&lt;/p&gt;
&lt;p&gt;另外，README 也說明帶寬結果預設取多次測試的中位數；新版又補上了統計波動資訊，這對判斷結果是否穩定會更有幫助。&lt;/p&gt;
&lt;h2 id=&#34;4-執行它需要什麼環境&#34;&gt;4. 執行它需要什麼環境
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 不是那種「下載就能直接跑」的純二進位小工具，它需要標準的 CUDA 開發環境。&lt;/p&gt;
&lt;p&gt;官方 README 目前列出的基本要求包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA Toolkit 11.x&lt;/code&gt; 或更高版本&lt;/li&gt;
&lt;li&gt;支援 &lt;code&gt;C++17&lt;/code&gt; 的編譯器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMake 3.20+&lt;/code&gt;，更推薦 &lt;code&gt;3.24+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Boost program_options&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;可用的 &lt;code&gt;CUDA&lt;/code&gt; 裝置與相容驅動&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你要跑多節點版本，要求會更高。當前 README 明確寫到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多節點建置需要 &lt;code&gt;CUDA Toolkit 12.3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;驅動需要 &lt;code&gt;550&lt;/code&gt; 或更高&lt;/li&gt;
&lt;li&gt;需要 &lt;code&gt;MPI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要設定 &lt;code&gt;nvidia-imex&lt;/code&gt; 服務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它更像是面向 Linux GPU 伺服器與叢集環境的工程工具，而不是給一般桌面使用者隨手裝來玩的。&lt;/p&gt;
&lt;h2 id=&#34;5-單機版怎麼編譯和執行&#34;&gt;5. 單機版怎麼編譯和執行
&lt;/h2&gt;&lt;p&gt;單機版建置流程很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 &lt;code&gt;Ubuntu&lt;/code&gt; / &lt;code&gt;Debian&lt;/code&gt; 上，官方還提供了一個 &lt;code&gt;debian_install.sh&lt;/code&gt; 腳本，用來安裝通用依賴並建置專案。&lt;/p&gt;
&lt;p&gt;編譯完成後，可以先看幫助：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;幾個比較常用的參數包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;：列出可用測試&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t&lt;/code&gt;：按測試名稱或索引執行指定測試&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;：按前綴批次執行測試&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt;：設定 memcpy buffer 大小，預設 &lt;code&gt;512 MiB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt;：設定測試迭代次數&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-j&lt;/code&gt;：輸出 &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-H&lt;/code&gt;：啟用 huge pages 的主機記憶體配置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想先跑一輪預設測試，直接執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只想測一個具體項目，例如某個裝置到裝置的拷貝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -t device_to_device_memcpy_read_ce
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-多節點支援是它比較特別的地方&#34;&gt;6. 多節點支援是它比較特別的地方
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 不只是單機多卡測試工具，它也支援多節點場景。&lt;/p&gt;
&lt;p&gt;從 README 來看，多節點版本的建置方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -DMULTINODE&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行時通常要搭配 &lt;code&gt;mpirun&lt;/code&gt;，並以「每張 GPU 一個進程」的方式啟動。&lt;br&gt;
官方文件也要求所有參與測試的 rank 都處在同一個 multinode clique 內，並建議在 MPI 環境下主要執行帶 &lt;code&gt;multinode&lt;/code&gt; 前綴的測試。&lt;/p&gt;
&lt;p&gt;這一點說明它的定位明顯更偏向高效能運算與大型 GPU 系統，而不只是工作站自測。&lt;/p&gt;
&lt;p&gt;如果你手上是 &lt;code&gt;NVLink&lt;/code&gt; 多節點部署、&lt;code&gt;GB200&lt;/code&gt; / &lt;code&gt;Grace Hopper&lt;/code&gt; 這類更複雜的平台，&lt;code&gt;nvbandwidth&lt;/code&gt; 的價值會比一般消費級顯卡環境大得多。&lt;/p&gt;
&lt;h2 id=&#34;7-新版-v09-更新了什麼&#34;&gt;7. 新版 &lt;code&gt;v0.9&lt;/code&gt; 更新了什麼
&lt;/h2&gt;&lt;p&gt;截至 &lt;strong&gt;2026 年 4 月 24 日&lt;/strong&gt;，GitHub Releases 頁面顯示 &lt;code&gt;nvbandwidth&lt;/code&gt; 的最新版本是 &lt;strong&gt;&lt;code&gt;v0.9&lt;/code&gt;&lt;/strong&gt;，發布時間是 &lt;strong&gt;2026 年 4 月 8 日&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;這一版比較值得注意的更新主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;為頻寬輸出增加波動統計資訊&lt;/li&gt;
&lt;li&gt;增加 host memory huge pages 支援（&lt;code&gt;Windows&lt;/code&gt; 不啟用）&lt;/li&gt;
&lt;li&gt;為裝置到裝置測試增加 pair sampling 選項&lt;/li&gt;
&lt;li&gt;補充 troubleshooting guide&lt;/li&gt;
&lt;li&gt;統一單機與多節點執行路徑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外還有兩點工程層面的變化也很實用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改進 CUDA 架構檢測，降低對實際 GPU 存取的依賴&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;CUDA Toolkit 13.0+&lt;/code&gt; 場景下棄用 &lt;code&gt;Volta&lt;/code&gt;（&lt;code&gt;sm_70&lt;/code&gt; / &lt;code&gt;sm_72&lt;/code&gt;）支援&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你之前只看過舊版資料，現在再回來看，&lt;code&gt;v0.9&lt;/code&gt; 已經不只是「測一下頻寬」的初始版本，而是朝著更適合自動化、排障和大型系統測試的方向繼續推進了。&lt;/p&gt;
&lt;h2 id=&#34;8-什麼時候適合用它&#34;&gt;8. 什麼時候適合用它
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; 最適合下面這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你想確認多張 &lt;code&gt;NVIDIA GPU&lt;/code&gt; 之間的真實互連頻寬&lt;/li&gt;
&lt;li&gt;你懷疑某張卡被插在了受限的 &lt;code&gt;PCIe&lt;/code&gt; 插槽&lt;/li&gt;
&lt;li&gt;你想比較 &lt;code&gt;NVLink&lt;/code&gt; 和非 &lt;code&gt;NVLink&lt;/code&gt; 路徑的差異&lt;/li&gt;
&lt;li&gt;你在做多節點 GPU 叢集部署，需要驗證鏈路是否正常&lt;/li&gt;
&lt;li&gt;你想把測試結果接進自動化流程，輸出 &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但如果你的目標只是看「訓練快不快」或「推理 tokens/s 有多少」，那它不是直接答案。&lt;br&gt;
這時你還需要搭配訓練框架、推理引擎或具體 workload 的實測一起看。&lt;/p&gt;
&lt;h2 id=&#34;9-可以怎麼理解它的價值&#34;&gt;9. 可以怎麼理解它的價值
&lt;/h2&gt;&lt;p&gt;很多 GPU 效能問題，本質上都不是「算力不夠」，而是資料沒有搬好。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU 之間沒有走到預期的鏈路&lt;/li&gt;
&lt;li&gt;跨 NUMA 節點存取導致速度下降&lt;/li&gt;
&lt;li&gt;某些卡配對之間頻寬異常&lt;/li&gt;
&lt;li&gt;跨節點通訊配置不完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類問題如果只看 &lt;code&gt;nvidia-smi&lt;/code&gt;、只看模型吞吐，往往不容易定位。&lt;br&gt;
而 &lt;code&gt;nvbandwidth&lt;/code&gt; 這種更底層、矩陣化的測試工具，剛好能把「鏈路層實際發生了什麼」暴露出來。&lt;/p&gt;
&lt;p&gt;所以你可以把它理解成：&lt;strong&gt;給 NVIDIA GPU 系統做頻寬體檢的命令列工具。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>K-近鄰演算法入門：用鄰居投票理解機器學習分類</title>
        <link>https://knightli.com/zh-tw/2026/04/24/knn-algorithm-beginner-guide/</link>
        <pubDate>Fri, 24 Apr 2026 11:17:13 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/24/knn-algorithm-beginner-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-近鄰演算法&lt;/code&gt;，也常寫作 &lt;code&gt;KNN&lt;/code&gt; 或 &lt;code&gt;k-NN&lt;/code&gt;，是機器學習裡非常適合入門的一類演算法。它的想法很樸素：要判斷一個新樣本屬於哪一類，就看看它周圍最像它的幾個樣本大多屬於哪一類。&lt;/p&gt;
&lt;p&gt;如果一句話解釋 KNN，可以這樣說：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;近朱者赤，近墨者黑。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如你剛搬到一個社區，不知道附近哪家早餐店更適合學生。你問了離你最近的 5 個鄰居，裡面 4 個人都推薦同一家店，那你大概率也會先相信這家店。KNN 做分類時，也是在做類似的事情：找鄰居，看多數。&lt;/p&gt;
&lt;h2 id=&#34;1-先從一個小例子理解&#34;&gt;1. 先從一個小例子理解
&lt;/h2&gt;&lt;p&gt;假設我們要判斷一個水果是蘋果還是橘子。已知一些水果的特徵，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重量&lt;/li&gt;
&lt;li&gt;顏色&lt;/li&gt;
&lt;li&gt;甜度&lt;/li&gt;
&lt;li&gt;表皮是否粗糙&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現在來了一個新水果，我們還不知道它是什麼。KNN 不會先總結一套複雜規則，而是直接去已知水果裡找「最像它」的幾個。&lt;/p&gt;
&lt;p&gt;如果最像它的 5 個水果中，有 4 個是蘋果，1 個是橘子，那麼 KNN 就會判斷：這個新水果更可能是蘋果。&lt;/p&gt;
&lt;p&gt;這裡的 &lt;code&gt;K&lt;/code&gt;，就是「要看幾個鄰居」。如果 &lt;code&gt;K=5&lt;/code&gt;，就是看最近的 5 個樣本。&lt;/p&gt;
&lt;h2 id=&#34;2-一個簡單示意圖&#34;&gt;2. 一個簡單示意圖
&lt;/h2&gt;&lt;p&gt;下面用一個二維小圖來直觀理解。假設 &lt;code&gt;A&lt;/code&gt; 表示蘋果，&lt;code&gt;O&lt;/code&gt; 表示橘子，&lt;code&gt;?&lt;/code&gt; 是我們想判斷的新水果。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;甜度 ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  高 |        A       A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |           ?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |       A       O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  低 |   O       O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     +--------------------→ 重量
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        輕              重
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果我們設 &lt;code&gt;K=3&lt;/code&gt;，就看離 &lt;code&gt;?&lt;/code&gt; 最近的 3 個點。假設最近的 3 個鄰居裡有 2 個 &lt;code&gt;A&lt;/code&gt;、1 個 &lt;code&gt;O&lt;/code&gt;，那 KNN 就會把 &lt;code&gt;?&lt;/code&gt; 判斷為 &lt;code&gt;A&lt;/code&gt;，也就是蘋果。&lt;/p&gt;
&lt;p&gt;這就是 KNN 最核心的過程：&lt;strong&gt;找最近的 K 個鄰居，然後投票。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-knn-的基本步驟&#34;&gt;3. KNN 的基本步驟
&lt;/h2&gt;&lt;p&gt;用不帶公式的方式看，KNN 的分類流程大概是這樣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;準備一批已經標好類別的資料&lt;/li&gt;
&lt;li&gt;新來一個未知類別的樣本&lt;/li&gt;
&lt;li&gt;計算它和所有已知樣本的相似程度&lt;/li&gt;
&lt;li&gt;找出最相似的 K 個樣本&lt;/li&gt;
&lt;li&gt;看這 K 個樣本裡哪個類別最多&lt;/li&gt;
&lt;li&gt;把新樣本歸到這個類別&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這也是為什麼 KNN 很容易理解。它不像一些模型那樣需要先訓練出一堆參數，KNN 更像是把訓練資料先存起來，真正需要判斷時再去查鄰居。&lt;/p&gt;
&lt;p&gt;這種特點也讓 KNN 常被稱為一種「惰性學習」方法。這裡的「惰性」不是貶義，而是說它不會在訓練階段做太多計算，主要工作被推遲到了預測階段。&lt;/p&gt;
&lt;h2 id=&#34;4-什麼叫最近&#34;&gt;4. 什麼叫「最近」
&lt;/h2&gt;&lt;p&gt;KNN 裡的「最近」，不一定只是地圖上的距離。它通常表示「特徵上更相似」。&lt;/p&gt;
&lt;p&gt;比如判斷水果時，兩個水果如果重量接近、顏色接近、甜度接近，就可以認為距離更近。判斷使用者興趣時，如果兩個人看過的內容、點擊習慣、購買記錄很像，也可以認為他們更接近。&lt;/p&gt;
&lt;p&gt;所以 KNN 的關鍵不是「空間位置」，而是你怎麼描述一個樣本。&lt;/p&gt;
&lt;p&gt;常見特徵可以是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;商品價格、重量、銷量&lt;/li&gt;
&lt;li&gt;使用者年齡、瀏覽次數、購買頻率&lt;/li&gt;
&lt;li&gt;圖片的顏色、紋理、形狀&lt;/li&gt;
&lt;li&gt;文字中某些詞出現的情況&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特徵選得好不好，會直接影響 KNN 的效果。&lt;/p&gt;
&lt;h2 id=&#34;5-k-值怎麼選&#34;&gt;5. K 值怎麼選
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K&lt;/code&gt; 不是固定答案，而是需要根據資料來選。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;K&lt;/code&gt; 太小，比如 &lt;code&gt;K=1&lt;/code&gt;，模型會非常相信最近的那個樣本。這有時很敏感：如果最近的樣本剛好是噪聲資料，判斷就容易錯。&lt;/p&gt;
&lt;p&gt;如果 &lt;code&gt;K&lt;/code&gt; 太大，模型又會看太多鄰居，結果可能被遠處不太相關的樣本影響，分類邊界會變得模糊。&lt;/p&gt;
&lt;p&gt;可以把它理解成問人意見：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只問 1 個人：容易被個別意見帶偏&lt;/li&gt;
&lt;li&gt;問太多人：可能把不熟悉情況的人也算進來了&lt;/li&gt;
&lt;li&gt;問附近幾位最相關的人：通常更穩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在二分類問題裡，很多時候會選奇數 K，比如 &lt;code&gt;3&lt;/code&gt;、&lt;code&gt;5&lt;/code&gt;、&lt;code&gt;7&lt;/code&gt;，這樣可以減少投票平局的情況。&lt;/p&gt;
&lt;h2 id=&#34;6-knn-不只可以做分類&#34;&gt;6. KNN 不只可以做分類
&lt;/h2&gt;&lt;p&gt;KNN 最常見的用途是分類，比如判斷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;郵件是不是垃圾郵件&lt;/li&gt;
&lt;li&gt;圖片裡是貓還是狗&lt;/li&gt;
&lt;li&gt;使用者是否可能流失&lt;/li&gt;
&lt;li&gt;一條評論是正面還是負面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它也可以做迴歸。迴歸可以理解為預測一個數值。&lt;/p&gt;
&lt;p&gt;比如我們想估計一套房子的價格，可以找出和它最相似的幾套房子，然後參考這些房子的價格。不是投票選類別，而是把鄰居的數值做一個綜合估計。&lt;/p&gt;
&lt;p&gt;簡單說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分類：鄰居投票，選類別&lt;/li&gt;
&lt;li&gt;迴歸：參考鄰居數值，估結果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-加權-knn近一點的鄰居更重要&#34;&gt;7. 加權 KNN：近一點的鄰居更重要
&lt;/h2&gt;&lt;p&gt;普通 KNN 會讓每個鄰居的投票權差不多。但現實中，離得更近的鄰居通常更可信。&lt;/p&gt;
&lt;p&gt;比如有 5 個鄰居，其中 1 個和新樣本幾乎一模一樣，另外 4 個只是稍微有點像。完全平均投票可能不太合理。&lt;/p&gt;
&lt;p&gt;所以有一種改進思路叫「加權 KNN」：越近的鄰居，影響越大；越遠的鄰居，影響越小。&lt;/p&gt;
&lt;p&gt;這很好理解。你買手機時，和你預算、用途、品牌偏好都很接近的人，他的建議往往比泛泛而談的建議更有參考價值。&lt;/p&gt;
&lt;h2 id=&#34;8-knn-的優點&#34;&gt;8. KNN 的優點
&lt;/h2&gt;&lt;p&gt;KNN 的優點非常適合初學者理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;思路直觀，容易解釋&lt;/li&gt;
&lt;li&gt;不需要複雜訓練過程&lt;/li&gt;
&lt;li&gt;可以用於分類，也可以用於迴歸&lt;/li&gt;
&lt;li&gt;對一些邊界不規則的問題比較靈活&lt;/li&gt;
&lt;li&gt;新增資料時通常比較方便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你剛開始學機器學習，KNN 是一個很好的起點。它能幫助你理解「樣本」「特徵」「距離」「分類」「訓練資料」這些基本概念。&lt;/p&gt;
&lt;h2 id=&#34;9-knn-的限制&#34;&gt;9. KNN 的限制
&lt;/h2&gt;&lt;p&gt;KNN 也有明顯短板。&lt;/p&gt;
&lt;p&gt;第一，預測時可能比較慢。因為每來一個新樣本，都要和很多已有樣本比較。如果資料量很大，計算成本會升高。&lt;/p&gt;
&lt;p&gt;第二，它很依賴特徵尺度。比如一個特徵是「收入」，動不動幾千幾萬；另一個特徵是「年齡」，通常幾十。如果不做處理，收入這個特徵可能會過度影響距離判斷。&lt;/p&gt;
&lt;p&gt;所以在使用 KNN 前，經常需要做資料標準化，讓不同特徵在比較時更公平。&lt;/p&gt;
&lt;p&gt;第三，它容易受無關特徵影響。如果你判斷水果類別，卻把「購買日期」這種無關資訊也放進去，模型可能會被干擾。&lt;/p&gt;
&lt;p&gt;第四，它對局部資料分布敏感。如果某一類樣本特別多，投票時可能更容易壓過其他類別。&lt;/p&gt;
&lt;h2 id=&#34;10-容易和-k-平均演算法混淆&#34;&gt;10. 容易和 K-平均演算法混淆
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;KNN&lt;/code&gt; 和 &lt;code&gt;K-平均演算法&lt;/code&gt; 名字裡都有 &lt;code&gt;K&lt;/code&gt;，但它們不是一回事。&lt;/p&gt;
&lt;p&gt;KNN 是監督學習，通常使用已經標好類別的資料來判斷新樣本。&lt;/p&gt;
&lt;p&gt;K-平均演算法更常用於聚類，也就是在沒有明確標籤時，把資料自動分成幾組。&lt;/p&gt;
&lt;p&gt;可以簡單記：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KNN：看鄰居，做分類或迴歸&lt;/li&gt;
&lt;li&gt;K-平均：找中心，把資料分組&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;11-什麼時候適合用-knn&#34;&gt;11. 什麼時候適合用 KNN
&lt;/h2&gt;&lt;p&gt;KNN 適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料量不太大&lt;/li&gt;
&lt;li&gt;特徵比較容易表示成數值&lt;/li&gt;
&lt;li&gt;樣本之間的「相似程度」比較有意義&lt;/li&gt;
&lt;li&gt;需要一個容易解釋的基線方法&lt;/li&gt;
&lt;li&gt;想快速驗證一個分類思路是否可行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果資料量巨大、特徵非常多、預測速度要求很高，KNN 可能就不是最合適的選擇，或者需要配合更高效的近鄰搜尋方法。&lt;/p&gt;
&lt;h2 id=&#34;12-初學者應該記住什麼&#34;&gt;12. 初學者應該記住什麼
&lt;/h2&gt;&lt;p&gt;學 KNN 時，不需要一開始就鑽進複雜公式。先記住這幾個直覺就夠了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KNN 用「鄰居」來判斷新樣本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; 表示看幾個最近鄰居&lt;/li&gt;
&lt;li&gt;分類時靠投票，迴歸時參考鄰居數值&lt;/li&gt;
&lt;li&gt;特徵選擇和資料標準化很重要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; 太小容易受噪聲影響，太大又可能變得遲鈍&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;KNN 的價值不只是它本身能解決一些問題，更在於它把機器學習裡幾個基礎觀念講得很清楚：資料如何表示、相似度如何衡量、預測如何從已有樣本中產生。&lt;/p&gt;
&lt;p&gt;只要理解了「找相似樣本，再根據鄰居做判斷」這件事，就已經抓住了 KNN 的核心。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zh.wikipedia.org/wiki/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-近鄰演算法 - 維基百科&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 發布 GPT-5.5：更強的智慧體編碼、知識工作與科研能力</title>
        <link>https://knightli.com/zh-tw/2026/04/24/openai-gpt-5-5-release/</link>
        <pubDate>Fri, 24 Apr 2026 08:39:56 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/24/openai-gpt-5-5-release/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 23 日發布了 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing GPT-5.5&lt;/a&gt;。從官方頁面來看，這次更新的重點不是單純「模型更聰明」，而是更強調模型能不能把複雜任務持續推進下去。&lt;/p&gt;
&lt;p&gt;官方給 GPT-5.5 的定位，是一個更適合真實工作的模型。它不只要回答問題，還要能寫程式、除錯、查資料、分析資料、產生文件和試算表、操作軟體，並在多個工具之間來回切換，直到任務完成。&lt;/p&gt;
&lt;h2 id=&#34;1-gpt-55-主要強在哪裡&#34;&gt;1. GPT-5.5 主要強在哪裡
&lt;/h2&gt;&lt;p&gt;這次發布頁裡反覆出現的幾個方向，可以概括為四類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;智慧體編碼&lt;/li&gt;
&lt;li&gt;電腦操作與工具使用&lt;/li&gt;
&lt;li&gt;知識工作&lt;/li&gt;
&lt;li&gt;早期科研輔助&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，GPT-5.5 的重點不是短問短答，而是更長鏈路的任務。例如一個工程問題不只是「這段程式碼怎麼改」，而是要理解專案結構、定位失敗原因、修改相關檔案、補測試、驗證結果，並盡量減少使用者反覆提示。&lt;/p&gt;
&lt;p&gt;OpenAI 也特別強調，GPT-5.5 在 Codex 任務中更省 token。這點很實際，因為編碼智慧體一旦開始讀檔案、跑命令、修 bug，token 消耗會非常快。如果模型能用更少步驟完成同樣任務，實際成本和等待時間都會下降。&lt;/p&gt;
&lt;h2 id=&#34;2-編碼能力是這次最重要的展示方向&#34;&gt;2. 編碼能力是這次最重要的展示方向
&lt;/h2&gt;&lt;p&gt;官方稱 GPT-5.5 是目前最強的 agentic coding 模型。&lt;/p&gt;
&lt;p&gt;幾個公開指標裡，比較值得注意的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Terminal-Bench 2.0&lt;/code&gt;：GPT-5.5 達到 &lt;code&gt;82.7%&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SWE-Bench Pro&lt;/code&gt;：GPT-5.5 達到 &lt;code&gt;58.6%&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenAI 內部的 &lt;code&gt;Expert-SWE&lt;/code&gt;：GPT-5.5 也高於 GPT-5.4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些測試的共同點是，它們更接近真實工程流程，而不是只考單個演算法題。特別是 Terminal-Bench 這類任務，會涉及命令列操作、規劃、試錯、工具協調和多步驟驗證。&lt;/p&gt;
&lt;p&gt;對日常開發者來說，這裡的意義很直接：模型是否能接住更大的任務，取決於它能不能長時間保持上下文、自己檢查假設、知道什麼時候該跑測試、知道改動會影響哪裡。&lt;/p&gt;
&lt;p&gt;GPT-5.5 在 Codex 裡的價值，也主要體現在這些地方。它更像是可以接手一段工程任務的協作者，而不是只會補全程式碼片段的工具。&lt;/p&gt;
&lt;h2 id=&#34;3-知識工作開始變成重點場景&#34;&gt;3. 知識工作開始變成重點場景
&lt;/h2&gt;&lt;p&gt;除了寫程式，OpenAI 這次也把 GPT-5.5 放到了更廣的辦公場景裡。&lt;/p&gt;
&lt;p&gt;官方提到，GPT-5.5 在 Codex 中可以更好地產生文件、試算表和簡報，也更適合處理營運研究、試算表建模、業務材料整理這類任務。結合電腦操作能力之後，它的目標不是只給建議，而是能直接參與「找資料、理解內容、呼叫工具、檢查輸出、整理成結果」這整條流程。&lt;/p&gt;
&lt;p&gt;發布頁裡還提到 OpenAI 內部已經在多部門使用 Codex，包括軟體工程、財務、傳播、市場、資料科學和產品管理等。這裡真正值得關注的不是某個單點案例，而是 OpenAI 正在把 Codex 從開發工具擴展為通用工作工具。&lt;/p&gt;
&lt;p&gt;在 ChatGPT 裡，GPT-5.5 Thinking 面向 Plus、Pro、Business 和 Enterprise 使用者；GPT-5.5 Pro 則面向更難問題和更高準確率需求，提供給 Pro、Business 和 Enterprise 使用者。&lt;/p&gt;
&lt;h2 id=&#34;4-科研能力不只是答題更強&#34;&gt;4. 科研能力不只是「答題更強」
&lt;/h2&gt;&lt;p&gt;GPT-5.5 的科研展示也很重。&lt;/p&gt;
&lt;p&gt;官方提到它在遺傳學、定量生物學、生物資訊學、數學證明等方向都有改進。這裡的重點不是模型能不能背出一個知識點，而是能不能處理更接近真實研究的問題：讀資料、發現異常、提出分析方式、解釋結果，並根據中間結果繼續推進。&lt;/p&gt;
&lt;p&gt;發布頁裡提到的 &lt;code&gt;GeneBench&lt;/code&gt; 和 &lt;code&gt;BixBench&lt;/code&gt;，都更偏多階段科學分析任務。OpenAI 還提到，一個內部版本的 GPT-5.5 借助自訂工具鏈，幫助發現了關於 Ramsey numbers 的新證明，並用 Lean 做了驗證。&lt;/p&gt;
&lt;p&gt;這類案例還不能簡單理解為「AI 已經能獨立做科研」，但它說明模型正在從問答工具往研究協作者靠近。尤其是在程式碼、資料、論文、實驗想法混在一起的場景裡，GPT-5.5 的長鏈路推理和工具使用能力會更重要。&lt;/p&gt;
&lt;h2 id=&#34;5-推理效率更強但沒有明顯變慢&#34;&gt;5. 推理效率：更強但沒有明顯變慢
&lt;/h2&gt;&lt;p&gt;一個容易被忽略的點是，OpenAI 說 GPT-5.5 在真實服務中的 per-token latency 與 GPT-5.4 相當。&lt;/p&gt;
&lt;p&gt;通常更大的模型、更強的模型會帶來更高延遲。OpenAI 這次強調，它們透過推理系統最佳化，讓 GPT-5.5 在智慧提升的同時保持速度。發布頁裡還提到，Codex 分析生產流量模式並編寫負載分配相關啟發式演算法，使 token 產生速度提升超過 &lt;code&gt;20%&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這個細節很有意思：模型不只被基礎設施服務，也反過來幫助改進服務它的基礎設施。&lt;/p&gt;
&lt;h2 id=&#34;6-安全策略會更嚴格尤其是網路安全方向&#34;&gt;6. 安全策略會更嚴格，尤其是網路安全方向
&lt;/h2&gt;&lt;p&gt;GPT-5.5 的網路安全能力更強，所以 OpenAI 同時加強了安全限制。&lt;/p&gt;
&lt;p&gt;官方說明中提到，GPT-5.5 在網路安全能力上比 GPT-5.4 有提升，因此會部署更嚴格的分類器，尤其針對高風險活動、敏感網路安全請求和重複濫用行為。&lt;/p&gt;
&lt;p&gt;這意味著一部分使用者在使用網路安全相關能力時，可能會遇到更多拒答或限制。OpenAI 也提供了 Trusted Access for Cyber，用於讓經過驗證的防禦性使用者獲得更少不必要阻礙。&lt;/p&gt;
&lt;p&gt;對普通開發者來說，可以簡單理解為：合法的安全加固、漏洞修復、程式碼審計會繼續被支援，但高風險攻擊鏈路會被更嚴格地控制。&lt;/p&gt;
&lt;h2 id=&#34;7-可用性與-api-價格&#34;&gt;7. 可用性與 API 價格
&lt;/h2&gt;&lt;p&gt;根據 OpenAI 發布頁，GPT-5.5 的可用性如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT：GPT-5.5 Thinking 面向 Plus、Pro、Business、Enterprise 使用者&lt;/li&gt;
&lt;li&gt;ChatGPT：GPT-5.5 Pro 面向 Pro、Business、Enterprise 使用者&lt;/li&gt;
&lt;li&gt;Codex：GPT-5.5 面向 Plus、Pro、Business、Enterprise、Edu、Go 方案&lt;/li&gt;
&lt;li&gt;Codex：上下文視窗為 &lt;code&gt;400K&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex Fast mode：產生速度約 &lt;code&gt;1.5x&lt;/code&gt;，成本為 &lt;code&gt;2.5x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API 方面，OpenAI 表示 &lt;code&gt;gpt-5.5&lt;/code&gt; 和 &lt;code&gt;gpt-5.5-pro&lt;/code&gt; 會很快開放。&lt;/p&gt;
&lt;p&gt;官方給出的 API 價格是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt;：輸入 &lt;code&gt;5 美元 / 1M tokens&lt;/code&gt;，輸出 &lt;code&gt;30 美元 / 1M tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5-pro&lt;/code&gt;：輸入 &lt;code&gt;30 美元 / 1M tokens&lt;/code&gt;，輸出 &lt;code&gt;180 美元 / 1M tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt; API 上下文視窗為 &lt;code&gt;1M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Batch 和 Flex 為標準 API 價格的一半&lt;/li&gt;
&lt;li&gt;Priority processing 為標準價格的 &lt;code&gt;2.5x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個價格明顯高於很多日常模型，所以它更適合高價值任務：複雜工程改造、長文件分析、自動化辦公、科研輔助、重要業務流程，而不是普通閒聊。&lt;/p&gt;
&lt;h2 id=&#34;8-怎麼看這次發布&#34;&gt;8. 怎麼看這次發布
&lt;/h2&gt;&lt;p&gt;如果只看一句話，GPT-5.5 的重點是：OpenAI 正在把模型從「回答問題」繼續推向「完成工作」。&lt;/p&gt;
&lt;p&gt;它最值得關注的地方，不只是 benchmark 分數提升，而是幾種能力開始匯合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更強的長任務保持能力&lt;/li&gt;
&lt;li&gt;更穩定的工具使用&lt;/li&gt;
&lt;li&gt;更好的工程上下文理解&lt;/li&gt;
&lt;li&gt;更適合文件、試算表、研究和業務流程&lt;/li&gt;
&lt;li&gt;更長上下文和更高 token 效率&lt;/li&gt;
&lt;li&gt;更嚴格的高風險能力控制&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對開發者來說，最值得試的是 Codex 裡的複雜工程任務。對企業使用者來說，更值得關注的是它能不能把一部分跨工具、跨文件、跨流程的工作變成可交付結果。&lt;/p&gt;
&lt;p&gt;GPT-5.5 不是一次只面向聊天體驗的小更新，而更像是 OpenAI 在繼續推進「AI 作為工作執行層」的方向。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-gpt-5-5/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing GPT-5.5 - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>常見向量模型怎麼選：OpenAI、BGE、E5、GTE、Jina 對比</title>
        <link>https://knightli.com/zh-tw/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</link>
        <pubDate>Thu, 23 Apr 2026 15:23:47 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</guid>
        <description>&lt;p&gt;做 RAG、語義搜尋、知識庫召回時，很多人一開始都會糾結同一個問題：向量模型這麼多，到底該選哪一個。&lt;/p&gt;
&lt;p&gt;常見模型大致可以分成兩組。一組是通用文字向量，覆蓋中英文和多語言任務；另一組更適合中文場景，重點看中文檢索、中文問答和中文知識庫效果。&lt;/p&gt;
&lt;p&gt;如果先給一個很短的結論，可以這樣看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想省事、直接用 API：&lt;code&gt;text-embedding-3-small&lt;/code&gt; 或 &lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想做中文檢索，且希望開源可自部署：&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;、&lt;code&gt;bge-m3&lt;/code&gt;、&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想兼顧多語言：&lt;code&gt;multilingual-e5-base&lt;/code&gt;、&lt;code&gt;multilingual-e5-large&lt;/code&gt;、&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想在中文場景裡壓低成本：&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一先按類型看這些模型&#34;&gt;一、先按類型看這些模型
&lt;/h2&gt;&lt;h3 id=&#34;1-openai-系列&#34;&gt;1. OpenAI 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類模型的特點是調用簡單、穩定，適合直接接 API 做檢索、RAG、分類和相似度匹配。它們的優勢不在於「某一個中文榜單分數特別高」，而在整體體驗完整：接入門檻低、效果穩定、工程成本也低。&lt;/p&gt;
&lt;p&gt;如果團隊不想自己託管模型、不想維護推理服務，OpenAI 這類方案通常最省時間。&lt;/p&gt;
&lt;h3 id=&#34;2-bge-系列&#34;&gt;2. BGE 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BAAI/bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BGE 是中文檢索裡很常見的一條線。&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt; 和 &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt; 更偏中文單語任務，適合中文語義搜尋、知識庫召回、FAQ 匹配。&lt;code&gt;bge-m3&lt;/code&gt; 則更通用，能覆蓋多語言、多粒度和更複雜的檢索場景。&lt;/p&gt;
&lt;p&gt;如果你的資料主要是中文文本，BGE 往往是最容易進入候選名單的一組。&lt;/p&gt;
&lt;h3 id=&#34;3-e5-系列&#34;&gt;3. E5 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intfloat/multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;E5 系列的特點是多語言能力比較均衡，適合中英混合、跨語種檢索、國際化內容庫。它不是只盯中文，而是更強調「不同語言都能放到一個統一檢索體系裡」。&lt;/p&gt;
&lt;p&gt;如果你的語料不是純中文，而是中文、英文、日文甚至更多語言混在一起，E5 通常比中文專用模型更穩。&lt;/p&gt;
&lt;h3 id=&#34;4-gte-系列&#34;&gt;4. GTE 系列
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alibaba-NLP/gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GTE 在中文任務裡也很常見，定位和 BGE 有點接近，都是中文檢索的實用型選手。它的特點通常是比較平衡，沒有特別複雜的使用門檻，適合做中文知識庫、站內搜尋和企業內部文件召回。&lt;/p&gt;
&lt;p&gt;如果你想在中文開源模型裡多做一組對照，GTE 很值得一起評測。&lt;/p&gt;
&lt;h3 id=&#34;5-jina-embeddings&#34;&gt;5. Jina Embeddings
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jina 這一類更偏通用和現代工程場景，常見於多語言檢索、長文字、網頁內容處理等任務。它經常出現在「一個模型覆蓋更多任務形態」的討論裡，適合希望統一 embedding 層的團隊。&lt;/p&gt;
&lt;p&gt;如果你的內容來源比較雜，既有網頁、文件，也有多語言文本，Jina 往往是一個值得測試的備選。&lt;/p&gt;
&lt;h2 id=&#34;二中文場景裡哪些模型更常用&#34;&gt;二、中文場景裡，哪些模型更常用
&lt;/h2&gt;&lt;p&gt;如果把範圍收窄到中文場景，常見候選基本就是這些：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這幾類裡，最典型的分法其實不是「誰絕對更強」，而是下面這三個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你的資料是不是以中文為主&lt;/li&gt;
&lt;li&gt;你是不是需要多語言&lt;/li&gt;
&lt;li&gt;你更在意效果、成本，還是部署方便&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;三把這些模型放在一起看&#34;&gt;三、把這些模型放在一起看
&lt;/h2&gt;&lt;h3 id=&#34;1-如果只看中文效果&#34;&gt;1. 如果只看中文效果
&lt;/h3&gt;&lt;p&gt;純中文知識庫、中文問答、中文文件召回，一般優先看 BGE 和 GTE。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;：更輕，適合成本敏感場景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;：通常是中文場景裡更均衡的一檔&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;：和輕量 BGE 類似，適合先做基線&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;：更適合追求召回品質的場景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;：適合希望把中文檢索和更複雜能力放到一起考慮的團隊&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果語料幾乎全是中文，E5 雖然也能用，但很多時候不會是第一優先。&lt;/p&gt;
&lt;h3 id=&#34;2-如果需要多語言&#34;&gt;2. 如果需要多語言
&lt;/h3&gt;&lt;p&gt;這時優先級會明顯變化。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt; 和 &lt;code&gt;multilingual-e5-large&lt;/code&gt; 更適合多語言統一檢索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt; 也適合多語言和通用文字任務&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt; 比傳統中文專用模型更適合擴展到多語言&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt; 和 &lt;code&gt;text-embedding-3-large&lt;/code&gt; 適合想直接上 API 的場景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的庫裡同時有中文、英文、產品文件、網頁文案和使用者問題，多語言模型會比中文專用模型省掉很多後續改造成本。&lt;/p&gt;
&lt;h3 id=&#34;3-如果要控制推理和儲存成本&#34;&gt;3. 如果要控制推理和儲存成本
&lt;/h3&gt;&lt;p&gt;輕量模型更有優勢。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類模型通常更適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件量大&lt;/li&gt;
&lt;li&gt;更新頻繁&lt;/li&gt;
&lt;li&gt;需要批量向量化&lt;/li&gt;
&lt;li&gt;對延遲和成本比較敏感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果資料規模很大，embedding 維度、推理速度、索引占用都會直接影響總成本，所以「先上小模型做基線」通常是更穩的做法。&lt;/p&gt;
&lt;h3 id=&#34;4-如果優先追求上限&#34;&gt;4. 如果優先追求上限
&lt;/h3&gt;&lt;p&gt;更大的模型通常更適合複雜檢索或高品質召回，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但這裡要注意，模型越大不代表線上體驗一定越好。很多專案最後的瓶頸不是模型本身，而是切分策略、召回條數、重排、資料清洗和評測方式。&lt;/p&gt;
&lt;h2 id=&#34;四每個模型更適合什麼任務&#34;&gt;四、每個模型更適合什麼任務
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;更適合的場景&lt;/th&gt;
          &lt;th&gt;簡單判斷&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;通用檢索、RAG、快速接入&lt;/td&gt;
          &lt;td&gt;API 省事，成本友好&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;更重視品質的通用檢索&lt;/td&gt;
          &lt;td&gt;效果優先，工程最省心&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文輕量檢索&lt;/td&gt;
          &lt;td&gt;中文常用入門款&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文知識庫、FAQ、語義搜尋&lt;/td&gt;
          &lt;td&gt;中文場景很均衡&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文為主但希望兼顧更複雜檢索&lt;/td&gt;
          &lt;td&gt;擴展性更強&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多語言基礎檢索&lt;/td&gt;
          &lt;td&gt;國際化專案常用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多語言高品質召回&lt;/td&gt;
          &lt;td&gt;更偏效果導向&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文輕量召回&lt;/td&gt;
          &lt;td&gt;適合先做基線&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;中文品質優先場景&lt;/td&gt;
          &lt;td&gt;可作為 BGE 對照組&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多語言、網頁、通用文字任務&lt;/td&gt;
          &lt;td&gt;統一 embedding 層時值得測&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;五實際選型時可以怎麼決策&#34;&gt;五、實際選型時可以怎麼決策
&lt;/h2&gt;&lt;p&gt;如果你只是要落地，而不是寫論文，選型順序可以簡單一點：&lt;/p&gt;
&lt;h3 id=&#34;場景一中文知識庫&#34;&gt;場景一：中文知識庫
&lt;/h3&gt;&lt;p&gt;優先測試這幾組：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果預算緊，先從小模型開始；如果更重視召回品質，再往更大的模型試。&lt;/p&gt;
&lt;h3 id=&#34;場景二中英混合知識庫&#34;&gt;場景二：中英混合知識庫
&lt;/h3&gt;&lt;p&gt;優先測試：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果不想自部署，OpenAI 會更直接；如果要自己託管，E5 更常見。&lt;/p&gt;
&lt;h3 id=&#34;場景三中文為主但未來可能擴到多語言&#34;&gt;場景三：中文為主，但未來可能擴到多語言
&lt;/h3&gt;&lt;p&gt;優先測試：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類場景最怕的是一開始只看中文，後面又要重做整個向量庫。&lt;/p&gt;
&lt;h2 id=&#34;六最後怎麼選關鍵不是榜單第一&#34;&gt;六、最後怎麼選，關鍵不是「榜單第一」
&lt;/h2&gt;&lt;p&gt;向量模型選型裡，最容易踩的坑就是只看公開分數，然後直接上線。&lt;/p&gt;
&lt;p&gt;更可靠的方式通常是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先挑 2 到 4 個候選模型&lt;/li&gt;
&lt;li&gt;用自己的真實資料做 embedding&lt;/li&gt;
&lt;li&gt;跑一輪召回評測&lt;/li&gt;
&lt;li&gt;再結合成本、延遲、部署方式做決定&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;因為真正決定結果的，往往不是模型名本身，而是模型和你的語料、分塊策略、查詢形式到底合不合。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;如果只想記住一版實用結論，可以這樣：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文優先：先看 &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;成本優先：先看 &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;、&lt;code&gt;gte-base-zh&lt;/code&gt;、&lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;多語言優先：先看 &lt;code&gt;multilingual-e5-base&lt;/code&gt;、&lt;code&gt;multilingual-e5-large&lt;/code&gt;、&lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;直接上 API：先看 &lt;code&gt;text-embedding-3-small&lt;/code&gt;、&lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想兼顧中文和後續擴展：先看 &lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;沒有一個模型適合所有專案，但大多數專案都可以先從這幾組裡很快篩出第一批候選。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>什麼是圖像向量化：從像素圖到可搜尋可分析的向量表示</title>
        <link>https://knightli.com/zh-tw/2026/04/23/what-is-image-vectorization-vector-search-vision-workflow/</link>
        <pubDate>Thu, 23 Apr 2026 15:08:19 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/what-is-image-vectorization-vector-search-vision-workflow/</guid>
        <description>&lt;p&gt;圖片一直很多，但圖片真正能被系統「理解」和「利用」，並不是一件自然而然就會發生的事。&lt;/p&gt;
&lt;p&gt;對人來說，一張圖裡有沒有貓、是不是同一件商品、是不是某種異常缺陷，往往一眼就能看出來。可對系統來說，原始圖片首先只是像素排列。沒有額外處理時，它更像一堆顏色點，而不是一份可以直接拿來做檢索、分群、推薦和識別的資料。&lt;/p&gt;
&lt;p&gt;圖像向量化解決的就是這一步。它把原本以像素形式存在的圖片，轉換成一組可以被機器高效比較和計算的向量表示。很多「以圖搜圖」、相似圖片推薦、視覺檢索、圖像聚類和多模態理解，真正的底層都在這裡。&lt;/p&gt;
&lt;h2 id=&#34;一圖像向量化到底是什麼&#34;&gt;一、圖像向量化到底是什麼
&lt;/h2&gt;&lt;p&gt;先把概念壓成一句話：&lt;/p&gt;
&lt;p&gt;圖像向量化，就是把圖片轉成一串能表示圖像特徵的數字向量。&lt;/p&gt;
&lt;p&gt;這個向量通常不是給人看的，而是給模型和檢索系統用的。它的價值在於，圖片從此不再只是檔案，而變成一種可以參與計算、排序和相似度比較的資料物件。&lt;/p&gt;
&lt;p&gt;例如一張貓的照片，原始檔案裡保存的是像素資訊；做完向量化之後，系統拿到的是一個固定長度的數值向量。這個向量不會直接寫著「這是貓」，但它會把輪廓、紋理、顏色分布、局部結構、語義資訊等特徵編碼進去。這樣系統就能拿它去和其他圖片做距離計算，判斷哪些更相似，哪些差得更遠。&lt;/p&gt;
&lt;p&gt;所以圖像向量化真正改變的，不是圖片本身，而是圖片被系統處理的方式。&lt;/p&gt;
&lt;h2 id=&#34;二為什麼不能直接用原始像素做檢索和分析&#34;&gt;二、為什麼不能直接用原始像素做檢索和分析
&lt;/h2&gt;&lt;p&gt;原始像素當然也能算，但效果和效率都很受限。&lt;/p&gt;
&lt;p&gt;問題主要有三類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料維度高，直接比較成本很高&lt;/li&gt;
&lt;li&gt;像素接近不等於語義接近&lt;/li&gt;
&lt;li&gt;光線、裁切、背景、解析度變化都可能干擾結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最典型的例子就是商品圖檢索。兩張商品圖片就算拍攝角度不同、背景不同、尺寸不同，人看時還是知道它們是同一類商品；但如果只是逐像素比對，系統很容易把它們判成完全不同的圖片。&lt;/p&gt;
&lt;p&gt;向量化的意義，就是把「像不像」從像素層面的比較，提升到更接近語義和特徵層面的比較。&lt;/p&gt;
&lt;h2 id=&#34;三圖像向量化一般是怎麼做出來的&#34;&gt;三、圖像向量化一般是怎麼做出來的
&lt;/h2&gt;&lt;p&gt;從流程上看，圖像向量化通常不是一步完成，而是一條比較標準的處理鏈：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先做前處理&lt;/li&gt;
&lt;li&gt;再提取圖像特徵&lt;/li&gt;
&lt;li&gt;把特徵壓成固定長度向量&lt;/li&gt;
&lt;li&gt;存進向量庫或檢索系統&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中每一步都會影響最後效果。&lt;/p&gt;
&lt;h3 id=&#34;1-前處理&#34;&gt;1. 前處理
&lt;/h3&gt;&lt;p&gt;前處理一般包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;縮放圖片尺寸&lt;/li&gt;
&lt;li&gt;歸一化輸入&lt;/li&gt;
&lt;li&gt;去除部分噪聲&lt;/li&gt;
&lt;li&gt;統一顏色或輸入格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的目的不是「讓畫面更好看」，而是讓後面的模型輸入更穩定。&lt;/p&gt;
&lt;h3 id=&#34;2-特徵提取&#34;&gt;2. 特徵提取
&lt;/h3&gt;&lt;p&gt;這裡是圖像向量化的核心。&lt;/p&gt;
&lt;p&gt;早期方法更依賴人工設計特徵，例如 &lt;code&gt;SIFT&lt;/code&gt;、&lt;code&gt;SURF&lt;/code&gt;、&lt;code&gt;HOG&lt;/code&gt; 這一類演算法，擅長提取邊緣、角點、局部結構等低層特徵。現在更常見的是用深度學習模型來做這件事，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ResNet&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;VGG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Inception&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ViT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLIP&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些模型會把圖片編碼成更高層、更抽象的視覺特徵。和傳統特徵工程相比，它們更擅長表達語義，也更適合做相似度檢索、多模態理解和大規模聚類。&lt;/p&gt;
&lt;h3 id=&#34;3-向量生成&#34;&gt;3. 向量生成
&lt;/h3&gt;&lt;p&gt;特徵提取之後，系統通常會把中間表示進一步壓縮成固定長度的向量，例如 &lt;code&gt;512&lt;/code&gt; 維、&lt;code&gt;768&lt;/code&gt; 維、&lt;code&gt;1024&lt;/code&gt; 維。&lt;/p&gt;
&lt;p&gt;這一步的關鍵，不是維度越高越好，而是要在表達能力、儲存成本和檢索速度之間找到平衡。&lt;/p&gt;
&lt;h3 id=&#34;4-儲存與檢索&#34;&gt;4. 儲存與檢索
&lt;/h3&gt;&lt;p&gt;向量生成之後，通常不會再像普通圖片檔那樣管理，而是會進入支援向量檢索的系統，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Faiss&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Milvus&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;具備向量能力的搜尋系統&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這時圖片就可以參與近似最近鄰檢索、聚類分析和相似度排序。&lt;/p&gt;
&lt;h2 id=&#34;四技術路線是怎麼演進的&#34;&gt;四、技術路線是怎麼演進的
&lt;/h2&gt;&lt;p&gt;圖像向量化不是這兩年才有，只是近幾年效果和應用場景擴展得更快。&lt;/p&gt;
&lt;p&gt;大致可以分成三段來看：&lt;/p&gt;
&lt;h3 id=&#34;1-傳統特徵工程階段&#34;&gt;1. 傳統特徵工程階段
&lt;/h3&gt;&lt;p&gt;這個階段的重點是人工定義圖像特徵，例如邊緣、紋理、角點和局部描述子。優點是成熟、可解釋，缺點是對複雜場景和語義理解能力有限。&lt;/p&gt;
&lt;h3 id=&#34;2-cnn-主導階段&#34;&gt;2. CNN 主導階段
&lt;/h3&gt;&lt;p&gt;卷積神經網路讓圖像向量化進入自動學習特徵的階段。和手工特徵相比，它能學到更複雜、更穩定的視覺表示，適合分類、識別和相似檢索。&lt;/p&gt;
&lt;h3 id=&#34;3-transformer-和多模態階段&#34;&gt;3. Transformer 和多模態階段
&lt;/h3&gt;&lt;p&gt;這一步把圖像向量化從「看圖特徵」進一步推向「圖文語義對齊」。像 &lt;code&gt;ViT&lt;/code&gt; 和 &lt;code&gt;CLIP&lt;/code&gt; 這類模型，已經不只是拿來識別圖片本身，而是在讓圖片進入更大的多模態系統裡，和文字、標籤、知識庫一起工作。&lt;/p&gt;
&lt;p&gt;這也是為什麼現在很多圖像檢索系統，不只是「以圖搜圖」，而是已經能做「文本搜圖」或圖文混合檢索。&lt;/p&gt;
&lt;h2 id=&#34;五它最常見的應用場景有哪些&#34;&gt;五、它最常見的應用場景有哪些
&lt;/h2&gt;&lt;p&gt;圖像向量化並不是只服務於學術研究，它在業務裡非常實用。&lt;/p&gt;
&lt;h3 id=&#34;1-相似圖片檢索&#34;&gt;1. 相似圖片檢索
&lt;/h3&gt;&lt;p&gt;這是最直觀的場景。&lt;/p&gt;
&lt;p&gt;系統把圖片轉成向量之後，就可以做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以圖搜圖&lt;/li&gt;
&lt;li&gt;重複圖片識別&lt;/li&gt;
&lt;li&gt;相似商品匹配&lt;/li&gt;
&lt;li&gt;視覺去重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;電商、內容平台、素材管理系統裡，這類需求都很常見。&lt;/p&gt;
&lt;h3 id=&#34;2-推薦系統&#34;&gt;2. 推薦系統
&lt;/h3&gt;&lt;p&gt;很多推薦問題，本質上都是「這張圖和使用者剛看過的內容像不像」。&lt;/p&gt;
&lt;p&gt;向量化之後，系統可以把圖片內容本身也納入推薦邏輯，而不是只依賴文字標籤或人工分類。對商品推薦、內容推薦和廣告匹配來說，這一步很有價值。&lt;/p&gt;
&lt;h3 id=&#34;3-圖像聚類和自動分類&#34;&gt;3. 圖像聚類和自動分類
&lt;/h3&gt;&lt;p&gt;當圖片規模很大時，人工整理會非常慢。&lt;/p&gt;
&lt;p&gt;向量化之後，可以先按相似度把圖片自動聚成若干組，再做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;圖片歸檔&lt;/li&gt;
&lt;li&gt;場景分組&lt;/li&gt;
&lt;li&gt;素材整理&lt;/li&gt;
&lt;li&gt;自動標籤建議&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這在製造、醫療、教育和媒體內容管理裡都很常見。&lt;/p&gt;
&lt;h3 id=&#34;4-異常檢測和質檢&#34;&gt;4. 異常檢測和質檢
&lt;/h3&gt;&lt;p&gt;如果「正常樣本」已經能被穩定向量化，那麼偏離正常分布的圖片就更容易被識別出來。&lt;/p&gt;
&lt;p&gt;典型場景包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工業缺陷檢測&lt;/li&gt;
&lt;li&gt;監控異常識別&lt;/li&gt;
&lt;li&gt;票據或影像異常篩查&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡向量化的作用，不是直接給出最終判斷，而是先把圖像變成適合比較和建模的輸入。&lt;/p&gt;
&lt;h3 id=&#34;5-多模態檢索和圖文理解&#34;&gt;5. 多模態檢索和圖文理解
&lt;/h3&gt;&lt;p&gt;這是現在更值得關注的一塊。&lt;/p&gt;
&lt;p&gt;當圖像和文字都能被編碼到相近的向量空間裡，系統就可以做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文本搜圖&lt;/li&gt;
&lt;li&gt;圖文對齊&lt;/li&gt;
&lt;li&gt;圖像內容檢索&lt;/li&gt;
&lt;li&gt;多模態知識檢索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類能力和現在很多生成式 AI、視覺問答、企業知識庫增強檢索都能接起來。&lt;/p&gt;
&lt;h2 id=&#34;六企業落地時真正要面對哪些問題&#34;&gt;六、企業落地時真正要面對哪些問題
&lt;/h2&gt;&lt;p&gt;圖像向量化聽起來很順，但真正落地時，難點通常不在「知不知道這個概念」，而在下面這些細節：&lt;/p&gt;
&lt;h3 id=&#34;1-向量維度和成本怎麼平衡&#34;&gt;1. 向量維度和成本怎麼平衡
&lt;/h3&gt;&lt;p&gt;維度太低，表達不夠；維度太高，儲存和檢索成本就會上升。這個問題沒有統一答案，必須結合資料規模、回應時間和準確率一起看。&lt;/p&gt;
&lt;h3 id=&#34;2-模型效果能不能跨場景複用&#34;&gt;2. 模型效果能不能跨場景複用
&lt;/h3&gt;&lt;p&gt;一個模型在公開資料集上表現不錯，不代表它在你的業務圖片上也一樣有效。商品圖、工業圖、醫學影像、監控截圖，這些分布差異很大，很多時候都要重新評估。&lt;/p&gt;
&lt;h3 id=&#34;3-檢索系統能不能跟上規模增長&#34;&gt;3. 檢索系統能不能跟上規模增長
&lt;/h3&gt;&lt;p&gt;當圖片量從幾萬變成幾百萬、幾千萬時，向量生成只是前半段，後面的索引、召回、更新策略和線上查詢能力，才是真正決定體驗的部分。&lt;/p&gt;
&lt;h3 id=&#34;4-圖像向量化不是業務閉環本身&#34;&gt;4. 圖像向量化不是業務閉環本身
&lt;/h3&gt;&lt;p&gt;這一點特別容易被忽略。&lt;/p&gt;
&lt;p&gt;向量化解決的是「把圖片變成可計算物件」的問題，但它不等於完整方案。後面你還需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;檢索邏輯&lt;/li&gt;
&lt;li&gt;標籤體系&lt;/li&gt;
&lt;li&gt;結果評估&lt;/li&gt;
&lt;li&gt;人工校驗流程&lt;/li&gt;
&lt;li&gt;和業務系統的連接方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些沒有接上，向量本身並不會自動產生價值。&lt;/p&gt;
&lt;h2 id=&#34;七怎麼看它的實際價值&#34;&gt;七、怎麼看它的實際價值
&lt;/h2&gt;&lt;p&gt;如果只看技術定義，圖像向量化像是一個底層術語；但從業務角度看，它的價值其實很具體：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讓圖片第一次具備可搜尋性&lt;/li&gt;
&lt;li&gt;讓相似度比較從像素層走向語義層&lt;/li&gt;
&lt;li&gt;讓圖像能接進推薦、檢索、聚類和識別鏈路&lt;/li&gt;
&lt;li&gt;讓視覺資料真正進入企業分析和自動化流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以把它理解成視覺資料進入 AI 系統的「標準化入口」。沒有這一步，很多圖片相關能力都只能停留在檔案管理層；有了這一步，圖片才開始變成能參與決策和自動化處理的資料資產。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;圖像向量化不是一個孤立的小技巧，而是現代視覺系統裡非常基礎的一層。&lt;/p&gt;
&lt;p&gt;它做的事並不神祕：把圖片從「像素集合」變成「可檢索、可比較、可分析的向量表示」。但就是這一步，決定了圖片能不能真正進入 AI、搜尋、推薦和多模態應用鏈路裡。&lt;/p&gt;
&lt;p&gt;如果只記一句話，可以先記住這個判斷：&lt;/p&gt;
&lt;p&gt;圖像向量化的本質，不是壓縮圖片，而是把圖片變成機器真正能用的資料表示。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI 名詞解釋：用白話講清楚 Agent、MCP、RAG 和 Token</title>
        <link>https://knightli.com/zh-tw/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</link>
        <pubDate>Thu, 23 Apr 2026 13:13:40 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</guid>
        <description>&lt;p&gt;剛開始接觸 AI，最容易讓人卻步的通常不是模型本身，而是討論裡那些一串一串的名詞。&lt;code&gt;Agent&lt;/code&gt;、&lt;code&gt;MCP&lt;/code&gt;、&lt;code&gt;RAG&lt;/code&gt;、&lt;code&gt;AIGC&lt;/code&gt;、&lt;code&gt;Token&lt;/code&gt; 看起來都很常見，但如果沒有人先用白話講一遍，很多人其實只是「看過」，不是真的懂。&lt;/p&gt;
&lt;p&gt;這篇就順著一組常見入門解釋的思路，把 10 個高頻 AI 名詞壓縮成一套更容易記住的意思。目標不是講得多學術，而是先幫你建立一個能跟上日常 AI 討論的基本框架。&lt;/p&gt;
&lt;h2 id=&#34;10-個常見-ai-名詞分別是什麼意思&#34;&gt;10 個常見 AI 名詞，分別是什麼意思
&lt;/h2&gt;&lt;h3 id=&#34;1-agent不只會聊天的執行型-ai&#34;&gt;1. Agent：不只會聊天的執行型 AI
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Agent&lt;/code&gt; 可以先理解成「會做事的 AI 助手」。&lt;/p&gt;
&lt;p&gt;一般聊天機器人比較像是你問一句、它答一句；&lt;code&gt;Agent&lt;/code&gt; 則更進一步，它會把任務拆開、安排步驟、調用工具，最後把結果交回來。比如你叫它整理資料、查資訊、生成文件，它不只是給建議，而是可能直接把這些動作串起來完成。&lt;/p&gt;
&lt;p&gt;所以 &lt;code&gt;Agent&lt;/code&gt; 的重點，不在「會不會說」，而在「能不能做」。&lt;/p&gt;
&lt;h3 id=&#34;2-openclaw駐留在電腦裡的-ai-助手&#34;&gt;2. OpenClaw：駐留在電腦裡的 AI 助手
&lt;/h3&gt;&lt;p&gt;這裡的 &lt;code&gt;OpenClaw&lt;/code&gt; 被形容成一種住在你電腦裡的 AI 助手。&lt;/p&gt;
&lt;p&gt;你可以把這類工具理解成更貼近桌面操作的 AI 幫手。它不只是接收文字，也可能直接觀察介面、調用本地工具、按流程執行任務。和一般網頁聊天相比，這類工具更強調實際操作能力。&lt;/p&gt;
&lt;p&gt;如果說 &lt;code&gt;Agent&lt;/code&gt; 是抽象層面的執行型 AI，那這種桌面型助手就是它在個人電腦上的一種具體落地形式。&lt;/p&gt;
&lt;h3 id=&#34;3-skills替-agent-裝上的能力包&#34;&gt;3. Skills：替 Agent 裝上的能力包
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Skills&lt;/code&gt; 可以理解成 &lt;code&gt;Agent&lt;/code&gt; 的功能模組或操作說明。&lt;/p&gt;
&lt;p&gt;同一個 &lt;code&gt;Agent&lt;/code&gt;，裝上不同的 &lt;code&gt;Skills&lt;/code&gt;，就會展現出不同的專長。有些偏文案，有些偏資料整理，有些偏程式處理。它們有點像手機裡的 App，也有點像一套套可重複利用的工作流程。&lt;/p&gt;
&lt;p&gt;所以很多時候，不是模型突然變聰明了，而是它背後多了一組更明確的規則、工具和步驟。&lt;/p&gt;
&lt;h3 id=&#34;4-mcpai-連接外部工具的統一方式&#34;&gt;4. MCP：AI 連接外部工具的統一方式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; 全稱是 &lt;code&gt;Model Context Protocol&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果用生活化的比喻，它有點像 AI 世界裡的 &lt;code&gt;Type-C&lt;/code&gt; 介面。以前模型要接不同工具，往往得一套一套分開整合；有了統一協議之後，接入方式就會更標準，也更容易重複使用。&lt;/p&gt;
&lt;p&gt;對大多數使用者來說，最值得記住的一點是：&lt;code&gt;MCP&lt;/code&gt; 解決的不是模型會不會回答，而是模型怎麼安全、穩定地接上外部工具和資源。&lt;/p&gt;
&lt;h3 id=&#34;5-抽卡ai-生成結果本來就有隨機性&#34;&gt;5. 抽卡：AI 生成結果本來就有隨機性
&lt;/h3&gt;&lt;p&gt;「抽卡」這個說法常見於 &lt;code&gt;AI&lt;/code&gt; 繪圖、影片生成和內容創作場景。&lt;/p&gt;
&lt;p&gt;意思很簡單。就算是同樣的提示詞、同樣的大方向，每次生成出來的結果也可能不同。有時候效果很好，有時候明顯翻車，所以很多人會把反覆生成這件事形容成像遊戲裡抽卡。&lt;/p&gt;
&lt;p&gt;它真正提醒我們的是：AI 生成不是固定公式，而是一個帶有機率波動的過程。&lt;/p&gt;
&lt;h3 id=&#34;6-api應用和模型之間的連接方式&#34;&gt;6. API：應用和模型之間的連接方式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;API&lt;/code&gt; 全稱是 &lt;code&gt;Application Programming Interface&lt;/code&gt;，也就是應用程式介面。&lt;/p&gt;
&lt;p&gt;你可以把它理解成程式之間溝通的標準入口。當你在自己的應用、腳本或編輯器裡呼叫模型服務時，本質上就是透過 &lt;code&gt;API&lt;/code&gt; 發送請求，再拿回結果。&lt;/p&gt;
&lt;p&gt;如果把模型服務比作一家餐廳，那麼：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;菜單像 &lt;code&gt;API&lt;/code&gt; 文件&lt;/li&gt;
&lt;li&gt;點餐像發起 &lt;code&gt;API&lt;/code&gt; 請求&lt;/li&gt;
&lt;li&gt;廚房出餐像模型回傳結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多工具表面看起來不一樣，但底層其實都在呼叫某種 &lt;code&gt;API&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;7-多模態ai-不只會處理文字&#34;&gt;7. 多模態：AI 不只會處理文字
&lt;/h3&gt;&lt;p&gt;「多模態」說的是 AI 不再只會讀寫文字，而是可以同時處理多種形式的資訊。&lt;/p&gt;
&lt;p&gt;例如它可以看圖、聽語音、理解影片、生成圖片，甚至支援即時語音和視訊互動。和早期只能處理文字的模型相比，多模態模型更接近同時具備「看、聽、說、寫」的能力。&lt;/p&gt;
&lt;p&gt;這也是為什麼現在很多 AI 產品，已經不再只圍繞一個文字輸入框來設計。&lt;/p&gt;
&lt;h3 id=&#34;8-rag先找資料再組織答案&#34;&gt;8. RAG：先找資料，再組織答案
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; 是 &lt;code&gt;Retrieval-Augmented Generation&lt;/code&gt;，通常譯作檢索增強生成。&lt;/p&gt;
&lt;p&gt;它適合用來解決一個很實際的問題：模型的訓練資料有時間邊界，也不會自動知道你公司最新的文件、客服紀錄或業務規則。&lt;code&gt;RAG&lt;/code&gt; 的做法是先從指定資料裡找出相關內容，再根據這些內容生成回答。&lt;/p&gt;
&lt;p&gt;它的價值通常體現在三點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;答案更容易貼近真實資料&lt;/li&gt;
&lt;li&gt;可以追溯答案依據來自哪裡&lt;/li&gt;
&lt;li&gt;新文件加入後，知識也能快速更新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多企業知識庫、AI 客服和內部問答系統，底層都會用到 &lt;code&gt;RAG&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;9-aigcai-生成內容的總稱&#34;&gt;9. AIGC：AI 生成內容的總稱
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AIGC&lt;/code&gt; 是 &lt;code&gt;AI Generated Content&lt;/code&gt; 的縮寫。&lt;/p&gt;
&lt;p&gt;它不是某一個單獨工具，而是一個總稱，泛指 AI 生成出來的內容，包括文字、圖片、音訊、影片等各種形式。你看到的 AI 寫稿、AI 製圖、AI 做短影片、AI 配音，都可以放進 &lt;code&gt;AIGC&lt;/code&gt; 這個大框架裡理解。&lt;/p&gt;
&lt;p&gt;這個詞真正重要的地方在於，它描述的是一種內容生產方式，而不是某一個具體模型。&lt;/p&gt;
&lt;h3 id=&#34;10-token模型處理內容時的計量單位&#34;&gt;10. Token：模型處理內容時的計量單位
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Token&lt;/code&gt; 可以理解成模型處理文字時使用的基本計量單位。&lt;/p&gt;
&lt;p&gt;它不完全等於「一個字」或「一個單詞」，但在實際使用時，你可以先把它當成模型計算和計費的通用單位。你的輸入會消耗 &lt;code&gt;Token&lt;/code&gt;，模型輸出的內容會消耗 &lt;code&gt;Token&lt;/code&gt;，上下文裡保留的歷史內容同樣也會占用 &lt;code&gt;Token&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;所以為什麼很多模型服務一直強調上下文長度、成本控制和提示詞壓縮，本質上都和 &lt;code&gt;Token&lt;/code&gt; 有關。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>8G 顯存跑 llama.cpp 怎麼調：32K 更穩，64K 要開 KV Cache 量化</title>
        <link>https://knightli.com/zh-tw/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</link>
        <pubDate>Thu, 23 Apr 2026 12:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</guid>
        <description>&lt;p&gt;&lt;code&gt;8G&lt;/code&gt; 顯存到底還能不能把本地大模型跑順，尤其是在長上下文場景下還能不能保住速度，這是很多人在折騰 &lt;code&gt;llama.cpp&lt;/code&gt; 時都會遇到的問題。&lt;/p&gt;
&lt;p&gt;核心結論可以先記住三條：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對 &lt;code&gt;8G&lt;/code&gt; 顯存來說，&lt;code&gt;32K&lt;/code&gt; 上下文通常是更穩的平衡點&lt;/li&gt;
&lt;li&gt;如果一定要跑 &lt;code&gt;64K&lt;/code&gt;，&lt;code&gt;KV Cache&lt;/code&gt; 量化基本是必選項&lt;/li&gt;
&lt;li&gt;在全顯卡運行場景裡，盲目拉高 &lt;code&gt;CPU&lt;/code&gt; 執行緒數，反而可能讓速度明顯下降&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一先解釋清楚32k64k-和-kv-cache-是什麼&#34;&gt;一、先解釋清楚：32K、64K 和 KV Cache 是什麼
&lt;/h2&gt;&lt;p&gt;很多人第一次看這類調優文章，最容易卡住的就是這三個詞。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; 和 &lt;code&gt;64K&lt;/code&gt; 說的是上下文長度，也就是模型一次最多能處理多少 &lt;code&gt;token&lt;/code&gt;。這裡的 &lt;code&gt;K&lt;/code&gt; 就是千，&lt;code&gt;32K&lt;/code&gt; 大約是 &lt;code&gt;32000 token&lt;/code&gt;，&lt;code&gt;64K&lt;/code&gt; 大約是 &lt;code&gt;64000 token&lt;/code&gt;。上下文越長，模型一次能看到的歷史內容越多，適合長文件問答、長對話和多輪分析。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;KV Cache&lt;/code&gt; 則是模型為了加速連續生成而保留的一份中間結果快取。你可以把它理解成：模型已經讀過、算過的一部分內容，不會每次都從頭重算，而是把關鍵結果先存起來，後面繼續接著用。這裡的 &lt;code&gt;K&lt;/code&gt; 和 &lt;code&gt;V&lt;/code&gt;，來自 Transformer 裡的 &lt;code&gt;Key&lt;/code&gt; 和 &lt;code&gt;Value&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;為什麼這三個詞總是一起出現？因為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt;、&lt;code&gt;64K&lt;/code&gt; 決定你想讓模型一次記住多長內容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KV Cache&lt;/code&gt; 決定為了維持這段記憶，要額外占多少顯存&lt;/li&gt;
&lt;li&gt;上下文越長，&lt;code&gt;KV Cache&lt;/code&gt; 通常越大，顯存壓力也越高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以很多長上下文變慢的問題，本質上並不是模型「不會算」，而是快取太大，把顯存擠到了臨界點。&lt;/p&gt;
&lt;h2 id=&#34;二為什麼-32k-和-64k-的速度會差這麼多&#34;&gt;二、為什麼 32K 和 64K 的速度會差這麼多
&lt;/h2&gt;&lt;p&gt;這裡用《三體》大約 &lt;code&gt;3&lt;/code&gt; 萬字的文本做壓力測試，對比 &lt;code&gt;32K&lt;/code&gt; 和 &lt;code&gt;64K&lt;/code&gt; 兩種上下文設定。結果很誇張：在文件長度接近的情況下，&lt;code&gt;64K&lt;/code&gt; 模式的速度顯著下降，總耗時也明顯拉長。&lt;/p&gt;
&lt;p&gt;問題不在模型突然變笨，而在顯存邊界被撞到了。&lt;/p&gt;
&lt;p&gt;當 &lt;code&gt;32K&lt;/code&gt; 模式下，模型權重加快取還能基本塞進 &lt;code&gt;8G&lt;/code&gt; 顯存裡，資料大多走顯卡顯存帶寬，速度還能維持在比較可用的區間。但一旦切到 &lt;code&gt;64K&lt;/code&gt;，快取體積繼續上漲，總占用逼近甚至超過顯存上限，系統就會把部分資料擠到記憶體裡。&lt;/p&gt;
&lt;p&gt;這時候真正掉下去的，不是算力，而是帶寬。&lt;/p&gt;
&lt;p&gt;也就是說，很多人看到的是「上下文翻倍後速度暴跌」，本質上其實是資料路徑從顯存掉到了共享記憶體或系統記憶體，推理鏈路不再跑在高速通道上。&lt;/p&gt;
&lt;h2 id=&#34;三64k-還能不能跑關鍵在-kv-cache-量化&#34;&gt;三、64K 還能不能跑，關鍵在 KV Cache 量化
&lt;/h2&gt;&lt;p&gt;第二個很關鍵的結論，是 &lt;code&gt;KV Cache&lt;/code&gt; 量化對 &lt;code&gt;8G&lt;/code&gt; 顯存使用者特別重要。&lt;/p&gt;
&lt;p&gt;如果不改變模型本身，只針對快取做量化，長上下文下最直接的收益就是把快取占用壓縮下來，讓原本已經溢出的那部分重新回到顯存裡。這樣一來，&lt;code&gt;64K&lt;/code&gt; 模式雖然依然比 &lt;code&gt;32K&lt;/code&gt; 更吃資源，但至少不會直接跌進最慢的區間。&lt;/p&gt;
&lt;p&gt;換句話說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; 更像是 &lt;code&gt;8G&lt;/code&gt; 顯存的預設推薦區間&lt;/li&gt;
&lt;li&gt;&lt;code&gt;64K&lt;/code&gt; 不是完全不能跑&lt;/li&gt;
&lt;li&gt;但如果不上快取量化，效能很容易從「能用」直接掉到「很難用」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目標是盡量穩定地跑長上下文，那優先順序通常應該是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先確認顯存是否已經逼近上限&lt;/li&gt;
&lt;li&gt;再決定是否開啟 &lt;code&gt;KV Cache&lt;/code&gt; 量化&lt;/li&gt;
&lt;li&gt;最後才去繼續嘗試更激進的吞吐量參數&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;四gpu-占用不高不代表顯卡沒幹活&#34;&gt;四、GPU 占用不高，不代表顯卡沒幹活
&lt;/h2&gt;&lt;p&gt;這是一個很容易打破直覺的點。&lt;/p&gt;
&lt;p&gt;很多人看到工作管理員裡 &lt;code&gt;GPU&lt;/code&gt; 使用率只有二三十，就會懷疑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是不是參數沒設對&lt;/li&gt;
&lt;li&gt;是不是模型沒真正跑到顯卡上&lt;/li&gt;
&lt;li&gt;是不是顯卡根本沒吃滿&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但這組測試給出的判斷是，&lt;code&gt;llama.cpp&lt;/code&gt; 這類推理很多時候首先卡的不是核心算力，而是顯存讀寫速度。&lt;/p&gt;
&lt;p&gt;也就是說，顯卡核心可能很快就把一批計算做完了，但後面還得等下一批權重和快取資料搬過來。於是你看到的現象就會變成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心占用不算高&lt;/li&gt;
&lt;li&gt;但整體速度還是上不去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是顯卡在偷懶，而是資料通路太窄。&lt;/p&gt;
&lt;p&gt;所以看本地大模型速度時，不能只盯著 &lt;code&gt;GPU Usage&lt;/code&gt;。顯存容量、顯存帶寬、快取是否溢出，往往更影響最終體驗。&lt;/p&gt;
&lt;h2 id=&#34;五調大吞吐量參數確實可能再快一截&#34;&gt;五、調大吞吐量參數，確實可能再快一截
&lt;/h2&gt;&lt;p&gt;這裡還做了一個思路很清晰的測試：既然顯卡核心並沒有完全忙滿，那能不能透過調大吞吐量相關參數，讓顯卡一次處理更多資料，把並行能力進一步壓出來。&lt;/p&gt;
&lt;p&gt;測試結果表明，這種做法確實有機會把速度再往上拉一段。&lt;/p&gt;
&lt;p&gt;但這裡也有一個前提：顯存還得扛得住。&lt;/p&gt;
&lt;p&gt;因為吞吐量相關參數調大之後，往往會帶來額外顯存占用。如果你本來就在 &lt;code&gt;64K&lt;/code&gt;、高快取、顯存見底的狀態下繼續往上推，就很容易出現兩種情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接崩潰&lt;/li&gt;
&lt;li&gt;沒崩，但被迫進入更慢的共享記憶體模式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更穩妥的順序通常不是「先把參數拉滿」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先守住顯存邊界&lt;/li&gt;
&lt;li&gt;再考慮吞吐量優化&lt;/li&gt;
&lt;li&gt;每調一步都重新看速度和穩定性&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;六cpu-執行緒不是越多越好&#34;&gt;六、CPU 執行緒不是越多越好
&lt;/h2&gt;&lt;p&gt;這也是整篇內容裡最值得記住的坑點之一。&lt;/p&gt;
&lt;p&gt;很多人做本地推理調優時，容易下意識覺得執行緒越多越快，既然機器有那麼多執行緒，不用滿就像浪費。但實測給出的結果恰恰相反：在模型已經主要跑在顯卡上的情況下，強行把 &lt;code&gt;CPU&lt;/code&gt; 執行緒拉高，效能反而會明顯變差。&lt;/p&gt;
&lt;p&gt;原因不複雜。&lt;/p&gt;
&lt;p&gt;在全顯卡運行時，&lt;code&gt;CPU&lt;/code&gt; 更像是調度者和預處理協作者，而不是主力計算單元。這時候如果開太多執行緒，CPU 端的執行緒競爭、調度切換和上下文切換開銷都會變重，最終把本來應該更流暢的資料流打亂。&lt;/p&gt;
&lt;p&gt;結果就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CPU&lt;/code&gt; 更忙了&lt;/li&gt;
&lt;li&gt;但整體速度變慢了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以在這種場景下，預設設定或者較低執行緒數，往往比一味拉滿更靠譜。&lt;/p&gt;
&lt;h2 id=&#34;七對-8g-顯存使用者更實用的一套思路&#34;&gt;七、對 8G 顯存使用者更實用的一套思路
&lt;/h2&gt;&lt;p&gt;如果把上面的結論壓成一套更容易執行的思路，大概可以整理成這樣：&lt;/p&gt;
&lt;h3 id=&#34;1-先把-32k-當成預設目標&#34;&gt;1. 先把 32K 當成預設目標
&lt;/h3&gt;&lt;p&gt;如果你用的是 &lt;code&gt;8G&lt;/code&gt; 顯存顯卡，先別急著追 &lt;code&gt;64K&lt;/code&gt;。&lt;code&gt;32K&lt;/code&gt; 往往是速度、穩定性和顯存占用之間更現實的平衡點。&lt;/p&gt;
&lt;h3 id=&#34;2-想上-64k先處理快取問題&#34;&gt;2. 想上 64K，先處理快取問題
&lt;/h3&gt;&lt;p&gt;不要先想「還能不能再榨一點速度」，而是先確認 &lt;code&gt;KV Cache&lt;/code&gt; 有沒有量化、顯存是不是已經壓線。&lt;/p&gt;
&lt;h3 id=&#34;3-不要用-gpu-占用率判斷一切&#34;&gt;3. 不要用 GPU 占用率判斷一切
&lt;/h3&gt;&lt;p&gt;低占用不一定代表設定錯了，也可能只是顯存帶寬在拖後腿。&lt;/p&gt;
&lt;h3 id=&#34;4-吞吐量優化可以做但別越過顯存邊界&#34;&gt;4. 吞吐量優化可以做，但別越過顯存邊界
&lt;/h3&gt;&lt;p&gt;這類參數確實能帶來收益，但前提是顯存還有餘量。&lt;/p&gt;
&lt;h3 id=&#34;5-cpu-執行緒先保守再逐步測試&#34;&gt;5. CPU 執行緒先保守，再逐步測試
&lt;/h3&gt;&lt;p&gt;如果模型已經基本跑在顯卡上，CPU 執行緒並不是越高越好。先用預設值或低執行緒值測試，再看是否值得繼續調整。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;這組內容最有價值的地方，不只是給出幾個測試數字，而是把一個經常被忽略的事實講清楚了：&lt;/p&gt;
&lt;p&gt;本地大模型調優，很多時候拼的不是「有沒有把所有參數開到最大」，而是你有沒有搞清楚瓶頸到底在算力、顯存容量、顯存帶寬，還是在 &lt;code&gt;CPU&lt;/code&gt; 調度。&lt;/p&gt;
&lt;p&gt;對 &lt;code&gt;8G&lt;/code&gt; 顯存使用者來說，真正更穩的思路通常不是硬衝最長上下文，而是先守住顯存邊界，再決定要不要繼續往上加。&lt;/p&gt;
&lt;p&gt;如果只記一句話，那就是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; 往往是 &lt;code&gt;8G&lt;/code&gt; 顯存更穩的工作區間；&lt;code&gt;64K&lt;/code&gt; 不是不能跑，但前提是你已經把 &lt;code&gt;KV Cache&lt;/code&gt; 和顯存占用管住了。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 環境配置四件套：CLAUDE.md、Rules、Memory、Hooks 一次講清</title>
        <link>https://knightli.com/zh-tw/2026/04/23/claude-code-claude-md-rules-memory-hooks-guide/</link>
        <pubDate>Thu, 23 Apr 2026 10:43:40 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/claude-code-claude-md-rules-memory-hooks-guide/</guid>
        <description>&lt;p&gt;如果你用了 &lt;code&gt;Claude Code&lt;/code&gt; 一段時間，很快就會發現一件事：模型本身當然重要，但你給它什麼環境、什麼邊界、什麼規則，同樣重要。&lt;/p&gt;
&lt;p&gt;很多人一開始會把注意力放在「這次 prompt 要怎麼寫」，但真正把 &lt;code&gt;Claude Code&lt;/code&gt; 用成熟之後，你會更在意另一件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它知不知道你是誰&lt;/li&gt;
&lt;li&gt;它知不知道你怎麼工作&lt;/li&gt;
&lt;li&gt;它知不知道哪些規則不能違反&lt;/li&gt;
&lt;li&gt;它知不知道哪些事情必須先確認&lt;/li&gt;
&lt;li&gt;它能不能長期記住這些邊界&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; 之所以能變成一個成熟工具，不只是因為模型強，而是因為它有一整套機制，幫你把這些工作方式沉澱下來。核心上可以拆成四層：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這篇文章就把這四個部分一次講清楚。&lt;/p&gt;
&lt;h2 id=&#34;為什麼環境配置比單次提示詞更重要&#34;&gt;為什麼環境配置比單次提示詞更重要
&lt;/h2&gt;&lt;p&gt;你可以把 &lt;code&gt;Claude Code&lt;/code&gt; 想成你請來的一位助理。&lt;/p&gt;
&lt;p&gt;第一天上工時，你不會只跟他說一句「幫我做事」，而是會給他一份說明書，告訴他：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的身份是什麼&lt;/li&gt;
&lt;li&gt;你的溝通語氣偏好是什麼&lt;/li&gt;
&lt;li&gt;哪些操作必須先確認&lt;/li&gt;
&lt;li&gt;哪些錯誤以前犯過、之後不能再犯&lt;/li&gt;
&lt;li&gt;這個專案最重要的文件放在哪裡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這就是為什麼，長期來看，環境配置往往比單次 prompt 更重要。&lt;/p&gt;
&lt;p&gt;因為 prompt 解決的是「這一次要做什麼」，而環境配置解決的是「以後每次都要怎麼做」。&lt;/p&gt;
&lt;h2 id=&#34;第一層claudemd&#34;&gt;第一層：&lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;先從最基礎的開始。&lt;code&gt;CLAUDE.md&lt;/code&gt; 本質上就是一個文字檔。&lt;/p&gt;
&lt;p&gt;你可以在裡面寫給 Claude 的說明，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你是誰&lt;/li&gt;
&lt;li&gt;你在做什麼&lt;/li&gt;
&lt;li&gt;你的溝通偏好&lt;/li&gt;
&lt;li&gt;需要遵守的規則&lt;/li&gt;
&lt;li&gt;當前專案的特殊背景&lt;/li&gt;
&lt;li&gt;重要文件或目錄的位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每次 &lt;code&gt;Claude Code&lt;/code&gt; 啟動時，這份文件都會自動被送進上下文，所以模型一定會讀到。&lt;/p&gt;
&lt;p&gt;我通常把它叫做「默契檔」，因為它本質上就是你和模型之間長期協作的默契。&lt;/p&gt;
&lt;h3 id=&#34;claudemd-適合寫什麼&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 適合寫什麼
&lt;/h3&gt;&lt;p&gt;最適合寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的，大致有這幾類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;身份與工作背景&lt;/li&gt;
&lt;li&gt;溝通語氣與輸出偏好&lt;/li&gt;
&lt;li&gt;全域性的行為規則&lt;/li&gt;
&lt;li&gt;常會用到的重要專案背景&lt;/li&gt;
&lt;li&gt;常見錯誤與避免方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的時區&lt;/li&gt;
&lt;li&gt;你是否接受模型直接發送郵件或訊息&lt;/li&gt;
&lt;li&gt;哪些操作屬於不可逆行為&lt;/li&gt;
&lt;li&gt;你處理文件與檔案的習慣&lt;/li&gt;
&lt;li&gt;安全規範與敏感資訊邊界&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;一個很重要的原則盡量精簡&#34;&gt;一個很重要的原則：盡量精簡
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 有一個很重要的原則，就是一定要盡量精簡。&lt;/p&gt;
&lt;p&gt;原因很簡單：它每次都會被強制注入上下文。&lt;/p&gt;
&lt;p&gt;如果你寫得太長，就會佔掉大量上下文空間，導致真正重要的資訊被稀釋。模型不是不讀，而是注意力會分散，最後更容易漏掉你最在意的規則。&lt;/p&gt;
&lt;p&gt;官方建議通常是最好不要超過 &lt;code&gt;400&lt;/code&gt; 行。&lt;/p&gt;
&lt;p&gt;我自己的習慣會更保守一些，盡量控制在 &lt;code&gt;200&lt;/code&gt; 行以內。&lt;/p&gt;
&lt;h3 id=&#34;claudemd-的常見作用範圍&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 的常見作用範圍
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 實際上有不同的放置層級，對應不同的作用範圍。最常用的是兩個：&lt;/p&gt;
&lt;h4 id=&#34;1-user-level&#34;&gt;1. User Level
&lt;/h4&gt;&lt;p&gt;這是全域層級。&lt;/p&gt;
&lt;p&gt;它放在你的電腦環境裡，對你本機操作的所有專案都有效。&lt;/p&gt;
&lt;p&gt;這個位置適合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的身份資訊&lt;/li&gt;
&lt;li&gt;通用的溝通偏好&lt;/li&gt;
&lt;li&gt;你跨專案都適用的做事習慣&lt;/li&gt;
&lt;li&gt;全域性的安全規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，如果你的時區不是常見的預設值，而是曼谷時間，那這類資訊就很適合放在 &lt;code&gt;user level&lt;/code&gt;，這樣模型之後幫你安排時間時就不容易出錯。&lt;/p&gt;
&lt;h4 id=&#34;2-project-level&#34;&gt;2. Project Level
&lt;/h4&gt;&lt;p&gt;這是專案層級。&lt;/p&gt;
&lt;p&gt;它放在具體專案目錄下面，只對那個專案有效。&lt;/p&gt;
&lt;p&gt;這個位置適合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;專案專屬背景&lt;/li&gt;
&lt;li&gt;只在這個專案裡成立的規則&lt;/li&gt;
&lt;li&gt;專案目錄結構說明&lt;/li&gt;
&lt;li&gt;這個專案的重要文件入口&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;舉例來說，如果一個專案處理財務，另一個專案處理人事，那兩邊的背景和限制顯然不同，就不應該混在同一個全域說明裡。&lt;/p&gt;
&lt;h3 id=&#34;怎麼判斷該放哪一層&#34;&gt;怎麼判斷該放哪一層
&lt;/h3&gt;&lt;p&gt;判斷方式其實很簡單：&lt;/p&gt;
&lt;p&gt;你寫進去的東西，如果換到另一個專案裡還成立，那就放 &lt;code&gt;user level&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果一換專案就不成立，那就放 &lt;code&gt;project level&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;怎麼開始寫第一版&#34;&gt;怎麼開始寫第一版
&lt;/h3&gt;&lt;p&gt;最常見的起手方式有兩種：&lt;/p&gt;
&lt;h4 id=&#34;1-用-init&#34;&gt;1. 用 &lt;code&gt;/init&lt;/code&gt;
&lt;/h4&gt;&lt;p&gt;你可以直接在終端執行斜線命令 &lt;code&gt;/init&lt;/code&gt;，讓 Claude 掃描目前專案，自動幫你生成一份基礎版 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h4 id=&#34;2-讓-claude-幫你整理&#34;&gt;2. 讓 Claude 幫你整理
&lt;/h4&gt;&lt;p&gt;你也可以直接讓 Claude 去搜尋別人怎麼寫 &lt;code&gt;CLAUDE.md&lt;/code&gt;，再結合你的情況問你問題，最後幫你整理成適合你自己的版本。&lt;/p&gt;
&lt;p&gt;很多時候，這會比自己從零開始寫輕鬆得多。&lt;/p&gt;
&lt;h3 id=&#34;一個很實用的習慣&#34;&gt;一個很實用的習慣
&lt;/h3&gt;&lt;p&gt;在你和 Claude 長期協作的過程中，只要你發現某件事情屬於「以後一定要記住、不要再犯」的內容，就可以直接讓它寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;不過寫之前，還是要先判斷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這是全域規則&lt;/li&gt;
&lt;li&gt;還是目前專案規則&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要把所有東西都塞進同一個檔案裡。&lt;/p&gt;
&lt;h2 id=&#34;第二層rules&#34;&gt;第二層：&lt;code&gt;Rules&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;接下來是 &lt;code&gt;Rules&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它和 &lt;code&gt;CLAUDE.md&lt;/code&gt; 最大的差別，不是檔案形式，而是載入方式。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是無論你做什麼，模型都會讀到。&lt;/p&gt;
&lt;p&gt;而 &lt;code&gt;Rules&lt;/code&gt; 的優勢在於：&lt;strong&gt;可以條件載入。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也就是說，只有在某些路徑、某些檔案、某些工具或某些場景下，這條規則才會被讀到。&lt;/p&gt;
&lt;h3 id=&#34;為什麼條件載入很重要&#34;&gt;為什麼條件載入很重要
&lt;/h3&gt;&lt;p&gt;因為上下文空間永遠是稀缺資源。&lt;/p&gt;
&lt;p&gt;如果所有規則都無差別塞進上下文裡，就會發生兩件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型負擔變重&lt;/li&gt;
&lt;li&gt;真正關鍵的規則反而被淹沒&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;按需載入的價值就在這裡：讓模型在剛好的時候讀到剛好的資訊。&lt;/p&gt;
&lt;h3 id=&#34;什麼時候該把規則從-claudemd-挪到-rules&#34;&gt;什麼時候該把規則從 &lt;code&gt;CLAUDE.md&lt;/code&gt; 挪到 &lt;code&gt;Rules&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;通常有兩種情況：&lt;/p&gt;
&lt;h4 id=&#34;1-claudemd-太長了&#34;&gt;1. &lt;code&gt;CLAUDE.md&lt;/code&gt; 太長了
&lt;/h4&gt;&lt;p&gt;如果你的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 開始超過 &lt;code&gt;200&lt;/code&gt; 行，規則越來越多，重要內容被稀釋，那就該考慮把一部分規則拆出去。&lt;/p&gt;
&lt;h4 id=&#34;2-某些規則只和特定路徑相關&#34;&gt;2. 某些規則只和特定路徑相關
&lt;/h4&gt;&lt;p&gt;如果你已經很明確知道某些規則只在某些類型的檔案裡才有意義，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只對 Python 腳本有效&lt;/li&gt;
&lt;li&gt;只對某個 hooks 目錄有效&lt;/li&gt;
&lt;li&gt;只對某個子專案有效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那這些規則就更適合移到 &lt;code&gt;Rules&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;rules-最適合的場景&#34;&gt;&lt;code&gt;Rules&lt;/code&gt; 最適合的場景
&lt;/h3&gt;&lt;p&gt;最典型的就是「特定情境、特定路徑、特定檔案類型」。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只在處理 hook 檔案時觸發的規範&lt;/li&gt;
&lt;li&gt;只在某類腳本中要遵守的編碼規則&lt;/li&gt;
&lt;li&gt;只在某個目錄下適用的工作方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些內容如果繼續塞在 &lt;code&gt;CLAUDE.md&lt;/code&gt; 裡，其實不太划算。&lt;/p&gt;
&lt;h2 id=&#34;第三層memory&#34;&gt;第三層：&lt;code&gt;Memory&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;第三個層面是 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它和 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;Rules&lt;/code&gt; 一樣，也會進入模型上下文，但它最核心的差別是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 是你主動設定的。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Memory&lt;/code&gt; 更像是 Claude 在協作過程中，寫給自己的筆記。&lt;/p&gt;
&lt;h3 id=&#34;memory-記的是什麼&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 記的是什麼
&lt;/h3&gt;&lt;p&gt;當 Claude 判斷某件事值得記住，或需要短期保留，它就會把這些內容寫進 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;常見內容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你糾正過它的某種做法&lt;/li&gt;
&lt;li&gt;你最近新增的偏好&lt;/li&gt;
&lt;li&gt;當前專案的暫時狀態&lt;/li&gt;
&lt;li&gt;你今天沒做完、明天還要繼續的事&lt;/li&gt;
&lt;li&gt;你最近在跟哪些人合作&lt;/li&gt;
&lt;li&gt;某些最近才提到的個人資訊或上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;換句話說，&lt;code&gt;Memory&lt;/code&gt; 更像動態知識，而不是長期制度。&lt;/p&gt;
&lt;h3 id=&#34;memory-和前兩者的差別&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 和前兩者的差別
&lt;/h3&gt;&lt;p&gt;一個簡單的區分方式是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;Rules&lt;/code&gt;：偏長期、偏制度、偏明確規則&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;：偏暫時、偏動態、偏工作過程中的新理解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果某件事只是在最近幾天有效，或專案狀態持續在變，那它通常更適合放進 &lt;code&gt;Memory&lt;/code&gt;，而不是寫成長期規則。&lt;/p&gt;
&lt;h3 id=&#34;memory-也可以手動寫&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; 也可以手動寫
&lt;/h3&gt;&lt;p&gt;雖然 &lt;code&gt;Memory&lt;/code&gt; 有自動整理能力，但你也可以主動告訴 Claude：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;請記下來我明天要做什麼&lt;/li&gt;
&lt;li&gt;請記下來我要追蹤誰的狀態&lt;/li&gt;
&lt;li&gt;請記下來這個月某個專案的關鍵節點&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它也可以幫你寫進 &lt;code&gt;Memory&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你也可以透過斜線命令 &lt;code&gt;/memory&lt;/code&gt; 查看目前有哪些記憶，並手動編輯或刪除。&lt;/p&gt;
&lt;p&gt;不過很多時候，我自己不會太頻繁手動維護，因為 Claude 本身也會定期整理這些記憶，把已經過時的部分清掉。&lt;/p&gt;
&lt;h2 id=&#34;第四層hooks&#34;&gt;第四層：&lt;code&gt;Hooks&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;最後也是最重要、最進階的一層，就是 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;前面講到的 &lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;Rules&lt;/code&gt;、&lt;code&gt;Memory&lt;/code&gt;，本質上都還是自然語言說明。&lt;/p&gt;
&lt;p&gt;你寫了規則，模型通常會遵守，但它本質上仍然是在「理解之後再執行」。&lt;/p&gt;
&lt;p&gt;只要還停留在自然語言，就會存在幾個問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型偶爾會漏掉&lt;/li&gt;
&lt;li&gt;規則太多時，注意力會分散&lt;/li&gt;
&lt;li&gt;某些情境下，它會自己判斷這條規則不重要&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是你寫得不夠認真，而是自然語言規則本來就很難做到 &lt;code&gt;100%&lt;/code&gt; 強制。&lt;/p&gt;
&lt;h3 id=&#34;hooks-的本質是什麼&#34;&gt;&lt;code&gt;Hooks&lt;/code&gt; 的本質是什麼
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; 不再是自然語言說明，而是一段腳本。&lt;/p&gt;
&lt;p&gt;它是事件觸發的、程式層級的強制邏輯。&lt;/p&gt;
&lt;p&gt;只要某個事件發生，這段邏輯就一定會執行，不會被模型「自己判斷後略過」。&lt;/p&gt;
&lt;p&gt;這就是 &lt;code&gt;Hooks&lt;/code&gt; 最關鍵的價值：&lt;/p&gt;
&lt;p&gt;把「建議遵守」變成「必須執行」。&lt;/p&gt;
&lt;h3 id=&#34;什麼時候該上-hooks&#34;&gt;什麼時候該上 &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;當你發現某條規則已經寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt; 或 &lt;code&gt;Rules&lt;/code&gt;，但 Claude 偶爾還是不執行，而且這件事一旦漏掉，風險又很大，那就應該考慮把它改成 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;簡單說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;低風險的，用規則&lt;/li&gt;
&lt;li&gt;高風險的，用 &lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;最典型的-hooks-場景&#34;&gt;最典型的 &lt;code&gt;Hooks&lt;/code&gt; 場景
&lt;/h3&gt;&lt;p&gt;最典型的，就是那些你絕對不希望出錯的動作，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;發郵件前必須確認&lt;/li&gt;
&lt;li&gt;發 Slack、Outlook、Gmail 訊息前必須確認&lt;/li&gt;
&lt;li&gt;刪除危險檔案前必須攔截&lt;/li&gt;
&lt;li&gt;偵測到要外發密碼或 API Key 時必須阻止&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些要求只是寫成一句自然語言規則，模型有可能哪天真的忙中出錯，就送出去了。&lt;/p&gt;
&lt;p&gt;但如果寫成 &lt;code&gt;Hooks&lt;/code&gt;，只要事件發生，就會被強制攔截。&lt;/p&gt;
&lt;p&gt;這才是程式層面的硬防線。&lt;/p&gt;
&lt;h3 id=&#34;hooks-常見的觸發時機&#34;&gt;&lt;code&gt;Hooks&lt;/code&gt; 常見的觸發時機
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; 可以設定在很多不同階段，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對話剛開始時注入提醒&lt;/li&gt;
&lt;li&gt;某個工具執行前先做檢查&lt;/li&gt;
&lt;li&gt;某個工具執行後做結果校驗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你不一定需要自己知道那些專業術語。&lt;/p&gt;
&lt;p&gt;很多時候，只要你能清楚描述需求，再讓 Claude 幫你判斷這條規則適不適合改成 hook，它就能幫你一起設計。&lt;/p&gt;
&lt;p&gt;你也可以透過斜線命令 &lt;code&gt;/hook&lt;/code&gt; 查看系統目前已經設定了哪些 hooks。&lt;/p&gt;
&lt;h2 id=&#34;一套更實用的上手順序&#34;&gt;一套更實用的上手順序
&lt;/h2&gt;&lt;p&gt;如果你想把這四層串起來，我自己更推薦下面這條路徑：&lt;/p&gt;
&lt;h3 id=&#34;第一步先用-init-生成基礎版-claudemd&#34;&gt;第一步：先用 &lt;code&gt;/init&lt;/code&gt; 生成基礎版 &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;不要一開始就手寫一份特別完整的規則文件。&lt;/p&gt;
&lt;p&gt;先讓 Claude 幫你掃描專案，生成一個起點版本，再慢慢迭代。&lt;/p&gt;
&lt;h3 id=&#34;第二步邊用邊補&#34;&gt;第二步：邊用邊補
&lt;/h3&gt;&lt;p&gt;在協作過程中，只要你發現：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這件事以後一定要記得&lt;/li&gt;
&lt;li&gt;這個錯誤以後不能再犯&lt;/li&gt;
&lt;li&gt;這個偏好以後每次都適用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就讓 Claude 幫你寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;第三步當-claudemd-變長時拆到-rules&#34;&gt;第三步：當 &lt;code&gt;CLAUDE.md&lt;/code&gt; 變長時，拆到 &lt;code&gt;Rules&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;一旦你發現 &lt;code&gt;CLAUDE.md&lt;/code&gt; 越來越長，模型開始不一定遵守每一條規則，就該考慮拆分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些是全域規則&lt;/li&gt;
&lt;li&gt;哪些只和某些路徑相關&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把後者移到 &lt;code&gt;Rules&lt;/code&gt;，改成條件載入。&lt;/p&gt;
&lt;h3 id=&#34;第四步再把高風險規則升級成-hooks&#34;&gt;第四步：再把高風險規則升級成 &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;如果某些規則即使寫了，模型還是偶爾會漏，而且漏掉代價很高，那就不要再停留在自然語言層面，直接升級成 &lt;code&gt;Hooks&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;也就是把「提醒」變成「強制」。&lt;/p&gt;
&lt;h3 id=&#34;第五步把暫時狀態交給-memory&#34;&gt;第五步：把暫時狀態交給 &lt;code&gt;Memory&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;對於那些會過期、會變化、不是長期制度的內容，不要一股腦全寫進 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;更合適的做法是交給 &lt;code&gt;Memory&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;當前專案進度&lt;/li&gt;
&lt;li&gt;最近合作對象&lt;/li&gt;
&lt;li&gt;最近新增偏好&lt;/li&gt;
&lt;li&gt;近期計畫和待辦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣上下文會更清爽，模型也更容易保持穩定表現。&lt;/p&gt;
&lt;h2 id=&#34;這四層分別該記什麼&#34;&gt;這四層分別該記什麼
&lt;/h2&gt;&lt;p&gt;如果你想快速記住，可以直接用下面這個區分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;：長期默契、全域說明、專案基礎背景&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;：按路徑或場景載入的專項規則&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;：動態知識、暫時狀態、最近學到的東西&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;：高風險操作的程式級強制攔截&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;很多人把 &lt;code&gt;Claude Code&lt;/code&gt; 當成「會寫程式的聊天介面」，但真正用深之後，你會發現它更像一個長期協作的智慧工作台。&lt;/p&gt;
&lt;p&gt;關鍵不只是你每次怎麼下指令，而是你有沒有給它一套穩定、清楚、能長期累積的環境。&lt;/p&gt;
&lt;p&gt;一旦你把這四層搭起來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你和模型之間的協作品質，通常會有非常明顯的提升。&lt;/p&gt;
&lt;p&gt;因為你終於不是每次都從零開始解釋自己是誰、怎麼工作、哪些事不能做，而是把這些真正沉澱成了環境的一部分。&lt;/p&gt;
&lt;p&gt;這才是把一個強模型，真正用成成熟工具的關鍵一步。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp ollama 顯卡性能天梯：CUDA、ROCm、Vulkan</title>
        <link>https://knightli.com/zh-tw/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</link>
        <pubDate>Thu, 23 Apr 2026 10:22:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;h2 id=&#34;先看懂這些參數&#34;&gt;先看懂這些參數
&lt;/h2&gt;&lt;h3 id=&#34;q4_0-是什麼&#34;&gt;&lt;code&gt;Q4_0&lt;/code&gt; 是什麼
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; 是一種 4-bit 量化格式。它的意義不是「模型更強」，而是「模型更小、更省顯存、更容易塞進更多設備裡」。這些榜單大多統一使用 &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt;，核心目的就是減少變數，讓不同 GPU 的成績更容易橫向比較。&lt;/p&gt;
&lt;h3 id=&#34;pp512-是什麼&#34;&gt;&lt;code&gt;pp512&lt;/code&gt; 是什麼
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 一般可以理解為 &lt;code&gt;prompt processing 512 tokens&lt;/code&gt;，也就是處理 512 個輸入 token 時的吞吐。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt; = prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt; = 輸入長度是 512 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens per second&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更像是「吃提示詞的速度」，通常能更充分地並行，所以數字往往很高。&lt;/p&gt;
&lt;h3 id=&#34;tg128-是什麼&#34;&gt;&lt;code&gt;tg128&lt;/code&gt; 是什麼
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; 一般可以理解為 &lt;code&gt;text generation 128 tokens&lt;/code&gt;，也就是連續生成 128 個 token 時的速度。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt; = text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt; = 連續生成 128 token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens per second&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更接近我們平時感受到的「模型回答快不快」。因為生成階段是逐 token 遞推，所以通常明顯低於 &lt;code&gt;pp512&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;fa-是什麼&#34;&gt;&lt;code&gt;FA&lt;/code&gt; 是什麼
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; 是 &lt;code&gt;Flash Attention&lt;/code&gt;。簡單理解，就是注意力計算的一種最佳化開關。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;with FA&lt;/code&gt; 表示啟用了 Flash Attention&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt; 表示關閉 Flash Attention&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在不少卡上，&lt;code&gt;FA&lt;/code&gt; 對 &lt;code&gt;pp512&lt;/code&gt; 的提升比對 &lt;code&gt;tg128&lt;/code&gt; 更明顯；但不同後端、不同驅動和不同架構之間，提升幅度並不一致，個別設備甚至會出現 PP 上升、TG 變化很小，或者 PP 反而下降的情況。&lt;/p&gt;
&lt;h3 id=&#34;ts-怎麼看&#34;&gt;&lt;code&gt;t/s&lt;/code&gt; 怎麼看
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; 就是 &lt;code&gt;tokens per second&lt;/code&gt;。它不是幀率，也不是 FLOPS，而是模型吞吐表現的直接結果。&lt;/p&gt;
&lt;p&gt;讀榜單時最重要的一點是：&lt;strong&gt;先確認你比較的是不是同一種測試。&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要把 &lt;code&gt;pp512&lt;/code&gt; 和 &lt;code&gt;tg128&lt;/code&gt; 直接混著比&lt;/li&gt;
&lt;li&gt;不要把 &lt;code&gt;no FA&lt;/code&gt; 和 &lt;code&gt;with FA&lt;/code&gt; 混著比&lt;/li&gt;
&lt;li&gt;不要把 CUDA、ROCm、Vulkan 的結果當成完全等價的同一條曲線&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;從這幾條討論串目前可見的資料看，大致可以先記住這幾個結論：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt; 仍然是目前 &lt;code&gt;llama.cpp&lt;/code&gt; GPU 跑分裡最強、樣本也最密集的一條線，特別是高階 Nvidia 卡在 &lt;code&gt;pp512&lt;/code&gt; 上優勢很大。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 在高階 AMD 卡和 Instinct 卡上已經能給出非常像樣的成績，&lt;code&gt;MI300X&lt;/code&gt;、&lt;code&gt;7900 XTX&lt;/code&gt;、&lt;code&gt;W7900&lt;/code&gt; 這些條目都不弱。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Vulkan&lt;/code&gt; 的優點不是「絕對最快」，而是覆蓋面最廣，Nvidia、AMD、Intel、Apple Asahi / MoltenVK，甚至很多老卡和核顯都能找到條目。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 往往更接近日常體感，&lt;code&gt;pp512&lt;/code&gt; 更適合看吞吐能力。很多「榜一」卡，在兩項裡的領先幅度並不完全一樣。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cuda-完整榜單&#34;&gt;CUDA 完整榜單
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5090&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14073.41 ± 115.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;290.02 ± 1.10&lt;/td&gt;
          &lt;td&gt;8cf6b42&lt;/td&gt;
          &lt;td&gt;@totaldev&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 6000 Blackwell&lt;/td&gt;
          &lt;td&gt;96 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14854.63 ± 22.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;274.20 ± 0.14&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@Tom94&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;H100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM3 / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9918.34 ± 176.97&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;267.81 ± 1.54&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM2e / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4849.53 ± 8.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;190.88 ± 0.33&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 D&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10293.86 ± 134.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;189.33 ± 0.19&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@autonomous-AI-lab&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11992.70 ± 107.99&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;186.21 ± 0.13&lt;/td&gt;
          &lt;td&gt;2241453&lt;/td&gt;
          &lt;td&gt;@lhl&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8297.36 ± 9.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;181.99 ± 0.42&lt;/td&gt;
          &lt;td&gt;8a4280c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070 Ti&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6952.38 ± 13.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;176.85 ± 0.07&lt;/td&gt;
          &lt;td&gt;933414c&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 6000 Ada&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9229.23 ± 101.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;176.07 ± 0.26&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090 Ti&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6567.49 ± 20.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;171.19 ± 3.98&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5174.69 ± 21.83&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;158.16 ± 0.21&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;L40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8870.49 ± 378.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;152.01 ± 0.28&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080 SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8125.15 ± 41.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;148.33 ± 0.20&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;@zacharyarnaise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8031.64 ± 26.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;142.49 ± 0.16&lt;/td&gt;
          &lt;td&gt;20638e4&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3080&lt;/td&gt;
          &lt;td&gt;10 GB / GDDR6X / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5013.86 ± 24.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.65 ± 0.99&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A6000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4913.93 ± 6.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;138.73 ± 2.75&lt;/td&gt;
          &lt;td&gt;4795c91&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4070 Ti SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6924.53 ± 13.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.26 ± 0.16&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4000 Blackwell&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4992.83 ± 113.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;131.66 ± 0.20&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A5000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4028.16 ± 19.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.07 ± 2.74&lt;/td&gt;
          &lt;td&gt;e5155e6&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla V100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3042.64 ± 40.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.08 ± 0.05&lt;/td&gt;
          &lt;td&gt;51f5a45&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5184.75 ± 18.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.54 ± 0.46&lt;/td&gt;
          &lt;td&gt;@Spyro000&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4609.01 ± 10.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.11 ± 0.17&lt;/td&gt;
          &lt;td&gt;3470a5c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A30&lt;/td&gt;
          &lt;td&gt;24 GB / HBM2e / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2767.10 ± 1.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.81 ± 0.16&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan V&lt;/td&gt;
          &lt;td&gt;12 GB / HBM2 / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2617.46 ± 2.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.79 ± 0.05&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR6 / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2890.66 ± 2.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;107.51 ± 0.21&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 6000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2751.18 ± 19.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;102.77 ± 0.04&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 8000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2709.95 ± 3.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;102.68 ± 0.03&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4500&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2827.20 ± 66.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.32 ± 2.80&lt;/td&gt;
          &lt;td&gt;5cdb27e&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5060 Ti 16 GB&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3737.25 ± 6.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;90.94 ± 0.02&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2070 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2088.34 ± 1.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.06 ± 0.28&lt;/td&gt;
          &lt;td&gt;bc07349&lt;/td&gt;
          &lt;td&gt;@phstudy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2684.06 ± 15.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.77 ± 0.37&lt;/td&gt;
          &lt;td&gt;65349f2&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan Xp&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1154.96 ± 1.46&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.08 ± 0.08&lt;/td&gt;
          &lt;td&gt;c4510dc&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR6 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2137.50 ± 10.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.57 ± 0.07&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@QuantiusBenignus&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 4000&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1536.89 ± 0.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.62 ± 0.62&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4060 Ti 8 GB&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3394.63 ± 7.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.86 ± 0.01&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR5X / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1084.41 ± 3.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.49 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000 Ada&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2779.77 ± 9.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.83 ± 0.04&lt;/td&gt;
          &lt;td&gt;a74a0d6&lt;/td&gt;
          &lt;td&gt;@sdwolfz&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2060 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1420.24 ± 1.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60.04 ± 0.01&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P100&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;760.80 ± 2.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;58.35 ± 0.00&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DGX Spark&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5x&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3062.31 ± 11.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;57.21 ± 0.06&lt;/td&gt;
          &lt;td&gt;5acd455&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1007.42 ± 1.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;54.74 ± 0.07&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2000 Ada&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1956.22 ± 7.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.62 ± 0.04&lt;/td&gt;
          &lt;td&gt;756cfea&lt;/td&gt;
          &lt;td&gt;@DigitalRudeness&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla T4&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1219.06 ± 4.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.38 ± 0.73&lt;/td&gt;
          &lt;td&gt;d32e03f&lt;/td&gt;
          &lt;td&gt;@pt13762104&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4050 Laptop&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR6 / 96 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1725.85 + 17.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.72 + 0.41&lt;/td&gt;
          &lt;td&gt;d79d8f3&lt;/td&gt;
          &lt;td&gt;@TimCabbage&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1660&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;148.91 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.35 ± 0.02&lt;/td&gt;
          &lt;td&gt;9515c61&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla M40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;282.65 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.04 ± 0.02&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1070 Ti&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;714.44 ± 2.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.82 ± 0.02&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jetson AGX Orin&lt;/td&gt;
          &lt;td&gt;64 GB / LPDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;991.31 ± 1.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.58 ± 0.14&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P4&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;514.53 ± 3.06&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.29 ± 0.00&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;P106-100&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;406.94 ± 0.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.40 ± 0.02&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1060&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;416.85 ± 1.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.79 ± 0.02&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro T1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.44 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.82 ± 0.18&lt;/td&gt;
          &lt;td&gt;f6da8cb&lt;/td&gt;
          &lt;td&gt;@hanabu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P2000&lt;/td&gt;
          &lt;td&gt;5 GB / GDDR5 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;309.30 ± 0.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.63 ± 0.00&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.40 ± 0.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.99 ± 0.13&lt;/td&gt;
          &lt;td&gt;1e74897&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla K80&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;133.14 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.80 ± 0.02&lt;/td&gt;
          &lt;td&gt;32732f2&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-with-fa&#34;&gt;Llama 2 7B, Q4_0, with FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5090&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14970.15 ± 381.06&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;300.40 ± 0.28&lt;/td&gt;
          &lt;td&gt;8cf6b42&lt;/td&gt;
          &lt;td&gt;@totaldev&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 6000 Blackwell&lt;/td&gt;
          &lt;td&gt;96 GB / GDDR7 / 512 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16618.98 ± 20.66&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;281.11 ± 0.41&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Tom94&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;H100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM3 / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11263.29 ± 98.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;280.74 ± 1.17&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A100 80 GB&lt;/td&gt;
          &lt;td&gt;80 GB / HBM2e / 5120 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5285.96 ± 6.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;200.90 ± 0.12&lt;/td&gt;
          &lt;td&gt;5143fa8&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090 D&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12506.97 ± 11.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;191.57 ± 0.03&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@autonomous-AI-lab&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14770.63 ± 102.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;188.96 ± 0.05&lt;/td&gt;
          &lt;td&gt;2241453&lt;/td&gt;
          &lt;td&gt;@lhl&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9487.70 ± 21.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;184.68 ± 0.05&lt;/td&gt;
          &lt;td&gt;8a4280c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070 Ti&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8419.56 ± 35.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;182.43 ± 0.09&lt;/td&gt;
          &lt;td&gt;933414c&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 6000 Ada&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10576.85 ± 530.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;179.47 ± 0.32&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090 Ti&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6924.01 ± 10.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;172.26 ± 1.31&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4500 Blackwell&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR7 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7251.66 ± 92.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;168.90 ± 0.20&lt;/td&gt;
          &lt;td&gt;becc481&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3090&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5560.06 ± 16.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;161.89 ± 0.18&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;L40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10097.64 ± 671.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;153.76 ± 0.12&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080 SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9439.01 ± 56.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147.48 ± 1.41&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;@zacharyarnaise&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4080&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9205.93 ± 22.31&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;143.47 ± 0.02&lt;/td&gt;
          &lt;td&gt;20638e4&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A6000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5662.39 ± 13.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;144.87 ± 0.18&lt;/td&gt;
          &lt;td&gt;4795c91&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3080&lt;/td&gt;
          &lt;td&gt;10 GB / GDDR6X / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5569.56 ± 14.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.95 ± 0.95&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@slaren&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX PRO 4000 Blackwell&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5674.44 ± 139.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;136.38 ± 0.13&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A5000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4552.15 ± 9.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.83 ± 0.11&lt;/td&gt;
          &lt;td&gt;e5155e6&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla V100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2973.78 ± 3.62&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;134.76 ± 0.02&lt;/td&gt;
          &lt;td&gt;51f5a45&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4070 Ti SUPER&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6X / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7612.32 ± 37.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.85 ± 0.31&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@Ristovski&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A30&lt;/td&gt;
          &lt;td&gt;24 GB / HBM2e / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3068.72 ± 0.63&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;131.93 ± 0.18&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5070&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR7 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5783.44 ± 36.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;128.21 ± 2.52&lt;/td&gt;
          &lt;td&gt;@Spyro000&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A40&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5256.38 ± 19.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;126.24 ± 0.06&lt;/td&gt;
          &lt;td&gt;3470a5c&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan V&lt;/td&gt;
          &lt;td&gt;12 GB / HBM2 / 3072 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2481.25 ± 1.31&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.17 ± 0.01&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR6 / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3107.61 ± 4.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.17 ± 0.07&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 6000&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3053.96 ± 1.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.38 ± 0.04&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 8000&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3052.35 ± 5.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.63 ± 0.02&lt;/td&gt;
          &lt;td&gt;b8e09f0&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4500&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3453.10 ± 49.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.00 ± 0.25&lt;/td&gt;
          &lt;td&gt;5cdb27e&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 5060 Ti 16 GB&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR7 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4195.53 ± 1.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.46 ± 0.01&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2070 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2293.29 ± 5.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;87.71 ± 0.29&lt;/td&gt;
          &lt;td&gt;bc07349&lt;/td&gt;
          &lt;td&gt;@phstudy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2807.83 ± 52.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;85.17 ± 0.66&lt;/td&gt;
          &lt;td&gt;65349f2&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 3060&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR6 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2407.67 ± 3.73&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.92 ± 0.03&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@QuantiusBenignus&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Titan Xp&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5X / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1218.12 ± 1.82&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.84 ± 0.04&lt;/td&gt;
          &lt;td&gt;c4510dc&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro RTX 4000&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1662.80 ± 2.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.62 ± 0.67&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 4060 Ti 8 GB&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3803.45 ± 70.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.03 ± 0.53&lt;/td&gt;
          &lt;td&gt;89d1029&lt;/td&gt;
          &lt;td&gt;@mike-llamacpp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P100&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;787.36 ± 3.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.99 ± 0.00&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1080 Ti&lt;/td&gt;
          &lt;td&gt;11 GB / GDDR5X / 352 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1138.14 ± 2.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.38 ± 0.03&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX A4000 Ada&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3171.86 ± 4.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.37 ± 0.01&lt;/td&gt;
          &lt;td&gt;a74a0d6&lt;/td&gt;
          &lt;td&gt;@sdwolfz&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2060 SUPER&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1563.77 ± 0.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;61.13 ± 0.05&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DGX Spark&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5x&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3661.37 ± 38.66&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.74 ± 0.03&lt;/td&gt;
          &lt;td&gt;5acd455&lt;/td&gt;
          &lt;td&gt;@ggerganov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1079.66 ± 0.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.73 ± 0.05&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RTX 2000 Ada&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2250.14 ± 5.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.71 ± 0.01&lt;/td&gt;
          &lt;td&gt;756cfea&lt;/td&gt;
          &lt;td&gt;@DigitalRudeness&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla T4&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1309.73 ± 1.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;44.03 ± 0.57&lt;/td&gt;
          &lt;td&gt;d32e03f&lt;/td&gt;
          &lt;td&gt;@pt13762104&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1660&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;154.45 ± 0.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.43 ± 0.01&lt;/td&gt;
          &lt;td&gt;9515c61&lt;/td&gt;
          &lt;td&gt;@ariya&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla M40&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;290.17 ± 0.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.98 ± 0.01&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1070 Ti&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;790.52 ± 2.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.87 ± 0.00&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jetson AGX Orin&lt;/td&gt;
          &lt;td&gt;64 GB / LPDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1171.96 ± 4.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;35.88 ± 0.18&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla P4&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR5 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.53 ± 2.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.12 ± 0.03&lt;/td&gt;
          &lt;td&gt;c76b420&lt;/td&gt;
          &lt;td&gt;@m18coppola&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;P106-100&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;438.49 ± 0.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.64 ± 0.06&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GTX 1060&lt;/td&gt;
          &lt;td&gt;6 GB / GDDR5 / 192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;446.19 ± 0.81&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.18 ± 0.01&lt;/td&gt;
          &lt;td&gt;5fd160b&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro T1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.46 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.46 ± 0.23&lt;/td&gt;
          &lt;td&gt;f6da8cb&lt;/td&gt;
          &lt;td&gt;@hanabu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P2000&lt;/td&gt;
          &lt;td&gt;5 GB / GDDR5 / 160 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;311.55 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.76 ± 0.01&lt;/td&gt;
          &lt;td&gt;baa9255&lt;/td&gt;
          &lt;td&gt;@TinyServal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tesla K80&lt;/td&gt;
          &lt;td&gt;12 GB / GDDR5 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;133.36 ± 0.60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;14.27 ± 0.32&lt;/td&gt;
          &lt;td&gt;32732f2&lt;/td&gt;
          &lt;td&gt;@pebaryan&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadro P1000&lt;/td&gt;
          &lt;td&gt;4 GB / GDDR5 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;173.82 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.65 ± 0.14&lt;/td&gt;
          &lt;td&gt;1e74897&lt;/td&gt;
          &lt;td&gt;@aleksyx&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;apple-silicon-參考口徑&#34;&gt;Apple Silicon 參考口徑
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;#4167&lt;/code&gt; 這條討論和後三條最大的區別，是它更早建立了統一口徑，除了 &lt;code&gt;Q4_0&lt;/code&gt;，還會順帶放 &lt;code&gt;F16&lt;/code&gt; 和 &lt;code&gt;Q8_0&lt;/code&gt;。它對理解 &lt;code&gt;PP / TG / t/s&lt;/code&gt; 很有幫助。&lt;/p&gt;
&lt;p&gt;討論裡直接給出的說明是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PP&lt;/code&gt; 表示 &lt;code&gt;prompt processing&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TG&lt;/code&gt; 表示 &lt;code&gt;text-generation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; 表示 &lt;code&gt;tokens per second&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;文中可見的一個時間對比樣例，是 &lt;code&gt;M2 Ultra&lt;/code&gt; 在同一台機器上隨著版本和 &lt;code&gt;FA&lt;/code&gt; 演進後的成績：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;時間&lt;/th&gt;
          &lt;th&gt;設備&lt;/th&gt;
          &lt;th&gt;版本/說明&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;頻寬 GB/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GPU 核心&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 TG&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;2023-11-21&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;8e672ef&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1401.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1248.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1238.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.27&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2024-11-12&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;86ed72d + FA&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1525.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1368.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1391.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.80&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2025-08-02&lt;/td&gt;
          &lt;td&gt;M2 Ultra&lt;/td&gt;
          &lt;td&gt;5c0eb5e + FA&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1561.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1386.97&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1412.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.41&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;設備&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q4_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Q8_0 TG&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 PP&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;F16 TG&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;M1 Pro 16 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;266.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.41&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;270.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;302.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.75&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;M2 Ultra 76 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1238.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1248.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1401.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;M3 Max 40 GPU&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;690.99&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;749.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;794.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.27&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Apple 這條線這裡不展開全文搬運，後面重點看你指定的三類獨顯後端榜單。&lt;/p&gt;
&lt;h2 id=&#34;rocm--hip-完整榜單&#34;&gt;ROCm / HIP 完整榜單
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa-1&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI300X&lt;/td&gt;
          &lt;td&gt;192 GB / HBM3 / 8192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11476.40 ± 72.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;232.92 ± 0.53&lt;/td&gt;
          &lt;td&gt;ee3a9fc&lt;/td&gt;
          &lt;td&gt;@yeahdongcn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XTX&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3552.27 ± 101.96&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;167.11 ± 0.50&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;@Diablo-D3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI210&lt;/td&gt;
          &lt;td&gt;64 GB / HBM2e / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2486.22 ± 9.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.51 ± 0.04&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro W7900&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3213.17 ± 80.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;121.18 ± 0.06&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XT&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3098.38 ± 24.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.15 ± 0.06&lt;/td&gt;
          &lt;td&gt;1e15bfd&lt;/td&gt;
          &lt;td&gt;@AdamNiederer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2381.77 ± 3.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;114.48 ± 0.60&lt;/td&gt;
          &lt;td&gt;d0660f2&lt;/td&gt;
          &lt;td&gt;@andj1210&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2732.83 ± 1.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;110.48 ± 0.14&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5055.19 ± 109.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101.27 ± 0.27&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hadrianneue&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2151.81 + 17.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.94 + 0.10&lt;/td&gt;
          &lt;td&gt;00131d6&lt;/td&gt;
          &lt;td&gt;@olegshulyakov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI50&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1057.24 ± 0.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;98.95 ± 0.25&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@wtarreau&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 GRE&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1456.98 ± 12.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96.07 ± 0.10&lt;/td&gt;
          &lt;td&gt;6fa3b55&lt;/td&gt;
          &lt;td&gt;@MihaiBojescu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI PRO R9700&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4443.54 ± 339.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.84 ± 0.26&lt;/td&gt;
          &lt;td&gt;bd4ef13&lt;/td&gt;
          &lt;td&gt;@gogich77&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI60&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1289.11 ± 0.62&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;91.46 ± 0.13&lt;/td&gt;
          &lt;td&gt;504af20&lt;/td&gt;
          &lt;td&gt;@Said-Akbar&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6900 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1889.84 ± 31.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.49 ± 0.00&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;@notgood&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro VII&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1064.99 ± 1.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;87.45 ± 0.04&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;@8XXD8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1447.07 ± 1.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.92 ± 0.03&lt;/td&gt;
          &lt;td&gt;79c1160&lt;/td&gt;
          &lt;td&gt;@MrLavender&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro V620&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1803.65 ± 2.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74.66 ± 0.01&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@samteezy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9060 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1419.67 ± 3.64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.58 ± 0.24&lt;/td&gt;
          &lt;td&gt;a0e13dc&lt;/td&gt;
          &lt;td&gt;@lcy0321&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 5700 XT&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;354.17 ± 0.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;67.55 ± 0.04&lt;/td&gt;
          &lt;td&gt;c05e8c9&lt;/td&gt;
          &lt;td&gt;@daniandtheweb&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI25&lt;/td&gt;
          &lt;td&gt;16 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;409.83 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.94 ± 0.06&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;@8XXD8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Max+ 395&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;911.36 ± 1.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.01 ± 0.07&lt;/td&gt;
          &lt;td&gt;e60f241&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7600 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1099.64 ± 2.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.58 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@wbruna&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX Vega 64&lt;/td&gt;
          &lt;td&gt;8 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;240.68 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.46 ± 0.09&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;@davispuh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 8060S&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;351.36 ± 0.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.97 ± 0.33&lt;/td&gt;
          &lt;td&gt;1d0125b&lt;/td&gt;
          &lt;td&gt;@hspak&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 880M&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;163.25 ± 13.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.97 ± 1.63&lt;/td&gt;
          &lt;td&gt;c55d53a&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-with-fa-1&#34;&gt;Llama 2 7B, Q4_0, with FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th&gt;Memory&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Thanks to&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI300X&lt;/td&gt;
          &lt;td&gt;192 GB / HBM3 / 8192 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11945.97 ± 54.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;218.53 ± 0.09&lt;/td&gt;
          &lt;td&gt;ee3a9fc&lt;/td&gt;
          &lt;td&gt;@yeahdongcn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XTX&lt;/td&gt;
          &lt;td&gt;24 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3874.25 ± 11.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;170.12 ± 0.56&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;@Diablo-D3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro W7900&lt;/td&gt;
          &lt;td&gt;48 GB / GDDR6 / 384 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3472.86 ± 52.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.43 ± 0.12&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI210&lt;/td&gt;
          &lt;td&gt;64 GB / HBM2e / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2571.82 ± 2.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.18 ± 0.06&lt;/td&gt;
          &lt;td&gt;8160b38&lt;/td&gt;
          &lt;td&gt;@65a&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2452.68 ± 1.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.32 ± 0.52&lt;/td&gt;
          &lt;td&gt;d0660f2&lt;/td&gt;
          &lt;td&gt;@andj1210&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 XT&lt;/td&gt;
          &lt;td&gt;20 GB / GDDR6 / 320 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3261.75 ± 9.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.30 ± 0.06&lt;/td&gt;
          &lt;td&gt;1e15bfd&lt;/td&gt;
          &lt;td&gt;@AdamNiederer&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI50&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1129.43 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;105.82 ± 0.07&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;@wtarreau&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Instinct MI100&lt;/td&gt;
          &lt;td&gt;32 GB / HBM2 / 4096 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2755.00 ± 3.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.71 ± 0.10&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI PRO R9700&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4773.07 ± 49.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.98 ± 0.13&lt;/td&gt;
          &lt;td&gt;bd4ef13&lt;/td&gt;
          &lt;td&gt;@gogich77&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7900 GRE&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1598.79 ± 11.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.53 ± 0.06&lt;/td&gt;
          &lt;td&gt;6fa3b55&lt;/td&gt;
          &lt;td&gt;@MihaiBojescu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9070 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4903.51 ± 96.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.28 ± 0.13&lt;/td&gt;
          &lt;td&gt;583cb83&lt;/td&gt;
          &lt;td&gt;@Hadrianneue&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7800 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2304.63 + 2.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;95.99 + 0.21&lt;/td&gt;
          &lt;td&gt;00131d6&lt;/td&gt;
          &lt;td&gt;@olegshulyakov&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 6900 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1948.31 ± 13.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;85.04 ± 0.02&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;@notgood&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pro V620&lt;/td&gt;
          &lt;td&gt;32 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1256.86 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.83 ± 0.02&lt;/td&gt;
          &lt;td&gt;5c0eb5e&lt;/td&gt;
          &lt;td&gt;@samteezy&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 9060 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1479.27 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;65.42 ± 0.19&lt;/td&gt;
          &lt;td&gt;a0e13dc&lt;/td&gt;
          &lt;td&gt;@lcy0321&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 5700 XT&lt;/td&gt;
          &lt;td&gt;8 GB / GDDR6 / 256 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;314.17 ± 0.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.02 ± 0.05&lt;/td&gt;
          &lt;td&gt;c05e8c9&lt;/td&gt;
          &lt;td&gt;@daniandtheweb&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Max+ 395&lt;/td&gt;
          &lt;td&gt;128 GB / LPDDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1003.53 ± 2.91&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.87 ± 0.02&lt;/td&gt;
          &lt;td&gt;e60f241&lt;/td&gt;
          &lt;td&gt;@firefox42&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 8060S&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;366.08 ± 1.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.97 ± 0.15&lt;/td&gt;
          &lt;td&gt;1d0125b&lt;/td&gt;
          &lt;td&gt;@hspak&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX 7600 XT&lt;/td&gt;
          &lt;td&gt;16 GB / GDDR6 / 128 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1199.16 ± 1.07&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.65 ± 0.06&lt;/td&gt;
          &lt;td&gt;9c35706&lt;/td&gt;
          &lt;td&gt;@wbruna&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RX Vega 64&lt;/td&gt;
          &lt;td&gt;8 GB / HBM2 / 2048 bit&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;153.17 ± 0.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.46 ± 0.40&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;@davispuh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Radeon 880M&lt;/td&gt;
          &lt;td&gt;System Shared / DDR5&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;213.31 ± 14.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.16 ± 1.41&lt;/td&gt;
          &lt;td&gt;c55d53a&lt;/td&gt;
          &lt;td&gt;@Hedede&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;vulkan-完整榜單&#34;&gt;Vulkan 完整榜單
&lt;/h2&gt;&lt;h3 id=&#34;llama-2-7b-q4_0-no-fa-2&#34;&gt;Llama 2 7B, Q4_0, no FA
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Comments&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10381.64 ± 508.84&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;263.63 ± 0.91&lt;/td&gt;
          &lt;td&gt;ca71fb9&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XTX&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3531.93 ± 31.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;191.28 ± 0.20&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9452.03 ± 187.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;187.97 ± 0.21&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7444.99 ± 20.11&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;185.10 ± 0.54&lt;/td&gt;
          &lt;td&gt;f6b533d&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia A100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6389.86 ± 4.83&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160.78 ± 0.16&lt;/td&gt;
          &lt;td&gt;2257758&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4298.97 ± 10.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;160.13 ± 0.25&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4080 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7101.18 ± 269.79&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;147.13 ± 5.64&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4287.11 ± 55.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.15 ± 0.05&lt;/td&gt;
          &lt;td&gt;7c7d6ce&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A5000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3641.55 ± 9.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;139.89 ± 0.69&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5036.04 ± 88.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;137.11 ± 0.02&lt;/td&gt;
          &lt;td&gt;e9fd8dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6213.63 ± 27.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.63 ± 0.18&lt;/td&gt;
          &lt;td&gt;d13d0f6&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon AI Pro R9700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4036.04 ± 34.58&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.19 ± 0.39&lt;/td&gt;
          &lt;td&gt;3191462&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla V100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1391.39 ± 1.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.58 ± 0.58&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070 Ti Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6099.18 ± 154.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;129.45 ± 0.18&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2941.58 ± 17.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;123.18 ± 0.40&lt;/td&gt;
          &lt;td&gt;71e74a3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3164.10 ± 66.84&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.71 ± 3.40&lt;/td&gt;
          &lt;td&gt;21c17b5&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2017.33 ± 19.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;118.27 ± 0.27&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 GRE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2336.31 ± 7.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.11 ± 0.26&lt;/td&gt;
          &lt;td&gt;4b2a477&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1116.83 ± 0.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.54 ± 0.78&lt;/td&gt;
          &lt;td&gt;2d451c8&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3379.00 ± 47.92&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;112.02 ± 1.08&lt;/td&gt;
          &lt;td&gt;b863507&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Titan V&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;984.36 ± 4.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.86 ± 0.28&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1078.54 ± 0.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;107.82 ± 0.14&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1837.21 ± 25.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.60 ± 0.30&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro A60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2261.11 ± 9.53&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;104.25 ± 0.07&lt;/td&gt;
          &lt;td&gt;97d5117&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1752.92 ± 1.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.32 ± 0.97&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1059.14 ± 0.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;101.19 ± 0.53&lt;/td&gt;
          &lt;td&gt;77d6ae4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1888.24 ± 9.20&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.58 ± 6.60&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1698.69 ± 0.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;95.61 ± 0.19&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X Duo&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;687.71 ± 4.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.82 ± 0.12&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5060 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3460.92 ± 7.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.51 ± 0.15&lt;/td&gt;
          &lt;td&gt;89f10ba&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3179.37 ± 46.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;92.29 ± 0.28&lt;/td&gt;
          &lt;td&gt;9a48399&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;510.80 ± 0.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;86.47 ± 0.46&lt;/td&gt;
          &lt;td&gt;13b4548&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1051.20 ± 0.98&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;83.88 ± 0.08&lt;/td&gt;
          &lt;td&gt;6d75883&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6750 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1040.58 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.98 ± 0.03&lt;/td&gt;
          &lt;td&gt;228f34c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V620&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1595.32 ± 1.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.78 ± 0.06&lt;/td&gt;
          &lt;td&gt;03d4698&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2113.02 ± 7.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.71 ± 0.13&lt;/td&gt;
          &lt;td&gt;1b8fb81&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Instinct MI60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;369.26 ± 2.48&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.16 ± 1.40&lt;/td&gt;
          &lt;td&gt;504af20&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1815.70 ± 5.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.94 ± 0.80&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M4 Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;724.77 ± 20.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.02 ± 0.14&lt;/td&gt;
          &lt;td&gt;1ece0cb6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla T10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1692.70 ± 2.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.01 ± 0.21&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A4000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2248.14 ± 7.59&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;73.74 ± 0.08&lt;/td&gt;
          &lt;td&gt;f5245b5&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 5700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.69 ± 0.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.73 ± 0.04&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9060 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2141.67 ± 6.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.54 ± 0.74&lt;/td&gt;
          &lt;td&gt;ed52f36&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;620.94 ± 15.33&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.14 ± 0.28&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V540&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;583.88 ± 6.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.64 ± 0.24&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;449.85 ± 0.46&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;68.55 ± 0.15&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;522.36 ± 3.60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;68.55 ± 0.01&lt;/td&gt;
          &lt;td&gt;516a4ca&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;540.69 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.99 ± 0.08&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2070 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1199.13 ± 7.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.64 ± 0.20&lt;/td&gt;
          &lt;td&gt;b7552cf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1689.40 ± 19.57&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.64 ± 0.39&lt;/td&gt;
          &lt;td&gt;ceff6bb&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;678.14 ± 1.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.16 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD BC-250&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;370.66 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.32 ± 0.32&lt;/td&gt;
          &lt;td&gt;5886f4f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6650 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1029.52 ± 1.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.14 ± 0.02&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2135.66 ± 23.18&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.53 ± 0.03&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;488.06 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.36 ± 0.16&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1660 Ti Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;511.67 ± 2.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.60 ± 0.07&lt;/td&gt;
          &lt;td&gt;b43556e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Instinct MI25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;439.42 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;54.69 ± 0.03&lt;/td&gt;
          &lt;td&gt;2739a71&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;574.65 ± 0.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.92 ± 0.11&lt;/td&gt;
          &lt;td&gt;091592d&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI Max+ 395&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1288.96 ± 6.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.59 ± 0.38&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;840.85 ± 3.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.02 ± 0.01&lt;/td&gt;
          &lt;td&gt;01d8eaa&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1073.85 + 29.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.56 + 0.11&lt;/td&gt;
          &lt;td&gt;a69d54f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GB10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2737.79 ± 19.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.28 ± 0.03&lt;/td&gt;
          &lt;td&gt;b9da444&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S9300 x2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;247.26 ± 0.43&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;51.86 ± 0.11&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;761.89 ± 1.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.63 ± 0.02&lt;/td&gt;
          &lt;td&gt;b1c70e2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;439.87 ± 0.61&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.23 ± 0.14&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B570&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;913.95 ± 0.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.64 ± 0.03&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1059.76 ± 3.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.03 ± 0.13&lt;/td&gt;
          &lt;td&gt;dbb3a47&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;861.99 ± 7.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.71 ± 0.71&lt;/td&gt;
          &lt;td&gt;8e6f8bc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;605.59 ± 0.65&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.21 ± 0.07&lt;/td&gt;
          &lt;td&gt;fe5b78c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;875.92 ± 2.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.69 ± 0.16&lt;/td&gt;
          &lt;td&gt;eeee367&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P104-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;311.90 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.18 ± 0.05&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;356.08 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.73 ± 0.18&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1245.19 ± 8.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.52 ± 0.54&lt;/td&gt;
          &lt;td&gt;b1afcab&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600M XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;459.39 ± 2.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.28 ± 0.10&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V340&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;375.41 ± 0.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.16 ± 0.06&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;297.50 ± 0.54&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.86 ± 1.20&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A750&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1075.94 ± 13.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;42.66 ± 0.18&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4050 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1154.28 + 15.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.89 + 0.10&lt;/td&gt;
          &lt;td&gt;d79d8f3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;321.57 ± 0.93&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.48 ± 0.09&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;193.50 ± 0.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.99 ± 0.10&lt;/td&gt;
          &lt;td&gt;7b43f55&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla M40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;92.48 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.35 ± 1.22&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;258.03 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;39.32 ± 0.03&lt;/td&gt;
          &lt;td&gt;de4c07f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 470&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;218.07 ± 0.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.63 ± 0.21&lt;/td&gt;
          &lt;td&gt;e288693&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5500&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;315.39 ± 3.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;36.82 ± 0.38&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 480&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;248.66 ± 0.28&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.71 ± 0.14&lt;/td&gt;
          &lt;td&gt;3b15924&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;205.98 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.34 ± 0.12&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 980&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;186.24 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;33.90 ± 0.51&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P106-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.78 ± 0.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.77 ± 0.04&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro W8100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;155.22 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.52 ± 0.05&lt;/td&gt;
          &lt;td&gt;4536363&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;265.54 ± 0.21&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.03 ± 0.14&lt;/td&gt;
          &lt;td&gt;24d2ee0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6500 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;255.25 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;27.81 ± 0.10&lt;/td&gt;
          &lt;td&gt;g9fdfcd&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;263.70 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;26.39 ± 0.14&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S10000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;94.78 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.32 ± 0.02&lt;/td&gt;
          &lt;td&gt;914a82d&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Quadro P2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;169.55 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.05 ± 0.03&lt;/td&gt;
          &lt;td&gt;63f8fe0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 200 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;544.95 ± 4.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.49 ± 0.09&lt;/td&gt;
          &lt;td&gt;cea560f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI 9 300 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;479.07 ± 0.41&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.41 ± 0.18&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 6000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;240.89 ± 0.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.26 ± 0.08&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.70 ± 0.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.95 ± 0.11&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1050 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;136.42 ± 0.67&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.96 ± 0.21&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;266.19 ± 1.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.53 ± 0.08&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 7000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;281.62 ± 1.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19.91 ± 0.07&lt;/td&gt;
          &lt;td&gt;ebce03e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen Z1 Extreme&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;199.36 ± 7.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.77 ± 0.02&lt;/td&gt;
          &lt;td&gt;53ff6b9&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro D700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;69.95 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.62 ± 0.01&lt;/td&gt;
          &lt;td&gt;d3bd719&lt;/td&gt;
          &lt;td&gt;MoltenVK, running in FP16 mode on FP32 only chip&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro WX 4100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;78.79 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.05 ± 0.07&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.79 ± 0.16&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;13.50 ± 0.02&lt;/td&gt;
          &lt;td&gt;8c0d6bb&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M1&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.29 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.47 ± 0.03&lt;/td&gt;
          &lt;td&gt;2370665&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;90.55 ± 0.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.98 ± 0.07&lt;/td&gt;
          &lt;td&gt;d84635b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;187.20 ± 1.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.39 ± 0.04&lt;/td&gt;
          &lt;td&gt;abb9f3c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 550&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.66 ± 0.49&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.20 ± 0.01&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 4000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;103.87 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.63 ± 0.01&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;89.46 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.39 ± 0.06&lt;/td&gt;
          &lt;td&gt;5d46bab&lt;/td&gt;
          &lt;td&gt;Running on single GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.37 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.30 ± 0.19&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MediaTek Dimensity 9400&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;38.36 ± 15.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.92 ± 0.06&lt;/td&gt;
          &lt;td&gt;b9ab0a4&lt;/td&gt;
          &lt;td&gt;GPU supports coopmat but pp512 is faster with it turned off&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;185.51 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.21 ± 0.07&lt;/td&gt;
          &lt;td&gt;1d72c84&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 3000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.63 ± 0.10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.49 ± 0.01&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CIX CD8180&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.80 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5.51 ± 0.00&lt;/td&gt;
          &lt;td&gt;4dca015&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.58 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.25 ± 0.18&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.43 ± 0.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.35 ± 0.03&lt;/td&gt;
          &lt;td&gt;c4df49a&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel N150&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.84 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.93 ± 0.00&lt;/td&gt;
          &lt;td&gt;4f63cd7&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;llama-2-7b-q4_0-fa-enabled&#34;&gt;Llama 2 7B, Q4_0, FA enabled
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Chip&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;pp512 t/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;tg128 t/s&lt;/th&gt;
          &lt;th&gt;Commit&lt;/th&gt;
          &lt;th&gt;Comments&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;11796.38 ± 601.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;273.68 ± 0.52&lt;/td&gt;
          &lt;td&gt;ca71fb9&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XTX&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3332.90 ± 11.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;195.30 ± 0.23&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8054.59 ± 35.68&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;192.17 ± 0.21&lt;/td&gt;
          &lt;td&gt;f6b533d&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10830.41 ± 36.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;190.10 ± 0.31&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia A100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7064.40 ± 1.63&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;170.56 ± 0.02&lt;/td&gt;
          &lt;td&gt;2257758&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3090&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4732.33 ± 4.80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;162.28 ± 0.21&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4080 Super&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8007.37 ± 46.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;150.20 ± 0.26&lt;/td&gt;
          &lt;td&gt;81086cd&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3080&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4913.83 ± 21.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;145.74 ± 0.16&lt;/td&gt;
          &lt;td&gt;7c7d6ce&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla V100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1411.25 ± 2.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;142.13 ± 0.03&lt;/td&gt;
          &lt;td&gt;7d77f07&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A5000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4071.22 ± 13.13&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;140.43 ± 0.22&lt;/td&gt;
          &lt;td&gt;4ae88d0&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4911.74 ± 28.52&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;138.20 ± 0.18&lt;/td&gt;
          &lt;td&gt;e9fd8dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6764.53 ± 11.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;135.65 ± 0.02&lt;/td&gt;
          &lt;td&gt;d13d0f6&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon AI Pro R9700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4333.83 ± 29.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;130.90 ± 0.12&lt;/td&gt;
          &lt;td&gt;3191462&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3043.93 ± 10.42&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;124.20 ± 0.09&lt;/td&gt;
          &lt;td&gt;71e74a3&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2094.64 ± 14.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.63 ± 0.13&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3277.24 ± 18.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;119.55 ± 0.06&lt;/td&gt;
          &lt;td&gt;21c17b5&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7900 GRE&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2402.07 ± 22.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;116.77 ± 0.08&lt;/td&gt;
          &lt;td&gt;4b2a477&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M3 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1115.55 ± 0.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;115.99 ± 0.12&lt;/td&gt;
          &lt;td&gt;2d451c8&lt;/td&gt;
          &lt;td&gt;MoltenVK&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3314.53 ± 17.95&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;111.63 ± 0.05&lt;/td&gt;
          &lt;td&gt;b863507&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Titan V&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;792.74 ± 4.30&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;109.21 ± 0.72&lt;/td&gt;
          &lt;td&gt;e56abd2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro VII&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;783.94 ± 0.77&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;108.45 ± 0.48&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6900 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1761.93 ± 4.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;106.15 ± 0.04&lt;/td&gt;
          &lt;td&gt;a972fae&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 2080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1936.25 ± 32.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.99 ± 0.24&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1704.79 ± 0.71&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.50 ± 0.06&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W6800X Duo&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;795.28 ± 0.72&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;100.08 ± 0.02&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 5060 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3912.65 ± 5.86&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;97.01 ± 0.14&lt;/td&gt;
          &lt;td&gt;89f10ba&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1749.46 ± 3.36&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;96.65 ± 0.48&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4293.57 ± 27.70&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;91.49 ± 0.89&lt;/td&gt;
          &lt;td&gt;9a48399&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6750 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;997.05 ± 0.45&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;82.29 ± 0.06&lt;/td&gt;
          &lt;td&gt;228f34c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1010.90 ± 12.89&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;81.86 ± 0.19&lt;/td&gt;
          &lt;td&gt;6d75883&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3060&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2012.88 ± 10.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;80.59 ± 0.02&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V620&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1556.31 ± 2.82&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.24 ± 0.09&lt;/td&gt;
          &lt;td&gt;03d4698&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A4000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2482.74 ± 26.05&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.07 ± 0.08&lt;/td&gt;
          &lt;td&gt;f5245b5&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla T10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1840.14 ± 1.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;76.05 ± 0.13&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 5700 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;538.31 ± 0.35&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;74.43 ± 0.03&lt;/td&gt;
          &lt;td&gt;4fdbc1e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B580&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;419.49 ± 3.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;72.00 ± 0.24&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M4 Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;557.46 ± 26.87&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.79 ± 4.16&lt;/td&gt;
          &lt;td&gt;1ece0cb6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro W5700&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;446.98 ± 0.39&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;71.30 ± 0.24&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B60&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;274.76 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.54 ± 0.03&lt;/td&gt;
          &lt;td&gt;516a4ca&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 9060 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1915.41 ± 7.90&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;70.52 ± 0.16&lt;/td&gt;
          &lt;td&gt;ed52f36&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;685.51 ± 0.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;66.48 ± 0.02&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6650 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1088.90 ± 0.40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.53 ± 0.75&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1080 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;529.96 ± 0.38&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.63 ± 0.10&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD BC-250&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;356.87 ± 1.24&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;63.14 ± 0.09&lt;/td&gt;
          &lt;td&gt;5886f4f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 3070 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1832.07 ± 57.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.92 ± 0.37&lt;/td&gt;
          &lt;td&gt;ceff6bb&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX 4060 Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2358.03 ± 12.17&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;60.01 ± 0.08&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;484.37 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;59.22 ± 0.15&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1660 Ti Mobile&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;514.34 ± 0.88&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;57.30 ± 0.42&lt;/td&gt;
          &lt;td&gt;b43556e&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 7600 XT&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1024.38 ± 7.56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;56.11 ± 0.02&lt;/td&gt;
          &lt;td&gt;01d8eaa&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro S9300 x2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;243.33 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;55.64 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GB10&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3279.89 ± 26.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.64 ± 0.05&lt;/td&gt;
          &lt;td&gt;b9da444&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6600&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;808.76 ± 0.15&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.24 ± 0.03&lt;/td&gt;
          &lt;td&gt;b1c70e2&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1119.68 + 30.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.07 + 0.09&lt;/td&gt;
          &lt;td&gt;a69d54f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI Max+ 395&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1357.07 ± 10.94&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;53.00 ± 0.13&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 56&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;428.54 ± 0.50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;52.66 ± 0.03&lt;/td&gt;
          &lt;td&gt;92c0b38&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc B570&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;288.51 ± 0.09&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50.49 ± 0.05&lt;/td&gt;
          &lt;td&gt;7f76692&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P104-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;325.30 ± 0.25&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;48.64 ± 0.04&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro V340&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;360.23 ± 0.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.54 ± 0.06&lt;/td&gt;
          &lt;td&gt;9da3dcd&lt;/td&gt;
          &lt;td&gt;Split across two GPUs&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 6800M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;784.16 ± 2.76&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;49.06 ± 0.34&lt;/td&gt;
          &lt;td&gt;8e6f8bc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX Vega 64&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;320.12 ± 0.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.06 ± 0.01&lt;/td&gt;
          &lt;td&gt;ec428b0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia RTX A2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1361.85 ± 3.26&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.69 ± 0.20&lt;/td&gt;
          &lt;td&gt;b1afcab&lt;/td&gt;
          &lt;td&gt;coopmat2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A770M&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;384.74 ± 0.78&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;45.68 ± 0.06&lt;/td&gt;
          &lt;td&gt;eeee367&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc A750&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;303.37 ± 1.44&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.96 ± 0.03&lt;/td&gt;
          &lt;td&gt;c1b1876&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;292.85 ± 0.23&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.42 ± 0.34&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;eGPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1070&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;330.84 ± 1.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.33 ± 0.06&lt;/td&gt;
          &lt;td&gt;360d653&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla M40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;93.35 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.68 ± 0.01&lt;/td&gt;
          &lt;td&gt;b8372ee&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Arc Pro B50&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;132.48 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;41.02 ± 0.04&lt;/td&gt;
          &lt;td&gt;7b43f55&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 470&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;197.26 ± 0.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.28 ± 0.11&lt;/td&gt;
          &lt;td&gt;3769fe6&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon RX 480&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;194.52 ± 0.61&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;37.23 ± 0.09&lt;/td&gt;
          &lt;td&gt;0bcb40b&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Ultra&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;198.83 ± 0.85&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;198.83 ± 0.85&lt;/td&gt;
          &lt;td&gt;dbb852b&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 980&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;180.97 ± 0.74&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;34.16 ± 0.10&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia P106-100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;183.40 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;30.79 ± 0.32&lt;/td&gt;
          &lt;td&gt;23bc779&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD FirePro W8100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;140.52 ± 0.34&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;29.28 ± 0.14&lt;/td&gt;
          &lt;td&gt;4536363&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla P4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;287.14 ± 0.29&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;28.37 ± 0.24&lt;/td&gt;
          &lt;td&gt;24d2ee0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Quadro P2000&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;181.71 ± 0.12&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.77 ± 0.02&lt;/td&gt;
          &lt;td&gt;63f8fe0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 200 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;536.48 ± 1.27&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;23.05 ± 0.04&lt;/td&gt;
          &lt;td&gt;cea560f&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen AI 9 300 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;532.59 ± 3.55&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22.31 ± 0.06&lt;/td&gt;
          &lt;td&gt;N/A&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 6000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;277.91 ± 0.37&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;21.15 ± 0.09&lt;/td&gt;
          &lt;td&gt;ee09828&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2 Pro&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;58.86 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.97 ± 0.03&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;297.39 ± 1.22&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.59 ± 0.38&lt;/td&gt;
          &lt;td&gt;a5c07dc&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 7000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;312.85 ± 2.51&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.09 ± 0.35&lt;/td&gt;
          &lt;td&gt;835b2b9&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia GTX 1050 Ti&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;127.54 ± 1.03&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;20.08 ± 0.17&lt;/td&gt;
          &lt;td&gt;2f0c2db&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Radeon Pro WX 4100&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;75.59 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;16.56 ± 0.04&lt;/td&gt;
          &lt;td&gt;860a9e4&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M1&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;35.93 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.85 ± 0.02&lt;/td&gt;
          &lt;td&gt;2370665&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Apple M2&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;46.81 ± 0.08&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;12.25 ± 2.30&lt;/td&gt;
          &lt;td&gt;8c0d6bb&lt;/td&gt;
          &lt;td&gt;Asahi Linux&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;79.06 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.75 ± 0.00&lt;/td&gt;
          &lt;td&gt;5d195f1&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 1100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;174.77 ± 4.47&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;10.58 ± 0.03&lt;/td&gt;
          &lt;td&gt;abb9f3c&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K40&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;64.37 ± 0.02&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.92 ± 0.06&lt;/td&gt;
          &lt;td&gt;eec1e33&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 4000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;113.32 ± 0.01&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.87 ± 0.01&lt;/td&gt;
          &lt;td&gt;4b385bf&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nvidia Tesla K80&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;88.26 ± 0.19&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;9.49 ± 0.01&lt;/td&gt;
          &lt;td&gt;5d46bab&lt;/td&gt;
          &lt;td&gt;Running on single GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AMD Ryzen 5 3000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;47.41 ± 0.14&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;8.47 ± 0.01&lt;/td&gt;
          &lt;td&gt;1fe0029&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core Ultra 100 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;77.66 ± 2.75&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7.75 ± 0.05&lt;/td&gt;
          &lt;td&gt;2e89f76&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel Core 8000 Series&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.55 ± 0.04&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.35 ± 0.02&lt;/td&gt;
          &lt;td&gt;c4df49a&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Intel N150&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;25.59 ± 0.00&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;2.91 ± 0.00&lt;/td&gt;
          &lt;td&gt;4f63cd7&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;這些表格該怎麼用&#34;&gt;這些表格該怎麼用
&lt;/h2&gt;&lt;p&gt;如果你只是想買卡，或者看手裡機器大概在哪個檔位，最實用的讀法其實是這三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先看你關心的是 &lt;code&gt;tg128&lt;/code&gt; 還是 &lt;code&gt;pp512&lt;/code&gt;。&lt;br&gt;
日常對話、寫程式、聊天體感，優先看 &lt;code&gt;tg128&lt;/code&gt;；長上下文吞吐、批次處理、服務端壓 prompt，則更應該看 &lt;code&gt;pp512&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再看你實際跑的後端。&lt;br&gt;
Nvidia 通常看 &lt;code&gt;CUDA&lt;/code&gt; 更貼近真實上限；AMD 機器更應該先對照 &lt;code&gt;ROCm&lt;/code&gt; 和 &lt;code&gt;Vulkan&lt;/code&gt;；跨平台相容場景則更適合參考 &lt;code&gt;Vulkan&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最後再看 &lt;code&gt;FA&lt;/code&gt;。&lt;br&gt;
很多卡開啟 &lt;code&gt;FA&lt;/code&gt; 後 &lt;code&gt;pp512&lt;/code&gt; 會漲得更明顯，但 &lt;code&gt;tg128&lt;/code&gt; 不一定同步大漲，所以不能只看單個最高分。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;一句話總結&#34;&gt;一句話總結
&lt;/h2&gt;&lt;p&gt;同樣是 &lt;code&gt;llama.cpp&lt;/code&gt; 跑分，&lt;code&gt;pp512&lt;/code&gt;、&lt;code&gt;tg128&lt;/code&gt;、&lt;code&gt;Q4_0&lt;/code&gt;、&lt;code&gt;FA&lt;/code&gt;、&lt;code&gt;CUDA / ROCm / Vulkan&lt;/code&gt; 分別代表完全不同的維度。先把口徑分清，再看數字，榜單才有意義。&lt;/p&gt;
&lt;p&gt;如果你只想記一個最短結論，那就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt; 目前整體最強&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ROCm&lt;/code&gt; 在高階 AMD 卡上已經很能打&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Vulkan&lt;/code&gt; 覆蓋最廣，老卡、核顯、Intel Arc、Apple Asahi 都能找到可比條目&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 比 &lt;code&gt;pp512&lt;/code&gt; 更接近日常真實體感&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;原始來源&#34;&gt;原始來源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA discussion #15013: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Silicon discussion #4167: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/4167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/4167&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ROCm discussion #15021: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15021&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vulkan discussion #10879: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10879&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10879&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>顯卡推理速度測試的常用指標具體含義：FA、pp512、tg128、Q4_0 都是什麼意思</title>
        <link>https://knightli.com/zh-tw/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</link>
        <pubDate>Thu, 23 Apr 2026 00:15:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</guid>
        <description>&lt;p&gt;只要你開始看本地大模型或顯卡推理速度測試，很快就會遇到一堆縮寫：&lt;code&gt;FA&lt;/code&gt;、&lt;code&gt;pp512&lt;/code&gt;、&lt;code&gt;tg128&lt;/code&gt;、&lt;code&gt;Q4_0&lt;/code&gt;。它們看起來都像是效能指標，但如果沒有上下文，確實很容易看得一頭霧水。&lt;/p&gt;
&lt;p&gt;例如你可能會看到這樣一行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再往下看，又會看到像這樣的欄位：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 t/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tg128 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果不把這些詞拆開理解，你很難真正看懂這類速度測試到底在測什麼，也很難知道兩張不同顯示卡的成績到底該怎麼比。&lt;/p&gt;
&lt;p&gt;這篇文章不打算討論「哪張卡更值得買」，而是專門把顯卡推理速度測試裡最常見的幾個指標拆開講清楚。&lt;/p&gt;
&lt;h2 id=&#34;先看整行標題到底在說什麼&#34;&gt;先看整行標題到底在說什麼
&lt;/h2&gt;&lt;p&gt;像 &lt;code&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)&lt;/code&gt; 這樣一行，其實已經把測試背景交代得差不多了。&lt;/p&gt;
&lt;p&gt;它至少包含四層資訊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt;：說明跑分是在 NVIDIA GPU 的 CUDA 路徑上完成的&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Llama 2 7B&lt;/code&gt;：說明測試對象是 &lt;code&gt;Llama 2&lt;/code&gt; 的 &lt;code&gt;7B&lt;/code&gt; 參數版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;：說明模型用了 4-bit 量化格式&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt;：說明這次測試關閉了 &lt;code&gt;Flash Attention&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，這種標題的完整意思通常是：&lt;/p&gt;
&lt;p&gt;「在 NVIDIA 顯示卡上，執行某個量化版本的大模型，並測量它在特定推理路徑下的速度表現。」&lt;/p&gt;
&lt;h2 id=&#34;fa-是什麼flash-attention&#34;&gt;FA 是什麼：Flash Attention
&lt;/h2&gt;&lt;p&gt;這裡的 &lt;code&gt;FA&lt;/code&gt;，指的是 &lt;code&gt;Flash Attention&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它是大模型推理和訓練中非常關鍵的一類加速技術，主要目標是優化注意力機制的計算方式。因為在 Transformer 模型裡，注意力計算本來就是最耗時、最吃顯存頻寬的部分之一。&lt;/p&gt;
&lt;p&gt;傳統注意力實作的一個問題是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要頻繁讀寫顯存&lt;/li&gt;
&lt;li&gt;中間結果很多&lt;/li&gt;
&lt;li&gt;資料會在顯存和片上快取之間來回搬運&lt;/li&gt;
&lt;li&gt;上下文一長，開銷會非常明顯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Flash Attention&lt;/code&gt; 做的事情，可以簡單理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重新組織計算順序&lt;/li&gt;
&lt;li&gt;減少中間結果落到顯存的次數&lt;/li&gt;
&lt;li&gt;讓更多操作留在更快的快取裡完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它的典型效果通常有三點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;更快&lt;/li&gt;
&lt;li&gt;更省顯存&lt;/li&gt;
&lt;li&gt;在數學上和普通注意力等價，不是「犧牲精度換速度」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這也是為什麼今天很多推理框架、訓練框架都把它當成非常重要的優化項。&lt;/p&gt;
&lt;h2 id=&#34;no-fa-是什麼意思&#34;&gt;no FA 是什麼意思
&lt;/h2&gt;&lt;p&gt;既然 &lt;code&gt;FA&lt;/code&gt; 是 &lt;code&gt;Flash Attention&lt;/code&gt;，那麼 &lt;code&gt;no FA&lt;/code&gt; 就很好理解了：這次測試沒有啟用 &lt;code&gt;Flash Attention&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;也就是說，跑分用的是更傳統的注意力實作。&lt;/p&gt;
&lt;p&gt;之所以很多跑分表會特地把 &lt;code&gt;no FA&lt;/code&gt; 標出來，通常是為了下面幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做對照組，方便看出開啟 &lt;code&gt;FA&lt;/code&gt; 後到底提升了多少&lt;/li&gt;
&lt;li&gt;相容某些不支援 &lt;code&gt;FA&lt;/code&gt; 的硬體或軟體環境&lt;/li&gt;
&lt;li&gt;避免不同測試項混在一起，導致資料不可比&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以你看到 &lt;code&gt;no FA&lt;/code&gt; 時，不要把它理解成「這張卡不行」，更準確的理解是：&lt;/p&gt;
&lt;p&gt;「這個成績是在沒有開啟 Flash Attention 優化的前提下測出來的。」&lt;/p&gt;
&lt;h2 id=&#34;q4_0-是什麼量化格式&#34;&gt;Q4_0 是什麼：量化格式
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; 指的是一種 4-bit 量化格式。&lt;/p&gt;
&lt;p&gt;大模型原始權重通常不是這種低精度格式，直接載入時體積會非常大。量化做的事情，本質上就是把原本更高精度的權重壓縮成更低位寬的表示方式，讓模型更容易在消費級顯示卡上運行。&lt;/p&gt;
&lt;p&gt;你可以先把它粗略理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q&lt;/code&gt;：Quantization，量化&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;：4-bit&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_0&lt;/code&gt;：某一種具體量化方案的標識&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的重要意義在於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;減少模型體積&lt;/li&gt;
&lt;li&gt;降低顯存需求&lt;/li&gt;
&lt;li&gt;讓本來裝不下的模型變得能跑起來&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; 的意思，不是「一個普通的 7B 模型」，而是「一個已經經過 4-bit 量化壓縮的 7B 模型」。&lt;/p&gt;
&lt;h2 id=&#34;pp512-ts-是什麼意思&#34;&gt;pp512 t/s 是什麼意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 一般指的是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Processing 512 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;它衡量的是模型處理輸入提示詞時的速度，單位通常是 &lt;code&gt;t/s&lt;/code&gt;，也就是 &lt;code&gt;tokens per second&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這裡的 &lt;code&gt;512&lt;/code&gt;，表示測試時輸入的提示詞長度是 &lt;code&gt;512 token&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這個指標測的不是「吐字速度」，而是模型在開始回答之前，對輸入內容做編碼和計算的速度。你可以把它理解成模型在「先把你說的話讀完」的階段有多快。&lt;/p&gt;
&lt;p&gt;這個階段通常有一個很重要的特點：並行度比較高。&lt;/p&gt;
&lt;p&gt;因為輸入序列可以成批處理，所以 GPU 在這個階段往往能把算力壓得很滿。也正因如此，&lt;code&gt;pp512&lt;/code&gt; 的數值經常會非常高，看起來甚至高得有點誇張。&lt;/p&gt;
&lt;p&gt;所以如果你看到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 ≈ 14000 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要驚訝，這測的是「輸入處理吞吐量」，不是模型一邊一邊吐字的速度。&lt;/p&gt;
&lt;h2 id=&#34;tg128-ts-是什麼意思&#34;&gt;tg128 t/s 是什麼意思
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; 一般指的是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Text Generation 128 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;它測的是模型連續生成 &lt;code&gt;128 token&lt;/code&gt; 時的平均生成速度，單位同樣是 &lt;code&gt;t/s&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這個指標更接近我們平時對「模型回答快不快」的直覺感受，因為它真的在測輸出階段。&lt;/p&gt;
&lt;p&gt;但它和 &lt;code&gt;pp512&lt;/code&gt; 最大的不同在於：文本生成通常是自回歸的。&lt;/p&gt;
&lt;p&gt;簡單說就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要先算出第一個 token&lt;/li&gt;
&lt;li&gt;才能繼續算第二個 token&lt;/li&gt;
&lt;li&gt;再繼續算第三個 token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以這個階段沒法像輸入處理那樣大規模並行，速度天然會慢很多。&lt;/p&gt;
&lt;p&gt;這也是為什麼你經常會看到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt; 是上萬 &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; 卻只有幾百 &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是跑分出錯，而是它們本來就在測兩種完全不同的工作負載。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-pp512-和-tg128-會差這麼多&#34;&gt;為什麼 pp512 和 tg128 會差這麼多
&lt;/h2&gt;&lt;p&gt;這是很多人第一次看 scoreboard 時最困惑的一點。&lt;/p&gt;
&lt;p&gt;原因可以概括成一句話：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 更像在測並行吞吐，&lt;code&gt;tg128&lt;/code&gt; 更像在測逐 token 生成能力。`&lt;/p&gt;
&lt;p&gt;再展開一點說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;輸入階段更容易並行&lt;/li&gt;
&lt;li&gt;輸出階段更依賴逐步遞推&lt;/li&gt;
&lt;li&gt;生成階段通常更吃顯存頻寬和快取效率&lt;/li&gt;
&lt;li&gt;所以生成速度遠低於輸入處理速度是正常現象&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也正因為這樣，很多時候兩張卡的表現會出現一種很有意思的情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;pp512&lt;/code&gt; 上，一張卡更強&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;tg128&lt;/code&gt; 上，另一張卡反而略快&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這並不矛盾。因為一個更偏算力峰值，一個更偏實際生成路徑下的頻寬和延遲表現。&lt;/p&gt;
&lt;h2 id=&#34;ts-到底怎麼理解&#34;&gt;t/s 到底怎麼理解
&lt;/h2&gt;&lt;p&gt;這裡的 &lt;code&gt;t/s&lt;/code&gt;，就是 &lt;code&gt;tokens per second&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;它表示模型每秒能處理或生成多少個 token。&lt;/p&gt;
&lt;p&gt;但需要注意，&lt;code&gt;token&lt;/code&gt; 不是「字」，也不是「單詞」，它是模型分詞器切出來的單位。不同模型、不同語言環境下，一個 token 對應的文本長度可能差別很大。&lt;/p&gt;
&lt;p&gt;所以在實際閱讀跑分時，&lt;code&gt;t/s&lt;/code&gt; 更適合用來做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同模型下不同顯示卡對比&lt;/li&gt;
&lt;li&gt;同環境下不同參數設定對比&lt;/li&gt;
&lt;li&gt;同一框架裡開啟或關閉某個優化項前後的對比&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不太適合直接拿來跨模型、跨框架、跨分詞器硬比「誰絕對更快」。&lt;/p&gt;
&lt;h2 id=&#34;看-scoreboard-時最該先抓住哪幾個點&#34;&gt;看 scoreboard 時，最該先抓住哪幾個點
&lt;/h2&gt;&lt;p&gt;如果你不想每次都被一堆縮寫淹沒，可以先抓這幾個核心問題：&lt;/p&gt;
&lt;h3 id=&#34;1-測試模型是什麼&#34;&gt;1. 測試模型是什麼
&lt;/h3&gt;&lt;p&gt;比如是不是 &lt;code&gt;Llama 2 7B&lt;/code&gt;，是不是同一個量化版本，例如 &lt;code&gt;Q4_0&lt;/code&gt;。模型不同、量化不同，成績直接橫比意義不大。&lt;/p&gt;
&lt;h3 id=&#34;2-有沒有開啟關鍵優化&#34;&gt;2. 有沒有開啟關鍵優化
&lt;/h3&gt;&lt;p&gt;最常見的就是 &lt;code&gt;FA&lt;/code&gt;。如果一個測試開了 &lt;code&gt;Flash Attention&lt;/code&gt;，另一個沒開，那兩邊成績不能簡單直接對讀。&lt;/p&gt;
&lt;h3 id=&#34;3-看的是輸入速度還是輸出速度&#34;&gt;3. 看的是輸入速度還是輸出速度
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; 和 &lt;code&gt;tg128&lt;/code&gt; 分別在測不同階段。一個更像「讀題速度」，一個更像「回答速度」。&lt;/p&gt;
&lt;h3 id=&#34;4-關注的是吞吐還是體感&#34;&gt;4. 關注的是吞吐還是體感
&lt;/h3&gt;&lt;p&gt;如果你更在意長提示詞載入速度，&lt;code&gt;pp512&lt;/code&gt; 更有參考價值；如果你更在意模型回答時的流暢程度，&lt;code&gt;tg128&lt;/code&gt; 往往更貼近真實體感。&lt;/p&gt;
&lt;h2 id=&#34;一個更實用的理解方式&#34;&gt;一個更實用的理解方式
&lt;/h2&gt;&lt;p&gt;如果要把這些指標壓縮成一句最容易記住的話，可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;：模型被壓縮成了 4-bit 量化版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FA&lt;/code&gt;：是不是啟用了 Flash Attention 加速&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;：處理 512 token 輸入時有多快&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;：生成 128 token 輸出時有多快&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;：速度單位，每秒多少 token&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要先把這五件事分清楚，再看類似的 CUDA Scoreboard 時，就更容易判斷「這個分數到底是在測什麼」。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;很多 GPU 跑分表看起來複雜，不是因為指標本身特別神祕，而是因為它把模型、量化、優化項和不同階段的吞吐都壓縮進了很短的幾行縮寫裡。&lt;/p&gt;
&lt;p&gt;一旦把 &lt;code&gt;FA&lt;/code&gt;、&lt;code&gt;Q4_0&lt;/code&gt;、&lt;code&gt;pp512&lt;/code&gt;、&lt;code&gt;tg128&lt;/code&gt; 這些詞拆開，你會發現這類 scoreboard 其實並不難讀。&lt;/p&gt;
&lt;p&gt;真正重要的，不是只記住某張卡跑了多少分，而是知道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;這個分數是在什麼模型下測的&lt;/li&gt;
&lt;li&gt;有沒有開關鍵優化&lt;/li&gt;
&lt;li&gt;它測的是輸入，還是輸出&lt;/li&gt;
&lt;li&gt;它更反映算力，還是更接近實際生成體驗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣你以後再看類似跑分表時，就更容易判斷這些結果分別對應什麼測試條件和性能含義。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>大模型常見張量類型入門：FP32、FP16、BF16、TF32 與 FP8</title>
        <link>https://knightli.com/zh-tw/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/</link>
        <pubDate>Wed, 22 Apr 2026 22:40:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/</guid>
        <description>&lt;p&gt;只要你開始接觸大模型訓練、推理或部署，很快就會遇到一組高頻縮寫：&lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt;、&lt;code&gt;FP8&lt;/code&gt;。它們看起來像是模型頁面上的幾個附加標籤，但實際影響遠不只是「寫法不同」。&lt;/p&gt;
&lt;p&gt;這些類型決定了數字在顯存裡怎麼存、在計算中怎麼表示，也直接影響模型訓練是否穩定、推理速度如何，以及一張顯示卡到底能裝下多大的模型。&lt;/p&gt;
&lt;p&gt;所以如果你想真正理解大模型裡的精度取捨，最值得先補的一課，不是某個具體模型的跑分，而是先把這些常見張量類型各自是什麼、為什麼會這樣設計搞清楚。&lt;/p&gt;
&lt;h2 id=&#34;張量類型到底在決定什麼&#34;&gt;張量類型到底在決定什麼
&lt;/h2&gt;&lt;p&gt;大模型本質上是海量參數參與的矩陣運算，而張量類型就是這些數字在顯存裡如何存、在計算中如何表示。&lt;/p&gt;
&lt;p&gt;它的核心取捨通常圍繞三個維度展開：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精度&lt;/li&gt;
&lt;li&gt;顯存占用&lt;/li&gt;
&lt;li&gt;計算速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這和圖片格式其實很像。無損格式保留細節更多，但體積大、載入慢；壓縮格式會丟掉一部分人眼不敏感的資訊，換來更小的體積與更快的處理速度。大模型之所以能接受這種取捨，是因為在極大量參數裡，很多微小數值變化並不會明顯影響最終輸出。&lt;/p&gt;
&lt;p&gt;也正因如此，模型世界裡才會出現一整套不同精度的張量格式。&lt;/p&gt;
&lt;h2 id=&#34;一個數字是怎麼被表示的&#34;&gt;一個數字是怎麼被表示的
&lt;/h2&gt;&lt;p&gt;理解這些格式之前，可以先記住一個非常基礎的結構。一個浮點數通常由三部分組成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;符號位：決定正負&lt;/li&gt;
&lt;li&gt;指數位：決定數值範圍&lt;/li&gt;
&lt;li&gt;尾數位：決定數值精細程度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在大模型裡，尾數精度當然重要，但很多時候模型更怕的是數值範圍不夠，也就是指數位太小，導致溢出或訓練不穩定。很多張量格式的設計，本質上就是在「範圍」與「細節」之間重新分配有限的 bit 數。&lt;/p&gt;
&lt;p&gt;下面這張圖可以先幫你建立一個整體印象：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tensor-format-overview.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP32、FP16、BF16、TF32 與 FP8 的位寬結構總覽&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;fp32最穩但最貴&#34;&gt;FP32：最穩，但最貴
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP32&lt;/code&gt; 是最傳統的單精度浮點格式，總共 32 bit，也就是 4 個位元組。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp32-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP32 位寬結構示意圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;它的優點很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;數值範圍大&lt;/li&gt;
&lt;li&gt;精度高&lt;/li&gt;
&lt;li&gt;訓練最穩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但問題也同樣明顯：太占顯存。&lt;/p&gt;
&lt;p&gt;一個非常粗略的估算方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;顯存占用 ≈ 參數量 × 每個參數的位元組數
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果一個 27B 模型完全用 &lt;code&gt;FP32&lt;/code&gt; 存權重，那麼光權重本身就大約需要：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;27B × 4 bytes ≈ 108GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這還沒算激活值、KV Cache、優化器狀態與其他執行期開銷。也就是說，&lt;code&gt;FP32&lt;/code&gt; 在今天的大模型推理與訓練裡，已經不是「預設選擇」，而更像是「最穩的基線格式」。&lt;/p&gt;
&lt;h2 id=&#34;fp16體積減半但穩定性一般&#34;&gt;FP16：體積減半，但穩定性一般
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP16&lt;/code&gt; 把每個參數壓縮到 2 個位元組，顯存占用相較 &lt;code&gt;FP32&lt;/code&gt; 直接減半。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp16-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP16 位寬結構示意圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;對同一個 27B 模型來說，如果只看權重體積：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;27B × 2 bytes ≈ 54GB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這就已經能解釋為什麼很多部署說明裡，27B 模型的顯存需求會落在 50GB 左右。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FP16&lt;/code&gt; 的優勢很明顯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顯存壓力大幅下降&lt;/li&gt;
&lt;li&gt;吞吐更高&lt;/li&gt;
&lt;li&gt;早期混合精度訓練大量使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但它的問題在於指數位偏小，動態範圍不夠大。對大模型訓練來說，這會讓溢出更容易發生，需要額外依賴 loss scaling 一類技巧來補救，工程上比較麻煩。&lt;/p&gt;
&lt;p&gt;所以現在 &lt;code&gt;FP16&lt;/code&gt; 仍然常見，但在很多場景裡，它已經不再是最舒服的選擇。&lt;/p&gt;
&lt;h2 id=&#34;bf16大模型時代更實用的半精度&#34;&gt;BF16：大模型時代更實用的半精度
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;BF16&lt;/code&gt; 同樣只占 2 個位元組，但和 &lt;code&gt;FP16&lt;/code&gt; 的設計重點不一樣。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/bf16-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;BF16 位寬結構示意圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;它保留了更大的指數範圍，讓它在動態範圍上更接近 &lt;code&gt;FP32&lt;/code&gt;，只是犧牲了一部分尾數精度。這種取捨對大模型尤其友好，因為很多時候模型對「範圍」更敏感，對尾數少幾位反而沒那麼敏感。&lt;/p&gt;
&lt;p&gt;這也是為什麼現在很多訓練框架、很多大模型論文與大量實際部署方案，都更偏向 &lt;code&gt;BF16&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;你可以把它理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顯存成本接近 &lt;code&gt;FP16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;穩定性體驗更接近 &lt;code&gt;FP32&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一套 27B 部署方案寫的是 50GB 左右顯存，而另一套經過進一步優化後接近 30GB，前者往往還停留在 &lt;code&gt;FP16/BF16&lt;/code&gt; 這一層，後者則通常已經繼續往更低精度或量化方向走了。&lt;/p&gt;
&lt;h2 id=&#34;tf32不是省顯存而是加速-fp32-工作流&#34;&gt;TF32：不是省顯存，而是加速 FP32 工作流
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TF32&lt;/code&gt; 很容易被誤會成「又一種更省的格式」，但它的定位其實不太一樣。&lt;/p&gt;
&lt;p&gt;從常見理解上看，它可以近似視為一種保留較大指數範圍、但縮短尾數精度的計算格式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tf32-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;TF32 計算格式示意圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;不過要注意，&lt;code&gt;TF32&lt;/code&gt; 更像是一條 Tensor Core 計算路徑裡的內部計算格式，而不是像 &lt;code&gt;FP16/BF16&lt;/code&gt; 那樣主要拿來做權重存儲。&lt;/p&gt;
&lt;p&gt;它主要是 NVIDIA 在較新的 GPU 上提供的一種計算模式，目標不是減少顯存占用，而是讓原本基於 &lt;code&gt;FP32&lt;/code&gt; 的訓練流程，在盡量不大改程式碼的前提下跑得更快。&lt;/p&gt;
&lt;p&gt;它的特點可以概括成一句話：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;對外看起來還是 &lt;code&gt;FP32&lt;/code&gt; 工作流&lt;/li&gt;
&lt;li&gt;底層在矩陣乘法時做了更快的近似計算&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;TF32&lt;/code&gt; 主要解決的是「&lt;code&gt;FP32&lt;/code&gt; 太慢」的問題，而不是「&lt;code&gt;FP32&lt;/code&gt; 太占顯存」的問題。如果你關心的是為什麼同一個模型部署時顯存需求不一樣，&lt;code&gt;TF32&lt;/code&gt; 不是最主要的答案。&lt;/p&gt;
&lt;h2 id=&#34;fp8進一步壓縮但更考驗工程能力&#34;&gt;FP8：進一步壓縮，但更考驗工程能力
&lt;/h2&gt;&lt;p&gt;再往下走就是 &lt;code&gt;FP8&lt;/code&gt;。它把單個數值繼續壓縮到更少 bit 數，進一步降低顯存頻寬與存儲成本。&lt;/p&gt;
&lt;p&gt;它常見的不是單一一種格式，而是兩類變體：&lt;code&gt;E4M3&lt;/code&gt; 和 &lt;code&gt;E5M2&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/fp8-layout.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FP8 兩種常見變體示意圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;FP8&lt;/code&gt; 的代價也很明顯：位數太少以後，你很難同時兼顧範圍和精度，因此實際工程裡通常會針對不同階段採用不同變體，分別照顧前向、反向與梯度的穩定性。&lt;/p&gt;
&lt;p&gt;這類格式代表的是一種更激進的思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;願意犧牲更多精度&lt;/li&gt;
&lt;li&gt;換取更低的存儲與更高的吞吐&lt;/li&gt;
&lt;li&gt;需要更成熟的硬體與訓練框架配合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它很有前景，但對一般使用者來說，日常最常碰到的核心分界點，通常還是 &lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt; 和 &lt;code&gt;BF16&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;為什麼理解這些類型很重要&#34;&gt;為什麼理解這些類型很重要
&lt;/h2&gt;&lt;p&gt;很多人第一次看到這些縮寫，會把它們理解成「模型下載頁上的一些實作細節」。但實際上，它們會直接改變你對模型訓練與部署的理解方式。&lt;/p&gt;
&lt;p&gt;例如同樣一張顯示卡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;為什麼有些模型訓練必須強調數值穩定性&lt;/li&gt;
&lt;li&gt;為什麼有些推理方案會優先談量化與低精度&lt;/li&gt;
&lt;li&gt;為什麼看起來參數量相近的模型，部署門檻卻差很多&lt;/li&gt;
&lt;li&gt;為什麼有些格式適合存權重，有些格式更適合做計算路徑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些問題往下拆，最後幾乎都會回到同一個核心：你到底怎麼在「精度、範圍、顯存和速度」之間做取捨。&lt;/p&gt;
&lt;p&gt;也正因如此，理解 &lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt; 和 &lt;code&gt;FP8&lt;/code&gt;，不只是為了看懂術語表，而是為了在面對訓練配置、推理引擎與部署門檻時，知道這些數字背後到底在交換什麼。&lt;/p&gt;
&lt;h2 id=&#34;一個實用的理解框架&#34;&gt;一個實用的理解框架
&lt;/h2&gt;&lt;p&gt;如果你不想一開始就記一堆格式細節，可以先用下面這個順序理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FP32&lt;/code&gt;：最穩、最貴&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP16&lt;/code&gt;：更省顯存，但範圍偏小&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BF16&lt;/code&gt;：顯存接近 &lt;code&gt;FP16&lt;/code&gt;，穩定性更適合大模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TF32&lt;/code&gt;：主要解決 &lt;code&gt;FP32&lt;/code&gt; 太慢，不主要解決顯存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP8&lt;/code&gt;：更激進的壓縮與加速路線&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/tensor-format-summary.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;常見張量類型總結圖&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;當你以後再看到模型下載頁裡寫著 &lt;code&gt;fp16&lt;/code&gt;、&lt;code&gt;bf16&lt;/code&gt;、&lt;code&gt;fp8&lt;/code&gt;，或者看到不同部署教學給出完全不一樣的顯存門檻時，就不會再覺得那只是「寫法不同」。它們背後其實對應的是完全不同的精度預算與工程取捨。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;大模型裡的張量類型，表面上是在討論 bit 數，實際上討論的是一整套工程取捨。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FP32&lt;/code&gt;、&lt;code&gt;FP16&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt;、&lt;code&gt;TF32&lt;/code&gt; 和 &lt;code&gt;FP8&lt;/code&gt; 沒有絕對的好壞，它們只是分別站在不同的位置上，幫你在穩定性、範圍、精度、顯存和速度之間做平衡。&lt;/p&gt;
&lt;p&gt;如果把這一層看懂，後面無論你是在讀訓練論文、調推理參數，還是比較不同部署方案，都會更容易抓住重點。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>16G 顯卡也能跑 35B 模型：LM Studio 下 MoE 模型的顯存壓縮思路</title>
        <link>https://knightli.com/zh-tw/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</link>
        <pubDate>Wed, 22 Apr 2026 21:47:34 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</guid>
        <description>&lt;p&gt;很多人對 16G 顯存的印象是：本地部署大模型時，大概也就跑到 12B 到 14B，量化之後再往上就會變得很吃力。這個判斷不算離譜，但也不是 16G 顯卡真正的上限。&lt;/p&gt;
&lt;p&gt;如果模型選型和參數設定都合適，16G 顯卡其實不一定只能停留在「小參數量模型」這一檔。圍繞這件事，一套比較有代表性的思路是：在 &lt;code&gt;LM Studio&lt;/code&gt; 裡利用 &lt;code&gt;MoE&lt;/code&gt; 模型和合理的卸載策略，把 35B 級模型跑到比較可用的速度。&lt;/p&gt;
&lt;h2 id=&#34;01-為什麼-16g-顯卡不一定只能跑-12b-到-14b&#34;&gt;01 為什麼 16G 顯卡不一定只能跑 12B 到 14B
&lt;/h2&gt;&lt;p&gt;這裡的核心觀點很直接：顯存大小固然重要，但模型架構同樣重要。&lt;/p&gt;
&lt;p&gt;如果你拿一個標準稠密模型硬塞進 16G 顯卡，確實很快就會遇到瓶頸。因為這類模型在推理時通常要參與全部參數計算，顯存壓力和帶寬壓力都會直接上來。&lt;/p&gt;
&lt;p&gt;但 &lt;code&gt;MoE&lt;/code&gt; 模型不一樣。它的總參數量可以很大，可是在單次推理時，只會啟動其中一部分專家參數。以 35B 級模型為例，雖然總參數規模不小，但單次推理實際參與計算的參數量要小得多，所以它對顯存的實際要求沒有想像中那麼誇張。&lt;/p&gt;
&lt;p&gt;也正因為這樣，16G 顯卡在面對這類模型時，並不是完全沒有操作空間。&lt;/p&gt;
&lt;h2 id=&#34;02-實測重點35b-moe-模型可以跑得很快&#34;&gt;02 實測重點：35B MoE 模型可以跑得很快
&lt;/h2&gt;&lt;p&gt;一個重點案例，是 &lt;code&gt;Qwen 3.5 35B A3B&lt;/code&gt; 一類的 &lt;code&gt;MoE&lt;/code&gt; 模型量化版本。在 16G 顯卡配合 &lt;code&gt;LM Studio&lt;/code&gt; 做參數調整後，&lt;code&gt;Q6&lt;/code&gt; 量化大約能跑到 30 多 &lt;code&gt;tokens/s&lt;/code&gt;，此前 &lt;code&gt;Q4&lt;/code&gt; 量化甚至能測到更高的速度。&lt;/p&gt;
&lt;p&gt;這個結果之所以有參考價值，不只是因為「能跑」，而是因為速度已經進入了「明顯可用」的區間。&lt;/p&gt;
&lt;p&gt;作為對比，同類大參數量但不是 &lt;code&gt;MoE&lt;/code&gt; 的模型，在 16G 顯卡上如果直接硬跑，往往會出現爆顯存、速度明顯掉下來的情況。換句話說，決定結果的不是單純看參數總量，而是看模型在推理時到底怎麼用這些參數。&lt;/p&gt;
&lt;h2 id=&#34;03-在-lm-studio-裡重點不只一個參數&#34;&gt;03 在 LM Studio 裡，重點不只一個參數
&lt;/h2&gt;&lt;p&gt;想在 16G 顯卡上把這類模型跑順，關鍵不是碰運氣，而是調對兩個參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU Offload&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;強制把部分專家層載入到 CPU 記憶體的參數&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第一項比較好理解，&lt;code&gt;GPU Offload&lt;/code&gt; 基本就是能拉多高就拉多高，讓模型盡量優先使用顯卡計算。&lt;/p&gt;
&lt;p&gt;第二項才是這裡的重點。它的作用不是傳統意義上那種「顯存爆了之後再借系統記憶體」，而是主動把一部分專家層放到 CPU 記憶體裡，提前降低顯存占用。因為 &lt;code&gt;MoE&lt;/code&gt; 模型本來就不是每次都要把所有專家都啟動，所以把一部分專家放到記憶體裡，對整體推理速度的影響沒有很多人想像中那麼誇張。&lt;/p&gt;
&lt;p&gt;比較穩妥的做法，是先在一個區間裡嘗試，再根據自己的機器慢慢調：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以先把相關參數設到 &lt;code&gt;20&lt;/code&gt; 到 &lt;code&gt;35&lt;/code&gt; 之間&lt;/li&gt;
&lt;li&gt;然後結合顯存占用和記憶體壓力，逐步微調&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本質上，這套方法就是用系統記憶體去換顯存空間。&lt;/p&gt;
&lt;h2 id=&#34;04-128k-上下文下也能跑縮小上下文還能繼續壓顯存&#34;&gt;04 128K 上下文下也能跑，縮小上下文還能繼續壓顯存
&lt;/h2&gt;&lt;p&gt;還有一個比較有意思的點：測試時把上下文長度拉到了 &lt;code&gt;128K&lt;/code&gt;，在這種偏激進的設定下，35B 級 &lt;code&gt;MoE&lt;/code&gt; 模型依然能跑出比較高的速度。&lt;/p&gt;
&lt;p&gt;這說明一個問題，16G 顯卡的瓶頸沒有想像中那麼死板。尤其在 &lt;code&gt;LM Studio&lt;/code&gt; 這種本地推理工具裡，很多時候不是「能不能運行」的二選一，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你願不願意拿更多記憶體換顯存&lt;/li&gt;
&lt;li&gt;你願不願意縮短上下文長度&lt;/li&gt;
&lt;li&gt;你願不願意接受不同量化版本之間的能力差異&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果把上下文從 &lt;code&gt;128K&lt;/code&gt; 進一步縮到 &lt;code&gt;64K&lt;/code&gt; 或 &lt;code&gt;32K&lt;/code&gt;，顯存壓力還可以繼續下降。也就是說，某些 35B 級 &lt;code&gt;MoE&lt;/code&gt; 模型甚至可能在更小顯存的顯卡上勉強跑起來，只是速度和記憶體壓力要重新權衡。&lt;/p&gt;
&lt;h2 id=&#34;05-這種方法的代價對系統記憶體和虛擬記憶體要求更高&#34;&gt;05 這種方法的代價：對系統記憶體和虛擬記憶體要求更高
&lt;/h2&gt;&lt;p&gt;這類方案並不是白送性能。&lt;/p&gt;
&lt;p&gt;需要注意的是，當顯存壓力被進一步壓縮時，系統記憶體占用會明顯上升，虛擬記憶體的壓力也會變大。換句話說，你省下來的不是成本，只是把壓力從顯卡挪到了記憶體和磁碟交換空間上。&lt;/p&gt;
&lt;p&gt;所以如果你也想照著試，最好先確認幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的系統記憶體是否足夠&lt;/li&gt;
&lt;li&gt;虛擬記憶體是否留得夠大&lt;/li&gt;
&lt;li&gt;機器背景是否還有很多佔資源的軟體在運行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些條件跟不上，最後看到的可能不是「35B 也能飛快跑」，而是整台機器都被拖慢。&lt;/p&gt;
&lt;h2 id=&#34;06-量化版本也不是越激進越好&#34;&gt;06 量化版本也不是越激進越好
&lt;/h2&gt;&lt;p&gt;這裡還有一個實際取捨：雖然更低位數的量化通常能進一步節省顯存，但不一定就是最合適的方案。&lt;/p&gt;
&lt;p&gt;實際經驗是，有些模型在 &lt;code&gt;Q4&lt;/code&gt; 下速度確實更高，但對原始能力的影響也更明顯；相對來說，&lt;code&gt;Q6&lt;/code&gt; 在速度和能力保留之間更平衡。所以最終不一定要無腦追求最小體積，而是要看你更在意什麼：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你主要追求速度和塞進顯存&lt;/li&gt;
&lt;li&gt;或者你更在意模型原有能力的保留&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這兩種取向，對應的量化選擇可能並不一樣。&lt;/p&gt;
&lt;h2 id=&#34;07-哪些模型思路值得試&#34;&gt;07 哪些模型思路值得試
&lt;/h2&gt;&lt;p&gt;從這個思路來看，最值得嘗試的並不是「盲目追大參數量」，而是優先找適合這種玩法的模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MoE&lt;/code&gt; 架構模型&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;LM Studio&lt;/code&gt; 裡支援較好、量化版本較全的模型&lt;/li&gt;
&lt;li&gt;對長上下文或指令跟隨有明確優勢的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了主講的 35B &lt;code&gt;MoE&lt;/code&gt; 模型，這類方案也適合延伸到一些其他方向，比如偏長上下文記憶、指令遵循表現更好的實驗性模型，以及一些速度表現不錯的輕量量化版本。&lt;/p&gt;
&lt;p&gt;這類推薦背後的邏輯其實很一致：先找架構上適合「記憶體換顯存」的模型，再談參數調優，而不是先看參數量再決定能不能跑。&lt;/p&gt;
&lt;h2 id=&#34;08-簡單總結&#34;&gt;08 簡單總結
&lt;/h2&gt;&lt;p&gt;如果你手裡正好是一張 16G 顯卡，覺得本地大模型最多只能玩 12B 到 14B，這種想法可以稍微更新一下。&lt;/p&gt;
&lt;p&gt;更準確的說法應該是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16G 顯卡跑大模型並不是完全沒戲&lt;/li&gt;
&lt;li&gt;稠密模型和 &lt;code&gt;MoE&lt;/code&gt; 模型要分開看&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LM Studio&lt;/code&gt; 裡的 &lt;code&gt;GPU Offload&lt;/code&gt; 和專家層轉移到 CPU 記憶體的參數，能明顯改變顯存占用情況&lt;/li&gt;
&lt;li&gt;你實際上是在用更高的記憶體壓力，換更大的模型規模和更高的可用速度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套思路不一定適合所有機器，但它至少說明了一點：本地部署大模型時，顯存上限不是唯一限制，模型架構和推理配置同樣重要。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 多 Agent 協作：Subagents 和 Agent Teams 怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/04/22/claude-code-subagents-vs-agent-teams/</link>
        <pubDate>Wed, 22 Apr 2026 21:35:52 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/claude-code-subagents-vs-agent-teams/</guid>
        <description>&lt;p&gt;在 Claude Code 裡，和多 Agent 協作最容易混淆的兩個概念，就是 &lt;code&gt;Subagents&lt;/code&gt; 和 &lt;code&gt;Agent Teams&lt;/code&gt;。它們看起來都像是「開幾個 Agent 一起做事」，但定位其實不一樣。簡單說，前者更適合把獨立任務分出去做，後者更適合讓多個 Agent 圍繞同一件事持續協作、彼此驗證。&lt;/p&gt;
&lt;p&gt;如果你之前用過 Skill，也可以先這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill 負責定義流程和規則&lt;/li&gt;
&lt;li&gt;Subagent 或 Agent teammate 負責實際執行任務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正的問題不是哪個「更高級」，而是你要處理的是哪一類協作問題。&lt;/p&gt;
&lt;h2 id=&#34;subagents把支線任務分出去&#34;&gt;Subagents：把支線任務分出去
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Subagents&lt;/code&gt; 更像是在目前會話裡臨時派出去的分身。每個分身都有自己的上下文視窗，做完之後只把結果摘要帶回來，主對話不會被大量中間輸出塞滿。&lt;/p&gt;
&lt;p&gt;這類能力有幾個很直接的優點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主線對話更乾淨，不容易被測試日誌、搜尋結果或長輸出污染&lt;/li&gt;
&lt;li&gt;可以把彼此獨立的研究或執行任務並行化&lt;/li&gt;
&lt;li&gt;很適合「把結果帶回來就好」的任務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原文提到，Claude Code 內建了三類 Subagent：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Explore&lt;/code&gt;：唯讀，適合快速搜尋程式碼庫&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan&lt;/code&gt;：唯讀，適合在 plan mode 裡於背景收集資訊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;General-purpose&lt;/code&gt;：可讀可寫，適合同時探索與修改的任務&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;自訂-subagent&#34;&gt;自訂 Subagent
&lt;/h3&gt;&lt;p&gt;如果內建能力不夠，可以自己定義一個 Subagent。做法不複雜，本質上就是寫一個 Markdown 檔案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.claude/agents/&lt;/code&gt;：只在目前專案生效&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.claude/agents/&lt;/code&gt;：對所有專案生效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;檔案格式類似這樣：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: code-reviewer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tools: Read, Grep, Glob, Bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;model: inherit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;You are a senior code reviewer ensuring high standards of code quality and security.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When invoked:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Run git diff to see recent changes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Focus on modified files
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; Begin review immediately
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Review checklist:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Code is clear and readable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Functions and variables are well-named
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; No duplicated code
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Proper error handling
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; No exposed secrets or API keys
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Input validation implemented
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Good test coverage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Performance considerations addressed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Provide feedback organized by priority:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Critical issues (must fix)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Warnings (should fix)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Suggestions (consider improving)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Include specific examples of how to fix issues.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡最關鍵的是 &lt;code&gt;description&lt;/code&gt;。Claude 會根據這段描述判斷什麼時候該呼叫這個 Subagent，所以寫得越精準，觸發通常越準。&lt;/p&gt;
&lt;p&gt;另外幾個常見設定欄位也很實用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tools&lt;/code&gt;：限制它可以使用哪些工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;：決定使用 &lt;code&gt;sonnet&lt;/code&gt;、&lt;code&gt;opus&lt;/code&gt;、&lt;code&gt;haiku&lt;/code&gt; 或 &lt;code&gt;inherit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;permissionMode&lt;/code&gt;：控制編輯權限與權限提示行為&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memory&lt;/code&gt;：給 Subagent 一個跨對話記憶目錄&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是暫時要用一次，也可以直接透過 CLI 注入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude --agents &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;code-reviewer&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;description&amp;#34;: &amp;#34;Expert code reviewer. Use proactively after code changes.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;prompt&amp;#34;: &amp;#34;You are a senior code reviewer. Focus on code quality, security, and best practices.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;tools&amp;#34;: [&amp;#34;Read&amp;#34;, &amp;#34;Grep&amp;#34;, &amp;#34;Glob&amp;#34;, &amp;#34;Bash&amp;#34;],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#34;model&amp;#34;: &amp;#34;sonnet&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;subagents-適合什麼場景&#34;&gt;Subagents 適合什麼場景
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Subagents&lt;/code&gt; 最適合的，通常是這幾類任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跑測試並只回傳失敗摘要，而不是把幾千行日誌全塞回主會話&lt;/li&gt;
&lt;li&gt;並行調查幾個互不依賴的模組&lt;/li&gt;
&lt;li&gt;把「找問題」和「修問題」拆成簡單的流水線&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Research the authentication, database, and API modules in parallel using separate subagents
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use the code-reviewer subagent to find performance issues, then use the optimizer subagent to fix them
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;但如果任務需要頻繁來回調整、不同階段共享大量上下文，或者改動高度集中在一兩個檔案裡，那麼直接在主對話中處理，往往比另外派一個 Subagent 更省事。&lt;/p&gt;
&lt;h2 id=&#34;agent-teams多個獨立會話一起協作&#34;&gt;Agent Teams：多個獨立會話一起協作
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; 是另一個層級的能力。它不是在同一個會話裡派出分身，而是啟動多個彼此獨立的 Claude Code 實例，讓它們圍繞共享任務清單協作，還可以彼此直接傳訊。&lt;/p&gt;
&lt;p&gt;這也讓它更像是一個真正的小團隊，而不只是「把支線任務分出去」。&lt;/p&gt;
&lt;p&gt;原文提到，這項功能目前仍然是實驗功能，需要先開啟：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;把它加到 &lt;code&gt;settings.json&lt;/code&gt; 後，就可以讓 Claude 依照你的需求組成一個 team。比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I&amp;#39;m designing a CLI tool that helps developers track TODO comments across
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;their codebase. Create an agent team to explore this from different angles: one
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;teammate on UX, one on technical architecture, one playing devil&amp;#39;s advocate.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;agent-teams-的組成&#34;&gt;Agent Teams 的組成
&lt;/h3&gt;&lt;p&gt;一個 Agent Team 主要由三部分組成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team lead：你目前使用的主會話，負責組隊、分派與彙總&lt;/li&gt;
&lt;li&gt;Teammates：多個彼此獨立的 Claude Code 實例&lt;/li&gt;
&lt;li&gt;Task list 和 Mailbox：共享任務清單與訊息通道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;和 &lt;code&gt;Subagents&lt;/code&gt; 最大的差別在於，teammates 之間可以直接溝通，不需要每次都透過 lead 中轉。任務狀態通常會在 &lt;code&gt;pending&lt;/code&gt;、&lt;code&gt;in progress&lt;/code&gt;、&lt;code&gt;completed&lt;/code&gt; 之間流轉，而成員完成一項任務後，也可以繼續認領下一項。&lt;/p&gt;
&lt;h3 id=&#34;agent-teams-適合什麼場景&#34;&gt;Agent Teams 適合什麼場景
&lt;/h3&gt;&lt;p&gt;當任務需要多角度討論、互相挑戰結論，或者拆成多個模組並行推進時，&lt;code&gt;Agent Teams&lt;/code&gt; 會更合適。&lt;/p&gt;
&lt;p&gt;原文舉了幾個很典型的場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多位 reviewer 並行審查同一個 PR，但各自關注不同面向&lt;/li&gt;
&lt;li&gt;多個 Agent 針對同一個 bug 提出不同假設，並互相反駁&lt;/li&gt;
&lt;li&gt;前端、後端、測試分別推進不同模組&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如並行程式碼審查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an agent team to review PR &lt;span class=&#34;ni&#34;&gt;#142&lt;/span&gt;. Spawn three reviewers:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One focused on security implications
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One checking performance impact
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; One validating test coverage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Have them each review and report findings.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再比如辯論式偵錯：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Users report the app exits after one message instead of staying connected.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Spawn 5 agent teammates to investigate different hypotheses. Have them talk to
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;each other to try to disprove each other&amp;#39;s theories, like a scientific
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;debate. Update the findings doc with whatever consensus emerges.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這類任務的共同點是：你不是只要一個答案，而是需要多個 Agent 彼此交換判斷、質疑假設，最後收斂出更可靠的結論。&lt;/p&gt;
&lt;h2 id=&#34;兩者怎麼選&#34;&gt;兩者怎麼選
&lt;/h2&gt;&lt;p&gt;如果想快速區分，可以直接記這條：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做完把結果帶回來，用 &lt;code&gt;Subagents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;需要討論與交叉驗證，用 &lt;code&gt;Agent Teams&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;再展開一點，主要差異可以從這幾個面向來看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通訊方式：&lt;code&gt;Subagents&lt;/code&gt; 主要把結果回報給主會話；&lt;code&gt;Agent Teams&lt;/code&gt; 的成員之間可以直接互相溝通&lt;/li&gt;
&lt;li&gt;協調模式：&lt;code&gt;Subagents&lt;/code&gt; 更依賴主對話統一調度；&lt;code&gt;Agent Teams&lt;/code&gt; 有共享任務清單，成員可以自行認領&lt;/li&gt;
&lt;li&gt;Token 成本：&lt;code&gt;Subagents&lt;/code&gt; 較省；&lt;code&gt;Agent Teams&lt;/code&gt; 較高，因為每個 teammate 都是獨立實例&lt;/li&gt;
&lt;li&gt;適用任務：&lt;code&gt;Subagents&lt;/code&gt; 更適合獨立、結果導向的工作；&lt;code&gt;Agent Teams&lt;/code&gt; 更適合需要討論與交叉驗證的工作&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用時要注意什麼&#34;&gt;使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; 雖然更強，但不代表每個任務都值得直接開 team。原文特別提醒了幾個實際問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token 消耗明顯更高&lt;/li&gt;
&lt;li&gt;若多個 teammate 同時編輯同一個檔案，很容易互相覆蓋&lt;/li&gt;
&lt;li&gt;teammate 太多會增加協調成本，不一定帶來更好效果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，通常比較穩妥的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先從 3 到 5 個 teammate 開始&lt;/li&gt;
&lt;li&gt;依模組或檔案拆任務，避免寫入衝突&lt;/li&gt;
&lt;li&gt;如果 lead 太早接手了 teammate 的工作，要明確要求它先等隊友完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，目前的實驗功能也還有一些限制，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不支援 &lt;code&gt;/resume&lt;/code&gt; 和 &lt;code&gt;/rewind&lt;/code&gt; 恢復 in-process teammates&lt;/li&gt;
&lt;li&gt;任務狀態有時會延遲，需要手動提醒更新&lt;/li&gt;
&lt;li&gt;一個 lead 一次只能管理一個 team&lt;/li&gt;
&lt;li&gt;teammate 不能再派出子 team&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;簡單結論&#34;&gt;簡單結論
&lt;/h2&gt;&lt;p&gt;這兩種能力並不是互相替代，而是分別解決不同的協作問題。&lt;/p&gt;
&lt;p&gt;如果你的需求是「把支線任務並行做掉，保持主上下文乾淨」，那就先用 &lt;code&gt;Subagents&lt;/code&gt;。如果你的需求是「讓幾個 Agent 像小團隊一樣協作、討論、交叉驗證」，那麼 &lt;code&gt;Agent Teams&lt;/code&gt; 會更適合。&lt;/p&gt;
&lt;p&gt;實際拿一個任務試一次，通常很快就能感受到差別：一個強調上下文隔離與結果回收，另一個強調多視角協作與持續互動。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文連結：&lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/developer/article/2652960&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.tencent.com/developer/article/2652960&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT Image 2 正式發布：從能生成到能商用的跨越</title>
        <link>https://knightli.com/zh-tw/2026/04/22/gpt-image-2-from-generation-to-commercial-use/</link>
        <pubDate>Wed, 22 Apr 2026 20:08:22 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/gpt-image-2-from-generation-to-commercial-use/</guid>
        <description>&lt;p&gt;OpenAI 的下一代圖像生成模型 &lt;code&gt;GPT Image 2&lt;/code&gt; 已經正式面向 ChatGPT 使用者開放。結合社群在洩露測試階段的回饋，以及公開可見的實際效果，這一代模型的變化不像一次常規迭代，更像是 AI 生圖從「能看」走向「能用」的一次明顯推進。&lt;/p&gt;
&lt;p&gt;如果說上一階段的圖像模型，更多還是用來做靈感圖、概念圖和試玩性質的生成，那麼 &lt;code&gt;GPT Image 2&lt;/code&gt; 最突出的地方，就是它開始接近生產級工具。無論是可讀文字、介面截圖、行銷海報，還是更逼真的商業攝影風格圖片，它都比過去更接近「直接拿去用」的狀態。&lt;/p&gt;
&lt;h2 id=&#34;一核心升級五個最值得注意的點&#34;&gt;一、核心升級：五個最值得注意的點
&lt;/h2&gt;&lt;h3 id=&#34;1-文字渲染終於進入可用區間&#34;&gt;1. 文字渲染終於進入可用區間
&lt;/h3&gt;&lt;p&gt;AI 生圖過去最難啃的一塊，就是文字。亂碼、拼寫錯誤、長文本崩壞、字體變形，這些幾乎是所有模型都會碰到的問題。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 在這方面的提升非常明顯。它不僅能處理更清晰的英文和中文文字，還能應對更複雜的排版、更長的段落，以及一定程度上的多語言混排。這意味著很多原本必須靠後期修字的場景，現在可以直接在生成階段完成。&lt;/p&gt;
&lt;p&gt;比較典型的用法包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;海報&lt;/li&gt;
&lt;li&gt;社群媒體封面&lt;/li&gt;
&lt;li&gt;帶標題與說明文字的宣傳頁&lt;/li&gt;
&lt;li&gt;PPT 配圖&lt;/li&gt;
&lt;li&gt;帶真實文案和介面元素的 App 截圖&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對實際工作流來說，這一步很重要。因為只要文字能穩定可讀，圖像生成就不再只是「出一張背景圖」，而開始具備承接行銷物料和產品展示圖的能力。&lt;/p&gt;
&lt;h3 id=&#34;2-照片級真實感明顯提升&#34;&gt;2. 照片級真實感明顯提升
&lt;/h3&gt;&lt;p&gt;從社群並排對比來看，&lt;code&gt;GPT Image 2&lt;/code&gt; 的整體畫質更銳利，材質紋理更細，光線一致性也更強。過去最容易露出 AI 痕跡的人臉、手部、邊緣細節，這一代都明顯更穩定。&lt;/p&gt;
&lt;p&gt;更準確地說，它不是完全沒有破綻，而是「AI 味」顯著下降。很多圖第一次看上去，已經會讓人直接把它當作真實照片、商業攝影樣片或者遊戲截圖。&lt;/p&gt;
&lt;p&gt;這也是為什麼很多人對它的第一反應不再是「畫得不錯」，而是「這張圖已經很像真的了」。&lt;/p&gt;
&lt;h3 id=&#34;3-世界知識整合能力更強&#34;&gt;3. 世界知識整合能力更強
&lt;/h3&gt;&lt;p&gt;這是一個沒那麼顯眼，但非常實用的升級。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 給人的感覺，不只是會拼圖塊、湊風格，而是更像「知道自己在畫什麼」。原文裡提到的幾個方向很有代表性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手錶表盤時間邏輯更合理&lt;/li&gt;
&lt;li&gt;品牌細節和角色特徵還原更準確&lt;/li&gt;
&lt;li&gt;Minecraft 這類遊戲截圖或軟體介面的邏輯結構更像真的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著它在處理現實物體、數位介面、遊戲畫面這類需要常識和結構感的內容時，成功率更高。對使用者來說，這種提升往往比單純的「更高畫質」更有價值。&lt;/p&gt;
&lt;h3 id=&#34;4-ui-與截圖生成能力很強&#34;&gt;4. UI 與截圖生成能力很強
&lt;/h3&gt;&lt;p&gt;從洩露期到正式上線，&lt;code&gt;GPT Image 2&lt;/code&gt; 最出圈的一個方向，就是生成軟體介面、網頁截圖和 App mockup。&lt;/p&gt;
&lt;p&gt;這類任務過去很難做，因為它們同時要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字清楚&lt;/li&gt;
&lt;li&gt;佈局規整&lt;/li&gt;
&lt;li&gt;按鈕、卡片、導覽列等元素對齊&lt;/li&gt;
&lt;li&gt;配色和層級像真實產品&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而這次模型在這些方面的表現已經相當成熟。對於產品經理、獨立開發者和設計師來說，這意味著可以更快做出高保真原型圖，用於提案、演示甚至使用者測試。&lt;/p&gt;
&lt;h3 id=&#34;5-局部編輯更接近實用工作流&#34;&gt;5. 局部編輯更接近實用工作流
&lt;/h3&gt;&lt;p&gt;按原文整理的資訊，&lt;code&gt;GPT Image 2&lt;/code&gt; 支援更精準的局部編輯能力，也就是只修改畫面中的特定區域，而不是每次整張圖推倒重來。&lt;/p&gt;
&lt;p&gt;這類能力對創意工作流非常關鍵。因為實際設計場景裡，很多時候不是「重做一張」，而是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一個按鈕&lt;/li&gt;
&lt;li&gt;換一段文字&lt;/li&gt;
&lt;li&gt;調整某個物體的位置&lt;/li&gt;
&lt;li&gt;修一塊背景&lt;/li&gt;
&lt;li&gt;替換局部元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果局部編輯夠穩定，AI 生圖的價值就不只是第一次出圖，而是能真正參與到反覆迭代中。&lt;/p&gt;
&lt;h2 id=&#34;二怎麼使用-gpt-image-2&#34;&gt;二、怎麼使用 GPT Image 2
&lt;/h2&gt;&lt;h3 id=&#34;在-chatgpt-裡使用&#34;&gt;在 ChatGPT 裡使用
&lt;/h3&gt;&lt;p&gt;目前 &lt;code&gt;GPT Image 2&lt;/code&gt; 已經整合在 ChatGPT 裡，一般使用者可以直接透過圖像生成功能呼叫。&lt;/p&gt;
&lt;p&gt;常見操作流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 ChatGPT 網頁版或 App&lt;/li&gt;
&lt;li&gt;在輸入框點擊 &lt;code&gt;+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;選擇「建立圖片」&lt;/li&gt;
&lt;li&gt;輸入提示詞並提交&lt;/li&gt;
&lt;li&gt;系統呼叫 &lt;code&gt;GPT Image 2&lt;/code&gt; 生成結果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原文還提到，不同訂閱等級對應的可用額度不同，免費使用者和 &lt;code&gt;Plus&lt;/code&gt; / &lt;code&gt;Pro&lt;/code&gt; 使用者在生成次數上會有差別。具體額度規則建議以當時 ChatGPT 產品內顯示為準，因為這類限制後續可能調整。&lt;/p&gt;
&lt;h3 id=&#34;在-api-中使用&#34;&gt;在 API 中使用
&lt;/h3&gt;&lt;p&gt;如果是開發者場景，也可以透過 OpenAI API 呼叫圖像生成模型。原文裡提到的模型名寫法是 &lt;code&gt;gpt-image-2&lt;/code&gt;，但實際接入時仍建議以官方文件中的最新名稱和參數為準。&lt;/p&gt;
&lt;p&gt;文中列出的幾個常見解析度如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;解析度&lt;/th&gt;
          &lt;th&gt;適用場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1024×1024&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;通用方圖、頭像、社群媒體圖片&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1536×1024&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;橫版封面、投影片、寬螢幕桌布&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;1024×1536&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;直版海報、手機桌布、故事配圖&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;2048×2048&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;高畫質印刷、大幅展示、精細插畫&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;三幾個代表性使用場景&#34;&gt;三、幾個代表性使用場景
&lt;/h2&gt;&lt;p&gt;原文列了不少案例，這裡整理出最有代表性的幾類。&lt;/p&gt;
&lt;h3 id=&#34;1-app-介面截圖&#34;&gt;1. App 介面截圖
&lt;/h3&gt;&lt;p&gt;這一類提示詞非常適合產品原型、設計演示、需求討論。&lt;/p&gt;
&lt;p&gt;示例特點通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指定平台風格，例如 iOS&lt;/li&gt;
&lt;li&gt;寫清頁面結構&lt;/li&gt;
&lt;li&gt;列出核心資料卡片&lt;/li&gt;
&lt;li&gt;指定底部導覽列&lt;/li&gt;
&lt;li&gt;說明配色與字體風格&lt;/li&gt;
&lt;li&gt;強調文字必須清晰、元素要對齊&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種寫法的重點不是「畫面好看」，而是盡量減少模型發揮空間，讓結果更像一個真的介面。&lt;/p&gt;
&lt;h3 id=&#34;2-電商產品圖&#34;&gt;2. 電商產品圖
&lt;/h3&gt;&lt;p&gt;像香水、耳機、手錶、化妝品這類商品圖，很適合 &lt;code&gt;GPT Image 2&lt;/code&gt; 發揮。&lt;/p&gt;
&lt;p&gt;因為它現在對以下內容的處理已經更穩定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;玻璃、金屬、液體等材質質感&lt;/li&gt;
&lt;li&gt;柔和陰影和反射&lt;/li&gt;
&lt;li&gt;商業攝影常見的布光邏輯&lt;/li&gt;
&lt;li&gt;簡潔背景下的高端展示感&lt;/li&gt;
&lt;li&gt;少量品牌文字&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果生成結果穩定，很多電商詳情圖、行銷頁主圖、社群媒體產品視覺，都能把試錯成本壓低很多。&lt;/p&gt;
&lt;h3 id=&#34;3-文字海報&#34;&gt;3. 文字海報
&lt;/h3&gt;&lt;p&gt;海報是最能體現這一代文字能力的場景之一。&lt;/p&gt;
&lt;p&gt;原文給出的方向很典型：在一個黃昏城市剪影背景上，明確寫出主標題、時間地點、藝人名單，並要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字清晰可讀&lt;/li&gt;
&lt;li&gt;無拼寫錯誤&lt;/li&gt;
&lt;li&gt;中英文混排穩定&lt;/li&gt;
&lt;li&gt;風格統一&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類任務過去通常要先生成背景圖，再人工補字。現在如果模型能一次完成大部分工作，它的實用價值就會大很多。&lt;/p&gt;
&lt;h3 id=&#34;4-遊戲概念圖和假截圖&#34;&gt;4. 遊戲概念圖和「假截圖」
&lt;/h3&gt;&lt;p&gt;這是 &lt;code&gt;GPT Image 2&lt;/code&gt; 在社群媒體上最容易傳播的一類內容。&lt;/p&gt;
&lt;p&gt;比如第三人稱遊戲截圖、霓虹街道、雨後積水反射、景深、顆粒感、PS5 實機風格，這種提示詞組合出來的結果，很容易讓人第一眼誤判為遊戲洩露畫面。&lt;/p&gt;
&lt;p&gt;從傳播角度看，這類圖很吸睛；從風險角度看，也說明以假亂真的門檻已經明顯下降，使用者對圖片真實性的判斷需要更謹慎。&lt;/p&gt;
&lt;h3 id=&#34;5-擬真人像與創意肖像&#34;&gt;5. 擬真人像與創意肖像
&lt;/h3&gt;&lt;p&gt;人像一直是 AI 圖像能力最直觀的測試題。&lt;/p&gt;
&lt;p&gt;原文裡的示例聚焦在自然光、咖啡館、逆光邊緣、針織衫、暖色背景虛化這類細節組合。它們背後的重點其實是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;皮膚紋理自然&lt;/li&gt;
&lt;li&gt;髮絲細節完整&lt;/li&gt;
&lt;li&gt;手部結構不崩&lt;/li&gt;
&lt;li&gt;光線邏輯合理&lt;/li&gt;
&lt;li&gt;整體氛圍不帶明顯 AI 痕跡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這幾點能穩定做到，人像生成才算真正進入可用階段。&lt;/p&gt;
&lt;h3 id=&#34;6-美食攝影&#34;&gt;6. 美食攝影
&lt;/h3&gt;&lt;p&gt;原文還給了一個非常長的英文提示詞，用來生成高端餐廳風格的豚骨拉麵照片。這個例子說明了一個很現實的趨勢：當模型夠強時，提示詞可以寫得像攝影腳本。&lt;/p&gt;
&lt;p&gt;這種寫法會細到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;菜品構成&lt;/li&gt;
&lt;li&gt;餐具材質&lt;/li&gt;
&lt;li&gt;湯底光澤&lt;/li&gt;
&lt;li&gt;叉燒的脂肪層和焦邊&lt;/li&gt;
&lt;li&gt;溏心蛋狀態&lt;/li&gt;
&lt;li&gt;背景景深和散景&lt;/li&gt;
&lt;li&gt;光源方向&lt;/li&gt;
&lt;li&gt;鏡頭型號與光圈&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對於餐飲品牌、菜單設計、外送平台主圖和社群媒體內容，這種生成能力已經非常接近商業攝影替代方案。&lt;/p&gt;
&lt;h3 id=&#34;7-教育插圖&#34;&gt;7. 教育插圖
&lt;/h3&gt;&lt;p&gt;另一個很有代表性的方向，是帶標註的科學教育圖。&lt;/p&gt;
&lt;p&gt;原文示例是一張植物細胞剖面圖，要求模型同時處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;結構正確&lt;/li&gt;
&lt;li&gt;標籤位置準確&lt;/li&gt;
&lt;li&gt;引導線清晰&lt;/li&gt;
&lt;li&gt;字體統一&lt;/li&gt;
&lt;li&gt;配色有層次&lt;/li&gt;
&lt;li&gt;整體適合教材或課件使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明 &lt;code&gt;GPT Image 2&lt;/code&gt; 的價值不只是做「好看」的圖，還包括做「資訊型」的圖。&lt;/p&gt;
&lt;h2 id=&#34;四對一般使用者最實際的意義&#34;&gt;四、對一般使用者最實際的意義
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; 真正值得關注的地方，不只是它又把畫質往前推了一步，而是它把 AI 生圖從娛樂型、試玩型工具，進一步推向了可商用、可交付的生產工具。&lt;/p&gt;
&lt;p&gt;具體體現在幾個層面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文字終於開始靠譜&lt;/li&gt;
&lt;li&gt;介面和海報更像真實物料&lt;/li&gt;
&lt;li&gt;商業攝影風格圖更可用&lt;/li&gt;
&lt;li&gt;教育類、資訊類圖片也能做&lt;/li&gt;
&lt;li&gt;局部編輯讓它更適合迭代&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當然，這並不代表它已經完全取代設計師、攝影師或插畫師。真正的商業專案仍然需要審美判斷、品牌控制、版權意識和人工複核。&lt;/p&gt;
&lt;p&gt;但至少從這次更新能看出來，AI 圖像生成的競爭點已經不只是「能不能出圖」，而是「能不能更穩定地進入真實工作流」。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文提到的參考連結：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro/blog/gpt-image-2-release&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro/blog/gpt-image-2-release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原文提到的體驗站點：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;原文提到的邀請碼連結：&lt;a class=&#34;link&#34; href=&#34;https://getgpt.pro/i/ig2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://getgpt.pro/i/ig2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nuwa-skill：把「蒸餾一個人」從靈感變成可執行流程</title>
        <link>https://knightli.com/zh-tw/2026/04/22/nuwa-skill-distill-how-someone-thinks/</link>
        <pubDate>Wed, 22 Apr 2026 16:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/nuwa-skill-distill-how-someone-thinks/</guid>
        <description>&lt;p&gt;&lt;code&gt;[alchaincyf/nuwa-skill](https://github.com/alchaincyf/nuwa-skill)&lt;/code&gt; 很容易先讓人想到一件事：用 AI 模仿名人的口吻回答問題。但它真正有意思的地方，不在於「像不像」，而在於它試圖把「蒸餾一個人的思維方式」做成一條可重複執行的流程。&lt;/p&gt;
&lt;p&gt;這件事一旦成立，價值就不只是做幾個好玩的角色 prompt，而是把某個人的判斷框架、關注重點、常見啟發式與表達習慣，沉澱成一個可以反覆調用的 skill。你要的不是一句像某人會說出的話，而是一個更接近「如果他來分析這件事，會先看哪裡、怎麼取捨、會質疑什麼」的工作介面。&lt;/p&gt;
&lt;h2 id=&#34;它解決的不是模仿而是建模&#34;&gt;它解決的不是「模仿」，而是「建模」
&lt;/h2&gt;&lt;p&gt;很多所謂的人物 prompt，本質上只是風格貼皮。&lt;/p&gt;
&lt;p&gt;它們通常會要求模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用某個人的語氣說話&lt;/li&gt;
&lt;li&gt;多引用這個人的經典句式&lt;/li&gt;
&lt;li&gt;盡量模仿他公開表達裡的措辭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做在展示裡很吸睛，但一到真實任務就很容易露餡。原因也很簡單：語氣是表層，判斷結構才是核心。一個人物之所以有辨識度，不是因為他愛說哪幾個詞，而是因為他在面對問題時，總會用某些穩定的方法切入。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 的方向更像是把這種「穩定的方法」提取出來。換句話說，它在意的不是「怎麼說得像」，而是「怎麼想得像」。&lt;/p&gt;
&lt;h2 id=&#34;一個更完整的工作流&#34;&gt;一個更完整的工作流
&lt;/h2&gt;&lt;p&gt;從倉庫說明來看，&lt;code&gt;nuwa-skill&lt;/code&gt; 想做的是一套端到端流程：輸入一個人名，然後自動完成調研、提煉、驗證，再把結果組織成能在 Claude Code 裡調用的 skill。&lt;/p&gt;
&lt;p&gt;這背後有幾個很關鍵的變化。&lt;/p&gt;
&lt;p&gt;第一，它預設蒸餾對象可以不是你團隊裡的同事。很多人第一次接觸這類能力，會先想到「把優秀同事的方法論沉澱下來」。這當然有價值，但邊界也很明顯：可學習樣本有限，而且往往只覆蓋團隊內部經驗。&lt;code&gt;nuwa-skill&lt;/code&gt; 直接把對象擴展到更廣的人群，例如創業者、投資人、科學家、產品經理、寫作者。&lt;/p&gt;
&lt;p&gt;第二，它強調的是「自動完成」，而不是讓使用者手工拼 prompt。真正讓這類能力能落地的，不是 prompt 文案寫得多華麗，而是你能不能穩定完成資料蒐集、觀點歸納、模式抽取與結果校驗。只要其中某一步完全依賴手工，重用成本就會迅速上升。&lt;/p&gt;
&lt;p&gt;第三，它試圖把產物變成一個 skill，而不是一段一次性的對話。前者可以被多次調用、組合、迭代；後者往往只在當前上下文裡有效，過幾輪就散掉了。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這個方向值得關注&#34;&gt;為什麼這個方向值得關注
&lt;/h2&gt;&lt;p&gt;如果把 AI 當成問答機，最自然的用法是「給我一個答案」。但如果把 AI 當成工作台，問題就會變成「給我一種看問題的方法」。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 的價值，更偏向後者。&lt;/p&gt;
&lt;p&gt;例如你面對一個產品決策，想要的未必是一個標準答案，而是幾種截然不同的分析框架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有人會先看長期複利&lt;/li&gt;
&lt;li&gt;有人會先看資源約束&lt;/li&gt;
&lt;li&gt;有人會先看使用者體驗的一致性&lt;/li&gt;
&lt;li&gt;有人會先看市場進入時機&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果這些框架能被穩定封裝出來，AI 的角色就會從「替你寫一段話」變成「幫你快速切換視角」。這比單純模仿名人語錄有用得多，因為它直接作用在決策品質上。&lt;/p&gt;
&lt;h2 id=&#34;它最打動人的地方把隱性知識變成可調用資產&#34;&gt;它最打動人的地方：把隱性知識變成可調用資產
&lt;/h2&gt;&lt;p&gt;很多高價值能力，本來就很難寫成 SOP。&lt;/p&gt;
&lt;p&gt;一個人為什麼判斷比別人準，往往不是因為他掌握了更多顯性規則，而是因為他在長期實踐裡形成了一套隱性的篩選機制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;什麼訊號值得優先關注&lt;/li&gt;
&lt;li&gt;什麼噪音應該直接忽略&lt;/li&gt;
&lt;li&gt;哪些問題要拆開看&lt;/li&gt;
&lt;li&gt;哪些問題要反過來問&lt;/li&gt;
&lt;li&gt;哪些結論必須等待更多證據&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類能力平時很難沉澱，因為它不一定總能被本人完整說清楚。也正因如此，一旦能被結構化提取，價值會很高。&lt;code&gt;nuwa-skill&lt;/code&gt; 吸引人的地方就在這裡：它想處理的不是表面知識搬運，而是認知習慣的再組織。&lt;/p&gt;
&lt;h2 id=&#34;適合什麼場景&#34;&gt;適合什麼場景
&lt;/h2&gt;&lt;p&gt;我覺得這類 skill 最適合以下幾種場景。&lt;/p&gt;
&lt;h3 id=&#34;1-決策前的多視角審視&#34;&gt;1. 決策前的多視角審視
&lt;/h3&gt;&lt;p&gt;當你已經有一個方案，但擔心自己只是在沿著熟悉的路徑思考時，切換到不同「人物視角」去審視同一個問題，會比讓模型繼續順著你的原話擴寫更有價值。&lt;/p&gt;
&lt;h3 id=&#34;2-學習某類高手的判斷框架&#34;&gt;2. 學習某類高手的判斷框架
&lt;/h3&gt;&lt;p&gt;很多人學習高手，習慣收藏語錄、看訪談、抄摘要，但最後往往只記住幾句漂亮話。把思維模式做成 skill 之後，學習方式會更接近「帶著問題反覆調用」，而不是「做一堆靜態摘抄」。&lt;/p&gt;
&lt;h3 id=&#34;3-讓團隊共享一種分析方式&#34;&gt;3. 讓團隊共享一種分析方式
&lt;/h3&gt;&lt;p&gt;團隊裡真正稀缺的，不只是知識文件，而是「我們遇到問題時通常怎麼想」。如果未來這套流程成熟，它也可以反過來用於沉澱組織內部高手的方法論，只是它顯然不打算把這個能力局限在組織內部。&lt;/p&gt;
&lt;h2 id=&#34;這類專案真正難的地方&#34;&gt;這類專案真正難的地方
&lt;/h2&gt;&lt;p&gt;當然，方向有吸引力，不代表問題已經解決。&lt;/p&gt;
&lt;p&gt;這類專案最難的，從來不是安裝一個 skill，而是下面幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;資料來源是否足夠可靠&lt;/li&gt;
&lt;li&gt;提煉出的模式是不是穩定，而不是偶然語料帶來的錯覺&lt;/li&gt;
&lt;li&gt;模型是在使用人物框架分析，還是只是在重複常見印象&lt;/li&gt;
&lt;li&gt;不同人物之間的邊界會不會被模型自動抹平&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，最關鍵的不是「能不能生成一段像樣的話」，而是「這個 skill 產出的認知框架是否經得起多任務重用」。如果未來它在驗證環節繼續做深，這類專案的可信度會明顯提高。&lt;/p&gt;
&lt;h2 id=&#34;為什麼它比提示詞模板庫更進一步&#34;&gt;為什麼它比「提示詞模板庫」更進一步
&lt;/h2&gt;&lt;p&gt;過去不少專案會把這類能力做成模板庫：一個人物對應一段 prompt，使用者複製進去就能用。問題是模板庫本質上還是靜態資產，更新慢、驗證弱，而且很難形成完整的生產流程。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 更進一步的地方，是它把「人物蒸餾」從一個模板問題，推進成一個流程問題。&lt;/p&gt;
&lt;p&gt;一旦工作重心從「寫一段 prompt」轉到「如何系統生成、校驗、迭代一個人物 skill」，這件事就更像工程，而不是靈感。對真正想長期使用的人來說，後者顯然更重要。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; 有意思，不是因為它把 AI 變成了名人模仿秀，而是因為它把「如何學習一個人的思考方式」這件事，往可執行、可重用、可迭代的方向推進了一步。&lt;/p&gt;
&lt;p&gt;如果說很多人物 prompt 解決的是「像誰說話」，那它想解決的，是「像誰那樣看問題」。前者適合展示，後者才更接近生產力工具。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 倉庫：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;專案說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skill 定義：&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill/blob/main/SKILL.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/alchaincyf/nuwa-skill/blob/main/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI 發布 ChatGPT Images 2.0：圖像生成開始走向可直接交付</title>
        <link>https://knightli.com/zh-tw/2026/04/22/openai-chatgpt-images-2-0-deliverable-image-generation/</link>
        <pubDate>Wed, 22 Apr 2026 14:21:45 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/22/openai-chatgpt-images-2-0-deliverable-image-generation/</guid>
        <description>&lt;p&gt;OpenAI 在 2026 年 4 月 21 日發布了 &lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-chatgpt-images-2-0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing ChatGPT Images 2.0&lt;/a&gt;。從官方頁面來看，這次更新想強調的並不只是「圖片更好看了」，而是圖像生成正在往「更可控、可排版、可直接交付」的方向走。&lt;/p&gt;
&lt;p&gt;如果只看這篇發布頁，它更像一組高密度能力展示，而不是傳統意義上的技術說明。頁面幾乎沒有展開模型結構、訓練細節或基準測試，而是用大量示例圖直接回答一個問題：現在的 ChatGPT 圖像生成，能不能把過去還要靠設計師反覆修圖、補字、調版式的工作，進一步前移到生成階段。&lt;/p&gt;
&lt;h2 id=&#34;01-這次更新最明顯的訊號&#34;&gt;01 這次更新最明顯的訊號
&lt;/h2&gt;&lt;p&gt;官方頁面裡最醒目的幾個關鍵詞，其實已經把重點說得很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Greater precision and control&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stronger across languages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Stylistic sophistication and realism&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這三點放在一起看，含義很明確。&lt;/p&gt;
&lt;p&gt;第一，不再只強調「想像力」，而是強調控制力。頁面裡出現了大量海報、雜誌頁、宣傳頁、資訊圖、角色設定頁、分鏡漫畫、印刷書籤這類示例。它們的共同點不是單張視覺衝擊力，而是需要同時處理文字、層級、留白、構圖、風格統一和輸出比例。這說明 OpenAI 在刻意把產品定位從「生成一張圖」往「生成一份可以拿去用的視覺成品」推進。&lt;/p&gt;
&lt;p&gt;第二，多語言文字能力被單獨拎出來做展示。頁面裡不僅有多語種海報、書籍封面、韓文旅宿宣傳頁、日文漫畫，還有專門強調 typography 的示例。這很關鍵，因為過去圖像模型最容易翻車的地方之一，就是一旦涉及長文本、複雜版式或非英文文字，穩定性會明顯下降。現在 OpenAI 把它放到發布頁核心位置，本身就是在傳遞一個訊號：文字渲染和跨語言排版，已經成為它們認為值得正面展示的能力。&lt;/p&gt;
&lt;p&gt;第三，風格覆蓋面被拉得很寬。官方示例同時覆蓋了寫實攝影、復古拼貼、Bauhaus 海報、時尚大片、黑白紀實、兒童繪本、日漫、青年漫畫、教育資訊圖、產品網格圖、角色設定頁等多種形式。這裡想表達的不是「模型能模仿很多畫風」這麼簡單，而是它正在嘗試從單一美術風格輸出，走向更完整的視覺任務適配。&lt;/p&gt;
&lt;h2 id=&#34;02-為什麼說它在走向可直接交付&#34;&gt;02 為什麼說它在走向「可直接交付」
&lt;/h2&gt;&lt;p&gt;從這頁內容來看，ChatGPT Images 2.0 更像一個「圖像製作工作台」能力升級，而不只是更強的文生圖模型。&lt;/p&gt;
&lt;p&gt;過去很多模型雖然也能生成漂亮圖片，但一旦使用者需求變成下面這些任務，體驗就會迅速下降：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;做一張帶完整標題、副標題和說明文字的海報&lt;/li&gt;
&lt;li&gt;做一頁資訊密度較高的雜誌或宣傳頁&lt;/li&gt;
&lt;li&gt;做帶連續角色和連續敘事的漫畫頁&lt;/li&gt;
&lt;li&gt;做需要固定比例、特定版式和明確品牌感的行銷物料&lt;/li&gt;
&lt;li&gt;做包含多語言文字的正式視覺內容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而 OpenAI 這次展示的例子，幾乎都在正面回應這些老問題。&lt;/p&gt;
&lt;p&gt;例如頁面裡有教育資訊圖、設計趨勢海報、書籤印刷稿、咖啡店開業海報、旅遊宣傳頁、產品周邊展示圖、論文海報重製圖。這類內容有一個共同特徵：它們不是「給人看一眼覺得不錯」就結束，而是更接近真實工作流裡的半成品甚至成品。&lt;/p&gt;
&lt;p&gt;換句話說，這次更新真正重要的地方，可能不是單張圖品質又提升了多少，而是模型開始更像一套可用於內容生產、品牌物料、教育傳播和輕量設計工作的生成系統。&lt;/p&gt;
&lt;h2 id=&#34;03-這對-chatgpt-產品定位意味著什麼&#34;&gt;03 這對 ChatGPT 產品定位意味著什麼
&lt;/h2&gt;&lt;p&gt;從發布頁的組織方式，也能看出一些產品層面的變化。&lt;/p&gt;
&lt;p&gt;OpenAI 沒有把 ChatGPT Images 2.0 包裝成一個只服務創意圈的圖像模型，而是不斷用「研究、推理、資料轉化、版面整理、知識表達、行銷輸出」這些場景去展示它。頁面裡甚至還有把數學證明、設計趨勢、歷史筆記、學術論文可視化的例子。&lt;/p&gt;
&lt;p&gt;這意味著圖像生成在 ChatGPT 裡的角色，已經不只是「給聊天配圖」或「生成一張插畫」，而是在向更通用的表達層靠攏。它想做的是：當使用者已經在 ChatGPT 裡思考、查資料、整理內容、寫文案之後，最後一步連視覺產出也一起完成。&lt;/p&gt;
&lt;p&gt;如果這個方向繼續推進，圖像功能的競爭點就不再只是審美和寫實程度，而會越來越依賴下面這些能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否能穩定處理複雜文字&lt;/li&gt;
&lt;li&gt;是否能維持跨頁面或多面板的一致性&lt;/li&gt;
&lt;li&gt;是否能生成更接近真實工作物料的版式&lt;/li&gt;
&lt;li&gt;是否能在研究、寫作、行銷、教學這些任務裡自然接上前面的上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;04-這篇發布頁沒有說什麼&#34;&gt;04 這篇發布頁沒有說什麼
&lt;/h2&gt;&lt;p&gt;當然，發布頁的寫法也決定了它更適合「看方向」，不太適合「看細節」。&lt;/p&gt;
&lt;p&gt;截至官方頁面 2026 年 4 月 21 日的內容，它主要展示的是結果，而不是方法。頁面沒有詳細展開：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型與上一代相比的量化提升&lt;/li&gt;
&lt;li&gt;文字準確率或多語言渲染的明確指標&lt;/li&gt;
&lt;li&gt;複雜版式任務的失敗邊界&lt;/li&gt;
&lt;li&gt;API、價格、調用方式或企業側接入細節&lt;/li&gt;
&lt;li&gt;安全策略和生成限制的具體更新&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以更準確地說，這篇文章傳遞的是產品訊號，而不是完整技術規格。&lt;/p&gt;
&lt;h2 id=&#34;05-簡單結論&#34;&gt;05 簡單結論
&lt;/h2&gt;&lt;p&gt;如果只用一句話概括 ChatGPT Images 2.0，這次更新最值得注意的不是「更會畫」，而是「更會做成品」。&lt;/p&gt;
&lt;p&gt;OpenAI 顯然希望把圖像生成從靈感型工具，往可執行、可排版、可溝通、可交付的生產工具推進。文字控制、多語言、版式、風格跨度、長頁面內容組織，這些原本最容易暴露短板的地方，現在反而成了它主動展示的賣點。&lt;/p&gt;
&lt;p&gt;這不代表圖像生成已經完全解決了設計工作裡的所有問題，但至少從這次發布頁可以看出，競爭重心正在變化。未來誰更強，可能不只是看誰能出一張更驚豔的圖，而是看誰能更穩定地做出一份真的能拿去用的視覺內容。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/index/introducing-chatgpt-images-2-0/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing ChatGPT Images 2.0 - OpenAI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Karpathy 的 65 行 CLAUDE.md：讓 AI 編程少犯三類錯誤</title>
        <link>https://knightli.com/zh-tw/2026/04/19/karpathy-claude-md-ai-coding-rules/</link>
        <pubDate>Sun, 19 Apr 2026 18:27:23 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/19/karpathy-claude-md-ai-coding-rules/</guid>
        <description>&lt;p&gt;最近 GitHub 上有一個圍繞 AI 編程的專案很火，核心其實只是一個大約 65 行的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件。它之所以能拿到大量 star，不是因為技術實作複雜，而是因為它抓住了很多人使用 AI 寫程式時反覆遇到的問題。&lt;/p&gt;
&lt;p&gt;這個專案的背景，要從 Andrej Karpathy 對 AI 編程的觀察說起。Karpathy 是 AI 領域很有影響力的教育者和工程師：史丹佛博士，參與過 OpenAI 早期工作，也曾在 Tesla 負責 Autopilot 視覺系統。後來他持續分享對大模型、教育和 AI 工具的理解，所以他對編程方式變化的判斷，總會引起很多開發者關注。&lt;/p&gt;
&lt;p&gt;他在一次分享中提到，自己使用 Claude Code 幾週後，編程方式發生了明顯變化：過去大概是 80% 手寫程式、20% AI 輔助，現在更接近 80% 讓 AI 寫程式，自己做 20% 修改。他形容這像是「用英語編程」，透過自然語言告訴 LLM 要寫什麼。&lt;/p&gt;
&lt;p&gt;但他也指出了 AI 編程的幾個典型問題。&lt;/p&gt;
&lt;h2 id=&#34;01-錯誤假設&#34;&gt;01 錯誤假設
&lt;/h2&gt;&lt;p&gt;第一個問題是模型很容易替使用者做假設，然後沿著這個假設一路寫下去。它不一定會主動管理自己的困惑，也不一定會在需求含糊時停下來追問。&lt;/p&gt;
&lt;p&gt;比如使用者只說「新增使用者匯出功能」，模型可能會預設匯出全部使用者，預設輸出 JSON，預設寫成本地文件，預設權限和欄位都不需要再確認。等程式寫完，使用者才發現它理解的需求和真實場景並不一致。&lt;/p&gt;
&lt;p&gt;更好的做法應該是先把不確定點列出來：匯出全部使用者還是篩選結果？是瀏覽器下載還是後台任務？需要哪些欄位？資料量大不大？是否有權限限制？這些問題不問清楚，後面寫得越快，偏得也越遠。&lt;/p&gt;
&lt;h2 id=&#34;02-過度複雜化&#34;&gt;02 過度複雜化
&lt;/h2&gt;&lt;p&gt;第二個問題是模型很容易把簡單問題寫複雜。一個函式能解決的問題，它可能加上抽象類、策略模式、工廠模式、配置層和一堆「未來可能有用」的擴充點。&lt;/p&gt;
&lt;p&gt;這類程式看起來很工程化，實際卻增加了維護負擔。AI 尤其擅長快速生成大量結構，但並不總能判斷這些結構是否真的必要。結果就是一百行能解決的任務，被膨脹成一千行。&lt;/p&gt;
&lt;p&gt;判斷標準其實很直接：一個資深工程師看到這段改動，會不會覺得它過度設計？如果答案是會，就應該刪掉多餘層次，用最少的程式碼解決當前問題。&lt;/p&gt;
&lt;h2 id=&#34;03-附帶傷害&#34;&gt;03 附帶傷害
&lt;/h2&gt;&lt;p&gt;第三個問題是模型有時會修改或刪除自己沒有充分理解的程式碼。它可能在修一個小 bug 的時候順手改註釋、重排格式、清理看似無用的 import，甚至動到和當前任務無關的邏輯。&lt;/p&gt;
&lt;p&gt;這類「順手優化」很危險，因為它擴大了變更範圍，也讓 review 變得更困難。使用者本來只想修復一個空 email 導致驗證器崩潰的問題，結果模型順便增強了 email 驗證、加了使用者名稱校驗、改了文件字串，最後很難判斷到底哪一行影響了行為。&lt;/p&gt;
&lt;p&gt;更穩妥的原則是：只動必須動的程式碼，只清理自己造成的問題。原本就存在的死程式碼、格式問題或歷史包袱，除非任務明確要求處理，否則最多提醒一句，不要直接改。&lt;/p&gt;
&lt;h2 id=&#34;04-把吐槽變成-claudemd&#34;&gt;04 把吐槽變成 CLAUDE.md
&lt;/h2&gt;&lt;p&gt;在 Karpathy 的觀點被大量傳播後，開發者 Forrest Cheung 做了一件很聰明的事：他把這些吐槽整理成可以執行的行為準則，寫進一個 &lt;code&gt;CLAUDE.md&lt;/code&gt; 文件。&lt;/p&gt;
&lt;p&gt;這個專案沒有複雜程式碼，關鍵就是把 AI 編程中最容易出問題的地方，轉成明確的工作規則。大致可以概括為四條。&lt;/p&gt;
&lt;p&gt;第一條是先想再寫。不要默默假設，不要隱藏困惑；如果需求有多種理解，就把它們列出來；如果存在更簡單的方案，也要說出來；該追問時追問，該反駁時反駁。&lt;/p&gt;
&lt;p&gt;第二條是簡單優先。不新增沒被要求的功能，不為一次性程式碼做抽象，不加入多餘配置，也不為極小機率場景寫大量防禦程式碼。如果 50 行能解決，就不要寫成 200 行。&lt;/p&gt;
&lt;p&gt;第三條是精準修改。每一行改動都應該能直接追溯到使用者請求。不要順手改善鄰近程式碼，不要重構沒壞的東西，盡量匹配專案既有風格。&lt;/p&gt;
&lt;p&gt;第四條是目標驅動。不要只給模型一個模糊指令，而是給它可驗證的成功標準。比如「修復 bug」可以變成「先寫一個能復現 bug 的測試，再讓測試通過」；「新增校驗」可以變成「寫無效輸入測試並通過」。成功標準越清楚，模型越容易自己循環到完成。&lt;/p&gt;
&lt;h2 id=&#34;05-為什麼它會火&#34;&gt;05 為什麼它會火
&lt;/h2&gt;&lt;p&gt;這個專案能火，不是因為內容很玄，而是因為它足夠貼近真實開發。&lt;/p&gt;
&lt;p&gt;很多人用 AI 編程時都經歷過類似場景：模型自信地誤解需求，程式越寫越複雜，或者在不該動的地方動手。&lt;code&gt;CLAUDE.md&lt;/code&gt; 的價值，是把這些經驗變成可以放進專案裡的協作規則。&lt;/p&gt;
&lt;p&gt;它的門檻也很低：一個文件就能開始生效，不需要複雜接入。再加上 Karpathy 本人的影響力，以及專案裡有實戰對比案例，它很自然會在 Claude Code 使用者和 AI 編程社群裡傳播開來。&lt;/p&gt;
&lt;p&gt;更重要的是，這類規則不是只適用於 Claude Code。無論使用哪種 AI 編程工具，本質問題都很相似：模型需要知道什麼時候該問、什麼時候該簡化、什麼時候該停手、怎樣判斷任務已經完成。&lt;/p&gt;
&lt;h2 id=&#34;06-對普通開發者的啟發&#34;&gt;06 對普通開發者的啟發
&lt;/h2&gt;&lt;p&gt;這件事給普通開發者的啟發很簡單：AI 編程不是把一句需求丟給模型，然後等待奇蹟發生。真正有效的方式，是給模型建立邊界。&lt;/p&gt;
&lt;p&gt;需求不清楚時，讓它先暴露假設。實作方案變複雜時，讓它主動回到最小可行解。修改程式碼時，讓它只圍繞任務目標行動。完成任務時，用測試、命令或明確檢查點來驗證結果。&lt;/p&gt;
&lt;p&gt;AI 寫程式的能力已經很強，但它仍然需要好的協作約束。一個短小的 &lt;code&gt;CLAUDE.md&lt;/code&gt; 能獲得大量關注，說明開發者真正需要的並不只是更聰明的模型，也包括更可靠的工作方式。&lt;/p&gt;
&lt;p&gt;簡單總結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先想再寫，減少錯誤假設。&lt;/li&gt;
&lt;li&gt;簡單優先，避免過度設計。&lt;/li&gt;
&lt;li&gt;精準修改，控制變更範圍。&lt;/li&gt;
&lt;li&gt;目標驅動，用可驗證標準推動完成。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這四條並不複雜，卻很實用。AI 編程真正提升效率的前提，不是讓模型寫得更多，而是讓它寫得更準、更少、更可控。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code 額度省著用：模型選擇、上下文、快取與 /compact</title>
        <link>https://knightli.com/zh-tw/2026/04/19/claude-code-usage-context-compact-notes/</link>
        <pubDate>Sun, 19 Apr 2026 15:29:06 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/19/claude-code-usage-context-compact-notes/</guid>
        <description>&lt;p&gt;最近很多人在用 Claude Code 或 Claude Max 時會遇到一個問題：明明買了 Pro、Max 5x，甚至 Max 20x，結果沒跑多久就提示額度快滿，或者直接需要等重置。尤其是在大專案裡讓 Claude Code 讀很多檔案、修複雜 bug、跑長任務時，這種感覺會更明顯。&lt;/p&gt;
&lt;p&gt;這裡先說結論：額度不是按「時間」線性扣的，而是和模型、上下文長度、附件、程式碼庫規模、對話歷史、工具呼叫和目前容量都有關係。同樣 5 小時視窗，有的人能用很久，有的人十幾分鐘就耗盡，通常不是帳號壞了，而是每次請求都太重。&lt;/p&gt;
&lt;p&gt;這篇整理一套比較實用的省額度習慣。&lt;/p&gt;
&lt;h2 id=&#34;01-先理解-claude-的用量視窗&#34;&gt;01 先理解 Claude 的用量視窗
&lt;/h2&gt;&lt;p&gt;Claude Pro 和 Max 都有使用限制，Claude Code 的使用量會和 Claude 網頁、桌面、行動端共享同一套訂閱額度。官方說明裡提到，訊息數量會受到訊息長度、附件大小、目前對話長度、所用模型或功能影響；Claude Code 還會受到專案複雜度、程式碼庫大小、自動接受設定等影響。&lt;/p&gt;
&lt;p&gt;大致可以這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pro：適合輕量使用和小專案。&lt;/li&gt;
&lt;li&gt;Max 5x：適合更頻繁使用和較大的程式碼庫。&lt;/li&gt;
&lt;li&gt;Max 20x：適合更重度、日常高頻協作。&lt;/li&gt;
&lt;li&gt;用量視窗按 5 小時會話重置。&lt;/li&gt;
&lt;li&gt;長訊息、長對話、大檔案、複雜任務會更快消耗額度。&lt;/li&gt;
&lt;li&gt;Opus 這類更強模型會比 Sonnet 更快觸發限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以「我只用了 20 分鐘」這個說法不一定能說明問題。真正重要的是這 20 分鐘裡 Claude 讀了多少上下文、用了什麼模型、是否反覆處理大檔案、是否在同一個長對話裡繼續加任務。&lt;/p&gt;
&lt;h2 id=&#34;02-第一件事不要預設一直用最貴模型&#34;&gt;02 第一件事：不要預設一直用最貴模型
&lt;/h2&gt;&lt;p&gt;Claude 系列裡常見的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Opus&lt;/code&gt;：能力最強，適合複雜推理、架構決策、疑難 bug。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sonnet&lt;/code&gt;：能力和成本比較均衡，適合大部分日常編碼任務。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Haiku&lt;/code&gt;：更輕量，適合簡單分類、摘要、格式轉換等任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日常寫腳本、改小 bug、整理文件、解釋程式碼，大多數時候 Sonnet 已經夠用。Opus 更適合留給這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複雜架構設計。&lt;/li&gt;
&lt;li&gt;多檔案深度重構。&lt;/li&gt;
&lt;li&gt;難復現的 bug。&lt;/li&gt;
&lt;li&gt;需要長鏈路推理的排障。&lt;/li&gt;
&lt;li&gt;普通模型明顯卡住的任務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code 裡可以用 &lt;code&gt;/model&lt;/code&gt; 切換模型，也可以在 &lt;code&gt;/config&lt;/code&gt; 裡設定預設模型。比較穩的習慣是：預設 Sonnet，關鍵節點再切 Opus，而不是整場任務都用 Opus 扛。&lt;/p&gt;
&lt;h2 id=&#34;03-第二件事控制上下文不要讓舊任務拖著走&#34;&gt;03 第二件事：控制上下文，不要讓舊任務拖著走
&lt;/h2&gt;&lt;p&gt;上下文越長，Claude 每次處理要看的內容越多，額度消耗也越高。Claude Code 官方文件明確建議主動管理上下文：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;換到不相關任務時，用 &lt;code&gt;/clear&lt;/code&gt; 清空歷史。&lt;/li&gt;
&lt;li&gt;目前任務做完一個階段但還要保留重點時，用 &lt;code&gt;/compact&lt;/code&gt; 壓縮。&lt;/li&gt;
&lt;li&gt;想知道上下文裡什麼佔空間，用 &lt;code&gt;/context&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想持續看到狀態，可以設定 status line。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個好用的節奏是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;小階段完成：/compact
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;大任務結束：/clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;切換無關專案：/clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;上下文接近很高佔用：提前 /compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;/compact&lt;/code&gt; 會把前面的對話壓成摘要，保留關鍵任務狀態、結論、檔案路徑、待辦事項，但減少後續每次請求要攜帶的歷史。你也可以給它補一句重點：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact 保留已修改檔案、測試結果、剩餘待辦和關鍵設計決策
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不要等自動壓縮才處理。官方文件提到，Claude Code 會在上下文接近容量上限時自動壓縮，但手動在階段邊界壓縮，通常更可控。&lt;/p&gt;
&lt;h2 id=&#34;04-第三件事長對話和大檔案會讓每次請求變貴&#34;&gt;04 第三件事：長對話和大檔案會讓每次請求變貴
&lt;/h2&gt;&lt;p&gt;很多人以為「我只是繼續問一句」，應該很便宜。但在長對話裡，這一句背後可能帶著大量歷史、檔案摘要、工具定義和系統規則。&lt;/p&gt;
&lt;p&gt;特別容易漲上下文的東西包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一直不清理的長對話。&lt;/li&gt;
&lt;li&gt;讓 Claude 讀完整大檔案。&lt;/li&gt;
&lt;li&gt;貼很長日誌、建置輸出、測試輸出。&lt;/li&gt;
&lt;li&gt;一次性塞很多截圖或圖片。&lt;/li&gt;
&lt;li&gt;讓它反覆掃描整個倉庫。&lt;/li&gt;
&lt;li&gt;過長的 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;開了很多 MCP server。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比較省的做法是：日誌只貼關鍵報錯，測試輸出只給失敗部分，大檔案讓它先用 &lt;code&gt;rg&lt;/code&gt;、&lt;code&gt;head&lt;/code&gt;、&lt;code&gt;tail&lt;/code&gt;、符號搜尋定位，再讀必要片段。能用命令列過濾的內容，不要整包塞進上下文。&lt;/p&gt;
&lt;h2 id=&#34;05-第四件事理解快取但不要迷信快取&#34;&gt;05 第四件事：理解快取，但不要迷信快取
&lt;/h2&gt;&lt;p&gt;Anthropic 的 Prompt Caching 會快取重複的 prompt 前綴。預設快取生命週期是 5 分鐘，也支援 1 小時快取。快取命中時，重複的大段上下文不需要完整重新處理，有助於降低成本和改善額度利用。&lt;/p&gt;
&lt;p&gt;但快取有幾個限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要內容完全匹配，文字和圖片都要一致。&lt;/li&gt;
&lt;li&gt;預設快取是短生命週期。&lt;/li&gt;
&lt;li&gt;改模型、改工具、改系統提示、改上下文結構，都可能降低命中。&lt;/li&gt;
&lt;li&gt;輸出 token 不會因為快取而消失，該生成的回答仍然要生成。&lt;/li&gt;
&lt;li&gt;Claude Code 具體如何利用快取，是產品層實作細節，不要把它當成永遠穩定的「免費記憶」。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;實際使用裡，最重要的不是研究快取細節，而是保持會話穩定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一階段盡量別頻繁切模型。&lt;/li&gt;
&lt;li&gt;不要中途反覆改大量規則。&lt;/li&gt;
&lt;li&gt;不要在同一任務裡不停貼新圖片。&lt;/li&gt;
&lt;li&gt;長任務中間不要閒置太久後又繼續塞大請求。&lt;/li&gt;
&lt;li&gt;階段結束主動 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣更容易讓重複上下文保持可複用，也能降低後續請求負擔。&lt;/p&gt;
&lt;h2 id=&#34;06-關於尖峰時段能避開就避開但不要當固定公式&#34;&gt;06 關於尖峰時段：能避開就避開，但不要當固定公式
&lt;/h2&gt;&lt;p&gt;網路上常有人說某些時段額度會更緊。官方幫助中心的表述更謹慎：可發送數量會受到 Claude 目前容量、對話長度、附件、模型和功能影響。也就是說，尖峰容量確實可能影響體驗，但不要把某個地區的某個時間段當成永久固定規則。&lt;/p&gt;
&lt;p&gt;實用建議是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大重構、大批次分析盡量放到自己網路和服務都穩定的時段。&lt;/li&gt;
&lt;li&gt;不要在快到休息時開啟一個超長任務。&lt;/li&gt;
&lt;li&gt;預計會離開很久時，先 &lt;code&gt;/compact&lt;/code&gt; 或 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果只是小改動，不要開 Opus 加長上下文硬跑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比記一個固定「幾點到幾點不能用」的規則更可靠。&lt;/p&gt;
&lt;h2 id=&#34;07-精簡-claudemdrulesmcp-和-skills&#34;&gt;07 精簡 CLAUDE.md、rules、MCP 和 skills
&lt;/h2&gt;&lt;p&gt;Claude Code 會在會話中載入專案規則、工具資訊和一部分環境上下文。官方文件也建議把通用規則和專用規則分開，避免每次啟動都帶著一大包不相關內容。&lt;/p&gt;
&lt;p&gt;比較推薦的拆法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;：只放全域都適用的核心規則。&lt;/li&gt;
&lt;li&gt;rules：放特定路徑、特定檔案類型才需要的規則。&lt;/li&gt;
&lt;li&gt;skills：放特定工作流，例如發文章、部署、生成圖片、提交程式碼。&lt;/li&gt;
&lt;li&gt;MCP：只啟用目前任務真的會用到的 server。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 &lt;code&gt;CLAUDE.md&lt;/code&gt; 寫了幾百上千行，每次會話都要帶進去。更好的方式是把「偶爾才用」的流程移到 skill 裡，需要時再呼叫。&lt;/p&gt;
&lt;p&gt;MCP 也是一樣。工具多不等於效率高。Claude Code 文件提到可以用 &lt;code&gt;/mcp&lt;/code&gt; 查看並停用不需要的 server，也可以用 &lt;code&gt;/context&lt;/code&gt; 看是什麼佔用了上下文空間。&lt;/p&gt;
&lt;h2 id=&#34;08-實用指令清單&#34;&gt;08 實用指令清單
&lt;/h2&gt;&lt;p&gt;日常最常用的是這幾個：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/model
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;切換模型。預設建議用 Sonnet，複雜推理再用 Opus。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/clear
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;清空目前上下文。換無關任務時用，最省。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/compact
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;壓縮歷史上下文。一個階段完成但還要繼續同一任務時用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/context
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看上下文佔用，排查是什麼吃掉空間。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看目前訂閱或額度相關狀態。官方幫助中心也建議用它監控剩餘額度。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看和管理 MCP server，關閉目前不用的工具。&lt;/p&gt;
&lt;p&gt;如果你用 API 計費模式，還可以關注 &lt;code&gt;/cost&lt;/code&gt;；但如果是 Pro/Max 訂閱，官方文件說明 &lt;code&gt;/cost&lt;/code&gt; 的美元估算不適合作為訂閱帳單依據，訂閱使用者更應該看 &lt;code&gt;/stats&lt;/code&gt; 和 &lt;code&gt;/status&lt;/code&gt; 這類使用資訊。&lt;/p&gt;
&lt;h2 id=&#34;09-一套省額度工作流&#34;&gt;09 一套省額度工作流
&lt;/h2&gt;&lt;p&gt;比較順手的流程可以是這樣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新任務開始前先 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;預設用 Sonnet。&lt;/li&gt;
&lt;li&gt;先讓 Claude 讀專案結構和關鍵檔案，不要一口氣讀全倉庫。&lt;/li&gt;
&lt;li&gt;每做完一個小階段就 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;複雜卡點再切 Opus。&lt;/li&gt;
&lt;li&gt;日誌、報錯、測試輸出先過濾再給。&lt;/li&gt;
&lt;li&gt;任務完成後 &lt;code&gt;/clear&lt;/code&gt;，不要拖著舊上下文開新活。&lt;/li&gt;
&lt;li&gt;定期檢查 &lt;code&gt;CLAUDE.md&lt;/code&gt;、MCP 和 skills，把常駐上下文壓小。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個流程的核心是：讓 Claude 每次只看目前真正需要看的東西。&lt;/p&gt;
&lt;h2 id=&#34;10-小結&#34;&gt;10 小結
&lt;/h2&gt;&lt;p&gt;Claude Code 額度快速耗盡，通常不是單一原因，而是幾個因素疊加：用了高成本模型、長對話一直不清、檔案和日誌塞太多、MCP 和規則常駐過重、快取命中變差，再加上尖峰容量波動。&lt;/p&gt;
&lt;p&gt;省額度的核心也很簡單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常任務優先 Sonnet。&lt;/li&gt;
&lt;li&gt;Opus 留給真正複雜的問題。&lt;/li&gt;
&lt;li&gt;階段完成用 &lt;code&gt;/compact&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;換任務用 &lt;code&gt;/clear&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;/context&lt;/code&gt; 找上下文佔用來源。&lt;/li&gt;
&lt;li&gt;精簡 &lt;code&gt;CLAUDE.md&lt;/code&gt;、rules、MCP 和 skills。&lt;/li&gt;
&lt;li&gt;不要把整倉庫、整日誌、整圖片包都丟進去。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同樣的 Pro 或 Max 方案，能做多少事，很大程度取決於你怎麼管理上下文。把上下文變小、任務邊界變清楚，Claude Code 的可用時間和穩定性都會明顯好很多。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Claude Help Center：Using Claude Code with your Pro or Max plan：&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.claude.com/en/articles/11145838-using-claude-code-with-your-pro-or-max-plan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Help Center：About Claude&amp;rsquo;s Max Plan Usage：&lt;a class=&#34;link&#34; href=&#34;https://support.anthropic.com/en/articles/11014257-about-claude-s-max-plan-usage/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://support.anthropic.com/en/articles/11014257-about-claude-s-max-plan-usage/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Claude Code Docs：Manage costs effectively：&lt;a class=&#34;link&#34; href=&#34;https://code.claude.com/docs/en/costs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://code.claude.com/docs/en/costs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic Docs：Prompt caching：&lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>rembg 專案整理：本地圖片背景移除工具</title>
        <link>https://knightli.com/zh-tw/2026/04/19/rembg-background-removal-notes/</link>
        <pubDate>Sun, 19 Apr 2026 08:56:01 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/19/rembg-background-removal-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 是一個圖片背景移除工具，可以作為命令列工具、Python 函式庫、HTTP 服務或 Docker 容器使用。它的定位很直接：輸入一張圖，輸出帶透明通道的前景圖，適合產品圖、頭像、素材批次處理和自動化圖片處理流程。&lt;/p&gt;
&lt;p&gt;這類工具最大的好處是可以本地跑。對於不想把原圖上傳到線上去背服務、需要批次處理圖片，或者想把背景移除接進腳本和業務系統的人來說，&lt;code&gt;rembg&lt;/code&gt; 比網頁工具更容易自動化。&lt;/p&gt;
&lt;h2 id=&#34;01-安裝方式&#34;&gt;01 安裝方式
&lt;/h2&gt;&lt;p&gt;目前版本要求 Python &lt;code&gt;&amp;gt;=3.11,&amp;lt;3.14&lt;/code&gt;。安裝時需要按硬體選擇後端：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要命令列工具，加上 &lt;code&gt;cli&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;NVIDIA CUDA 環境可以安裝 GPU 版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[gpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AMD ROCm 環境則需要先按 ROCm 官方方式裝好 &lt;code&gt;onnxruntime-rocm&lt;/code&gt;，再安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[rocm,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;GPU 版本的坑通常不在 &lt;code&gt;rembg&lt;/code&gt; 本身，而在 &lt;code&gt;onnxruntime-gpu&lt;/code&gt;、CUDA、cuDNN 和驅動版本是否匹配。裝不起來時，先用 CPU 版本確認流程可用，再處理 GPU 環境，會少走很多彎路。&lt;/p&gt;
&lt;h2 id=&#34;02-cli-子命令&#34;&gt;02 CLI 子命令
&lt;/h2&gt;&lt;p&gt;安裝 CLI 後，終端機裡可以直接使用 &lt;code&gt;rembg&lt;/code&gt;。它主要有 4 個子命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;：處理單個檔案。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt;：處理整個資料夾。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;：啟動 HTTP 服務。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt;：處理 RGB24 像素二進位流，常用於配合 FFmpeg。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;查看說明：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg --help
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;處理單張本地圖片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從遠端圖片管道輸入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s http://input.png &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; rembg i &amp;gt; output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;指定模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -m u2netp input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只輸出 mask：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -om input.png mask.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;開啟 alpha matting：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg i -a input.png output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-a&lt;/code&gt; 對頭髮、毛邊、半透明邊緣有時更自然，但速度會慢一些，也不是所有圖片都能明顯改善。&lt;/p&gt;
&lt;h2 id=&#34;03-批次處理資料夾&#34;&gt;03 批次處理資料夾
&lt;/h2&gt;&lt;p&gt;批次處理是 &lt;code&gt;rembg&lt;/code&gt; 很實用的地方。把原圖放到一個目錄，輸出到另一個目錄：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;監聽目錄變化，自動處理新增或修改的圖片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg p -w path/to/input path/to/output
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個模式適合和下載腳本、商品圖整理、素材資料夾配合使用。比如把待處理圖片丟進 &lt;code&gt;input&lt;/code&gt;，由 &lt;code&gt;rembg&lt;/code&gt; 自動產生透明 PNG 到 &lt;code&gt;output&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;04-作為-python-函式庫呼叫&#34;&gt;04 作為 Python 函式庫呼叫
&lt;/h2&gt;&lt;p&gt;如果要接入自己的腳本，最簡單的方式是用 &lt;code&gt;remove&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接處理 PIL 圖片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;output_image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;批次處理時建議複用 session，避免每張圖片都重新初始化模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;rembg&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;new_session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.out.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;session&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你要做一個長期執行的圖片處理服務，session 複用比反覆呼叫命令列更合適。&lt;/p&gt;
&lt;h2 id=&#34;05-啟動-http-服務&#34;&gt;05 啟動 HTTP 服務
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 也可以直接啟動 HTTP 服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;7000&lt;/span&gt; --log_level info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動後可以存取：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://localhost:7000/api
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;透過 URL 移除背景：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove?url=http://input.png&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;上傳本地圖片：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s -F &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;@input.jpg &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://localhost:7000/api/remove&amp;#34;&lt;/span&gt; -o output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只需要 API，不需要 Gradio UI，可以關閉 UI 以降低空閒 CPU 佔用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rembg s --no-ui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;服務模式適合給內網工具、自動化流程或其他應用呼叫。但它不是完整的圖片資產管理系統，鑑權、限流、佇列、檔案清理這些仍然需要自己在外層補。&lt;/p&gt;
&lt;h2 id=&#34;06-docker-執行&#34;&gt;06 Docker 執行
&lt;/h2&gt;&lt;p&gt;CPU 版本可以直接用官方映像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v .:/data danielgatis/rembg i /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CUDA 加速需要主機安裝 NVIDIA Container Toolkit，並且通常需要自己基於專案裡的 &lt;code&gt;Dockerfile_nvidia_cuda_cudnn_gpu&lt;/code&gt; 建構映像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t rembg-nvidia-cuda-cudnn-gpu -f Dockerfile_nvidia_cuda_cudnn_gpu .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it --gpus all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v /dev/dri:/dev/dri &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v &lt;span class=&#34;nv&#34;&gt;$PWD&lt;/span&gt;:/data &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  rembg-nvidia-cuda-cudnn-gpu &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  i -m birefnet-general /data/input.png /data/output.png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方 README 提醒，GPU 映像體積會明顯大於 CPU 映像，而且模型檔案不包含在映像裡。為了避免重複下載模型，可以把模型目錄掛載出來：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -v /path/to/models:/root/.u2net ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-模型選擇&#34;&gt;07 模型選擇
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 首次使用模型時，會自動下載到 &lt;code&gt;~/.u2net/&lt;/code&gt;。常見模型包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u2net&lt;/code&gt;：通用模型，適合一般場景。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2netp&lt;/code&gt;：輕量版本，速度和體積更友好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_human_seg&lt;/code&gt;：偏人物分割。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_cloth_seg&lt;/code&gt;：偏服裝解析。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;silueta&lt;/code&gt;：類似 &lt;code&gt;u2net&lt;/code&gt;，但體積更小。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-general-use&lt;/code&gt;：通用場景的新模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-anime&lt;/code&gt;：偏動漫角色分割。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;birefnet-general&lt;/code&gt;：README 範例中用於通用圖片的模型。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sam&lt;/code&gt;：可配合提示點等額外參數使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;實際使用時，不建議只看模型名字。產品圖、人物、二次元圖、複雜背景、透明物體，對模型的要求都不一樣。比較穩的做法是選一批代表性圖片，用幾個模型跑一輪，看邊緣、漏摳、誤摳和速度，再決定預設模型。&lt;/p&gt;
&lt;p&gt;如果要使用自訂 &lt;code&gt;.onnx&lt;/code&gt; 模型，可以把檔案放到預設模型目錄 &lt;code&gt;~/.u2net/&lt;/code&gt;，並在需要時設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;MODEL_CHECKSUM_DISABLED&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣可以避免 &lt;code&gt;rembg&lt;/code&gt; 因校驗邏輯覆蓋你放進去的模型檔案。&lt;/p&gt;
&lt;h2 id=&#34;08-適合哪些場景&#34;&gt;08 適合哪些場景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 很適合這些任務：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批次產生透明背景產品圖。&lt;/li&gt;
&lt;li&gt;給頭像、證件照、素材圖做前景提取。&lt;/li&gt;
&lt;li&gt;把去背接入 Python 腳本或後端服務。&lt;/li&gt;
&lt;li&gt;在內網部署一個簡單的背景移除 API。&lt;/li&gt;
&lt;li&gt;用 FFmpeg 管道處理影片幀或序列幀。&lt;/li&gt;
&lt;li&gt;對隱私或素材版權敏感，不想上傳到第三方線上服務。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不太適合這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要人工級精修邊緣和複雜透明材質。&lt;/li&gt;
&lt;li&gt;對每張圖都要穩定商業攝影級品質。&lt;/li&gt;
&lt;li&gt;想要完整線上設計工具，而不是去背能力。&lt;/li&gt;
&lt;li&gt;沒有 Python / Docker 環境維護能力。&lt;/li&gt;
&lt;li&gt;GPU 驅動、CUDA、ROCm 環境已經很混亂，又急著上線。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;09-使用建議&#34;&gt;09 使用建議
&lt;/h2&gt;&lt;p&gt;如果只是偶爾處理圖片，CPU 版本就夠了：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install &lt;span class=&#34;s2&#34;&gt;&amp;#34;rembg[cpu,cli]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要批次處理幾千張圖，優先考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複用 Python session。&lt;/li&gt;
&lt;li&gt;固定模型目錄，避免重複下載。&lt;/li&gt;
&lt;li&gt;用 SSD 存放輸入輸出和模型檔案。&lt;/li&gt;
&lt;li&gt;先小批次測試模型效果。&lt;/li&gt;
&lt;li&gt;再決定是否折騰 GPU 加速。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPU 的價值主要在批次吞吐。單張圖片偶爾處理時，環境安裝成本可能比省下的時間更貴。尤其是 Windows、CUDA、cuDNN、&lt;code&gt;onnxruntime-gpu&lt;/code&gt; 版本不匹配時，CPU 版本反而更省心。&lt;/p&gt;
&lt;h2 id=&#34;10-簡短判斷&#34;&gt;10 簡短判斷
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; 的優點是簡單、開源、形態靈活：命令列能跑，Python 能接，HTTP 能調，Docker 能封裝。它很適合做「本地自動去背」的基礎元件。&lt;/p&gt;
&lt;p&gt;但它不是魔法橡皮擦。背景複雜、主體邊緣細碎、透明材質、陰影保留、商業級精修，都可能需要人工或更專門的流程補充。把它放在批次自動化裡時，最好預留人工複檢或失敗樣本回收機制。&lt;/p&gt;
&lt;p&gt;如果目標是快速給一批圖片去背景，並且希望流程留在本地，&lt;code&gt;rembg&lt;/code&gt; 值得放進工具箱。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Releases：&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/danielgatis/rembg/releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ONNX Runtime 安裝矩陣：&lt;a class=&#34;link&#34; href=&#34;https://onnxruntime.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://onnxruntime.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ollama 多顯卡使用筆記：顯存疊加、GPU 選擇和常見誤區</title>
        <link>https://knightli.com/zh-tw/2026/04/19/ollama-multiple-gpu-notes/</link>
        <pubDate>Sun, 19 Apr 2026 00:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/19/ollama-multiple-gpu-notes/</guid>
        <description>&lt;p&gt;折騰 Ollama 本地推理時，經常會遇到類似問題：我現在有一張顯卡，主機板還有空 PCIe 槽，再加幾張 GPU 對 Ollama 有幫助嗎？多顯卡是否必須同型號？顯存能不能疊加？會不會像訓練框架那樣多卡並行加速？&lt;/p&gt;
&lt;p&gt;這篇整理一下 Ollama 多顯卡的實際行為。重點先說結論：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 支援多 GPU。&lt;/li&gt;
&lt;li&gt;多 GPU 最大價值通常是讓更大的模型放進總顯存，而不是線性提升 token/s。&lt;/li&gt;
&lt;li&gt;預設策略下，如果模型能完整放進某一張 GPU，Ollama 傾向於放在單卡上。&lt;/li&gt;
&lt;li&gt;如果模型無法完整放進單張 GPU，Ollama 會把模型分布到可用 GPU 上。&lt;/li&gt;
&lt;li&gt;不同型號 GPU 可以被 Ollama 看到並使用，但效能和分配效果不一定理想。&lt;/li&gt;
&lt;li&gt;不需要 SLI / NVLink 才能用多卡。&lt;/li&gt;
&lt;li&gt;想限制 Ollama 使用哪些 GPU，需要用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;、&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 或 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;官方行為先單卡放不下再多卡&#34;&gt;官方行為：先單卡，放不下再多卡
&lt;/h2&gt;&lt;p&gt;Ollama FAQ 裡對多 GPU 載入邏輯說得比較直接：載入新模型時，Ollama 會估算模型所需 VRAM，並和目前可用顯存比較。如果模型能完整放進某一張 GPU，它會載入到那張 GPU 上；如果單張 GPU 放不下，才會分布到所有可用 GPU 上。&lt;/p&gt;
&lt;p&gt;這個策略的原因是效能。單卡載入通常能減少推理時跨 PCIe 匯流排的資料傳輸，因此往往更快。&lt;/p&gt;
&lt;p&gt;所以不要把 Ollama 的多 GPU 理解成「有幾張卡就自動幾倍加速」。更準確的理解是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小模型能進單卡：通常單卡跑。&lt;/li&gt;
&lt;li&gt;大模型單卡放不下：跨多卡分層載入。&lt;/li&gt;
&lt;li&gt;顯存仍不夠：一部分會落到系統記憶體，速度會明顯下降。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以用下面命令確認模型到底載入到了哪裡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出裡的 &lt;code&gt;PROCESSOR&lt;/code&gt; 會顯示類似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;48%/52% CPU/GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% CPU
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果看到 &lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;，說明已經有一部分在系統記憶體裡了。此時多加 GPU 或換更大顯存的卡，通常比繼續依賴 CPU/RAM 更有意義。&lt;/p&gt;
&lt;h2 id=&#34;多-gpu-不是簡單疊算力&#34;&gt;多 GPU 不是簡單疊算力
&lt;/h2&gt;&lt;p&gt;本地大模型推理和遊戲裡的 SLI 不是一回事。Ollama 多卡時，更常見的是把模型的不同層或張量放到不同裝置上。這樣可以用多張卡的顯存裝下更大的模型，但推理過程中仍然可能需要裝置之間傳遞資料。&lt;/p&gt;
&lt;p&gt;因此，多 GPU 帶來的收益通常分兩種：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顯存收益：更容易裝下大模型，或者避免落到 CPU/RAM。&lt;/li&gt;
&lt;li&gt;效能收益：只有在原本單卡裝不下或嚴重混 CPU 時，提升才會很明顯。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一個 8B 或 14B 模型本來就能完整放進單張 3090，強行拆到兩張卡不一定更快，甚至可能因為跨卡傳輸變慢。Ollama 官方預設「能單卡就單卡」的策略，就是為了避免這類不必要的跨 PCIe 開銷。&lt;/p&gt;
&lt;h2 id=&#34;不需要-sli-或-nvlink&#34;&gt;不需要 SLI 或 NVLink
&lt;/h2&gt;&lt;p&gt;Ollama 多 GPU 不依賴 SLI。多張普通 PCIe GPU 只要驅動和 Ollama 能識別，就可以被調度。&lt;/p&gt;
&lt;p&gt;NVLink 或更高 PCIe 頻寬可能對某些跨卡場景有幫助，但它不是 Ollama 多 GPU 的前提條件。很多二手 GPU 伺服器或工作站，靠普通 PCIe 多卡也能跑。&lt;/p&gt;
&lt;p&gt;真正要注意的是 PCIe 頻寬。&lt;code&gt;x1&lt;/code&gt;、&lt;code&gt;x4&lt;/code&gt;、&lt;code&gt;x8&lt;/code&gt;、&lt;code&gt;x16&lt;/code&gt; 的差異會影響模型載入到顯存的速度；如果頻繁切換大模型，PCIe 鏈路會更容易成為瓶頸。模型載入完成後，生成階段受 PCIe 的影響通常會小一些，但跨卡分層仍然可能帶來額外開銷。&lt;/p&gt;
&lt;p&gt;比較穩的建議是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;能用 x16 / x8 就不要用礦卡 x1 轉接。&lt;/li&gt;
&lt;li&gt;大模型頻繁切換時，PCIe 頻寬更重要。&lt;/li&gt;
&lt;li&gt;如果模型長期常駐顯存，PCIe 頻寬瓶頸會相對不明顯。&lt;/li&gt;
&lt;li&gt;多卡機器要重點看主機板 PCIe 拓撲和 CPU 直連通道。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何限制-ollama-使用哪些-nvidia-gpu&#34;&gt;如何限制 Ollama 使用哪些 NVIDIA GPU
&lt;/h2&gt;&lt;p&gt;NVIDIA 多卡環境下，用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; 控制 Ollama 能看到哪些卡。&lt;/p&gt;
&lt;p&gt;臨時執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只讓 Ollama 用第二張卡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;強制不用 NVIDIA GPU，可以給一個無效 ID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方文件提醒，數字 ID 的順序可能變化，更可靠的是用 GPU UUID。先查看 UUID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi -L
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;輸出類似：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 0: NVIDIA GeForce RTX 3090 (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 1: NVIDIA GeForce RTX 3070 (UUID: GPU-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後指定 UUID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 Ollama 是 Linux systemd 服務安裝的，需要寫到服務環境變數裡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl edit ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;加入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;CUDA_VISIBLE_DEVICES=0,1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後重載並重啟：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;amd-和-vulkan-的選擇變數&#34;&gt;AMD 和 Vulkan 的選擇變數
&lt;/h2&gt;&lt;p&gt;AMD ROCm 環境下，用 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; 控制可見 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要強制不用 ROCm GPU，也可以用無效 ID：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ollama 官方 GPU 文件還提到，如果用實驗性的 Vulkan 支援，可以透過 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt; 選擇 Vulkan GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_VULKAN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果 Vulkan 裝置有問題，可以停用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AMD 多卡比 NVIDIA 更容易遇到驅動、ROCm 版本、GFX 版本支援的問題。官方文件中也提到 Linux 下 ROCm 驅動版本、&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; 等相容性處理。多張不同代 AMD 卡混用時，先確認每張卡是否單獨可用，再考慮多卡。&lt;/p&gt;
&lt;h2 id=&#34;docker-裡怎麼暴露多張-gpu&#34;&gt;Docker 裡怎麼暴露多張 GPU
&lt;/h2&gt;&lt;p&gt;如果用 Docker 跑 Ollama，NVIDIA 環境通常需要先安裝 &lt;code&gt;nvidia-container-toolkit&lt;/code&gt;，然後用 &lt;code&gt;--gpus&lt;/code&gt; 暴露裝置。&lt;/p&gt;
&lt;p&gt;暴露全部 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;只暴露指定 GPU：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;device=0,1&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以結合環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果容器裡 &lt;code&gt;nvidia-smi&lt;/code&gt; 看不到卡，Ollama 也不可能用到 GPU。先排查 Docker GPU passthrough，再排查 Ollama。&lt;/p&gt;
&lt;h2 id=&#34;ollama_sched_spread-是什麼&#34;&gt;&lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; 是什麼
&lt;/h2&gt;&lt;p&gt;在一些多 GPU 配置討論裡，會看到 &lt;code&gt;OLLAMA_SCHED_SPREAD=1&lt;/code&gt; 或 &lt;code&gt;OLLAMA_SCHED_SPREAD=true&lt;/code&gt;。它和 Ollama 的調度策略有關，常被用於希望模型或請求更分散地利用多張 GPU 的場景。&lt;/p&gt;
&lt;p&gt;可以這樣設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_SCHED_SPREAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者 systemd：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;OLLAMA_SCHED_SPREAD=true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不過它不是萬能開關。開啟後並不等於 token/s 線性增長，也可能因為多個模型同時載入、顯存估算、上下文長度和 KV cache 增長導致 OOM。官方 FAQ 的核心策略仍然是：如果單 GPU 能完整容納模型，單 GPU 通常更高效；單 GPU 放不下時才跨多 GPU。&lt;/p&gt;
&lt;p&gt;所以建議把 &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; 當成進階調度實驗項，而不是多卡必開項。先理解預設行為，再根據實際 &lt;code&gt;ollama ps&lt;/code&gt;、日誌和 &lt;code&gt;nvidia-smi&lt;/code&gt; 觀察結果調整。&lt;/p&gt;
&lt;h2 id=&#34;怎麼觀察多卡是否真的用上&#34;&gt;怎麼觀察多卡是否真的用上
&lt;/h2&gt;&lt;p&gt;常用觀察命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;watch -n 0.5 nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看 Ollama 服務日誌：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -u ollama -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 Docker：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你需要關注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 是否發現相容 GPU。&lt;/li&gt;
&lt;li&gt;模型是否顯示 &lt;code&gt;100% GPU&lt;/code&gt; 或 CPU/GPU 混合。&lt;/li&gt;
&lt;li&gt;每張卡顯存是否有占用。&lt;/li&gt;
&lt;li&gt;載入模型時是否多卡顯存同時增長。&lt;/li&gt;
&lt;li&gt;生成時 token/s 是否比 CPU/RAM 混跑明顯改善。&lt;/li&gt;
&lt;li&gt;是否頻繁 OOM 或卸載模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只看 GPU 利用率，很容易誤判。LLM 推理時 GPU 利用率不一定長期滿載，尤其是多卡、低 batch、小上下文、慢 CPU 或慢 PCIe 環境下。&lt;/p&gt;
&lt;h2 id=&#34;常見誤區&#34;&gt;常見誤區
&lt;/h2&gt;&lt;h3 id=&#34;誤區-1兩張-12gb-顯卡等於一張-24gb-顯卡&#34;&gt;誤區 1：兩張 12GB 顯卡等於一張 24GB 顯卡
&lt;/h3&gt;&lt;p&gt;不完全等價。多卡可以讓模型跨裝置放置，但跨卡存取有額外開銷。它能解決「放不下」的問題，不一定等價於單張大顯存卡的速度和穩定性。&lt;/p&gt;
&lt;h3 id=&#34;誤區-2不同型號顯卡不能混用&#34;&gt;誤區 2：不同型號顯卡不能混用
&lt;/h3&gt;&lt;p&gt;不一定。只要驅動、計算能力和執行庫都支援，Ollama 可以看到多張 GPU。但混用時，速度通常受較慢卡、較小顯存和 PCIe 拓撲影響。最穩的多卡配置仍然是同型號、同顯存、同代驅動支援良好的卡。&lt;/p&gt;
&lt;h3 id=&#34;誤區-3多卡一定比單卡快&#34;&gt;誤區 3：多卡一定比單卡快
&lt;/h3&gt;&lt;p&gt;不一定。如果模型能完整放進單張快卡，單卡可能更快。多卡主要適合大模型、長上下文、單卡顯存不夠的情況。&lt;/p&gt;
&lt;h3 id=&#34;誤區-4必須有-nvlink--sli&#34;&gt;誤區 4：必須有 NVLink / SLI
&lt;/h3&gt;&lt;p&gt;不需要。普通 PCIe 多卡也能被 Ollama 使用。NVLink 不是前提。&lt;/p&gt;
&lt;h3 id=&#34;誤區-5加-gpu-後不用重啟服務&#34;&gt;誤區 5：加 GPU 後不用重啟服務
&lt;/h3&gt;&lt;p&gt;不一定。Linux systemd 服務、Windows 背景應用、Docker 容器都可能需要重啟，才能重新識別裝置和環境變數。&lt;/p&gt;
&lt;h2 id=&#34;選卡建議&#34;&gt;選卡建議
&lt;/h2&gt;&lt;p&gt;如果目標是 Ollama 本地推理，優先級大致是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;單卡顯存越大越省心。&lt;/li&gt;
&lt;li&gt;同型號多卡比混合多卡更容易排錯。&lt;/li&gt;
&lt;li&gt;PCIe 通道越完整，載入大模型越舒服。&lt;/li&gt;
&lt;li&gt;老卡要先確認 CUDA compute capability 或 ROCm 支援。&lt;/li&gt;
&lt;li&gt;多卡電源、散熱和機箱風道要提前算清楚。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對於預算有限的二手平台：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;雙 3090 仍然是很常見的大顯存方案。&lt;/li&gt;
&lt;li&gt;P40 / M40 這類老 Tesla 顯存大，但功耗、散熱、驅動和效能都要權衡。&lt;/li&gt;
&lt;li&gt;4070 / 4070 Ti 這類新卡能效好，但單卡顯存容量限制更明顯。&lt;/li&gt;
&lt;li&gt;多張 8GB 老卡能折騰，但不建議為了大模型長期使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Ollama 多顯卡支援可以理解成「顯存擴展優先，效能加速其次」。如果模型能完整放進一張 GPU，預設單卡通常更快；如果單卡放不下，多卡可以把模型分布到多張 GPU 上，避免大量落到 CPU/RAM，從而讓大模型變得可用。&lt;/p&gt;
&lt;p&gt;實際配置時，先用 &lt;code&gt;ollama ps&lt;/code&gt; 看模型載入位置，再用 &lt;code&gt;nvidia-smi&lt;/code&gt; 或 ROCm 工具觀察顯存占用。需要限制 GPU 時，NVIDIA 用 &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;，AMD ROCm 用 &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;，Vulkan 用 &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;。如果在 Docker 中執行，先確保容器層面能看到 GPU。&lt;/p&gt;
&lt;p&gt;多卡不是魔法。它能幫你裝下更大的模型，但不保證線性加速。真正穩定好用的路線，仍然是盡量選大顯存單卡或同型號多卡，並把驅動、PCIe、電源、散熱和模型量化一起考慮。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ollama FAQ：How does Ollama load models on multiple GPUs?：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ollama GPU 文件：Hardware support / GPU Selection：&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ollama Docker Hub：&lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hub.docker.com/r/ollama/ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;NVIDIA Container Toolkit：&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvidia-container-toolkit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvidia-container-toolkit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Google App 桌面版體驗：把 AI 搜尋放進 Windows</title>
        <link>https://knightli.com/zh-tw/2026/04/18/google-app-desktop-ai-search-windows/</link>
        <pubDate>Sat, 18 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/18/google-app-desktop-ai-search-windows/</guid>
        <description>&lt;p&gt;Google 把一個更輕量的搜尋入口放到了 Windows 桌面上：不用每次先打開瀏覽器，只要按下快捷鍵，就能直接調出一個搜尋框，輸入問題、上傳圖片、分析檔案、圈選螢幕內容，甚至繼續追問。&lt;/p&gt;
&lt;p&gt;這款工具的官方名稱是 &lt;strong&gt;Google app for desktop&lt;/strong&gt;。它的定位不是再做一個傳統瀏覽器，而是把 Google Search、AI Mode、Google Lens、螢幕分享、電腦檔案搜尋和 Google Drive 搜尋整合到一個桌面入口裡。&lt;/p&gt;
&lt;p&gt;如果你平時經常查資料、總結文件、識別截圖內容，或者希望像呼叫啟動器一樣快速搜尋電腦裡的東西，這個桌面版 Google App 會比較適合嘗試。&lt;/p&gt;
&lt;h2 id=&#34;支援條件&#34;&gt;支援條件
&lt;/h2&gt;&lt;p&gt;根據 Google 官方頁面，目前桌面版 Google App 的要求如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用者需年滿 13 歲。&lt;/li&gt;
&lt;li&gt;裝置需要執行 Windows 10 或更高版本。&lt;/li&gt;
&lt;li&gt;目前應用程式僅支援英文。&lt;/li&gt;
&lt;li&gt;Google Search 的 AI Mode 並非支援所有帳號、國家和語言。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，如果你使用的是 Windows 10 或 Windows 11，可以先安裝測試。官方頁面目前明確寫的是 &lt;strong&gt;Now available on Windows&lt;/strong&gt;，所以這裡以 Windows 版為準介紹。&lt;/p&gt;
&lt;h2 id=&#34;主要功能&#34;&gt;主要功能
&lt;/h2&gt;&lt;h3 id=&#34;1-快捷鍵調出搜尋框&#34;&gt;1. 快捷鍵調出搜尋框
&lt;/h3&gt;&lt;p&gt;安裝完成後，可以透過：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alt + Space
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;快速調出 Google 桌面搜尋框。再按一次可以隱藏。&lt;/p&gt;
&lt;p&gt;這個體驗有點像系統啟動器：無論你正在寫文件、看網頁、整理檔案，還是打開了其他應用程式，都可以直接喚出搜尋入口，不需要切回瀏覽器。&lt;/p&gt;
&lt;h3 id=&#34;2-ai-mode-搜尋與連續追問&#34;&gt;2. AI Mode 搜尋與連續追問
&lt;/h3&gt;&lt;p&gt;普通搜尋通常是給你一組網頁連結，而 AI Mode 更像是把搜尋結果先整理成答案。你可以直接問一個問題，它會給出較完整的說明，並附帶可繼續查看的連結。&lt;/p&gt;
&lt;p&gt;更實用的是，它支援繼續追問。比如你先問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;這款工具適合用來做什麼？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;得到答案後，可以繼續問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;如果我是內容創作者，應該怎麼用它提升效率？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣就不用反覆更換關鍵字，也不用在多個網頁之間來回跳。&lt;/p&gt;
&lt;h3 id=&#34;3-上傳圖片進行識別和搜尋&#34;&gt;3. 上傳圖片進行識別和搜尋
&lt;/h3&gt;&lt;p&gt;桌面版 Google App 支援上傳圖片後提問。常見用法包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;識別圖片裡的人物、地點、商品或物體。&lt;/li&gt;
&lt;li&gt;查找相似圖片和相關資料。&lt;/li&gt;
&lt;li&gt;根據圖片內容提取描述。&lt;/li&gt;
&lt;li&gt;讓 AI 基於圖片繼續生成創意提示詞。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如上傳一張人物圖片後，可以問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;圖片中的人物是誰？請提供相關介紹和參考資料。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果只是日常查圖、找出處、識別物品，這會比手動打開網頁再上傳圖片更順手。&lt;/p&gt;
&lt;h3 id=&#34;4-google-lens-圈選螢幕內容&#34;&gt;4. Google Lens 圈選螢幕內容
&lt;/h3&gt;&lt;p&gt;Google Lens 是這款桌面應用程式裡很實用的一部分。你可以直接圈選螢幕上的某一塊內容，讓它識別並搜尋。&lt;/p&gt;
&lt;p&gt;適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;圈選網頁裡的商品，查找同款或相關資訊。&lt;/li&gt;
&lt;li&gt;圈選截圖中的文字，讓它解釋含義。&lt;/li&gt;
&lt;li&gt;圈選軟體介面，讓它判斷這是什麼工具。&lt;/li&gt;
&lt;li&gt;圈選錯誤訊息，讓它幫你定位問題。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的核心價值是「看到什麼，搜什麼」。以前你可能需要截圖、儲存、上傳，現在可以直接在螢幕上選中目標。&lt;/p&gt;
&lt;h3 id=&#34;5-螢幕分享搜尋&#34;&gt;5. 螢幕分享搜尋
&lt;/h3&gt;&lt;p&gt;除了圈選某一部分內容，它還支援螢幕分享。開啟後，可以讓 AI 看到目前視窗或整個螢幕，然後圍繞螢幕內容提問。&lt;/p&gt;
&lt;p&gt;例如你正在打開一篇部落格，可以問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請總結目前頁面的重點內容。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;你覺得這個頁面有哪些可以優化的地方？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在閱讀網頁、檢查設計稿、分析程式碼片段、總結長頁面時，這個功能會比較省時間。開啟螢幕分享時，系統通常會有明顯的邊框提示，方便確認目前是否正在分享。&lt;/p&gt;
&lt;h3 id=&#34;6-搜尋電腦檔案和-google-drive&#34;&gt;6. 搜尋電腦檔案和 Google Drive
&lt;/h3&gt;&lt;p&gt;官方介紹中還提到，它可以從同一個搜尋框裡查找電腦上的應用程式和檔案，也可以搜尋 Google Drive。&lt;/p&gt;
&lt;p&gt;這類功能更像是把桌面搜尋和雲端搜尋放在一起。比如你記得某個檔案的大概名字、內容關鍵字，或者想快速找到 Google Drive 裡的資料，就不必分別打開檔案總管和雲端硬碟頁面。&lt;/p&gt;
&lt;p&gt;首次使用時，如果頁面提示開啟 Google Drive 搜尋或本機檔案搜尋，可以按自己的需求授權。涉及本機檔案和雲端資料時，建議只開啟自己確實需要的範圍。&lt;/p&gt;
&lt;h2 id=&#34;安裝與使用步驟&#34;&gt;安裝與使用步驟
&lt;/h2&gt;&lt;h3 id=&#34;1-打開官方下載頁面&#34;&gt;1. 打開官方下載頁面
&lt;/h3&gt;&lt;p&gt;訪問官方頁面：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://search.google/google-app/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://search.google/google-app/desktop/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;點擊頁面上的 &lt;strong&gt;Download app&lt;/strong&gt; 下載應用程式。&lt;/p&gt;
&lt;h3 id=&#34;2-安裝桌面應用程式&#34;&gt;2. 安裝桌面應用程式
&lt;/h3&gt;&lt;p&gt;下載完成後，執行安裝程式，按提示完成安裝即可。&lt;/p&gt;
&lt;p&gt;安裝後可以選擇登入 Google 帳號。登入後更方便使用 Google Drive 搜尋、個人化搜尋以及部分 AI 能力；如果只是做基礎搜尋，也可以先按頁面提示體驗。&lt;/p&gt;
&lt;h3 id=&#34;3-調出搜尋框&#34;&gt;3. 調出搜尋框
&lt;/h3&gt;&lt;p&gt;按下快捷鍵：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Alt + Space
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;桌面上會出現 Google 搜尋框。你可以直接輸入問題，也可以使用上傳、Lens、螢幕分享等功能。&lt;/p&gt;
&lt;h3 id=&#34;4-開啟需要的搜尋範圍&#34;&gt;4. 開啟需要的搜尋範圍
&lt;/h3&gt;&lt;p&gt;如果你希望搜尋 Google Drive 或本機檔案，可以根據提示開啟相關權限。&lt;/p&gt;
&lt;p&gt;建議做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先開啟 Google Drive 搜尋，測試雲端資料查找效果。&lt;/li&gt;
&lt;li&gt;再按需開啟本機檔案搜尋。&lt;/li&gt;
&lt;li&gt;不需要搜尋的範圍就先不要授權。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣既能體驗完整功能，也能更清楚它存取了哪些資料。&lt;/p&gt;
&lt;h2 id=&#34;常見使用場景&#34;&gt;常見使用場景
&lt;/h2&gt;&lt;h3 id=&#34;分析-pdf-和文件&#34;&gt;分析 PDF 和文件
&lt;/h3&gt;&lt;p&gt;可以把 PDF、表格或文件拖進去，讓它幫你總結重點。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請總結這份 PDF 的核心內容，並列出需要注意的事項。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果是表格、流水、申請表、說明書這類資訊密度高的檔案，可以繼續追問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請按類別整理其中的關鍵資訊。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這類場景比自己逐頁翻文件更有效率。&lt;/p&gt;
&lt;h3 id=&#34;總結網頁內容&#34;&gt;總結網頁內容
&lt;/h3&gt;&lt;p&gt;開啟螢幕分享後，可以讓它直接總結目前頁面。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請提煉這個頁面的主要觀點，並用 5 條要點總結。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;適合快速瀏覽長文章、產品頁面、說明文件或新聞內容。&lt;/p&gt;
&lt;h3 id=&#34;識別截圖和介面&#34;&gt;識別截圖和介面
&lt;/h3&gt;&lt;p&gt;用 Google Lens 圈選螢幕上的軟體介面、程式碼片段、錯誤提示或圖片內容，可以讓它解釋目前看到的資訊。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請解釋這段錯誤是什麼意思，並給出排查思路。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;請判斷這個截圖裡展示的是什麼工具，它可能用於什麼場景。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;輔助內容創作&#34;&gt;輔助內容創作
&lt;/h3&gt;&lt;p&gt;它也可以用來寫標題、生成大綱、整理賣點。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;幫我寫 10 個關於 AI 工具推薦的文章標題，分別偏向乾貨、效率工具和職場辦公方向。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;得到初稿後，還可以繼續要求它按平台風格優化：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;把這些標題改得更適合科技部落格。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這種連續追問的體驗，比一次性讓搜尋引擎給結果更自然。&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;p&gt;如果只是日常查資料，可以把它當成一個更快的 Google Search 入口；如果你經常處理圖片、PDF、網頁和截圖，就可以重點嘗試 Lens、檔案上傳和螢幕分享。&lt;/p&gt;
&lt;p&gt;使用時也建議注意三點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;目前官方頁面寫明僅英文可用，中文提問的效果可能會因帳號和地區而不同。&lt;/li&gt;
&lt;li&gt;AI Mode 不一定對所有帳號開放，如果看不到相關能力，可以先確認帳號、地區和語言設定。&lt;/li&gt;
&lt;li&gt;本機檔案、Google Drive、螢幕分享都涉及隱私權限，開啟前先確認自己要讓它存取哪些內容。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;快速總結&#34;&gt;快速總結
&lt;/h2&gt;&lt;p&gt;Google App 桌面版最大的價值，是把搜尋入口從瀏覽器裡抽出來，變成一個隨時可以呼出的桌面 AI 搜尋框。&lt;/p&gt;
&lt;p&gt;它能做的事情可以概括為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Alt + Space&lt;/code&gt; 快速呼出搜尋。&lt;/li&gt;
&lt;li&gt;用 AI Mode 直接獲得整理後的答案。&lt;/li&gt;
&lt;li&gt;上傳圖片或檔案進行分析。&lt;/li&gt;
&lt;li&gt;用 Google Lens 圈選螢幕內容搜尋。&lt;/li&gt;
&lt;li&gt;透過螢幕分享理解目前視窗或整個螢幕。&lt;/li&gt;
&lt;li&gt;搜尋電腦檔案、應用程式和 Google Drive 內容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你本來就依賴 Google 搜尋，又希望搜尋過程更接近「問一個助手」，這款桌面版 Google App 值得試一下。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Google App 桌面版官方頁面：&lt;a class=&#34;link&#34; href=&#34;https://search.google/google-app/desktop/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://search.google/google-app/desktop/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 E4B 越獄版和官方普通版有什麼差別</title>
        <link>https://knightli.com/zh-tw/2026/04/18/gemma-4-e4b-uncensored-vs-official/</link>
        <pubDate>Sat, 18 Apr 2026 10:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/18/gemma-4-e4b-uncensored-vs-official/</guid>
        <description>&lt;p&gt;如果你看到 &lt;code&gt;HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/code&gt; 這種模型，最關鍵的一點是：它&lt;strong&gt;不是 Google 新發的另一套 Gemma 4&lt;/strong&gt;，而是建立在官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt; 之上的非官方衍生版本，重點是把模型行為調到「更少拒答」。&lt;/p&gt;
&lt;p&gt;所以它和普通版真正拉開的，通常不是底層架構，而是&lt;strong&gt;對齊策略與輸出風格&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;這個衍生版模型卡自己怎麼說&#34;&gt;這個衍生版模型卡自己怎麼說
&lt;/h2&gt;&lt;p&gt;Hugging Face 模型卡裡，這個 HauhauCS 版本明確寫了幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它基於 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;它聲稱「沒有改資料集或能力」&lt;/li&gt;
&lt;li&gt;它聲稱變化只是「去掉拒答」&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Aggressive&lt;/code&gt; 版本被描述為「完全解鎖，不會拒絕提示詞」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些是作者自己的說法，不是第三方獨立測評。但從定位來看已經很清楚：這就是一個以「減少安全拒答」為目標的非官方衍生版。&lt;/p&gt;
&lt;h2 id=&#34;官方版-vs-所謂越獄版&#34;&gt;官方版 vs 所謂「越獄版」
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;維度&lt;/th&gt;
          &lt;th&gt;官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/code&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;來源&lt;/td&gt;
          &lt;td&gt;Google 官方發布&lt;/td&gt;
          &lt;td&gt;Hugging Face 第三方衍生版&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;基礎模型&lt;/td&gt;
          &lt;td&gt;Gemma 4 E4B 指令微調版&lt;/td&gt;
          &lt;td&gt;同一模型家族，且模型卡明確寫明基於 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;核心目標&lt;/td&gt;
          &lt;td&gt;通用助理能力 + 負責任使用框架&lt;/td&gt;
          &lt;td&gt;盡量減少拒答，讓模型繼續輸出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全取向&lt;/td&gt;
          &lt;td&gt;與 Gemma 家族的安全文件、禁止用途政策一致&lt;/td&gt;
          &lt;td&gt;明確削弱拒答與護欄行為&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;回答風格&lt;/td&gt;
          &lt;td&gt;更可能拒絕、轉向或保守回答敏感請求&lt;/td&gt;
          &lt;td&gt;更可能直接繼續回答原本會被擋下的問題&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;風險水位&lt;/td&gt;
          &lt;td&gt;預設風險較低，但仍不代表絕對安全&lt;/td&gt;
          &lt;td&gt;預設風險更高，更容易輸出不安全或不合規內容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;用於產品/團隊&lt;/td&gt;
          &lt;td&gt;更容易通過評審與落地&lt;/td&gt;
          &lt;td&gt;更難用於公開產品、企業環境或合規場景&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;額外防護需求&lt;/td&gt;
          &lt;td&gt;仍需要應用層防護&lt;/td&gt;
          &lt;td&gt;更依賴你自己做額外審核、過濾與限制&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;核心差異是對齊方式變了不是能力等級突然提高&#34;&gt;核心差異是「對齊方式」變了，不是「能力等級」突然提高
&lt;/h2&gt;&lt;p&gt;很多人會把 &lt;code&gt;uncensored&lt;/code&gt; 理解成「更強」，這通常不是精準的判斷。&lt;/p&gt;
&lt;p&gt;對這種衍生版來說，最先變的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拒答頻率&lt;/li&gt;
&lt;li&gt;對敏感請求的服從程度&lt;/li&gt;
&lt;li&gt;最終答案裡還剩多少安全過濾&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而不會因為名稱裡寫了 &lt;code&gt;Uncensored&lt;/code&gt;，就自動代表下面這些一起升級：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型架構突然更強&lt;/li&gt;
&lt;li&gt;上下文視窗突然更大&lt;/li&gt;
&lt;li&gt;多模態能力突然更完整&lt;/li&gt;
&lt;li&gt;推理上限顯著更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更準確的理解是：它通常只是&lt;strong&gt;同一模型家族裡，行為調校不同的一版&lt;/strong&gt;，而不是更高階的新模型。&lt;/p&gt;
&lt;h2 id=&#34;為什麼官方普通版會更保守&#34;&gt;為什麼官方普通版會更保守
&lt;/h2&gt;&lt;p&gt;Google 的 Gemma 官方資料一直把這個系列放在「負責任 AI 開發」的框架裡。Gemma 模型卡會明確談到誤用、有害內容、隱私與偏見等風險；Gemma Prohibited Use Policy 也明確禁止把 Gemma 或其衍生模型用於：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;危險、違法或惡意活動&lt;/li&gt;
&lt;li&gt;生成有害、誤導、欺騙性內容&lt;/li&gt;
&lt;li&gt;覆蓋或繞過安全過濾&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以官方版不是「剛好比較保守」，而是從文件、授權與部署定位上，本來就那樣設計。&lt;/p&gt;
&lt;h2 id=&#34;什麼情況下普通版更適合&#34;&gt;什麼情況下普通版更適合
&lt;/h2&gt;&lt;p&gt;如果你更在意下面這些，優先用官方 &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;產品部署&lt;/li&gt;
&lt;li&gt;團隊協作&lt;/li&gt;
&lt;li&gt;企業或對外場景&lt;/li&gt;
&lt;li&gt;較低的政策與法律風險&lt;/li&gt;
&lt;li&gt;更容易解釋與審查的輸出行為&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對大多數正常應用來說，這通常才是預設選項。&lt;/p&gt;
&lt;h2 id=&#34;什麼情況下有人會去試越獄版&#34;&gt;什麼情況下有人會去試越獄版
&lt;/h2&gt;&lt;p&gt;選這類 uncensored 衍生版的人，常見目的通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地私人實驗&lt;/li&gt;
&lt;li&gt;測試官方版是否「太早拒答」&lt;/li&gt;
&lt;li&gt;角色扮演或更開放的創作場景&lt;/li&gt;
&lt;li&gt;比較不同對齊版本的行為差異&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但對應的代價也很明確：模型提供方少做的那部分安全約束，需要你自己補回來。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;所謂 Gemma 4 E4B「越獄版」和官方普通版，最本質的差異其實是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方版追求的是「有護欄的可用能力」&lt;/li&gt;
&lt;li&gt;越獄版追求的是「更少拒答的可輸出性」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它&lt;strong&gt;不自動等於更強&lt;/strong&gt;，更多只是&lt;strong&gt;更放開&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你的目標是穩定、可解釋、適合部署，先用官方版更合理。&lt;br&gt;
如果你的目標是本地實驗，而且你清楚知道安全、合規與輸出風險都要自己承擔，那這類 uncensored 衍生版可以當成「行為差異版本」來測試，但不應該直接理解成普通版的全面升級替代品。&lt;/p&gt;
&lt;h2 id=&#34;參考來源&#34;&gt;參考來源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hugging Face: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hugging Face: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/google/gemma-4-E4B-it&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/gemma-4-E4B-it&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google AI for Developers: &lt;a class=&#34;link&#34; href=&#34;https://ai.google.dev/gemma/prohibited_use_policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma Prohibited Use Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google AI for Developers: &lt;a class=&#34;link&#34; href=&#34;https://ai.google.dev/gemma/docs/core/model_card&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma model card&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows 用 WSL &#43; Ollama 本地部署 Hermes Agent，並接入 Telegram</title>
        <link>https://knightli.com/zh-tw/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</link>
        <pubDate>Sat, 18 Apr 2026 00:48:22 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</guid>
        <description>&lt;p&gt;如果你想在 &lt;code&gt;Windows&lt;/code&gt; 上盡量低門檻地跑 &lt;code&gt;Hermes Agent&lt;/code&gt;，一個比較順手的路徑是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主系統繼續用 Windows&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;WSL&lt;/code&gt; 裡跑 &lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;Ollama&lt;/code&gt; 提供本地模型&lt;/li&gt;
&lt;li&gt;讓 &lt;code&gt;Hermes Agent&lt;/code&gt; 直接連接本地 Ollama 介面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的好處是環境相對乾淨，命令大多按 Linux 方式執行，同時又不需要單獨準備一台 Linux 機器。&lt;/p&gt;
&lt;h2 id=&#34;整體流程&#34;&gt;整體流程
&lt;/h2&gt;&lt;p&gt;這套部署可以拆成 4 步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;啟用 &lt;code&gt;WSL&lt;/code&gt; 並安裝 &lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在 Ubuntu 裡補齊 Python、Node.js、Git 等執行環境&lt;/li&gt;
&lt;li&gt;安裝 &lt;code&gt;Ollama&lt;/code&gt; 並拉取本地模型&lt;/li&gt;
&lt;li&gt;安裝 &lt;code&gt;Hermes Agent&lt;/code&gt;，再接入 &lt;code&gt;Telegram&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你只想先把 Hermes Agent 跑起來，其實做到第 3 步就已經很接近完成了。&lt;/p&gt;
&lt;h2 id=&#34;1-安裝-wsl-和-ubuntu&#34;&gt;1. 安裝 WSL 和 Ubuntu
&lt;/h2&gt;&lt;p&gt;在管理員權限的 PowerShell 裡執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝完成後重新啟動電腦，然後繼續安裝 Ubuntu：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-d&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之後打開 WSL 裡的 Ubuntu，後續命令基本都在這裡執行。&lt;/p&gt;
&lt;h2 id=&#34;2-更新-ubuntu並安裝基礎環境&#34;&gt;2. 更新 Ubuntu，並安裝基礎環境
&lt;/h2&gt;&lt;p&gt;先更新系統：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後安裝 Python、解壓工具、Node.js 和 Git。&lt;/p&gt;
&lt;h3 id=&#34;安裝-python&#34;&gt;安裝 Python
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install python3-pip python3-venv -y
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安裝-zstd&#34;&gt;安裝 zstd
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y zstd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安裝-nodejs&#34;&gt;安裝 Node.js
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://deb.nodesource.com/setup_22.x &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo -E bash -
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y nodejs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;安裝-git&#34;&gt;安裝 Git
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install -y git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝完成後可以順手檢查一下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git --version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-安裝-ollama並拉取-gemma-4&#34;&gt;3. 安裝 Ollama，並拉取 Gemma 4
&lt;/h2&gt;&lt;p&gt;安裝 Ollama：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://ollama.com/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你打算給 Hermes Agent 配一個本地模型，可以直接從 &lt;code&gt;Gemma 4&lt;/code&gt; 開始。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:e4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果機器資源更弱，也可以試：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:e2b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更大的版本還有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:26b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:31b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;對大多數 &lt;code&gt;Windows + WSL&lt;/code&gt; 的普通機器來說，&lt;code&gt;gemma4:e4b&lt;/code&gt; 通常是更實際的起點。&lt;/p&gt;
&lt;h2 id=&#34;4-安裝並配置-hermes-agent&#34;&gt;4. 安裝並配置 Hermes Agent
&lt;/h2&gt;&lt;p&gt;安裝命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝完成後，給它指定 Ollama 的本地介面：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://127.0.0.1:11434
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;模型名填你本地實際在用的那個，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemma4:e4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果安裝腳本要求刷新 shell，可以執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;hermes-agent-常用命令&#34;&gt;Hermes Agent 常用命令
&lt;/h2&gt;&lt;p&gt;平時最常用的是下面幾個：&lt;/p&gt;
&lt;h3 id=&#34;啟動&#34;&gt;啟動
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;重新進入配置&#34;&gt;重新進入配置
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;配置聊天平台閘道&#34;&gt;配置聊天平台閘道
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup gateway
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;更新&#34;&gt;更新
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;接入-telegram-的基礎步驟&#34;&gt;接入 Telegram 的基礎步驟
&lt;/h2&gt;&lt;p&gt;如果你要讓 Hermes Agent 透過 Telegram 收發訊息，核心還是先跑一遍：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup gateway
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後準備 Telegram 端需要的兩個東西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;BotFather&lt;/code&gt; 建立機器人&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;@userinfobot&lt;/code&gt; 取得你的 &lt;code&gt;User ID&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;拿到這些基礎資訊後，再按 Hermes Agent 的閘道配置繼續填入即可。&lt;/p&gt;
&lt;h2 id=&#34;這套方案適合什麼人&#34;&gt;這套方案適合什麼人
&lt;/h2&gt;&lt;p&gt;這套方式比較適合下面幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;平時主力系統就是 Windows&lt;/li&gt;
&lt;li&gt;不想單獨折騰完整 Linux 主機&lt;/li&gt;
&lt;li&gt;想先把本地 Agent 跑通，再慢慢擴展聊天平台接入&lt;/li&gt;
&lt;li&gt;希望優先用本地模型，不依賴雲端 API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想本地體驗一個 Agent，而不是一開始就做複雜生產部署，這條路線已經足夠實用。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的幾個點&#34;&gt;需要注意的幾個點
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WSL&lt;/code&gt; 本質上還是一層相容環境，極端場景下穩定性未必和原生 Linux 完全一樣&lt;/li&gt;
&lt;li&gt;大模型能不能跑得順，最終還是取決於你的記憶體、顯存和 CPU / GPU 條件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gemma4:e4b&lt;/code&gt; 雖然是比較現實的起點，但具體體驗還是要看機器配置&lt;/li&gt;
&lt;li&gt;Hermes Agent 的聊天平台接入屬於「能力擴展」，先把本地模型鏈路跑通，再加 Telegram，會更穩&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;如果你想在 Windows 上盡量簡單地本地部署 Hermes Agent，比較順的順序就是：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;WSL -&amp;gt; Ubuntu -&amp;gt; Ollama -&amp;gt; Gemma 4 -&amp;gt; Hermes Agent -&amp;gt; Telegram&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;先把本地模型跑通，再做閘道接入，成功率會高很多。對大多數使用者來說，這比一上來就堆很多元件更容易排錯，也更適合後續繼續擴展。&lt;/p&gt;
&lt;h2 id=&#34;原文參考&#34;&gt;原文參考
&lt;/h2&gt;&lt;p&gt;本文根據下列頁面內容整理並改寫：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X超哥博客：&lt;a class=&#34;link&#34; href=&#34;https://www.xchaoge.com/21.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;太简单了！Hermes Agent 本地部署（无需API）接入 Telegram + 微信&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>llama-cli -hf 下載 Hugging Face 模型預設儲存在哪裡</title>
        <link>https://knightli.com/zh-tw/2026/04/17/llama-cli-hf-download-default-cache-path/</link>
        <pubDate>Fri, 17 Apr 2026 14:48:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/17/llama-cli-hf-download-default-cache-path/</guid>
        <description>&lt;p&gt;如果你使用的是 &lt;code&gt;llama-cli&lt;/code&gt; 直接從 Hugging Face 下載並執行模型，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這是 &lt;code&gt;llama.cpp&lt;/code&gt; 內建的 Hugging Face 下載能力。新版 &lt;code&gt;llama.cpp&lt;/code&gt; 會把 &lt;code&gt;-hf&lt;/code&gt; 下載的模型放進標準 Hugging Face Hub 快取目錄。&lt;/p&gt;
&lt;h2 id=&#34;預設快取位置&#34;&gt;預設快取位置
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-cli -hf&lt;/code&gt; 下載的模型快取位置優先由 &lt;code&gt;LLAMA_CACHE&lt;/code&gt; 環境變數控制。如果沒有設定 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，則會繼續檢查 Hugging Face 相關快取變數，例如 &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;、&lt;code&gt;HUGGINGFACE_HUB_CACHE&lt;/code&gt; 和 &lt;code&gt;HF_HOME&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果這些變數都沒有設定，常見預設路徑如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;系統&lt;/th&gt;
          &lt;th&gt;預設快取目錄&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;macOS&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Windows&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;在 Windows 上，&lt;code&gt;%USERPROFILE%&lt;/code&gt; 通常對應：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;所以預設快取目錄大致是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;C:\Users\用户名\.cache\huggingface\hub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;想修改-llama-cli-的快取目錄怎麼辦&#34;&gt;想修改 llama-cli 的快取目錄怎麼辦
&lt;/h2&gt;&lt;p&gt;可以設定 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，把模型快取放到指定磁碟或目錄。也可以依照 Hugging Face 的習慣設定 &lt;code&gt;HF_HOME&lt;/code&gt;，此時實際 Hub 快取目錄會是 &lt;code&gt;$HF_HOME/hub&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Windows CMD 暫時設定範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set LLAMA_CACHE=D:\models\llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;PowerShell 暫時設定範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\models\llama-cache&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;llama-cli&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-hf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unsloth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-E4B-it-GGUF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux / macOS 暫時設定範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LLAMA_CACHE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/data/models/llama-cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama-cli -hf ...&lt;/code&gt; 使用的是 &lt;code&gt;llama.cpp&lt;/code&gt; 下載邏輯，但新版預設會落到 Hugging Face Hub 快取。&lt;/li&gt;
&lt;li&gt;Linux / macOS 預設：&lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows 預設：&lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;想換目錄：設定 &lt;code&gt;LLAMA_CACHE&lt;/code&gt;，或設定 &lt;code&gt;HF_HOME&lt;/code&gt; / &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Windows 下 llama-cli 直連 Hugging Face 出現 SSL 憑證驗證失敗怎麼辦</title>
        <link>https://knightli.com/zh-tw/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</link>
        <pubDate>Fri, 17 Apr 2026 14:20:29 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</guid>
        <description>&lt;p&gt;如果你在 Windows 下執行下面這條命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;並看到類似錯誤：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_repo_commit: error: HTTPLIB failed: SSL server verification failed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;error: failed to download model from Hugging Face
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常不是 CUDA 或 &lt;code&gt;llama.cpp&lt;/code&gt; 本身有問題，而是程式在目前環境裡沒有正確取得系統憑證鏈，導致 HTTPS 驗證失敗。&lt;/p&gt;
&lt;p&gt;從錯誤訊息來看，&lt;code&gt;ggml-rpc.dll&lt;/code&gt; 和 &lt;code&gt;ggml-cpu-alderlake.dll&lt;/code&gt; 都已經正常載入，代表執行環境本身大致可用，問題主要集中在模型下載階段。&lt;/p&gt;
&lt;h2 id=&#34;最省事的辦法先手動下載模型&#34;&gt;最省事的辦法：先手動下載模型
&lt;/h2&gt;&lt;p&gt;如果你只是想盡快跑起來，本機手動下載通常最穩。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開對應的 Hugging Face 倉庫頁面。&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;Files and versions&lt;/code&gt; 裡下載需要的 &lt;code&gt;.gguf&lt;/code&gt; 檔案。&lt;/li&gt;
&lt;li&gt;下載完成後，直接用本機檔案路徑執行：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;llama&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cli&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Users&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;knightli&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;Downloads&lt;/span&gt;\&lt;span class=&#34;n&#34;&gt;gemma&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;e4b&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;it&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gguf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣可以繞過 &lt;code&gt;-hf&lt;/code&gt; 下載階段的 SSL 驗證問題，適合先確認模型能不能正常推理。&lt;/p&gt;
&lt;h2 id=&#34;如果還想繼續用--hf-自動下載&#34;&gt;如果還想繼續用 &lt;code&gt;-hf&lt;/code&gt; 自動下載
&lt;/h2&gt;&lt;p&gt;可以手動指定憑證檔路徑，讓程式在目前工作階段裡找到可用的 CA 憑證。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cacert.pem&lt;/code&gt; 可以從 curl 官方維護的 CA Extract 頁面取得：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;頁面地址：&lt;a class=&#34;link&#34; href=&#34;https://curl.se/docs/caextract.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/docs/caextract.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;直接下載：&lt;a class=&#34;link&#34; href=&#34;https://curl.se/ca/cacert.pem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://curl.se/ca/cacert.pem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果用瀏覽器下載，打開上面的直接下載地址後儲存為 &lt;code&gt;cacert.pem&lt;/code&gt; 即可。也可以在 PowerShell 裡下載到固定目錄，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;New-Item&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ItemType&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Directory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Invoke-WebRequest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Uri&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;curl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;se&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ca&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-OutFile&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;C:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;certs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cacert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;pem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下載完成後，在命令列裡設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set SSL_CERT_FILE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set CURL_CA_BUNDLE=C:\certs\cacert.pem
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;再重新執行原本的命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf unsloth/gemma-4-E4B-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果問題確實來自憑證鏈，這種方式通常可以直接解決。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>codex-quota 實戰指南：保留命令列的本機、Web 與 Docker 用法</title>
        <link>https://knightli.com/zh-tw/2026/04/16/codex-quota-cli-web-docker-guide/</link>
        <pubDate>Thu, 16 Apr 2026 18:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/16/codex-quota-cli-web-docker-guide/</guid>
        <description>&lt;h2 id=&#34;這個專案做什麼&#34;&gt;這個專案做什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;codex-quota&lt;/code&gt; 是一個輕量工具，可查詢 ChatGPT Codex 配額使用情況，資料來源是 &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;主要功能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;支援單帳號或多帳號（&lt;code&gt;account/*.auth.json&lt;/code&gt;）查詢。&lt;/li&gt;
&lt;li&gt;輸出 &lt;code&gt;five_hour%&lt;/code&gt;、&lt;code&gt;weekly%&lt;/code&gt;、&lt;code&gt;weekly_reset&lt;/code&gt;，並標記來源（&lt;code&gt;network&lt;/code&gt; 或 &lt;code&gt;cache&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;對暫時性失敗（&lt;code&gt;408&lt;/code&gt;、&lt;code&gt;429&lt;/code&gt;、&lt;code&gt;5xx&lt;/code&gt;）做指數退避重試。&lt;/li&gt;
&lt;li&gt;內建本地快取，減少配額耗盡時的重複請求。&lt;/li&gt;
&lt;li&gt;提供 Web Dashboard、JSON API、auth 檔管理頁面。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;優點：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;輕量：單腳本即可執行，依賴簡單。&lt;/li&gt;
&lt;li&gt;實用：CLI 與 Web 兩種入口都能使用。&lt;/li&gt;
&lt;li&gt;可部署：支援 Docker 與 Docker Compose。&lt;/li&gt;
&lt;li&gt;易維運：支援重試、快取與定時刷新。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;先準備好帳號憑證&#34;&gt;先準備好帳號憑證
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;account/&amp;lt;name&amp;gt;.auth.json&lt;/code&gt; 建立憑證檔，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;eyJ...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user-xxxxxxxx&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt; 與 &lt;code&gt;account_id&lt;/code&gt; 是查詢介面所需欄位。&lt;/li&gt;
&lt;li&gt;檔名中的 &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; 會作為結果中的帳號名稱。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;本機-cli-用法保留原命令&#34;&gt;本機 CLI 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：安裝專案執行依賴。&lt;/p&gt;
&lt;p&gt;查詢全部帳號：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：讀取 &lt;code&gt;account/*.auth.json&lt;/code&gt;，彙總輸出所有帳號配額。&lt;/p&gt;
&lt;p&gt;查詢單一帳號：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py your_account_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：只查詢 &lt;code&gt;account/your_account_name.auth.json&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;強制刷新（跳過快取）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota.py --refresh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：忽略本地快取，直接請求最新介面資料。&lt;/p&gt;
&lt;h2 id=&#34;cli-參數說明readme-對齊&#34;&gt;CLI 參數說明（README 對齊）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account_name&lt;/code&gt;：可選帳號名（不含 &lt;code&gt;.auth.json&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;：憑證目錄，預設 &lt;code&gt;account&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;：配額介面位址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-json&lt;/code&gt;：輸出完整 JSON 回應體。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-headers&lt;/code&gt;：輸出回應標頭。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;：忽略快取。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;：重試次數，預設 &lt;code&gt;3&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;：基礎重試間隔秒數，預設 &lt;code&gt;2.0&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;web-dashboard-用法保留原命令&#34;&gt;Web Dashboard 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;啟動服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python codex_quota_service.py --host 0.0.0.0 --port &lt;span class=&#34;m&#34;&gt;8081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：啟動 HTTP 服務並監聽 &lt;code&gt;8081&lt;/code&gt; 埠。&lt;/p&gt;
&lt;p&gt;存取位址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Service 參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--host&lt;/code&gt;：監聽位址，預設 &lt;code&gt;0.0.0.0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port&lt;/code&gt;：服務埠，預設 &lt;code&gt;8081&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--interval-seconds&lt;/code&gt;：排程刷新間隔，預設 &lt;code&gt;3600&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;：憑證目錄，預設 &lt;code&gt;account&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--state-file&lt;/code&gt;：狀態檔路徑，預設 &lt;code&gt;&amp;lt;account-dir&amp;gt;/codex_quota_web_results.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-name&lt;/code&gt;：可選，單帳號模式。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;：配額介面位址。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;：重試次數。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;：基礎重試延遲。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;：排程刷新時忽略 CLI 快取。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;http-介面方便接自動化&#34;&gt;HTTP 介面（方便接自動化）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /&lt;/code&gt;：Dashboard 頁面。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/results&lt;/code&gt;：最新結果 JSON。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /refresh&lt;/code&gt;：立即刷新並跳回 &lt;code&gt;/&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth&lt;/code&gt;：列出 auth 檔。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/new&lt;/code&gt;：新建 auth 檔表單。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/edit?name=&amp;lt;account&amp;gt;&lt;/code&gt;：編輯 auth 檔表單。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/save&lt;/code&gt;：建立/更新 auth 檔。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/delete&lt;/code&gt;：刪除 auth 檔。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker-用法保留原命令&#34;&gt;Docker 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;建置映像：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker build -t codex-quota .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：將目前專案打包為 &lt;code&gt;codex-quota&lt;/code&gt; 映像。&lt;/p&gt;
&lt;p&gt;執行容器（映射 8081）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -p 8081:8081 -v ./account:/app/account codex-quota
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--rm&lt;/code&gt;：容器退出後自動刪除。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p 8081:8081&lt;/code&gt;：主機埠映射到容器埠。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v ./account:/app/account&lt;/code&gt;：把本地憑證目錄掛載進容器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存取位址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;docker-compose-用法保留原命令&#34;&gt;Docker Compose 用法（保留原命令）
&lt;/h2&gt;&lt;p&gt;啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up --build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;說明：依 &lt;code&gt;docker-compose.yml&lt;/code&gt; 建置並啟動服務。&lt;/p&gt;
&lt;p&gt;存取位址：&lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;使用建議&#34;&gt;使用建議
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;多帳號場景優先使用 Dashboard，便於統一查看與管理 auth 檔。&lt;/li&gt;
&lt;li&gt;告警或自動化整合優先使用 &lt;code&gt;GET /api/results&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;公開倉庫不要提交真實 &lt;code&gt;access_token&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;若看到大量暫時性錯誤，可調大 &lt;code&gt;--retries&lt;/code&gt; 與 &lt;code&gt;--retry-delay&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>在 VS Code 裡接入 Claude：從 API 設定到網頁生成</title>
        <link>https://knightli.com/zh-tw/2026/04/16/vscode-claude-api-coding-workflow/</link>
        <pubDate>Thu, 16 Apr 2026 17:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/16/vscode-claude-api-coding-workflow/</guid>
        <description>&lt;p&gt;如果你已經開始把大模型帶進日常開發，最直接的感受通常不是「會不會寫程式」，而是「能不能把很多零碎工作一次推進起來」。&lt;/p&gt;
&lt;p&gt;這類工具真正有價值的地方，不只是補全幾行程式碼，而是能在編輯器裡同時完成對話、改檔案、預覽結果和繼續迭代。對於簡單頁面、原型驗證、樣式調整和功能補齊，這種工作方式往往比傳統的手動來回切換更順手。&lt;/p&gt;
&lt;p&gt;這篇就整理一下，一個比較實用的思路：在 &lt;code&gt;VS Code&lt;/code&gt; 裡接入 &lt;code&gt;Claude&lt;/code&gt; 一類模型之後，怎麼把它用在真實的頁面生成和小功能迭代上。&lt;/p&gt;
&lt;h2 id=&#34;一先把工具鏈接通&#34;&gt;一、先把工具鏈接通
&lt;/h2&gt;&lt;p&gt;這類 AI 編程外掛的核心流程其實都差不多：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;VS Code&lt;/code&gt; 裡安裝支援對話式改程式碼的外掛&lt;/li&gt;
&lt;li&gt;在外掛設定裡填入模型服務的 &lt;code&gt;Base URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;設定自己的 &lt;code&gt;API Key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;選擇要使用的模型名稱&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完成這幾步之後，編輯器裡的 AI 能力才算真正可用。後面的體驗差異，大多不在「能不能用」，而在「模型品質怎麼樣、外掛互動是否順手、生成結果是否穩定」。&lt;/p&gt;
&lt;p&gt;如果你之前沒有配過這類外掛，可以把它理解成這樣：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外掛負責把你的自然語言請求變成編輯器裡的操作流程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;API&lt;/code&gt; 負責把請求送到模型服務&lt;/li&gt;
&lt;li&gt;模型負責理解你的需求並回傳程式碼、修改建議或結構化結果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以真正要配對的，其實就是三件事：外掛、介面位址、模型名稱。&lt;/p&gt;
&lt;h2 id=&#34;二適合先從小任務開始&#34;&gt;二、適合先從小任務開始
&lt;/h2&gt;&lt;p&gt;很多人第一次上手，會希望它直接幫自己「做一個完整專案」。這不是不行，但對新手來說，最容易建立正確預期的方式，反而是先從非常小的任務開始。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成一個簡單的前端頁面&lt;/li&gt;
&lt;li&gt;給現有頁面補一個公告區塊&lt;/li&gt;
&lt;li&gt;增加註冊表單&lt;/li&gt;
&lt;li&gt;調整介面，讓樣式更正式一些&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種任務有幾個好處：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指令足夠清楚，模型更容易理解&lt;/li&gt;
&lt;li&gt;結果可以立刻預覽，回饋很快&lt;/li&gt;
&lt;li&gt;你能明顯看到「對話」和「改程式碼」是如何連動的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當需求比較明確時，外掛通常會一邊在側邊欄裡和你對話，一邊直接修改右側檔案。等到任務完成之後，你再看生成結果、預覽頁面、決定要不要繼續追加需求，這個節奏會比純聊天自然很多。&lt;/p&gt;
&lt;h2 id=&#34;三真正提效的不是一次生成而是連續迭代&#34;&gt;三、真正提效的不是一次生成，而是連續迭代
&lt;/h2&gt;&lt;p&gt;AI 編程最容易被誤解的一點，是大家總把注意力放在「第一次生成得像不像」。&lt;/p&gt;
&lt;p&gt;但在實際使用裡，更重要的往往是第二輪、第三輪還能不能順著改下去。&lt;/p&gt;
&lt;p&gt;一個比較常見的過程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先讓它快速生成一個能跑的頁面骨架&lt;/li&gt;
&lt;li&gt;再追加一兩個明確功能&lt;/li&gt;
&lt;li&gt;然後觀察程式碼和介面是否一起變得更完整&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果工具體驗比較順，整個過程會很像你在帶一個執行速度很快的初級開發同事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你提需求&lt;/li&gt;
&lt;li&gt;它先做出一版&lt;/li&gt;
&lt;li&gt;你指出哪裡不夠&lt;/li&gt;
&lt;li&gt;它繼續修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這種「連續對話式迭代」比單次生成更接近日常開發場景，也是它最容易拉開效率差距的地方。&lt;/p&gt;
&lt;h2 id=&#34;四要學會區分適合交給-ai-的部分和自己順手改更快的部分&#34;&gt;四、要學會區分「適合交給 AI 的部分」和「自己順手改更快的部分」
&lt;/h2&gt;&lt;p&gt;這也是非常關鍵的一點。&lt;/p&gt;
&lt;p&gt;像頁面佈局、元件初稿、表單骨架、樣式潤飾、文案占位、重複性程式碼補齊，這些通常都很適合交給 AI 先做。&lt;/p&gt;
&lt;p&gt;但如果只是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一行按鈕文字&lt;/li&gt;
&lt;li&gt;調整一個頁腳說明&lt;/li&gt;
&lt;li&gt;換一個很小的樣式細節&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;很多時候自己直接改會更快。因為這種修改的成本已經低到，不值得再發起一次完整的模型互動。&lt;/p&gt;
&lt;p&gt;真正高效的使用方式，不是「什麼都交給 AI」，而是知道什麼時候該讓它一口氣做完大塊工作，什麼時候自己收尾更省時間。&lt;/p&gt;
&lt;h2 id=&#34;五api-設定是門檻但不是難點&#34;&gt;五、API 設定是門檻，但不是難點
&lt;/h2&gt;&lt;p&gt;不少人卡住，其實不是卡在寫程式，而是卡在外掛設定。&lt;/p&gt;
&lt;p&gt;常見需要確認的內容通常包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;介面位址是不是填對了&lt;/li&gt;
&lt;li&gt;密鑰是不是有效&lt;/li&gt;
&lt;li&gt;模型名稱是不是和服務端一致&lt;/li&gt;
&lt;li&gt;外掛是否要求特定格式的 &lt;code&gt;Base URL&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要這幾項有一項不對，外掛表面上可能還能打開，但真正發請求時就會失敗。&lt;/p&gt;
&lt;p&gt;所以如果你發現外掛沒有正常工作，排查順序通常可以很簡單：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看介面位址&lt;/li&gt;
&lt;li&gt;再看密鑰&lt;/li&gt;
&lt;li&gt;最後看模型名稱和外掛要求的格式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把這三項核對清楚，大多數接入問題都能快速定位。&lt;/p&gt;
&lt;h2 id=&#34;六怎麼看生成結果值不值得繼續用&#34;&gt;六、怎麼看生成結果值不值得繼續用
&lt;/h2&gt;&lt;p&gt;一個比較實用的判斷標準，不是看它「驚不驚艷」，而是看下面這幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生成出來的頁面能不能直接跑起來&lt;/li&gt;
&lt;li&gt;結構是不是基本清楚&lt;/li&gt;
&lt;li&gt;追加需求後有沒有明顯跑偏&lt;/li&gt;
&lt;li&gt;改動量變大時，是否還能保持一致性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果一兩輪對話之後，它已經能把頁面從空白推進到一個可繼續修改的狀態，那這個工具基本就有實用價值了。&lt;/p&gt;
&lt;p&gt;反過來說，如果每次生成都需要你大面積返工，那它帶來的就不是提效，而只是把「寫程式」換成了「審程式」。&lt;/p&gt;
&lt;h2 id=&#34;結語&#34;&gt;結語
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;VS Code&lt;/code&gt; 裡接入 &lt;code&gt;Claude&lt;/code&gt; 一類模型，最值得期待的不是「從此不寫程式了」，而是很多原本零散、重複、容易打斷思路的工作，可以被一次性打包推進。&lt;/p&gt;
&lt;p&gt;更現實的用法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讓它先搭頁面和功能骨架&lt;/li&gt;
&lt;li&gt;用連續對話完成兩三輪迭代&lt;/li&gt;
&lt;li&gt;自己處理最後那些細小但確定的修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣配合下來，AI 更像一個加速器，而不是一個必須完全接管開發流程的替代者。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude 身分驗證說明：為什麼要驗證、需要什麼材料、資料如何處理</title>
        <link>https://knightli.com/zh-tw/2026/04/16/claude-identity-verification-guide/</link>
        <pubDate>Thu, 16 Apr 2026 09:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/16/claude-identity-verification-guide/</guid>
        <description>&lt;p&gt;Anthropic 最近在 Claude 上逐步推出身分驗證。按照官方說明，這不是單純為了增加使用門檻，而是平台完整性、安全合規和防濫用機制的一部分。&lt;/p&gt;
&lt;p&gt;簡單說，Claude 的身分驗證主要解決三個問題：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;確認正在使用強大 AI 工具的人是誰。&lt;/li&gt;
&lt;li&gt;協助執行使用政策，降低濫用風險。&lt;/li&gt;
&lt;li&gt;滿足必要的法律和合規義務。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你在訪問 Claude 的某些功能時看到身分驗證提示，一般可以理解為平台在做例行的安全與合規檢查。Anthropic 也明確說明，驗證資料只用於確認身分，不會用於其它目的。&lt;/p&gt;
&lt;h2 id=&#34;01-什麼時候會要求身分驗證&#34;&gt;01 什麼時候會要求身分驗證
&lt;/h2&gt;&lt;p&gt;官方文件沒有把所有觸發條件列成完整清單，只說明身分驗證正在面向部分用例推出，並且可能在訪問某些功能時出現。&lt;/p&gt;
&lt;p&gt;這意味著，看到驗證提示並不一定代表帳號有問題。更常見的情況是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你正在使用某些需要更高信任級別的功能。&lt;/li&gt;
&lt;li&gt;平台正在進行完整性檢查。&lt;/li&gt;
&lt;li&gt;你的帳號或使用場景觸發了安全與合規流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從使用者角度看，最重要的是提前知道驗證流程需要什麼材料，避免臨時卡住。&lt;/p&gt;
&lt;h2 id=&#34;02-驗證由誰處理&#34;&gt;02 驗證由誰處理
&lt;/h2&gt;&lt;p&gt;Claude 的身分驗證由 Anthropic 與第三方驗證服務商 &lt;code&gt;Persona Identities&lt;/code&gt; 配合完成。&lt;/p&gt;
&lt;p&gt;官方說明中，Anthropic 選擇 Persona 的原因包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;技術能力&lt;/li&gt;
&lt;li&gt;隱私控制&lt;/li&gt;
&lt;li&gt;安全保障&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這裡可以理解為：Anthropic 負責制定驗證資料的使用和保留規則，Persona 按 Anthropic 的指示處理具體驗證流程。&lt;/p&gt;
&lt;h2 id=&#34;03-需要準備什麼&#34;&gt;03 需要準備什麼
&lt;/h2&gt;&lt;p&gt;開始驗證前，最好提前準備三樣東西：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;材料&lt;/th&gt;
          &lt;th&gt;說明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;有效的政府簽發帶照片身分證件&lt;/td&gt;
          &lt;td&gt;必須是實體證件，並且在手邊&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;帶攝影機的手機或電腦&lt;/td&gt;
          &lt;td&gt;可能需要拍攝即時自拍照，或使用電腦攝影機&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;幾分鐘時間&lt;/td&gt;
          &lt;td&gt;官方說明驗證通常不到 5 分鐘&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果證件不在身邊，或者電腦沒有攝影機，驗證流程很可能會中斷。&lt;/p&gt;
&lt;h2 id=&#34;04-接受哪些身分證件&#34;&gt;04 接受哪些身分證件
&lt;/h2&gt;&lt;p&gt;官方接受大多數國家和地區的原始、實體、政府簽發的帶照片身分證件。常見類型包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;護照&lt;/li&gt;
&lt;li&gt;駕駛執照&lt;/li&gt;
&lt;li&gt;州、省或地區身分證&lt;/li&gt;
&lt;li&gt;國家身分證&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;證件需要滿足幾個基本條件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;由政府簽發&lt;/li&gt;
&lt;li&gt;包含本人照片&lt;/li&gt;
&lt;li&gt;清晰可讀&lt;/li&gt;
&lt;li&gt;完好無損&lt;/li&gt;
&lt;li&gt;不是影本或截圖&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05-不接受哪些材料&#34;&gt;05 不接受哪些材料
&lt;/h2&gt;&lt;p&gt;下面這些材料通常不能用於 Claude 身分驗證：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影本&lt;/li&gt;
&lt;li&gt;截圖&lt;/li&gt;
&lt;li&gt;掃描件&lt;/li&gt;
&lt;li&gt;對證件照片再次拍攝的照片&lt;/li&gt;
&lt;li&gt;數位或行動身分證件，例如行動駕駛執照&lt;/li&gt;
&lt;li&gt;非政府證件，例如學生證、員工證、圖書卡、銀行卡&lt;/li&gt;
&lt;li&gt;臨時紙本身分證件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一點很容易踩坑。很多人以為「能看清就行」，但官方要求的是原始、實體、政府簽發的證件。&lt;/p&gt;
&lt;h2 id=&#34;06-資料如何被保護&#34;&gt;06 資料如何被保護
&lt;/h2&gt;&lt;p&gt;這部分是文件裡最值得關注的地方。&lt;/p&gt;
&lt;p&gt;Anthropic 的說明可以概括為：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Anthropic 是驗證資料的資料控制者，負責制定如何使用和保留資料的規則。&lt;/li&gt;
&lt;li&gt;Persona 是處理方，代表 Anthropic 執行驗證流程。&lt;/li&gt;
&lt;li&gt;身分證件和自拍照由 Persona 收集並保存，不直接存放在 Anthropic 系統裡。&lt;/li&gt;
&lt;li&gt;Anthropic 在必要時可以透過 Persona 平台存取驗證記錄，例如處理申訴。&lt;/li&gt;
&lt;li&gt;Persona 只能按合約約定使用這些資料，主要用於提供和支援驗證，以及改進防詐欺能力。&lt;/li&gt;
&lt;li&gt;傳輸給 Persona 的資料會在傳輸中和靜止時加密。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;換句話說，使用者提交的證件和自拍照不是被 Claude 拿去當普通帳號資料隨意使用，而是被限制在身分驗證和合規流程中。&lt;/p&gt;
&lt;h2 id=&#34;07-anthropic-明確說不會做什麼&#34;&gt;07 Anthropic 明確說不會做什麼
&lt;/h2&gt;&lt;p&gt;官方文件專門列出了幾件「不會做」的事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不使用身分驗證資料訓練模型。&lt;/li&gt;
&lt;li&gt;不收集超過驗證身分所需的資訊。&lt;/li&gt;
&lt;li&gt;不把身分資料用於行銷、廣告或與驗證無關的目的。&lt;/li&gt;
&lt;li&gt;除非法律要求回應有效法律程序，否則不會與無關第三方共享驗證資料。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這幾點對使用者很關鍵。身分驗證最敏感的地方不是「拍一次證件照」本身，而是資料之後會不會被拿去做其它用途。Anthropic 在這篇文件裡給出的口徑是：驗證資料只服務於身分確認、法律義務和安全合規。&lt;/p&gt;
&lt;h2 id=&#34;08-驗證失敗怎麼辦&#34;&gt;08 驗證失敗怎麼辦
&lt;/h2&gt;&lt;p&gt;驗證失敗不一定代表帳號異常，常見原因包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;照片模糊&lt;/li&gt;
&lt;li&gt;光線太差&lt;/li&gt;
&lt;li&gt;證件資訊不清楚&lt;/li&gt;
&lt;li&gt;證件過期&lt;/li&gt;
&lt;li&gt;技術問題&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方建議按這個順序處理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;重試。驗證流程通常會提供多次嘗試機會。&lt;/li&gt;
&lt;li&gt;換更好的光線重新拍攝。&lt;/li&gt;
&lt;li&gt;檢查證件是否清晰、完整、未過期。&lt;/li&gt;
&lt;li&gt;如果有其它政府簽發的帶照片證件，可以嘗試更換證件。&lt;/li&gt;
&lt;li&gt;如果嘗試次數用完仍無法通過，透過官方表單聯絡支援。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;實際操作時，最常見的解決辦法就是換一個光線更好的環境，並確保攝影機對焦清楚。&lt;/p&gt;
&lt;h2 id=&#34;09-為什麼驗證後帳號還可能被停用&#34;&gt;09 為什麼驗證後帳號還可能被停用
&lt;/h2&gt;&lt;p&gt;身分驗證通過不等於帳號一定不會被限制。Anthropic 說明，帳號仍可能因為安全流程中的其它原因被停用，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重複違反使用政策&lt;/li&gt;
&lt;li&gt;從不支援的位置建立帳號&lt;/li&gt;
&lt;li&gt;違反服務條款&lt;/li&gt;
&lt;li&gt;18 歲以下使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你認為帳號被錯誤停用，可以填寫官方申訴表，並提供帳號資訊，讓安全團隊進一步調查。&lt;/p&gt;
&lt;h2 id=&#34;10-使用者應該怎麼準備&#34;&gt;10 使用者應該怎麼準備
&lt;/h2&gt;&lt;p&gt;如果你準備繼續使用 Claude，尤其是使用更高階功能，可以提前做好幾件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;準備有效、未過期、實體的政府簽發帶照片證件。&lt;/li&gt;
&lt;li&gt;確保攝影機可用，最好手機和電腦都能訪問驗證頁面。&lt;/li&gt;
&lt;li&gt;在光線充足的環境下驗證。&lt;/li&gt;
&lt;li&gt;不要上傳截圖、掃描件或證件照片的翻拍圖。&lt;/li&gt;
&lt;li&gt;如果驗證失敗，先檢查證件清晰度和光線，再聯絡支援。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對大多數使用者來說，Claude 身分驗證不是複雜流程，但它對材料真實性要求比較嚴格。只要證件類型正確、拍攝清楚，通常幾分鐘內就能完成。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.claude.com/zh-CN/articles/14328960-claude-%E4%B8%8A%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude 上的身分驗證 - Anthropic Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/legal/privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Anthropic 隱私政策&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Codex 額度怎麼算：5 小時限額、週限額與 Credit 消耗</title>
        <link>https://knightli.com/zh-tw/2026/04/15/codex-usage-limits-five-hour-weekly-credits/</link>
        <pubDate>Wed, 15 Apr 2026 22:50:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/15/codex-usage-limits-five-hour-weekly-credits/</guid>
        <description>&lt;p&gt;很多人第一次看 Codex 額度時，會以為 &lt;code&gt;5 小時限額&lt;/code&gt; 是一個短期餘額池，只有它用完之後才開始扣 &lt;code&gt;週限額&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;實際不是這樣。Codex 更像是同時檢查多個額度窗口：短窗口防止短時間爆量，週窗口限制一週總量。一次 Codex 使用通常會同時計入這兩個窗口。&lt;/p&gt;
&lt;p&gt;所以你看到：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 小時額度還剩很多
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;但 weekly 額度已經下降
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通常是正常現象。&lt;/p&gt;
&lt;h2 id=&#34;01-先記住結論&#34;&gt;01 先記住結論
&lt;/h2&gt;&lt;p&gt;Codex 額度可以先按下面三句話理解：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;5 小時限額&lt;/code&gt; 和 &lt;code&gt;週限額&lt;/code&gt; 是同時生效，不是先後扣除。&lt;/li&gt;
&lt;li&gt;週限額用完後，即使 5 小時額度還有，通常也不能繼續用同一個訂閱額度池。&lt;/li&gt;
&lt;li&gt;Codex 不是簡單按訊息條數計費，而是和模型、tokens、任務複雜度、上下文、執行位置有關。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;用偽代碼表示就是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;can_use_codex =
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    five_hour_remaining &amp;gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;amp;&amp;amp; weekly_remaining &amp;gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &amp;amp;&amp;amp; 沒有觸發其它產品策略限制
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;5 小時窗口重置，只恢復 5 小時額度；不會恢復 weekly 額度。weekly 額度要等自己的 reset，或者在支援的方案裡購買額外 credits。&lt;/p&gt;
&lt;h2 id=&#34;02-為什麼會同時扣兩個窗口&#34;&gt;02 為什麼會同時扣兩個窗口
&lt;/h2&gt;&lt;p&gt;可以把 Codex 的額度想成兩個閘門：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;窗口&lt;/th&gt;
          &lt;th&gt;作用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;5 小時窗口&lt;/td&gt;
          &lt;td&gt;防止短時間高頻使用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;週窗口&lt;/td&gt;
          &lt;td&gt;控制一週總使用量&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;每次 Codex 任務都會產生一次實際消耗。這個消耗會反映到目前相關的 rate limit 窗口裡。&lt;/p&gt;
&lt;p&gt;因此不是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;先扣 5 小時額度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5 小時額度用完後
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;再扣週額度
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;而更像是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;一次 Codex 請求
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 計入 5 小時窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 同時計入週窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這就是「5 小時額度沒用完，但 weekly 也在下降」的核心原因。&lt;/p&gt;
&lt;h2 id=&#34;03-現在更應該看-token-based-credits&#34;&gt;03 現在更應該看 token-based credits
&lt;/h2&gt;&lt;p&gt;OpenAI 沒有公開一個使用者可以完全複算的 Codex 扣費公式。官方公開的是 rate card、影響因素和不同模型的 credit 單價。&lt;/p&gt;
&lt;p&gt;截至 2026-04-15，Codex rate card 的主口徑已經是 &lt;code&gt;token-based credits&lt;/code&gt;。也就是根據輸入 tokens、快取輸入 tokens、輸出 tokens 折算 credits。&lt;/p&gt;
&lt;p&gt;官方給出的示例價格如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;輸入 / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;快取輸入 / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;輸出 / 1M tokens&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;62.50 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6.250 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;375 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.4-Mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;18.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1.875 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;113 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.3-Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.375 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;350 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.2-Codex&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;43.75 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;4.375 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;350 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.1-Codex-Max&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;31.25 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3.125 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;250 credits&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.1-Codex-mini&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;6.25 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;0.625 credits&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;50 credits&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以一個粗略估算公式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;本次消耗
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;≈ 輸入 tokens / 1,000,000 × 模型輸入單價
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 快取輸入 tokens / 1,000,000 × 模型快取輸入單價
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 輸出 tokens / 1,000,000 × 模型輸出單價
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這不是精確帳單公式，但足夠解釋趨勢：輸出很貴，長上下文很貴，高能力模型更貴。官方還說明 &lt;code&gt;Fast mode&lt;/code&gt; 會消耗 2 倍 credits，&lt;code&gt;Code review&lt;/code&gt; 使用 GPT-5.3-Codex 的價格。&lt;/p&gt;
&lt;h2 id=&#34;04-不要再只看訊息條數&#34;&gt;04 不要再只看「訊息條數」
&lt;/h2&gt;&lt;p&gt;同樣發 10 次 Codex，消耗可能完全不同。&lt;/p&gt;
&lt;p&gt;輕量任務通常更省：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改一個小函式&lt;/li&gt;
&lt;li&gt;解釋一段短程式碼&lt;/li&gt;
&lt;li&gt;寫一小段文案&lt;/li&gt;
&lt;li&gt;在明確文件裡做局部修改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;重任務會更貴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;掃描大型程式碼庫&lt;/li&gt;
&lt;li&gt;長時間執行 agent&lt;/li&gt;
&lt;li&gt;多輪讀取、編輯、測試、修復&lt;/li&gt;
&lt;li&gt;產生大量程式碼或長報告&lt;/li&gt;
&lt;li&gt;使用 cloud task&lt;/li&gt;
&lt;li&gt;開啟 fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，&lt;code&gt;訊息數量&lt;/code&gt; 只能作為很粗略的感覺，不能用來判斷真實消耗。&lt;/p&gt;
&lt;h2 id=&#34;05-local-task-和-cloud-task-的差別&#34;&gt;05 local task 和 cloud task 的差別
&lt;/h2&gt;&lt;p&gt;Codex 裡很容易拉開消耗差距的是執行位置。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;local task&lt;/code&gt; 更像是在你的本地工作區裡讀文件、改程式碼、跑命令。&lt;code&gt;cloud task&lt;/code&gt; 則把任務交給雲端環境託管執行，適合更長、更自動化的流程。&lt;/p&gt;
&lt;p&gt;從額度角度看，cloud task 往往更貴。原因也很直接：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要雲端執行環境&lt;/li&gt;
&lt;li&gt;任務通常更長&lt;/li&gt;
&lt;li&gt;工具調用更多&lt;/li&gt;
&lt;li&gt;上下文更大&lt;/li&gt;
&lt;li&gt;自動化鏈路更完整&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是普通程式碼編輯、文章整理、局部修復，優先 local task 會更省。cloud task 更適合確實需要雲端託管的任務。&lt;/p&gt;
&lt;h2 id=&#34;06-為什麼-weekly-掉得特別快&#34;&gt;06 為什麼 weekly 掉得特別快
&lt;/h2&gt;&lt;p&gt;如果你覺得「5 小時額度沒怎麼動，但 weekly 掉很多」，常見原因有這些：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用了 cloud task。&lt;/li&gt;
&lt;li&gt;使用了更貴的模型。&lt;/li&gt;
&lt;li&gt;開啟了 fast mode。&lt;/li&gt;
&lt;li&gt;上下文很大，Codex 讀了很多文件或保留了很長對話。&lt;/li&gt;
&lt;li&gt;輸出很長，比如大量程式碼、長報告、長日誌分析。&lt;/li&gt;
&lt;li&gt;任務鏈很長，比如搜尋、編輯、測試、修復、再測試。&lt;/li&gt;
&lt;li&gt;自己的額度腳本把窗口標籤解析錯了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你是用腳本讀 &lt;code&gt;/backend-api/wham/usage&lt;/code&gt; 之類的字段，不要只看加工後的 &lt;code&gt;five_hour%&lt;/code&gt;、&lt;code&gt;weekly%&lt;/code&gt;。最好先看 raw JSON 裡的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;limit_window_seconds&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;percent_left&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reset_at&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;bucket / feature 名稱&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常見窗口長度可以這樣判斷：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;limit_window_seconds = 18000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 約 5 小時窗口
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;limit_window_seconds = 604800
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; 約 7 天窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果腳本把兩個窗口標反，就會誤判額度變化。&lt;/p&gt;
&lt;h2 id=&#34;07-更省額度的使用方式&#34;&gt;07 更省額度的使用方式
&lt;/h2&gt;&lt;p&gt;想讓 weekly 撐得久一點，可以這樣用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把大任務拆成小任務。先處理一個文件、一個 bug、一個功能點。&lt;/li&gt;
&lt;li&gt;能 local 就 local，謹慎使用 cloud task。&lt;/li&gt;
&lt;li&gt;明確告訴 Codex 相關路徑，減少無關掃描。&lt;/li&gt;
&lt;li&gt;避免一次塞入巨大日誌、長文件、無關上下文。&lt;/li&gt;
&lt;li&gt;輕量任務可以用更便宜的 mini 模型。&lt;/li&gt;
&lt;li&gt;長任務前先讓 Codex 出計畫，再進入執行。&lt;/li&gt;
&lt;li&gt;不需要長報告時，明確要求「簡短回答」。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最實用的記憶方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;是否能繼續用
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 短窗口還有額度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;amp;&amp;amp; 週窗口還有額度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;消耗快不快
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= 模型價格
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 輸出長度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 任務複雜度
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× 執行位置
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個模型不能精確對帳，但足夠解釋大多數 Codex 額度現象。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Codex with your ChatGPT plan - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/11481834&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChatGPT Rate Card - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/zh-hans-cn/articles/20001106-codex-rate-card&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Codex rate card - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.openai.com/en/articles/12642688-using-credits-for-flexible-usage-in-chatgpt-pluspro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Using Credits for Flexible Usage in ChatGPT - OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>RAGFlow 專案整理：開源 RAG 引擎的功能與使用方法</title>
        <link>https://knightli.com/zh-tw/2026/04/15/ragflow-rag-engine-guide/</link>
        <pubDate>Wed, 15 Apr 2026 22:09:25 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/15/ragflow-rag-engine-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;RAGFlow&lt;/code&gt; 是 &lt;code&gt;infiniflow&lt;/code&gt; 開源的 RAG（Retrieval-Augmented Generation，檢索增強生成）引擎。它的目標不是只做一個「上傳文件然後問答」的知識庫外殼，而是把文件解析、切分、檢索、重排、引用溯源、模型配置、Agent 能力和 API 整合放進一套完整工作流裡。&lt;/p&gt;
&lt;p&gt;如果你正在做企業知識庫、文件問答、客服助手、內部資料檢索，或者想給 LLM 加一層更可靠的上下文來源，RAGFlow 屬於值得重點看的開源方案。&lt;/p&gt;
&lt;h2 id=&#34;01-ragflow-解決什麼問題&#34;&gt;01 RAGFlow 解決什麼問題
&lt;/h2&gt;&lt;p&gt;普通 RAG 系統最容易遇到的問題有三個：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文件解析品質不穩定，尤其是 PDF、掃描件、表格、圖片、複雜排版文件。&lt;/li&gt;
&lt;li&gt;切分策略不透明，命中結果看起來像是「搜到了」，但上下文並不完整。&lt;/li&gt;
&lt;li&gt;回答缺少可靠引用，使用者很難判斷答案來自哪裡。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAGFlow 的重點正好放在這些地方。專案 README 裡強調了 &lt;code&gt;Deep document understanding&lt;/code&gt;、模板化切分、可視化 chunk、引用溯源和多路召回加重排。換句話說，它更關注「高品質資料進入，高品質答案輸出」，而不是只把向量資料庫和聊天框接起來。&lt;/p&gt;
&lt;h2 id=&#34;02-核心功能&#34;&gt;02 核心功能
&lt;/h2&gt;&lt;h3 id=&#34;1-深度文件理解&#34;&gt;1. 深度文件理解
&lt;/h3&gt;&lt;p&gt;RAGFlow 支援從複雜格式的非結構化資料中抽取知識。README 中列出的資料類型包括 Word、PPT、Excel、TXT、圖片、掃描件、結構化資料、網頁等。&lt;/p&gt;
&lt;p&gt;這對企業知識庫很關鍵。真實資料通常不是乾淨的 Markdown，而是合約、報告、表格、掃描 PDF、產品手冊、截圖和網頁混在一起。如果解析品質不夠，後面的向量檢索和 LLM 回答都會被拖垮。&lt;/p&gt;
&lt;h3 id=&#34;2-模板化切分&#34;&gt;2. 模板化切分
&lt;/h3&gt;&lt;p&gt;RAGFlow 提供模板化 chunking。它的價值在於：切分策略不是黑盒，可以根據文件類型選擇更合適的方式。&lt;/p&gt;
&lt;p&gt;例如普通文章、論文、表格、問答文件、圖片說明、合約條款，對 chunk 的粒度和邊界要求都不一樣。模板化切分可以減少「句子被切碎」「表格上下文丟失」「標題和正文分離」這類問題。&lt;/p&gt;
&lt;h3 id=&#34;3-可追溯引用&#34;&gt;3. 可追溯引用
&lt;/h3&gt;&lt;p&gt;RAGFlow 強調 grounded citations，也就是回答要能追溯到來源片段。它還提供 chunk 可視化，方便人工干預解析和切分結果。&lt;/p&gt;
&lt;p&gt;這點對生產環境尤其重要。企業內部問答不是只要「看起來像答案」，還要能查證來源。對於政策、合規、財務、技術文件、客戶支持資料來說，引用和溯源幾乎是剛需。&lt;/p&gt;
&lt;h3 id=&#34;4-自動化-rag-工作流&#34;&gt;4. 自動化 RAG 工作流
&lt;/h3&gt;&lt;p&gt;RAGFlow 把 RAG 流程做成相對完整的鏈路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;建立知識庫&lt;/li&gt;
&lt;li&gt;上傳或同步資料&lt;/li&gt;
&lt;li&gt;解析文件&lt;/li&gt;
&lt;li&gt;查看和干預 chunk&lt;/li&gt;
&lt;li&gt;配置 LLM 與 embedding 模型&lt;/li&gt;
&lt;li&gt;執行多路召回與重排&lt;/li&gt;
&lt;li&gt;建立聊天助手&lt;/li&gt;
&lt;li&gt;透過 API 整合到業務系統&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這讓它更像一個 RAG 平台，而不是單點工具庫。對團隊來說，UI、可視化和 API 都有價值：非研發人員可以維護知識庫，研發人員可以把能力接入既有系統。&lt;/p&gt;
&lt;h3 id=&#34;5-agentmcp-與工作流能力&#34;&gt;5. Agent、MCP 與工作流能力
&lt;/h3&gt;&lt;p&gt;RAGFlow 的近期更新裡已經包含 Agentic workflow、MCP、Agent Memory、程式碼執行元件等內容。這說明它不只想做傳統知識庫問答，也在向 Agent 場景延伸。&lt;/p&gt;
&lt;p&gt;典型方向是：Agent 在執行任務時，可以把 RAGFlow 作為可靠的企業知識上下文層；需要查資料時從知識庫召回，生成回答時保留引用，必要時再組合工具呼叫或工作流。&lt;/p&gt;
&lt;h2 id=&#34;03-基本使用流程&#34;&gt;03 基本使用流程
&lt;/h2&gt;&lt;p&gt;按照官方快速開始文件，RAGFlow 的常見使用路徑可以概括成下面幾步。&lt;/p&gt;
&lt;h3 id=&#34;1-準備執行環境&#34;&gt;1. 準備執行環境
&lt;/h3&gt;&lt;p&gt;官方 README 給出的基礎要求是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU &amp;gt;= 4 cores&lt;/li&gt;
&lt;li&gt;RAM &amp;gt;= 16 GB&lt;/li&gt;
&lt;li&gt;Disk &amp;gt;= 50 GB&lt;/li&gt;
&lt;li&gt;Docker &amp;gt;= 24.0.0&lt;/li&gt;
&lt;li&gt;Docker Compose &amp;gt;= v2.26.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要使用程式碼執行器的沙箱功能，還需要 &lt;code&gt;gVisor&lt;/code&gt;。另外要注意，官方 Docker 映像主要面向 x86 平台；如果是 ARM64，需要依照官方說明自行建置映像。&lt;/p&gt;
&lt;h3 id=&#34;2-拉取專案&#34;&gt;2. 拉取專案
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/infiniflow/ragflow.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ragflow/docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-檢查-vmmax_map_count&#34;&gt;3. 檢查 &lt;code&gt;vm.max_map_count&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;RAGFlow 部署會依賴 Elasticsearch / OpenSearch 這類元件，因此在 Linux 上通常需要確認：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysctl vm.max_map_count
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果數值低於 &lt;code&gt;262144&lt;/code&gt;，可以暫時設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo sysctl -w vm.max_map_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;262144&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果希望重開機後仍然生效，需要寫入 &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id=&#34;4-使用-docker-compose-啟動&#34;&gt;4. 使用 Docker Compose 啟動
&lt;/h3&gt;&lt;p&gt;CPU 模式可以直接啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果要用 GPU 加速 DeepDoc 任務，README 中給出的方式是在 &lt;code&gt;.env&lt;/code&gt; 中啟用 &lt;code&gt;DEVICE=gpu&lt;/code&gt; 後再啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;1i DEVICE=gpu&amp;#39;&lt;/span&gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose -f docker-compose.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;啟動後查看日誌：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f docker-ragflow-cpu-1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;看到服務啟動完成後，再透過瀏覽器訪問伺服器地址。預設配置下，通常可以直接訪問：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://IP_OF_YOUR_MACHINE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;5-配置模型-api-key&#34;&gt;5. 配置模型 API Key
&lt;/h3&gt;&lt;p&gt;RAGFlow 需要配置 LLM 和 embedding 模型。README 提到可以在 &lt;code&gt;service_conf.yaml.template&lt;/code&gt; 中選擇預設 LLM factory，並更新對應的 &lt;code&gt;API_KEY&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;實際使用時，你需要根據自己的模型供應商配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;聊天模型&lt;/li&gt;
&lt;li&gt;embedding 模型&lt;/li&gt;
&lt;li&gt;rerank 模型&lt;/li&gt;
&lt;li&gt;多模態模型（如果要理解 PDF / DOCX 中的圖片）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-建立知識庫並上傳文件&#34;&gt;6. 建立知識庫並上傳文件
&lt;/h3&gt;&lt;p&gt;服務啟動後，典型操作是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登入 Web UI。&lt;/li&gt;
&lt;li&gt;建立 dataset / knowledge base。&lt;/li&gt;
&lt;li&gt;上傳文件或配置資料源同步。&lt;/li&gt;
&lt;li&gt;等待解析完成。&lt;/li&gt;
&lt;li&gt;查看 chunk 結果，必要時人工調整。&lt;/li&gt;
&lt;li&gt;建立聊天助手，選擇知識庫。&lt;/li&gt;
&lt;li&gt;測試問答效果和引用來源。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果要接入業務系統，可以繼續使用 RAGFlow 的 API 或 SDK，把知識庫檢索和聊天能力接到自己的應用裡。&lt;/p&gt;
&lt;h2 id=&#34;04-適合哪些場景&#34;&gt;04 適合哪些場景
&lt;/h2&gt;&lt;p&gt;RAGFlow 適合這些需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企業內部知識庫問答&lt;/li&gt;
&lt;li&gt;產品手冊、技術文件、FAQ 檢索&lt;/li&gt;
&lt;li&gt;客服助手和售前支持助手&lt;/li&gt;
&lt;li&gt;合約、報告、制度文件的可追溯問答&lt;/li&gt;
&lt;li&gt;多格式資料統一整理&lt;/li&gt;
&lt;li&gt;需要 UI 維護知識庫，同時又要 API 整合的團隊&lt;/li&gt;
&lt;li&gt;想把 RAG 能力作為 Agent 上下文層的系統&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它尤其適合文件格式複雜、需要引用溯源、希望人工干預解析結果的場景。&lt;/p&gt;
&lt;h2 id=&#34;05-使用時要注意什麼&#34;&gt;05 使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;第一，RAGFlow 不是輕量腳本。它對機器資源有要求，官方建議至少 4 核 CPU、16GB 記憶體和 50GB 磁碟。如果只是給少量 Markdown 做問答，可能沒必要上這麼完整的平台。&lt;/p&gt;
&lt;p&gt;第二，文件品質仍然重要。RAGFlow 能改善解析和切分，但不能讓低品質、過期、互相矛盾的資料自動變得可靠。真正上線前，知識庫治理仍然要做。&lt;/p&gt;
&lt;p&gt;第三，模型配置會直接影響效果。embedding、rerank、聊天模型、多模態模型的選擇，都會影響召回和回答品質。RAGFlow 提供了工作流，但效果仍然要靠資料、模型和參數一起調。&lt;/p&gt;
&lt;p&gt;第四，生產環境要關注權限和資料安全。企業知識庫裡往往有內部資料，部署方式、訪問控制、日誌、API Key、模型供應商資料策略都要提前設計。&lt;/p&gt;
&lt;h2 id=&#34;06-簡短判斷&#34;&gt;06 簡短判斷
&lt;/h2&gt;&lt;p&gt;RAGFlow 的優勢在於把 RAG 裡最麻煩的部分做成了平台化能力：複雜文件解析、可解釋切分、引用溯源、多路召回、重排、模型配置、Web UI、API 和 Agent 擴展。&lt;/p&gt;
&lt;p&gt;如果你要做的是可驗證、可維護、可接入業務系統的企業知識庫，RAGFlow 比「向量庫 + 簡單聊天 UI」的方案更完整。反過來，如果只是個人小規模資料問答，或者資料格式非常簡單，輕量 RAG 框架可能更省資源。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/infiniflow/ragflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;官方文件：&lt;a class=&#34;link&#34; href=&#34;https://ragflow.io/docs/dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://ragflow.io/docs/dev/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;線上 Demo：&lt;a class=&#34;link&#34; href=&#34;https://cloud.ragflow.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cloud.ragflow.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Firecrawl 專案整理：給 AI Agent 用的網頁搜尋、抓取與互動 API</title>
        <link>https://knightli.com/zh-tw/2026/04/15/firecrawl-ai-web-data-api/</link>
        <pubDate>Wed, 15 Apr 2026 13:45:03 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/15/firecrawl-ai-web-data-api/</guid>
        <description>&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; 的定位很明確：把網頁變成 AI Agent 更容易消費的資料。它不是單純的爬蟲腳本，而是把搜尋、單頁抓取、整站遍歷、頁面互動、結構化擷取和 Agent 工作流封裝成 API，讓模型或自動化系統少處理網頁裡的雜訊。&lt;/p&gt;
&lt;h2 id=&#34;01-它解決什麼問題&#34;&gt;01 它解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多 AI 應用需要讀網頁，但真實網頁並不友善：頁面有 JavaScript 渲染、彈窗、分頁、登入狀態、反爬限制、PDF 或 DOCX 等非 HTML 內容，還有大量和正文無關的導覽、廣告、腳本和樣式。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; 想解決的是中間層問題：應用只提出「我要這個頁面/這個站點/這個主題的資料」，它負責把網頁打開、抓取、清洗，再輸出成更適合 LLM 使用的 Markdown、HTML、截圖或 JSON。&lt;/p&gt;
&lt;p&gt;這類工具的價值不在於「能不能請求一個 URL」，而在於能不能穩定地把複雜網頁處理成可用資料。對於 RAG、AI 搜尋、競品研究、自動化資料收集、網頁內容監控來說，這一層很容易成為工程裡的髒活。&lt;/p&gt;
&lt;h2 id=&#34;02-核心功能&#34;&gt;02 核心功能
&lt;/h2&gt;&lt;p&gt;Firecrawl README 裡把能力分成幾類：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Search&lt;/code&gt;：搜尋網頁，並返回結果頁的完整內容。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Scrape&lt;/code&gt;：把單個 URL 轉換成 Markdown、HTML、截圖或結構化 JSON。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Interact&lt;/code&gt;：先抓取頁面，再透過提示詞或程式碼執行點擊、捲動、輸入、等待等操作。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;：直接描述你要找什麼，由 Agent 自動搜尋、導航並返回結果。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Crawl&lt;/code&gt;：抓取一個網站下的多頁內容。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Map&lt;/code&gt;：快速發現一個網站中的 URL。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Batch Scrape&lt;/code&gt;：非同步批次抓取大量 URL。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只看名字，它像是「爬蟲服務」。但從功能組合看，它更接近 AI 應用的資料入口：搜尋負責發現，抓取負責清洗，互動負責處理動態頁面，Agent 負責把「找資料」這件事進一步自動化。&lt;/p&gt;
&lt;h2 id=&#34;03-為什麼適合-ai-agent&#34;&gt;03 為什麼適合 AI Agent
&lt;/h2&gt;&lt;p&gt;傳統爬蟲通常假設你已經知道 URL，也知道頁面結構。但 Agent 場景經常不是這樣：使用者只會問一個任務，比如「找出某家公司最新價格頁裡的套餐差異」，系統需要自己搜尋、打開頁面、比較內容，再把來源帶回來。&lt;/p&gt;
&lt;p&gt;Firecrawl 的 &lt;code&gt;Agent&lt;/code&gt; 介面正是為這類任務設計的。它可以只接收自然語言提示，也可以限制在指定 URL 範圍內工作；如果需要結構化結果，還可以配合 schema 輸出固定欄位。&lt;/p&gt;
&lt;p&gt;這對應用層有兩個好處：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不必為每個網站單獨寫解析器。&lt;/li&gt;
&lt;li&gt;返回結果更容易進入 LLM、資料庫或後續自動化流程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;當然，這並不意味著它能替代所有客製爬蟲。對於強約束、高頻、大規模、欄位非常穩定的抓取任務，專門寫解析邏輯仍然可能更便宜、更可控。Firecrawl 更適合網頁來源多、頁面結構變化大、需要快速接入 AI 工作流的場景。&lt;/p&gt;
&lt;h2 id=&#34;04-mcpcli-與整合&#34;&gt;04 MCP、CLI 與整合
&lt;/h2&gt;&lt;p&gt;Firecrawl 也明顯在向 Agent 工具鏈靠攏。README 中提供了 MCP Server 的接入方式，也提供了面向 AI coding agent 的 Skill/CLI 初始化命令。&lt;/p&gt;
&lt;p&gt;這說明它不只是給後端服務呼叫，也希望直接進入 Claude Code、OpenCode、Antigravity、MCP 客戶端等工作流。對於經常讓 Agent 查資料、抓網頁、整理內容的人來說，這種整合方式比手寫 API 呼叫更輕。&lt;/p&gt;
&lt;p&gt;它還列出了 Zapier、n8n、Lovable 等平台整合。這個方向很實用：網頁資料不一定只進程式碼，也可能進入自動化表格、低程式碼流程、內容生產系統或內部知識庫。&lt;/p&gt;
&lt;h2 id=&#34;05-開源自託管與授權邊界&#34;&gt;05 開源、自託管與授權邊界
&lt;/h2&gt;&lt;p&gt;Firecrawl 是開源專案，主倉庫以 &lt;code&gt;AGPL-3.0&lt;/code&gt; 為主；README 也說明 SDK 和部分 UI 元件使用 &lt;code&gt;MIT&lt;/code&gt; 授權，具體要看對應目錄裡的 LICENSE 檔案。&lt;/p&gt;
&lt;p&gt;這點需要注意：如果只是使用它的雲端服務，主要關心 API 成本、穩定性和合規邊界；如果準備自託管並對外提供服務，&lt;code&gt;AGPL-3.0&lt;/code&gt; 的義務就需要認真評估。&lt;/p&gt;
&lt;p&gt;README 還提醒使用者要尊重網站政策、隱私政策和使用條款，並說明預設會遵守 &lt;code&gt;robots.txt&lt;/code&gt;。這類工具越強，越需要把合規和抓取邊界寫進系統設計裡，而不是等上線後再補。&lt;/p&gt;
&lt;h2 id=&#34;06-適合哪些場景&#34;&gt;06 適合哪些場景
&lt;/h2&gt;&lt;p&gt;我會把 Firecrawl 放在這些場景裡優先考慮：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;給 RAG 系統抓取網頁資料，並希望直接得到乾淨 Markdown。&lt;/li&gt;
&lt;li&gt;做 AI 搜尋或研究助手，需要搜尋後讀取完整頁面。&lt;/li&gt;
&lt;li&gt;抓取 JavaScript 較重的網站，不想自己維護瀏覽器叢集。&lt;/li&gt;
&lt;li&gt;做競品、價格、文件、新聞、招聘頁等公開資訊監控。&lt;/li&gt;
&lt;li&gt;給 MCP 客戶端或 AI coding agent 增加即時網頁讀取能力。&lt;/li&gt;
&lt;li&gt;需要快速驗證一個網頁資料產品，而不是先搭一套爬蟲基礎設施。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合的情況也很清楚：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;目標網站欄位極少、結構穩定，用簡單腳本就能完成。&lt;/li&gt;
&lt;li&gt;抓取量巨大，成本比開發維護成本更敏感。&lt;/li&gt;
&lt;li&gt;業務對資料來源、重試策略、反爬行為和稽核要求非常細。&lt;/li&gt;
&lt;li&gt;授權或合規要求不允許引入 AGPL 元件或外部雲端服務。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;07-簡短判斷&#34;&gt;07 簡短判斷
&lt;/h2&gt;&lt;p&gt;Firecrawl 的核心價值，是把「網頁到 AI 可用資料」這段麻煩流程產品化。它把搜尋、抓取、清洗、互動、批次處理和 Agent 式資料收集放在同一套介面裡，對 AI 應用開發者很省心。&lt;/p&gt;
&lt;p&gt;如果你的專案經常需要讓模型讀取真實網頁，尤其是頁面來源分散、結構不穩定、還要接入 MCP 或 Agent 工作流，Firecrawl 值得放進工具箱。反過來，如果任務只是固定網站的低成本批次採集，傳統爬蟲或專用解析器仍然更合適。&lt;/p&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/firecrawl/firecrawl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 視訊錄製：錄屏、章節標記、Overlay 與除錯取捨</title>
        <link>https://knightli.com/zh-tw/2026/04/15/playwright-cli-video-recording/</link>
        <pubDate>Wed, 15 Apr 2026 08:22:45 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/15/playwright-cli-video-recording/</guid>
        <description>&lt;p&gt;如果你想把瀏覽器自動化過程錄成影片，用來做除錯、文件示範，或作為執行結果留存，&lt;code&gt;Playwright CLI&lt;/code&gt; 已經提供了相當直接的做法。它輸出的是 WebM 影片，編碼為 VP8/VP9。&lt;/p&gt;
&lt;p&gt;這篇按照官方 &lt;code&gt;video-recording&lt;/code&gt; 參考文件整理，重點包括基礎錄製流程、章節標記、完整 hero script 錄製、Overlay API，以及 video 與 tracing 的差異。文中的命令列、程式碼片段與參數說明均按參考內容保留。&lt;/p&gt;
&lt;h2 id=&#34;01-基礎錄製流程&#34;&gt;01 基礎錄製流程
&lt;/h2&gt;&lt;p&gt;最基本的流程就是：先打開瀏覽器，再開始錄製，執行操作，最後停止並保存。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open browser first&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start recording&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start demo.webm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add a chapter marker for section transitions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-chapter &lt;span class=&#34;s2&#34;&gt;&amp;#34;Getting Started&amp;#34;&lt;/span&gt; --description&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Opening the homepage&amp;#34;&lt;/span&gt; --duration&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Navigate and perform actions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli goto https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli click e1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Add another chapter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-chapter &lt;span class=&#34;s2&#34;&gt;&amp;#34;Filling Form&amp;#34;&lt;/span&gt; --description&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Entering test data&amp;#34;&lt;/span&gt; --duration&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli fill e2 &lt;span class=&#34;s2&#34;&gt;&amp;#34;test input&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop and save&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這組命令已經涵蓋了最常見的錄製流程。&lt;code&gt;video-chapter&lt;/code&gt; 很適合在不同階段之間插入章節卡片，讓錄出來的影片更容易理解。&lt;/p&gt;
&lt;h2 id=&#34;02-最佳實務&#34;&gt;02 最佳實務
&lt;/h2&gt;&lt;h3 id=&#34;1-使用描述性檔名&#34;&gt;1. 使用描述性檔名
&lt;/h3&gt;&lt;p&gt;如果影片是要給別人看，或之後還要回頭查找，檔名最好直接帶上場景和上下文。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Include context in filename&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start recordings/login-flow-2024-01-15.webm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli video-start recordings/checkout-test-run-42.webm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-錄製完整-hero-script&#34;&gt;2. 錄製完整 hero script
&lt;/h3&gt;&lt;p&gt;官方建議：如果影片是要交付給使用者，或作為 proof of work，最好把場景整理成一段程式碼，再用 &lt;code&gt;run-code&lt;/code&gt; 執行。這樣比較容易控制動作節奏、停頓時機，以及影片中的標註效果。參考文件也提到，Playwright 新增了一些特別適合這類錄製流程的 API。&lt;/p&gt;
&lt;p&gt;建議流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 CLI 走一遍場景，並記下所有 locator 和 action。之後如果要做高亮，會需要用這些 locator 取得對應的 bounding box。&lt;/li&gt;
&lt;li&gt;為影片另外建立一個腳本檔案，並依照下面的方式撰寫。輸入內容時用 &lt;code&gt;pressSequentially&lt;/code&gt; 搭配 &lt;code&gt;delay&lt;/code&gt;，停頓時間也盡量安排得自然。&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;playwright-cli run-code --filename your-script.js&lt;/code&gt; 執行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Important: Overlays are &lt;code&gt;pointer-events: none&lt;/code&gt; — they do not interfere with page interactions. You can safely keep sticky overlays visible while clicking, filling, or performing any actions on the page.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;video.webm&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1280&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;800&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kr&#34;&gt;goto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;https://demo.playwright.dev/todomvc&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Show a chapter card — blurs the page and shows a dialog.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Blocks until duration expires, then auto-removes.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Use this for simple use cases, but always feel free to hand-craft your own beautiful
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// overlay via await page.screencast.showOverlay().
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showChapter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Adding Todo Items&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;We will add several items to the todo list.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Perform action
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pressSequentially&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Walk the dog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;press&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Enter&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForTimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Show next chapter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showChapter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Verifying Results&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Checking the item appeared in the list.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Add a sticky annotation that stays while you perform actions.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Overlays are pointer-events: none, so they won&amp;#39;t block clicks.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;annotation&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showOverlay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute; top: 8px; right: 8px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      padding: 6px 12px; background: rgba(0,0,0,0.7);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border-radius: 8px; font-size: 13px; color: white;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      ✓ Item added successfully
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;  `&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Perform more actions while the annotation is visible
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;pressSequentially&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Buy groceries&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;delay&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByRole&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;textbox&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;What needs to be done?&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;press&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Enter&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;waitForTimeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1500&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// Remove the annotation when done
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;annotation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dispose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// You can also highlight relevant locators and provide contextual annotations.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;getByText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Walk the dog&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;boundingBox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showOverlay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      top: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      left: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      width: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      height: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border: 1px solid red;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;div style=&amp;#34;position: absolute;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      top: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      left: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;bounds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      transform: translateX(-50%);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      padding: 6px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      background: #808080;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      border-radius: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      font-size: 14px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;      color: white;&amp;#34;&amp;gt;Check it out, it is right above this text
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;    &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;sb&#34;&gt;  `&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;duration&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;screencast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這段程式碼的價值不只是「錄下來」，而是把影片做得更清楚：章節卡片負責分段，&lt;code&gt;pressSequentially&lt;/code&gt; 讓輸入更自然，&lt;code&gt;showOverlay&lt;/code&gt; 則能提供提示、高亮與說明。&lt;/p&gt;
&lt;p&gt;文件最後也補了一句：Embrace creativity, overlays are powerful.&lt;/p&gt;
&lt;h2 id=&#34;03-overlay-api-速覽&#34;&gt;03 Overlay API 速覽
&lt;/h2&gt;&lt;p&gt;錄製影片時，Overlay API 很適合拿來做章節切換、局部提示與持續註解。官方給出的摘要如下：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Method&lt;/th&gt;
          &lt;th&gt;Use Case&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.showChapter(title, { description?, duration?, styleSheet? })&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Full-screen chapter card with blurred backdrop — ideal for section transitions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.showOverlay(html, { duration? })&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Custom HTML overlay — use for callouts, labels, highlights&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;disposable.dispose()&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Remove a sticky overlay added without duration&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;page.screencast.hideOverlays()&lt;/code&gt; / &lt;code&gt;page.screencast.showOverlays()&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;Temporarily hide/show all overlays&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的目標是把自動化過程做成「可觀看的影片」，這組 API 基本就是最值得優先掌握的部分。&lt;/p&gt;
&lt;h2 id=&#34;04-tracing-和-video-的差異&#34;&gt;04 Tracing 和 Video 的差異
&lt;/h2&gt;&lt;p&gt;官方文件把兩者的定位區分得很清楚：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Feature&lt;/th&gt;
          &lt;th&gt;Video&lt;/th&gt;
          &lt;th&gt;Tracing&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Output&lt;/td&gt;
          &lt;td&gt;WebM file&lt;/td&gt;
          &lt;td&gt;Trace file (viewable in Trace Viewer)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Shows&lt;/td&gt;
          &lt;td&gt;Visual recording&lt;/td&gt;
          &lt;td&gt;DOM snapshots, network, console, actions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Use case&lt;/td&gt;
          &lt;td&gt;Demos, documentation&lt;/td&gt;
          &lt;td&gt;Debugging, analysis&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Size&lt;/td&gt;
          &lt;td&gt;Larger&lt;/td&gt;
          &lt;td&gt;Smaller&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以簡單這樣理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; 更適合示範、交付與回看「使用者看到的過程」&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tracing&lt;/code&gt; 更適合排查問題、檢查動作細節，以及分析執行上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;兩者不是互相取代，而是各自對應不同目標。&lt;/p&gt;
&lt;h2 id=&#34;05-使用限制&#34;&gt;05 使用限制
&lt;/h2&gt;&lt;p&gt;文件裡也提醒了兩個很實際的限制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recording adds slight overhead to automation&lt;/li&gt;
&lt;li&gt;Large recordings can consume significant disk space&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，錄製功能雖然很好用，但會替自動化流程增加一些額外開銷；如果影片很長，磁碟占用也會明顯上升。&lt;/p&gt;
&lt;h2 id=&#34;06-快速總結&#34;&gt;06 快速總結
&lt;/h2&gt;&lt;p&gt;如果只抓重點，可以記住下面幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;video-start&lt;/code&gt; / &lt;code&gt;video-stop&lt;/code&gt; 對應最基本的影片錄製流程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video-chapter&lt;/code&gt; 可以替影片加上章節過渡，讓示範更清楚&lt;/li&gt;
&lt;li&gt;更進階的錄製場景，適合寫成腳本後用 &lt;code&gt;run-code&lt;/code&gt; 執行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;showOverlay&lt;/code&gt; 和 &lt;code&gt;showChapter&lt;/code&gt; 可以明顯提升影片可讀性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; 適合示範，&lt;code&gt;tracing&lt;/code&gt; 適合除錯，最好依目標選擇&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你已經在用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做自動化示範、驗收留存或 proof of work，那麼 &lt;code&gt;video recording&lt;/code&gt; 會是一塊很值得補上的能力。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI video-recording 參考文件：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/video-recording.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 專案首頁：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 會話管理：多瀏覽器會話、隔離、持久化與清理</title>
        <link>https://knightli.com/zh-tw/2026/04/15/playwright-cli-session-management/</link>
        <pubDate>Wed, 15 Apr 2026 08:15:12 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/15/playwright-cli-session-management/</guid>
        <description>&lt;p&gt;如果你在用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做自動化，很快就會碰到一個實際問題：同一時間裡，能不能開多個互不干擾的瀏覽器會話？答案是可以，而且 &lt;code&gt;Playwright CLI&lt;/code&gt; 已經把這套機制做得很直接。&lt;/p&gt;
&lt;p&gt;這篇就按照官方 &lt;code&gt;session-management&lt;/code&gt; 參考文件，整理它最實用的幾個部分：命名會話、會話隔離、持久化 profile、並發模式，以及常見清理命令。文中的命令列與命令區塊說明均按參考內容保留。&lt;/p&gt;
&lt;h2 id=&#34;01-命名瀏覽器會話&#34;&gt;01 命名瀏覽器會話
&lt;/h2&gt;&lt;p&gt;官方建議用 &lt;code&gt;-s&lt;/code&gt; 參數隔離不同瀏覽器上下文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Browser 1: Authentication flow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth open https://app.example.com/login
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Browser 2: Public browsing (separate cookies, storage)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;public open https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Commands are isolated by browser session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth fill e1 &lt;span class=&#34;s2&#34;&gt;&amp;#34;user@example.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;public snapshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡的重點是：不同 &lt;code&gt;session&lt;/code&gt; 名稱對應不同瀏覽器上下文。你可以把 &lt;code&gt;auth&lt;/code&gt; 用在登入流程，把 &lt;code&gt;public&lt;/code&gt; 用在匿名存取，它們之間不會共用 cookies 或本地狀態。&lt;/p&gt;
&lt;h2 id=&#34;02-瀏覽器會話隔離了什麼&#34;&gt;02 瀏覽器會話隔離了什麼
&lt;/h2&gt;&lt;p&gt;每個瀏覽器會話都會獨立維護下面這些內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cookies&lt;/li&gt;
&lt;li&gt;LocalStorage / SessionStorage&lt;/li&gt;
&lt;li&gt;IndexedDB&lt;/li&gt;
&lt;li&gt;Cache&lt;/li&gt;
&lt;li&gt;Browsing history&lt;/li&gt;
&lt;li&gt;Open tabs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這意味著如果你在 &lt;code&gt;auth&lt;/code&gt; 會話裡登入了某個網站，並不會自動影響 &lt;code&gt;public&lt;/code&gt; 會話。做多帳號測試、登入態驗證、匿名對比時，這一點尤其重要。&lt;/p&gt;
&lt;h2 id=&#34;03-瀏覽器會話相關命令&#34;&gt;03 瀏覽器會話相關命令
&lt;/h2&gt;&lt;p&gt;官方文件把會話管理裡最常用的一組命令放在了一起：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# List all browser sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop a browser session (close the browser)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close                 &lt;span class=&#34;c1&#34;&gt;# stop the default browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysession close   &lt;span class=&#34;c1&#34;&gt;# stop a named browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop all browser sessions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Forcefully kill all daemon processes (for stale/zombie processes)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Delete browser session user data (profile directory)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli delete-data              &lt;span class=&#34;c1&#34;&gt;# delete default browser data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mysession delete-data &lt;span class=&#34;c1&#34;&gt;# delete named browser data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可以把它們理解成三類操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt;：看目前有哪些會話&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close&lt;/code&gt; / &lt;code&gt;close-all&lt;/code&gt; / &lt;code&gt;kill-all&lt;/code&gt;：結束會話或清理卡住的瀏覽器程序&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete-data&lt;/code&gt;：刪除某個會話對應的使用者資料目錄&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是結束瀏覽器，通常先用 &lt;code&gt;close&lt;/code&gt;；如果已經出現殘留程序或殭屍程序，再用 &lt;code&gt;kill-all&lt;/code&gt; 會更合適。&lt;/p&gt;
&lt;h2 id=&#34;04-用環境變數設定預設會話&#34;&gt;04 用環境變數設定預設會話
&lt;/h2&gt;&lt;p&gt;如果你不想每條命令都重複寫 &lt;code&gt;-s=mysession&lt;/code&gt;，官方還提供了環境變數方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PLAYWRIGHT_CLI_SESSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mysession&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open example.com  &lt;span class=&#34;c1&#34;&gt;# Uses &amp;#34;mysession&amp;#34; automatically&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這樣之後不顯式指定 &lt;code&gt;-s&lt;/code&gt; 時，命令就會預設使用 &lt;code&gt;mysession&lt;/code&gt; 這個瀏覽器會話。&lt;/p&gt;
&lt;h2 id=&#34;05-常見模式並發抓取&#34;&gt;05 常見模式：並發抓取
&lt;/h2&gt;&lt;p&gt;參考文件給了一個很典型的並發抓取例子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Scrape multiple sites concurrently&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Start all browsers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site1 open https://site1.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site2 open https://site2.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site3 open https://site3.com &lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;wait&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Take snapshots from each&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site1 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site2 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;site3 snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Cleanup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個模式適合同時打開多個站點，各自抓取頁面狀態，再統一清理。因為每個站點都跑在獨立會話裡，所以不會互相污染本地狀態。&lt;/p&gt;
&lt;h2 id=&#34;06-常見模式ab-測試會話&#34;&gt;06 常見模式：A/B 測試會話
&lt;/h2&gt;&lt;p&gt;另一個常見場景，是同時對比不同實驗版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Test different user experiences&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-a open &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://app.com?variant=a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-b open &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://app.com?variant=b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Compare&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-a screenshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;variant-b screenshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這種寫法很適合做 A/B 頁面差異對比，因為兩個版本在獨立會話裡運行，截圖和狀態檢查也更容易分開管理。&lt;/p&gt;
&lt;h2 id=&#34;07-持久化瀏覽器-profile&#34;&gt;07 持久化瀏覽器 profile
&lt;/h2&gt;&lt;p&gt;官方文件特別說明：預設情況下，瀏覽器 profile 只保存在記憶體裡。&lt;/p&gt;
&lt;p&gt;如果你希望把瀏覽器 profile 持久化到磁碟，需要在 &lt;code&gt;open&lt;/code&gt; 時加上 &lt;code&gt;--persistent&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use persistent profile (auto-generated location)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use persistent profile with custom directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --profile&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/path/to/profile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個能力適合需要長期複用登入態、本地快取或擴充除錯環境的場景。尤其在反覆除錯同一站點時，持久化 profile 往往會比每次從零開始更高效。&lt;/p&gt;
&lt;h2 id=&#34;08-預設瀏覽器會話&#34;&gt;08 預設瀏覽器會話
&lt;/h2&gt;&lt;p&gt;如果沒有顯式傳入 &lt;code&gt;-s&lt;/code&gt;，那麼命令會使用預設瀏覽器會話：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# These use the same default browser session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close  &lt;span class=&#34;c1&#34;&gt;# Stops default browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也就是說，不帶 &lt;code&gt;-s&lt;/code&gt; 的幾條命令預設是在同一個預設會話裡連續執行的。&lt;/p&gt;
&lt;h2 id=&#34;09-打開時附帶會話配置&#34;&gt;09 打開時附帶會話配置
&lt;/h2&gt;&lt;p&gt;除了會話名，官方也給出了幾種常見的啟動配置方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with config file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --config&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;.playwright/my-cli.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with specific browser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --browser&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;firefox
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open in headed mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --headed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Open with persistent profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這些參數可以和會話管理一起搭配使用。比如你可以讓某個命名會話固定跑在 &lt;code&gt;firefox&lt;/code&gt;，或者讓某個會話始終以 &lt;code&gt;headed&lt;/code&gt; 模式啟動，方便人工觀察。&lt;/p&gt;
&lt;h2 id=&#34;10-官方給出的最佳實務&#34;&gt;10 官方給出的最佳實務
&lt;/h2&gt;&lt;p&gt;參考文件列了三條很實用的最佳實務。&lt;/p&gt;
&lt;h3 id=&#34;1-用有語義的會話名&#34;&gt;1. 用有語義的會話名
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# GOOD: Clear purpose&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;github-auth open https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;docs-scrape open https://docs.example.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# AVOID: Generic names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;s1 open https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;會話名最好能直接表達用途。像 &lt;code&gt;github-auth&lt;/code&gt;、&lt;code&gt;docs-scrape&lt;/code&gt; 這種名字，後面維護腳本時會清楚很多。&lt;/p&gt;
&lt;h3 id=&#34;2-用完及時清理&#34;&gt;2. 用完及時清理
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Stop browsers when done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;auth close
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;scrape close
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Or stop all at once&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# If browsers become unresponsive or zombie processes remain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果任務結束後不關瀏覽器，會話和背景程序會一直留著。短期看問題不大，但任務一多，很容易把環境弄亂。&lt;/p&gt;
&lt;h3 id=&#34;3-刪除陳舊瀏覽器資料&#34;&gt;3. 刪除陳舊瀏覽器資料
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Remove old browser data to free disk space&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;oldsession delete-data
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;當某些舊會話已經不用時，刪除對應資料目錄可以節省磁碟空間，也能避免後面誤用過期狀態。&lt;/p&gt;
&lt;h2 id=&#34;11-快速總結&#34;&gt;11 快速總結
&lt;/h2&gt;&lt;p&gt;如果只抓重點，可以記住下面這幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-s=&amp;lt;name&amp;gt;&lt;/code&gt; 用來建立並使用獨立瀏覽器會話&lt;/li&gt;
&lt;li&gt;不同會話之間會隔離 cookies、各種儲存、快取、歷史紀錄和分頁&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; 適合統一關閉，&lt;code&gt;kill-all&lt;/code&gt; 適合處理異常殘留程序&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--persistent&lt;/code&gt; 用來把 profile 落盤，適合長期複用狀態&lt;/li&gt;
&lt;li&gt;會話名盡量語義化，舊資料定期清理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的工作流裡已經有登入態複用、多帳號並行、A/B 對比或批次抓取需求，那麼 &lt;code&gt;session management&lt;/code&gt; 基本就是 &lt;code&gt;Playwright CLI&lt;/code&gt; 裡最值得先掌握的一塊能力。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI session-management 參考文件：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/session-management.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 專案首頁：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI storage state 用法：保存登入狀態、讀取 Cookies 與本地儲存</title>
        <link>https://knightli.com/zh-tw/2026/04/14/playwright-cli-storage-state-commands/</link>
        <pubDate>Tue, 14 Apr 2026 22:19:55 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/14/playwright-cli-storage-state-commands/</guid>
        <description>&lt;p&gt;如果你用 &lt;code&gt;Playwright CLI&lt;/code&gt; 做瀏覽器自動化，&lt;code&gt;storage state&lt;/code&gt; 幾乎就是最常用的能力之一。它的作用很直接：把目前瀏覽器裡的登入狀態和本地狀態保存下來，後面繼續重用，避免每次都重新登入。&lt;/p&gt;
&lt;h2 id=&#34;01-保存目前的-storage-state&#34;&gt;01 保存目前的 storage state
&lt;/h2&gt;&lt;p&gt;最常見的情境，就是先登入一次，再把目前狀態匯出到檔案。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令會把目前瀏覽器 context 中的狀態保存到 &lt;code&gt;auth.json&lt;/code&gt;。之後如果想重用登入狀態，通常就是從這一步開始。&lt;/p&gt;
&lt;h2 id=&#34;02-載入既有的-storage-state&#34;&gt;02 載入既有的 storage state
&lt;/h2&gt;&lt;p&gt;已有狀態檔後，可以在啟動時直接載入。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它會用 &lt;code&gt;auth.json&lt;/code&gt; 裡的狀態啟動瀏覽器 context。最常見的用途，就是跳過重複登入，直接進入已登入環境。&lt;/p&gt;
&lt;h2 id=&#34;03-查看目前-cookies&#34;&gt;03 查看目前 cookies
&lt;/h2&gt;&lt;p&gt;如果你只是想確認目前 session 裡到底有哪些 cookies，可以直接查看。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令會列出目前 context 中的 cookies，適合用來排查登入狀態是否存在、cookie 是否寫入成功。&lt;/p&gt;
&lt;h2 id=&#34;04-設定-cookies&#34;&gt;04 設定 cookies
&lt;/h2&gt;&lt;p&gt;如果你已經有 cookie 資料，也可以直接寫入。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;[{&amp;#34;name&amp;#34;:&amp;#34;session&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;abc&amp;#34;,&amp;#34;domain&amp;#34;:&amp;#34;example.com&amp;#34;,&amp;#34;path&amp;#34;:&amp;#34;/&amp;#34;}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個用法適合調試驗證流程、重現特定 session，或在腳本執行前手動注入 cookie 條件。&lt;/p&gt;
&lt;h2 id=&#34;05-讀取-localstorage&#34;&gt;05 讀取 localStorage
&lt;/h2&gt;&lt;p&gt;有些網站的登入狀態或前端狀態不只存在 cookies 裡，也會放在 &lt;code&gt;localStorage&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令用來查看目前頁面的 &lt;code&gt;localStorage&lt;/code&gt; 內容。排查「明明像是登入了，但頁面行為還是不對」時，這一步很有用。&lt;/p&gt;
&lt;h2 id=&#34;06-寫入-localstorage&#34;&gt;06 寫入 localStorage
&lt;/h2&gt;&lt;p&gt;如果需要模擬某些前端狀態，也可以直接設定。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; token abc123
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它會把指定鍵值寫入 &lt;code&gt;localStorage&lt;/code&gt;。常見用途是注入 token、偏好設定或某些前端開關。&lt;/p&gt;
&lt;h2 id=&#34;07-讀取-sessionstorage&#34;&gt;07 讀取 sessionStorage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sessionStorage&lt;/code&gt; 適合查看目前 session 裡的暫時狀態。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令會輸出目前頁面的 &lt;code&gt;sessionStorage&lt;/code&gt;。如果某個頁面流程依賴一次性的 session 資料，可以從這裡檢查。&lt;/p&gt;
&lt;h2 id=&#34;08-寫入-sessionstorage&#34;&gt;08 寫入 sessionStorage
&lt;/h2&gt;&lt;p&gt;需要時，也可以手動設定 &lt;code&gt;sessionStorage&lt;/code&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; key value
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它適合重現依賴暫時狀態的頁面行為，或補齊初始化步驟所需的欄位。&lt;/p&gt;
&lt;h2 id=&#34;09-查看-indexeddb&#34;&gt;09 查看 IndexedDB
&lt;/h2&gt;&lt;p&gt;對較重的 Web 應用來說，真正關鍵的本地資料可能在 &lt;code&gt;IndexedDB&lt;/code&gt; 裡。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli indexed-db
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這條命令用來查看目前頁面的 &lt;code&gt;IndexedDB&lt;/code&gt; 資料。遇到複雜單頁應用、離線快取或本地資料庫式狀態時，可以優先檢查這裡。&lt;/p&gt;
&lt;h2 id=&#34;10-一個最實用的工作流&#34;&gt;10 一個最實用的工作流
&lt;/h2&gt;&lt;p&gt;如果你只是想穩定重用登入狀態，最簡單的流程通常是這樣：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先打開站點並手動完成登入。&lt;/li&gt;
&lt;li&gt;執行下面這條命令保存狀態：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;後續執行時直接載入：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果載入後頁面還是異常，再繼續檢查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;playwright-cli cookies&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli local-storage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli session-storage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;playwright-cli indexed-db&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個順序已經能覆蓋大部分「狀態沒有完整恢復」的問題。&lt;/p&gt;
&lt;h2 id=&#34;11-使用時要注意什麼&#34;&gt;11 使用時要注意什麼
&lt;/h2&gt;&lt;p&gt;有三點最值得注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;storage state&lt;/code&gt; 檔案本質上是敏感資料，裡面可能包含登入 cookie 或 token，不要隨便提交到倉庫。&lt;/li&gt;
&lt;li&gt;只恢復 cookies 不一定夠，很多現代網站還依賴 &lt;code&gt;localStorage&lt;/code&gt;、&lt;code&gt;sessionStorage&lt;/code&gt; 或 &lt;code&gt;IndexedDB&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;狀態檔不是永久有效，cookie 過期、帳號變更或環境切換後，通常都要重新生成。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;12-快速總結&#34;&gt;12 快速總結
&lt;/h2&gt;&lt;p&gt;如果只記一句話：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Playwright CLI&lt;/code&gt; 的 &lt;code&gt;storage state&lt;/code&gt;，就是把瀏覽器目前狀態保存下來，再在後續任務裡繼續使用。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而在實際排查裡，最常用的一組命令就是這些：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli storage-state save auth.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --storage-state auth.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli cookies
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli local-storage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli session-storage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli indexed-db
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;先保存，再載入；如果還是不對，再分層檢查 cookies 和各類本地儲存，基本就是這份參考文件最實用的部分。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI storage-state 參考文件：https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/storage-state.md&lt;/li&gt;
&lt;li&gt;Playwright CLI 專案首頁：https://github.com/microsoft/playwright-cli&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenHarness 是什麼：這個開源 Agent Harness 能做什麼</title>
        <link>https://knightli.com/zh-tw/2026/04/12/openharness-basic-functions/</link>
        <pubDate>Sun, 12 Apr 2026 23:45:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/openharness-basic-functions/</guid>
        <description>&lt;p&gt;如果你最近在關注開源 AI Agent 工具，&lt;code&gt;HKUDS/OpenHarness&lt;/code&gt; 是一個很值得留意的新專案。它不是單純再做一個「會聊天的外殼」，而是把一套可運行、可擴展、可治理的 Agent 基礎設施單獨抽出來，做成一個開源的 &lt;strong&gt;Agent Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;按照官方 README 的說法，OpenHarness 主要提供的是一整套輕量級 Agent 基礎能力，包括工具調用、技能載入、記憶機制、權限治理以及多 Agent 協調；而它附帶的 &lt;code&gt;ohmo&lt;/code&gt;，則是建立在這套基礎設施之上的個人 AI 助手應用。&lt;/p&gt;
&lt;h2 id=&#34;01-openharness-是什麼&#34;&gt;01 OpenHarness 是什麼
&lt;/h2&gt;&lt;p&gt;可以把 OpenHarness 理解成「給大模型裝上手腳、記憶與邊界」的運行層。&lt;/p&gt;
&lt;p&gt;大模型本身擅長推理與生成，但如果你想讓它真正成為一個可以長期工作的 Agent，通常還需要這些外圍能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;調用工具，而不只是輸出文字&lt;/li&gt;
&lt;li&gt;讀寫檔案、執行命令、使用搜尋與網頁能力&lt;/li&gt;
&lt;li&gt;在長會話中保留上下文與記憶&lt;/li&gt;
&lt;li&gt;對危險操作做權限控制&lt;/li&gt;
&lt;li&gt;把大型任務拆給多個子 Agent 並行處理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenHarness 的目標，就是把這部分「圍繞模型的工程層」做成一個清晰、開源、可檢查的 Python 實作。它更像是一個 Agent 運行底座，而不是單獨強調某一種模型或某一個聊天介面。&lt;/p&gt;
&lt;h2 id=&#34;02-這個專案的基本功能&#34;&gt;02 這個專案的基本功能
&lt;/h2&gt;&lt;p&gt;從目前 GitHub 首頁與 README 來看，OpenHarness 的核心能力主要集中在下面幾塊。&lt;/p&gt;
&lt;h3 id=&#34;1-agent-loop&#34;&gt;1. Agent Loop
&lt;/h3&gt;&lt;p&gt;這是 Agent 能持續工作的核心執行循環。官方列出的重點包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;串流式工具調用循環&lt;/li&gt;
&lt;li&gt;API 重試與指數退避&lt;/li&gt;
&lt;li&gt;並行工具執行&lt;/li&gt;
&lt;li&gt;Token 統計與成本追蹤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這部分的意義在於，Agent 不只是「一問一答」，而是可以在一次任務裡持續觀察、思考、調用工具、讀取結果，再進入下一步。&lt;/p&gt;
&lt;h3 id=&#34;2-工具skills-與外掛體系&#34;&gt;2. 工具、Skills 與外掛體系
&lt;/h3&gt;&lt;p&gt;OpenHarness 把工具層做得相當完整。專案首頁提到它已經內建檔案、Shell、搜尋、網頁、MCP 等多類工具，並支援按需載入 Markdown 技能檔案。&lt;/p&gt;
&lt;p&gt;它的價值不只是「工具很多」，更重要的是組合方式比較開放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以直接使用內建工具&lt;/li&gt;
&lt;li&gt;可以依任務載入 skills&lt;/li&gt;
&lt;li&gt;可以透過外掛擴展 hooks、skills 與 agents&lt;/li&gt;
&lt;li&gt;相容 &lt;code&gt;anthropics/skills&lt;/code&gt; 與相關外掛生態&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你希望把某些固定流程沉澱成可重用能力，而不是每次都靠 prompt 臨時描述，這一層會很有用。&lt;/p&gt;
&lt;h3 id=&#34;3-上下文與記憶&#34;&gt;3. 上下文與記憶
&lt;/h3&gt;&lt;p&gt;這部分是 OpenHarness 很重要的差異點。官方給出的關鍵詞包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 發現與注入&lt;/li&gt;
&lt;li&gt;自動上下文壓縮&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MEMORY.md&lt;/code&gt; 持久記憶&lt;/li&gt;
&lt;li&gt;會話恢復與歷史延續&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這代表它不只是處理當前這一輪輸入，而是會盡量把「專案約定」「歷史任務」「長期偏好」保留下來，讓 Agent 更適合持續工作，而不是每次都從零開始。&lt;/p&gt;
&lt;h3 id=&#34;4-權限治理與安全邊界&#34;&gt;4. 權限治理與安全邊界
&lt;/h3&gt;&lt;p&gt;Agent 真正進入檔案系統、終端與網路之後，治理就變得非常重要。OpenHarness 在這部分提供了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多級權限模式&lt;/li&gt;
&lt;li&gt;基於路徑與命令的規則控制&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PreToolUse&lt;/code&gt; / &lt;code&gt;PostToolUse&lt;/code&gt; hooks&lt;/li&gt;
&lt;li&gt;互動式審批彈窗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;簡單來說，它不只是讓 Agent「能做事」，也考慮了「哪些事可以直接做，哪些事必須先經過確認」。&lt;/p&gt;
&lt;h3 id=&#34;5-多-agent-協調&#34;&gt;5. 多 Agent 協調
&lt;/h3&gt;&lt;p&gt;OpenHarness 也支援把任務拆給子 Agent 處理。目前公開資料裡提到的能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;子 Agent 建立與委派&lt;/li&gt;
&lt;li&gt;團隊註冊與任務管理&lt;/li&gt;
&lt;li&gt;背景任務生命週期管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對複雜任務來說，這代表它可以不只靠一個 Agent 串行推進，而是嘗試進行並行協作。&lt;/p&gt;
&lt;h3 id=&#34;6-多-provider-工作流&#34;&gt;6. 多 Provider 工作流
&lt;/h3&gt;&lt;p&gt;OpenHarness 目前並不把 provider 只當成底層 API 名稱，而是抽象成 workflow + profile。根據 README，目前支援的方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude / Anthropic-compatible&lt;/li&gt;
&lt;li&gt;OpenAI-compatible&lt;/li&gt;
&lt;li&gt;Codex Subscription&lt;/li&gt;
&lt;li&gt;GitHub Copilot&lt;/li&gt;
&lt;li&gt;Moonshot(Kimi)、GLM、MiniMax 等相容後端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這讓它更像一個「多模型、多入口」的 Agent 運行框架，而不是綁定某一家服務商。&lt;/p&gt;
&lt;h3 id=&#34;7-react-tui-與非互動模式&#34;&gt;7. React TUI 與非互動模式
&lt;/h3&gt;&lt;p&gt;OpenHarness 內建終端互動介面，執行 &lt;code&gt;oh&lt;/code&gt; 後可以進入 React/Ink TUI。官方 README 提到它支援：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;命令選擇器&lt;/li&gt;
&lt;li&gt;權限確認&lt;/li&gt;
&lt;li&gt;模型切換&lt;/li&gt;
&lt;li&gt;Provider 切換&lt;/li&gt;
&lt;li&gt;會話恢復&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你不想進入互動介面，也可以用非互動模式直接執行單次任務，例如把結果輸出到標準輸出、JSON 或串流 JSON，適合腳本化與自動化場景。&lt;/p&gt;
&lt;h2 id=&#34;03-ohmo-是什麼&#34;&gt;03 &lt;code&gt;ohmo&lt;/code&gt; 是什麼
&lt;/h2&gt;&lt;p&gt;如果說 OpenHarness 是底層基礎設施，&lt;code&gt;ohmo&lt;/code&gt; 就是建立在這套基礎設施之上的「個人 Agent 應用」。&lt;/p&gt;
&lt;p&gt;專案首頁對 &lt;code&gt;ohmo&lt;/code&gt; 的定位很明確：它不是一般聊天機器人，而是一個可以在長會話中持續工作的個人助手。官方描述裡提到，它可以在 Feishu、Slack、Telegram、Discord 等渠道與你互動，並執行像是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fork 分支&lt;/li&gt;
&lt;li&gt;寫程式碼&lt;/li&gt;
&lt;li&gt;跑測試&lt;/li&gt;
&lt;li&gt;發起 PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，README 還特別強調：&lt;code&gt;ohmo&lt;/code&gt; 可以運行在你現有的 Claude Code 或 Codex 訂閱之上，不一定要求額外申請新的 API key。對已經在使用這些訂閱工具的人來說，這一點門檻比較低。&lt;/p&gt;
&lt;h2 id=&#34;04-它適合什麼場景&#34;&gt;04 它適合什麼場景
&lt;/h2&gt;&lt;p&gt;從這個專案目前公開出來的能力來看，OpenHarness 比較適合下面幾類人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想研究生產級 Agent 到底由哪些基礎模組構成&lt;/li&gt;
&lt;li&gt;想自己搭建一個可擴展的開源 Agent 運行層&lt;/li&gt;
&lt;li&gt;想把工具、技能、記憶、權限、多 Agent 協調放進同一個框架裡&lt;/li&gt;
&lt;li&gt;不希望被單一模型廠商或單一客戶端形態綁定&lt;/li&gt;
&lt;li&gt;想基於現成架構繼續做垂直領域 Agent 或個人助手&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的目標只是「找一個能直接聊天的成品助手」，那 OpenHarness 本體可能不是最輕量的選擇；但如果你更關心 Agent 基礎設施、工程可控性與後續擴展，這個專案就很值得研究。&lt;/p&gt;
&lt;h2 id=&#34;05-快速理解它的定位&#34;&gt;05 快速理解它的定位
&lt;/h2&gt;&lt;p&gt;一句話總結：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenHarness 負責把大模型變成真正可執行任務的 Agent，&lt;code&gt;ohmo&lt;/code&gt; 負責把這套能力包裝成一個可以長期陪你工作的個人助手。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;也可以把它拆成兩層來看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenHarness：開源 Agent Harness，本質是基礎設施&lt;/li&gt;
&lt;li&gt;ohmo：基於這套基礎設施構建的 personal-agent app&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;截至 &lt;strong&gt;2026 年 4 月 12 日&lt;/strong&gt;，專案 GitHub 首頁顯示它的更新已經推進到 &lt;strong&gt;v0.1.6（2026 年 4 月 10 日）&lt;/strong&gt;，重點持續放在自動上下文壓縮、MCP 傳輸能力、React TUI 與多 Agent 運行穩定性上。這表示它目前仍處於快速演進階段，但方向已經非常清晰。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub 專案首頁：https://github.com/HKUDS/OpenHarness&lt;/li&gt;
&lt;li&gt;英文 README：https://github.com/HKUDS/OpenHarness/blob/main/README.md&lt;/li&gt;
&lt;li&gt;中文 README：https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI 使用入門：安裝、Skills、Session 管理與常用命令</title>
        <link>https://knightli.com/zh-tw/2026/04/12/playwright-cli-getting-started/</link>
        <pubDate>Sun, 12 Apr 2026 14:36:58 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/playwright-cli-getting-started/</guid>
        <description>&lt;p&gt;如果你最近在用 Claude Code、GitHub Copilot 或其他 coding agent 做瀏覽器自動化，&lt;code&gt;microsoft/playwright-cli&lt;/code&gt; 是一個很值得關注的新工具。它不是傳統意義上那種「給人手動敲命令用」的瀏覽器小工具，而是一個面向 coding agent 的 Playwright CLI，強調的是更低的 token 開銷、更輕量的命令介面，以及和 Skills 工作流的結合。&lt;/p&gt;
&lt;p&gt;從官方 README 來看，Playwright CLI 的核心思路很明確：相比 MCP 把大量工具 schema 和頁面結構塞進模型上下文，CLI 命令方式更緊湊，也更適合在大程式碼庫、測試任務與瀏覽器自動化之間來回切換的 agent 工作流。&lt;/p&gt;
&lt;h2 id=&#34;01-playwright-cli-是什麼&#34;&gt;01 Playwright CLI 是什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;playwright-cli&lt;/code&gt; 是微軟開源的一個 Playwright 命令列工具，官方描述是「CLI for common Playwright actions」。它主要用來完成這些事情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;開啟頁面並驅動瀏覽器&lt;/li&gt;
&lt;li&gt;錄製與生成 Playwright 程式碼&lt;/li&gt;
&lt;li&gt;抓取頁面快照，取得元素引用&lt;/li&gt;
&lt;li&gt;截圖、匯出 PDF&lt;/li&gt;
&lt;li&gt;搭配 coding agent 進行自動化測試與網頁操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;目前 GitHub README 對它的定位說得非常清楚：如果你正在使用 coding agents，CLI 往往比 Playwright MCP 更合適；如果你更需要持久狀態、豐富的 introspection 與長時間的 agentic loop，MCP 仍然有它的價值。&lt;/p&gt;
&lt;p&gt;換句話說，Playwright CLI 更像是「替 AI 編碼助手準備的瀏覽器自動化介面」，而不只是給人類工程師手動點網頁的工具。&lt;/p&gt;
&lt;h2 id=&#34;02-它的優點在哪裡&#34;&gt;02 它的優點在哪裡
&lt;/h2&gt;&lt;h3 id=&#34;1-更適合-agent-工作流&#34;&gt;1. 更適合 agent 工作流
&lt;/h3&gt;&lt;p&gt;官方 README 把第一個優點直接寫成 &lt;code&gt;Token-efficient&lt;/code&gt;。它不會強制把整頁資料都塞進 LLM 上下文，而是透過更短、更專用的命令讓 agent 操作瀏覽器。&lt;/p&gt;
&lt;p&gt;這對 coding agent 很重要。因為在真實專案裡，agent 不只是跑瀏覽器，還要讀程式碼、改檔案、跑測試、看日誌。如果瀏覽器工具本身就很「吃上下文」，整體效率會明顯下降。&lt;/p&gt;
&lt;h3 id=&#34;2-能和-skills-一起工作&#34;&gt;2. 能和 Skills 一起工作
&lt;/h3&gt;&lt;p&gt;README 裡特別強調了 &lt;code&gt;playwright-cli install --skills&lt;/code&gt;。這代表官方不是把它當成單純的 shell 工具，而是設計成可以被 Claude Code、GitHub Copilot 等 agent 直接使用的技能入口。&lt;/p&gt;
&lt;p&gt;如果你的工作流本來就建立在 Skills 之上，那 Playwright CLI 的接入會更自然。&lt;/p&gt;
&lt;h3 id=&#34;3-session-管理做得比較完整&#34;&gt;3. Session 管理做得比較完整
&lt;/h3&gt;&lt;p&gt;Playwright CLI 支援 session。預設情況下，瀏覽器 profile 保存在記憶體裡，同一個 session 內的 cookies 和 storage 會在多次 CLI 呼叫之間保留；如果加上 &lt;code&gt;--persistent&lt;/code&gt;，還可以把 profile 落到磁碟，跨瀏覽器重啟繼續使用。&lt;/p&gt;
&lt;p&gt;這讓它比「一條命令開瀏覽器，跑完就丟掉」的玩具型工具更實用，也更適合持續除錯與 agent 長流程執行。&lt;/p&gt;
&lt;h3 id=&#34;4-自帶可視化監控面板&#34;&gt;4. 自帶可視化監控面板
&lt;/h3&gt;&lt;p&gt;README 裡提供了 &lt;code&gt;playwright-cli show&lt;/code&gt;，用來打開一個 dashboard，觀察和控制所有執行中的瀏覽器 session。對於 agent 在背景跑自動化任務的場景，這一點很有價值，因為你可以隨時接手、觀察、排錯，而不是只能盲跑。&lt;/p&gt;
&lt;h2 id=&#34;03-安裝與環境要求&#34;&gt;03 安裝與環境要求
&lt;/h2&gt;&lt;p&gt;根據目前 GitHub README，Playwright CLI 的基本要求是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 或更高版本&lt;/li&gt;
&lt;li&gt;Claude Code、GitHub Copilot 或其他 coding agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安裝命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @playwright/cli@latest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡有一個很容易踩坑的點要特別注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;官方目前推薦安裝的是 &lt;code&gt;@playwright/cli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不要把它和 npm 上歷史遺留、已廢棄的舊包 &lt;code&gt;playwright-cli&lt;/code&gt; 混為一談&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是說，真正該安裝的是 scoped package，而不是舊時代的同名歷史包。&lt;/p&gt;
&lt;h2 id=&#34;04-如何開始用&#34;&gt;04 如何開始用
&lt;/h2&gt;&lt;h3 id=&#34;1-安裝-skills&#34;&gt;1. 安裝 skills
&lt;/h3&gt;&lt;p&gt;如果你希望讓 coding agent 直接使用 Playwright CLI，官方建議先安裝 skills：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli install --skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;README 裡明確寫到，Claude Code、GitHub Copilot 等工具會使用本地安裝的 skills。&lt;/p&gt;
&lt;h3 id=&#34;2-直接讓-agent-呼叫-cli&#34;&gt;2. 直接讓 agent 呼叫 CLI
&lt;/h3&gt;&lt;p&gt;如果你不想先處理 skills，也可以直接讓 agent 讀取 CLI 的說明資訊：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Test the &amp;#34;add todo&amp;#34; flow on https://demo.playwright.dev/todomvc using playwright-cli.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Check playwright-cli --help for available commands.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方把這種方式叫做「Skills-less operation」。意思是即使沒有預先安裝 skill，也可以透過 CLI 的自描述能力來驅動 agent。&lt;/p&gt;
&lt;h3 id=&#34;3-手動體驗一遍最小流程&#34;&gt;3. 手動體驗一遍最小流程
&lt;/h3&gt;&lt;p&gt;README 裡給了一組很適合入門的 TodoMVC 範例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://demo.playwright.dev/todomvc/ --headed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Buy groceries&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Water flowers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli check e21
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli check e35
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli screenshot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這組命令的價值在於，它能讓你很快理解 Playwright CLI 的互動方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;open&lt;/code&gt; 負責開頁面&lt;/li&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt; 和 &lt;code&gt;press&lt;/code&gt; 負責輸入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;check&lt;/code&gt; 用元素引用操作核取方塊&lt;/li&gt;
&lt;li&gt;&lt;code&gt;screenshot&lt;/code&gt; 保存結果&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05---headedsession-與監控面板&#34;&gt;05 &lt;code&gt;--headed&lt;/code&gt;、session 與監控面板
&lt;/h2&gt;&lt;h3 id=&#34;--headed&#34;&gt;&lt;code&gt;--headed&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Playwright CLI 預設是 headless 的。如果你想直接看到瀏覽器視窗，需要在 &lt;code&gt;open&lt;/code&gt; 時明確加上 &lt;code&gt;--headed&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://playwright.dev --headed
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這對除錯選擇器、登入流程，或觀察互動細節都會更方便。&lt;/p&gt;
&lt;h3 id=&#34;session&#34;&gt;session
&lt;/h3&gt;&lt;p&gt;官方 README 很強調 session 的用法。你可以用不同 session 把不同專案或網站隔離開來：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open https://playwright.dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli -s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;example open https://example.com --persistent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你是讓 agent 長時間工作，也可以直接透過環境變數指定 session：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PLAYWRIGHT_CLI_SESSION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;todo-app claude .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常用的 session 管理命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli close-all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli kill-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt; 用來列出所有 session&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; 用來正常關閉所有瀏覽器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill-all&lt;/code&gt; 用來強制結束所有瀏覽器程序&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;監控面板&#34;&gt;監控面板
&lt;/h3&gt;&lt;p&gt;如果你想看 agent 現在到底在瀏覽器裡做了什麼，可以執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根據 README 的說明，這個 dashboard 主要有兩種視圖：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Session grid：依 workspace 查看所有活動 session，附即時畫面、URL 和頁面標題&lt;/li&gt;
&lt;li&gt;Session detail：查看單個 session 的即時介面，還能接管滑鼠與鍵盤&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這讓 Playwright CLI 不只是「命令列可用」，而是具備了比較成熟的可觀測性。&lt;/p&gt;
&lt;h2 id=&#34;06-常用命令先記住哪些&#34;&gt;06 常用命令先記住哪些
&lt;/h2&gt;&lt;p&gt;如果你是第一次接觸 Playwright CLI，不需要一開始就把所有命令背下來。先記住下面這些最核心的就夠了：&lt;/p&gt;
&lt;h3 id=&#34;頁面與互動&#34;&gt;頁面與互動
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli open &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;url&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli goto &amp;lt;url&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli click &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli fill &amp;lt;ref&amp;gt; &amp;lt;text&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; &amp;lt;text&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli hover &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli press &amp;lt;key&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;取得頁面結構&#34;&gt;取得頁面結構
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot &amp;lt;ref&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli snapshot --depth&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;N
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &amp;lt;func&amp;gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;ref&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;snapshot&lt;/code&gt; 很關鍵，因為很多後續操作都依賴元素引用 &lt;code&gt;ref&lt;/code&gt;。通常你會先抓一次快照，再用回傳的元素編號去點擊、填寫、勾選或截圖。&lt;/p&gt;
&lt;h3 id=&#34;輸出結果&#34;&gt;輸出結果
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli screenshot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli pdf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;分頁&#34;&gt;分頁
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-list
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-new &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;url&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-close &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;index&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;playwright-cli tab-select &amp;lt;index&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;07-它適合誰&#34;&gt;07 它適合誰
&lt;/h2&gt;&lt;p&gt;如果你屬於下面這些場景，Playwright CLI 很值得試：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你在用 Claude Code、Copilot 或其他 coding agent 做 E2E 測試&lt;/li&gt;
&lt;li&gt;你希望瀏覽器自動化介面更輕量，不想把大量頁面結構塞進上下文&lt;/li&gt;
&lt;li&gt;你希望同一個瀏覽器 session 能跨多次命令持續存在&lt;/li&gt;
&lt;li&gt;你想在 agent 自動跑網頁任務時，隨時打開監控面板觀察進度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的重點是「瀏覽器自動化如何和 coding agent 高效配合」，Playwright CLI 很可能會比傳統的人類手動除錯方式更順手。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hermes Agent 是什麼：簡介、優點、快速上手與 OpenClaw 對比</title>
        <link>https://knightli.com/zh-tw/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</link>
        <pubDate>Sun, 12 Apr 2026 14:07:58 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</guid>
        <description>&lt;p&gt;如果你最近在關注開源 AI Agent，&lt;code&gt;Hermes Agent&lt;/code&gt; 是一個很值得看一眼的新專案。它由 Nous Research 推出，核心賣點不是「再做一個聊天殼子」，而是把長期記憶、技能沉澱、上下文檔案、MCP 擴充、訊息閘道與子代理並行這些能力，盡量收斂進同一個 agent 執行環境裡。&lt;/p&gt;
&lt;p&gt;從官方 README 的描述來看，Hermes Agent 的目標很明確：它既可以像本地 CLI 助手一樣在終端裡工作，也可以像一個常駐雲端的個人助理一樣，透過 Telegram、Discord、Slack、WhatsApp、Signal 等管道持續和你對話。對於想把「程式碼助手」「自動化助手」「個人 AI 工作台」合併成同一套系統的使用者來說，這個定位很有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;01-hermes-agent-簡介&#34;&gt;01 Hermes Agent 簡介
&lt;/h2&gt;&lt;p&gt;Hermes Agent 是 Nous Research 開源的自我改進型 AI Agent。它支援多種模型提供方，包括 Nous Portal、OpenRouter、OpenAI，以及自訂的 OpenAI 相容端點；也支援在本地終端、Docker、SSH、Daytona、Modal 等不同執行後端上運作。&lt;/p&gt;
&lt;p&gt;它和許多「會呼叫工具的聊天機器人」最大的差別在於，Hermes 不是只強調單次會話裡的工具呼叫，而是更重視跨會話的持續能力建設。官方文件把這種思路拆成幾塊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;持久記憶：透過 &lt;code&gt;MEMORY.md&lt;/code&gt; 和 &lt;code&gt;USER.md&lt;/code&gt; 保存關於環境、專案、使用者偏好的關鍵資訊。&lt;/li&gt;
&lt;li&gt;技能系統：把複雜任務中學到的流程沉澱成技能，之後按需載入。&lt;/li&gt;
&lt;li&gt;上下文檔案：自動讀取 &lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;SOUL.md&lt;/code&gt;、&lt;code&gt;.cursorrules&lt;/code&gt; 等檔案，把專案約定直接注入會話。&lt;/li&gt;
&lt;li&gt;MCP 整合：可以接入任何相容 MCP 的工具伺服器，擴充資料庫、GitHub、檔案系統、抓取等能力。&lt;/li&gt;
&lt;li&gt;訊息閘道：除了 CLI，還能透過 Telegram、Discord、Slack、WhatsApp、Signal、Email 等入口使用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只用一句話概括，Hermes Agent 更像是一個「帶記憶、帶技能、可擴充、可多端接入的通用 Agent 操作層」。&lt;/p&gt;
&lt;h2 id=&#34;02-它的優點在哪裡&#34;&gt;02 它的優點在哪裡
&lt;/h2&gt;&lt;h3 id=&#34;1-同時覆蓋-cli-工作流與訊息工作流&#34;&gt;1. 同時覆蓋 CLI 工作流與訊息工作流
&lt;/h3&gt;&lt;p&gt;很多 agent 專案要嘛偏向「終端內開發助手」，要嘛偏向「聊天平台機器人」。Hermes 想做的是把這兩件事合併起來。你可以直接在終端裡執行 &lt;code&gt;hermes&lt;/code&gt;，也可以啟動 gateway 後，從 Telegram 或 Discord 繼續同一個助手。&lt;/p&gt;
&lt;p&gt;這種設計的好處是，Hermes 不侷限於「坐在電腦前才有用」。如果你把它部署在雲端或 VPS 上，它可以變成一個持續在線的個人 AI 助理。&lt;/p&gt;
&lt;h3 id=&#34;2-對長期使用考慮得更完整&#34;&gt;2. 對「長期使用」考慮得更完整
&lt;/h3&gt;&lt;p&gt;Hermes 不只是會聊天和調工具，它也強調長期積累：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有邊界的持久記憶，而不是無限堆上下文。&lt;/li&gt;
&lt;li&gt;有技能系統，可以把成功流程保存下來重複使用。&lt;/li&gt;
&lt;li&gt;能搜尋過去會話，做跨會話召回。&lt;/li&gt;
&lt;li&gt;能讀取專案中的上下文檔案，減少每次重複解釋相同背景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對於經常在固定程式碼庫、固定工作流、固定團隊規範裡反覆工作的人，這一點很重要。它意味著 agent 不只是「這次幫你做點事」，而是會逐漸更懂你的環境。&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-支援讓擴充性很強&#34;&gt;3. MCP 支援讓擴充性很強
&lt;/h3&gt;&lt;p&gt;Hermes 官方文件明確支援 MCP，並說明了 stdio 與 HTTP 兩種接入方式。也就是說，只要某個外部系統已經有 MCP server，Hermes 理論上就能以更低的成本接進去。&lt;/p&gt;
&lt;p&gt;這比每次為單一系統各自撰寫外掛更靈活。對於已經在 MCP 生態裡累積了一批工具的人來說，Hermes 的接入成本會低很多。&lt;/p&gt;
&lt;h3 id=&#34;4-對-openclaw-使用者很友善&#34;&gt;4. 對 OpenClaw 使用者很友善
&lt;/h3&gt;&lt;p&gt;這一點很有意思。Hermes README 裡直接提供了 &lt;code&gt;hermes claw migrate&lt;/code&gt;，並寫明可以從 OpenClaw 匯入設定、記憶、技能、API key、訊息平台設定等內容。&lt;/p&gt;
&lt;p&gt;這說明它並不是完全無視既有生態重新造輪子，而是明確把一部分 OpenClaw 使用者視為潛在遷移對象。&lt;/p&gt;
&lt;h2 id=&#34;03-怎麼快速上手&#34;&gt;03 怎麼快速上手
&lt;/h2&gt;&lt;p&gt;Hermes Agent 官方推薦的安裝方式非常直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;官方說明支援 Linux、macOS、WSL2，以及 Android 的 Termux。需要注意的是，README 裡明確寫了原生 Windows 暫不支援，Windows 使用者建議改走 WSL2。&lt;/p&gt;
&lt;p&gt;安裝完成後，通常先刷新 shell：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然後就可以直接啟動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想一步一步完成完整初始化，最省心的命令是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes setup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;根據官方文件和 README，第一次上手可以按下面這個順序來：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;執行 &lt;code&gt;hermes setup&lt;/code&gt;，完成基礎設定。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;hermes model&lt;/code&gt; 選擇模型提供方與模型。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;hermes tools&lt;/code&gt; 開關需要的工具集。&lt;/li&gt;
&lt;li&gt;直接執行 &lt;code&gt;hermes&lt;/code&gt;，進入互動式 CLI。&lt;/li&gt;
&lt;li&gt;如果你想接 Telegram、Discord 之類的管道，再繼續設定 &lt;code&gt;hermes gateway&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你本來就是 OpenClaw 使用者，也可以先看一下遷移命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hermes claw migrate --dry-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它會先預覽可遷移的內容，再決定要不要正式匯入。&lt;/p&gt;
&lt;h2 id=&#34;04-和-openclaw-怎麼看&#34;&gt;04 和 OpenClaw 怎麼看
&lt;/h2&gt;&lt;p&gt;從官方文件與 README 來看，Hermes Agent 與 OpenClaw 並不是簡單的「誰取代誰」，而是定位有明顯重疊，但側重點不同。&lt;/p&gt;
&lt;h3 id=&#34;hermes-agent-更像什麼&#34;&gt;Hermes Agent 更像什麼
&lt;/h3&gt;&lt;p&gt;Hermes 更像一個偏 agent 內核與工作流系統的產品。它強調的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 體驗&lt;/li&gt;
&lt;li&gt;記憶與技能沉澱&lt;/li&gt;
&lt;li&gt;專案上下文檔案&lt;/li&gt;
&lt;li&gt;MCP 擴充&lt;/li&gt;
&lt;li&gt;子代理並行&lt;/li&gt;
&lt;li&gt;在本地、容器、遠端、serverless 環境之間切換執行後端&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的主要訴求是「讓 agent 更懂專案、更能持續複用能力、更方便接 MCP 與開發工作流」，Hermes 的方向會更順手。&lt;/p&gt;
&lt;h3 id=&#34;openclaw-更像什麼&#34;&gt;OpenClaw 更像什麼
&lt;/h3&gt;&lt;p&gt;OpenClaw 則更像一個以個人 AI 助手與訊息閘道為中心的平台。它強調：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;非常豐富的訊息管道接入&lt;/li&gt;
&lt;li&gt;常駐運作的 Gateway&lt;/li&gt;
&lt;li&gt;瀏覽器裡的 Control UI&lt;/li&gt;
&lt;li&gt;裝置配對、遠端存取、狀態管理&lt;/li&gt;
&lt;li&gt;語音、行動端、Canvas 等更強的助手形態&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的核心需求是「把一個個人 AI 助手穩定地掛在各種聊天管道與裝置上」，並且希望用控制面板統一管理，OpenClaw 的產品感會更強。&lt;/p&gt;
&lt;h3 id=&#34;一個更實用的選擇建議&#34;&gt;一個更實用的選擇建議
&lt;/h3&gt;&lt;p&gt;可以把兩者簡單理解成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hermes Agent：更偏「會成長的通用 agent 工作台」&lt;/li&gt;
&lt;li&gt;OpenClaw：更偏「多管道常駐型個人 AI 助手平台」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當然，這個區分不是絕對的，因為兩邊都還在持續擴充能力，而且 Hermes 也提供了從 OpenClaw 遷移的路徑。但至少從目前公開資料看，Hermes 在「記憶、技能、上下文、MCP、開發工作流」這條線上更突出；OpenClaw 在「閘道、多管道、Control UI、裝置接入」這條線上更成熟。&lt;/p&gt;
&lt;h2 id=&#34;05-適合誰嘗試&#34;&gt;05 適合誰嘗試
&lt;/h2&gt;&lt;p&gt;如果你屬於下面幾類人，Hermes Agent 值得優先試一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你已經在終端裡大量使用 AI 工具，希望 agent 更懂程式碼庫和專案規則。&lt;/li&gt;
&lt;li&gt;你想把 &lt;code&gt;AGENTS.md&lt;/code&gt;、技能、記憶、MCP 這些能力組合到一起。&lt;/li&gt;
&lt;li&gt;你不想被單一模型廠商綁死，希望可以靈活切換 provider。&lt;/li&gt;
&lt;li&gt;你原本就在用 OpenClaw，現在想試試一個更偏 agent 工作流的方向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你更看重的是行動端觸達、各種 IM 平台接入、瀏覽器控制台，以及「始終在線的個人助理感」，那 OpenClaw 仍然很有吸引力。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hermes Agent GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Agent 文件: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes Features Overview: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/user-guide/features/overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hermes MCP: &lt;a class=&#34;link&#34; href=&#34;https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/openclaw/openclaw&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/openclaw/openclaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw Getting Started: &lt;a class=&#34;link&#34; href=&#34;https://docs.openclaw.ai/start/quickstart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.openclaw.ai/start/quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenClaw Control UI: &lt;a class=&#34;link&#34; href=&#34;https://docs.openclaw.ai/web/control-ui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.openclaw.ai/web/control-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 類腦記憶演算法 Dreaming：機器開始做夢，人類卻在失眠</title>
        <link>https://knightli.com/zh-tw/2026/04/12/openclaw-dreaming-machine-dreams-humans-lose-sleep/</link>
        <pubDate>Sun, 12 Apr 2026 12:41:34 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/openclaw-dreaming-machine-dreams-humans-lose-sleep/</guid>
        <description>&lt;p&gt;大模型的長期記憶一直是個老問題。上下文越積越多，資訊就越容易混亂。智能體看似什麼都記得，實際上卻越來越難判斷什麼重要、什麼該忘。&lt;/p&gt;
&lt;p&gt;4 月 5 日，OpenClaw 在新版本中上線了一項實驗功能：Dreaming。它不是一個花俏名稱，而是一套模仿人類睡眠過程的背景記憶整理機制，目標很直接，就是讓智能體醒來之後記得更準。&lt;/p&gt;
&lt;h2 id=&#34;01-睡眠演算法把記憶整理拆成三個階段&#34;&gt;01 睡眠演算法：把記憶整理拆成三個階段
&lt;/h2&gt;&lt;p&gt;Dreaming 並不只是做索引，而是把記憶整理拆成三個邏輯階段，對應人類睡眠中的不同功能。&lt;/p&gt;
&lt;p&gt;淺睡階段（Light Sleep）：系統先掃描近期對話與召回紀錄，做去重與初步篩選，建立候選內容。這個階段只做暫存，不會直接改動核心記憶檔案 &lt;code&gt;MEMORY.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;深睡階段（Deep Sleep）：系統開始依規則篩選高價值資訊。只有同時達到最低評分、最低召回次數與最低獨特查詢次數的內容，才會進入下一步。寫入前還會重新比對最新日誌，剔除過時內容，最後把結果追加到 &lt;code&gt;MEMORY.md&lt;/code&gt;，並在 &lt;code&gt;DREAMS.md&lt;/code&gt; 中留下深睡摘要。&lt;/p&gt;
&lt;p&gt;快速動眼階段（REM）：在記憶固化之後，系統會進一步分析短期行為痕跡，尋找不同資訊之間的潛在關聯，生成模式總結與反思內容。這部分會寫入專門的 REM 區塊，幫助智能體在處理複雜任務時更容易掌握全局。&lt;/p&gt;
&lt;p&gt;除了給機器自己使用的記憶整理機制，Dreaming 還會順手生成一份更適合人類閱讀的「夢境日記」。當素材累積到一定程度，背景子智能體會呼叫預設模型，在 &lt;code&gt;DREAMS.md&lt;/code&gt; 中追加一段簡潔說明。&lt;/p&gt;
&lt;h2 id=&#34;02-評分機制決定什麼該留下什麼該被忘掉&#34;&gt;02 評分機制：決定什麼該留下，什麼該被忘掉
&lt;/h2&gt;&lt;p&gt;Dreaming 的關鍵不只是「整理」，更是「篩選」。OpenClaw 沒有繼續沿用粗放式的全量保存，而是用一套加權評分機制判斷哪些資訊值得進入長期記憶。&lt;/p&gt;
&lt;p&gt;這套機制主要看六個維度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;相關性權重（30%）：衡量資訊在被檢索時到底有沒有用。&lt;/li&gt;
&lt;li&gt;頻率權重（24%）：統計某條資訊被反覆提及的次數。&lt;/li&gt;
&lt;li&gt;查詢多樣性（15%）：看它是否在不同問題與情境中都出現過。&lt;/li&gt;
&lt;li&gt;時效性權重（15%）：讓近期資訊擁有更高優先級。&lt;/li&gt;
&lt;li&gt;整合度權重（10%）：看資訊是否能跨多天穩定出現。&lt;/li&gt;
&lt;li&gt;概念豐富度（6%）：判斷它背後的關聯概念是否足夠豐富。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這代表系統不是把所有內容一股腦塞進長期記憶，而是優先保留那些反覆出現、能解決問題、又不過時的資訊。&lt;/p&gt;
&lt;h2 id=&#34;03-為什麼它會讓人想到-claude-的做夢思路&#34;&gt;03 為什麼它會讓人想到 Claude 的「做夢」思路
&lt;/h2&gt;&lt;p&gt;有開發者認為，OpenClaw 這次 Dreaming 升級的思路，很像 Claude Code 洩露程式碼中提到的 KAIROS 自動做夢機制。過去那種反覆讀寫整個 &lt;code&gt;MEMORY.md&lt;/code&gt; 的做法，到了後期很容易讓記憶系統愈來愈臃腫；而 Dreaming 把流程拆成淺睡整合、深睡固化、REM 關聯，邏輯明顯更清楚，也更接近「先整理、再沉澱、再提煉」的設計。&lt;/p&gt;
&lt;p&gt;也有人從神經科學角度肯定這套設計。因為 Dreaming、淺睡、深睡與 REM 這些概念並不是隨便取的名字，而是明確借用了人類睡眠鞏固記憶的模型。&lt;/p&gt;
&lt;p&gt;OpenClaw 現有的 &lt;code&gt;IDENTITY.md&lt;/code&gt;、&lt;code&gt;USER.md&lt;/code&gt; 和 &lt;code&gt;HEARTBEAT.md&lt;/code&gt; 已經提供了智能體的人設、使用者上下文與運行連續性，而 &lt;code&gt;DREAMS.md&lt;/code&gt; 補上的，正是「哪些記憶該留下」的能力。&lt;/p&gt;
&lt;h2 id=&#34;04-最諷刺的一幕機器學會做夢人卻睡不著&#34;&gt;04 最諷刺的一幕：機器學會做夢，人卻睡不著
&lt;/h2&gt;&lt;p&gt;Dreaming 的真正價值，不是讓 AI 什麼都記住，而是讓它學會回顧短期記憶、提取底層模式、過濾噪音。一個真正好用的智能體，不應該像移動硬碟一樣死記硬背，而應該越來越懂使用者的偏好、目標與背景。&lt;/p&gt;
&lt;p&gt;從工程角度看，這套機制最值得注意的地方，在於它並不神祕。它不是黑盒魔法，而是一套有階段、有門檻、有反思，也有遺忘規則的背景流程。這種設計讓 AI 的記憶機制第一次看起來更像「可控的系統」，而不只是「無限堆上下文」。&lt;/p&gt;
&lt;p&gt;但也正因如此，整件事才顯得有些諷刺：我們正投入大量資源，教機器如何像人一樣做夢；與此同時，許多人卻因為擔心被這些越來越聰明的系統取代而失眠。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama-quantize 怎麼用：GGUF 模型量化入門</title>
        <link>https://knightli.com/zh-tw/2026/04/12/llama-quantize-gguf-guide/</link>
        <pubDate>Sun, 12 Apr 2026 09:42:36 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/llama-quantize-gguf-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama-quantize&lt;/code&gt; 是 &lt;code&gt;llama.cpp&lt;/code&gt; 裡的量化工具，用來把高精度的 &lt;code&gt;GGUF&lt;/code&gt; 模型轉成更小的量化版本。&lt;/p&gt;
&lt;p&gt;它最常見的用途，是把像 &lt;code&gt;F32&lt;/code&gt;、&lt;code&gt;BF16&lt;/code&gt; 或 &lt;code&gt;FP16&lt;/code&gt; 這樣的高精度模型，轉成 &lt;code&gt;Q4_K_M&lt;/code&gt;、&lt;code&gt;Q5_K_M&lt;/code&gt;、&lt;code&gt;Q8_0&lt;/code&gt; 等更適合本機執行的格式。量化後模型體積會明顯縮小，推理通常也會更快，但精度會有一定損失。&lt;/p&gt;
&lt;h2 id=&#34;基本用法&#34;&gt;基本用法
&lt;/h2&gt;&lt;p&gt;一個典型流程通常是先準備原始模型，再轉成 GGUF，最後執行量化。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# install Python dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 -m pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# convert the model to ggml FP16 format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python3 convert_hf_to_gguf.py ./models/mymodel/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# quantize the model to 4-bits (using Q4_K_M method)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;量化完成後，就可以直接用 &lt;code&gt;llama-cli&lt;/code&gt; 載入新的 GGUF 檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# start inference on a gguf model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-cli -m ./models/mymodel/ggml-model-Q4_K_M.gguf -cnv -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;You are a helpful assistant&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;常見參數&#34;&gt;常見參數
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--allow-requantize&lt;/code&gt;：允許對已經量化過的模型再次量化，但通常不建議，品質可能下降得更明顯&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--leave-output-tensor&lt;/code&gt;：保留輸出層不量化，體積會更大，但有時能換來更好的品質&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pure&lt;/code&gt;：關閉混合量化，讓更多張量使用同一量化類型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--imatrix&lt;/code&gt;：使用重要性矩陣優化量化效果，通常值得優先考慮&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--keep-split&lt;/code&gt;：保留輸入模型的分片結構，而不是合併成單一檔案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是想先跑起來，最實用的起點通常還是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;量化怎麼選&#34;&gt;量化怎麼選
&lt;/h2&gt;&lt;p&gt;可以先把不同量化等級理解成「體積、速度和品質之間的交換」：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;：體積較大，但品質通常更穩&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K&lt;/code&gt; / &lt;code&gt;Q5_K_M&lt;/code&gt;：常見的平衡型選擇&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;：很常見的預設檔，體積和效果通常比較均衡&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; / &lt;code&gt;Q2&lt;/code&gt;：適合資源非常緊張的場景，但品質下降會更明顯&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從示例資料來看，量化等級越低，模型通常越小；而在實際推理裡，更高精度也不一定總是更快，所以選型重點通常不是「越大越好」，而是「在你的硬體上夠穩、夠省、效果也能接受」。&lt;/p&gt;
&lt;h2 id=&#34;實用建議&#34;&gt;實用建議
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;優先從 &lt;code&gt;Q4_K_M&lt;/code&gt; 或 &lt;code&gt;Q5_K_M&lt;/code&gt; 開始試&lt;/li&gt;
&lt;li&gt;如果更看重品質，再往 &lt;code&gt;Q6_K&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt; 提升&lt;/li&gt;
&lt;li&gt;如果機器資源比較緊，再嘗試 &lt;code&gt;Q3&lt;/code&gt; 或 &lt;code&gt;Q2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;最好始終用同一批測試問題比較不同量化版本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一句話總結：&lt;code&gt;llama-quantize&lt;/code&gt; 的核心價值，不是單純把模型變小，而是讓 GGUF 模型在本地設備上更容易跑起來。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp 如何從 Hugging Face 取得 GGUF 模型</title>
        <link>https://knightli.com/zh-tw/2026/04/12/llama-cpp-hugging-face-gguf-models/</link>
        <pubDate>Sun, 12 Apr 2026 09:31:38 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/llama-cpp-hugging-face-gguf-models/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; 可以直接搭配 Hugging Face 上的 GGUF 模型使用，不一定要先手動把檔案下載到本機。&lt;/p&gt;
&lt;p&gt;如果模型倉庫本身已經提供 GGUF 檔案，可以直接在命令列中使用 &lt;code&gt;-hf&lt;/code&gt; 參數，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;預設情況下，這個參數會從 Hugging Face 下載模型。&lt;br&gt;
如果你使用的是其他相容 Hugging Face API 的模型託管服務，也可以透過環境變數 &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt; 切換下載端點。&lt;/p&gt;
&lt;p&gt;需要注意的是，&lt;code&gt;llama.cpp&lt;/code&gt; 只能直接使用 &lt;code&gt;GGUF&lt;/code&gt; 格式。&lt;br&gt;
如果拿到的是其他格式的模型檔案，就需要先用倉庫中的 &lt;code&gt;convert_*.py&lt;/code&gt; 腳本轉換成 &lt;code&gt;GGUF&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;Hugging Face 也提供了一些和 &lt;code&gt;llama.cpp&lt;/code&gt; 相關的線上工具，常見用途包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把模型轉換為 &lt;code&gt;GGUF&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;對模型做量化，縮小體積&lt;/li&gt;
&lt;li&gt;轉換 LoRA 適配器&lt;/li&gt;
&lt;li&gt;在線編輯 GGUF 中繼資料&lt;/li&gt;
&lt;li&gt;直接託管 &lt;code&gt;llama.cpp&lt;/code&gt; 推理服務&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只想記住一個最實用的結論：優先找已經提供 &lt;code&gt;GGUF&lt;/code&gt; 的模型倉庫，然後直接用 &lt;code&gt;llama-cli -hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;，通常是最省事的做法。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 額度用量統計</title>
        <link>https://knightli.com/zh-tw/2026/04/12/codex-usage-quota-check/</link>
        <pubDate>Sun, 12 Apr 2026 00:01:33 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/12/codex-usage-quota-check/</guid>
        <description>&lt;p&gt;如果你想查看 Codex 目前帳號的額度剩餘情況，可以直接寫一個小腳本去請求 ChatGPT 的 &lt;code&gt;/backend-api/wham/usage&lt;/code&gt; 介面。&lt;/p&gt;
&lt;p&gt;這類腳本的思路很簡單：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;從 &lt;code&gt;auth.json&lt;/code&gt; 裡讀取 &lt;code&gt;tokens.access_token&lt;/code&gt; 和 &lt;code&gt;tokens.account_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;請求 &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在請求標頭裡帶上 &lt;code&gt;Authorization: Bearer ...&lt;/code&gt; 和 &lt;code&gt;ChatGPT-Account-Id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;解析回傳結果裡的五小時窗口和週窗口額度&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;適合做什麼&#34;&gt;適合做什麼
&lt;/h2&gt;&lt;p&gt;這個方法適合你在本地快速確認：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;五小時額度還剩多少&lt;/li&gt;
&lt;li&gt;週額度還剩多少&lt;/li&gt;
&lt;li&gt;額度會在什麼時候重置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你有多個帳號，也可以讓腳本批次讀取 &lt;code&gt;account/*.auth.json&lt;/code&gt;，統一輸出一張摘要表。你目前登入的 ChatGPT 帳號所對應的 &lt;code&gt;auth.json&lt;/code&gt;，通常可以在 &lt;code&gt;~/.codex/&lt;/code&gt; 目錄下找到。&lt;/p&gt;
&lt;h2 id=&#34;最關鍵的輸入&#34;&gt;最關鍵的輸入
&lt;/h2&gt;&lt;p&gt;腳本通常只依賴兩項憑證：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;account_id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它們通常都可以從本地 &lt;code&gt;auth.json&lt;/code&gt; 中取得。只要這兩個值有效，請求標頭就能按下面的形式組織：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Accept&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT-Account-Id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Origin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Referer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;User-Agent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mozilla/5.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;回傳結果怎麼看&#34;&gt;回傳結果怎麼看
&lt;/h2&gt;&lt;p&gt;介面回傳後，重點看的是兩類窗口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;five_hour&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weekly&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;腳本可以把它們統一整理成下面幾項：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;剩餘額度百分比&lt;/li&gt;
&lt;li&gt;重置時間&lt;/li&gt;
&lt;li&gt;對應的時間窗口長度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果介面欄位名稱有差異，也可以順手相容 &lt;code&gt;primary_window&lt;/code&gt;、&lt;code&gt;secondary_window&lt;/code&gt;、&lt;code&gt;five_hour_limit&lt;/code&gt;、&lt;code&gt;weekly_limit&lt;/code&gt; 這些變體。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;p&gt;如果腳本回傳 401，通常表示 &lt;code&gt;access_token&lt;/code&gt; 已過期或無效。&lt;/p&gt;
&lt;p&gt;如果回傳 403，通常表示目前帳號沒有權限存取這個介面，或者帳號狀態異常。&lt;/p&gt;
&lt;p&gt;如果你看到同一個回應裡欄位命名不一致，也不用太意外。實際處理時最好先把不同命名方式統一映射後再輸出。&lt;/p&gt;
&lt;h2 id=&#34;參考連結&#34;&gt;參考連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;codex-auth-manager&lt;/code&gt;：&lt;a class=&#34;link&#34; href=&#34;https://github.com/RioArisk/codex-auth-manager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/RioArisk/codex-auth-manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;程式碼&#34;&gt;程式碼
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;190
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;191
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;192
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;193
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;194
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;195
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;196
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;197
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;198
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;199
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;200
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;201
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;202
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;203
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;204
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;205
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;206
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;207
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;208
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;209
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;210
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;211
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;212
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;213
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;214
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;215
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;216
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;217
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;218
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;219
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;220
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;221
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;222
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;223
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;224
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;225
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;226
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;227
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;228
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;229
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;230
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;231
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;232
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;233
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;234
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;235
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;236
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;237
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;238
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;239
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;240
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;241
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;242
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;243
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;244
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;245
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;246
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;247
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;248
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;249
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;250
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;251
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;252
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;253
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;254
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;255
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;256
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;257
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;258
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;259
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;260
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;261
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;262
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;263
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;264
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;265
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;266
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;267
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;268
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;269
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;270
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;271
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;272
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;273
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;274
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;275
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;276
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;277
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;278
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;279
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;280
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;281
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;282
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;283
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;284
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;285
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;286
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;287
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;288
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;289
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;290
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;291
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;292
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;293
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;294
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;295
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;296
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;297
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;298
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;299
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;300
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;301
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;302
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;303
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;304
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;305
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;306
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;307
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;308
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;309
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;310
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;311
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;312
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;313
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;314
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;315
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;316
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;317
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;318
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;319
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;320
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;321
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;322
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;323
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;324
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;325
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;326
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;327
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;328
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;329
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;330
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;331
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;332
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;333
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;334
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;335
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;336
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;337
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;338
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;339
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;340
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;341
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;342
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;343
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;344
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;345
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;346
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;347
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;348
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;349
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;350
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;351
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;352
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;353
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;354
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;355
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;356
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;357
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;358
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;359
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;360
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;361
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;362
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;363
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;364
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;365
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;366
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;367
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;368
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;369
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;370
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;371
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;372
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;373
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;374
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;375
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;376
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;377
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;378
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;379
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;380
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;381
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;382
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;383
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;384
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;385
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;386
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;387
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;388
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;389
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;390
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;391
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;392
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;393
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;394
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;395
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;396
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;397
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;398
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;399
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;400
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;401
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;402
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;403
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;404
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;405
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;406
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;407
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;408
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;409
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;410
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;411
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;412
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;413
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;414
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;415
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;416
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;417
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;418
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;419
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;420
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;421
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;422
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;423
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;424
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;425
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;426
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;427
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;428
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;429
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;430
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;431
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;432
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;433
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;434
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;435
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;436
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;437
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;438
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;439
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;440
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;441
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;442
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;443
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;444
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;445
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;446
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;447
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;448
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;449
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;450
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;451
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;452
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;453
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;454
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;455
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;456
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;457
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;458
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;459
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;460
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;base64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;json&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;typing&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;utc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;CST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timezone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timedelta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hours&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;CST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Query ChatGPT Codex usage from /backend-api/wham/usage.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account_name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;nargs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Account name used to load account/&amp;lt;account_name&amp;gt;.auth.json. If omitted, load all *.auth.json files in account/.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--account-dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Directory containing &amp;lt;account_name&amp;gt;.auth.json files.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--chatgpt-url&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/backend-api/wham/usage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT usage endpoint.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--raw-json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Print the full JSON response body.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;--raw-headers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;help&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Print response headers.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dumps&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;indent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ensure_ascii&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;load_auth_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path_str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;expanduser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;read_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encoding&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;OSError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDecodeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;astimezone&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CST&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;strftime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%Y-%m-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;%d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; %H:%M:%S %Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;epoch_ms_to_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# Newer responses sometimes use epoch seconds, older ones use epoch milliseconds.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;**&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fromtimestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;first_dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;keys&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;split&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;=&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loads&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base64&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;urlsafe_b64decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ascii&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;exp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fromtimestamp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tz&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDecodeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;remaining_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;used_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;used_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;resolve_limit_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resolve_limit_window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;percent_left&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_time_ms&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;epoch_ms_to_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reset_time_ms&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;infer_limit_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;window_seconds&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3600&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;relabel_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;infer_limit_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;limit_window_seconds&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inferred_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;primary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;secondary&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;secondary_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;primary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_limit_entry&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;secondary_window&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;relabel_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;primary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;secondary&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;float&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;numeric_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.auth.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;base_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;glob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*.auth.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;get_account_name_from_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.auth.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[:&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;percent_left&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;print_summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sorted_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;percent_sort_value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;descending&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;row&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sorted_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_percent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_percent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_cst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset_at&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;account&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;five_hour%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly%&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;weekly_reset&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;item&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;display_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;account&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;five_hour&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;  &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;widths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;weekly_reset&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;validate_token_inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;startswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sess-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: invalid_token_type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;s2&#34;&gt;&amp;#34;message: --chatgpt-token looks like a session token (sess-...). Use the JWT access_token instead.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s2&#34;&gt;&amp;#34;hint: Found tokens.access_token in auth.json; omit --chatgpt-token or pass that value instead.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: expired&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: access_token expired at &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;token_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;decode_jwt_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;hint&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format_dt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token_exp&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;unknown time&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;hint: auth.json contains a different access_token expiring at &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hint&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;account_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;warning: supplied --account-id does not match auth.json tokens.account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;handle_error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;401&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: expired&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: Token 宸茶繃鏈熸垨鏃犳晥&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;403&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;status: forbidden&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message: 璐﹀彿宸茶灏佺鎴栨棤鏉冭闂?, file=sys.stderr)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;400&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;fetch_chatgpt_usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;load_auth_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_account_name_from_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_nested_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;tokens&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: auth file not found or invalid&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: missing access_token&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: missing account_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validate_token_inputs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;validation_error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_token&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Accept&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;ChatGPT-Account-Id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_account_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Origin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Referer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://chatgpt.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;User-Agent&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Mozilla/5.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chatgpt_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RequestException&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Request failed: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;=== Headers ===&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ValueError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;HTTP &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;status_code&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle_error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;error_response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;=== Raw JSON ===&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;first_dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rate_limit&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;rate_limits&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rate_limits&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;build_summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;five_hour&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;weekly&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;get_auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;account_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;No auth files found.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stderr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JSONDict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auth_paths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;current_exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fetch_chatgpt_usage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;auth_path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;current_exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw_json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summary_row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;print_summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;summary_rows&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;sys&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exit_code&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>Gemma-4-31B-it 裡的 it 是什麼意思</title>
        <link>https://knightli.com/zh-tw/2026/04/11/gemma-4-31b-it-meaning/</link>
        <pubDate>Sat, 11 Apr 2026 20:45:34 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/11/gemma-4-31b-it-meaning/</guid>
        <description>&lt;p&gt;在 &lt;code&gt;gemma-4-31B-it&lt;/code&gt; 這個名稱裡，&lt;code&gt;it&lt;/code&gt; 是 &lt;code&gt;Instruction Tuned&lt;/code&gt; 的縮寫，也就是「指令微調」版本。&lt;/p&gt;
&lt;p&gt;對大多數人來說，可以直接理解成：這個模型更適合聊天、問答、寫程式和執行明確任務。&lt;/p&gt;
&lt;h2 id=&#34;it-是什麼&#34;&gt;&lt;code&gt;it&lt;/code&gt; 是什麼
&lt;/h2&gt;&lt;p&gt;模型通常會有兩類常見版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base / Pre-trained：基礎模型，更接近原始文字預測器。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;it&lt;/code&gt;：經過指令微調，更擅長理解「請幫我做什麼」這類輸入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你輸入「請翻譯這段話」或「幫我寫一段 Python 程式碼」，&lt;code&gt;it&lt;/code&gt; 版本通常會更穩定，也更符合對話式使用方式。&lt;/p&gt;
&lt;h2 id=&#34;31b-是什麼&#34;&gt;&lt;code&gt;31B&lt;/code&gt; 是什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; 表示這個模型大約有 310 億參數。&lt;/p&gt;
&lt;p&gt;一般來說：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;參數量越大，模型能力和知識覆蓋通常越強&lt;/li&gt;
&lt;li&gt;同時對顯存或記憶體的要求也會更高&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 &lt;code&gt;31B&lt;/code&gt; 屬於比較大的模型，運行門檻也會更高。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-又表示什麼&#34;&gt;&lt;code&gt;Gemma-4&lt;/code&gt; 又表示什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemma-4&lt;/code&gt; 表示模型系列與代際：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma&lt;/code&gt;：Google 的開源模型系列&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;：該系列的第 4 代版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;怎麼選&#34;&gt;怎麼選
&lt;/h2&gt;&lt;p&gt;如果你的目標是聊天、問答、翻譯、寫程式，通常優先選擇帶 &lt;code&gt;-it&lt;/code&gt; 的版本。&lt;/p&gt;
&lt;p&gt;如果你做的是更底層的研究、微調或自訂訓練任務，才更可能去看基礎版。&lt;/p&gt;
&lt;h2 id=&#34;一句話總結&#34;&gt;一句話總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;gemma-4-31B-it&lt;/code&gt; 可以直接理解成：Gemma 4 系列、310 億參數、適合對話與指令任務的版本。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hugging Face 選擇 Llama 的 GGUF 模型時，量化怎麼選：從 Q8 到 Q2 的實用建議</title>
        <link>https://knightli.com/zh-tw/2026/04/11/llama-gguf-quantization-selection/</link>
        <pubDate>Sat, 11 Apr 2026 20:07:29 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/11/llama-gguf-quantization-selection/</guid>
        <description>&lt;p&gt;在 Hugging Face 選擇 Llama 的 GGUF 模型時，可以先把量化等級理解成「解析度」。解析度越低，所需 VRAM/RAM 越少，但品質也會逐步下降。&lt;/p&gt;
&lt;h2 id=&#34;先理解-3216-與-q-系列&#34;&gt;先理解 32、16 與 Q 系列
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;：可視為原始未壓縮版本，品質最高，但硬體需求非常高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16&lt;/code&gt;：仍接近原始品質，體積約為 &lt;code&gt;32&lt;/code&gt; 的一半，實用性更高。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q8&lt;/code&gt;：從這裡開始是量化版本，常見寫法為 &lt;code&gt;Q8_0&lt;/code&gt; 或 &lt;code&gt;Q8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6&lt;/code&gt;、&lt;code&gt;Q5&lt;/code&gt;、&lt;code&gt;Q4&lt;/code&gt;、&lt;code&gt;Q3&lt;/code&gt;、&lt;code&gt;Q2&lt;/code&gt;：數字越小，資源占用越低，品質損失也越明顯。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;k_m--k_s-是什麼&#34;&gt;&lt;code&gt;K_M&lt;/code&gt; / &lt;code&gt;K_S&lt;/code&gt; 是什麼
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K_M&lt;/code&gt; 與 &lt;code&gt;K_S&lt;/code&gt; 代表混合量化策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大部分權重使用目前量化等級&lt;/li&gt;
&lt;li&gt;部分關鍵區塊保留較高精度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以同等級下，&lt;code&gt;Qx_K_M&lt;/code&gt; 或 &lt;code&gt;Qx_K_S&lt;/code&gt; 通常會比純 &lt;code&gt;Qx&lt;/code&gt; 稍好。&lt;/p&gt;
&lt;h2 id=&#34;實用選型建議&#34;&gt;實用選型建議
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;硬體足夠：優先 &lt;code&gt;Q8&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;記憶體或顯存吃緊：逐步下調到 &lt;code&gt;Q6&lt;/code&gt; / &lt;code&gt;Q5&lt;/code&gt; / &lt;code&gt;Q4&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;建議下限：盡量不要低於 &lt;code&gt;Q4&lt;/code&gt;，可優先 &lt;code&gt;Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; 以下：可見品質下降會更明顯。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;品質梯度高到低&#34;&gt;品質梯度（高到低）
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 在這一點之上，品質是一樣的，但是硬體要求太瘋狂了 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 這是典型的甜蜜點 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ndash; 在這一點之下，品質下降變得可見 &amp;ndash;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q3_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2_K_S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只記一個結論：大多數情況先從 &lt;code&gt;Q8&lt;/code&gt; 或 &lt;code&gt;Q6_K_M&lt;/code&gt; 開始，不夠再降到 &lt;code&gt;Q5&lt;/code&gt; 或 &lt;code&gt;Q4_K_M&lt;/code&gt;，通常更穩妥。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Windows 區域網存取 Ollama API 設定指南</title>
        <link>https://knightli.com/zh-tw/2026/04/11/ollama-api-lan-access-windows/</link>
        <pubDate>Sat, 11 Apr 2026 16:43:52 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/11/ollama-api-lan-access-windows/</guid>
        <description>&lt;p&gt;如果你希望區域網內其他裝置存取本機 Ollama API，可以依照下面步驟設定。&lt;/p&gt;
&lt;h2 id=&#34;設定監聽埠&#34;&gt;設定監聽埠
&lt;/h2&gt;&lt;p&gt;先把 Ollama 監聽位址改為所有網卡：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;OLLAMA_HOST=0.0.0.0:11434&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;開啟防火牆&#34;&gt;開啟防火牆
&lt;/h2&gt;&lt;p&gt;開啟防火牆進階設定後，新增一條輸入規則並放行目標連接埠（例如 &lt;code&gt;8080&lt;/code&gt;）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按下 Win + S，搜尋並開啟「Windows Defender 防火牆」。&lt;/li&gt;
&lt;li&gt;點擊「進階設定」。&lt;/li&gt;
&lt;li&gt;選擇「輸入規則」 -&amp;gt; 「新增規則&amp;hellip;」。&lt;/li&gt;
&lt;li&gt;規則類型選「連接埠」，點擊「下一步」。&lt;/li&gt;
&lt;li&gt;選擇協定（通常是 TCP），在「特定本機連接埠」輸入要開放的連接埠（例如 &lt;code&gt;8080&lt;/code&gt;），點擊「下一步」。&lt;/li&gt;
&lt;li&gt;選擇「允許連線」，點擊「下一步」。&lt;/li&gt;
&lt;li&gt;在「設定檔」中勾選「網域」「私人」「公用」，點擊「下一步」。&lt;/li&gt;
&lt;li&gt;為規則命名（例如 &lt;code&gt;OpenPort8080&lt;/code&gt;），點擊「完成」。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;執行-ollama&#34;&gt;執行 Ollama
&lt;/h2&gt;&lt;p&gt;Ollama run 模型&lt;/p&gt;
&lt;h2 id=&#34;透過-api-存取模型&#34;&gt;透過 API 存取模型
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://192.168.x.xxx:11434/api/generate -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;gemma4&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;这个是什么模型?&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>飛牛 NAS AI 相簿用了哪些模型：人臉、物件與語義搜尋拆解</title>
        <link>https://knightli.com/zh-tw/2026/04/11/fnos-ai-photo-model-stack/</link>
        <pubDate>Sat, 11 Apr 2026 08:27:57 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/11/fnos-ai-photo-model-stack/</guid>
        <description>&lt;p&gt;飛牛 NAS（fnOS）的 AI 相簿通常不是從零自研完整模型，而是把主流開源方案做工程化整合，用於人臉辨識、場景/物件識別與自然語言搜圖。&lt;/p&gt;
&lt;h2 id=&#34;1-人臉辨識insightface&#34;&gt;1) 人臉辨識：InsightFace
&lt;/h2&gt;&lt;p&gt;在人臉能力上，核心通常是 InsightFace。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常見特徵學習方法：ArcFace&lt;/li&gt;
&lt;li&gt;主要用途：人臉偵測、特徵向量提取、人物分群與辨識&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-物件與場景識別yolo-系列&#34;&gt;2) 物件與場景識別：YOLO 系列
&lt;/h2&gt;&lt;p&gt;照片中的物件（例如貓、狗、車、電腦）和部分場景理解，通常由 YOLO 系列承擔（常見為 YOLOv8 或輕量化版本）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;優點：速度與精度平衡好&lt;/li&gt;
&lt;li&gt;適用：NAS 這類算力較有限的邊緣設備&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-語義搜尋clip--chinese-clip&#34;&gt;3) 語義搜尋：CLIP / Chinese-CLIP
&lt;/h2&gt;&lt;p&gt;飛牛相簿支援用自然語言搜圖，例如「草地上的小狗」「戴墨鏡的男人」。&lt;/p&gt;
&lt;p&gt;常見做法是 CLIP：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;圖像與文字映射到同一向量空間&lt;/li&gt;
&lt;li&gt;中文場景通常會搭配 Chinese-CLIP 或同類中文增強模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;可以把飛牛 AI 相簿理解為三層組合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InsightFace 負責人臉&lt;/li&gt;
&lt;li&gt;YOLO 負責物件與場景&lt;/li&gt;
&lt;li&gt;CLIP 負責文字與影像語義對齊&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其主要價值在於工程整合、本地化能力與硬體加速優化，而不是底層模型從零訓練。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 本地調用指南：從一鍵啟動到開發整合</title>
        <link>https://knightli.com/zh-tw/2026/04/10/gemma4-local-runtime-options/</link>
        <pubDate>Fri, 10 Apr 2026 22:54:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/gemma4-local-runtime-options/</guid>
        <description>&lt;p&gt;如果你想在本地調用 Gemma 4，可以依需求從以下四種主流方案中選擇。&lt;/p&gt;
&lt;h2 id=&#34;1-最快上手ollama推薦&#34;&gt;1) 最快上手：Ollama（推薦）
&lt;/h2&gt;&lt;p&gt;這是門檻最低的方式，適合快速測試、日常對話與本地 API 調用。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;特點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支援 Win/Mac/Linux&lt;/li&gt;
&lt;li&gt;自動處理硬體加速&lt;/li&gt;
&lt;li&gt;提供相容 OpenAI 風格的本地 API&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-圖形介面lm-studio--unsloth-studio&#34;&gt;2) 圖形介面：LM Studio / Unsloth Studio
&lt;/h2&gt;&lt;p&gt;如果你偏好桌面 GUI（像 ChatGPT）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LM Studio：可直接搜尋與下載 Hugging Face 上的 Gemma 4 量化模型（如 4-bit、8-bit），並查看資源占用。&lt;/li&gt;
&lt;li&gt;Unsloth Studio：除推理外，也支援低顯存微調；對 6GB-8GB 顯存更友善。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-低配與深度控制llamacpp&#34;&gt;3) 低配與深度控制：llama.cpp
&lt;/h2&gt;&lt;p&gt;適合舊機、純 CPU 場景，或希望細調推理參數的使用者。&lt;/p&gt;
&lt;p&gt;你可以使用 &lt;code&gt;.gguf&lt;/code&gt; 模型檔配合量化版本，在更低硬體門檻下運行 Gemma 4。&lt;/p&gt;
&lt;h2 id=&#34;4-開發者整合transformers--vllm&#34;&gt;4) 開發者整合：Transformers / vLLM
&lt;/h2&gt;&lt;p&gt;如果你要把 Gemma 4 接進自己的應用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformers：適合 Python 專案直接載入模型&lt;/li&gt;
&lt;li&gt;vLLM：適合高效能 GPU 與高吞吐推理服務&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;快速選型&#34;&gt;快速選型
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;需求&lt;/th&gt;
          &lt;th&gt;推薦工具&lt;/th&gt;
          &lt;th&gt;硬體門檻&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;我只想先跑起來&lt;/td&gt;
          &lt;td&gt;Ollama&lt;/td&gt;
          &lt;td&gt;低（自動適配）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我想用圖形介面&lt;/td&gt;
          &lt;td&gt;LM Studio&lt;/td&gt;
          &lt;td&gt;中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;顯存很吃緊（6GB-8GB）&lt;/td&gt;
          &lt;td&gt;Unsloth / llama.cpp&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我要做本地 AI 應用開發&lt;/td&gt;
          &lt;td&gt;Ollama / Transformers / vLLM&lt;/td&gt;
          &lt;td&gt;中到高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;我要做微調訓練&lt;/td&gt;
          &lt;td&gt;Unsloth Studio&lt;/td&gt;
          &lt;td&gt;中到高&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;模型尺寸建議&#34;&gt;模型尺寸建議
&lt;/h2&gt;&lt;p&gt;Gemma 4 有多種尺寸（如 E2B、E4B、31B）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一般筆電建議先用量化後的 E2B / E4B&lt;/li&gt;
&lt;li&gt;顯存充足後再嘗試更大版本&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>該放棄 MCP 嗎？為什麼 CLI 正在成為 Agent 的預設工具層</title>
        <link>https://knightli.com/zh-tw/2026/04/10/mcp-vs-cli-for-agents/</link>
        <pubDate>Fri, 10 Apr 2026 21:55:12 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/mcp-vs-cli-for-agents/</guid>
        <description>&lt;p&gt;過去一年，關於 Agent 工具鏈的爭論越來越集中在一個問題上：&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）是讓工具調用更簡單，還是把原本簡單的事情變複雜？&lt;/p&gt;
&lt;p&gt;在大多數日常開發任務中，CLI 正在成為更實用的預設方案。&lt;/p&gt;
&lt;h2 id=&#34;成本差異不是體驗問題而是數量級問題&#34;&gt;成本差異不是「體驗問題」，而是數量級問題
&lt;/h2&gt;&lt;p&gt;MCP 最大的現實壓力是 token 開銷。&lt;/p&gt;
&lt;p&gt;在常見場景裡，MCP 在真正執行任務前，往往需要先載入大量工具 schema。以 GitHub MCP Server 為例，初始化就可能消耗數萬 tokens。對長任務而言，這會直接擠壓上下文預算。&lt;/p&gt;
&lt;p&gt;社群基準測試也反覆指向同一個結論：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 單次調用成本常見是 CLI 的數倍到數十倍&lt;/li&gt;
&lt;li&gt;失敗重試成本也更高（要重建連線、重新載入上下文）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是「慢一點」的差距，而是會放大成 API 成本、延遲與穩定性問題。&lt;/p&gt;
&lt;h2 id=&#34;為什麼模型天然更會用-cli&#34;&gt;為什麼模型天然更「會用 CLI」
&lt;/h2&gt;&lt;p&gt;一個常被忽略的事實是訓練分布。&lt;/p&gt;
&lt;p&gt;LLM 在訓練中看過海量終端文本：命令、輸出、報錯、腳本、man page。也就是說，CLI 互動模式本來就接近模型的「母語輸入」。&lt;/p&gt;
&lt;p&gt;相對地，MCP 的 JSON-RPC 與 tool schema 是近兩年才大規模出現的新範式。模型當然能學會，但熟悉度與壓縮效率通常仍不如 CLI 這類歷史語料。&lt;/p&gt;
&lt;p&gt;這也解釋了為什麼很多時候：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同樣目標，CLI 指令更短&lt;/li&gt;
&lt;li&gt;輸出更適合直接持續推理&lt;/li&gt;
&lt;li&gt;錯誤恢復路徑更穩定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安全與隔離mcp-還有補課空間&#34;&gt;安全與隔離：MCP 還有補課空間
&lt;/h2&gt;&lt;p&gt;MCP 不是不能做安全，而是生態還在早期。&lt;/p&gt;
&lt;p&gt;當前常見擔憂包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具描述投毒（Tool Poisoning）&lt;/li&gt;
&lt;li&gt;服務行為漂移（Rug Pull）&lt;/li&gt;
&lt;li&gt;同名工具覆蓋（Shadowing）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLI 當然也有安全問題（注入、越權、路徑風險），但它的進程模型、權限邊界、審計鏈路已經過數十年工程實踐驗證。對生產環境而言，這種「可預期性」很重要。&lt;/p&gt;
&lt;h2 id=&#34;這不等於-mcp-沒價值&#34;&gt;這不等於 MCP 沒價值
&lt;/h2&gt;&lt;p&gt;我不認為 MCP 應該被拋棄。&lt;/p&gt;
&lt;p&gt;更合理的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 負責執行層（本地、低延遲、高頻調用）&lt;/li&gt;
&lt;li&gt;MCP 負責連接層（遠端服務發現、統一認證、審計與多租戶）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是常說的混合架構：&lt;code&gt;CLI + MCP Gateway&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在需要對接大量遠端系統、做統一權限治理與合規審計時，MCP 仍然有明顯價值；但在「讓 Agent 快速完成開發任務」這件事上，CLI-first 往往更符合當前模型能力邊界。&lt;/p&gt;
&lt;p&gt;在今天的工程現實裡，CLI 更像 Agent 的工作母語；MCP 更適合作為連接協議，而不是唯一執行協議。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>PersonaPlex 快速上手：可控音色與角色的全雙工語音對話模型</title>
        <link>https://knightli.com/zh-tw/2026/04/10/personaplex-full-duplex-speech-model-guide/</link>
        <pubDate>Fri, 10 Apr 2026 11:34:38 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/personaplex-full-duplex-speech-model-guide/</guid>
        <description>&lt;p&gt;PersonaPlex 是一個即時、全雙工（full-duplex）的語音到語音對話模型，提供兩種關鍵可控能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以文字提示詞控制角色與人設&lt;/li&gt;
&lt;li&gt;以音訊條件控制音色與語音風格&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它基於 Moshi 架構與權重，目標是在低延遲下輸出更自然、且 persona 一致的語音互動。&lt;/p&gt;
&lt;h2 id=&#34;適用場景&#34;&gt;適用場景
&lt;/h2&gt;&lt;p&gt;PersonaPlex 適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;即時語音助理&lt;/li&gt;
&lt;li&gt;客服角色對話&lt;/li&gt;
&lt;li&gt;低延遲語音互動展示&lt;/li&gt;
&lt;li&gt;人設 + 音色控制實驗&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;先備條件&#34;&gt;先備條件
&lt;/h2&gt;&lt;p&gt;先安裝 Opus 音訊編碼開發庫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Ubuntu/Debian&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install libopus-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Fedora/RHEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf install opus-devel
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;安裝與環境設定&#34;&gt;安裝與環境設定
&lt;/h2&gt;&lt;p&gt;安裝倉庫：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install moshi/.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若使用 Blackwell GPU，可額外執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;在 Hugging Face 接受 PersonaPlex 模型授權後，設定 token：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;YOUR_HUGGINGFACE_TOKEN&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;啟動即時服務&#34;&gt;啟動即時服務
&lt;/h2&gt;&lt;p&gt;標準啟動（含暫時 SSL）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SSL_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;mktemp -d&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; python -m moshi.server --ssl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSL_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若顯存不足，可啟用 CPU offload（需安裝 &lt;code&gt;accelerate&lt;/code&gt;）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install accelerate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;SSL_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;mktemp -d&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; python -m moshi.server --ssl &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSL_DIR&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --cpu-offload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;本地通常從 &lt;code&gt;localhost:8998&lt;/code&gt; 存取；遠端部署請使用程式輸出的訪問連結。&lt;/p&gt;
&lt;h2 id=&#34;離線評估&#34;&gt;離線評估
&lt;/h2&gt;&lt;p&gt;離線腳本可輸入 wav，並輸出同長度 wav：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;TOKEN&amp;gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m moshi.offline &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --voice-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;NATF2.pt&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --input-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;assets/test/input_assistant.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --seed &lt;span class=&#34;m&#34;&gt;42424242&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-text &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HF_TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&amp;lt;TOKEN&amp;gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m moshi.offline &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --voice-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;NATM1.pt&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --text-prompt &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;cat assets/test/prompt_service.txt&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --input-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;assets/test/input_service.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --seed &lt;span class=&#34;m&#34;&gt;42424242&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-wav &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.wav&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --output-text &lt;span class=&#34;s2&#34;&gt;&amp;#34;output.json&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;預設音色標籤&#34;&gt;預設音色標籤
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Natural(female): NATF0, NATF1, NATF2, NATF3&lt;/li&gt;
&lt;li&gt;Natural(male): NATM0, NATM1, NATM2, NATM3&lt;/li&gt;
&lt;li&gt;Variety(female): VARF0, VARF1, VARF2, VARF3, VARF4&lt;/li&gt;
&lt;li&gt;Variety(male): VARM0, VARM1, VARM2, VARM3, VARM4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;提示詞建議&#34;&gt;提示詞建議
&lt;/h2&gt;&lt;p&gt;訓練覆蓋主要包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assistant Role&lt;/li&gt;
&lt;li&gt;Customer Service Roles&lt;/li&gt;
&lt;li&gt;Casual Conversations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;實務上建議：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先固定角色資訊，再補充任務上下文&lt;/li&gt;
&lt;li&gt;提示詞保持精簡，降低角色漂移&lt;/li&gt;
&lt;li&gt;固定同一 voice prompt 進行可重現比較&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;PersonaPlex 的價值不在單次回答更聰明，而在即時語音互動中更穩定地維持角色與音色一致性。&lt;/p&gt;
&lt;p&gt;若你正在做全雙工語音 Agent，這個方案值得盡快實測與對比。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic 的 Harness 方向：Agent 基礎設施正走向 Agent OS</title>
        <link>https://knightli.com/zh-tw/2026/04/10/anthropic-harness-agent-os/</link>
        <pubDate>Fri, 10 Apr 2026 09:22:56 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/anthropic-harness-agent-os/</guid>
        <description>&lt;p&gt;Anthropic 最近發佈了一篇關於 Harness 的工程實踐文章。表面上是在講產品實作，本質上回答的是一個更長期的問題：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;當模型能力持續變化時，Agent 系統哪些層要穩定，哪些層應該允許快速替換？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;核心判斷&#34;&gt;核心判斷
&lt;/h2&gt;&lt;p&gt;我對這篇文章的核心理解是：Agent 基礎設施會越來越像一個輕量的 &lt;strong&gt;Agent OS&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;重點不在「把今天的最佳流程寫死」，而在「定義長期穩定的系統抽象」。&lt;/p&gt;
&lt;h2 id=&#34;為什麼這點重要&#34;&gt;為什麼這點重要
&lt;/h2&gt;&lt;p&gt;很多 Agent 框架常見的問題是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把模型的臨時短板固化為永久架構&lt;/li&gt;
&lt;li&gt;把 prompt 工程誤當成系統邊界&lt;/li&gt;
&lt;li&gt;把一次有效的補丁寫成長期依賴&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型會變強，今天合理的補丁，明天可能就是技術債。&lt;/p&gt;
&lt;h2 id=&#34;anthropic-的解法從具體-harness-到-meta-harness&#34;&gt;Anthropic 的解法：從具體 Harness 到 Meta-Harness
&lt;/h2&gt;&lt;p&gt;這套思路不是承諾某一種固定編排方式，而是抽象出三層穩定介面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;session&lt;/code&gt;：可恢復的事件與狀態歷史&lt;/li&gt;
&lt;li&gt;&lt;code&gt;harness&lt;/code&gt;：推理與調度循環（brain）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sandbox&lt;/code&gt;：執行環境與工具能力（hands）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它們分離後，系統更容易替換、恢復和擴展。&lt;/p&gt;
&lt;h2 id=&#34;1-session-不是上下文視窗&#34;&gt;1) Session 不是上下文視窗
&lt;/h2&gt;&lt;p&gt;一個關鍵觀點是：&lt;strong&gt;Session 不等於模型上下文。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Session 應該是可查詢、可回放、可恢復的事件日誌，而不是直接塞給模型的歷史拼接。&lt;/p&gt;
&lt;p&gt;這樣做的價值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trimming 不等於歷史消失&lt;/li&gt;
&lt;li&gt;compaction 不等於事實丟失&lt;/li&gt;
&lt;li&gt;崩潰恢復可以回到事件層，而不是依賴摘要記憶&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-harness-是可替換的編排層&#34;&gt;2) Harness 是可替換的編排層
&lt;/h2&gt;&lt;p&gt;Harness 應專注於調度，而不是持有業務狀態。&lt;/p&gt;
&lt;p&gt;理想介面更接近：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;execute(name, input) -&amp;gt; string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;這代表模型只需要關心「我能調用哪些能力」，而不必強綁具體設備、容器或作業系統。&lt;/p&gt;
&lt;h2 id=&#34;3-sandbox-是手不是腦&#34;&gt;3) Sandbox 是「手」，不是「腦」
&lt;/h2&gt;&lt;p&gt;當 brain 和 hands 解耦後：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具環境可以獨立演進&lt;/li&gt;
&lt;li&gt;不同基礎設施可以並行接入&lt;/li&gt;
&lt;li&gt;不必每個會話都預熱完整執行環境&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這會直接帶來更好的啟動與擴展表現。&lt;/p&gt;
&lt;h2 id=&#34;效能與安全啟發&#34;&gt;效能與安全啟發
&lt;/h2&gt;&lt;p&gt;這種拆分通常會同時改善效能和安全。&lt;/p&gt;
&lt;p&gt;效能上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以先啟動 brain，再按需拉起 hands&lt;/li&gt;
&lt;li&gt;降低首 token 延遲（TTFT）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安全上：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不把高敏憑證直接暴露給模型&lt;/li&gt;
&lt;li&gt;用受控 proxy / vault 做間接憑證訪問&lt;/li&gt;
&lt;li&gt;安全邊界建立在系統約束上，而不是「模型應該做不到」&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;相關連結&#34;&gt;相關連結
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/blog/claude-managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usage patterns and customer examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.anthropic.com/engineering/managed-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The design of Claude Managed Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://platform.claude.com/docs/en/managed-agents/quickstart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Onboarding, quickstart, overview of the CLI and SKDs &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 與 Agent Harness：為什麼它看起來像 AGI</title>
        <link>https://knightli.com/zh-tw/2026/04/10/openclaw-agent-architecture-enterprise-ai/</link>
        <pubDate>Fri, 10 Apr 2026 09:16:17 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/openclaw-agent-architecture-enterprise-ai/</guid>
        <description>&lt;p&gt;很多人第一次接觸 OpenClaw，會覺得它「比聊天機器人更像一個會做事的同事」。&lt;/p&gt;
&lt;p&gt;這種感覺並不神祕。關鍵在於：OpenClaw 不是單一模型能力的躍遷，而是一套完整的 &lt;strong&gt;Agent Harness&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;先給結論&#34;&gt;先給結論
&lt;/h2&gt;&lt;p&gt;OpenClaw 的本質可以概括為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型負責理解與決策&lt;/li&gt;
&lt;li&gt;Harness 負責記憶、工具、觸發、執行與輸出&lt;/li&gt;
&lt;li&gt;兩者透過循環協作，形成「持續行動」的體驗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它「像 AGI」的核心原因，不是模型突然變成全能，而是系統工程把模型的可執行性放大了。&lt;/p&gt;
&lt;h2 id=&#34;什麼是-harness&#34;&gt;什麼是 Harness
&lt;/h2&gt;&lt;p&gt;可以把 Harness 理解為「給模型穿上的外骨骼」。&lt;/p&gt;
&lt;p&gt;單獨的 LLM 通常只能在一次請求裡給出回答，而 Harness 會補齊這些能力：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;會話與狀態管理：把多輪任務串起來&lt;/li&gt;
&lt;li&gt;記憶機制：保存並按需召回上下文&lt;/li&gt;
&lt;li&gt;工具系統：調用瀏覽器、終端、檔案與外部 API&lt;/li&gt;
&lt;li&gt;觸發機制：由定時器或事件喚醒，不必每次都等人提問&lt;/li&gt;
&lt;li&gt;輸出通道：把結果寫回系統，而不只是回一段文字&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;當這些能力被接入同一個循環時，模型就從「回答器」變成「執行器」。&lt;/p&gt;
&lt;h2 id=&#34;openclaw-為什麼顯得不一樣&#34;&gt;OpenClaw 為什麼顯得不一樣
&lt;/h2&gt;&lt;p&gt;傳統聊天機器人是「問一次，答一次」。&lt;/p&gt;
&lt;p&gt;OpenClaw 更像「觀察 -&amp;gt; 調工具 -&amp;gt; 看結果 -&amp;gt; 再決策」的閉環。閉環一旦成立，就會表現出持續推進任務的能力。&lt;/p&gt;
&lt;p&gt;這也是 OpenClaw 最值得學習的地方：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它證明了 Agent 體驗主要來自架構設計&lt;/li&gt;
&lt;li&gt;它把「自治」拆成了可工程化的模組&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;價值與邊界&#34;&gt;價值與邊界
&lt;/h2&gt;&lt;p&gt;OpenClaw 的優勢是通用、靈活，但代價也明顯：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上下文與工具定義越多，成本越高&lt;/li&gt;
&lt;li&gt;系統越通用，調試和治理越複雜&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在生產場景裡，很多團隊會選擇更小、更專的 Agent，而不是一個「全能智慧體」。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>分享一個電商商品圖去背與標準化的 Agent Skill</title>
        <link>https://knightli.com/zh-tw/2026/04/09/product-cutout-normalize-agent-skill-guide/</link>
        <pubDate>Thu, 09 Apr 2026 21:43:50 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/09/product-cutout-normalize-agent-skill-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;product-cutout-normalize&lt;/code&gt; 是一個給商品圖使用的 Agent Skill。&lt;/p&gt;
&lt;p&gt;它會把原圖處理成統一規格的透明底方圖。預設規則是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1024x1024&lt;/code&gt; 畫布&lt;/li&gt;
&lt;li&gt;透明背景&lt;/li&gt;
&lt;li&gt;盡量完整保留主體&lt;/li&gt;
&lt;li&gt;直向主體自動轉成橫向&lt;/li&gt;
&lt;li&gt;主體置中&lt;/li&gt;
&lt;li&gt;主體可視寬度統一到 &lt;code&gt;820px&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;適合電商素材、商品庫和詳情頁圖片預處理。&lt;/p&gt;
&lt;h2 id=&#34;這個-skill-解決什麼問題&#34;&gt;這個 skill 解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多商品圖做完基礎去背後，還是會有這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;白邊或淺灰背景殘留&lt;/li&gt;
&lt;li&gt;主體橫豎方向不一致&lt;/li&gt;
&lt;li&gt;畫布大小不一致&lt;/li&gt;
&lt;li&gt;主體大小忽大忽小&lt;/li&gt;
&lt;li&gt;透明區域裡有小噪點&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個 skill 會按照固定流程處理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Gemini 去背&lt;/li&gt;
&lt;li&gt;清理邊緣淺色背景&lt;/li&gt;
&lt;li&gt;去掉小碎片噪點&lt;/li&gt;
&lt;li&gt;直圖轉橫圖&lt;/li&gt;
&lt;li&gt;按目標寬度縮放&lt;/li&gt;
&lt;li&gt;放到統一尺寸的透明畫布中央&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣輸出的圖片會更整齊，也更適合批次使用。&lt;/p&gt;
&lt;h2 id=&#34;適用場景&#34;&gt;適用場景
&lt;/h2&gt;&lt;p&gt;適合下面這些需求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;批次處理商品照片&lt;/li&gt;
&lt;li&gt;統一輸出透明底 PNG&lt;/li&gt;
&lt;li&gt;統一主視覺尺寸&lt;/li&gt;
&lt;li&gt;需要穩定、可重複的處理流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只處理少量圖片，或每張圖都要單獨調整版面，那它未必適合。&lt;/p&gt;
&lt;h2 id=&#34;快速開始&#34;&gt;快速開始
&lt;/h2&gt;&lt;p&gt;最直接的執行方式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行前需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google-genai&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pillow&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.\.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;venv&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Scripts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;python&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;exe&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-m&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;google-genai&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pillow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;設定環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env:GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your_api_key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;輸出規則&#34;&gt;輸出規則
&lt;/h2&gt;&lt;p&gt;預設輸出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;透明背景 &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1024x1024&lt;/code&gt; 畫布&lt;/li&gt;
&lt;li&gt;主體寬度 &lt;code&gt;820px&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;主體置中&lt;/li&gt;
&lt;li&gt;小噪點會被清理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它不只是去背腳本，更像是一個商品圖整理腳本。&lt;/p&gt;
&lt;h2 id=&#34;主要參數說明&#34;&gt;主要參數說明
&lt;/h2&gt;&lt;p&gt;常用參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--model&lt;/code&gt;
預設 &lt;code&gt;gemini-2.5-flash-image&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--canvas-size&lt;/code&gt;
輸出方形畫布尺寸，預設 &lt;code&gt;1024&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--target-width&lt;/code&gt;
主體可視寬度，預設 &lt;code&gt;820&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--min-component-pixels&lt;/code&gt;
小於這個像素數的透明碎片會被移除，預設 &lt;code&gt;500&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--overwrite&lt;/code&gt;
輸出檔案已存在時直接覆蓋&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\input&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\output&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-canvas-size&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;1280&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-target-width&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;960&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;處理流程&#34;&gt;處理流程
&lt;/h2&gt;&lt;p&gt;處理流程很簡單：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用 Gemini 去背&lt;/li&gt;
&lt;li&gt;清理邊緣淺色背景&lt;/li&gt;
&lt;li&gt;去掉小碎片噪點&lt;/li&gt;
&lt;li&gt;直圖轉橫圖&lt;/li&gt;
&lt;li&gt;按目標寬度縮放&lt;/li&gt;
&lt;li&gt;放到統一尺寸的透明畫布中央&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;和一般去背腳本的差別&#34;&gt;和一般去背腳本的差別
&lt;/h2&gt;&lt;p&gt;和一般去背腳本相比，它還會額外處理這些問題：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主體方向統一&lt;/li&gt;
&lt;li&gt;主體尺寸統一&lt;/li&gt;
&lt;li&gt;畫布尺寸統一&lt;/li&gt;
&lt;li&gt;小碎片噪點清理&lt;/li&gt;
&lt;li&gt;結果更適合直接放進素材庫&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skillmd-原始碼&#34;&gt;SKILL.md 原始碼
&lt;/h2&gt;&lt;p&gt;下面保留 &lt;code&gt;SKILL.md&lt;/code&gt; 的完整原始碼，內容不做改動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: product-cutout-normalize
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: Run a reusable Gemini product-image pipeline that removes backgrounds, preserves the full subject, rotates tall products to a horizontal orientation, centers them on a 1024x1024 transparent canvas, and normalizes the visible subject width to 820px. Use when the user wants a repeatable cutout-and-normalize workflow for product photos or asks to batch-process product images into standardized square PNG assets.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# Product Cutout Normalize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Use this skill when product photos need the same deterministic finishing pipeline:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Gemini cutout from the original photo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; border cleanup to transparent
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; preserve the full subject
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; rotate to horizontal when the subject is taller than it is wide
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; center on a &lt;span class=&#34;sb&#34;&gt;`1024x1024`&lt;/span&gt; transparent canvas
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; normalize the visible subject width to &lt;span class=&#34;sb&#34;&gt;`820px`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Quick Start
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Run the bundled script:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\.venv\Scripts\python.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.codex\skills\product-cutout-normalize\scripts\run_pipeline.py&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-overwrite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Required environment:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`GEMINI_API_KEY`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`google-genai`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`Pillow`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Workflow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; Confirm the request matches this standard pipeline. If the user asks for a different canvas size, subject width, or layout rule, pass explicit flags instead of changing the script.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; Run the bundled script on the input directory.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; If a result looks misaligned, inspect the alpha bounding box and small detached artifacts first; this pipeline already removes tiny alpha components by default.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; Report the exact input and output directories used, plus any non-default flags.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Script
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Primary entry point:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`scripts/run_pipeline.py`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Key flags:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--model`&lt;/span&gt;: Gemini image model, default &lt;span class=&#34;sb&#34;&gt;`gemini-2.5-flash-image`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--canvas-size`&lt;/span&gt;: output square size, default &lt;span class=&#34;sb&#34;&gt;`1024`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--target-width`&lt;/span&gt;: visible subject width after normalization, default &lt;span class=&#34;sb&#34;&gt;`820`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--min-component-pixels`&lt;/span&gt;: remove detached alpha specks smaller than this, default &lt;span class=&#34;sb&#34;&gt;`500`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`--overwrite`&lt;/span&gt;: replace existing outputs in the destination directory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Repo Integration
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If the current project already has [&lt;span class=&#34;nt&#34;&gt;`scripts/nano_banana_cutout.py`&lt;/span&gt;](&lt;span class=&#34;na&#34;&gt;/c:/Work/my_shop/scripts/nano_banana_cutout.py&lt;/span&gt;), prefer that repo script when the user wants the same pipeline inside this repository. Use the bundled skill script when the task is cross-project reuse or when you want the workflow to stay self-contained inside the skill.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;scriptsrun_pipelinepy-原始碼&#34;&gt;scripts/run_pipeline.py 原始碼
&lt;/h2&gt;&lt;p&gt;下面保留 &lt;code&gt;scripts/run_pipeline.py&lt;/code&gt; 的完整原始碼，內容不做改動：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;151
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;152
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;153
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;154
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;155
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;156
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;157
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;158
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;159
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;160
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;161
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;162
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;163
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;164
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;165
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;166
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;167
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;168
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;169
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;170
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;171
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;172
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;173
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;174
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;175
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;176
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;177
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;178
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;179
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;180
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;181
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;182
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;183
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;184
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;185
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;186
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;187
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;188
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;189
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;190
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;191
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;192
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;193
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;194
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;195
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;196
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;197
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;198
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;199
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;200
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;201
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;202
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;203
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;204
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;205
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;206
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;207
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;208
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;209
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;210
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;211
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;212
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;213
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;214
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;215
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;216
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;217
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;218
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;219
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;220
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;221
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;222
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;223
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;224
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;225
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;226
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;227
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;228
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;229
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;230
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;231
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;232
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;233
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;234
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;235
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;236
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;237
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;238
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;239
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;240
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;241
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;242
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;243
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;244
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;245
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;246
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;247
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;248
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;249
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;250
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;251
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;252
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;253
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;254
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;255
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;256
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;257
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;258
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;259
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;260
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;261
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;262
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;263
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;264
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;265
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;266
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;267
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;268
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;269
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;270
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;271
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;272
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;273
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;274
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;275
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;276
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;277
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;278
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;279
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;280
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;281
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;282
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;283
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;284
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;285
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;286
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;287
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;288
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;289
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;290
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;291
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;__future__&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ImportError&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# pragma: no cover&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing dependency: google-genai. Install it with &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;.\.venv\Scripts\python.exe -m pip install google-genai&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;exc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Remove the entire background from this product photo and return only the product &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;on a fully transparent background as a PNG. Keep the full product intact, preserve &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;thin cable details, clean the inner loops and holes, and do not add any new objects &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;or shadows.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_CANVAS_SIZE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_TARGET_WIDTH&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;820&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_MIN_COMPONENT_PIXELS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;500&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;SUPPORTED_EXTENSIONS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpeg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.webp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported image object type: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;!r}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;remove_small_components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;alpha&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cy&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alpha_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;component&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;rgba_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;py&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;normalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getbbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;crop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rotate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;90&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expand&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;resample&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Resampling&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BICUBIC&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getchannel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;getbbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;crop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rotated_bbox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;round&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Resampling&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LANCZOS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;offset_x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;offset_y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;//&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;alpha_composite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;subject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;offset_x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;offset_y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;transparent&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;remove_small_components&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transparent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;normalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cleaned&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;parts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;candidates&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;candidates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned no content parts.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hasattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;as_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;finalize_product_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with_suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unlink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;missing_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned text only and no edited image.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Namespace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Cut out product images with Gemini and normalize them to square transparent PNGs.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-2.5-flash-image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--canvas-size&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_CANVAS_SIZE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--target-width&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_TARGET_WIDTH&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--min-component-pixels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DEFAULT_MIN_COMPONENT_PIXELS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--overwrite&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing GEMINI_API_KEY environment variable.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Input directory does not exist: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--canvas-size must be positive.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--target-width must be positive and no larger than --canvas-size.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--min-component-pixels must be &amp;gt;= 0.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iterdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SUPPORTED_EXTENSIONS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;exists&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;overwrite&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;skip &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;canvas_size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;target_width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;min_component_pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;下載附件：&lt;a class=&#34;link&#34; href=&#34;product-cutout-normalize.7z&#34; &gt;product-cutout-normalize.7z&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>如何呼叫 Google Nano Banana 做圖片去背</title>
        <link>https://knightli.com/zh-tw/2026/04/09/google-nano-banana-cutout-guide/</link>
        <pubDate>Thu, 09 Apr 2026 20:10:48 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/09/google-nano-banana-cutout-guide/</guid>
        <description>&lt;p&gt;這篇文章用一段實際可執行的 Python 腳本，示範如何呼叫 Google 的 &lt;code&gt;Nano Banana&lt;/code&gt; 圖像編輯能力來做商品圖去背。&lt;/p&gt;
&lt;p&gt;目前這份實作的目標很明確：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀取一個目錄中的商品圖片&lt;/li&gt;
&lt;li&gt;呼叫 Google 圖像模型執行背景移除&lt;/li&gt;
&lt;li&gt;對回傳圖片再做一次本地透明背景清理&lt;/li&gt;
&lt;li&gt;最終輸出為透明底 &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你手上已經有一批白底商品圖、耳機圖、線材圖，想快速生成可用於電商的透明背景圖片，這種方式會很直接。&lt;/p&gt;
&lt;h2 id=&#34;這段程式碼做了什麼&#34;&gt;這段程式碼做了什麼
&lt;/h2&gt;&lt;p&gt;這份腳本主要分成 4 個部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定義提示詞，讓模型知道要執行「去背景、保留主體、不要加陰影」&lt;/li&gt;
&lt;li&gt;呼叫 &lt;code&gt;google-genai&lt;/code&gt; 的圖像生成介面&lt;/li&gt;
&lt;li&gt;從模型回應中提取圖片結果&lt;/li&gt;
&lt;li&gt;再用本地邏輯把邊緣淺色背景轉成透明，減少殘邊&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;也就是說，它不是單純把圖片丟給模型就結束，而是把「模型編輯 + 本地後處理」串起來了。&lt;/p&gt;
&lt;h2 id=&#34;執行前準備&#34;&gt;執行前準備
&lt;/h2&gt;&lt;p&gt;先安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe -m pip install google-genai pillow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何取得-gemini_api_key&#34;&gt;如何取得 GEMINI_API_KEY
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; 就是呼叫 Gemini API 時使用的金鑰。根據 Google 官方 quickstart，如果你還沒有 key，可以直接在 Google AI Studio 建立。&lt;/p&gt;
&lt;p&gt;取得步驟如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打開 Google AI Studio。&lt;/li&gt;
&lt;li&gt;登入你的 Google 帳號。&lt;/li&gt;
&lt;li&gt;找到 &lt;code&gt;Get API key&lt;/code&gt; 或 &lt;code&gt;API keys&lt;/code&gt; 頁面。&lt;/li&gt;
&lt;li&gt;建立一個新的 API key。&lt;/li&gt;
&lt;li&gt;複製產生出來的 key。&lt;/li&gt;
&lt;li&gt;把它設定到本地環境變數中，供腳本讀取。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果頁面中還沒有可用專案，通常需要先完成專案初始化，之後再回到 API Key 頁面建立金鑰。&lt;/p&gt;
&lt;p&gt;拿到 key 之後，再設定環境變數：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$env&lt;/span&gt;:GEMINI_API_KEY&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;your_api_key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你用的是 &lt;code&gt;cmd&lt;/code&gt;，可以寫成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你同時設定了 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; 和 &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;，實際執行時通常會優先讀取 &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;，所以建議只保留一個，避免混淆。&lt;/p&gt;
&lt;h2 id=&#34;目錄結構範例&#34;&gt;目錄結構範例
&lt;/h2&gt;&lt;p&gt;腳本接收兩個參數：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;input_dir&lt;/code&gt;：輸入圖片目錄&lt;/li&gt;
&lt;li&gt;&lt;code&gt;output_dir&lt;/code&gt;：輸出圖片目錄&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;images/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  product1.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  product2.png
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;output/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何執行&#34;&gt;如何執行
&lt;/h2&gt;&lt;p&gt;假設腳本檔名是 &lt;code&gt;cutout.py&lt;/code&gt;，執行方式如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe .&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;utout.py .&lt;span class=&#34;se&#34;&gt;\i&lt;/span&gt;mages .&lt;span class=&#34;se&#34;&gt;\o&lt;/span&gt;utput
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你想換模型，也可以明確傳參：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.&lt;span class=&#34;se&#34;&gt;\.&lt;/span&gt;venv&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;cripts&lt;span class=&#34;se&#34;&gt;\p&lt;/span&gt;ython.exe .&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;utout.py .&lt;span class=&#34;se&#34;&gt;\i&lt;/span&gt;mages .&lt;span class=&#34;se&#34;&gt;\o&lt;/span&gt;utput --model gemini-2.5-flash-image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;腳本會遍歷輸入目錄中的這些格式檔案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.jpeg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.webp&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;處理完成後，會在輸出目錄中生成同名的透明底 &lt;code&gt;PNG&lt;/code&gt; 檔案。&lt;/p&gt;
&lt;h2 id=&#34;核心呼叫流程&#34;&gt;核心呼叫流程
&lt;/h2&gt;&lt;p&gt;真正呼叫 Google Nano Banana 的關鍵程式碼在這裡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這裡傳入了兩個內容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一段文字提示詞 &lt;code&gt;PROMPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;一張 &lt;code&gt;PIL.Image&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;提示詞內容是讓模型把整張商品圖背景移除，只保留主體，並強調幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留完整商品&lt;/li&gt;
&lt;li&gt;保留細線和線纜細節&lt;/li&gt;
&lt;li&gt;清理內部空洞和環形區域&lt;/li&gt;
&lt;li&gt;不要新增物體&lt;/li&gt;
&lt;li&gt;不要添加陰影&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類提示詞對去背品質影響很大，尤其是耳機線、透明邊緣、空洞區域這類細節。&lt;/p&gt;
&lt;h2 id=&#34;為什麼還要做一次本地後處理&#34;&gt;為什麼還要做一次本地後處理
&lt;/h2&gt;&lt;p&gt;模型回傳結果後，腳本沒有直接儲存，而是又執行了 &lt;code&gt;make_transparent_from_borders(image)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這一步的思路是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;從圖片四周邊界開始找淺色背景像素&lt;/li&gt;
&lt;li&gt;用廣度優先搜尋把連通的淺色區域全部標記出來&lt;/li&gt;
&lt;li&gt;最後把這些區域統一改成透明&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做的好處是可以進一步清掉一些殘留白邊、淺灰背景和不夠乾淨的邊緣區域。&lt;/p&gt;
&lt;p&gt;判斷「是不是背景」的條件在這裡：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;簡單理解就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;顏色整體夠亮&lt;/li&gt;
&lt;li&gt;RGB 三通道差異不能太大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這比較適合處理白底、淺灰底、接近純色的商品圖背景。&lt;/p&gt;
&lt;h2 id=&#34;完整原始碼&#34;&gt;完整原始碼
&lt;/h2&gt;&lt;p&gt;下面保留目前這份完整原始碼，方便你直接重用或二次修改：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;140
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;141
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;142
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;143
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;144
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;145
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;146
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;147
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;148
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;149
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;150
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;__future__&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;annotations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;argparse&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;pathlib&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;collections&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;PIL&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;google&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;except&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;ImportError&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# pragma: no cover&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing dependency: google-genai. Install it with &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;sa&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#39;.\.venv\Scripts\python.exe -m pip install google-genai&amp;#39;.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;exc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;Remove the entire background from this product photo and return only the product &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;on a fully transparent background as a PNG. Keep the full product intact, preserve &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;thin cable details, clean the inner loops and holes, and do not add any new objects &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s2&#34;&gt;&amp;#34;or shadows.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;brightness&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;170&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;spread&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;35&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pil_image&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;pil_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as_pil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;TypeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Unsupported image object type: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image_obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;!r}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;tuple&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;deque&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is_light_background_pixel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;queue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;popleft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;push_if_bg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;nx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ny&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;visited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;pixels&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rgba&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;parts&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;candidates&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;candidates&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned no content parts.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;isinstance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;dict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;inline_data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;hasattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;as_image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to_pil_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;as_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mime_type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;getattr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inline_data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mime_type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;mkdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exist_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;write&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;make_transparent_from_borders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;processed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;save&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;with_suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unlink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;missing_ok&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;RuntimeError&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Model returned text only and no edited image.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;RGBA&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;generate_content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;contents&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PROMPT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;save_first_image_part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;argparse&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArgumentParser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Use Nano Banana / Gemini image editing to cut out product images.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;add_argument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--model&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gemini-2.5-flash-image&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;parser&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse_args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;GEMINI_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;raise&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;SystemExit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Missing GEMINI_API_KEY environment variable.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;genai&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;api_key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;exts&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.jpeg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.png&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.webp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sorted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;input_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iterdir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;is_file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;output_dir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;sa&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stem&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.png&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;process_image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dst&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;適合繼續優化的地方&#34;&gt;適合繼續優化的地方
&lt;/h2&gt;&lt;p&gt;如果你準備把這段腳本繼續用於批次生產，後面還可以補這些能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;增加失敗重試，避免單張圖片報錯後整批中斷&lt;/li&gt;
&lt;li&gt;記錄日誌，方便定位是哪張圖處理失敗&lt;/li&gt;
&lt;li&gt;把不同背景閾值做成可配置化&lt;/li&gt;
&lt;li&gt;支援遞迴掃描子目錄&lt;/li&gt;
&lt;li&gt;增加原圖與結果圖的對比預覽&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;如果你只想快速理解「怎麼呼叫 Google Nano Banana 做去背」，其實核心就三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安裝 &lt;code&gt;google-genai&lt;/code&gt; 和 &lt;code&gt;Pillow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;設定 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;client.models.generate_content()&lt;/code&gt; 傳入提示詞和圖片&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;而這份程式碼的價值在於，它不只是呼叫模型，還補上了透明背景後處理，更適合直接拿去做商品圖去背任務。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ollama 雲模型是什麼，怎麼用</title>
        <link>https://knightli.com/zh-tw/2026/04/09/ollama-cloud-models-guide/</link>
        <pubDate>Thu, 09 Apr 2026 18:42:32 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/09/ollama-cloud-models-guide/</guid>
        <description>&lt;p&gt;如果你平時用 &lt;code&gt;Ollama&lt;/code&gt; 跑本地模型，應該很容易理解雲模型。&lt;/p&gt;
&lt;p&gt;區別只有一個核心點：&lt;br&gt;
本地模型是在你的電腦上推理，雲模型是在 Ollama 的雲端推理，再把結果回傳給你。&lt;/p&gt;
&lt;h2 id=&#34;雲模型是什麼&#34;&gt;雲模型是什麼
&lt;/h2&gt;&lt;p&gt;Ollama 雲模型保留了 Ollama 的呼叫方式，但把計算位置從本地換到了雲端。&lt;/p&gt;
&lt;p&gt;這樣做的好處是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地硬體壓力更小&lt;/li&gt;
&lt;li&gt;更容易使用本地機器跑不動的大模型&lt;/li&gt;
&lt;li&gt;仍然可以沿用熟悉的 Ollama 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;和本地模型的區別&#34;&gt;和本地模型的區別
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;對比項&lt;/th&gt;
          &lt;th&gt;本地模型&lt;/th&gt;
          &lt;th&gt;雲模型&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;運行位置&lt;/td&gt;
          &lt;td&gt;本機&lt;/td&gt;
          &lt;td&gt;雲端&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;硬體要求&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;延遲&lt;/td&gt;
          &lt;td&gt;更低&lt;/td&gt;
          &lt;td&gt;受網路影響&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;隱私性&lt;/td&gt;
          &lt;td&gt;更強&lt;/td&gt;
          &lt;td&gt;請求會發送到雲端&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你更在意隱私、低延遲和離線使用，本地模型更適合。&lt;br&gt;
如果你本地硬體不夠，但又想體驗更大的模型，雲模型更方便。&lt;/p&gt;
&lt;h2 id=&#34;怎麼識別雲模型&#34;&gt;怎麼識別雲模型
&lt;/h2&gt;&lt;p&gt;目前 Ollama 的雲模型一般會帶 &lt;code&gt;-cloud&lt;/code&gt; 後綴，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gpt-oss:120b-cloud
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;可用模型列表可能會變化，實際以 Ollama 官方頁面為準。&lt;/p&gt;
&lt;h2 id=&#34;怎麼用&#34;&gt;怎麼用
&lt;/h2&gt;&lt;p&gt;先登入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama signin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;登入完成後，直接運行雲模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gpt-oss:120b-cloud
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你是在程式裡呼叫，也可以配置 API Key：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;OLLAMA_API_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;your_api_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Python 示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;ollama&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://ollama.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;headers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Bearer &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;environ&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_API_KEY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;為什麼天空是藍色的？&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;part&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;chat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;gpt-oss:120b-cloud&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stream&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;][&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;end&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;flush&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Ollama 雲模型可以理解成一句話：&lt;/p&gt;
&lt;p&gt;命令基本沒變，只是模型不在你本地跑了。&lt;/p&gt;
&lt;p&gt;如果你的電腦帶不動大模型，但你又想繼續用 Ollama 的方式呼叫模型，雲模型就是一個很直接的方案。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>從 Hugging Face 下載 GGUF 模型並匯入 Ollama</title>
        <link>https://knightli.com/zh-tw/2026/04/09/import-huggingface-gguf-into-ollama/</link>
        <pubDate>Thu, 09 Apr 2026 11:00:07 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/09/import-huggingface-gguf-into-ollama/</guid>
        <description>&lt;p&gt;如果某個模型在 Ollama 官方庫裡沒有現成版本，或你想使用 Hugging Face 上的特定 &lt;code&gt;GGUF&lt;/code&gt; 檔案，就可以先手動下載，再匯入到 Ollama。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步從-hugging-face-下載-gguf-檔案&#34;&gt;第 1 步：從 Hugging Face 下載 GGUF 檔案
&lt;/h2&gt;&lt;p&gt;先到 Hugging Face 找到目標模型對應的 &lt;code&gt;GGUF&lt;/code&gt; 檔案。通常你會看到多個量化版本，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要選哪個版本，取決於你的 VRAM、RAM，以及你對速度與品質的取捨。下載後請把 &lt;code&gt;.gguf&lt;/code&gt; 檔案放在固定目錄，後續才能在 &lt;code&gt;Modelfile&lt;/code&gt; 中直接引用。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步撰寫-modelfile&#34;&gt;第 2 步：撰寫 Modelfile
&lt;/h2&gt;&lt;p&gt;在模型檔案所在目錄建立一個 &lt;code&gt;Modelfile&lt;/code&gt;。最基本的寫法如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FROM ./model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果檔名不同，請改成實際檔名，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FROM ./gemma-3-12b-it-q4_k_m.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只是先讓模型跑起來，通常這一行 &lt;code&gt;FROM&lt;/code&gt; 就夠了。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步匯入到-ollama&#34;&gt;第 3 步：匯入到 Ollama
&lt;/h2&gt;&lt;p&gt;接著執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama create myModelName -f Modelfile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myModelName&lt;/code&gt; 是你想在 Ollama 內使用的本地模型名稱&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f Modelfile&lt;/code&gt; 表示用這個設定檔建立模型&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建立成功後，這個 GGUF 檔案就會成為可直接呼叫的本地模型。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步執行模型&#34;&gt;第 4 步：執行模型
&lt;/h2&gt;&lt;p&gt;建立完成後直接執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run myModelName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;之後它的使用方式就和用 &lt;code&gt;ollama pull&lt;/code&gt; 拉下來的模型差不多。&lt;/p&gt;
&lt;h2 id=&#34;如何查看現有模型的-modelfile&#34;&gt;如何查看現有模型的 Modelfile
&lt;/h2&gt;&lt;p&gt;如果你不確定 &lt;code&gt;Modelfile&lt;/code&gt; 要怎麼寫，可以直接查看現有模型的設定：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama show --modelfile llama3.2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這個命令會輸出 &lt;code&gt;llama3.2&lt;/code&gt; 的 &lt;code&gt;Modelfile&lt;/code&gt;，很適合作為參考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt; 該怎麼寫&lt;/li&gt;
&lt;li&gt;模板與 system prompt 如何組織&lt;/li&gt;
&lt;li&gt;參數如何宣告&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;什麼時候適合用這條路線&#34;&gt;什麼時候適合用這條路線
&lt;/h2&gt;&lt;p&gt;以下情境很適合用 Hugging Face 手動匯入流程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama 官方庫裡還沒有你要的模型&lt;/li&gt;
&lt;li&gt;你想使用特定的量化版本&lt;/li&gt;
&lt;li&gt;你已經手動下載好 &lt;code&gt;GGUF&lt;/code&gt; 檔案&lt;/li&gt;
&lt;li&gt;你希望更細緻地控制模型封裝方式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果 Ollama 官方庫已經有現成版本，直接 &lt;code&gt;pull&lt;/code&gt; 通常更省事；但當你需要特定量化或自訂封裝時，&lt;code&gt;GGUF + Modelfile&lt;/code&gt; 會更有彈性。&lt;/p&gt;
&lt;h2 id=&#34;常見注意事項&#34;&gt;常見注意事項
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt; 後面的路徑必須和實際 &lt;code&gt;.gguf&lt;/code&gt; 檔案位置一致。&lt;/li&gt;
&lt;li&gt;如果檔名包含空格或特殊字元，建議先改成較簡單的名稱。&lt;/li&gt;
&lt;li&gt;不同 &lt;code&gt;GGUF&lt;/code&gt; 量化版本對記憶體與速度影響很大，匯入成功不代表執行一定順暢。&lt;/li&gt;
&lt;li&gt;若模型是聊天模型，後續通常仍需依其格式調整 prompt 模板，效果才會更穩定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;從 Hugging Face 下載 &lt;code&gt;GGUF&lt;/code&gt; 檔案再匯入 Ollama 並不複雜。準備好模型檔案、寫一個最小可用的 &lt;code&gt;Modelfile&lt;/code&gt;，再執行 &lt;code&gt;ollama create&lt;/code&gt;，就能把第三方 &lt;code&gt;GGUF&lt;/code&gt; 模型接入 Ollama 工作流。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ollama 下載模型 pull 速度很慢的排查與解決辦法</title>
        <link>https://knightli.com/zh-tw/2026/04/09/ollama-download-slow-troubleshooting/</link>
        <pubDate>Thu, 09 Apr 2026 10:42:39 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/09/ollama-download-slow-troubleshooting/</guid>
        <description>&lt;p&gt;&lt;code&gt;ollama pull model_name:tag&lt;/code&gt; 在有些地區下載速度會很慢，而且過程並不穩定。&lt;/p&gt;
&lt;p&gt;如果你遇到的是大模型下載到一半反覆中斷、報錯 &lt;code&gt;TLS handshake timeout&lt;/code&gt; 或 &lt;code&gt;unexpected EOF&lt;/code&gt;，那麼問題很可能不只是 &lt;code&gt;registry.ollama.ai&lt;/code&gt; 本身，而是後續跳轉到的實際下載鏈路。&lt;/p&gt;
&lt;p&gt;這篇文章記錄一次簡單直接的排查思路：先拿到模型檔案的真實下載地址，再確認最終流量落到哪裡，最後只針對關鍵網域做網路優化。&lt;/p&gt;
&lt;h2 id=&#34;取得模型檔案的下載地址&#34;&gt;取得模型檔案的下載地址
&lt;/h2&gt;&lt;p&gt;可以借助下面這個專案，把 Ollama 模型對應的 manifest 與 blob 下載地址直接提取出來：&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Gholamrezadar/ollama-direct-downloader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Gholamrezadar/ollama-direct-downloader&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以 &lt;code&gt;gemma4:latest&lt;/code&gt; 為例，可以提取出類似下面這些連結。&lt;/p&gt;
&lt;h3 id=&#34;manifest-位址&#34;&gt;Manifest 位址
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/manifests/latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;blob-位址&#34;&gt;Blob 位址
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:56380ca2ab89f1f68c283f4d50863c0bcab52ae3f1b9a88e4ab5617b176f71a3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你只是想快速驗證，也可以直接用 &lt;code&gt;curl&lt;/code&gt; 下載 manifest 與 blob：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/manifests/latest&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;latest&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-f0988ff50a2458c598ff6b1b87b94d0f5c44d73061c2795391878b00b2285e11&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -L &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2&amp;#34;&lt;/span&gt; -o &lt;span class=&#34;s2&#34;&gt;&amp;#34;sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;跳轉後的真實下載地址&#34;&gt;跳轉後的真實下載地址
&lt;/h2&gt;&lt;p&gt;嘗試用 &lt;code&gt;wget&lt;/code&gt; 下載其中一個 blob，會發現請求並不是一直停留在 &lt;code&gt;registry.ollama.ai&lt;/code&gt;，而是會繼續跳轉到一個 &lt;code&gt;Cloudflare R2&lt;/code&gt; 物件儲存地址：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;從日誌裡可以看到幾個關鍵資訊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registry.ollama.ai&lt;/code&gt; 回傳了 &lt;code&gt;307 Temporary Redirect&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;最終下載地址落在 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;真正承載大檔案傳輸的，實際上是後面的物件儲存網域&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這一步很重要，因為它說明如果你的代理或分流規則只覆蓋了 &lt;code&gt;registry.ollama.ai&lt;/code&gt;，但沒有處理 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;，那下載仍然可能很慢，甚至反覆中斷。&lt;/p&gt;
&lt;p&gt;下面是一次實際抓到的跳轉日誌：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--2026-04-09 09:22:04--  https://registry.ollama.ai/v2/library/gemma4/blobs/sha256:4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resolving registry.ollama.ai (registry.ollama.ai)... 104.21.75.227, 172.67.182.229, 2606:4700:3034::ac43:b6e5, ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connecting to registry.ollama.ai (registry.ollama.ai)|104.21.75.227|:443... connected.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP request sent, awaiting response... 307 Temporary Redirect
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Location: https://dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/4c/4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a/data?... [following]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--2026-04-09 09:22:05--  https://dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com/ollama/docker/registry/v2/blobs/sha256/4c/4c27e0f5b5adf02ac956c7322bd2ee7636fe3f45a8512c9aba5385242cb6e09a/data?...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Resolving dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com (dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com)... 172.64.66.1, 2606:4700:2ff9::1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connecting to dd20bb891979d25aebc8bec07b2b3bbc.r2.cloudflarestorage.com|172.64.66.1|:443... connected.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HTTP request sent, awaiting response... 200 OK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Length: 9608338848 (8.9G) [application/octet-stream]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;調整網路設定&#34;&gt;調整網路設定
&lt;/h2&gt;&lt;p&gt;確認真實下載鏈路之後，排查方向就會清晰很多。&lt;/p&gt;
&lt;p&gt;如果你正在使用代理、分流或自訂 DNS，建議優先檢查下面幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registry.ollama.ai&lt;/code&gt; 與 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt; 是否走了同一條穩定線路&lt;/li&gt;
&lt;li&gt;代理規則是否只覆蓋了前者，而漏掉了後者&lt;/li&gt;
&lt;li&gt;目前出口是否適合持續下載數 GB 到數十 GB 的大檔案&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這類問題的關鍵並不是「能不能打開官網」，而是「跳轉後的物件儲存鏈路是否穩定、是否能長時間持續傳輸」。很多時候，真正需要優化的是 &lt;code&gt;Cloudflare R2&lt;/code&gt; 這一層，而不是前面的 registry 網域。&lt;/p&gt;
&lt;h2 id=&#34;調整前後的對比&#34;&gt;調整前後的對比
&lt;/h2&gt;&lt;p&gt;下面是一次實際下載 &lt;code&gt;gemma4:31b-it-q8_0&lt;/code&gt; 時的表現。&lt;/p&gt;
&lt;p&gt;調整前，下載速度較慢，而且會在中途報錯：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS C:\Users\knightli&amp;gt; ollama run gemma4:31b-it-q8_0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling manifest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling a0feadb736f5:  38% ▕██████████████████████                                    ▏  12 GB/ 33 GB  1.2 MB/s   4h40m
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error: max retries exceeded: unexpected EOF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;調整後，再次下載同一個模型時，速度和穩定性都有明顯改善：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PS C:\Users\knightli&amp;gt; ollama run gemma4:31b-it-q8_0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling manifest
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pulling a0feadb736f5:  46% ▕████████████████████████████████████████████████████████████████▏ 15 GB/ 33 GB  8.5 MB/s  35m23s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這並不代表所有網路環境都能得到同樣結果，但至少說明了一點：瓶頸很可能不在 Ollama 用戶端本身，而在實際的大檔案下載鏈路。&lt;/p&gt;
&lt;h2 id=&#34;一個更實用的排查順序&#34;&gt;一個更實用的排查順序
&lt;/h2&gt;&lt;p&gt;如果你也遇到類似問題，可以按這個順序來：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先執行一次 &lt;code&gt;ollama pull&lt;/code&gt; 或 &lt;code&gt;ollama run&lt;/code&gt;，確認問題是否穩定重現。&lt;/li&gt;
&lt;li&gt;再用 &lt;code&gt;wget&lt;/code&gt; 或 &lt;code&gt;curl -L&lt;/code&gt; 測一個 blob 位址，確認是否跳轉到 &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;最後只針對真實下載網域調整代理或分流，再重新測試速度和穩定性。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣做的好處是，每一步都在驗證一個明確假設，不需要盲目試錯。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ollama pull&lt;/code&gt; 下載慢，很多時候並不是因為 &lt;code&gt;registry.ollama.ai&lt;/code&gt; 無法存取，而是因為真正承載大檔案下載的 &lt;code&gt;Cloudflare R2&lt;/code&gt; 鏈路不夠穩定。&lt;/p&gt;
&lt;p&gt;所以更有效的做法不是反覆重試，而是先把真實下載鏈路找出來，再針對實際流量落點做優化。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>樹莓派 5 跑 Gemma 4 實測：可行，但回應較慢</title>
        <link>https://knightli.com/zh-tw/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</link>
        <pubDate>Wed, 08 Apr 2026 18:42:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</guid>
        <description>&lt;p&gt;我做了一次偏極限的嘗試：在 &lt;code&gt;Raspberry Pi 5（8GB RAM）&lt;/code&gt; 上運行 Gemma 4。目標不是大模型版本，而是最小體量的 &lt;code&gt;E2B&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;結論先說：能跑、能用，但更適合低互動頻率場景，不適合高即時要求的對話體驗。&lt;/p&gt;
&lt;h2 id=&#34;測試環境&#34;&gt;測試環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;設備：Raspberry Pi 5（4 核 CPU，8GB RAM）&lt;/li&gt;
&lt;li&gt;系統：Ubuntu Server（無圖形介面）&lt;/li&gt;
&lt;li&gt;存取方式：SSH&lt;/li&gt;
&lt;li&gt;模型運行方式：LM Studio CLI（僅命令列模式）&lt;/li&gt;
&lt;li&gt;模型：Gemma 4 E2B（約 4.5GB）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第-1-步安裝並啟動-lm-studio-cli&#34;&gt;第 1 步：安裝並啟動 LM Studio CLI
&lt;/h2&gt;&lt;p&gt;我在樹莓派上安裝了 LM Studio 的 CLI 版本，然後啟動服務並查看可用命令。&lt;/p&gt;
&lt;p&gt;由於是純命令列環境，這種僅命令列部署方式非常適合樹莓派。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步把模型儲存切到-ssd&#34;&gt;第 2 步：把模型儲存切到 SSD
&lt;/h2&gt;&lt;p&gt;為了避免頻繁讀寫 SD 卡，我把模型下載目錄改到了外接 SSD。&lt;/p&gt;
&lt;p&gt;樹莓派 5 接 SSD 的體驗明顯比早期機型更實用，長期運行本地模型建議優先使用 SSD。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步下載並載入-gemma-4-e2b&#34;&gt;第 3 步：下載並載入 Gemma 4 E2B
&lt;/h2&gt;&lt;p&gt;下載完成後，模型可以正常載入進記憶體。&lt;/p&gt;
&lt;p&gt;按官方資訊，Gemma 4 系列具備：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;面向 Agent 場景的工具呼叫能力（function calling）&lt;/li&gt;
&lt;li&gt;多模態能力（含影像/影片；小模型也具備語音相關能力）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128K&lt;/code&gt; 上下文視窗&lt;/li&gt;
&lt;li&gt;Apache 2.0 授權（可商用）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;從樹莓派的硬體條件看，E2B 這一檔更適合先試起來。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步啟動-api-並開放區域網路存取&#34;&gt;第 4 步：啟動 API 並開放區域網路存取
&lt;/h2&gt;&lt;p&gt;模型載入後，我先在本機連接埠啟動 API（&lt;code&gt;4000&lt;/code&gt;），並透過 HTTP 請求確認模型清單可返回。&lt;/p&gt;
&lt;p&gt;問題在於：預設只監聽本機，區域網路其他設備無法直接存取。&lt;/p&gt;
&lt;p&gt;因為啟動參數裡不能直接設定 host，我用了 &lt;code&gt;socat&lt;/code&gt; 做連接埠轉發，把樹莓派外部連接埠請求橋接到 LM Studio 內部連接埠，實現區域網路存取。&lt;/p&gt;
&lt;p&gt;結果是可行的：我在同一區域網路的 MacBook 上能成功請求並拿到模型清單。&lt;/p&gt;
&lt;h2 id=&#34;第-5-步接入編輯器zed&#34;&gt;第 5 步：接入編輯器（Zed）
&lt;/h2&gt;&lt;p&gt;LM Studio 的本地服務相容 OpenAI API 形態，因此多數支援自訂 &lt;code&gt;base_url&lt;/code&gt; 的工具都可以直接接入。&lt;/p&gt;
&lt;p&gt;我在 Zed 裡新增了一個 LLM provider，指向樹莓派上的 Gemma 4 實例，隨後在編輯器內聊天測試通過。&lt;/p&gt;
&lt;h2 id=&#34;實際可用性判斷&#34;&gt;實際可用性判斷
&lt;/h2&gt;&lt;p&gt;這套方案適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地自動化腳本&lt;/li&gt;
&lt;li&gt;低併發、低即時性要求的輔助任務&lt;/li&gt;
&lt;li&gt;個人學習與邊緣設備實驗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不太適合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高頻互動聊天&lt;/li&gt;
&lt;li&gt;對回應延遲敏感的開發協作場景&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;在 &lt;code&gt;Raspberry Pi 5&lt;/code&gt; 上運行 Gemma 4（E2B）是可行的，而且實際效果比預期更好。&lt;/p&gt;
&lt;p&gt;如果你的目標是「能離線跑、能接工具、能完成輕中量任務」，這條路線值得嘗試；如果目標是流暢即時互動，仍建議上更強硬體。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenClaw 對接本地 Gemma 4：完整配置指南</title>
        <link>https://knightli.com/zh-tw/2026/04/08/openclaw-connect-gemma4-local/</link>
        <pubDate>Wed, 08 Apr 2026 18:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/08/openclaw-connect-gemma4-local/</guid>
        <description>&lt;p&gt;這篇文章示範如何把 &lt;code&gt;OpenClaw&lt;/code&gt; 對接到本地 &lt;code&gt;Gemma 4&lt;/code&gt; 模型（透過 &lt;code&gt;Ollama&lt;/code&gt; 提供介面）。&lt;/p&gt;
&lt;p&gt;如果你還沒完成本地部署，可先參考：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/zh-tw/2026/04/08/run-gemma4-on-laptop/&#34; &gt;如何在筆記型電腦上運行 Gemma 4：5 分鐘本地部署指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;第-1-步啟動-ollama-api-服務&#34;&gt;第 1 步：啟動 Ollama API 服務
&lt;/h2&gt;&lt;p&gt;先啟動 Ollama 服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你可以用下面的命令快速測試 API 是否正常：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl http://localhost:11434/api/generate -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;model&amp;#34;: &amp;#34;gemma4:12b&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;  &amp;#34;prompt&amp;#34;: &amp;#34;你好&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果能返回模型輸出，代表本地 API 已可用。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步配置-openclaw-接入-ollama&#34;&gt;第 2 步：配置 OpenClaw 接入 Ollama
&lt;/h2&gt;&lt;p&gt;OpenClaw 配置檔路徑通常為：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.openclaw/config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;編輯 &lt;code&gt;config.yaml&lt;/code&gt;，在 &lt;code&gt;models&lt;/code&gt; 中新增一個本地模型條目：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;models&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 你已有的模型配置...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gemma4-local&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;provider&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ollama&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;base_url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;http://localhost:11434&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemma4:12b&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;120s&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-3-步設定預設模型可選&#34;&gt;第 3 步：設定預設模型（可選）
&lt;/h2&gt;&lt;p&gt;如果你希望預設走 Gemma 4，可新增：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default_model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;gemma4-local&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-4-步重啟並驗證-openclaw&#34;&gt;第 4 步：重啟並驗證 OpenClaw
&lt;/h2&gt;&lt;p&gt;重啟 OpenClaw：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看模型列表：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw models list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;發起一次對話測試：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;openclaw chat --model gemma4-local &lt;span class=&#34;s2&#34;&gt;&amp;#34;你好&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果對話回傳正常，代表 OpenClaw 已成功接入本地 Gemma 4。&lt;/p&gt;
&lt;h2 id=&#34;常見排查&#34;&gt;常見排查
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;connection refused&lt;/code&gt;：先確認 &lt;code&gt;ollama serve&lt;/code&gt; 是否在運行。&lt;/li&gt;
&lt;li&gt;找不到模型：檢查模型名是否與 &lt;code&gt;ollama list&lt;/code&gt; 一致（例如 &lt;code&gt;gemma4:12b&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;回應超時：可適度提高 &lt;code&gt;timeout&lt;/code&gt;，並優先測試較小模型。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>如何在筆記型電腦上運行 Gemma 4：5 分鐘本地部署指南</title>
        <link>https://knightli.com/zh-tw/2026/04/08/run-gemma4-on-laptop/</link>
        <pubDate>Wed, 08 Apr 2026 18:06:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/08/run-gemma4-on-laptop/</guid>
        <description>&lt;p&gt;如果你想在筆記型電腦上本地運行 Gemma 4，&lt;code&gt;Ollama&lt;/code&gt; 是目前最省事的方式之一。即使不折騰複雜環境，通常 5 分鐘左右也能跑起來。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步安裝-ollama&#34;&gt;第 1 步：安裝 Ollama
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;打開 &lt;code&gt;https://ollama.com&lt;/code&gt;，下載對應系統的安裝包。&lt;/li&gt;
&lt;li&gt;按系統完成安裝：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;macOS：拖到 &lt;code&gt;Applications&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;Windows：執行 &lt;code&gt;.exe&lt;/code&gt; 安裝程式。&lt;/li&gt;
&lt;li&gt;Linux：使用官網提供的安裝腳本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安裝完成後，Ollama 會以背景服務形式運行。除初次安裝外，日常可以只用簡單命令。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步下載-gemma-4-模型&#34;&gt;第 2 步：下載 Gemma 4 模型
&lt;/h2&gt;&lt;p&gt;打開終端機，執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama pull gemma4:4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你的機器性能更強，可以改成 &lt;code&gt;12b&lt;/code&gt; 或 &lt;code&gt;27b&lt;/code&gt;。下載完成後，模型會保存在本地。&lt;/p&gt;
&lt;p&gt;查看已下載模型：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;第-3-步啟動模型&#34;&gt;第 3 步：啟動模型
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama run gemma4:4b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這會在終端機打開互動式對話。輸入問題後按 Enter 即可；結束會話可輸入：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/bye
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你更偏好網頁聊天介面，可以搭配 &lt;code&gt;Open WebUI&lt;/code&gt; 使用。它可以把 Ollama 包裝成瀏覽器端 UI，通常透過 Docker 幾分鐘即可完成配置。&lt;/p&gt;
&lt;h2 id=&#34;筆記型電腦效能優化建議&#34;&gt;筆記型電腦效能優化建議
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Apple Silicon（M2/M3/M4）：預設走 Metal，加速效果通常很好，&lt;code&gt;12B&lt;/code&gt; 也有不錯體驗。&lt;/li&gt;
&lt;li&gt;NVIDIA 顯示卡：檢測到相容 GPU 時會自動使用 CUDA，建議提前更新驅動。&lt;/li&gt;
&lt;li&gt;僅 CPU 推理：可以運行，但大模型會明顯變慢；多數 CPU-only 場景建議優先 &lt;code&gt;4B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;釋放記憶體：載入大模型前盡量關閉占記憶體應用。經驗上每 10 億參數大約需要 &lt;code&gt;0.5GB 到 1GB&lt;/code&gt; 記憶體。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;模型怎麼選&#34;&gt;模型怎麼選
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 1B&lt;/code&gt;：適合輕量問答、基礎摘要、快速查詢；複雜推理能力有限。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 4B&lt;/code&gt;：適合多數日常任務（寫作輔助、程式輔助、資料整理），速度與品質平衡較好。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 12B&lt;/code&gt;：適合更長上下文與更複雜任務，在程式與推理場景更穩。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 27B&lt;/code&gt;：適合高要求任務，效果更接近雲端大模型，但對硬體要求明顯更高。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Android 上安裝並運行 Gemma 4：完整上手指南</title>
        <link>https://knightli.com/zh-tw/2026/04/08/android-gemma4-install-run-guide/</link>
        <pubDate>Wed, 08 Apr 2026 17:55:53 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/08/android-gemma4-install-run-guide/</guid>
        <description>&lt;p&gt;如果你想在手機上離線體驗 Gemma 4，這篇文章會帶你從安裝到實用功能一步步跑通。&lt;/p&gt;
&lt;h2 id=&#34;第-1-步取得應用&#34;&gt;第 1 步：取得應用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Google AI Edge Gallery&lt;/code&gt; 目前不在 Google Play 上架，需要透過 APK 側載安裝。&lt;/p&gt;
&lt;p&gt;在 Android 裝置上依序進入：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;設定 -&amp;gt; 應用程式 -&amp;gt; 特殊應用程式存取權 -&amp;gt; 安裝未知應用程式&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然後：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;找到你使用的瀏覽器（例如 Chrome 或 Firefox），開啟「允許來自此來源」。&lt;/li&gt;
&lt;li&gt;在手機瀏覽器打開 &lt;code&gt;Google AI Edge Gallery&lt;/code&gt; 的 GitHub Releases 頁面。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;位址：https://github.com/google-ai-edge/gallery/releases&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;下載最新的 &lt;code&gt;.apk&lt;/code&gt; 安裝包。&lt;/li&gt;
&lt;li&gt;下載完成後，在通知欄或檔案管理器中點開安裝包，按提示完成安裝。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;網路正常時，這一步通常約 2 分鐘可完成。&lt;/p&gt;
&lt;h2 id=&#34;第-2-步首次開啟並授權&#34;&gt;第 2 步：首次開啟並授權
&lt;/h2&gt;&lt;p&gt;首次開啟 &lt;code&gt;AI Edge Gallery&lt;/code&gt; 時，應用會請求儲存權限，用於保存模型檔案。建議直接允許，否則應用無法下載或載入模型。&lt;/p&gt;
&lt;p&gt;首頁一般會看到這些入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ask Image&lt;/code&gt;：影像理解任務（描述圖片、回答圖片相關問題）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AI Chat&lt;/code&gt;：一般文字對話&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Summarize&lt;/code&gt;：貼上文字並產生摘要&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Smart Reply&lt;/code&gt;：產生回覆建議&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大多數使用者最常用的是 &lt;code&gt;AI Chat&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;第-3-步下載-gemma-4-模型&#34;&gt;第 3 步：下載 Gemma 4 模型
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;進入 &lt;code&gt;AI Chat&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;按提示點擊 &lt;code&gt;Get Models&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在模型清單中選擇 Gemma 4 版本（會顯示對應體積）。&lt;/li&gt;
&lt;li&gt;按裝置性能選擇模型；如果手機是 &lt;code&gt;8GB RAM&lt;/code&gt;，可先從 &lt;code&gt;Gemma 4 4B&lt;/code&gt; 開始。&lt;/li&gt;
&lt;li&gt;點擊 &lt;code&gt;Download&lt;/code&gt;，背景開始下載。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意：模型越大，下載時間越長。你也可以下載多個模型，後續按需切換，已下載模型會保存在本機，不必重複下載。&lt;/p&gt;
&lt;h2 id=&#34;第-4-步開始對話&#34;&gt;第 4 步：開始對話
&lt;/h2&gt;&lt;p&gt;模型下載完成後：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;點擊模型名稱進行載入（首次載入通常需要 10 到 30 秒，取決於模型大小和裝置性能）。&lt;/li&gt;
&lt;li&gt;在聊天框輸入問題並送出。&lt;/li&gt;
&lt;li&gt;模型會在本地產生回覆，資料不會上傳到雲端。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一般第一條回覆會稍慢，這是模型預熱的正常現象；同一會話後續回覆通常更快。&lt;/p&gt;
&lt;h2 id=&#34;第-5-步體驗視覺能力gemma-4-多模態&#34;&gt;第 5 步：體驗視覺能力（Gemma 4 多模態）
&lt;/h2&gt;&lt;p&gt;如果你下載的是 Gemma 4 多模態版本：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;返回主選單，進入 &lt;code&gt;Ask Image&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;選擇一張圖片，或直接拍照。&lt;/li&gt;
&lt;li&gt;輸入你想問的問題（例如「這張圖裡有什麼？」或「圖裡有哪些文字需要注意？」）。&lt;/li&gt;
&lt;li&gt;等待模型在本地分析並回傳結果。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這項功能可以離線使用，圖片內容也不會傳送到外部伺服器。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>使用 Agent Skills 取代 VS Code 中 Copilot 的「生成提交訊息」功能</title>
        <link>https://knightli.com/zh-tw/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</link>
        <pubDate>Mon, 06 Apr 2026 13:09:49 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</guid>
        <description>&lt;p&gt;VS Code 的 GitHub Copilot「生成提交訊息」是一個非常實用的功能。配額用盡後，重置週期通常會比較長。
本文提供一個實作方案：使用本地 Agent Skills 取代這個功能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1.png&#34;
	width=&#34;645&#34;
	height=&#34;194&#34;
	srcset=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_6b81e604b29d8606.png 480w, https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_5f11e2ea13cbceb8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成提交訊息&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;332&#34;
		data-flex-basis=&#34;797px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;問題與目標&#34;&gt;問題與目標
&lt;/h2&gt;&lt;p&gt;本文目標是提供一套可直接落地的替代方案：使用 &lt;code&gt;git-commit-push-zh&lt;/code&gt; skill agents 完成標準化提交與推送。&lt;/p&gt;
&lt;h2 id=&#34;替代方案git-commit-push-zh&#34;&gt;替代方案：&lt;code&gt;git-commit-push-zh&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;該 skill 將「目前改動」收斂為固定流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;檢查變更狀態。&lt;/li&gt;
&lt;li&gt;確認目前分支。&lt;/li&gt;
&lt;li&gt;暫存改動。&lt;/li&gt;
&lt;li&gt;生成中文提交訊息。&lt;/li&gt;
&lt;li&gt;執行 commit。&lt;/li&gt;
&lt;li&gt;推送到遠端分支。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對應命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status --short
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch --show-current
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add -A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin &amp;lt;当前分支&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;提交訊息建議規範&#34;&gt;提交訊息建議規範
&lt;/h2&gt;&lt;p&gt;建議統一格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;類型示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat&lt;/code&gt;：新增功能&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix&lt;/code&gt;：修復問題&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs&lt;/code&gt;：文件更新&lt;/li&gt;
&lt;li&gt;&lt;code&gt;refactor&lt;/code&gt;：程式重構&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore&lt;/code&gt;：維護性改動&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat(site): 新增全站 head 广告脚本注入&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix(i18n): 修正 relref 相关文章链接路径&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore(content): 合并 AI 工作流分类到 AI工具&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常見失敗場景&#34;&gt;常見失敗場景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nothing to commit&lt;/code&gt;：目前無可提交改動，停止推送即可。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt; 失敗：優先檢查權限、遠端分支狀態與衝突。&lt;/li&gt;
&lt;li&gt;SSH/權限異常：確認憑證與權限後再重試。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;附錄原始-skillmd&#34;&gt;附錄：原始 &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;以下內容為 &lt;code&gt;git-commit-push-zh&lt;/code&gt; 的原始文件，原樣保留，便於後續復用與維護。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 在当前 Git 仓库中将“当前更改”完成一次标准提交流程：检查状态、暂存变更、生成中文提交信息、执行 commit 并 push 到当前分支对应远端。用户提出“提交代码”“提交当前更改”“生成中文提交信息并推送”“git commit push 中文说明”等请求时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 中文提交并推送
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能将当前仓库改动一次性提交并推送到远端。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 查看变更状态：&lt;span class=&#34;sb&#34;&gt;`git status --short`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 确认当前分支：&lt;span class=&#34;sb&#34;&gt;`git branch --show-current`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 暂存当前变更：&lt;span class=&#34;sb&#34;&gt;`git add -A`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 生成中文提交信息（简洁、可检索）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 执行提交：&lt;span class=&#34;sb&#34;&gt;`git commit -m &amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 执行推送：&lt;span class=&#34;sb&#34;&gt;`git push origin &amp;lt;当前分支&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 提交信息规范（中文）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 建议格式：&lt;span class=&#34;sb&#34;&gt;`&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 类型示例：&lt;span class=&#34;sb&#34;&gt;`feat`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`fix`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`chore`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`docs`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`refactor`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 摘要要求：准确描述本次改动，不写空话。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 若仅少量变更，也保持可读性与可检索性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;示例：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`feat(site): 新增全站 head 广告脚本注入`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`fix(i18n): 修正 relref 相关文章链接路径`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`chore(content): 合并 AI 工作流分类到 AI工具`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 错误处理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 若无可提交变更（nothing to commit），明确告知并停止 push。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 若 push 失败，先回报关键错误（权限、远端不存在、冲突等）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 常见 SSH/权限问题可在用户确认后重试高权限环境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 汇报提交哈希、分支名、提交信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报 push 结果（成功或失败原因）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 仅在确有失败时提供下一步最小操作建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>如何判斷 Ollama 模型是否已載入到 GPU</title>
        <link>https://knightli.com/zh-tw/2026/04/06/check-ollama-model-loaded-on-gpu/</link>
        <pubDate>Mon, 06 Apr 2026 10:15:18 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/06/check-ollama-model-loaded-on-gpu/</guid>
        <description>&lt;p&gt;想確認 Ollama 模型是否真的跑在 GPU 上，最直接的方法就是查看目前已載入模型的處理器占用資訊。&lt;/p&gt;
&lt;h2 id=&#34;使用指令&#34;&gt;使用指令
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;範例輸出&#34;&gt;範例輸出
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME        ID            SIZE    PROCESSOR   UNTIL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama3:70b  bcfb190ca3a7  42 GB   100% GPU    4 minutes from now
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;如何解讀-processor-欄位&#34;&gt;如何解讀 &lt;code&gt;PROCESSOR&lt;/code&gt; 欄位
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;：模型完全載入在 GPU 顯存中。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;：模型完全載入在系統記憶體中（未使用 GPU 推理）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;：模型部分在系統記憶體、部分在 GPU 顯存中，屬於混合載入。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;實用建議&#34;&gt;實用建議
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;如果你預期使用 GPU，但看到 &lt;code&gt;100% CPU&lt;/code&gt;，先檢查顯卡驅動、CUDA/ROCm 環境與 Ollama 執行參數。&lt;/li&gt;
&lt;li&gt;模型參數量較大、顯存不足時，通常會出現 CPU/GPU 混合載入。&lt;/li&gt;
&lt;li&gt;排查效能問題時，先執行 &lt;code&gt;ollama ps&lt;/code&gt; 再看速度數據，能更快定位瓶頸。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ollama ps&lt;/code&gt; 是判斷模型是否真正使用 GPU 的第一步。重點看 &lt;code&gt;PROCESSOR&lt;/code&gt; 欄位，就能快速確認目前載入位置，並據此決定後續優化方向。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>使用 AI 維護 Hugo 多語言部落格的 Agent Skill</title>
        <link>https://knightli.com/zh-tw/2026/04/06/agent-skill-sync-post-translations-guide/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/06/agent-skill-sync-post-translations-guide/</guid>
        <description>&lt;p&gt;如果你正在維護 Hugo 多語言部落格，常常會遇到一個高頻痛點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文寫完後，還要同步生成英文與繁體版本&lt;/li&gt;
&lt;li&gt;三個語言檔需要保持結構一致&lt;/li&gt;
&lt;li&gt;front matter 既要翻譯，也要符合 Hugo 格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 就是為這個場景設計的 Agent Skill。&lt;/p&gt;
&lt;h2 id=&#34;這個技能解決什麼問題&#34;&gt;這個技能解決什麼問題
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 的定位很清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;以 &lt;code&gt;index.zh-cn.md&lt;/code&gt; 作為來源檔&lt;/li&gt;
&lt;li&gt;在同一目錄生成或更新 &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保持 Markdown 結構一致&lt;/li&gt;
&lt;li&gt;對 front matter 套用明確規則（尤其是 &lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;適用觸發詞示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「同步翻譯英文繁體」&lt;/li&gt;
&lt;li&gt;「把這篇文章同步成英文和繁體」&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;技能目錄結構&#34;&gt;技能目錄結構
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.\sync-post-translations\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ agents\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ openai.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心程式碼一skillmd&#34;&gt;核心程式碼一：SKILL.md
&lt;/h2&gt;&lt;p&gt;以下是此技能的核心規則檔：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: sync-post-translations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 将 Hugo 文章从简体中文源文件（&lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;）同步翻译为英文（&lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt;）和繁体中文（&lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;）。当用户提出“en 繁体”“同步翻译英文繁体”或要求同时生成/更新两种语言版本且需保持 front matter 与 Markdown 结构一致时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 同步文章翻译
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能为同一篇文章生成或更新多语言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 在目标文章目录中定位源文件 &lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 读取完整 front matter 与正文内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 在同目录创建或更新 &lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt; 与 &lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 确保三语结构对齐后执行 Hugo 构建检查。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 翻译规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 严格保留 &lt;span class=&#34;sb&#34;&gt;`slug`&lt;/span&gt; 原值。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`date`&lt;/span&gt; 统一规范为 Hugo 常用带时间格式（RFC3339），示例：&lt;span class=&#34;sb&#34;&gt;`2026-04-05T10:00:00+08:00`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 自然翻译以下 front matter 字段：&lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`description`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`tags`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`categories`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 保持 Markdown 结构不变：标题层级、列表形态、代码块、链接与命令行示例。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 技术标识符保持原样：文件名、CLI 参数、模型名、设备名、URL、包名等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 若 YAML 的 &lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt; 含有 &lt;span class=&#34;sb&#34;&gt;`:`&lt;/span&gt;，必须加引号，避免解析报错。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;7.&lt;/span&gt; 在不改变语义前提下，使用目标语言自然标点与表达习惯（&lt;span class=&#34;sb&#34;&gt;`en`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`zh-tw`&lt;/span&gt;）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 仅在源文章同目录写入目标文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报变更的文件路径。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 条件允许时执行 &lt;span class=&#34;sb&#34;&gt;`hugo --source . --destination public`&lt;/span&gt;，并反馈通过/失败；失败时给出关键报错行。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 质量标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 全文术语前后一致。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 避免机器直译感，优先可发布文风。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 章节内容完整，不省略示例、注意点与总结。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心程式碼二agentsopenaiyaml&#34;&gt;核心程式碼二：agents/openai.yaml
&lt;/h2&gt;&lt;p&gt;這個檔案定義了技能在 Agent 端的展示與預設提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;interface&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;display_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;同步文章翻译&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;short_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;生成或更新 EN + ZH-TW 翻译稿&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;default_prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;使用该技能在同一 Hugo 文章目录中，从 `index.zh-cn.md` 生成或同步 `index.en.md` 与 `index.zh-tw.md`，保留 `date` 与 `slug`，保持 Markdown 结构一致，并执行 Hugo 构建校验。&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;實戰調用示例&#34;&gt;實戰調用示例
&lt;/h2&gt;&lt;h3 id=&#34;1-面向人的自然語言觸發&#34;&gt;1) 面向人的自然語言觸發
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请把 content/post/2026/04/06/index.zh-cn.md 同步翻译成英文和繁体，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求 date 用 RFC3339，slug 不变，最后跑 hugo 校验。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-你應該期待的輸出結果&#34;&gt;2) 你應該期待的輸出結果
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;已更新：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.en.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.zh-tw.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;构建校验：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- hugo --source . --destination public
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 结果：PASS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;為什麼這些規則很關鍵&#34;&gt;為什麼這些規則很關鍵
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;slug&lt;/code&gt; 保持不變，可以穩定 URL 與歷史外鏈。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;date&lt;/code&gt; 統一為 RFC3339（含時區）可避免 Hugo/主題在時間解析上的歧義。&lt;/li&gt;
&lt;li&gt;Markdown 結構不變，可避免翻譯後目錄、程式碼區塊、短代碼渲染錯位。&lt;/li&gt;
&lt;li&gt;技術標識符不翻譯，可顯著降低「命令不可用／檔名不匹配」問題。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;常見坑位與規避&#34;&gt;常見坑位與規避
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; 裡有 &lt;code&gt;:&lt;/code&gt; 卻沒加引號，YAML 會解析失敗。&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;--flag&lt;/code&gt;、URL、套件名翻譯了，示例命令會直接失效。&lt;/li&gt;
&lt;li&gt;三語標題層級不一致（例如中文 &lt;code&gt;##&lt;/code&gt; 變成英文 &lt;code&gt;###&lt;/code&gt;），目錄錨點會錯位。&lt;/li&gt;
&lt;li&gt;只翻譯正文不處理 front matter，頁面列表與 SEO 資訊會異常。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Ollama 模型預設儲存位置與遷移方法（避免 C 槽爆滿）</title>
        <link>https://knightli.com/zh-tw/2026/04/06/ollama-model-storage-path-and-migration/</link>
        <pubDate>Mon, 06 Apr 2026 09:38:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/06/ollama-model-storage-path-and-migration/</guid>
        <description>&lt;p&gt;本機執行大模型時，最容易先爆掉的通常是系統碟。Ollama 預設會把模型下載到使用者目錄或系統目錄，如果不先規劃路徑，C 槽很快就會被占滿。&lt;/p&gt;
&lt;h2 id=&#34;ollama-常見預設模型目錄&#34;&gt;Ollama 常見預設模型目錄
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Windows：&lt;code&gt;C:\Users\&amp;lt;使用者名稱&amp;gt;\.ollama\models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS：&lt;code&gt;~/.ollama/models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux：&lt;code&gt;/usr/share/ollama/.ollama/models&lt;/code&gt;（不同安裝方式可能略有差異）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows把模型目錄遷移到非系統碟&#34;&gt;Windows：把模型目錄遷移到非系統碟
&lt;/h2&gt;&lt;p&gt;建議將模型目錄遷移到例如 &lt;code&gt;D:\OllamaModels&lt;/code&gt;。核心做法是設定系統環境變數 &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;1-建立目標目錄&#34;&gt;1. 建立目標目錄
&lt;/h2&gt;&lt;p&gt;例如先建立：&lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-設定系統環境變數&#34;&gt;2. 設定系統環境變數
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;變數名稱：&lt;code&gt;OLLAMA_MODELS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;變數值：&lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可在「系統內容 -&amp;gt; 進階 -&amp;gt; 環境變數」中新增，也可使用命令列設定（系統管理員 PowerShell）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetEnvironmentVariable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_MODELS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\OllamaModels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Machine&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-重啟-ollama或重啟系統&#34;&gt;3. 重啟 Ollama（或重啟系統）
&lt;/h2&gt;&lt;p&gt;環境變數生效後，重新啟動 Ollama 服務或應用程式。若不確定是否已生效，直接重啟電腦最穩妥。&lt;/p&gt;
&lt;h2 id=&#34;4-驗證新目錄是否生效&#34;&gt;4. 驗證新目錄是否生效
&lt;/h2&gt;&lt;p&gt;拉取任意模型後，檢查 &lt;code&gt;D:\OllamaModels&lt;/code&gt; 下是否出現新檔案。&lt;/p&gt;
&lt;h2 id=&#34;5-清理舊目錄確認無誤後&#34;&gt;5. 清理舊目錄（確認無誤後）
&lt;/h2&gt;&lt;p&gt;確認模型已在新目錄正常工作，再刪除舊目錄內容，回收 C 槽空間。&lt;/p&gt;
&lt;h2 id=&#34;常見問題&#34;&gt;常見問題
&lt;/h2&gt;&lt;h3 id=&#34;設定後仍寫入-c-槽怎麼辦&#34;&gt;設定後仍寫入 C 槽怎麼辦
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;先確認環境變數是「系統變數」，而不是「目前工作階段臨時變數」。&lt;/li&gt;
&lt;li&gt;確認 Ollama 行程已重啟。&lt;/li&gt;
&lt;li&gt;檢查變數名稱是否正確：必須是 &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;是否需要遷移舊模型檔案&#34;&gt;是否需要遷移舊模型檔案
&lt;/h3&gt;&lt;p&gt;如果你不想重複下載，可在停止 Ollama 後手動複製舊模型到新目錄，再啟動 Ollama 驗證。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>在 Linux 上徹底移除 Ollama（含殘留清理）</title>
        <link>https://knightli.com/zh-tw/2026/04/06/uninstall-ollama-on-linux/</link>
        <pubDate>Mon, 06 Apr 2026 09:16:29 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/06/uninstall-ollama-on-linux/</guid>
        <description>&lt;p&gt;如果你需要在 Linux 上徹底移除 Ollama，可以依照下列順序執行。本文會清理服務、執行檔、模型目錄，以及 &lt;code&gt;ollama&lt;/code&gt; 使用者與群組。&lt;/p&gt;
&lt;h2 id=&#34;移除前提醒&#34;&gt;移除前提醒
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;以下指令會刪除本機 Ollama 模型檔案（通常位於 &lt;code&gt;/usr/share/ollama&lt;/code&gt;），請先確認是否需要備份。&lt;/li&gt;
&lt;li&gt;指令預設使用 &lt;code&gt;sudo&lt;/code&gt;，請確認目前帳號具備管理員權限。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-停止並移除-systemd-服務&#34;&gt;1. 停止並移除 systemd 服務
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl stop ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl disable ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -f /etc/systemd/system/ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-刪除-ollama-執行檔&#34;&gt;2. 刪除 Ollama 執行檔
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  sudo rm -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-刪除-ollama-相關函式庫目錄若存在&#34;&gt;3. 刪除 Ollama 相關函式庫目錄（若存在）
&lt;/h2&gt;&lt;p&gt;如果你的安裝方式在 &lt;code&gt;lib&lt;/code&gt; 目錄寫入了 Ollama 檔案，可用下列方式清理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in /usr/local/lib/ollama /usr/lib/ollama /lib/ollama&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-刪除模型與資料目錄&#34;&gt;4. 刪除模型與資料目錄
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -rf /usr/share/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-刪除系統使用者與群組若存在&#34;&gt;5. 刪除系統使用者與群組（若存在）
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id -u ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo userdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;getent group ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo groupdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-驗證是否已完成移除&#34;&gt;6. 驗證是否已完成移除
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama binary not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若以上檢查都不再找到 &lt;code&gt;ollama&lt;/code&gt;，即代表已移除完成。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>大型模型量化詳解：FP16、Q8、Q5、Q4 到 Q2 怎麼選？</title>
        <link>https://knightli.com/zh-tw/2026/04/05/llm-quantization-guide-fp16-q4-q2/</link>
        <pubDate>Sun, 05 Apr 2026 22:09:11 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/05/llm-quantization-guide-fp16-q4-q2/</guid>
        <description>&lt;p&gt;量化的核心目標很簡單：用少量精度損失，換取更小體積、更低顯存占用與更快推理速度。&lt;br&gt;
對本地部署使用者來說，選對量化版本，通常比盲目追求大參數更重要。&lt;/p&gt;
&lt;h2 id=&#34;什麼是量化&#34;&gt;什麼是量化
&lt;/h2&gt;&lt;p&gt;量化是指把模型參數從高精度格式（如 &lt;code&gt;FP16&lt;/code&gt;）壓縮為更低位寬格式（如 &lt;code&gt;Q8&lt;/code&gt;、&lt;code&gt;Q4&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;可以把它理解為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原始模型：像高精度照片，清晰但檔案大。&lt;/li&gt;
&lt;li&gt;量化模型：像壓縮照片，細節略有損失但更輕更快。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常見量化版本對比&#34;&gt;常見量化版本對比
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;量化版本&lt;/th&gt;
          &lt;th&gt;精度/位寬&lt;/th&gt;
          &lt;th&gt;體積&lt;/th&gt;
          &lt;th&gt;品質損失&lt;/th&gt;
          &lt;th&gt;推薦場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;FP16&lt;/td&gt;
          &lt;td&gt;16 位浮點&lt;/td&gt;
          &lt;td&gt;最大&lt;/td&gt;
          &lt;td&gt;幾乎無損&lt;/td&gt;
          &lt;td&gt;研究、評測、追求極致品質&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q8_0&lt;/td&gt;
          &lt;td&gt;8 位整數&lt;/td&gt;
          &lt;td&gt;較大&lt;/td&gt;
          &lt;td&gt;幾乎無損&lt;/td&gt;
          &lt;td&gt;高配電腦，兼顧品質與效能&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;5 位混合&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;輕微損失&lt;/td&gt;
          &lt;td&gt;日常主力，平衡方案&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;4 位混合&lt;/td&gt;
          &lt;td&gt;較小&lt;/td&gt;
          &lt;td&gt;可接受損失&lt;/td&gt;
          &lt;td&gt;通用預設，性價比高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q3_K_M&lt;/td&gt;
          &lt;td&gt;3 位混合&lt;/td&gt;
          &lt;td&gt;很小&lt;/td&gt;
          &lt;td&gt;明顯損失&lt;/td&gt;
          &lt;td&gt;低配設備，先求能跑&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q2_K&lt;/td&gt;
          &lt;td&gt;2 位混合&lt;/td&gt;
          &lt;td&gt;最小&lt;/td&gt;
          &lt;td&gt;較大損失&lt;/td&gt;
          &lt;td&gt;極限資源場景，臨時可用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;量化命名規則&#34;&gt;量化命名規則
&lt;/h2&gt;&lt;p&gt;以 &lt;code&gt;gemma-4:4b-q4_k_m&lt;/code&gt; 為例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gemma-4:4b&lt;/code&gt;：模型名稱與參數規模。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q4&lt;/code&gt;：4 位量化。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt;：K-quants（改進的量化方法）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt;：medium（中等級別，常見還有 &lt;code&gt;s&lt;/code&gt;/small、&lt;code&gt;l&lt;/code&gt;/large）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何按顯存快速選型&#34;&gt;如何按顯存快速選型
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;內存/顯存&lt;/th&gt;
          &lt;th&gt;推薦量化&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;4 GB&lt;/td&gt;
          &lt;td&gt;Q3_K_M / Q2_K&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;8 GB&lt;/td&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16 GB&lt;/td&gt;
          &lt;td&gt;Q5_K_M / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;32 GB+&lt;/td&gt;
          &lt;td&gt;FP16 / Q8_0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;建議先從能穩定跑起來的版本開始，再逐步提高精度，而不是一開始就追求最大模型。&lt;/p&gt;
&lt;h2 id=&#34;實戰建議&#34;&gt;實戰建議
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;預設從 &lt;code&gt;Q4_K_M&lt;/code&gt; 開始，先驗證真實任務效果。&lt;/li&gt;
&lt;li&gt;如果答案品質不夠，再升到 &lt;code&gt;Q5_K_M&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果主要瓶頸是顯存或速度，再降到 &lt;code&gt;Q3_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;每次切換量化版本，都用同一批測試問題做對比。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;品質優先：&lt;code&gt;FP16&lt;/code&gt; 或 &lt;code&gt;Q8_0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;平衡優先：&lt;code&gt;Q5_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;通用預設：&lt;code&gt;Q4_K_M&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;低配兜底：&lt;code&gt;Q3_K_M&lt;/code&gt; 或 &lt;code&gt;Q2_K&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;選型的本質不是「越大越好」，而是「在你的硬體條件下，達到最穩定可用的效果」。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>Google Gemma 4 模型對比：2B/4B/26B/31B 怎麼選？</title>
        <link>https://knightli.com/zh-tw/2026/04/05/google-gemma-4-model-comparison/</link>
        <pubDate>Sun, 05 Apr 2026 08:30:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/05/google-gemma-4-model-comparison/</guid>
        <description>&lt;p&gt;Gemma 4 主打 &lt;code&gt;多模態&lt;/code&gt; 與 &lt;code&gt;本地離線運行&lt;/code&gt;，並提供從輕量端到高性能端的完整模型梯度。對大多數本地部署使用者來說，關鍵不是選最大，而是選最符合硬體與任務需求的版本。&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-各模型對比&#34;&gt;Gemma 4 各模型對比
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;下表用於快速選型參考；具體性能與資源占用請以實際部署環境測試為準。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;模型&lt;/th&gt;
          &lt;th&gt;參數規模&lt;/th&gt;
          &lt;th&gt;定位&lt;/th&gt;
          &lt;th&gt;主要優勢&lt;/th&gt;
          &lt;th&gt;主要限制&lt;/th&gt;
          &lt;th&gt;推薦場景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 2B&lt;/td&gt;
          &lt;td&gt;20 億&lt;/td&gt;
          &lt;td&gt;超輕量&lt;/td&gt;
          &lt;td&gt;延遲低、資源占用小、部署門檻最低&lt;/td&gt;
          &lt;td&gt;複雜推理與長鏈路任務能力有限&lt;/td&gt;
          &lt;td&gt;行動端、IoT、輕量問答、簡單自動化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 4B&lt;/td&gt;
          &lt;td&gt;40 億&lt;/td&gt;
          &lt;td&gt;輕量增強&lt;/td&gt;
          &lt;td&gt;比 2B 更穩定的理解與生成能力，仍易於本地部署&lt;/td&gt;
          &lt;td&gt;高強度編碼與複雜 Agent 任務上限有限&lt;/td&gt;
          &lt;td&gt;本地助手、基礎文件處理、多語言日常任務&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 26B&lt;/td&gt;
          &lt;td&gt;260 億&lt;/td&gt;
          &lt;td&gt;高性能（專家混合）&lt;/td&gt;
          &lt;td&gt;推理與工具調用能力明顯提升，適合生產工作流&lt;/td&gt;
          &lt;td&gt;顯存需求顯著上升，硬體門檻更高&lt;/td&gt;
          &lt;td&gt;編程助手、複雜工作流、企業內部 Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 31B&lt;/td&gt;
          &lt;td&gt;310 億&lt;/td&gt;
          &lt;td&gt;高性能（稠密）&lt;/td&gt;
          &lt;td&gt;綜合能力最強，複雜任務穩定性更好&lt;/td&gt;
          &lt;td&gt;資源成本最高，部署與調優成本更大&lt;/td&gt;
          &lt;td&gt;高要求推理、複雜程式任務、重度自動化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;怎麼選按硬體和任務倒推&#34;&gt;怎麼選：按硬體和任務倒推
&lt;/h2&gt;&lt;p&gt;如果你主要關心「能不能跑、跑得順不順」，可以按下面選：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;8GB&lt;/code&gt; 顯存：優先 &lt;code&gt;2B/4B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;12GB&lt;/code&gt; 顯存：優先 &lt;code&gt;4B&lt;/code&gt; 或更高模型的量化版本。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;24GB&lt;/code&gt; 顯存：可重點考慮 &lt;code&gt;26B&lt;/code&gt;，並依任務評估 &lt;code&gt;31B&lt;/code&gt; 量化版。&lt;/li&gt;
&lt;li&gt;更高顯存或多卡：可嘗試 &lt;code&gt;31B&lt;/code&gt; 的高精度配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建議先保證穩定性與推理速度，再逐步提升模型規模。&lt;/p&gt;
&lt;h2 id=&#34;四類典型使用場景&#34;&gt;四類典型使用場景
&lt;/h2&gt;&lt;h3 id=&#34;1-本地通用助手&#34;&gt;1) 本地通用助手
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;優先模型：&lt;code&gt;4B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：成本與效果平衡佳，適合長期常駐運行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-程式與自動化&#34;&gt;2) 程式與自動化
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;優先模型：&lt;code&gt;26B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：在多步驟任務、工具調用、腳本生成上更穩。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-高難度推理與複雜-agent&#34;&gt;3) 高難度推理與複雜 Agent
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;優先模型：&lt;code&gt;31B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：在複雜上下文下穩定性更高、容錯更好。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-邊緣設備與輕量離線&#34;&gt;4) 邊緣設備與輕量離線
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;優先模型：&lt;code&gt;2B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原因：最容易在資源受限設備落地。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;部署建議ollama-方向&#34;&gt;部署建議（Ollama 方向）
&lt;/h2&gt;&lt;p&gt;更實用的做法是小步快跑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 &lt;code&gt;4B&lt;/code&gt; 建立可運行基線（速度、記憶體、效果）。&lt;/li&gt;
&lt;li&gt;把真實任務做成固定測試集（例如 20 條常見問題 + 10 個自動化任務）。&lt;/li&gt;
&lt;li&gt;再升級到 &lt;code&gt;26B/31B&lt;/code&gt; 對比準確率、時延與顯存成本。&lt;/li&gt;
&lt;li&gt;只在收益明顯時升級大模型。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這樣可以避免一開始就追求大參數，導致卡頓、吞吐低與維護複雜度上升。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論
&lt;/h2&gt;&lt;p&gt;Gemma 4 的真正價值，不是單純參數更大，而是提供了從輕量到高性能的一整套可落地梯度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想低成本快速上線：從 &lt;code&gt;2B/4B&lt;/code&gt; 開始。&lt;/li&gt;
&lt;li&gt;想讓本地 AI 真正接入生產流程：優先 &lt;code&gt;26B&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;想衝擊複雜推理與重度自動化：再上 &lt;code&gt;31B&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemma 4 的最佳選擇通常不是參數最大，而是與硬體條件與任務目標匹配度最高的版本。&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>分析 Anthropic 的 Agent Skill docx：功能、程式組成、使用方法與注意事項</title>
        <link>https://knightli.com/zh-tw/2026/04/04/analyze-docx-agent-skill/</link>
        <pubDate>Sat, 04 Apr 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/04/analyze-docx-agent-skill/</guid>
        <description>&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 本質上是一套「讓 AI 更穩定處理 Word 文件」的工作規範與腳本工具集。&lt;br&gt;
它不是只告訴模型「去寫一個 &lt;code&gt;.docx&lt;/code&gt;」，而是把 Word 文件處理拆成幾條明確路徑：新建文件、讀取內容、編輯既有文件、處理修訂、加入評論、格式轉換、校驗 OOXML 結構。&lt;/p&gt;
&lt;p&gt;如果只用一句話概括：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;讓 agent 不再把 &lt;code&gt;.docx&lt;/code&gt; 當黑盒，而是把它當成 ZIP + XML + Office 相容性問題來處理。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;這個-skill-解決什麼問題&#34;&gt;這個 skill 解決什麼問題
&lt;/h2&gt;&lt;p&gt;一般模型在處理 Word 文件時，常見問題大致有這幾類：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只會輸出文字，不會真正產生結構正確的 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;修改既有文件時，容易破壞 OOXML 結構&lt;/li&gt;
&lt;li&gt;遇到批註、修訂、評論串時，不知道要改哪些 XML&lt;/li&gt;
&lt;li&gt;文件能產生，但在 Word、LibreOffice、Google Docs 間相容性不穩&lt;/li&gt;
&lt;li&gt;不清楚何時該用 &lt;code&gt;pandoc&lt;/code&gt;，何時該直接解包改 XML&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;docx&lt;/code&gt; skill 的價值就在這裡，它把「該怎麼做」先規範好了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀內容時，優先用 &lt;code&gt;pandoc&lt;/code&gt; 或解包&lt;/li&gt;
&lt;li&gt;新建 &lt;code&gt;.docx&lt;/code&gt; 時，優先用 &lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;編輯既有 &lt;code&gt;.docx&lt;/code&gt; 時，優先走「解包 -&amp;gt; 修改 XML -&amp;gt; 重新打包 -&amp;gt; 校驗」&lt;/li&gt;
&lt;li&gt;處理接受修訂、評論、schema 校驗等細節時，用配套腳本而不是硬寫&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套方法很實用，因為 Word 文件問題通常不是「文字對不對」，而是「文件結構是否還能被 Office 正常接受」。&lt;/p&gt;
&lt;h2 id=&#34;目錄與程式組成&#34;&gt;目錄與程式組成
&lt;/h2&gt;&lt;p&gt;這個 skill 大致可以分成四層。&lt;/p&gt;
&lt;h3 id=&#34;1-說明層skillmd&#34;&gt;1. 說明層：&lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 是入口，主要做兩件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定義觸發條件&lt;br&gt;
只要需求涉及 Word、&lt;code&gt;.docx&lt;/code&gt;、評論、修訂、目錄、頁碼、模板、格式化文件等內容，就應啟用這個 skill。&lt;/li&gt;
&lt;li&gt;規定工作路徑&lt;br&gt;
明確指定不同任務要走哪條技術路線，而不是每次臨場發揮。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它同時是使用說明與操作規範。裡面最有價值的是相容性規則，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt; 預設是 A4，不是 US Letter&lt;/li&gt;
&lt;li&gt;橫向頁面時，寬高參數要按它的內部邏輯傳&lt;/li&gt;
&lt;li&gt;列表不能手工插入 Unicode bullet&lt;/li&gt;
&lt;li&gt;表格寬度要同時設 table 與 cell&lt;/li&gt;
&lt;li&gt;插入圖片時 &lt;code&gt;type&lt;/code&gt; 不能省&lt;/li&gt;
&lt;li&gt;生成後要跑 &lt;code&gt;validate&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這反映出它追求的不只是「能生成」，而是「能穩定開啟、穩定渲染、穩定相容」。&lt;/p&gt;
&lt;h2 id=&#34;2-office-包操作層scriptsoffice&#34;&gt;2. Office 包操作層：&lt;code&gt;scripts/office/*&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;這一層負責把 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt; 當成 Office Open XML 套件來處理。&lt;/p&gt;
&lt;h3 id=&#34;unpackpy&#34;&gt;&lt;code&gt;unpack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把 Office 文件解包到目錄，並做一些整理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解壓 ZIP 包&lt;/li&gt;
&lt;li&gt;對 XML / &lt;code&gt;.rels&lt;/code&gt; 做 pretty print&lt;/li&gt;
&lt;li&gt;對 &lt;code&gt;.docx&lt;/code&gt; 可選執行 &lt;code&gt;merge_runs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;對 &lt;code&gt;.docx&lt;/code&gt; 可選執行 &lt;code&gt;simplify_redlines&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;將智慧引號轉成 XML 實體，降低後續處理風險&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不只是「解壓」，而是把內容整理成更適合 agent 與人類繼續編輯的狀態。&lt;/p&gt;
&lt;h3 id=&#34;packpy&#34;&gt;&lt;code&gt;pack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把修改後目錄重新打包成 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt;。&lt;br&gt;
打包前還會做兩件要事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可選執行校驗與自動修復&lt;/li&gt;
&lt;li&gt;重新壓縮整理 XML，移除無意義空白與註解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若提供 &lt;code&gt;--original&lt;/code&gt;，會結合 validator 比對，這點很關鍵。&lt;br&gt;
因為很多 Word 修改不是「能打包回去」就算成功，而是要確認結構與修訂語義都成立。&lt;/p&gt;
&lt;h3 id=&#34;validatepy&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是整個 skill 的品質閘門。&lt;br&gt;
它會校驗：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML 是否良構&lt;/li&gt;
&lt;li&gt;namespace 是否正確&lt;/li&gt;
&lt;li&gt;各類 ID 是否唯一&lt;/li&gt;
&lt;li&gt;relationship / content type 是否匹配&lt;/li&gt;
&lt;li&gt;是否符合 XSD schema&lt;/li&gt;
&lt;li&gt;空白保留規則是否正確&lt;/li&gt;
&lt;li&gt;插入、刪除、評論標記是否合法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對 &lt;code&gt;.docx&lt;/code&gt; 來說，這幾乎是核心能力。&lt;br&gt;
很多「看起來只改一點 XML」的問題，都會在這裡暴露。&lt;/p&gt;
&lt;h3 id=&#34;sofficepy&#34;&gt;&lt;code&gt;soffice.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是一個很有工程味的輔助工具。&lt;br&gt;
它不是單純呼叫 LibreOffice，而是為受限環境做兼容處理，會設置 &lt;code&gt;SAL_USE_VCLPLUGIN=svp&lt;/code&gt;，必要時還會用 shim 處理 AF_UNIX socket 限制。&lt;/p&gt;
&lt;p&gt;這代表它考慮的不是只有本機手動場景，也包含 agent、CI、沙箱等自動化環境。&lt;/p&gt;
&lt;h2 id=&#34;3-word-專項能力層評論修訂與-redline&#34;&gt;3. Word 專項能力層：評論、修訂與 redline
&lt;/h2&gt;&lt;h3 id=&#34;commentpy&#34;&gt;&lt;code&gt;comment.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這個腳本負責幫 DOCX 加評論。&lt;br&gt;
它做的不只是寫一段 comment XML，因為 Word 評論涉及多個部件協同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;word/comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;document.xml&lt;/code&gt; 中的 comment range marker&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Content_Types].xml&lt;/code&gt; 與 &lt;code&gt;document.xml.rels&lt;/code&gt; 中的關係宣告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;腳本已把這些依賴關係處理好。&lt;br&gt;
若是第一次加評論，會自動補模板檔、relationship 與 content types，能大幅降低手工改 OOXML 的出錯率。&lt;/p&gt;
&lt;h3 id=&#34;accept_changespy&#34;&gt;&lt;code&gt;accept_changes.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這個腳本目標很明確：接受所有修訂。&lt;br&gt;
做法不是硬改 XML，而是透過 LibreOffice headless + Basic macro 呼叫 &lt;code&gt;.uno:AcceptAllTrackedChanges&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這很穩妥，因為「接受修訂」在 Word 語義中不只是刪 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt;。&lt;br&gt;
直接改 XML 很容易留下邊角問題；由 Office 引擎處理通常更可靠。&lt;/p&gt;
&lt;h3 id=&#34;validatorsredliningpy&#34;&gt;&lt;code&gt;validators/redlining.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是我認為很關鍵的一段。&lt;br&gt;
它會把「某作者的修訂」分別從原始文件與修改後文件中剝離，再比較正文文字是否一致，以判斷修訂是否被正確包在 tracked changes 結構裡。&lt;/p&gt;
&lt;p&gt;也就是說，它不只驗 XML 格式，而是在驗「是否按修訂語義編輯」。&lt;/p&gt;
&lt;p&gt;這對 agent 特別重要，因為 AI 常見錯誤是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接改正文，沒包進 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在別人的插入或刪除結構裡改壞層級&lt;/li&gt;
&lt;li&gt;最終文字改了，但 redline 語義不成立&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個 validator 就是在擋這類「看似可用、其實語義錯誤」的問題。&lt;/p&gt;
&lt;h2 id=&#34;4-schema-與輔助層schemashelperstemplates&#34;&gt;4. Schema 與輔助層：&lt;code&gt;schemas/&lt;/code&gt;、&lt;code&gt;helpers/&lt;/code&gt;、&lt;code&gt;templates/&lt;/code&gt;
&lt;/h2&gt;&lt;h3 id=&#34;schemas&#34;&gt;&lt;code&gt;schemas/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡放的是一整套 OOXML / ECMA / Microsoft 擴展相關 XSD。&lt;br&gt;
代表校驗規則盡量基於正式 schema，而不是臨時規則。&lt;/p&gt;
&lt;h3 id=&#34;helpers&#34;&gt;&lt;code&gt;helpers/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;merge_runs.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simplify_redlines.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作用是對解包後的 Word XML 做適度清理，讓結構更穩定、更易編輯與比對。&lt;/p&gt;
&lt;h3 id=&#34;templates&#34;&gt;&lt;code&gt;templates/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡存放評論功能依賴的 XML 模板，如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;people.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些模板很重要，因為很多 Word 部件不是「缺了會自動補」，而是必須按 Office 接受的格式預置。&lt;/p&gt;
&lt;h2 id=&#34;典型使用方法&#34;&gt;典型使用方法
&lt;/h2&gt;&lt;p&gt;從 &lt;code&gt;SKILL.md&lt;/code&gt; 的建議看，這個 skill 很適合以下工作流。&lt;/p&gt;
&lt;h2 id=&#34;場景一讀取或分析既有-docx&#34;&gt;場景一：讀取或分析既有 DOCX
&lt;/h2&gt;&lt;p&gt;若目標是抽取內容、閱讀結構、轉 Markdown，優先用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pandoc --track-changes&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all document.docx -o output.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若要看底層 XML，則用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前者適合讀內容，後者適合看結構。&lt;/p&gt;
&lt;h2 id=&#34;場景二新建-docx&#34;&gt;場景二：新建 DOCX
&lt;/h2&gt;&lt;p&gt;這個 skill 建議用 &lt;code&gt;docx-js&lt;/code&gt; 生成，而不是手搓 OOXML：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成後再校驗：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/validate.py doc.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;適合報告、memo、letter，以及含標題、目錄、頁腳、分頁、表格的正式文件。&lt;/p&gt;
&lt;h2 id=&#34;場景三編輯既有-docx&#34;&gt;場景三：編輯既有 DOCX
&lt;/h2&gt;&lt;p&gt;這是最核心的流程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改 unpacked/ 下的 XML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/pack.py unpacked/ output.docx --original document.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重點在 &lt;code&gt;--original&lt;/code&gt;。&lt;br&gt;
它讓系統在回包時做 schema 與 redline 層面的驗證，而不是盲目打包。&lt;/p&gt;
&lt;h2 id=&#34;場景四接受所有修訂&#34;&gt;場景四：接受所有修訂
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/accept_changes.py input.docx output.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這一步依賴 LibreOffice，適合把已審閱文件整理成乾淨版。&lt;/p&gt;
&lt;h2 id=&#34;場景五添加評論&#34;&gt;場景五：添加評論
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Comment text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reply text&amp;#34;&lt;/span&gt; --parent &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;要注意：腳本會補評論內容與必要部件，但仍需按註解在 &lt;code&gt;document.xml&lt;/code&gt; 補上 comment range marker，才能把評論正確掛到文字範圍。&lt;/p&gt;
&lt;h2 id=&#34;這個-skill-最值得注意的幾個坑&#34;&gt;這個 skill 最值得注意的幾個坑
&lt;/h2&gt;&lt;p&gt;若只快速掃過 &lt;code&gt;SKILL.md&lt;/code&gt;，很容易低估裡面「相容性規則」的價值。以下幾點尤其重要。&lt;/p&gt;
&lt;h3 id=&#34;1-docx-不是純文字檔而是-office-套件&#34;&gt;1. &lt;code&gt;.docx&lt;/code&gt; 不是純文字檔，而是 Office 套件
&lt;/h3&gt;&lt;p&gt;最大的誤區是把它當作「有格式的文字檔」。&lt;br&gt;
實際可能同時涉及正文 XML、relationships、content types、comments / people / ids、schema 約束、修訂語義。&lt;/p&gt;
&lt;p&gt;所以這個 skill 才會強調「解包 - 編輯 - 校驗 - 回包」。&lt;/p&gt;
&lt;h3 id=&#34;2-docx-js-能生成不代表預設值符合你的目標&#34;&gt;2. &lt;code&gt;docx-js&lt;/code&gt; 能生成，不代表預設值符合你的目標
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 明確提到多個預設陷阱，例如 A4 預設、橫向頁面寬高邏輯、列表 bullet、表格寬度雙重宣告、Google Docs 百分比寬度相容性等。&lt;/p&gt;
&lt;p&gt;生成工具只是起點，不是最終品質保證。&lt;/p&gt;
&lt;h3 id=&#34;3-評論與修訂都不是單點修改&#34;&gt;3. 評論與修訂都不是單點修改
&lt;/h3&gt;&lt;p&gt;無論 comment 或 tracked changes，都不是改一個 XML 就結束。&lt;br&gt;
需要維護多部件一致性，這正是腳本化的價值。&lt;/p&gt;
&lt;h3 id=&#34;4能開啟不等於改對了&#34;&gt;4.「能開啟」不等於「改對了」
&lt;/h3&gt;&lt;p&gt;文件能被 Word 開啟，不代表結構正確。&lt;br&gt;
很多問題會在再次編輯、審閱模式、批註顯示、Google Docs 開啟、重新接受修訂時才暴露。&lt;/p&gt;
&lt;p&gt;因此 &lt;code&gt;validate.py&lt;/code&gt; 和 &lt;code&gt;pack.py --original&lt;/code&gt; 非常關鍵。&lt;/p&gt;
&lt;h3 id=&#34;5-依賴外部工具時要先備好環境&#34;&gt;5. 依賴外部工具時要先備好環境
&lt;/h3&gt;&lt;p&gt;這個 skill 依賴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pandoc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice / soffice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Python 依賴，如 &lt;code&gt;defusedxml&lt;/code&gt;、&lt;code&gt;lxml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果環境缺工具，即使流程正確也無法完整執行。&lt;/p&gt;
&lt;h2 id=&#34;這個-skill-適合什麼不適合什麼&#34;&gt;這個 skill 適合什麼，不適合什麼
&lt;/h2&gt;&lt;h3 id=&#34;適合&#34;&gt;適合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;批量生成 Word 報告&lt;/li&gt;
&lt;li&gt;結構化產生正式文件&lt;/li&gt;
&lt;li&gt;自動化修改 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保留或處理 tracked changes&lt;/li&gt;
&lt;li&gt;自動加入批註&lt;/li&gt;
&lt;li&gt;把 Word 文件納入腳本或 agent 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;不太適合&#34;&gt;不太適合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;只做簡單 PDF 導出&lt;/li&gt;
&lt;li&gt;只要純文字內容，不在意 Word 格式&lt;/li&gt;
&lt;li&gt;完全依賴手動可視化編輯&lt;/li&gt;
&lt;li&gt;期待零依賴、零環境準備完成全部 Word 自動化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 強項不在「會生成 Word」，而在「知道 Word 為什麼容易出問題，並先把問題拆開處理」。&lt;br&gt;
它把文件生成、底層 XML 編輯、修訂語義、schema 校驗、Office 相容性等原本零散的知識，整理成一條可執行工作流。&lt;/p&gt;
&lt;p&gt;若只是偶爾導出簡單文件，它可能略重；&lt;br&gt;
但只要場景涉及既有 &lt;code&gt;.docx&lt;/code&gt; 修改、評論、修訂、自動化批處理或相容性要求，這套 skill 的價值就很高，因為它補上的正是 AI 最容易忽略、也是 Office 文件最容易翻車的細節。&lt;/p&gt;
&lt;p&gt;簡單總結：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 負責定義路徑&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/office/*&lt;/code&gt; 負責解包、回包、校驗與相容性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comment.py&lt;/code&gt; 與 &lt;code&gt;accept_changes.py&lt;/code&gt; 負責 Word 專項能力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;schemas/&lt;/code&gt; 與 validators 把「看起來能用」提升到「結構上可靠」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;程式位置：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/skills/tree/main/skills/docx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anthropics/skills/tree/main/skills/docx&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
