<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI Tools on KnightLi Blog</title>
        <link>https://knightli.com/en/categories/ai-tools/</link>
        <description>Recent content in AI Tools on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Thu, 21 May 2026 08:53:13 +0800</lastBuildDate><atom:link href="https://knightli.com/en/categories/ai-tools/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>GitHub AI Open Source Project Categories: From Coding Agent to RAG Knowledge Bases</title>
        <link>https://knightli.com/en/2026/05/21/github-ai-projects-site-statistics/</link>
        <pubDate>Thu, 21 May 2026 08:53:13 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/21/github-ai-projects-site-statistics/</guid>
        <description>&lt;p&gt;This page groups GitHub AI projects by application direction, covering AI coding and Coding Agents, agent skills and workflows, RAG and knowledge bases, multimodal creation, local models and inference, vertical applications and automation, and AI application development infrastructure. New projects can be added later using the same structure.&lt;/p&gt;
&lt;h2 id=&#34;category-summary&#34;&gt;Category Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Category&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Projects&lt;/th&gt;
          &lt;th&gt;Who Should Start Here&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Coding and Coding Agents&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;19&lt;/td&gt;
          &lt;td&gt;Users who often work with Claude Code, Codex, Cursor, terminal agents, or repository automation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent Skills and Workflows&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users who want to standardize AI coding, research, or content workflows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG, Knowledge Bases, and Memory&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users who need document retrieval, knowledge bases, long-term memory, web crawling, or structured extraction&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vertical Applications and Automation&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Users looking at finance, trading, Xianyu monitoring, desktop control, browser automation, and other applied scenarios&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multimodal and Content Creation&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Users working on images, video, transcription, prompt libraries, and content distribution&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Application Development Infrastructure&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;3&lt;/td&gt;
          &lt;td&gt;Developers building AI apps, browser automation, or Prompt/MCP toolchains&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Local Models and Inference&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;Users interested in local DeepSeek, inference engines, and hardware adaptation&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The distribution shows several high-frequency directions in current AI open source projects: AI coding tools dominate, followed by agent workflows, RAG knowledge bases, and concrete application scenarios. Pure model inference projects are fewer here because much local deployment content is organized around models, GPUs, or deployment plans rather than a single GitHub project.&lt;/p&gt;
&lt;h2 id=&#34;ai-coding-and-coding-agents&#34;&gt;AI Coding and Coding Agents
&lt;/h2&gt;&lt;p&gt;This group focuses on code understanding, code modification, engineering workflows, and terminal agents. It is the largest group, with &lt;strong&gt;19&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/&#34; &gt;Ralph: turning Claude Code and Amp into an autonomous development loop&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;Drive Claude Code / Amp through PRD, planning, execution, and review loops&lt;/td&gt;
          &lt;td&gt;Users who want a straighter agent coding process&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/en/2026/05/01/claude-mem-persistent-memory-for-claude-code/&#34; &gt;Claude-Mem: long-term cross-session memory for 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;Add cross-session memory to Claude Code&lt;/td&gt;
          &lt;td&gt;Heavy Claude Code users&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/en/2026/05/01/claude-code-hooks-mastery-guide/&#34; &gt;Claude Code Hooks Mastery: getting started with 13 hooks lifecycle stages&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;Learn Claude Code hooks lifecycle and automation control&lt;/td&gt;
          &lt;td&gt;Users who want to customize Claude Code workflows&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/en/2026/05/01/compound-engineering-plugin-ai-coding-workflow/&#34; &gt;Compound Engineering Plugin: turning AI coding into planning, execution, and review loops&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;Split AI coding into planning, execution, and review cycles&lt;/td&gt;
          &lt;td&gt;Users who care about engineering discipline in AI coding&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/en/2026/05/01/free-claude-code-anthropic-compatible-proxy/&#34; &gt;free-claude-code: connecting Claude Code to OpenRouter, DeepSeek, and local models&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;Use a proxy to connect Claude Code to different model backends&lt;/td&gt;
          &lt;td&gt;Users who want to reduce Claude Code cost&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/en/2026/04/12/hermes-agent-intro-guide-vs-openclaw/&#34; &gt;What is Hermes Agent: overview, strengths, quick start, and OpenClaw comparison&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;Local agent framework with tool calling and task execution&lt;/td&gt;
          &lt;td&gt;Users who want to run local agents&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/en/2026/04/12/openharness-basic-functions/&#34; &gt;What OpenHarness can do as an open source 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 and multi-agent execution framework&lt;/td&gt;
          &lt;td&gt;Users researching agent orchestration&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/en/2026/05/13/codexbridge-openai-compatible-api/&#34; &gt;Using Codex with domestic LLMs: OpenAI-compatible APIs and 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;Connect Codex to OpenAI-compatible model APIs&lt;/td&gt;
          &lt;td&gt;Users who want Codex with domestic models&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/en/2026/05/13/ccx-ai-api-proxy-gateway/&#34; &gt;Using CCX to manage OpenAI-compatible APIs for Codex and domestic models&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;Manage API proxies for Claude, Codex, Gemini, and more&lt;/td&gt;
          &lt;td&gt;Multi-model switching users&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/en/2026/05/14/cc-haha-claude-code-desktop-workbench/&#34; &gt;cc-haha: a desktop workspace for 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;Desktop workspace and Computer Use entry for Claude Code&lt;/td&gt;
          &lt;td&gt;Claude Code users who prefer a GUI&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/en/2026/05/16/deepseek-tui-terminal-coding-agent/&#34; &gt;DeepSeek-TUI: turning DeepSeek V4 into a terminal coding agent&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;Run a DeepSeek coding agent in the terminal&lt;/td&gt;
          &lt;td&gt;DeepSeek and command-line users&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/en/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;Open Design: turning Claude Code and Codex into AI design tools&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;Bring Claude Code / Codex into design generation&lt;/td&gt;
          &lt;td&gt;Users who want agents for design prototypes&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/en/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/&#34; &gt;agentmemory: persistent memory for Claude Code, Codex, and 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;Add persistent memory to coding agents&lt;/td&gt;
          &lt;td&gt;Developers maintaining long-running projects&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/en/2026/05/21/safishamsi-graphify-ai-code-knowledge-graph/&#34; &gt;Graphify: turning a codebase into an AI-queryable knowledge graph&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;Convert a codebase into a knowledge graph to reduce repeated file reads&lt;/td&gt;
          &lt;td&gt;Large-codebase users&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/en/2026/05/06/cc-switch-ai-cli-manager/&#34; &gt;CC Switch: managing Claude Code, Codex, Gemini CLI, and OpenClaw in one desktop tool&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;Manage multiple AI CLI tools and account/config switching&lt;/td&gt;
          &lt;td&gt;Users of multiple CLI tools&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/en/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/&#34; &gt;Warp open source: from terminal to 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 terminal and development environment&lt;/td&gt;
          &lt;td&gt;Heavy terminal users&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/en/2026/05/08/opencode-open-source-ai-coding-agent/&#34; &gt;opencode vs Claude Code vs Codex: open source AI coding tools guide&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;Open source AI coding agent&lt;/td&gt;
          &lt;td&gt;Users looking for Claude Code / Codex alternatives&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/en/2026/05/08/9router-ai-coding-router-token-saver/&#34; &gt;9Router: connecting Claude Code, Codex, and Cursor to one AI router&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 coding model routing and token cost control&lt;/td&gt;
          &lt;td&gt;Multi-tool, multi-model users&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/en/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/&#34; &gt;goose: an open source AI Agent across desktop, CLI, and API&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;Open source agent across desktop, CLI, and API&lt;/td&gt;
          &lt;td&gt;Users who want a general agent workspace&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;agent-skills-and-workflows&#34;&gt;Agent Skills and Workflows
&lt;/h2&gt;&lt;p&gt;This group focuses on turning AI capabilities into repeatable skills, processes, and specifications. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/&#34; &gt;Rejecting Vibe Coding: Matt Pocock&amp;rsquo;s skills repo adds engineering constraints to AI coding&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;Use skills to constrain AI coding workflows&lt;/td&gt;
          &lt;td&gt;Users who want engineering discipline for agents&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/en/2026/05/15/obra-superpowers-agentic-skills-framework/&#34; &gt;Superpowers: bringing coding agents back into engineering workflows&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 and software development methodology&lt;/td&gt;
          &lt;td&gt;Users who want systematic coding-agent workflows&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/en/2026/05/15/prompt-vault-coding-prompt-benchmark/&#34; &gt;Prompt-Vault: a prompt specification library for testing AI coding ability&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;Collect prompt specs for testing AI coding ability&lt;/td&gt;
          &lt;td&gt;Model and tool evaluators&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/en/2026/05/15/web-video-presentation-agent-skill/&#34; &gt;web-video-presentation: an agent skill for turning articles into recordable web videos&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;Turn articles into recordable web videos&lt;/td&gt;
          &lt;td&gt;Content creators and automation users&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/en/2026/04/22/nuwa-skill-distill-how-someone-thinks/&#34; &gt;nuwa-skill: making &amp;ldquo;distilling a person&amp;rdquo; into an executable workflow&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;Recreate a person&amp;rsquo;s expression and thinking flow with a skill&lt;/td&gt;
          &lt;td&gt;Users building style-based agents&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/en/2026/05/17/scientific-agent-skills/&#34; &gt;Scientific Agent Skills: giving research workflows to AI agents&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 collection for scientific workflows&lt;/td&gt;
          &lt;td&gt;Researchers, data analysts, and technical writers&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/en/2026/05/16/easy-vibe-vibe-coding-learning-map/&#34; &gt;easy-vibe: a learning map for Vibe Coding beginners&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;Learning map for Vibe Coding&lt;/td&gt;
          &lt;td&gt;AI coding beginners&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;rag-knowledge-bases-and-memory&#34;&gt;RAG, Knowledge Bases, and Memory
&lt;/h2&gt;&lt;p&gt;This group addresses document retrieval, knowledge base construction, long-term memory, and structured extraction. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/05/01/google-langextract-llm-structured-data-extraction/&#34; &gt;Google LangExtract: extracting structured data from long text with LLMs&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;Extract structured information from long text&lt;/td&gt;
          &lt;td&gt;Information extraction and data processing users&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/en/2026/05/01/qmd-markdown-search-for-ai-agents/&#34; &gt;qmd: local Markdown document search for AI agents&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;Local Markdown document search&lt;/td&gt;
          &lt;td&gt;Users managing knowledge in 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/en/2026/04/15/firecrawl-ai-web-data-api/&#34; &gt;Firecrawl: web search, crawling, and interaction API for AI agents&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;Web crawling, search, and structured data entry point&lt;/td&gt;
          &lt;td&gt;RAG and agent data-ingestion users&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/en/2026/04/15/ragflow-rag-engine-guide/&#34; &gt;RAGFlow: features and usage of an open source RAG engine&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;Open source RAG engine&lt;/td&gt;
          &lt;td&gt;Enterprise knowledge base and document Q&amp;amp;A users&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/en/2026/05/15/openhuman-open-source-personal-ai-agent/&#34; &gt;OpenHuman: the desktop route for open source personal AI agents&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;Local-first personal AI agent and memory layer&lt;/td&gt;
          &lt;td&gt;Users who want to integrate personal data&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/en/2026/05/17/openkb-llm-knowledge-base/&#34; &gt;OpenKB: compiling documents into continuously updated LLM knowledge bases&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;Compile documents into updatable knowledge bases&lt;/td&gt;
          &lt;td&gt;Documentation knowledge-base maintainers&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/en/2026/05/20/vectifyai-pageindex-vectorless-rag/&#34; &gt;PageIndex: reasoning-style RAG document indexing without vector databases&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;Reasoning-style document indexing without vector databases&lt;/td&gt;
          &lt;td&gt;Users watching new RAG approaches&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;multimodal-and-content-creation&#34;&gt;Multimodal and Content Creation
&lt;/h2&gt;&lt;p&gt;This group covers image, video, transcription, and content distribution scenarios. It includes &lt;strong&gt;5&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/04/19/rembg-background-removal-notes/&#34; &gt;rembg: local image background removal tool&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;Local image background removal&lt;/td&gt;
          &lt;td&gt;E-commerce, design, and image-processing users&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/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;GPT-Image 2 prompt library: e-commerce, posters, portraits, and 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 prompts and case library&lt;/td&gt;
          &lt;td&gt;AI art and prompt users&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/en/2026/05/01/faster-whisper-speech-to-text/&#34; &gt;faster-whisper: a faster Whisper transcription engine&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;High-performance speech-to-text&lt;/td&gt;
          &lt;td&gt;Subtitle, transcription, and speech-processing users&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/en/2026/05/07/pixelle-video-ai-short-video-engine/&#34; &gt;Pixelle-Video: an open source AI engine for generating short videos from one topic&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;One-topic short-video generation workflow&lt;/td&gt;
          &lt;td&gt;Short-video and AIGC creators&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/en/2026/05/19/aitoearn-ai-content-marketing-agent/&#34; &gt;Too many content platforms? AiToEarn uses AI agents to help creators save effort&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;Multi-platform content distribution and creator automation&lt;/td&gt;
          &lt;td&gt;Content operators and creators&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;local-models-and-inference&#34;&gt;Local Models and Inference
&lt;/h2&gt;&lt;p&gt;This group focuses on local model runtime and inference experiments. It currently has fewer projects, with &lt;strong&gt;1&lt;/strong&gt; project.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/05/11/deepseek-v4-flash-ds4-metal/&#34; &gt;Running DeepSeek 4 locally: Antirez ds4 on 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;Experiment with running DeepSeek 4 on Apple Silicon&lt;/td&gt;
          &lt;td&gt;Local model and inference experiment users&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;vertical-applications-and-automation&#34;&gt;Vertical Applications and Automation
&lt;/h2&gt;&lt;p&gt;This group applies agents or AI capabilities to finance, trading, browsers, desktops, e-commerce monitoring, and other concrete scenarios. It includes &lt;strong&gt;7&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/&#34; &gt;TradingAgents-CN: a multi-agent financial trading research framework for Chinese users&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;Multi-agent financial trading research framework&lt;/td&gt;
          &lt;td&gt;Quant, finance, and agent researchers&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/en/2026/05/01/finceptterminal-open-source-financial-terminal/&#34; &gt;FinceptTerminal: open source financial terminal, quant research, and AI Agent workspace&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;Financial terminal, quant research, and AI agent workspace&lt;/td&gt;
          &lt;td&gt;Financial analysis and quant users&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/en/2026/05/16/anthropic-financial-services-agent-templates/&#34; &gt;Anthropic financial-services: reusable templates for financial agent scenarios&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;Financial services agent templates&lt;/td&gt;
          &lt;td&gt;Users building financial AI solutions&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/en/2026/05/17/ai-goofish-monitor/&#34; &gt;ai-goofish-monitor: open source AI monitoring system for Xianyu products&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 product monitoring and Xianyu automation&lt;/td&gt;
          &lt;td&gt;Second-hand marketplace monitoring users&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/en/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/&#34; &gt;CloakBrowser: a more human-like browser for Playwright and 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;More human-like browser automation environment&lt;/td&gt;
          &lt;td&gt;Browser automation and agent operation scenarios&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/en/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/&#34; &gt;Let AI operate the computer? UI-TARS-desktop connects desktop, browser, and tools&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;Desktop, browser, and tool operation agent&lt;/td&gt;
          &lt;td&gt;Users who want AI to operate computers&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/en/2026/05/19/ai-trader-agent-native-trading-platform/&#34; &gt;What is AI-Trader: a platform for AI agents to publish trading signals and run simulations&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 trading signals and simulated trading platform&lt;/td&gt;
          &lt;td&gt;Financial agent and trading researchers&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;ai-application-development-infrastructure&#34;&gt;AI Application Development Infrastructure
&lt;/h2&gt;&lt;p&gt;This group provides foundational components for building AI applications and agent toolchains. It includes &lt;strong&gt;3&lt;/strong&gt; projects.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Project&lt;/th&gt;
          &lt;th&gt;Article&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Core Use&lt;/th&gt;
          &lt;th&gt;Best For&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/en/2026/05/01/prompt-optimizer-prompt-engineering-tool/&#34; &gt;Prompt Optimizer: open source prompt optimization, testing, and MCP tools&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;Prompt optimization, testing, and MCP tools&lt;/td&gt;
          &lt;td&gt;Prompt engineering and app-tuning users&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/en/2026/04/12/playwright-cli-getting-started/&#34; &gt;Playwright CLI basics: installation, skills, sessions, and common commands&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;Browser automation CLI for coding agents&lt;/td&gt;
          &lt;td&gt;Agent users who need browser operation&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/en/2026/05/17/vercel-ai-sdk-typescript-agent-toolkit/&#34; &gt;What is Vercel AI SDK? A unified toolkit for TypeScript AI apps&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 application SDK&lt;/td&gt;
          &lt;td&gt;Front-end and full-stack developers&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>What Is PageIndex? A Reasoning-Based RAG Document Index Without Vector Databases</title>
        <link>https://knightli.com/en/2026/05/20/vectifyai-pageindex-vectorless-rag/</link>
        <pubDate>Wed, 20 May 2026 23:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/20/vectifyai-pageindex-vectorless-rag/</guid>
        <description>&lt;p&gt;&lt;code&gt;VectifyAI/PageIndex&lt;/code&gt; is an interesting RAG project. Instead of starting with &amp;ldquo;build another vector database,&amp;rdquo; it first organizes long documents into a tree structure similar to a table of contents, then lets an LLM perform reasoning-based retrieval along that tree.&lt;/p&gt;
&lt;p&gt;Project link: &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;At the time of writing, the GitHub page shows about 31.8k stars and 2.7k forks, with an MIT license. The README positions it as &lt;code&gt;Vectorless, Reasoning-based RAG&lt;/code&gt;: RAG without a vector database, based on reasoning.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-tries-to-solve&#34;&gt;What Problem It Tries to Solve
&lt;/h2&gt;&lt;p&gt;The common path for traditional RAG is: chunk the document, vectorize the chunks, store them in a vector database, then retrieve passages by similarity search. This approach is simple, general, and mature, but it often runs into several problems with long professional documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Similarity is not the same as true relevance.&lt;/li&gt;
&lt;li&gt;Document structure is broken apart by chunking, and section relationships are lost.&lt;/li&gt;
&lt;li&gt;Retrieval results are hard to explain, making it difficult to say why a passage was selected.&lt;/li&gt;
&lt;li&gt;For financial reports, regulatory filings, legal documents, and technical manuals, questions often require reasoning across sections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PageIndex takes the opposite route: first organize the document into a semantic tree, then let the model search it like a human reading a table of contents, jumping into sections, and narrowing down to details.&lt;/p&gt;
&lt;h2 id=&#34;the-basic-pageindex-workflow&#34;&gt;The Basic PageIndex Workflow
&lt;/h2&gt;&lt;p&gt;The README describes PageIndex retrieval in two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generate a &lt;code&gt;Table-of-Contents&lt;/code&gt;-like tree index for the document.&lt;/li&gt;
&lt;li&gt;Perform reasoning-based retrieval through tree search.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This tree is not just a file directory. It is a document structure designed for LLM use. Nodes can contain titles, page ranges, summaries, child nodes, and other metadata. When answering a question, the model does not need to face a pile of fragmented chunks immediately. It can first decide which section to enter, then continue searching downward.&lt;/p&gt;
&lt;p&gt;This method is better suited to documents that are well structured but very long, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Financial reports and SEC filings.&lt;/li&gt;
&lt;li&gt;Regulatory and compliance documents.&lt;/li&gt;
&lt;li&gt;Academic textbooks and papers.&lt;/li&gt;
&lt;li&gt;Legal documents.&lt;/li&gt;
&lt;li&gt;Technical manuals and product documentation.&lt;/li&gt;
&lt;li&gt;Large PDFs that exceed the model context window.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-it-differs-from-traditional-vector-rag&#34;&gt;How It Differs From Traditional Vector RAG
&lt;/h2&gt;&lt;p&gt;PageIndex&amp;rsquo;s main selling points can be summarized in five areas.&lt;/p&gt;
&lt;p&gt;First, it does not require a Vector DB. It relies on document structure and LLM reasoning to locate content, rather than only using vector similarity search.&lt;/p&gt;
&lt;p&gt;Second, it does not use traditional chunking. Documents are organized by natural sections instead of fixed-length text fragments.&lt;/p&gt;
&lt;p&gt;Third, explainability is stronger. The retrieval path can map back to pages, sections, and tree nodes, making it easier to trace than &amp;ldquo;this text was hit by vector similarity.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Fourth, retrieval is context-aware. The question, conversation history, and domain background can all affect the tree search path.&lt;/p&gt;
&lt;p&gt;Fifth, it is closer to how human experts read documents. People usually do not cut an entire document into small chunks and calculate similarity; they first inspect the table of contents, locate sections, and then read details.&lt;/p&gt;
&lt;p&gt;This does not mean vector databases have no value. A more accurate view is that PageIndex fits scenarios where &amp;ldquo;semantic similarity is not enough, and structure plus reasoning need to participate&amp;rdquo; in long-document retrieval.&lt;/p&gt;
&lt;h2 id=&#34;how-to-run-it-locally&#34;&gt;How to Run It Locally
&lt;/h2&gt;&lt;p&gt;The README provides a local self-hosting path. First install dependencies:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then create a &lt;code&gt;.env&lt;/code&gt; file in the project root and write your LLM API key. The project supports multiple models through &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;Generate a PageIndex structure for a PDF:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 is also supported:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Common optional parameters include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The README also notes that the local open-source version uses standard PDF parsing. For complex PDFs, the project&amp;rsquo;s cloud service provides enhanced OCR, tree building, and retrieval pipelines.&lt;/p&gt;
&lt;h2 id=&#34;agentic-vectorless-rag-example&#34;&gt;Agentic Vectorless RAG Example
&lt;/h2&gt;&lt;p&gt;The project also provides an agentic vectorless RAG example using self-hosted PageIndex and OpenAI Agents SDK. Install the optional dependency and run it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The value of this example is that it pushes PageIndex from &amp;ldquo;generate a document tree&amp;rdquo; to &amp;ldquo;let an Agent use the document tree for retrieval.&amp;rdquo; If you are building an enterprise knowledge base, financial report Q&amp;amp;A, regulatory Q&amp;amp;A, or technical documentation Agent, this example is more worth running than only reading the README.&lt;/p&gt;
&lt;h2 id=&#34;cloud-service-mcp-and-api&#34;&gt;Cloud Service, MCP, and API
&lt;/h2&gt;&lt;p&gt;PageIndex is not just a GitHub repo. The project page also lists several entry points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Self-hosting: run the open-source code locally, suitable for experiments and controlled deployments.&lt;/li&gt;
&lt;li&gt;Chat Platform: a ChatGPT-style document analysis platform.&lt;/li&gt;
&lt;li&gt;MCP / API: useful for integrating with existing Agents or automation workflows.&lt;/li&gt;
&lt;li&gt;Enterprise: for private or on-premises deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This shows that its positioning is not a simple demo. It aims to turn &amp;ldquo;reasoning-based document retrieval&amp;rdquo; into an integrable document intelligence infrastructure.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;PageIndex is suitable for tasks such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long PDF Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;Financial reports, annual reports, prospectuses, and regulatory filing analysis.&lt;/li&gt;
&lt;li&gt;Legal and compliance document retrieval.&lt;/li&gt;
&lt;li&gt;Technical manual Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;Multi-section textbook or paper retrieval.&lt;/li&gt;
&lt;li&gt;Enterprise knowledge bases that need explainable retrieval paths.&lt;/li&gt;
&lt;li&gt;Providing structured document context to Agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your material is short, has little structure, or is just a normal FAQ, traditional embedding + vector DB may already be enough. PageIndex&amp;rsquo;s advantages are more likely to appear in long documents, strong structure, professional domains, and questions that require reasoning.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch&#34;&gt;Things to Watch
&lt;/h2&gt;&lt;p&gt;First, PageIndex still depends on LLMs. Tree building, summaries, and retrieval quality are affected by model capability, prompts, and document parsing quality.&lt;/p&gt;
&lt;p&gt;Second, the local version uses standard PDF parsing. Complex scanned documents, chart-heavy PDFs, or messy layouts may require OCR and stronger preprocessing.&lt;/p&gt;
&lt;p&gt;Third, vectorless does not mean zero cost. Tree building itself also consumes model calls and time, especially for large-scale document collections.&lt;/p&gt;
&lt;p&gt;Fourth, PageIndex is more like a document structure indexing and reasoning retrieval framework. It does not directly replace every RAG stack. In production, it may also be combined with vector retrieval, keyword retrieval, permission control, caching, and audit systems.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;What makes PageIndex interesting is that it shifts RAG from &amp;ldquo;text similarity retrieval&amp;rdquo; toward &amp;ldquo;document structure + LLM reasoning.&amp;rdquo; For long and professional documents, this direction is worth watching.&lt;/p&gt;
&lt;p&gt;If you are building enterprise document Q&amp;amp;A, financial report analysis, regulatory retrieval, or technical manual Agents, PageIndex is a new RAG architecture reference: give documents structure first, then let the model reason along that structure, instead of breaking everything into chunks and putting it all into a vector database from the beginning.&lt;/p&gt;
&lt;p&gt;References:&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>How to Use Gemini 3.5 Flash and Gemini Omni for Free: Entry Points for Users and Developers</title>
        <link>https://knightli.com/en/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/en/2026/05/20/gemini-3-5-flash-omni-free-access/</guid>
        <description>&lt;p&gt;After Google released Gemini 3.5 Flash and Gemini Omni, the practical question is not the benchmark score, but how ordinary users and developers can actually use them, which entry points are free, and which ones are only low-friction trials.&lt;/p&gt;
&lt;p&gt;The short version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For chat, writing, image understanding, and everyday Q&amp;amp;A: use Gemini app first.&lt;/li&gt;
&lt;li&gt;To test Gemini 3.5 Flash parameters, prompts, and multimodal input: use Google AI Studio.&lt;/li&gt;
&lt;li&gt;To call Gemini 3.5 Flash from code: create an API key in AI Studio.&lt;/li&gt;
&lt;li&gt;To try it from the terminal for free: look at Gemini CLI.&lt;/li&gt;
&lt;li&gt;To try Gemini Omni video editing: start with Gemini app and Google Flow.&lt;/li&gt;
&lt;li&gt;For real production use: do not rely on free quotas; move to a paid API or Vertex AI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: free quotas, regional availability, subscription tiers, and model menus change over time. This article was written on May 20, 2026. Before official use, always check Google&amp;rsquo;s current pages.&lt;/p&gt;
&lt;h2 id=&#34;free-gemini-35-flash-method-1-gemini-app&#34;&gt;Free Gemini 3.5 Flash Method 1: Gemini App
&lt;/h2&gt;&lt;p&gt;The simplest entry point is 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;The basic flow is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Gemini.&lt;/li&gt;
&lt;li&gt;Sign in with a Google account.&lt;/li&gt;
&lt;li&gt;Look for &lt;code&gt;3.5 Flash&lt;/code&gt; in the model selector.&lt;/li&gt;
&lt;li&gt;Start chatting.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This entry point is best for ordinary users. You can use it for writing, summarization, image understanding, file analysis, everyday Q&amp;amp;A, and simple planning. According to public reports, Gemini 3.5 Flash has been made available to users globally and can be selected from Gemini&amp;rsquo;s model dropdown.&lt;/p&gt;
&lt;p&gt;The limits are also clear: free users usually face daily message, regional, and feature limits. If you exceed the limit, you need to wait for the quota to refresh or upgrade your subscription.&lt;/p&gt;
&lt;h2 id=&#34;free-gemini-35-flash-method-2-google-ai-studio&#34;&gt;Free Gemini 3.5 Flash Method 2: Google AI Studio
&lt;/h2&gt;&lt;p&gt;If you want more than chat, and need to tune prompts, inspect parameters, or test structured output, Google AI Studio is a better fit:&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;Basic flow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sign in to Google AI Studio.&lt;/li&gt;
&lt;li&gt;Create a new prompt.&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;gemini-3.5-flash&lt;/code&gt; in the model dropdown.&lt;/li&gt;
&lt;li&gt;Enter the prompt and run it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI Studio gives you more control. You can adjust temperature, system instructions, structured output, and multi-image input, and you can export a working prompt into code or an API call.&lt;/p&gt;
&lt;p&gt;For developers, AI Studio is a free testing bench. Tune the prompt and input format here first, then move into API integration to avoid wasting quota.&lt;/p&gt;
&lt;h2 id=&#34;free-gemini-35-flash-method-3-free-api-key&#34;&gt;Free Gemini 3.5 Flash Method 3: Free API Key
&lt;/h2&gt;&lt;p&gt;Developers care most about the API. AI Studio can create a Gemini API key for calling &lt;code&gt;gemini-3.5-flash&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Basic flow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Google AI Studio.&lt;/li&gt;
&lt;li&gt;Find &lt;code&gt;Get API key&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Select or create a project.&lt;/li&gt;
&lt;li&gt;Create an API key.&lt;/li&gt;
&lt;li&gt;Save the key to a local environment variable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Python example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Explain in three sentences what Gemini 3.5 Flash is best suited for.&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 example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Explain in three sentences what Gemini 3.5 Flash is best suited for.&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; example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Public information suggests that the AI Studio free tier usually gives Gemini Flash models a daily request allowance. The exact numbers can vary by time, region, and account status. Common claims include around 1,500 requests per day, per-minute request limits, and token limits. Do not bake those numbers into a production plan; check Google&amp;rsquo;s current pricing and limits pages before launch.&lt;/p&gt;
&lt;h2 id=&#34;free-gemini-35-flash-method-4-gemini-cli&#34;&gt;Free Gemini 3.5 Flash Method 4: Gemini CLI
&lt;/h2&gt;&lt;p&gt;If you like the command line, look at Gemini CLI. It is useful for temporary scripts, repository summaries, file reading, and quick Q&amp;amp;A in the terminal.&lt;/p&gt;
&lt;p&gt;Installation is usually:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The CLI is better suited to personal developer workflows than production integration. Production should still use API keys, service accounts, permission controls, and auditable calling patterns.&lt;/p&gt;
&lt;h2 id=&#34;free-or-low-friction-gemini-omni-access-gemini-app-and-google-flow&#34;&gt;Free or Low-Friction Gemini Omni Access: Gemini App and Google Flow
&lt;/h2&gt;&lt;p&gt;Gemini Omni is a multimodal model for video creation and editing. Its core capability is not ordinary text Q&amp;amp;A, but multi-turn video editing with natural language while referencing image, text, video, and audio inputs.&lt;/p&gt;
&lt;p&gt;The Google DeepMind page lists these entry points:&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;The page also notes that a Google AI subscription is required, and that features vary by subscription tier and region. So &amp;ldquo;free access&amp;rdquo; to Gemini Omni should be understood more carefully: some entry points may let free users see or try part of the experience, but full video editing may require a subscription, regional availability, or product rollout access.&lt;/p&gt;
&lt;p&gt;If you only want to try it, use this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Gemini app first and check whether Gemini Omni or a related video editing entry is available.&lt;/li&gt;
&lt;li&gt;Then open 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;If you make short-form content, watch for Omni-related editing features in YouTube Shorts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the entry point is not visible, it usually does not mean you did something wrong. Your account, region, subscription tier, or rollout group may simply not qualify yet.&lt;/p&gt;
&lt;h2 id=&#34;how-gemini-omni-is-best-used&#34;&gt;How Gemini Omni Is Best Used
&lt;/h2&gt;&lt;p&gt;Gemini Omni is more suitable for creators than for ordinary chat.&lt;/p&gt;
&lt;p&gt;You can try these directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upload or select a video and ask it to change the style.&lt;/li&gt;
&lt;li&gt;Make a specific action in the video more exaggerated.&lt;/li&gt;
&lt;li&gt;Use a reference image to replace an object or character in the scene.&lt;/li&gt;
&lt;li&gt;Modify camera, action, environment, and style over multiple turns.&lt;/li&gt;
&lt;li&gt;Combine sketches, reference images, audio, or video into a new output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can write prompts as if giving instructions to an editor:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Keep the original person and room structure unchanged. Change the effect after touching the mirror into liquid ripples. The motion should feel natural, and the lighting should not change abruptly.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For multi-turn editing, do not pack too many requirements into one request. A safer approach is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Change the main action first.&lt;/li&gt;
&lt;li&gt;Then change the style.&lt;/li&gt;
&lt;li&gt;Then adjust the camera angle.&lt;/li&gt;
&lt;li&gt;Finally tune sound, text, and rhythm.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This makes consistency easier to maintain and helps you identify which step caused a problem.&lt;/p&gt;
&lt;h2 id=&#34;common-pitfalls-when-using-free-access&#34;&gt;Common Pitfalls When Using Free Access
&lt;/h2&gt;&lt;p&gt;First, free quota is not production quota. A free API key is suitable for testing, personal tools, and prototypes, not for promising a stable service.&lt;/p&gt;
&lt;p&gt;Second, do not send sensitive data to free or third-party entry points. This includes private code, customer data, contracts, keys, financial spreadsheets, and internal documents.&lt;/p&gt;
&lt;p&gt;Third, check data-use settings. Free tiers may have different data-use policies, so review the settings in AI Studio or your Google account before use.&lt;/p&gt;
&lt;p&gt;Fourth, video capabilities are usually more restricted than text capabilities. Gemini Omni-style video editing may be limited by subscription, region, queueing, duration, resolution, and content safety policies.&lt;/p&gt;
&lt;p&gt;Fifth, be careful with third-party &amp;ldquo;unlimited free API&amp;rdquo; services. Many gateways rate-limit, forward requests, keep logs, or use opaque payment methods. Sensitive work should not go through these entry points.&lt;/p&gt;
&lt;h2 id=&#34;which-entry-point-should-you-choose&#34;&gt;Which Entry Point Should You Choose?
&lt;/h2&gt;&lt;p&gt;If you are an ordinary user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini 3.5 Flash: use Gemini app.&lt;/li&gt;
&lt;li&gt;Gemini Omni: check Gemini app first, then Google Flow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are a creator:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Google Flow to try Omni video workflows.&lt;/li&gt;
&lt;li&gt;Use Gemini app for scripts, storyboards, prompts, and material descriptions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are a developer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use AI Studio to debug prompts.&lt;/li&gt;
&lt;li&gt;Use an API key to integrate &lt;code&gt;gemini-3.5-flash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use Gemini CLI for personal terminal workflows.&lt;/li&gt;
&lt;li&gt;For production, consider Vertex AI or the paid API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are an enterprise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not rely on free quotas.&lt;/li&gt;
&lt;li&gt;Focus on permissions, logs, audits, data residency, compliance, and key management.&lt;/li&gt;
&lt;li&gt;For video generation and editing, add watermarking, content review, and copyright processes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Gemini 3.5 Flash has relatively clear free access paths: Gemini app, Google AI Studio, AI Studio API key, and Gemini CLI can all serve as low-friction entry points. It is suitable for chat, writing, coding, agent prototypes, and multimodal testing.&lt;/p&gt;
&lt;p&gt;Gemini Omni focuses on video editing and multimodal creation. Its main entry points are Gemini app, Google Flow, and YouTube Shorts, but full capabilities are more likely to depend on subscription and region. It is best for creators to start with trials and concept validation, not to plan around it as a stable production service from day one.&lt;/p&gt;
&lt;p&gt;The safest strategy is: test text and code tasks first with the Gemini 3.5 Flash free tier; validate video creation effects with Gemini Omni in Gemini app or Flow; when you need to launch something real, move to a formal setup with auditability, billing, and controlled permissions.&lt;/p&gt;
&lt;p&gt;References:&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 original link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>What Is Gemini Omni? A Complete Look at Google&#39;s AI Video Multi-Turn Editing Model</title>
        <link>https://knightli.com/en/2026/05/20/google-gemini-omni-video-editing/</link>
        <pubDate>Wed, 20 May 2026 23:11:58 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/20/google-gemini-omni-video-editing/</guid>
        <description>&lt;p&gt;Google DeepMind has published a page for &lt;code&gt;Gemini Omni&lt;/code&gt;. Its positioning is direct: create content from any input, with the current focus starting from video.&lt;/p&gt;
&lt;p&gt;If Nano Banana is more about image generation and editing, Gemini Omni feels more like a multimodal editing model for video. Users can modify a video step by step with natural language, with each later change building on the previous one, while trying to keep scenes, people, actions, and visual logic consistent.&lt;/p&gt;
&lt;p&gt;Project page: &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;the-core-problem-it-tries-to-solve&#34;&gt;The Core Problem It Tries to Solve
&lt;/h2&gt;&lt;p&gt;Traditional video editing often requires timelines, layers, masks, keyframes, color grading, audio tracks, and a lot of manual work. AI video generation tools can already create clips from prompts, but they often run into two problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A generated result is hard to refine precisely.&lt;/li&gt;
&lt;li&gt;During multi-turn edits, characters, scenes, styles, and actions can drift.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Gemini Omni is aimed at the second step: not just generating a video, but letting users keep asking for changes as if they were talking to an editor.&lt;/p&gt;
&lt;p&gt;The project page describes it as a way to edit any video through natural, step-by-step conversation. Each edit builds on the prior result, with the goal of maintaining a coherent and unified scene.&lt;/p&gt;
&lt;h2 id=&#34;main-capabilities&#34;&gt;Main Capabilities
&lt;/h2&gt;&lt;p&gt;Gemini Omni&amp;rsquo;s capabilities can be grouped into several areas.&lt;/p&gt;
&lt;p&gt;The first is natural-language video editing. Users can directly ask the model to change a video&amp;rsquo;s aesthetic style, motion, or effects. For example, it can make a mirror ripple like liquid, turn a person into line art, a felt toy, or a transparent holographic wireframe, or transform an entire environment into 3D voxel art.&lt;/p&gt;
&lt;p&gt;The second is action reconstruction. It can change what happens in a video, such as enlarging a hand-formed hole, making a toy produce the corresponding animal sound, or making building lights react to music.&lt;/p&gt;
&lt;p&gt;The third is editing real video based on reference images. Users can provide an image reference and ask the model to place a building, sun, aircraft, or other object into a real video scene.&lt;/p&gt;
&lt;p&gt;The fourth is maintaining consistency across multi-turn edits. The page shows a continuous editing flow: moving a violinist into a reference-image environment, removing the violin, and then changing the shot to an over-the-shoulder angle. This is closer to an actual creative process than a one-shot prompt.&lt;/p&gt;
&lt;p&gt;The fifth is multi-input reference. Gemini Omni can combine image, text, video, and audio inputs into one output, supporting tasks such as style transfer, motion transfer, character replacement, and sketch-to-video generation.&lt;/p&gt;
&lt;h2 id=&#34;why-it-emphasizes-world-knowledge&#34;&gt;Why It Emphasizes World Knowledge
&lt;/h2&gt;&lt;p&gt;Google repeatedly emphasizes that Gemini Omni is not only about making visuals look realistic. It also uses Gemini&amp;rsquo;s world knowledge, physical intuition, history, science, and narrative logic.&lt;/p&gt;
&lt;p&gt;That matters. If a video model only optimizes for visual quality, it can easily produce illogical motion, confused object relationships, or mismatches between text and image. Gemini Omni&amp;rsquo;s goal is for video to look right while also being more coherent in story, physics, and meaning.&lt;/p&gt;
&lt;p&gt;Examples on the page include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A marble rolling through a chain-reaction track.&lt;/li&gt;
&lt;li&gt;A claymation explanation of protein folding.&lt;/li&gt;
&lt;li&gt;A stop-motion style explanation of how the hippocampus works.&lt;/li&gt;
&lt;li&gt;Letters appearing in sync with objects in the scene.&lt;/li&gt;
&lt;li&gt;On-screen words appearing one by one to the rhythm.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These examples suggest that Gemini Omni is not just a short-video effects tool. It tries to combine knowledge expression, storytelling, and audiovisual generation.&lt;/p&gt;
&lt;h2 id=&#34;how-it-relates-to-veo-flow-and-nano-banana&#34;&gt;How It Relates to Veo, Flow, and Nano Banana
&lt;/h2&gt;&lt;p&gt;In Google&amp;rsquo;s current product lineup, Gemini Omni looks like a layer for multimodal creation and editing.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Veo&lt;/code&gt; is more focused on the video generation model itself, emphasizing cinematic video and audio generation. &lt;code&gt;Google Flow&lt;/code&gt; is an AI creative studio for creators, suitable for organizing shots, assets, and video projects. &lt;code&gt;Nano Banana&lt;/code&gt; is more focused on image creation and detailed editing. Gemini Omni emphasizes multimodal editing from any input to a consistent output, especially multi-turn natural-language control for video.&lt;/p&gt;
&lt;p&gt;A simple way to understand it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To generate high-quality video, watch Veo.&lt;/li&gt;
&lt;li&gt;To organize video projects in a creative workflow, watch Google Flow.&lt;/li&gt;
&lt;li&gt;To edit images, watch Nano Banana.&lt;/li&gt;
&lt;li&gt;To modify video conversationally while referencing images, text, video, and audio, watch Gemini Omni.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;access-points&#34;&gt;Access Points
&lt;/h2&gt;&lt;p&gt;The page lists these access points:&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;However, it also notes that a Google AI subscription is required, and availability depends on subscription tier and region. In other words, not every user in every region can immediately access the full feature set.&lt;/p&gt;
&lt;p&gt;For creators, Google Flow may be the most important entry point because it is closer to a complete creative workspace. For general users, Gemini app and YouTube Shorts may be lower-friction ways to try it.&lt;/p&gt;
&lt;h2 id=&#34;safety-and-content-labels&#34;&gt;Safety and Content Labels
&lt;/h2&gt;&lt;p&gt;The Gemini Omni page specifically mentions safety work. Gemini Omni Flash was developed in collaboration with internal safety and responsibility teams, with automated evaluations, human evaluations, human red teaming, automated red teaming, and pre-launch ethics and safety reviews.&lt;/p&gt;
&lt;p&gt;For content transparency, the page says content created or edited with Omni in Gemini app, Google Flow, or YouTube will include imperceptible &lt;code&gt;SynthID&lt;/code&gt; digital watermarks and &lt;code&gt;C2PA Content Credentials&lt;/code&gt;. Users can verify content in Gemini app, with expansion to Chrome and Search planned later.&lt;/p&gt;
&lt;p&gt;This is especially important for video models. The more realistic video generation and editing becomes, the more important source labeling, abuse prevention, and verification tools become.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;Gemini Omni is suitable for several types of users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content creators who want to modify video quickly with natural language.&lt;/li&gt;
&lt;li&gt;Design teams that need to combine sketches, reference images, audio, and video assets into a finished clip.&lt;/li&gt;
&lt;li&gt;People making short videos, ad concepts, educational explainers, and product visual drafts.&lt;/li&gt;
&lt;li&gt;Creators building AI video workflows in Google Flow.&lt;/li&gt;
&lt;li&gt;Developers and researchers watching the boundaries of multimodal video editing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But it is not ideal for every scenario. Serious commercial films, brand key visuals, film production, and product launch videos still require human review, copyright checks, fact-checking, and asset management. AI can clearly speed up concept generation and first-draft iteration, but it should not replace final review.&lt;/p&gt;
&lt;h2 id=&#34;how-to-read-gemini-omni&#34;&gt;How to Read Gemini Omni
&lt;/h2&gt;&lt;p&gt;The significance of Gemini Omni is that it moves AI video from &amp;ldquo;one-shot generation&amp;rdquo; toward &amp;ldquo;conversational editing.&amp;rdquo; That is closer to real creative workflows than simply improving visual quality.&lt;/p&gt;
&lt;p&gt;If it performs reliably in multi-turn editing, consistency, reference control, audio-video synchronization, and content labeling, the way people use AI video tools will change. Users will no longer only write one long prompt and hope for the best; they will revise scenes, actions, styles, and narratives step by step like directors, editors, and designers.&lt;/p&gt;
&lt;p&gt;What still needs to be observed is actual availability, pricing, regional limits, video length, resolution, copyright policy, and commercial-use rules. For ordinary creators, the most practical question is whether Gemini Omni can reliably handle multi-turn video editing inside Google Flow and Gemini app.&lt;/p&gt;
&lt;p&gt;References:&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: Persistent Memory for Claude Code, Codex, Cursor, and Other Coding Agents</title>
        <link>https://knightli.com/en/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;rohitg00/agentmemory&lt;/code&gt; is a persistent memory system for AI coding agents. Its goal is straightforward: Claude Code, Codex CLI, Cursor, Gemini CLI, OpenCode, and similar tools should not have to relearn the project background, architecture decisions, and historical problems every time a new session starts.&lt;/p&gt;
&lt;p&gt;Project URL: &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;At the time of writing, the GitHub API showed about 13k stars, TypeScript as the main language, and an Apache-2.0 license. The README describes it as &amp;ldquo;Persistent memory for AI coding agents.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What Problem Does It Solve
&lt;/h2&gt;&lt;p&gt;A common pain point for coding agents is memory fragmentation. You may ask an agent to fix an authentication issue today, then open a new conversation tomorrow, and it no longer knows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why a certain architecture decision was made.&lt;/li&gt;
&lt;li&gt;Which files are sensitive and should be changed carefully.&lt;/li&gt;
&lt;li&gt;What bugs were fixed before.&lt;/li&gt;
&lt;li&gt;What commands, tools, or local services the project uses.&lt;/li&gt;
&lt;li&gt;Which conventions the team follows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Static notes help, but they are often forgotten or not connected to the active workflow. agentmemory tries to provide a shared memory layer that can be used across different AI coding tools.&lt;/p&gt;
&lt;h2 id=&#34;supported-agents&#34;&gt;Supported Agents
&lt;/h2&gt;&lt;p&gt;The README lists support for Claude Code, Codex CLI, Cursor, Gemini CLI, OpenCode, and other MCP-compatible tools. The core idea is to expose memory through a local service, MCP, hooks, and integrations, so multiple assistants can share the same project context.&lt;/p&gt;
&lt;p&gt;This is especially useful for teams that switch between tools. One developer may use Cursor, another may use Claude Code, while automation runs through Codex CLI. A shared memory layer reduces repeated explanation.&lt;/p&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start
&lt;/h2&gt;&lt;p&gt;Install globally:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Or run with npx:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The local service is available at:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In practice, the first step is usually to start the memory service, connect the coding assistant, and then let the agent read or write project memories during development.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-static-memory-files&#34;&gt;How It Differs From Static Memory Files
&lt;/h2&gt;&lt;p&gt;Many teams already maintain &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, README notes, or local documentation. These files are useful, but they are static. They do not automatically capture session history, task outcomes, or recurring decisions.&lt;/p&gt;
&lt;p&gt;agentmemory is closer to a persistent context service. It can store and surface memories that are relevant to the current project or task. The goal is not to replace documentation, but to make working context easier to reuse.&lt;/p&gt;
&lt;h2 id=&#34;typical-scenarios&#34;&gt;Typical Scenarios
&lt;/h2&gt;&lt;p&gt;Useful scenarios include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remembering project setup steps and common commands.&lt;/li&gt;
&lt;li&gt;Recording why a risky refactor was avoided.&lt;/li&gt;
&lt;li&gt;Keeping notes about flaky tests or local services.&lt;/li&gt;
&lt;li&gt;Sharing domain terminology across coding assistants.&lt;/li&gt;
&lt;li&gt;Helping agents continue work after a new session starts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is particularly valuable for long-running products, monorepos, and projects with many hidden conventions.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch-out-for&#34;&gt;Things To Watch Out For
&lt;/h2&gt;&lt;p&gt;First, memory quality matters. If old or wrong information is written into memory, future agents may repeat the mistake. Teams should keep important memories short, clear, and reviewable.&lt;/p&gt;
&lt;p&gt;Second, privacy matters. Do not store secrets, API keys, customer data, or sensitive production information in a memory system unless the security model is clear.&lt;/p&gt;
&lt;p&gt;Third, memory is not a substitute for tests. It helps agents understand context, but the final guarantee still comes from code review, tests, and verification.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;agentmemory is suitable for developers who use multiple AI coding tools, teams working on large codebases, and users who often need agents to continue previous work. It is less necessary for very small one-off scripts.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;agentmemory is interesting because it treats memory as infrastructure for AI coding, not as a small prompt trick. If coding agents are becoming part of daily development, persistent project memory is a practical missing piece.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Let AI Operate Your Computer? UI-TARS-desktop Connects Desktop, Browser, and Tools</title>
        <link>https://knightli.com/en/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/en/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; is ByteDance&amp;rsquo;s open source multimodal AI agent project. It is not just a single desktop app, but an agent stack. The current README mainly contains two directions: &lt;code&gt;Agent TARS&lt;/code&gt; and &lt;code&gt;UI-TARS Desktop&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Project URL: &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;Official site: &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;At the time of writing, the GitHub API showed about 34k stars, TypeScript as the main language, and an Apache-2.0 license. The README describes it as an &amp;ldquo;Open-Source Multimodal AI Agent Stack.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;difference-between-agent-tars-and-ui-tars-desktop&#34;&gt;Difference Between Agent TARS and UI-TARS Desktop
&lt;/h2&gt;&lt;p&gt;The README places the two projects in one comparison table:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Agent TARS&lt;/code&gt;: a general multimodal AI agent stack that connects GUI agents, vision, terminal, browser, and product workflows.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UI-TARS Desktop&lt;/code&gt;: a desktop application based on UI-TARS models, providing native GUI agent capabilities for operating local or remote computers and browsers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simply put, Agent TARS is more like a general agent runtime, while UI-TARS Desktop is the desktop GUI operation entry point.&lt;/p&gt;
&lt;h2 id=&#34;what-agent-tars-can-do&#34;&gt;What Agent TARS Can Do
&lt;/h2&gt;&lt;p&gt;Agent TARS mainly provides a CLI and Web UI. Its goal is to let multimodal models complete task flows closer to human operation through MCP and various tools.&lt;/p&gt;
&lt;p&gt;Core capabilities listed in the README include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One-command CLI startup, supporting headful Web UI and headless server.&lt;/li&gt;
&lt;li&gt;Hybrid browser agent control through GUI Agent, DOM, or mixed strategies.&lt;/li&gt;
&lt;li&gt;Event Stream for tracing and debugging data flows.&lt;/li&gt;
&lt;li&gt;MCP integration for mounting MCP Servers and real tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quick start:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Global installation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Run with a model 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;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;what-ui-tars-desktop-can-do&#34;&gt;What UI-TARS Desktop Can Do
&lt;/h2&gt;&lt;p&gt;UI-TARS Desktop is a desktop GUI Agent. Based on UI-TARS and Seed-1.5-VL / 1.6 model families, it focuses on letting the model understand the screen and execute mouse and keyboard operations.&lt;/p&gt;
&lt;p&gt;Capabilities listed in the README include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Natural language control.&lt;/li&gt;
&lt;li&gt;Screenshots and visual recognition.&lt;/li&gt;
&lt;li&gt;Precise mouse and keyboard control.&lt;/li&gt;
&lt;li&gt;Cross-platform support for Windows, macOS, and browsers.&lt;/li&gt;
&lt;li&gt;Real-time feedback and status display.&lt;/li&gt;
&lt;li&gt;Local processing with an emphasis on privacy and security.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example tasks include changing VS Code settings, checking GitHub issues, and operating remote computers or browsers.&lt;/p&gt;
&lt;h2 id=&#34;why-gui-agents-matter&#34;&gt;Why GUI Agents Matter
&lt;/h2&gt;&lt;p&gt;Traditional automation depends on APIs, DOM, or scripts. A GUI Agent starts from the interface: it sees buttons, input boxes, menus, and state, then operates through mouse and keyboard.&lt;/p&gt;
&lt;p&gt;This has two values. First, many applications do not have stable APIs, or APIs do not cover the full workflow. A GUI Agent can interact from the same surface a human uses.&lt;/p&gt;
&lt;p&gt;Second, multimodal models can handle screenshots, documents, web pages, and app interfaces, combining visual understanding with execution.&lt;/p&gt;
&lt;p&gt;The limitation is also clear. GUI operations are affected by resolution, language, layout changes, pop-ups, and network latency. Production workflows still need permission control, confirmation steps, and rollback plans.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-mcp&#34;&gt;Relationship With MCP
&lt;/h2&gt;&lt;p&gt;Agent TARS emphasizes MCP integration. MCP is useful because it gives agents a unified way to call browsers, files, command lines, databases, internal services, and other tools.&lt;/p&gt;
&lt;p&gt;For complex tasks, GUI clicking alone is not stable enough. A better pattern is often:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use APIs where APIs are available.&lt;/li&gt;
&lt;li&gt;Use vision when page state must be understood.&lt;/li&gt;
&lt;li&gt;Use browser control when real web interaction is needed.&lt;/li&gt;
&lt;li&gt;Use GUI Agent when local software must be operated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Projects like UI-TARS-desktop are exploring how to place these capabilities in one agent stack.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What To Watch Out For
&lt;/h2&gt;&lt;p&gt;First, desktop agents have execution risk. They can operate mouse, keyboard, and browser, so permissions must be limited to avoid accidental file changes, account operations, payment, or production system actions.&lt;/p&gt;
&lt;p&gt;Second, remote computer and remote browser control needs a clear security boundary. Do not expose unauthenticated control endpoints to the public internet.&lt;/p&gt;
&lt;p&gt;Third, multimodal models can misread interfaces. Critical operations should require human confirmation, especially delete, submit, pay, publish, trade, or other irreversible actions.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop is suitable for developers exploring GUI agents, teams building AI assistants for desktop workflows, and researchers comparing browser, DOM, MCP, and visual-control strategies. It is not a simple consumer assistant yet.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;UI-TARS-desktop is worth watching because it moves AI agents from &amp;ldquo;answering in chat&amp;rdquo; toward &amp;ldquo;seeing the screen and operating tools.&amp;rdquo; Its value is not only in desktop control, but in combining GUI, browser, terminal, and MCP capabilities in one stack.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Too Many Platforms to Post To? AiToEarn Wants AI Agents to Help Creators Save Time</title>
        <link>https://knightli.com/en/2026/05/19/aitoearn-ai-content-marketing-agent/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/19/aitoearn-ai-content-marketing-agent/</guid>
        <description>&lt;p&gt;&lt;code&gt;yikart/AiToEarn&lt;/code&gt; is an AI content marketing project for creators, brands, and one-person companies. It tries to put content creation, publishing, engagement, and monetization into one agent workflow, covering platforms such as Douyin, Xiaohongshu, Kuaishou, Bilibili, WeChat Channels, TikTok, YouTube, Facebook, Instagram, Threads, X, Pinterest, and LinkedIn.&lt;/p&gt;
&lt;p&gt;Project URL: &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;Official site: &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;At the time of writing, the GitHub API showed about 15k stars, TypeScript as the main language, and an MIT license. The README describes it as a content marketing agent platform for OPCs, creators, brands, and enterprises.&lt;/p&gt;
&lt;h2 id=&#34;positioning&#34;&gt;Positioning
&lt;/h2&gt;&lt;p&gt;AiToEarn is not just a copywriting generator or a scheduled posting tool. It breaks content marketing into four agent capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monetize: content monetization.&lt;/li&gt;
&lt;li&gt;Publish: cross-platform content publishing.&lt;/li&gt;
&lt;li&gt;Engage: content interaction and community operations.&lt;/li&gt;
&lt;li&gt;Create: content creation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That positioning fits the current creator workflow. The hard part for many teams is not only &amp;ldquo;can AI write a post&amp;rdquo;, but what happens after that: scheduling, distribution, replies, review, and connecting content to business tasks.&lt;/p&gt;
&lt;h2 id=&#34;core-features&#34;&gt;Core Features
&lt;/h2&gt;&lt;h3 id=&#34;monetize-making-money-from-content&#34;&gt;Monetize: Making Money From Content
&lt;/h3&gt;&lt;p&gt;AiToEarn provides monetization capabilities around promotional tasks. The README mentions three settlement models:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Full name&lt;/th&gt;
          &lt;th&gt;Meaning&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;Settlement by sales&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;Settlement by engagement&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;Settlement by impressions or views&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This part is closer to a content task marketplace that connects brand promotion needs with creator distribution.&lt;/p&gt;
&lt;h3 id=&#34;publish-content-publishing-agent&#34;&gt;Publish: Content Publishing Agent
&lt;/h3&gt;&lt;p&gt;Publish distributes content across multiple platforms and reduces the repeated work of posting manually. The README covers mainstream short video, graphic, and social platforms in China and overseas.&lt;/p&gt;
&lt;p&gt;Its practical value is unified scheduling and management. For account matrices, cross-platform distribution, and global content teams, this is often more useful than a single AI copywriting feature.&lt;/p&gt;
&lt;h3 id=&#34;engage-content-engagement-agent&#34;&gt;Engage: Content Engagement Agent
&lt;/h3&gt;&lt;p&gt;Engage uses a browser extension to support automated engagement operations such as likes, saves, follows, comment replies, and brand monitoring.&lt;/p&gt;
&lt;p&gt;This capability should be used carefully. Automated engagement can trigger platform risk controls, so teams need to check account permissions, frequency limits, platform terms, and internal compliance rules.&lt;/p&gt;
&lt;h3 id=&#34;create-content-creation-agent&#34;&gt;Create: Content Creation Agent
&lt;/h3&gt;&lt;p&gt;Create handles content generation. The README mentions video generation models, video translation, video editing, image generation, and batch creation tasks.&lt;/p&gt;
&lt;p&gt;This is useful for large-scale content production, but human review is still necessary. Brand content, ad materials, and multilingual assets need factual accuracy, copyright checks, and tone consistency.&lt;/p&gt;
&lt;h2 id=&#34;five-ways-to-use-it&#34;&gt;Five Ways To Use It
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Method&lt;/th&gt;
          &lt;th&gt;Best for&lt;/th&gt;
          &lt;th&gt;Deployment needed&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Use the website directly&lt;/td&gt;
          &lt;td&gt;All users&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Use it in OpenClaw&lt;/td&gt;
          &lt;td&gt;OpenClaw users&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Use it in Claude / Cursor and other AI assistants&lt;/td&gt;
          &lt;td&gt;AI tool users&lt;/td&gt;
          &lt;td&gt;No&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;One-click Docker deployment&lt;/td&gt;
          &lt;td&gt;Teams that want self-hosting&lt;/td&gt;
          &lt;td&gt;Server needed&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Source development&lt;/td&gt;
          &lt;td&gt;Developers&lt;/td&gt;
          &lt;td&gt;Development environment needed&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;MCP support is a notable point. It means Claude, Cursor, or other MCP-compatible agents can call AiToEarn as an external capability.&lt;/p&gt;
&lt;p&gt;A common MCP configuration contains:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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 URL: 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;Auth Header: x-api-key: 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;Self-hosted users should replace it with their own service URL.&lt;/p&gt;
&lt;h2 id=&#34;docker-deployment&#34;&gt;Docker Deployment
&lt;/h2&gt;&lt;p&gt;The README provides a Docker deployment path:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Then visit:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For teams that care about data control, private deployment, or custom workflows, Docker is more practical than only using the hosted website.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;AiToEarn is suitable for creators who publish across many platforms, small teams running content operations, one-person companies, brands that need creator collaboration, and developers who want to connect content workflows to AI agents.&lt;/p&gt;
&lt;p&gt;It is less suitable if you only need a simple text generator. Its value is in connecting creation, publishing, engagement, and monetization.&lt;/p&gt;
&lt;h2 id=&#34;notes-before-use&#34;&gt;Notes Before Use
&lt;/h2&gt;&lt;p&gt;First, automated posting and engagement must respect platform rules. A tool can improve efficiency, but it cannot remove the need for account safety and compliance.&lt;/p&gt;
&lt;p&gt;Second, generated content still needs human review. Ads, brand posts, and cross-language content can all carry factual, copyright, or tone risks.&lt;/p&gt;
&lt;p&gt;Third, monetization features involve commercial tasks, so settlement rules, disclosure requirements, and platform policies should be checked before use.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;AiToEarn is worth watching because it treats content operations as a workflow, not just a writing task. For creators and small teams, the attractive part is saving repeated work across platforms. For developers, the interesting part is MCP and agent integration.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What Is AI-Trader? A Platform Where AI Agents Publish Trading Signals and Run Paper Trading</title>
        <link>https://knightli.com/en/2026/05/19/ai-trader-agent-native-trading-platform/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/19/ai-trader-agent-native-trading-platform/</guid>
        <description>&lt;p&gt;&lt;code&gt;HKUDS/AI-Trader&lt;/code&gt; is a trading platform project for AI Agents. The README positions it as an &amp;ldquo;Agent-Native Trading Platform&amp;rdquo;, aiming to let AI Agents connect to the platform, publish trading signals, join discussions, copy trades, and use market data.&lt;/p&gt;
&lt;p&gt;Project URL: &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;Platform URL: &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;At the time of writing, the GitHub API showed about 18k stars and Python as the main language. The repository API did not return a clear license value, so users should confirm licensing terms before formal use.&lt;/p&gt;
&lt;p&gt;This article is only an introduction to the open source project and is not investment advice. Automated trading involves real capital risk. No strategy, signal, or agent output can guarantee returns.&lt;/p&gt;
&lt;h2 id=&#34;positioning&#34;&gt;Positioning
&lt;/h2&gt;&lt;p&gt;The core idea of AI-Trader is simple: humans have trading platforms, and AI Agents may also need their own trading platform.&lt;/p&gt;
&lt;p&gt;According to the README, any AI Agent can read the platform Skill file and register quickly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After connection, agents can publish trading signals, join community discussions, copy strategies from high-performing traders, sync signals to multiple brokers, and accumulate points through prediction performance.&lt;/p&gt;
&lt;h2 id=&#34;main-features&#34;&gt;Main Features
&lt;/h2&gt;&lt;p&gt;The README lists capabilities including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instant Agent Integration: quick access for AI Agents.&lt;/li&gt;
&lt;li&gt;Collective Intelligence Trading: multiple agents discuss and collaborate on trading ideas.&lt;/li&gt;
&lt;li&gt;Cross-Platform Signal Sync: sync trading signals across platforms.&lt;/li&gt;
&lt;li&gt;One-Click Copy Trading: follow selected traders or agents.&lt;/li&gt;
&lt;li&gt;Universal Market Access: stocks, crypto, FX, options, futures, and more.&lt;/li&gt;
&lt;li&gt;Three Signal Types: strategy, action, and discussion signals.&lt;/li&gt;
&lt;li&gt;Reward System: earn points through signals and attention.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From a product perspective, it is not just a local quantitative backtesting framework. It combines agents, signals, discussion, copy trading, and paper trading in one platform layer.&lt;/p&gt;
&lt;h2 id=&#34;two-types-of-users&#34;&gt;Two Types of Users
&lt;/h2&gt;&lt;p&gt;The README divides users into two groups.&lt;/p&gt;
&lt;p&gt;The first group is Agent Traders. AI Agents read the Skill document, connect to the platform, install required components, and publish signals.&lt;/p&gt;
&lt;p&gt;The second group is Human Traders. Regular users can visit the platform, create accounts, browse signals, or follow better-performing traders.&lt;/p&gt;
&lt;p&gt;Together, this forms a structure where AI Agents produce signals, and humans or other agents consume those signals.&lt;/p&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture
&lt;/h2&gt;&lt;p&gt;The README shows the project structure as:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The repository puts agent skills, API documentation, backend, and frontend in one place. The backend uses FastAPI and the frontend uses React. The README update notes also mention that the web service and backend workers have been separated so pricing, historical performance, settlement, and market intelligence jobs can run in the background without affecting pages and health checks.&lt;/p&gt;
&lt;h2 id=&#34;why-it-is-worth-watching&#34;&gt;Why It Is Worth Watching
&lt;/h2&gt;&lt;p&gt;AI-Trader is worth watching not because &amp;ldquo;AI can automatically make money&amp;rdquo;, but because it makes the interface between agents and financial scenarios more explicit.&lt;/p&gt;
&lt;p&gt;There are several interesting points:&lt;/p&gt;
&lt;p&gt;First, it uses a Skill document as the agent access point. This is close to how Codex, Claude Code, OpenClaw, and other agent tools work.&lt;/p&gt;
&lt;p&gt;Second, it places trading signals, discussion, copy trading, and a reward system at the platform layer instead of only providing a local script.&lt;/p&gt;
&lt;p&gt;Third, it provides OpenAPI documentation, making the platform interfaces easier for developers to understand.&lt;/p&gt;
&lt;p&gt;Fourth, it supports paper trading. For research on agent decision-making, a simulated environment is much safer than giving agents direct access to real money.&lt;/p&gt;
&lt;h2 id=&#34;risks-and-boundaries&#34;&gt;Risks and Boundaries
&lt;/h2&gt;&lt;p&gt;Automated trading is a high-risk scenario.&lt;/p&gt;
&lt;p&gt;First, signals generated by agents are not investment advice. Models can hallucinate, overfit, misread news, or fail to understand extreme market conditions.&lt;/p&gt;
&lt;p&gt;Second, copy trading has contagion risk. If a wrong signal is widely followed, losses may concentrate.&lt;/p&gt;
&lt;p&gt;Third, real capital access must be strictly isolated. Do not give agents unlimited order permissions.&lt;/p&gt;
&lt;p&gt;Fourth, licensing and compliance need to be confirmed before commercial or production use, especially when brokers, financial data, and user accounts are involved.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;AI-Trader is suitable for researchers studying agent decision-making, developers exploring financial agent interfaces, and teams interested in paper trading or signal collaboration. It is not suitable for users looking for guaranteed profit tools.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;AI-Trader is a signal and paper-trading platform designed around AI Agents. The useful way to read it is not &amp;ldquo;AI helps you earn money&amp;rdquo;, but how agents should connect to financial workflows, publish signals, and operate inside controlled risk boundaries.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What Is CloakBrowser? A More Realistic Browser for Playwright and Puppeteer</title>
        <link>https://knightli.com/en/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</link>
        <pubDate>Tue, 19 May 2026 10:56:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/</guid>
        <description>&lt;p&gt;&lt;code&gt;CloakHQ/CloakBrowser&lt;/code&gt; is an open source project for browser automation. It is not just a Playwright configuration file or a small JavaScript patch. The project is built around a custom Chromium binary, aiming to make browser fingerprints, WebGL, Canvas, audio, fonts, GPU, screen data, WebRTC, and network timing look closer to a normal browser environment.&lt;/p&gt;
&lt;p&gt;Project URL: &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;At the time of writing, the GitHub API showed about 15k stars, Python as the main language, and an MIT license. The README positions it very directly: a Stealth Chromium launcher that can replace the default Playwright or Puppeteer browser launcher.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What Problem Does It Solve
&lt;/h2&gt;&lt;p&gt;Many automation scripts expose obvious automation signals when they run in a regular Headless Chromium environment, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;navigator.webdriver&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Headless user agent traces.&lt;/li&gt;
&lt;li&gt;Unnatural plugin, font, screen, and GPU fingerprints.&lt;/li&gt;
&lt;li&gt;CDP behavior that does not match real user input.&lt;/li&gt;
&lt;li&gt;Temporary profiles without normal browsing traces.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CloakBrowser moves part of this work into the Chromium source and binary layer, instead of relying only on runtime configuration or JavaScript patches. For Playwright users, the API still feels close to familiar browser automation, but the underlying browser is replaced with the custom build provided by the project.&lt;/p&gt;
&lt;p&gt;This type of tool is suitable for compliant automation testing, site compatibility checks, anti-abuse system self-testing, and agent browser environment experiments. It should not be used for unauthorized access, account abuse, bypassing platform risk controls, or violating service terms.&lt;/p&gt;
&lt;h2 id=&#34;basic-usage&#34;&gt;Basic Usage
&lt;/h2&gt;&lt;p&gt;Python installation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 installation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The Python example in the README looks close to 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;The JavaScript usage is also straightforward:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;h2 id=&#34;browser-profile-manager&#34;&gt;Browser Profile Manager
&lt;/h2&gt;&lt;p&gt;CloakBrowser also provides a Browser Profile Manager. It is meant for managing browser profiles, testing environments, and repeated automation tasks more conveniently.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After starting it, open:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The value of a profile manager is that the browser environment does not have to be a disposable temporary profile every time. For long-running tests, compatibility checks, and agent experiments, stable profiles are often easier to debug.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-regular-playwright&#34;&gt;How It Differs From Regular Playwright
&lt;/h2&gt;&lt;p&gt;Regular Playwright focuses on reliable browser control. CloakBrowser focuses on making the browser environment itself look more natural.&lt;/p&gt;
&lt;p&gt;In practice, the difference is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playwright provides the automation API.&lt;/li&gt;
&lt;li&gt;CloakBrowser provides a custom browser runtime.&lt;/li&gt;
&lt;li&gt;Playwright is suitable for general testing and automation.&lt;/li&gt;
&lt;li&gt;CloakBrowser is more focused on realistic browser behavior and fingerprint consistency.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not mean CloakBrowser can magically solve all detection problems. Websites can still use behavior, frequency, account reputation, network environment, and business rules to judge risk.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What To Watch Out For
&lt;/h2&gt;&lt;p&gt;First, compliance matters. A more realistic automation environment does not mean unrestricted use. Automated access should respect authorization, rate limits, robots or platform rules, and service terms.&lt;/p&gt;
&lt;p&gt;Second, the project depends on a custom Chromium build. Teams should pay attention to version compatibility, security updates, and whether the binary source is acceptable for production use.&lt;/p&gt;
&lt;p&gt;Third, realistic browser behavior is only one part of the picture. If the script performs unnatural operations, sends requests too frequently, or uses accounts in abnormal ways, the result will still be risky.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;CloakBrowser is more suitable for developers and teams already using Playwright, Puppeteer, browser agents, QA automation, or web compatibility testing. It is less suitable for users who just want a no-code browser automation product.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;CloakBrowser is interesting because it moves browser automation from &amp;ldquo;just control a headless browser&amp;rdquo; toward &amp;ldquo;use a browser environment closer to real users.&amp;rdquo; For testing, agent experiments, and controlled research, it is worth watching. For real-world use, the important boundary is still compliance, authorization, and risk control.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp b9196 Update: Windows Prebuilt Binaries Support CUDA 13.1, Vulkan, HIP, and SYCL</title>
        <link>https://knightli.com/en/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</link>
        <pubDate>Mon, 18 May 2026 23:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/18/llama-cpp-windows-cuda-vulkan-gguf/</guid>
        <description>&lt;p&gt;The recent Windows release of &lt;code&gt;llama.cpp&lt;/code&gt; is much friendlier for local LLM users. In the past, running GGUF models on Windows often meant dealing with environment issues: CUDA version mismatches, missing DLLs, incompatible drivers, failed CMake builds, wrong environment variables, or complicated Vulkan / HIP / SYCL setup.&lt;/p&gt;
&lt;p&gt;Now the official Release page provides several Windows prebuilt packages. In many cases, users no longer need to compile from source. Download the right build, unzip it, place the model file, and you can start a local inference service directly.&lt;/p&gt;
&lt;h2 id=&#34;what-llamacpp-is-good-for&#34;&gt;What llama.cpp Is Good For
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; is one of the most commonly used local GGUF model inference frameworks. It is lightweight, cross-platform, can run on CPU or GPU, and has a large ecosystem of GGUF model resources.&lt;/p&gt;
&lt;p&gt;Common model families include:&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;As GGUF quantized models become more common, many open source models now provide GGUF versions suitable for local deployment. For regular users, the value of &lt;code&gt;llama.cpp&lt;/code&gt; is simple: you do not need a full complex inference stack to run a usable chat service on your own machine.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-a-windows-prebuilt-build&#34;&gt;How to Choose a Windows Prebuilt Build
&lt;/h2&gt;&lt;p&gt;Windows users can choose different builds based on their hardware:&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;If you use an NVIDIA GPU, the CUDA build is usually the first choice. Cards such as RTX 3060, 4060, 4070, 4080, and 4090 are better suited to the CUDA route.&lt;/p&gt;
&lt;p&gt;If you use an AMD GPU, try HIP or Vulkan. In practice, Vulkan can sometimes be easier than HIP, especially if you do not want to set up a full ROCm environment.&lt;/p&gt;
&lt;p&gt;If you use Intel integrated graphics or an Arc GPU, try SYCL or Vulkan. Performance is usually behind NVIDIA CUDA, but it is already enough to test many small and medium GGUF models.&lt;/p&gt;
&lt;p&gt;The CPU build is suitable for users without a discrete GPU, or for those who only want to verify a model or run small models. It will not be fast, but deployment is the simplest.&lt;/p&gt;
&lt;h2 id=&#34;start-a-regular-gguf-model&#34;&gt;Start a Regular GGUF Model
&lt;/h2&gt;&lt;p&gt;Assume you have downloaded the &lt;code&gt;llama.cpp&lt;/code&gt; Windows prebuilt package and placed your model in the &lt;code&gt;models&lt;/code&gt; directory. Enter the extracted &lt;code&gt;llama.cpp&lt;/code&gt; directory and run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Here, &lt;code&gt;-m&lt;/code&gt; points to the GGUF model file, and &lt;code&gt;-ngl 999&lt;/code&gt; tells llama.cpp to load as many layers as possible onto the GPU. The actual number depends on VRAM size, model size, and quantization format.&lt;/p&gt;
&lt;p&gt;After startup succeeds, open this address in your browser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;You will enter the local web chat interface.&lt;/p&gt;
&lt;p&gt;If VRAM is not enough, switch to a smaller model or a lower quantization version, such as Q4 or Q5 GGUF files. Do not only look at parameter count; also check quantization format and context length settings.&lt;/p&gt;
&lt;h2 id=&#34;start-a-multimodal-vision-model&#34;&gt;Start a Multimodal Vision Model
&lt;/h2&gt;&lt;p&gt;Multimodal vision models usually need more than the main model file. They also need an &lt;code&gt;mmproj&lt;/code&gt; vision projection file. Start them by specifying both:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Common uses include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OCR recognition&lt;/li&gt;
&lt;li&gt;Screenshot understanding&lt;/li&gt;
&lt;li&gt;Webpage screenshot analysis&lt;/li&gt;
&lt;li&gt;Image Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;Simple visual content judgment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, Qwen2-VL / Qwen2.5-VL models are useful for Chinese screenshot understanding, OCR, and image-text Q&amp;amp;A. Make sure the main model and &lt;code&gt;mmproj&lt;/code&gt; file match; version mismatches can easily cause loading failures or abnormal output.&lt;/p&gt;
&lt;h2 id=&#34;use-a-bat-script-to-manage-multiple-models&#34;&gt;Use a bat Script to Manage Multiple Models
&lt;/h2&gt;&lt;p&gt;If you keep multiple models locally, you can write a simple &lt;code&gt;.bat&lt;/code&gt; script to switch between them. The following example needs your own path and model names:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Save it as UTF-8, then change the extension to &lt;code&gt;.bat&lt;/code&gt;. Double-clicking the script lets you choose different models by number.&lt;/p&gt;
&lt;h2 id=&#34;three-things-to-check-when-choosing-models&#34;&gt;Three Things to Check When Choosing Models
&lt;/h2&gt;&lt;p&gt;First, check hardware. More VRAM means you can run larger models. If VRAM is limited, do not force a large model; start with 7B, 8B, or a lower quantization version.&lt;/p&gt;
&lt;p&gt;Second, check the use case. For everyday Q&amp;amp;A, summarization, and rewriting, small models or medium quantization are often enough. For coding, long-document analysis, or multimodal understanding, you need stronger models and more VRAM.&lt;/p&gt;
&lt;p&gt;Third, check licenses and safety boundaries. Many community-modified models have different capabilities, restrictions, and licenses. Before downloading, confirm the source, license, intended use, and risks. Do not hand production work directly to models from unclear sources.&lt;/p&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common Issues
&lt;/h2&gt;&lt;p&gt;If startup reports missing DLLs, first confirm that the downloaded package matches your GPU route. NVIDIA users should not download the HIP build by mistake, and AMD users should not download the CUDA build.&lt;/p&gt;
&lt;p&gt;If model loading is slow, the model may be too large, the disk may be slow, or part of the model may be falling back to CPU due to insufficient VRAM.&lt;/p&gt;
&lt;p&gt;If the web page does not open, check whether the command line service started successfully, then confirm the port is &lt;code&gt;8080&lt;/code&gt;. If the port is occupied, check &lt;code&gt;llama-server&lt;/code&gt; parameters and change the port.&lt;/p&gt;
&lt;p&gt;If a multimodal model behaves incorrectly, first check whether the &lt;code&gt;mmproj&lt;/code&gt; file matches the main model instead of only changing prompts.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of these Windows prebuilt packages is that they lower the entry barrier for local AI. Many users previously got stuck at compilation and dependency setup. Now they can move faster into downloading models, starting a service, and testing results.&lt;/p&gt;
&lt;p&gt;For Windows users, the route can be summarized simply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA: prefer CUDA.&lt;/li&gt;
&lt;li&gt;AMD: try Vulkan first, then HIP.&lt;/li&gt;
&lt;li&gt;Intel: try SYCL or Vulkan.&lt;/li&gt;
&lt;li&gt;No discrete GPU: use the CPU build for small models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before real use, still confirm model source, license, VRAM needs, and actual results. Local AI gives you control, offline operation, and low latency, but it is not free of cost: model management, hardware resources, and output quality are still your responsibility.&lt;/p&gt;
&lt;p&gt;Source: &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>A Survey of Mainstream AI PPT Tools: How to Choose Between Auto Generation, Web Slides, PPTX, and Image-Based Workflows</title>
        <link>https://knightli.com/en/2026/05/18/ai-ppt-skills-selection-guide/</link>
        <pubDate>Mon, 18 May 2026 22:29:43 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/18/ai-ppt-skills-selection-guide/</guid>
        <description>&lt;p&gt;AI for PPT is no longer just &amp;ldquo;enter a title and apply a template.&amp;rdquo; In AI coding environments such as Claude Code, Codex, and Cursor, PPT generation is becoming a set of installable, reusable Agent Skills: some output web presentations, some generate truly editable &lt;code&gt;.pptx&lt;/code&gt; files, some use image models to turn each slide into a visual draft, and some let AI operate PowerPoint files through MCP.&lt;/p&gt;
&lt;p&gt;This article looks at a group of mainstream PPT-related Skills. The useful part is not only the list itself, but the way these tools can be separated by delivery format. Before choosing a tool, ask one question first: who will edit the final deliverable, where will it be presented, and does it need ongoing collaboration?&lt;/p&gt;
&lt;h2 id=&#34;several-routes&#34;&gt;Several Routes
&lt;/h2&gt;&lt;h3 id=&#34;1-html-web-presentations&#34;&gt;1. HTML Web Presentations
&lt;/h3&gt;&lt;p&gt;Representative projects include &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/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;, and &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;The strength of this route is visual expressiveness. CSS animations, Canvas, WebGL, and responsive layouts are all available. The result can be opened directly in a browser, making it suitable for technical talks, product launches, Demo Day presentations, and talks with a strong personal style.&lt;/p&gt;
&lt;p&gt;The trade-off is also clear: after delivery, it is not ideal for clients who need to edit text line by line. If the client receives HTML instead of a PowerPoint file, later changes often need to go back through the generation workflow.&lt;/p&gt;
&lt;p&gt;If you only care about HTML presentations, &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; feels like a high-star general entry point, &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt; is stronger in aesthetic constraints and themed style, and &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; stands out for its number of themes, layout options, and presenter mode.&lt;/p&gt;
&lt;h3 id=&#34;2-native-pptx&#34;&gt;2. Native PPTX
&lt;/h3&gt;&lt;p&gt;Representative projects include &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;, and &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;This is the most stable route for business delivery. As long as the client asks to &amp;ldquo;edit text, change images, and apply a company template in PowerPoint,&amp;rdquo; the final output needs to land in &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; is especially worth a separate look. Its idea is to have the LLM generate SVG first, then convert it into native PowerPoint DrawingML objects. The goal is to keep text boxes, shapes, and charts editable inside PPTX. It also supports generating PPTX from PDF, DOCX, URL, and Markdown, as well as template replication, animation, narration, and local preview.&lt;/p&gt;
&lt;p&gt;This route works well for consulting deliverables, company reports, white paper presentations, and turning long reports into PPT decks. The downside is that the visual ceiling is usually limited by PowerPoint itself, so complex effects are not as free as HTML or image-based routes.&lt;/p&gt;
&lt;h3 id=&#34;3-ai-image-driven-workflows&#34;&gt;3. AI Image-Driven Workflows
&lt;/h3&gt;&lt;p&gt;Representative projects include &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;, and &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;This route treats each slide as a visual image first, then places the images into PPTX or another container. Its advantage is a high level of visual completion, especially for covers, social media graphics, visual proposals, and communication-oriented content.&lt;/p&gt;
&lt;p&gt;The problem is poor editability. A page is essentially an image. If you later need to change a title, replace a paragraph, or move an icon, you may need to regenerate it. It is good for &amp;ldquo;it needs to look good,&amp;rdquo; but not for &amp;ldquo;the client will revise it repeatedly.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;4-mcp--protocol-layer&#34;&gt;4. MCP / Protocol Layer
&lt;/h3&gt;&lt;p&gt;Representative projects include &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; and &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;These tools do not necessarily generate a complete PPT directly. Instead, they give AI an interface for operating PowerPoint. After connecting through MCP, the model can read, modify, and write &lt;code&gt;.pptx&lt;/code&gt; files.&lt;/p&gt;
&lt;p&gt;This route fits workflows where a PPT file already exists and AI is needed to help revise it. Examples include batch format changes, rearranging pages based on feedback, or asking the model to check whether each slide matches the goal. &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; emphasizes reflective generation, meaning it checks back after generating each slide. That direction is useful for reducing the &amp;ldquo;AI PPT feels rough&amp;rdquo; problem.&lt;/p&gt;
&lt;h3 id=&#34;5-integrated-design-platforms&#34;&gt;5. Integrated Design Platforms
&lt;/h3&gt;&lt;p&gt;Representative projects include &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; and &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;These projects go beyond PPT generation itself. &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;open-design&lt;/a&gt; is more like a local-first design platform that can generate prototypes, slides, images, and videos, with support for multiple export formats. &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; is not a PPT tool, but it can index and chat with local documents, making it useful as a material organization layer before generating PPT.&lt;/p&gt;
&lt;p&gt;If your need is not a one-off PPT, but a fuller workflow from materials, design, and prototypes to delivery, this type of platform is more worth watching.&lt;/p&gt;
&lt;h2 id=&#34;skill-metadata&#34;&gt;Skill Metadata
&lt;/h2&gt;&lt;p&gt;Star counts come from the original crawl result on 2026-05-15. They are only useful as a popularity reference. Before actual use, open the repositories again to confirm maintenance status, README, and LICENSE.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Skill&lt;/th&gt;
          &lt;th&gt;Author&lt;/th&gt;
          &lt;th&gt;Links&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Star&lt;/th&gt;
          &lt;th&gt;Language&lt;/th&gt;
          &lt;th&gt;Route&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 web presentation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;guizang-ppt-skill&lt;/td&gt;
          &lt;td&gt;@op7418 (Guizang)&lt;/td&gt;
          &lt;td&gt;Site article: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/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 web presentation&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 web presentation&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;Native 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;Native 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;Native 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;Native PPTX&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NanoBanana-PPT-Skills&lt;/td&gt;
          &lt;td&gt;@op7418 (Guizang)&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 image-driven&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 image-driven&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 image-driven&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 / protocol layer&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 / protocol layer&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;Site article: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/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;Integrated design platform&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;Integrated design platform&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;If the client needs to continue editing, prioritize the native PPTX route, especially &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;, and &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;If you are presenting yourself and visual expression matters more than later editing, prioritize the HTML route, especially &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/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/&#34; &gt;guizang-ppt-skill&lt;/a&gt;, and &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;If the goal is a poster-like, cover-like, or shareable visual, prioritize the image route, such as &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;, and &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;If you already have a PPT file and only want AI to help read, edit, and rearrange it, look at the MCP route.&lt;/p&gt;
&lt;p&gt;For explicit scenarios such as academic talks, marketing, translation, or compressing long reports into slides, you can also look for vertical Skills instead of forcing a general-purpose PPT generator to do everything.&lt;/p&gt;
&lt;h2 id=&#34;final-notes&#34;&gt;Final Notes
&lt;/h2&gt;&lt;p&gt;Open source projects should not be judged by Star count alone. Before actual use, confirm three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the LICENSE allows your use case.&lt;/li&gt;
&lt;li&gt;Whether the generated output meets delivery requirements, especially editability.&lt;/li&gt;
&lt;li&gt;Whether the cost is acceptable, including model calls, image generation, large-context models, and possible cloud service fees.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tools change quickly. Star counts will change, and project maintenance status will change too. But the selection logic is relatively stable: decide the delivery format first, then look at specific tools. Whether a PPT is for speaking, editing, or viewing often narrows the choices by more than half.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>wx-cli Explained: Query Local WeChat Chat History from the Command Line</title>
        <link>https://knightli.com/en/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/en/2026/05/18/wx-cli-wechat-local-data-command-line-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; is a local WeChat data command-line tool written in Rust. Its goal is to let you query your own WeChat sessions, chat history, contacts, group members, favorites, Moments, official account articles, attachments, and statistics from the terminal.&lt;/p&gt;
&lt;p&gt;It is not a cloud-based WeChat sync service, and it is not a chatbot. It is closer to a local read-only data retrieval layer: WeChat still runs on your machine, the data still stays on your machine, and &lt;code&gt;wx-cli&lt;/code&gt; decrypts, caches, and queries local databases on demand before returning YAML or JSON output for humans or agents.&lt;/p&gt;
&lt;p&gt;Two points make this project worth watching. First, it turns local WeChat data access into a cross-platform CLI. Second, it explicitly considers AI Agent workflows for tools such as Claude Code, Cursor, and Codex, providing a &lt;code&gt;SKILL.md&lt;/code&gt; file and structured output with &lt;code&gt;meta&lt;/code&gt; fields.&lt;/p&gt;
&lt;h2 id=&#34;what-wx-cli-can-do&#34;&gt;What wx-cli Can Do
&lt;/h2&gt;&lt;p&gt;According to the project README, &lt;code&gt;wx-cli&lt;/code&gt; covers a fairly complete set of features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View recent sessions and unread sessions.&lt;/li&gt;
&lt;li&gt;Query chat history for a contact or group.&lt;/li&gt;
&lt;li&gt;Search keywords across the whole local database.&lt;/li&gt;
&lt;li&gt;View newly arrived messages.&lt;/li&gt;
&lt;li&gt;Query contacts, group members, and group nicknames.&lt;/li&gt;
&lt;li&gt;Query favorites.&lt;/li&gt;
&lt;li&gt;Query Moments notifications, timelines, and post bodies.&lt;/li&gt;
&lt;li&gt;Query official account article pushes.&lt;/li&gt;
&lt;li&gt;List and extract image attachments from chats.&lt;/li&gt;
&lt;li&gt;Generate chat statistics.&lt;/li&gt;
&lt;li&gt;Export chat history as Markdown or JSON.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities make it more than a &amp;ldquo;chat history search&amp;rdquo; tool. It turns local WeChat data into a searchable, analyzable, and exportable personal knowledge source.&lt;/p&gt;
&lt;h2 id=&#34;why-it-fits-ai-agents&#34;&gt;Why It Fits AI Agents
&lt;/h2&gt;&lt;p&gt;Many CLI tools are designed only for people: their output is just a block of text. &lt;code&gt;wx-cli&lt;/code&gt; clearly takes agent consumption into account.&lt;/p&gt;
&lt;p&gt;The README notes that commands such as &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;, and &lt;code&gt;attachments&lt;/code&gt; include &lt;code&gt;meta&lt;/code&gt; information. That metadata contains result status, unknown shards, the latest timestamp in matched data, the latest session timestamp, and similar fields.&lt;/p&gt;
&lt;p&gt;This is useful for agents. AI does not only need to know &amp;ldquo;what was found&amp;rdquo;; it also needs to know whether the result is fresh, whether messages may be missing, and whether it should run &lt;code&gt;init&lt;/code&gt; again. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt; can indicate whether the result is &lt;code&gt;ok&lt;/code&gt; or &lt;code&gt;possibly_stale&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unknown_shards&lt;/code&gt; can indicate whether there are database shards for which the daemon currently has no key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chat_latest_timestamp&lt;/code&gt; tells the agent the latest message time in the matched data.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_last_timestamp&lt;/code&gt; helps determine whether the local session record is clearly newer than the query result.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This kind of metadata reduces AI misjudgment and makes tools such as Claude Code, Cursor, and Codex more reliable when working with WeChat data.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The project recommends cross-platform installation via 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;It also supports curl installation on macOS / 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/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;On Windows, run this in an administrator 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;If you want to build from source, you can use Rust directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The build artifact is &lt;code&gt;target/release/wx&lt;/code&gt;, or &lt;code&gt;wx.exe&lt;/code&gt; on Windows.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-agent-skills&#34;&gt;Relationship with Agent Skills
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; also provides a Skill for AI Agents. You can install it into Claude Code, Cursor, Codex, and other Skills-compatible environments through the skills 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;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;Install it globally:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After installation, the agent reads the repository&amp;rsquo;s &lt;code&gt;SKILL.md&lt;/code&gt; and learns how to install, initialize, and call &lt;code&gt;wx-cli&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That means you can ask an agent to help with local information organization tasks such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find keywords discussed in a group chat during a specific period.&lt;/li&gt;
&lt;li&gt;Summarize recent unread messages.&lt;/li&gt;
&lt;li&gt;Export recent chat history from a specific session.&lt;/li&gt;
&lt;li&gt;Search official account article links.&lt;/li&gt;
&lt;li&gt;Analyze posting statistics in a group chat.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The premise is unchanged: the data must be your own WeChat data on your own machine.&lt;/p&gt;
&lt;h2 id=&#34;basic-usage&#34;&gt;Basic Usage
&lt;/h2&gt;&lt;p&gt;Before initialization, keep WeChat running. Requirements differ by platform.&lt;/p&gt;
&lt;p&gt;On 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;On Windows, use an administrator 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 is more involved. The README explains that, with the default path, you first need to ad-hoc sign WeChat so the tool can scan process memory. After re-signing, you also need to clean old TCC authorization records, otherwise permissions such as screen capture, video calls, and microphone access may look enabled while actually being denied. The project documentation also warns that re-signing may cause macOS to repeatedly prompt for access to other apps&amp;rsquo; data.&lt;/p&gt;
&lt;p&gt;After initialization, verify the setup with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you can see recent sessions, the basic path is working. The daemon starts automatically on the first call.&lt;/p&gt;
&lt;h2 id=&#34;common-command-examples&#34;&gt;Common Command Examples
&lt;/h2&gt;&lt;p&gt;View recent sessions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;View unread sessions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Show only human unread sessions while filtering out official accounts and folded entries:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;View recent chat history for a 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;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;Fetch more history:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Query a group chat by time range:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Search the whole database:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Search for a keyword inside a group:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Export chat history:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;These commands are well suited for scripts or agents, especially when combined with &lt;code&gt;--json&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;moments-and-official-account-articles&#34;&gt;Moments and Official Account Articles
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; does not only query chats.&lt;/p&gt;
&lt;p&gt;Moments-related commands are split into notifications and posts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Note that Moments data only covers content that has appeared locally. The WeChat client downloads data on demand; if something has never appeared locally, the tool cannot retrieve it out of thin air.&lt;/p&gt;
&lt;p&gt;Official account articles are queried through separate commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;It returns fields such as account name, title, URL, summary, cover image, and timestamp. This is useful for people who organize references, collect articles, or build local knowledge bases.&lt;/p&gt;
&lt;h2 id=&#34;attachment-extraction&#34;&gt;Attachment Extraction
&lt;/h2&gt;&lt;p&gt;Image attachments in WeChat chats are usually not ordinary readable image files. They are often &lt;code&gt;.dat&lt;/code&gt; files under &lt;code&gt;xwechat_files/&amp;lt;wxid&amp;gt;/msg/attach/...&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; provides a two-step flow:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;After getting an &lt;code&gt;attachment_id&lt;/code&gt;, extract it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The output report includes fields such as &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;, and &lt;code&gt;decoder&lt;/code&gt;. The README says it supports decoding modes such as legacy XOR, V1 fixed-AES, and V2 AES + XOR, while image key extraction differs across platforms.&lt;/p&gt;
&lt;p&gt;This capability is powerful, but it requires extra care: only process your own data, and do not use it for unauthorized data access.&lt;/p&gt;
&lt;h2 id=&#34;why-the-daemon-architecture-matters&#34;&gt;Why the Daemon Architecture Matters
&lt;/h2&gt;&lt;p&gt;The performance story of &lt;code&gt;wx-cli&lt;/code&gt; comes from its daemon.&lt;/p&gt;
&lt;p&gt;The README describes the structure roughly as:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 (background process)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#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               contact cache
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           (mtime-aware reuse)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After the first decryption, the daemon persists database and mtime information under &lt;code&gt;~/.wx-cli/cache/&lt;/code&gt;. If the database file mtime has not changed, later calls can reuse the cache without decrypting everything again.&lt;/p&gt;
&lt;p&gt;This is important for command-line queries and agent loops. An agent may query several sessions, search multiple keywords, then run statistics and exports. If every call had to rescan and decrypt everything, the experience would be poor. The daemon cache makes it feel closer to a local query service.&lt;/p&gt;
&lt;h2 id=&#34;a-brief-look-at-the-principle&#34;&gt;A Brief Look at the Principle
&lt;/h2&gt;&lt;p&gt;The project README explains the principle directly: WeChat 4.x encrypts local databases with SQLCipher 4, and WCDB caches the derived raw key in process memory.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; uses platform-specific methods to scan WeChat process memory, match key patterns, extract the key, and then let the daemon decrypt and cache databases on demand.&lt;/p&gt;
&lt;p&gt;The underlying mechanism differs by platform:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS uses the Mach VM API.&lt;/li&gt;
&lt;li&gt;Linux uses &lt;code&gt;/proc/&amp;lt;pid&amp;gt;/mem&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Windows uses &lt;code&gt;VirtualQueryEx&lt;/code&gt; and &lt;code&gt;ReadProcessMemory&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These details explain why initialization usually requires elevated permissions, and why macOS involves signing and privacy authorization.&lt;/p&gt;
&lt;h2 id=&#34;boundaries-and-risks&#34;&gt;Boundaries and Risks
&lt;/h2&gt;&lt;p&gt;Tools like this must start with boundaries.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;wx-cli&lt;/code&gt; README disclaimer is clear: the tool is only for learning and research, for decrypting your own WeChat data, and it requires users to comply with applicable laws and regulations. It must not be used for unauthorized data access.&lt;/p&gt;
&lt;p&gt;In practice, it is also wise to keep these points in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use it only on your own computer and your own WeChat account.&lt;/li&gt;
&lt;li&gt;Do not casually upload exported chat history to cloud models.&lt;/li&gt;
&lt;li&gt;When using an agent to analyze chat history, first confirm the API provider and cross-border data risks.&lt;/li&gt;
&lt;li&gt;After exporting Markdown / JSON, pay attention to file permissions and backup locations.&lt;/li&gt;
&lt;li&gt;On company or shared devices, confirm compliance and authorization first.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A local tool does not mean there is no privacy risk. It reduces the default path for data to leave your machine, but if you hand the output to a cloud model, cloud drive, or third-party script, the risk comes back.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;wx-cli&lt;/code&gt; fits these scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quickly search your own historical WeChat messages locally.&lt;/li&gt;
&lt;li&gt;Export a session as Markdown or JSON.&lt;/li&gt;
&lt;li&gt;Analyze posting activity in a group chat over a time range.&lt;/li&gt;
&lt;li&gt;Let Claude Code, Cursor, Codex, and similar agents organize local WeChat material.&lt;/li&gt;
&lt;li&gt;Collect official account article links into a local knowledge base.&lt;/li&gt;
&lt;li&gt;Study WeChat&amp;rsquo;s local database structure and decryption flow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable for these scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want cloud-based WeChat sync.&lt;/li&gt;
&lt;li&gt;You want to bypass someone else&amp;rsquo;s device or account permissions.&lt;/li&gt;
&lt;li&gt;You want a point-and-click GUI and do not want to touch the command line.&lt;/li&gt;
&lt;li&gt;You do not want to deal with macOS permissions, Windows administrator rights, or Linux sudo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;wx-cli&lt;/code&gt; is not merely &amp;ldquo;searching WeChat chat history from the command line.&amp;rdquo; More precisely, it turns local WeChat data into a local data source that can be queried, exported, and consumed by agents.&lt;/p&gt;
&lt;p&gt;Its daemon architecture solves repeated decryption and query performance issues; the &lt;code&gt;meta&lt;/code&gt; wrapper helps AI Agents judge whether results are fresh; and &lt;code&gt;SKILL.md&lt;/code&gt; lets tools such as Claude Code, Cursor, and Codex understand how to install and use it.&lt;/p&gt;
&lt;p&gt;If you often need to find information in WeChat, organize group chats, export records, or build a personal knowledge base, &lt;code&gt;wx-cli&lt;/code&gt; is worth watching. But one bottom line should always remain clear: only process your own data, and manage exported results carefully.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Open Design Explained: Turning Claude Code and Codex into AI Design Tools</title>
        <link>https://knightli.com/en/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/en/2026/05/18/open-design-open-source-claude-design-alternative/</guid>
        <description>&lt;p&gt;Open Design is an open-source AI design project from nexu-io. Its positioning is local-first and open-source, as an alternative direction to Claude Design and Figma.&lt;/p&gt;
&lt;p&gt;The problem it targets is clear: Claude Design showed that large models can generate design artifacts directly, but if this capability only exists inside a closed, cloud-only, single-model product, users cannot easily self-host, connect their own agents, swap models, build private design systems, or put outputs into a local workflow.&lt;/p&gt;
&lt;p&gt;Open Design does not try to build a new foundation model. Instead, it connects the coding-agent CLIs already installed on your computer into a design workspace. Claude Code, Codex, Cursor Agent, Gemini CLI, OpenCode, Qwen, Copilot CLI, Kimi, DeepSeek TUI, and similar tools can become its design engine.&lt;/p&gt;
&lt;h2 id=&#34;what-is-open-design&#34;&gt;What is Open Design?
&lt;/h2&gt;&lt;p&gt;Open Design can be understood as a combination of three parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Web UI for chat, preview, project management, and export.&lt;/li&gt;
&lt;li&gt;A local daemon that schedules agents, manages files, stores projects, and provides APIs.&lt;/li&gt;
&lt;li&gt;A set of Skills, Design Systems, and templates that guide agents toward design-quality artifacts instead of generic AI pages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After the user enters a request, Open Design does more than pass a sentence to a model. It first asks the user to refine the design brief, choose the scenario and direction, then injects project metadata, the active design system, Skill files, templates, and checklists into the agent&amp;rsquo;s context. The agent reads and writes files inside a real project folder and produces an artifact that can be previewed in a sandboxed iframe.&lt;/p&gt;
&lt;p&gt;This makes it closer to an AI design workflow than a one-shot webpage generator.&lt;/p&gt;
&lt;h2 id=&#34;why-it-differs-from-ordinary-ai-webpage-generation&#34;&gt;Why it differs from ordinary AI webpage generation
&lt;/h2&gt;&lt;p&gt;Many AI tools can generate an HTML page. Open Design&amp;rsquo;s focus is not &amp;ldquo;make the model write a page,&amp;rdquo; but &amp;ldquo;make the model follow a design workflow to deliver artifacts that can be previewed, exported, and iterated.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It emphasizes several design choices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask questions before generating. A new design brief starts with an interactive question form to lock down audience, tone, brand context, constraints, and visual direction.&lt;/li&gt;
&lt;li&gt;Skills are files, not black-box plugins. Each Skill is made of &lt;code&gt;SKILL.md&lt;/code&gt;, &lt;code&gt;assets/&lt;/code&gt;, and &lt;code&gt;references/&lt;/code&gt;, so it can be read, replaced, and extended.&lt;/li&gt;
&lt;li&gt;Design Systems are Markdown, not fixed theme JSON. Color, typography, spacing, components, motion, brand voice, and anti-patterns can be written into &lt;code&gt;DESIGN.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The agent works in a real project directory. It can read templates, write files, generate images, and output &lt;code&gt;.pptx&lt;/code&gt;, &lt;code&gt;.pdf&lt;/code&gt;, &lt;code&gt;.zip&lt;/code&gt;, and other files.&lt;/li&gt;
&lt;li&gt;Artifacts are previewed in a sandboxed iframe, reducing the risk of directly executing uncontrolled code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal is to make AI behave more like a design collaborator with rules, assets, and checklists.&lt;/p&gt;
&lt;h2 id=&#34;which-agents-does-it-support&#34;&gt;Which agents does it support?
&lt;/h2&gt;&lt;p&gt;One highlight of Open Design is that it treats agents as the runtime instead of locking into one model vendor.&lt;/p&gt;
&lt;p&gt;The README lists support for 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, and more. It detects these CLIs from &lt;code&gt;PATH&lt;/code&gt; and lets users switch between them.&lt;/p&gt;
&lt;p&gt;If no local CLI is available, it can also use an OpenAI-compatible BYOK proxy. Users provide &lt;code&gt;baseUrl&lt;/code&gt;, &lt;code&gt;apiKey&lt;/code&gt;, and model name, and the daemon normalizes streaming output into the same chat stream.&lt;/p&gt;
&lt;p&gt;This design brings several benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It does not lock users into one model.&lt;/li&gt;
&lt;li&gt;It can reuse agents users have already installed and configured.&lt;/li&gt;
&lt;li&gt;Local file reads and writes are managed by the daemon, making the permission boundary clearer.&lt;/li&gt;
&lt;li&gt;For enterprises and advanced users, it is easier to connect custom models and API providers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skills-and-design-systems-are-the-core-assets&#34;&gt;Skills and Design Systems are the core assets
&lt;/h2&gt;&lt;p&gt;Open Design bundles many Skills and Design Systems. The README says the built-in Skills cover web prototypes, SaaS landing pages, dashboards, mobile apps, gamified apps, social carousels, magazine posters, decks, weekly updates, finance reports, HR onboarding, invoices, kanban boards, OKRs, and more.&lt;/p&gt;
&lt;p&gt;Design Systems provide brand-grade visual constraints for the agent. The repository description mentions sources such as Linear, Stripe, Vercel, Airbnb, Tesla, Notion, Apple, Anthropic, Cursor, Supabase, Figma, Xiaohongshu, and others.&lt;/p&gt;
&lt;p&gt;The relationship is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skill decides what kind of artifact should be delivered.&lt;/li&gt;
&lt;li&gt;Design System decides what brand style the artifact should follow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without these two layers, AI can easily produce generic pages that look familiar but lack judgment. With Skills and Design Systems, the model has clearer task boundaries, visual references, and review rules.&lt;/p&gt;
&lt;h2 id=&#34;what-can-it-generate&#34;&gt;What can it generate?
&lt;/h2&gt;&lt;p&gt;Open Design is not limited to web prototypes.&lt;/p&gt;
&lt;p&gt;According to the README, it covers web, desktop, mobile prototypes, slides, images, videos, HyperFrames, and more. It also supports export formats such as HTML, PDF, PPTX, ZIP, and Markdown. Media generation is included in the same design loop, covering posters, avatars, infographics, illustrated maps, short videos, and HTML-to-MP4 motion graphics.&lt;/p&gt;
&lt;p&gt;This gives it a wide range of use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Startup teams can create pitch decks quickly.&lt;/li&gt;
&lt;li&gt;Product teams can generate landing pages or functional prototypes.&lt;/li&gt;
&lt;li&gt;Operations teams can create campaign pages, social media images, and weekly reports.&lt;/li&gt;
&lt;li&gt;Designers can use it for moodboards, visual directions, and first-pass layouts.&lt;/li&gt;
&lt;li&gt;Developers can turn requirements into runnable frontend artifacts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its value is not just generating one page, but bringing multiple content forms into the same agent workflow.&lt;/p&gt;
&lt;h2 id=&#34;what-local-first-means&#34;&gt;What local-first means
&lt;/h2&gt;&lt;p&gt;Open Design emphasizes local-first. It does not hand everything to a remote SaaS backend. Instead, it runs a local daemon and project workspace.&lt;/p&gt;
&lt;p&gt;The architecture described in the README roughly looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The frontend uses Next.js, React, and TypeScript.&lt;/li&gt;
&lt;li&gt;The local daemon uses Node, Express, SQLite, and SSE.&lt;/li&gt;
&lt;li&gt;Projects, sessions, messages, tabs, and templates are stored in local SQLite and &lt;code&gt;.od/projects/&amp;lt;id&amp;gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Agents are started through &lt;code&gt;child_process.spawn&lt;/code&gt; and read/write inside project artifact folders.&lt;/li&gt;
&lt;li&gt;Preview is rendered through a sandboxed iframe.&lt;/li&gt;
&lt;li&gt;Export includes HTML, PDF, PPTX, ZIP, and Markdown.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This structure is better for users who want design outputs to stay on their machine, local agents to be connected, API keys to remain under their control, and private workspaces to be maintained.&lt;/p&gt;
&lt;p&gt;However, local-first does not mean fully offline. Actual generation still depends on the agent and model you use. If you use a cloud model API, content still goes to that provider. A more accurate description is that Open Design brings workspace, scheduling, files, and preview back to local control, while leaving the model layer to the user.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-claude-design-and-figma&#34;&gt;Relationship with Claude Design and Figma
&lt;/h2&gt;&lt;p&gt;Open Design explicitly describes itself as an open-source alternative direction to Claude Design and Figma, but it is not a traditional Figma clone.&lt;/p&gt;
&lt;p&gt;Figma is a professional tool for manual design editing, collaboration, and delivery. Open Design is more agent-native: users drive agents through natural language, forms, Skills, and design systems to produce runnable artifacts.&lt;/p&gt;
&lt;p&gt;It combines several ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Design&amp;rsquo;s artifact-first experience.&lt;/li&gt;
&lt;li&gt;Figma&amp;rsquo;s design-system awareness.&lt;/li&gt;
&lt;li&gt;File reading, writing, and execution from agents such as Claude Code and Codex.&lt;/li&gt;
&lt;li&gt;Local daemon project management and sandboxed preview.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So it may not replace the full professional design workflow, but it is well suited as a fast path from idea to previewable prototype.&lt;/p&gt;
&lt;h2 id=&#34;who-is-it-for&#34;&gt;Who is it for?
&lt;/h2&gt;&lt;p&gt;Open Design is better suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers already using Claude Code, Codex, Cursor, Gemini CLI, and similar agents.&lt;/li&gt;
&lt;li&gt;Users who want AI design outputs managed inside local project folders.&lt;/li&gt;
&lt;li&gt;Startup teams that need web prototypes, decks, posters, and marketing assets quickly.&lt;/li&gt;
&lt;li&gt;Advanced users who want to customize Skills, Design Systems, and prompt stacks.&lt;/li&gt;
&lt;li&gt;Teams that do not want to be locked into a single model or cloud product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lightweight users who only want to open a webpage, type one sentence, and download an image.&lt;/li&gt;
&lt;li&gt;Users who do not want to touch Node, pnpm, daemons, CLIs, or local configuration.&lt;/li&gt;
&lt;li&gt;Professional Figma workflows that need mature collaboration, design review, and vector editing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short, Open Design is more of a tool for agent users and technical design teams than a lightweight design SaaS for everyone.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch&#34;&gt;Things to watch
&lt;/h2&gt;&lt;p&gt;The README marks the project as &lt;code&gt;0.8.0-preview&lt;/code&gt; and notes that it is still evolving quickly. That energy is valuable, but it also means APIs, data directories, desktop migration, Skills structure, and export flows may change.&lt;/p&gt;
&lt;p&gt;Before using it seriously:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not treat it as a fully stable enterprise design platform.&lt;/li&gt;
&lt;li&gt;Try the workflow with test projects before importing important materials.&lt;/li&gt;
&lt;li&gt;Back up &lt;code&gt;.od/&lt;/code&gt; before migration, and make sure the daemon and desktop app are stopped.&lt;/li&gt;
&lt;li&gt;When using BYOK, pay attention to API keys, proxy addresses, and local private-network access risks.&lt;/li&gt;
&lt;li&gt;Review generated designs manually, especially for brand, copyright, copy, and visual consistency.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefit of an open-source project is that it can be inspected, modified, and contributed to. The cost is that you need to accept some engineering friction.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The interesting part of Open Design is not just that it is an open-source Claude Design alternative. What matters is how it organizes Agent CLIs, Skills, Design Systems, a local daemon, and sandboxed preview into one design workflow.&lt;/p&gt;
&lt;p&gt;It pushes design generation from a single prompt toward a more structured process: ask questions, choose direction, load a design system, read the Skill, write real files, preview the artifact, then export the result.&lt;/p&gt;
&lt;p&gt;If you already use Claude Code, Codex, or Cursor for coding work, Open Design is worth watching. It represents a new product shape: AI is not only drawing one picture for you, but working inside a local project space, following design systems and task skills to generate design artifacts that can keep evolving.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Code Token-Saving Guide: How Models, MCP, CLAUDE.md, and Skills Affect Cache</title>
        <link>https://knightli.com/en/2026/05/18/claude-code-prompt-cache-token-optimization/</link>
        <pubDate>Mon, 18 May 2026 18:30:24 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/18/claude-code-prompt-cache-token-optimization/</guid>
        <description>&lt;p&gt;In long Claude Code tasks, Prompt Cache hit rate directly affects cost and speed. Many users know that caching can save tokens, but not which actions make the cache suddenly miss.&lt;/p&gt;
&lt;p&gt;The simplest mental model is a left-to-right context chain:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The farther left something sits, the more stable it should be and the larger the cache benefit. If a left-side section changes, everything after it may need to be recalculated. If a right-side section changes, the impact is smaller.&lt;/p&gt;
&lt;p&gt;So optimizing Prompt Cache in Claude Code is not guesswork. The rule is simple: before a task begins, prepare the model, MCP servers, Skills, &lt;code&gt;CLAUDE.md&lt;/code&gt;, and other base context. Once the task starts, change as little of that fixed context as possible.&lt;/p&gt;
&lt;h2 id=&#34;prompt-cache-does-not-cache-plain-text&#34;&gt;Prompt Cache does not cache plain text
&lt;/h2&gt;&lt;p&gt;Prompt Cache is not just a string cache for prompts. In Transformer inference, what matters is the Key/Value state calculated by attention layers from the prefix context, usually called KV cache.&lt;/p&gt;
&lt;p&gt;That means two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the prefix stays stable, part of the previous computation can be reused.&lt;/li&gt;
&lt;li&gt;If the model, tool definitions, system prompt, or prefix messages change, old cache entries may no longer match.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic&amp;rsquo;s documentation summarizes the invalidation hierarchy as &lt;code&gt;tools -&amp;gt; system -&amp;gt; messages&lt;/code&gt;. Changes to tool definitions can invalidate the whole cache; system changes affect system and messages; message changes mainly affect message cache.&lt;/p&gt;
&lt;p&gt;Claude Code adds more context sources such as &lt;code&gt;CLAUDE.md&lt;/code&gt;, Skills, MCP, plugins, and subagents, so it is easier to accidentally break cache reuse.&lt;/p&gt;
&lt;h2 id=&#34;cache-killer-1-switching-models-mid-task&#34;&gt;Cache killer 1: switching models mid-task
&lt;/h2&gt;&lt;p&gt;Switching models is one of the most expensive changes.&lt;/p&gt;
&lt;p&gt;Prompt Cache is isolated by model. Opus, Sonnet, and Haiku have different architectures and weights, so the KV cache calculated from the same text is not interchangeable. If you build a long context in Opus and then switch to Sonnet, Sonnet cannot reuse Opus&amp;rsquo;s cache.&lt;/p&gt;
&lt;p&gt;This creates a counterintuitive result: switching models mid-task to save money may make the previous cache useless. Context that could have been read at cache-read price may need to be written and computed again.&lt;/p&gt;
&lt;p&gt;A steadier pattern is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep the main conversation on one model.&lt;/li&gt;
&lt;li&gt;Use a subagent for side tasks that can run on a cheaper model.&lt;/li&gt;
&lt;li&gt;Let the side agent search, explore, or summarize, then hand a concise result back to the main conversation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This keeps the long main-context prefix stable and improves cache hit consistency.&lt;/p&gt;
&lt;h2 id=&#34;cache-killer-2-adding-mcp-or-reloading-plugins-mid-task&#34;&gt;Cache killer 2: adding MCP or reloading plugins mid-task
&lt;/h2&gt;&lt;p&gt;MCP provides tools to Claude Code. When you add an MCP server, the tool list changes, and tool definitions sit at the far left of the context chain.&lt;/p&gt;
&lt;p&gt;From a Prompt Cache perspective, when the tool list changes, the system and messages that follow may need to be recalculated. If you use many MCP servers, the tool definitions themselves can be large, so the cost of invalidation becomes obvious.&lt;/p&gt;
&lt;p&gt;One detail matters: Claude Code usually reads MCP configuration at session startup. Changing config mid-session may not affect the current session immediately. The dangerous moments are restart, resume, plugin reload, or anything that rebuilds the tool list.&lt;/p&gt;
&lt;p&gt;Recommended practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install required MCP servers before starting a long task.&lt;/li&gt;
&lt;li&gt;Avoid discovering missing tools halfway through and then reloading.&lt;/li&gt;
&lt;li&gt;Reduce default-enabled MCP servers when possible.&lt;/li&gt;
&lt;li&gt;Do not keep rarely used MCP servers always enabled.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Stable tool definitions are the foundation of stable Prompt Cache hits.&lt;/p&gt;
&lt;h2 id=&#34;cache-killer-3-editing-claudemd-mid-session&#34;&gt;Cache killer 3: editing CLAUDE.md mid-session
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is Claude Code&amp;rsquo;s project memory file. It is useful for build commands, test commands, architecture conventions, code style, and project-specific constraints.&lt;/p&gt;
&lt;p&gt;It is helpful, but it also enters the context. Claude&amp;rsquo;s help documentation explains that &lt;code&gt;CLAUDE.md&lt;/code&gt; is read at session start and delivered as a user message. It also benefits from Anthropic Prompt Cache: the first request pays full input price, while later requests can hit the lower cache-read price if the cache is still valid.&lt;/p&gt;
&lt;p&gt;The catch is that &lt;code&gt;CLAUDE.md&lt;/code&gt; is content-addressed. Once the file changes, the old cache no longer matches.&lt;/p&gt;
&lt;p&gt;So avoid frequently editing &lt;code&gt;CLAUDE.md&lt;/code&gt; during a long task. Better practices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check whether &lt;code&gt;CLAUDE.md&lt;/code&gt; is sufficient before the task starts.&lt;/li&gt;
&lt;li&gt;Put stable rules in the file and temporary instructions in the current conversation.&lt;/li&gt;
&lt;li&gt;Do not edit long-term memory for one-off instructions.&lt;/li&gt;
&lt;li&gt;If you must change it, treat the next stage as a new session or new phase.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; should be stable project guidance, not a scratchpad that changes every round.&lt;/p&gt;
&lt;h2 id=&#34;cache-killer-4-installing-or-updating-skills-mid-task&#34;&gt;Cache killer 4: installing or updating Skills mid-task
&lt;/h2&gt;&lt;p&gt;Skills are also part of the context. Installing a new Skill, updating a Skill, or changing the Skill list changes what gets injected into the session.&lt;/p&gt;
&lt;p&gt;These changes often do not fully take effect until reload, resume, or a new session. Once messages are rebuilt, old cache entries may no longer match.&lt;/p&gt;
&lt;p&gt;The same advice applies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Decide which Skills are needed before starting.&lt;/li&gt;
&lt;li&gt;Keep the Skill set stable for the same kind of task.&lt;/li&gt;
&lt;li&gt;Avoid installing Skills in the middle of a long task.&lt;/li&gt;
&lt;li&gt;If you install a new Skill, treat it as the beginning of a new stage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For repeatable workflows such as content production, review, deployment, and translation, keeping a fixed Skill set helps keep the context structure stable.&lt;/p&gt;
&lt;h2 id=&#34;cache-killer-5-idle-time-exceeding-ttl&#34;&gt;Cache killer 5: idle time exceeding TTL
&lt;/h2&gt;&lt;p&gt;Prompt Cache does not last forever. A common default TTL is on the order of minutes, and Claude Code-related documentation often refers to roughly a five-minute cache window. After TTL expires, even the same request may need to rebuild the cache.&lt;/p&gt;
&lt;p&gt;This explains a common feeling in long tasks: everything was cheap and fast, then after a coffee break the token cost jumps again.&lt;/p&gt;
&lt;p&gt;Long tasks hit this easily. You may review Claude Code output, inspect files, run tests, or think about the next step. Five minutes can disappear quickly.&lt;/p&gt;
&lt;p&gt;If your environment supports it, you can request a one-hour Prompt Cache TTL before long tasks:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In 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;One-hour cache writes usually cost more than five-minute cache writes. It is not always worth it for short tasks, but for large codebases, long conversations, and complex multi-step development, it may be cheaper than repeated cache expiration.&lt;/p&gt;
&lt;h2 id=&#34;a-token-saving-claude-code-workflow&#34;&gt;A token-saving Claude Code workflow
&lt;/h2&gt;&lt;p&gt;A steadier long-task setup looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose the model before the task starts and avoid frequent switching.&lt;/li&gt;
&lt;li&gt;Enable the MCP servers you need and disable the ones you do not.&lt;/li&gt;
&lt;li&gt;Keep &lt;code&gt;CLAUDE.md&lt;/code&gt; short, stable, and focused on durable rules.&lt;/li&gt;
&lt;li&gt;Prepare the Skills needed for this task in advance.&lt;/li&gt;
&lt;li&gt;For complex tasks, consider one-hour TTL.&lt;/li&gt;
&lt;li&gt;Split the task into phases, but keep context structure stable within each phase.&lt;/li&gt;
&lt;li&gt;Use subagents or separate sessions for side exploration instead of disturbing the main conversation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The goal is not to prevent every cache miss. It is to avoid the high-cost misses that are easy to overlook.&lt;/p&gt;
&lt;h2 id=&#34;a-simple-rule-of-thumb&#34;&gt;A simple rule of thumb
&lt;/h2&gt;&lt;p&gt;Ask one question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Does this operation change the model, tool definitions, system context, or fixed messages near the start of the session?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If yes, it probably affects Prompt Cache. The farther left it is in the context chain, the greater the impact.&lt;/p&gt;
&lt;p&gt;Common operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switch model: high risk, model caches are isolated.&lt;/li&gt;
&lt;li&gt;Add MCP or reload plugins: high risk, tool list changes.&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;CLAUDE.md&lt;/code&gt;: medium-high risk, project memory changes.&lt;/li&gt;
&lt;li&gt;Install Skills: medium-high risk, injected context changes.&lt;/li&gt;
&lt;li&gt;Continue normal conversation: low risk, mostly appends messages.&lt;/li&gt;
&lt;li&gt;Idle past TTL: high risk, server-side cache expires.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Prompt Cache optimization in Claude Code is about keeping the session prefix stable.&lt;/p&gt;
&lt;p&gt;Do not switch models casually. Do not install MCP servers and Skills halfway through. Do not use &lt;code&gt;CLAUDE.md&lt;/code&gt; as a temporary scratchpad. For complex tasks, consider a longer TTL. Once these basics are stable, token cost and response speed become much more predictable.&lt;/p&gt;
&lt;p&gt;The most practical sentence is: configure before you start, change less after you start.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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: Which AI Image Tool Should You Choose?</title>
        <link>https://knightli.com/en/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/en/2026/05/18/midjourney-vs-stable-diffusion-ai-image-generator/</guid>
        <description>&lt;p&gt;Midjourney and Stable Diffusion are two of the most frequently compared AI image-generation tools today. Both can create high-quality images, but their product logic is very different.&lt;/p&gt;
&lt;p&gt;Midjourney feels like a well-tuned high-end camera: closed, cloud-based, paid, and easy to use. You type a few sentences and often get images with strong aesthetics. Stable Diffusion is more like a customizable professional studio: open, locally deployable, deeply configurable, but it expects you to understand models, parameters, workflows, and hardware.&lt;/p&gt;
&lt;p&gt;So the question is not simply which one is stronger. The better question is what you need. If you want fast output and stable aesthetics, Midjourney is easier. If you need precise control, batch production, private deployment, or customizable workflows, Stable Diffusion gives you more room.&lt;/p&gt;
&lt;h2 id=&#34;short-answer&#34;&gt;Short answer
&lt;/h2&gt;&lt;p&gt;If you are a blogger, independent designer, illustrator, or creator who needs covers, posters, concept images, or moodboards quickly, start with Midjourney.&lt;/p&gt;
&lt;p&gt;If you need ecommerce product images, AI model try-ons, architecture renders, game art assets, batch generation, private deployment, or automation APIs, Stable Diffusion is usually the better choice.&lt;/p&gt;
&lt;p&gt;If you just want to try AI image generation without dealing with computers and parameters, Midjourney has a much lower learning curve.&lt;/p&gt;
&lt;p&gt;If you are willing to learn ComfyUI, LoRA, ControlNet, Checkpoints, and you have a good NVIDIA GPU, Stable Diffusion has the higher ceiling.&lt;/p&gt;
&lt;h2 id=&#34;core-difference-product-vs-ecosystem&#34;&gt;Core difference: product vs ecosystem
&lt;/h2&gt;&lt;p&gt;Midjourney is first of all a complete product. You use it through the website or Discord. Models, compute, queues, styles, parameters, and video features are maintained by the official team. Its strengths are strong default output, stable aesthetics, and fast ideation. Its limits are that you cannot truly modify the model internals or move the entire workflow onto your own machine.&lt;/p&gt;
&lt;p&gt;Stable Diffusion is more like an open ecosystem. You can run SDXL, SD3.5, Flux, and many community models through WebUI, ComfyUI, local scripts, or third-party platforms. Its strengths are control, training, batch generation, and private deployment. Its cost is setup time: GPU, models, extensions, parameters, and workflow management.&lt;/p&gt;
&lt;p&gt;That shapes the experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney reduces choices in exchange for stronger default taste.&lt;/li&gt;
&lt;li&gt;Stable Diffusion gives you more choices and more complexity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;image-quality-midjourney-gets-attractive-first-drafts-faster&#34;&gt;Image quality: Midjourney gets attractive first drafts faster
&lt;/h2&gt;&lt;p&gt;Midjourney is especially good at first-impression images. You can write &amp;ldquo;cinematic portrait&amp;rdquo;, &amp;ldquo;futuristic city poster&amp;rdquo;, or &amp;ldquo;luxury perfume ad&amp;rdquo;, and it will usually fill in lighting, composition, material, and atmosphere on its own. For people without a photography or design background, that default taste is extremely helpful.&lt;/p&gt;
&lt;p&gt;Stable Diffusion can also produce excellent images, but the base model alone is not always enough. You often need the right model, LoRA, sampler, prompt, negative prompt, and post-processing to reach the same level of polish.&lt;/p&gt;
&lt;p&gt;In simple terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney has a higher average floor.&lt;/li&gt;
&lt;li&gt;Stable Diffusion has a very high ceiling, but it needs setup and experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For social covers, blog images, moodboards, and quick visual ideas, Midjourney usually saves more time.&lt;/p&gt;
&lt;h2 id=&#34;control-stable-diffusion-is-better-for-production-workflows&#34;&gt;Control: Stable Diffusion is better for production workflows
&lt;/h2&gt;&lt;p&gt;The hardest part of AI image generation is not making something beautiful. It is making the model draw the right thing.&lt;/p&gt;
&lt;p&gt;You may need a character to keep the same face, a pose to follow a skeleton, a product not to deform, a clothing pattern to stay intact, a sketch to become an architectural render, or the same character to appear across many panels. These tasks require control.&lt;/p&gt;
&lt;p&gt;Stable Diffusion is much stronger here. ControlNet can guide pose, line art, depth maps, and edge maps. LoRA can train a specific person, product, outfit, or style. ComfyUI can connect generation, upscaling, cutouts, inpainting, face replacement, virtual try-on, and batch processing into one pipeline.&lt;/p&gt;
&lt;p&gt;Midjourney also has style references, character references, image references, and local editing. Recent versions have improved prompt understanding and detail retention. But it is still better for creative exploration than highly constrained industrial workflows.&lt;/p&gt;
&lt;h2 id=&#34;prompt-logic-aesthetics-vs-engineering&#34;&gt;Prompt logic: aesthetics vs engineering
&lt;/h2&gt;&lt;p&gt;Midjourney tends to understand aesthetic intent. You write natural language and it fills in many things that make the result look good. For ordinary users, that is a feature: you do not need to specify every lighting, lens, texture, and composition detail.&lt;/p&gt;
&lt;p&gt;Stable Diffusion behaves more like a parameterized system. You can describe the image in natural language, but you can also specify model, resolution, sampling steps, CFG, ControlNet inputs, LoRA weights, and inpainting regions. It is not one button. It is a toolbox.&lt;/p&gt;
&lt;p&gt;That is why many people find Stable Diffusion hard at first. It is not a single app; it is a stack.&lt;/p&gt;
&lt;h2 id=&#34;character-and-style-consistency&#34;&gt;Character and style consistency
&lt;/h2&gt;&lt;p&gt;Midjourney now offers character and style reference features. They are useful for keeping a general character feel, clothing direction, and visual style. For short visual projects, poster series, and social content, they may be enough.&lt;/p&gt;
&lt;p&gt;But if you are making long comics, game character assets, virtual models, or ecommerce brand visuals, Stable Diffusion&amp;rsquo;s trainability matters more. With LoRA or DreamBooth, you can lock in a specific character, product, outfit, or art style across many images.&lt;/p&gt;
&lt;p&gt;The difference is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney is good at &amp;ldquo;looking like the same person.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Stable Diffusion is better at &amp;ldquo;being this exact person or product.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;text-and-layout&#34;&gt;Text and layout
&lt;/h2&gt;&lt;p&gt;AI image models used to be poor at generating text. They are improving, but they are still not professional layout tools.&lt;/p&gt;
&lt;p&gt;Midjourney&amp;rsquo;s newer versions handle short English text, title lettering, and poster-style typography better, but long text, Chinese layout, and multi-line commercial copy can still fail.&lt;/p&gt;
&lt;p&gt;In the Stable Diffusion ecosystem, newer models such as SD3.5 use stronger text encoders and handle longer prompts better. Even so, the safest commercial workflow is still: generate the image with AI, then finish text and layout in Photoshop, Illustrator, Figma, or Canva.&lt;/p&gt;
&lt;h2 id=&#34;video&#34;&gt;Video
&lt;/h2&gt;&lt;p&gt;Midjourney includes image-to-video capabilities. You can turn an image into a short video and extend it. The entry point is simple, which is useful for social clips, atmosphere videos, and dynamic covers.&lt;/p&gt;
&lt;p&gt;Stable Diffusion also has AnimateDiff, SVD, and ComfyUI video workflows, but setup and tuning are harder. It is better for users willing to work with nodes, VRAM, models, and frame consistency.&lt;/p&gt;
&lt;p&gt;If you just want to animate one image, Midjourney is easier.&lt;/p&gt;
&lt;p&gt;If you want to integrate video generation into your own automated workflow, the Stable Diffusion ecosystem is freer.&lt;/p&gt;
&lt;h2 id=&#34;hardware-and-cost&#34;&gt;Hardware and cost
&lt;/h2&gt;&lt;p&gt;Midjourney is a cloud subscription service. You do not need a GPU. A phone, tablet, or thin laptop is enough. The main costs are subscription fees and generation quotas.&lt;/p&gt;
&lt;p&gt;Stable Diffusion can run locally, and many models and tools are free, but hardware is not free. For a good experience, you usually want an NVIDIA GPU with enough VRAM. SDXL, SD3.5, Flux, video workflows, upscaling, and batch generation all consume VRAM. You can start with 8GB, but 12GB, 16GB, or more is much more comfortable.&lt;/p&gt;
&lt;p&gt;Cost-wise:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Low-frequency use: Midjourney is usually cheaper and easier.&lt;/li&gt;
&lt;li&gt;High-volume production: local Stable Diffusion can be cheaper long term.&lt;/li&gt;
&lt;li&gt;No GPU: choose Midjourney or a cloud SD platform.&lt;/li&gt;
&lt;li&gt;Good GPU already available: Stable Diffusion is worth exploring.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;commercial-use-creative-images-vs-production-line&#34;&gt;Commercial use: creative images vs production line
&lt;/h2&gt;&lt;p&gt;Midjourney is excellent for early concept exploration: brand direction, ad mood, covers, game scene ideas, and character concept sketches.&lt;/p&gt;
&lt;p&gt;Stable Diffusion is better once you enter production: ecommerce model try-ons, batch background replacement, sketch-to-render workflows, character LoRA training, private enterprise image generation, and API automation. It can become part of scripts, databases, backend jobs, and internal tools.&lt;/p&gt;
&lt;p&gt;In other words:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Midjourney is an inspiration accelerator for creative teams.&lt;/li&gt;
&lt;li&gt;Stable Diffusion is an image-production system that technical teams can build.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-choose-in-2026&#34;&gt;How to choose in 2026
&lt;/h2&gt;&lt;p&gt;Choose Midjourney if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want high-quality images from a few sentences.&lt;/li&gt;
&lt;li&gt;You do not want to learn GPUs, models, nodes, or parameters.&lt;/li&gt;
&lt;li&gt;You mainly make covers, illustrations, posters, concept images, or moodboards.&lt;/li&gt;
&lt;li&gt;You are willing to pay a subscription for convenience.&lt;/li&gt;
&lt;li&gt;You do not need extreme precision.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Choose Stable Diffusion if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to control pose, product shape, line structure, or layout.&lt;/li&gt;
&lt;li&gt;You want to train your own characters, products, brand style, or custom model.&lt;/li&gt;
&lt;li&gt;You need batch generation or integration into websites, software, or workflows.&lt;/li&gt;
&lt;li&gt;You care about local deployment, privacy, and control.&lt;/li&gt;
&lt;li&gt;You are willing to learn ComfyUI, LoRA, ControlNet, and related tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-most-practical-combination&#34;&gt;The most practical combination
&lt;/h2&gt;&lt;p&gt;Many professional users eventually use both.&lt;/p&gt;
&lt;p&gt;A common workflow is to explore style and composition in Midjourney, then use Stable Diffusion for precise control, character consistency, product consistency, and batch production. Finally, traditional design tools handle text, layout, and retouching.&lt;/p&gt;
&lt;p&gt;That is more practical than arguing which tool is stronger.&lt;/p&gt;
&lt;p&gt;Midjourney helps you see possibilities faster. Stable Diffusion turns those possibilities into controllable workflows. The first improves creative speed; the second improves production certainty.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The difference between Midjourney and Stable Diffusion is the difference between automated aesthetics and controllable workflows.&lt;/p&gt;
&lt;p&gt;Midjourney is best for most people who want beautiful images quickly. It lowers the barrier to AI art and lets non-technical users start creating immediately.&lt;/p&gt;
&lt;p&gt;Stable Diffusion is for people who need control, training, batching, privacy, and automation. It has a higher learning curve, but once the workflow is built, it can become real image-production infrastructure.&lt;/p&gt;
&lt;p&gt;If you do not yet know what you need, start with Midjourney.&lt;br&gt;
If you already find yourself saying, &amp;ldquo;This image looks great, but it does not follow my requirements,&amp;rdquo; it is time to learn Stable Diffusion.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 documentation&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 documentation&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>Why Is Sulphur 2 Popular? Open AI Video Generation, Uncensored Debate, and Local Deployment Barriers</title>
        <link>https://knightli.com/en/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/en/2026/05/18/sulphur-2-open-ai-video-generation-model/</guid>
        <description>&lt;p&gt;Sulphur 2 has recently triggered a lot of discussion in the AI video generation community.&lt;/p&gt;
&lt;p&gt;It is not an online commercial product like Sora, Runway, or Pika, and it is not a brand-new architecture trained from scratch. More accurately, Sulphur 2 is an open-weights video generation model fine-tuned from LTX 2.3, aimed at local generation, controllable workflows, and more open prompt responsiveness.&lt;/p&gt;
&lt;p&gt;What really makes it interesting is not just that it can generate video. It brings an old question back to the front: should AI video models have their content boundaries set uniformly by platforms, or should local users take responsibility within legal limits?&lt;/p&gt;
&lt;h2 id=&#34;the-relationship-between-sulphur-2-and-ltx-23&#34;&gt;The Relationship Between Sulphur 2 and LTX 2.3
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is built on Lightricks&amp;rsquo; open LTX 2.3.&lt;/p&gt;
&lt;p&gt;LTX 2.3 is already a relatively complete video generation model line, supporting text-to-video, image-to-video, variable frame rates, first-frame and last-frame control, audio synchronization, and more. Its ecosystem is also easier to connect to local workflows such as ComfyUI.&lt;/p&gt;
&lt;p&gt;Sulphur 2 does not change that basic structure. Instead, it fine-tunes LTX 2.3 for a more specific direction. The original article notes that the development team trained it with more than 125,000 video samples and provides different versions such as BF16, FP8 mixed, and Distill LoRA, so users can choose according to their hardware.&lt;/p&gt;
&lt;p&gt;That means Sulphur 2 is more like a derivative model package in the LTX 2.3 ecosystem than a completely independent new platform.&lt;/p&gt;
&lt;p&gt;If you care about local deployment, VRAM requirements, and ComfyUI workflows, you can also read the earlier deployment note on this site: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/12/sulphur-2-ltx-2-3-video-generation/&#34; &gt;Can Sulphur 2 Run on 8GB VRAM? Notes on Local Deployment of an LTX 2.3 Video Model&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;why-it-is-called-uncensored&#34;&gt;Why It Is Called &amp;ldquo;Uncensored&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;The most controversial label around Sulphur 2 is uncensored.&lt;/p&gt;
&lt;p&gt;The word is easy to misunderstand. It should not be interpreted as &amp;ldquo;it can generate anything&amp;rdquo;, and it certainly does not mean it can be used for illegal content, infringement, harassment, impersonation, or non-consensual imagery. A more accurate understanding is that, compared with many commercial video generation platforms, Sulphur 2 is less likely to reject prompts about sensitive but legal topics outright.&lt;/p&gt;
&lt;p&gt;Commercial platforms usually take a conservative approach. To reduce legal, brand, and compliance risks, they may block many prompts in gray areas. This can reduce misuse, but it can also affect normal creative scenarios such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Medical education.&lt;/li&gt;
&lt;li&gt;Historical topics.&lt;/li&gt;
&lt;li&gt;News reconstruction.&lt;/li&gt;
&lt;li&gt;Artistic experiments.&lt;/li&gt;
&lt;li&gt;Niche style creation.&lt;/li&gt;
&lt;li&gt;Serious documentary material planning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sulphur 2&amp;rsquo;s approach is to give more judgment back to local users while keeping a baseline filter for illegal content. That direction creates more creative freedom, but also requires more responsibility.&lt;/p&gt;
&lt;h2 id=&#34;technically-it-is-more-than-removing-limits&#34;&gt;Technically, It Is More Than &amp;ldquo;Removing Limits&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;It is incomplete to describe Sulphur 2 as simply &amp;ldquo;LTX 2.3 with the censorship layer removed&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Based on public information, it provides a set of LTX 2.3-related model weights and tools, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A BF16 full-precision version for hardware with more VRAM.&lt;/li&gt;
&lt;li&gt;An FP8 mixed version that trades some precision for better usability on lower VRAM.&lt;/li&gt;
&lt;li&gt;A Distill LoRA version for balancing speed and quality.&lt;/li&gt;
&lt;li&gt;ComfyUI workflows for testing text-to-video and image-to-video.&lt;/li&gt;
&lt;li&gt;A Prompt Enhancer that expands short descriptions into prompts better suited to video generation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Video generation is different from image generation. A video prompt involves not only subject and style, but also camera movement, character motion, temporal continuity, frame-to-frame consistency, shot scale, and pacing. If the prompt is too short, the model often fills in unstable details.&lt;/p&gt;
&lt;p&gt;That is why the Prompt Enhancer matters. The user provides a simple idea, a smaller model expands it into a description better suited to the video model, and then the Sulphur 2 workflow generates the video.&lt;/p&gt;
&lt;h2 id=&#34;actual-experience-more-obedient-not-omnipotent&#34;&gt;Actual Experience: More Obedient, Not Omnipotent
&lt;/h2&gt;&lt;p&gt;Based on community feedback, one obvious feature of Sulphur 2 is that it is more willing to follow prompts.&lt;/p&gt;
&lt;p&gt;Because there are fewer restrictions, it is less likely to suddenly reject, degrade, or route around user intent for certain legal topics. This is attractive to users who need precise control, especially for local creation, experimental video, concept shorts, and niche subjects.&lt;/p&gt;
&lt;p&gt;But it is not the final answer to video generation.&lt;/p&gt;
&lt;p&gt;Current open video models still commonly suffer from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unnatural human motion.&lt;/li&gt;
&lt;li&gt;Deformed limbs and hands.&lt;/li&gt;
&lt;li&gt;Weak long-shot consistency.&lt;/li&gt;
&lt;li&gt;Confusion in multi-subject interactions.&lt;/li&gt;
&lt;li&gt;Overly literal understanding of complex scenes.&lt;/li&gt;
&lt;li&gt;Images that match the prompt but lack visual taste or editing sense.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These problems are not unique to Sulphur 2. They are common to current AI video generation models. Sulphur 2 can improve part of the prompt-following problem, but it cannot eliminate the core technical difficulty of video generation.&lt;/p&gt;
&lt;h2 id=&#34;hardware-requirements-still-matter&#34;&gt;Hardware Requirements Still Matter
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is an open model, but open does not mean it runs casually on any normal computer.&lt;/p&gt;
&lt;p&gt;To get good results, you still need a reasonably strong GPU. The original article notes that the FP8 version lowers VRAM requirements, but stable use still usually requires substantial VRAM. The BF16 version has higher hardware requirements and is better suited to high-end GPUs or cloud GPUs.&lt;/p&gt;
&lt;p&gt;This means Sulphur 2&amp;rsquo;s &amp;ldquo;popularization&amp;rdquo; is not the same as one-click web-tool popularization. It is popularization in the open-source community sense:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weights can be downloaded.&lt;/li&gt;
&lt;li&gt;Workflows can be modified.&lt;/li&gt;
&lt;li&gt;Users can run it locally.&lt;/li&gt;
&lt;li&gt;Developers can fine-tune it further.&lt;/li&gt;
&lt;li&gt;Communities can share parameters and node configurations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It lowers the barrier to control, but not necessarily the hardware barrier.&lt;/p&gt;
&lt;h2 id=&#34;the-core-debate-openness-and-safety&#34;&gt;The Core Debate: Openness and Safety
&lt;/h2&gt;&lt;p&gt;The controversy around Sulphur 2 is not really about whether one model&amp;rsquo;s parameters are good. It is about governance for open AI video generation.&lt;/p&gt;
&lt;p&gt;Supporters argue that open models should not make overly broad judgments on behalf of users. As long as the content is legal, users should be able to explore artistic, educational, research, and creative boundaries in a local environment.&lt;/p&gt;
&lt;p&gt;Critics worry that video can cause more real-world harm than images. More open models may be used for forgery, harassment, infringement, misleading distribution, or other forms of misuse. Even if developers keep illegal-content filters, it is hard to fully prevent secondary modification and malicious use.&lt;/p&gt;
&lt;p&gt;Neither view should be dismissed casually.&lt;/p&gt;
&lt;p&gt;Open models need freedom, but they also need responsibility. A more workable direction is not to lock models down completely, nor to leave everything unbounded, but to build clearer community norms, model card disclosures, usage restrictions, provenance tools, and reporting mechanisms.&lt;/p&gt;
&lt;h2 id=&#34;who-should-pay-attention&#34;&gt;Who Should Pay Attention
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is more suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users already familiar with ComfyUI or local video generation workflows.&lt;/li&gt;
&lt;li&gt;Developers studying LTX 2.3 derivative model behavior.&lt;/li&gt;
&lt;li&gt;Creators who need stronger prompt responsiveness.&lt;/li&gt;
&lt;li&gt;Teams that want controllable experiments in a local environment.&lt;/li&gt;
&lt;li&gt;Model enthusiasts working on fine-tuning, LoRA, or workflow optimization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want to quickly generate a short video for social media, online products may still be easier. The value of Sulphur 2 is not &amp;ldquo;one click to finished video&amp;rdquo;, but giving more control to people willing to tinker.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is not meaningful simply because it adds one more AI video generation model.&lt;/p&gt;
&lt;p&gt;It is more like a response from the open video generation community to the conservative policies of commercial platforms: as models become stronger, who should define content boundaries?&lt;/p&gt;
&lt;p&gt;Technically, it is based on LTX 2.3 and provides multiple precision versions, LoRA, ComfyUI workflows, and a Prompt Enhancer, making it suitable for local generation and further development.&lt;/p&gt;
&lt;p&gt;From an ecosystem perspective, it also reminds us that openness in video generation brings more creative freedom and higher misuse risk at the same time. Whether open AI video models can develop healthily will depend on whether technical capability, community norms, and user responsibility can all keep pace.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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;Zhihu: Open video generation breakthrough, Sulphur 2 brings &amp;ldquo;uncensored&amp;rdquo; AI video to the public&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 official overview&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 model page&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>Which Free AI Image Generator Is Best? A Comparison Guide to Free AI Art Tools</title>
        <link>https://knightli.com/en/2026/05/17/free-ai-image-generator-tools-guide/</link>
        <pubDate>Sun, 17 May 2026 23:10:43 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/free-ai-image-generator-tools-guide/</guid>
        <description>&lt;p&gt;Looking for a good &lt;strong&gt;free ai image generator&lt;/strong&gt; is no longer a question of whether such tools exist. The harder question is which one to choose.&lt;/p&gt;
&lt;p&gt;Free AI image generators on the market can roughly be divided into three groups: local open-source tools, web tools with free credits, and high-quota or free entry points from major tech companies. They can all generate images, but their ideal users, learning curve, copyright boundaries, and controllability differ a lot.&lt;/p&gt;
&lt;p&gt;One thing should be clear from the start: free does not necessarily mean permanently free, unlimited, or commercially safe. Web platforms may change free credits, queue rules, watermarks, resolution limits, and commercial terms. Local open-source tools may be free as software, but you still need GPU hardware, model files, time, and an understanding of model licenses.&lt;/p&gt;
&lt;h2 id=&#34;local-open-source-best-for-long-term-free-use-and-deep-control&#34;&gt;Local Open Source: Best for Long-Term Free Use and Deep Control
&lt;/h2&gt;&lt;p&gt;If you have a reasonably capable NVIDIA GPU, such as an RTX 3060, 4060, or better, local deployment is still the closest thing to &amp;ldquo;unlimited free&amp;rdquo; image generation. It does not charge per image, and you do not need to upload prompts or assets to a third-party platform. It is especially suitable for heavy users, designers, and workflows that require privacy.&lt;/p&gt;
&lt;h3 id=&#34;stable-diffusion-webui--comfyui&#34;&gt;Stable Diffusion WebUI / ComfyUI
&lt;/h3&gt;&lt;p&gt;The Stable Diffusion ecosystem is one of the most mature open-source AI image generation ecosystems. Common entry points include Stable Diffusion WebUI and ComfyUI.&lt;/p&gt;
&lt;p&gt;Stable Diffusion WebUI feels more like a traditional software interface and is suitable for quickly getting started with text-to-image, image-to-image, inpainting, and upscaling. ComfyUI uses a node-based workflow. It has a higher learning curve, but much stronger controllability, making it suitable for complex workflows such as batch generation, ControlNet, reference-image constraints, multi-model combinations, and automation pipelines.&lt;/p&gt;
&lt;p&gt;Their biggest advantage is not just being free, but the ecosystem: Checkpoints, LoRA, ControlNet, VAE, workflow templates, and plugins are abundant. You can generate realistic portraits, anime characters, ecommerce product images, architectural concepts, game asset sketches, and iteratively refine a consistent style.&lt;/p&gt;
&lt;p&gt;The trade-off is also clear. You need to install the environment, manage models, learn parameters, and pay attention to the license terms of different models. For beginners, it is not the easiest free ai image generator, but it is the best option for long-term experimentation and deep customization.&lt;/p&gt;
&lt;h3 id=&#34;fooocus&#34;&gt;Fooocus
&lt;/h3&gt;&lt;p&gt;Fooocus can be understood as a more beginner-friendly local tool based on Stable Diffusion XL. It hides many parameters behind the scenes, so users mainly enter prompts and choose styles to generate good-looking images.&lt;/p&gt;
&lt;p&gt;If ComfyUI feels too engineering-heavy and Stable Diffusion WebUI has too many parameters, Fooocus is a friendlier starting point. It is suitable for style exploration, cover drafts, character concepts, product visuals, and social media images. Its controllability is weaker than a full ComfyUI workflow, but for many people that simplicity is exactly the benefit.&lt;/p&gt;
&lt;h2 id=&#34;web-tools-with-free-credits-best-for-lightweight-daily-use&#34;&gt;Web Tools With Free Credits: Best for Lightweight Daily Use
&lt;/h2&gt;&lt;p&gt;If you do not have a discrete GPU, or only need to generate a few images occasionally, web-based tools are easier. They usually provide free usage through daily credits, free tokens, queue-based generation, or slower modes.&lt;/p&gt;
&lt;p&gt;The key evaluation criteria are not only &amp;ldquo;how many free credits&amp;rdquo;, but also whether the quota is stable, whether image quality is good enough, whether Chinese is supported, whether image-to-image and local editing are available, whether high-resolution downloads are possible, and whether commercial use is allowed.&lt;/p&gt;
&lt;h3 id=&#34;seaart-ai&#34;&gt;SeaArt AI
&lt;/h3&gt;&lt;p&gt;SeaArt AI is a fairly complete web-based AI art platform. It integrates many Stable Diffusion-style models and commonly supports text-to-image, image-to-image, conditional control, upscaling, outpainting, and a model community.&lt;/p&gt;
&lt;p&gt;Its strengths are fast onboarding, many styles, and a Chinese-friendly interface. You can use it for anime characters, realistic photography, tech-style posters, product concepts, or quickly reproducing certain visual styles through existing models.&lt;/p&gt;
&lt;p&gt;The important caveat is that platform points, daily tasks, and free credits can change with operating strategy. It is safer to treat it as a web tool for light daily free use, rather than assuming any specific quota will last forever.&lt;/p&gt;
&lt;h3 id=&#34;leonardoai&#34;&gt;Leonardo.ai
&lt;/h3&gt;&lt;p&gt;Leonardo.ai leans toward creative production and game-art workflows. It often performs well in image texture, lighting, concept design, and 3D-like styles, making it suitable for game concept art, character design, scene concepts, brand visuals, and product rendering drafts.&lt;/p&gt;
&lt;p&gt;It usually provides a free plan or free credits, but the quota may vary by region, account status, and product policy. For users who do not want local deployment but still want high visual quality, Leonardo.ai is a web-based free ai image generator worth trying.&lt;/p&gt;
&lt;h3 id=&#34;clipdrop&#34;&gt;Clipdrop
&lt;/h3&gt;&lt;p&gt;Clipdrop belongs to the Stability AI ecosystem. Besides text-to-image generation, it offers useful tools such as background removal, image upscaling, object cleanup, relighting, and doodle-to-image.&lt;/p&gt;
&lt;p&gt;It feels more like an AI image toolbox than just a drawing entry point. For people who edit existing images, process visuals quickly, or generate material drafts, Clipdrop&amp;rsquo;s value often lies in the post-processing tools after generation.&lt;/p&gt;
&lt;p&gt;Free users may encounter limits on usage count, queueing, watermarks, or resolution. Always check the platform&amp;rsquo;s current rules.&lt;/p&gt;
&lt;h2 id=&#34;major-company-entry-points-best-for-simplicity-and-language-understanding&#34;&gt;Major-Company Entry Points: Best for Simplicity and Language Understanding
&lt;/h2&gt;&lt;p&gt;AI image tools from major companies tend to be stable, easy to use, and strong at understanding prompts. When you want to describe a complex scene in natural language, or generate posters, covers, and illustrations with text, they can be easier than many open-source models.&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 and Bing Image Creator are connected to OpenAI&amp;rsquo;s DALL-E image capabilities. Their strengths are strong prompt understanding, good reconstruction of complex scenes, and better handling of English text, poster titles, and design-like composition inside images.&lt;/p&gt;
&lt;p&gt;If your need is &amp;ldquo;describe a cover in Chinese or English and get a fairly finished image&amp;rdquo;, Microsoft&amp;rsquo;s entry points are often a good fit. They work well for article covers, social posters, event images, creative illustrations, and lightweight commercial visual drafts.&lt;/p&gt;
&lt;p&gt;Free usage may involve boost credits, queues, or speed differences. Actual quotas and restrictions should be checked on Microsoft&amp;rsquo;s current pages.&lt;/p&gt;
&lt;h3 id=&#34;adobe-firefly&#34;&gt;Adobe Firefly
&lt;/h3&gt;&lt;p&gt;Adobe Firefly is not positioned exactly like a normal AI art website. It emphasizes design workflows, Generative Fill, smart expansion, text effects, and integration with the Adobe ecosystem.&lt;/p&gt;
&lt;p&gt;If you already use Photoshop, Illustrator, or Express, Firefly&amp;rsquo;s advantages become more obvious. It is suitable for retouching, outpainting, background replacement, design material generation, and creative edits based on existing images.&lt;/p&gt;
&lt;p&gt;Firefly is often discussed in the context of &amp;ldquo;commercial safety&amp;rdquo; because Adobe emphasizes data sources and licensing boundaries. But whether you can use output commercially, whether a paid plan is required, and how free credits are counted still depends on Adobe&amp;rsquo;s current terms and account plan.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-start-with-use-case-not-fame&#34;&gt;How to Choose: Start With Use Case, Not Fame
&lt;/h2&gt;&lt;p&gt;If you want easy cover images, posters, or creative images with text, start with Microsoft Designer or Bing Image Creator. They understand natural language well and often produce finished-looking images quickly, especially for non-specialists.&lt;/p&gt;
&lt;p&gt;If you want to explore styles such as realism, anime, game concept art, product rendering, or tech visuals, try SeaArt AI or Leonardo.ai. They are good for quick style exploration and for users without local GPUs.&lt;/p&gt;
&lt;p&gt;If you want to edit existing images rather than only generate new ones, look at Adobe Firefly and Clipdrop. Firefly is closer to design production, while Clipdrop is more like a lightweight AI image toolbox.&lt;/p&gt;
&lt;p&gt;If you are willing to learn and have suitable hardware, Stable Diffusion WebUI, ComfyUI, and Fooocus remain the most worthwhile long-term free options. Their ceiling is higher and their marginal cost is lower, but you need to handle the learning and maintenance cost.&lt;/p&gt;
&lt;h2 id=&#34;common-traps-in-free-ai-image-tools&#34;&gt;Common Traps in Free AI Image Tools
&lt;/h2&gt;&lt;p&gt;First, free quotas change. The number of credits available today may not be the same next month. Before building a workflow around a tool, check the latest platform rules.&lt;/p&gt;
&lt;p&gt;Second, free does not mean commercially usable. Many tools allow free generation, but commercial rights, copyright ownership, training-data disputes, and restrictions on brand materials require separate review.&lt;/p&gt;
&lt;p&gt;Third, output quality depends on more than the model. Prompts, reference images, resolution, post-processing, inpainting, and image selection all affect the final result.&lt;/p&gt;
&lt;p&gt;Fourth, local open source still has licensing issues. Open-source software does not mean every model can be used commercially. When downloading Checkpoints, LoRA, or workflows, read the author&amp;rsquo;s license notes.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;If you only need a free AI image generation entry point, Microsoft Designer, Bing Image Creator, SeaArt AI, Leonardo.ai, Clipdrop, and Adobe Firefly are all worth trying.&lt;/p&gt;
&lt;p&gt;If you want to generate many images in a stable, low-cost way over the long term, the local Stable Diffusion ecosystem is closer to the &amp;ldquo;ultimate free&amp;rdquo; answer.&lt;/p&gt;
&lt;p&gt;The best free ai image generator is not necessarily the one with the most free credits. It is the one that best matches your use case, copyright requirements, and learning cost.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>Is QuillBot AI Detector Accurate? How AI Text Detection Works, Who It Helps, and What to Watch For</title>
        <link>https://knightli.com/en/2026/05/17/quillbot-ai-checker-detector-guide/</link>
        <pubDate>Sun, 17 May 2026 23:05:51 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/quillbot-ai-checker-detector-guide/</guid>
        <description>&lt;p&gt;QuillBot AI Checker, often called QuillBot AI Detector, is an AI content detection tool from QuillBot.&lt;/p&gt;
&lt;p&gt;Its purpose is straightforward: it helps users estimate how likely a piece of text is to have been generated by AI.&lt;/p&gt;
&lt;p&gt;One point is worth clarifying first. QuillBot&amp;rsquo;s text AI Detector analyzes text, not images, videos, or other rich media. QuillBot also offers a separate AI Image Detector for checking whether an image looks more like it was photographed or drawn by a person, or generated by an AI image model. Both belong to QuillBot&amp;rsquo;s detection ecosystem, but they handle different input types.&lt;/p&gt;
&lt;h2 id=&#34;what-quillbot-ai-checker-can-do&#34;&gt;What QuillBot AI Checker Can Do
&lt;/h2&gt;&lt;p&gt;The core function of QuillBot AI Checker is text AI detection.&lt;/p&gt;
&lt;p&gt;Users can paste text into the detection box, and depending on account permissions, may also upload files. The tool analyzes textual patterns and returns an AI probability score or risk signal.&lt;/p&gt;
&lt;p&gt;It usually focuses not on a single word, but on the overall language pattern, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether sentence structures are too uniform.&lt;/li&gt;
&lt;li&gt;Whether word choices are highly predictable.&lt;/li&gt;
&lt;li&gt;Whether paragraphs advance in a template-like way.&lt;/li&gt;
&lt;li&gt;Whether expressions repeat too often.&lt;/li&gt;
&lt;li&gt;Whether the tone is too smooth and lacks natural variation.&lt;/li&gt;
&lt;li&gt;Whether the logic resembles a generic answer from a large language model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The final result is usually shown as a percentage or risk level, helping users judge whether the text may be seen as AI-generated.&lt;/p&gt;
&lt;h2 id=&#34;why-sentence-level-highlights-matter&#34;&gt;Why Sentence-Level Highlights Matter
&lt;/h2&gt;&lt;p&gt;AI detection tools often provide more than an overall score. They may also mark parts of the text locally.&lt;/p&gt;
&lt;p&gt;For example, some sentences in an article may be marked as more AI-like, others as more human-written, and some as possibly rewritten or polished by AI.&lt;/p&gt;
&lt;p&gt;The value of this highlighting is not to chase a mechanical 0% AI score. It is to help locate weak spots.&lt;/p&gt;
&lt;p&gt;If a paragraph is flagged heavily, it is worth checking:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether it sounds too much like a manual.&lt;/li&gt;
&lt;li&gt;Whether it is too generic.&lt;/li&gt;
&lt;li&gt;Whether it lacks concrete examples.&lt;/li&gt;
&lt;li&gt;Whether every sentence has the same length and rhythm.&lt;/li&gt;
&lt;li&gt;Whether it lacks real experience, reasoning, or detail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For writers, this is more useful than looking only at a total score. The goal should not be to &amp;ldquo;hide from the detector&amp;rdquo;, but to make the content more specific, better reasoned, and more aligned with its real writing purpose.&lt;/p&gt;
&lt;h2 id=&#34;quillbot-also-has-an-ai-image-detector&#34;&gt;QuillBot Also Has an AI Image Detector
&lt;/h2&gt;&lt;p&gt;Besides text detection, QuillBot also provides a separate AI Image Detector.&lt;/p&gt;
&lt;p&gt;That tool is for images. It tries to estimate whether an image was photographed or drawn by a human, or generated by an AI image model. It is often discussed alongside tools such as Midjourney, DALL-E, and Stable Diffusion.&lt;/p&gt;
&lt;p&gt;But the text AI Detector and AI Image Detector are different tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The text detector analyzes writing.&lt;/li&gt;
&lt;li&gt;The image detector analyzes images.&lt;/li&gt;
&lt;li&gt;Both provide probability-based judgments, not forensic proof or absolute conclusions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you need to check both an article and its images, use the corresponding tool for each input type.&lt;/p&gt;
&lt;h2 id=&#34;typical-use-cases&#34;&gt;Typical Use Cases
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker is commonly used in three scenarios.&lt;/p&gt;
&lt;p&gt;The first is student self-checking.&lt;/p&gt;
&lt;p&gt;Many schools use Turnitin or other academic integrity tools to check essays, reports, and assignments. Students may use an AI Detector before submission to understand whether their writing might be misread as AI-generated.&lt;/p&gt;
&lt;p&gt;This requires caution. An AI detector is not the final judge, and it cannot guarantee that a school system will produce the same result. A low AI score also does not automatically mean the work is safe. A better habit is to keep drafts, sources, revision history, and writing notes.&lt;/p&gt;
&lt;p&gt;The second scenario is teachers and educators reviewing assignments.&lt;/p&gt;
&lt;p&gt;Teachers can treat an AI Detector as a signal tool for spotting unusual text. But it is risky to judge misconduct based only on one score. A better process combines classroom performance, writing records, oral explanation, sources, and version history.&lt;/p&gt;
&lt;p&gt;The third scenario is content creators, editors, and site operators reviewing external submissions.&lt;/p&gt;
&lt;p&gt;If a site receives many guest posts, SEO articles, or outsourced drafts, an AI Detector can help screen low-quality, template-like, mass-generated content. This is especially useful for content sites and media editors who want to avoid publishing large volumes of AI-assembled material with no experience, no viewpoint, and no fact checking.&lt;/p&gt;
&lt;p&gt;Still, the detector is only an aid. What matters most is whether the content is original, accurate, useful, and trustworthy, not whether it achieves a specific score.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-paraphraser-and-ai-humanizer&#34;&gt;Relationship With Paraphraser and AI Humanizer
&lt;/h2&gt;&lt;p&gt;One of QuillBot&amp;rsquo;s best-known products is Paraphraser, its rewriting tool. It also offers AI Humanizer, which is designed to make AI-generated text read more like human writing.&lt;/p&gt;
&lt;p&gt;These tools are often used together:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A user drafts text with ChatGPT, Claude, or another model.&lt;/li&gt;
&lt;li&gt;They use QuillBot Paraphraser to rewrite sentences.&lt;/li&gt;
&lt;li&gt;Or they use AI Humanizer to adjust tone.&lt;/li&gt;
&lt;li&gt;Then they paste the result into AI Checker to see the detection score.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This workflow is common, but it can easily go in the wrong direction.&lt;/p&gt;
&lt;p&gt;If the only goal is to lower the AI probability, the result may become mechanical rewriting. The text can become more awkward, less natural, or even less accurate.&lt;/p&gt;
&lt;p&gt;A healthier approach is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Paraphraser to improve clarity.&lt;/li&gt;
&lt;li&gt;Use Humanizer to adjust tone and rhythm.&lt;/li&gt;
&lt;li&gt;Use AI Checker to find overly template-like passages.&lt;/li&gt;
&lt;li&gt;Let a human verify facts, logic, and writing intent at the end.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, AI Checker should not mainly serve &amp;ldquo;detection evasion&amp;rdquo;. It should serve content quality.&lt;/p&gt;
&lt;h2 id=&#34;false-positive-risks-in-ai-detectors&#34;&gt;False-Positive Risks in AI Detectors
&lt;/h2&gt;&lt;p&gt;All AI content detectors can produce false positives.&lt;/p&gt;
&lt;p&gt;The reason is simple: they are not reading the author&amp;rsquo;s identity. They are estimating text patterns. Human writing that is very regular, standardized, or template-like may be misclassified as AI. Conversely, AI-generated writing that has been carefully edited and enriched with specific details and personal judgment may look more human.&lt;/p&gt;
&lt;p&gt;Content that is easy to misclassify includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Academic abstracts.&lt;/li&gt;
&lt;li&gt;Official notices and formal documents.&lt;/li&gt;
&lt;li&gt;Product descriptions.&lt;/li&gt;
&lt;li&gt;Standardized reports.&lt;/li&gt;
&lt;li&gt;Polished English by non-native writers.&lt;/li&gt;
&lt;li&gt;Concise text that has been edited many times.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Students, teachers, and editors should not treat an AI detection score as the only evidence.&lt;/p&gt;
&lt;p&gt;A safer judgment looks at the evidence chain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Are there drafts and revision records?&lt;/li&gt;
&lt;li&gt;Can the author explain the writing process?&lt;/li&gt;
&lt;li&gt;Are real sources cited?&lt;/li&gt;
&lt;li&gt;Does the text include specific experience, observation, and judgment?&lt;/li&gt;
&lt;li&gt;Are there factual errors, fake citations, or obvious templates?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;usage-advice&#34;&gt;Usage Advice
&lt;/h2&gt;&lt;p&gt;If you only want to self-check an article, treat QuillBot AI Checker as an auxiliary reminder.&lt;/p&gt;
&lt;p&gt;When you see a high score, do not rush to &amp;ldquo;wash&amp;rdquo; the text. Look at the content itself first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Are the claims too empty?&lt;/li&gt;
&lt;li&gt;Are there too few examples?&lt;/li&gt;
&lt;li&gt;Are facts unsupported?&lt;/li&gt;
&lt;li&gt;Are paragraphs repetitive?&lt;/li&gt;
&lt;li&gt;Is the sentence rhythm too consistent?&lt;/li&gt;
&lt;li&gt;Is real context missing?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are a teacher or editor, do not make a conclusion from a screenshot of one score. AI detection results are better used as a starting point for further review, not as a final verdict.&lt;/p&gt;
&lt;p&gt;If you review website content, combine AI Detector with human editing, plagiarism checks, fact checking, and source review. It can help spot low-quality bulk content, but it cannot replace editorial judgment.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;QuillBot AI Checker is a convenient AI text detection tool for making an initial judgment about whether content looks AI-generated. It can provide an overall probability and help locate sentences or paragraphs that look more AI-like.&lt;/p&gt;
&lt;p&gt;But it is not an absolute judge.&lt;/p&gt;
&lt;p&gt;The value of an AI detector is not that it can tell you &amp;ldquo;this article was definitely written by AI&amp;rdquo;. Its value is that it can point out places that may be too template-like, too smooth, or lacking real detail.&lt;/p&gt;
&lt;p&gt;Reliable content review still depends on writing history, factual sources, human judgment, and contextual evidence. Used as an aid, QuillBot AI Checker can be useful. Used as a final conclusion, it can easily harm normal writers.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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&amp;rsquo;s AI Detector free or premium?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Midjourney May 2026 Update: Conversational Mode, AI-Assisted Development, and SREF Organization</title>
        <link>https://knightli.com/en/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/en/2026/05/17/midjourney-2026-05-office-hours-conversational-mode/</guid>
        <description>&lt;p&gt;The most important signal from Midjourney&amp;rsquo;s May 14, 2026 Office Hours is not a single model parameter. It is that the product is continuing to move from &amp;ldquo;type a prompt and generate an image&amp;rdquo; toward a more conversational, organized, and iterative creative system.&lt;/p&gt;
&lt;p&gt;The information comes from a Japanese summary of Midjourney&amp;rsquo;s recent Q&amp;amp;A, covering conversational mode, AI-assisted development, website redesign, SREF and tag organization, Omni-reference, multi-character consistency, and how the team itself uses Midjourney.&lt;/p&gt;
&lt;p&gt;In one sentence: Midjourney is making image generation feel more like a creative system that can be discussed with, organized, and iterated over.&lt;/p&gt;
&lt;h2 id=&#34;conversational-mode-is-becoming-more-important&#34;&gt;Conversational mode is becoming more important
&lt;/h2&gt;&lt;p&gt;The most direct change is Conversational Mode.&lt;/p&gt;
&lt;p&gt;In the past, using Midjourney still depended heavily on parameters and fixed syntax. You had to remember rules for aspect ratio, image references, style references, model parameters, and then write them into prompts or adjust them in the interface.&lt;/p&gt;
&lt;p&gt;The direction of the new conversational mode is to let users describe these settings in more natural language.&lt;/p&gt;
&lt;p&gt;For example, users can specify by voice or text:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Default parameters.&lt;/li&gt;
&lt;li&gt;Aspect ratio, such as &lt;code&gt;16:9&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Image references.&lt;/li&gt;
&lt;li&gt;Style references, or &lt;code&gt;--sref&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Omni-reference in V7.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This shows Midjourney is not only improving generation quality. It is also reducing the operational cost of parameters.&lt;/p&gt;
&lt;p&gt;For ordinary users, the biggest change is that they do not have to memorize commands all the time. For heavy users, if conversational mode becomes stable enough, it may become the main entry point for adjusting generation settings with natural language.&lt;/p&gt;
&lt;h2 id=&#34;ai-assisted-development-is-changing-midjourneys-iteration-speed&#34;&gt;AI-assisted development is changing Midjourney&amp;rsquo;s iteration speed
&lt;/h2&gt;&lt;p&gt;Another interesting point is that the Midjourney team is using AI-assisted development at large scale internally.&lt;/p&gt;
&lt;p&gt;The source notes that the team can now fix small bugs, interface friction, and workflow issues much faster. There was even an example where a product bug was identified during a user call, fixed in real time with AI assistance, reviewed, and deployed quickly.&lt;/p&gt;
&lt;p&gt;This is more interesting than simply saying &amp;ldquo;AI helps engineers write code.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It shows that AI development tools are starting to influence how AI products themselves iterate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User feedback can enter the fix pipeline faster.&lt;/li&gt;
&lt;li&gt;Small experience issues are easier to address.&lt;/li&gt;
&lt;li&gt;Engineers can spend more energy on architecture, review, design decisions, and testing.&lt;/li&gt;
&lt;li&gt;Product teams can clean up edge cases more frequently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Midjourney has many creative paths, parameter combinations, mobile experiences, search features, and organization workflows. Many issues are not about the core model failing to generate images, but about an entry point being awkward, an operation taking one extra step, or an edge state being unpleasant.&lt;/p&gt;
&lt;p&gt;AI-assisted development is especially good at accelerating these many small improvements.&lt;/p&gt;
&lt;h2 id=&#34;the-website-redesign-is-about-workflow-not-removing-features&#34;&gt;The website redesign is about workflow, not removing features
&lt;/h2&gt;&lt;p&gt;The Office Hours also mentioned a large website redesign.&lt;/p&gt;
&lt;p&gt;The goal is not to remove complex features, but to make the creative flow more intuitive, make onboarding easier, and organize tools and features more clearly.&lt;/p&gt;
&lt;p&gt;That matters.&lt;/p&gt;
&lt;p&gt;Midjourney&amp;rsquo;s problem is not a lack of features. As features grow, entry points, collections, organization, references, exploration, and reuse become more complex. For light users, the hard question is &amp;ldquo;where do I start?&amp;rdquo; For heavy users, the hard question is &amp;ldquo;how do I manage many styles, references, and experiment results?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Possible rollout strategies include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Offering old and new interfaces in parallel.&lt;/li&gt;
&lt;li&gt;Starting with an alpha test.&lt;/li&gt;
&lt;li&gt;Moving gradually to avoid disrupting heavy users.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These strategies suggest the team understands that Midjourney is not just a casual image toy. Many users have already integrated it into real creative workflows, so interface changes cannot casually break existing habits.&lt;/p&gt;
&lt;h2 id=&#34;sref-styles-and-tags-remain-pain-points&#34;&gt;SREF, styles, and tags remain pain points
&lt;/h2&gt;&lt;p&gt;SREF and style organization were among the most interesting topics in the Q&amp;amp;A.&lt;/p&gt;
&lt;p&gt;Users want better organization systems, especially for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Random SREF.&lt;/li&gt;
&lt;li&gt;Style references.&lt;/li&gt;
&lt;li&gt;Saved aesthetics.&lt;/li&gt;
&lt;li&gt;Tags and colored tags.&lt;/li&gt;
&lt;li&gt;Stronger filtering, grouping, and reuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But the team also raised a question: if the current folder system already lets one image belong to multiple folders, supports unlimited folders, and offers filtering and sorting, what exactly do tags provide that folders cannot?&lt;/p&gt;
&lt;p&gt;That question is practical.&lt;/p&gt;
&lt;p&gt;Many products add tags because users say they want tags. But a poorly designed tag system becomes another messy classification layer. If folders, tags, favorites, search, filters, projects, and style libraries have unclear boundaries, the system becomes harder to manage.&lt;/p&gt;
&lt;p&gt;So the Midjourney team wants concrete workflow examples: in which scenario do users need tags? Why are folders not enough? Is it for combining styles quickly, reusing across projects, filtering by theme, color tone, photography style, or character relationship?&lt;/p&gt;
&lt;p&gt;For Midjourney, the organization system may become as important as the generation model. Once users create long-term projects, the hard part is not generating one image, but managing thousands of images, hundreds of style directions, and repeated experiments.&lt;/p&gt;
&lt;h2 id=&#34;omni-reference-points-toward-more-complex-character-control&#34;&gt;Omni-reference points toward more complex character control
&lt;/h2&gt;&lt;p&gt;The source also mentioned that future Omni-reference / subject reference systems may support multiple character references at once and better separation of different subjects.&lt;/p&gt;
&lt;p&gt;This maps directly to a long-running pain point in AI image generation: character consistency and multi-character relationships.&lt;/p&gt;
&lt;p&gt;Keeping one character consistent is already difficult. Multiple characters are harder. Common problems include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Character A&amp;rsquo;s traits leaking onto character B.&lt;/li&gt;
&lt;li&gt;Identity confusion between multiple people.&lt;/li&gt;
&lt;li&gt;Clothing, hair, and facial features changing across images.&lt;/li&gt;
&lt;li&gt;Reference images influencing the whole style too strongly instead of controlling only the subject.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If Omni-reference can handle subject separation better, Midjourney becomes more useful for comics, storyboards, advertising visuals, character design, game concept art, and continuous narratives.&lt;/p&gt;
&lt;p&gt;This is one of the areas worth watching after V7.&lt;/p&gt;
&lt;h2 id=&#34;midjourney-is-rethinking-prompts&#34;&gt;Midjourney is rethinking prompts
&lt;/h2&gt;&lt;p&gt;The summary includes a useful idea: language is an imperfect compression layer for imagination.&lt;/p&gt;
&lt;p&gt;That sentence explains Midjourney&amp;rsquo;s product direction well.&lt;/p&gt;
&lt;p&gt;Many users assume AI image generation is mainly about writing longer and more precise prompts. But in real creative work, image references, style references, moodboards, SREF, variations, regeneration, and post-processing are often more useful than a very long text prompt.&lt;/p&gt;
&lt;p&gt;Team member Duncan&amp;rsquo;s workflow reflects this. He reportedly treats Midjourney as a sketchbook, combining moodboards, SREF, short prompts, high &lt;code&gt;--r&lt;/code&gt; regeneration, strong and subtle variations, Photoshop retouching, and external upscaling workflows.&lt;/p&gt;
&lt;p&gt;This shows mature Midjourney users do not work only through &amp;ldquo;magic prompts.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;A more realistic process is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use a small amount of language to set direction.&lt;/li&gt;
&lt;li&gt;Use image references to provide visual context.&lt;/li&gt;
&lt;li&gt;Use SREF to narrow the style.&lt;/li&gt;
&lt;li&gt;Use many variations to explore the space.&lt;/li&gt;
&lt;li&gt;Use human taste to select results.&lt;/li&gt;
&lt;li&gt;Use external tools for post-processing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Prompts still matter, but they are not everything.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-users&#34;&gt;What this means for users
&lt;/h2&gt;&lt;p&gt;If you only generate images occasionally, the most direct impact is that conversational mode should become easier to use. In the future, you may be able to describe desired aspect ratio, references, style, and parameters more naturally instead of memorizing commands.&lt;/p&gt;
&lt;p&gt;If you are a heavy user, three areas deserve attention.&lt;/p&gt;
&lt;p&gt;First, organization.&lt;/p&gt;
&lt;p&gt;How SREF, styles, folders, favorites, and tags evolve will directly affect long-term creative efficiency.&lt;/p&gt;
&lt;p&gt;Second, the website redesign.&lt;/p&gt;
&lt;p&gt;If the new interface can connect exploration, organization, reuse, and export, Midjourney will feel more like a professional creative tool instead of a single generator.&lt;/p&gt;
&lt;p&gt;Third, character and subject reference.&lt;/p&gt;
&lt;p&gt;If Omni-reference can reliably handle multiple characters and subject separation, Midjourney becomes better suited for continuous projects rather than only single images.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The key point from Midjourney&amp;rsquo;s May 2026 Office Hours is not one flashy parameter. It is that the product is continuing to evolve toward a creative system.&lt;/p&gt;
&lt;p&gt;Conversational mode lowers the input barrier. AI-assisted development increases iteration speed. The website redesign aims to reorganize workflows. SREF and tag discussions point to long-term asset management. Omni-reference relates to character consistency and complex subject control.&lt;/p&gt;
&lt;p&gt;For AI image generation tools, model capability is obviously important. But once generation quality reaches a certain level, what determines whether users stay long term is often workflow, organization, controllability, and iteration speed.&lt;/p&gt;
&lt;p&gt;Midjourney is filling in those pieces.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>How OpenClaw Creator Peter Steinberger Sees AI Software Development: From OpenClaw to Closed-Loop Coding</title>
        <link>https://knightli.com/en/2026/05/17/peter-steinberger-ai-software-development/</link>
        <pubDate>Sun, 17 May 2026 20:02:26 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/peter-steinberger-ai-software-development/</guid>
        <description>&lt;p&gt;Peter Steinberger&amp;rsquo;s career is a useful lens for understanding what is changing in AI software development.&lt;/p&gt;
&lt;p&gt;He is not a newcomer who suddenly became visible because of AI. Before OpenClaw, he was already the founder of PSPDFKit, a company focused on PDF rendering, document processing, and developer tools. Products like that are hard to win with concept packaging alone. They have to deal with performance, compatibility, API design, enterprise customers, and long-term maintenance.&lt;/p&gt;
&lt;p&gt;So when Steinberger later built OpenClaw with AI tools and shared views around AI agents, personal automation, and AI coding, the point was not simply that &amp;ldquo;one person wrote a lot of code.&amp;rdquo; The more interesting part is how he combined years of software engineering experience with a new generation of AI coding agents and rethought the development process.&lt;/p&gt;
&lt;h2 id=&#34;ai-coding-is-not-a-magic-button&#34;&gt;AI coding is not a magic button
&lt;/h2&gt;&lt;p&gt;Discussions about AI coding often fall into two extremes.&lt;/p&gt;
&lt;p&gt;One side says AI can already write code, so programmers are almost obsolete.&lt;/p&gt;
&lt;p&gt;The other side says AI-generated code is unreliable, so real engineering still has to be hand-written by people.&lt;/p&gt;
&lt;p&gt;Steinberger&amp;rsquo;s experience points to a third view: AI changes the unit of operation in software development, but it does not remove engineering judgment.&lt;/p&gt;
&lt;p&gt;In the past, developers mainly worked around editing code. Requirements breakdown, architecture decisions, implementation, testing, and bug fixing all revolved around manual code changes.&lt;/p&gt;
&lt;p&gt;Once AI coding agents enter the workflow, developers increasingly manage an execution system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explain the goal.&lt;/li&gt;
&lt;li&gt;Provide context.&lt;/li&gt;
&lt;li&gt;Set boundaries.&lt;/li&gt;
&lt;li&gt;Let the agent modify code.&lt;/li&gt;
&lt;li&gt;Run tests and checks.&lt;/li&gt;
&lt;li&gt;Iterate based on results.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not simply handing the keyboard to a model. It is moving humans from &amp;ldquo;typing every line&amp;rdquo; toward &amp;ldquo;defining direction, designing feedback, and judging results.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;why-he-is-skeptical-of-calling-it-vibe-coding&#34;&gt;Why he is skeptical of calling it vibe coding
&lt;/h2&gt;&lt;p&gt;One phrase that often appears around Steinberger is &lt;code&gt;vibe coding&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The term originally described a new style of development: developers describe ideas in natural language, let AI generate large amounts of code, then keep adjusting based on runtime results and feedback.&lt;/p&gt;
&lt;p&gt;But Steinberger is not entirely sold on the phrase. Public coverage has noted that he sees &lt;code&gt;vibe coding&lt;/code&gt; as potentially dismissive, implying that AI-assisted development is just &amp;ldquo;generating by feel&amp;rdquo; while ignoring the skill, judgment, and experience behind it.&lt;/p&gt;
&lt;p&gt;That criticism makes sense.&lt;/p&gt;
&lt;p&gt;Effective AI coding is not about typing a casual sentence and trusting the model&amp;rsquo;s output. It requires:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Breaking vague requirements into executable tasks.&lt;/li&gt;
&lt;li&gt;Detecting when the model misunderstands the goal.&lt;/li&gt;
&lt;li&gt;Designing tests and acceptance criteria.&lt;/li&gt;
&lt;li&gt;Judging whether the code structure will remain maintainable.&lt;/li&gt;
&lt;li&gt;Knowing when to stop generating and switch to human review.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, AI reduces the friction of writing code, but it does not reduce the responsibility of understanding the system.&lt;/p&gt;
&lt;h2 id=&#34;the-loop-is-the-key&#34;&gt;The loop is the key
&lt;/h2&gt;&lt;p&gt;One idea often associated with Steinberger&amp;rsquo;s interviews and writing is the importance of the loop.&lt;/p&gt;
&lt;p&gt;Letting AI generate code is open-loop.&lt;/p&gt;
&lt;p&gt;Letting AI generate code, run it, read errors, fix problems, and run tests again is closer to closed-loop development.&lt;/p&gt;
&lt;p&gt;That difference matters.&lt;/p&gt;
&lt;p&gt;Open-loop generation easily creates software that looks usable on the surface. The page opens, features appear to exist, and there is plenty of code. But once it enters a real environment, problems with state management, permissions, exception handling, edge cases, and deployment quickly appear.&lt;/p&gt;
&lt;p&gt;Closed-loop development means output must be constrained by feedback. The simplest loop is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write down the goal clearly.&lt;/li&gt;
&lt;li&gt;Let AI modify the code.&lt;/li&gt;
&lt;li&gt;Automatically run tests, type checks, lint, or a build.&lt;/li&gt;
&lt;li&gt;Feed errors back to AI.&lt;/li&gt;
&lt;li&gt;Repeat until it passes.&lt;/li&gt;
&lt;li&gt;Let a human review the critical path.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is where AI software development can truly improve efficiency. Not because the model gets everything right the first time, but because it can participate quickly in a cycle of generation, validation, and repair.&lt;/p&gt;
&lt;h2 id=&#34;more-experience-makes-ai-more-useful&#34;&gt;More experience makes AI more useful
&lt;/h2&gt;&lt;p&gt;One of the easiest misconceptions about AI coding is that experience no longer matters.&lt;/p&gt;
&lt;p&gt;Steinberger&amp;rsquo;s case suggests the opposite: experience becomes more important, but its role changes.&lt;/p&gt;
&lt;p&gt;An experienced engineer is better at deciding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which tasks are suitable for an agent.&lt;/li&gt;
&lt;li&gt;Which modules need tests first.&lt;/li&gt;
&lt;li&gt;Which changes are too risky for broad AI refactoring.&lt;/li&gt;
&lt;li&gt;Which generated code merely looks plausible.&lt;/li&gt;
&lt;li&gt;Which problems should be solved through architecture rather than more patches.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI can generate many candidate solutions. The more candidates you have, the more judgment you need. An inexperienced person may be impressed by &amp;ldquo;it runs.&amp;rdquo; An experienced engineer asks: can it be maintained? Can it scale? Does it break a security boundary? Can we debug it when something goes wrong?&lt;/p&gt;
&lt;p&gt;That is why AI coding agents do not turn software engineering into pure chat. They outsource part of the execution work while amplifying planning, review, validation, and trade-off decisions.&lt;/p&gt;
&lt;h2 id=&#34;openclaw-matters-beyond-the-project-itself&#34;&gt;OpenClaw matters beyond the project itself
&lt;/h2&gt;&lt;p&gt;OpenClaw drew attention not only because it is an open-source AI agent, and not only because it grew quickly.&lt;/p&gt;
&lt;p&gt;It is also a signal: developers increasingly want AI to do more than answer questions. They want it to connect to real tools and perform real actions.&lt;/p&gt;
&lt;p&gt;Traditional chatbots stay inside the chat box. They can explain code, write drafts, and give advice, but people still need to copy, paste, open software, and run commands.&lt;/p&gt;
&lt;p&gt;The agent direction connects models to tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File systems.&lt;/li&gt;
&lt;li&gt;Browsers.&lt;/li&gt;
&lt;li&gt;Terminals.&lt;/li&gt;
&lt;li&gt;Email.&lt;/li&gt;
&lt;li&gt;Calendars.&lt;/li&gt;
&lt;li&gt;Third-party services.&lt;/li&gt;
&lt;li&gt;Project repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once models can use those tools, the boundaries of software development shift. AI is no longer just code completion. It can participate in project reading, task decomposition, file editing, test execution, PR preparation, and workflow automation.&lt;/p&gt;
&lt;p&gt;That is also why Steinberger&amp;rsquo;s move to OpenAI drew attention. He represents not just a single developer story, but a product direction: personal agents moving from demos into everyday work.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-ordinary-developers&#34;&gt;What this means for ordinary developers
&lt;/h2&gt;&lt;p&gt;For ordinary developers, Steinberger&amp;rsquo;s experience is not something everyone can copy directly.&lt;/p&gt;
&lt;p&gt;Not everyone can manage multiple agents at once. Not every project is suited to heavy AI generation. Not every team accepts a workflow of &amp;ldquo;generate first, iterate quickly.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;But several lessons are useful.&lt;/p&gt;
&lt;p&gt;First, write tasks clearly.&lt;/p&gt;
&lt;p&gt;AI is sensitive to vague goals. If you say &amp;ldquo;optimize this,&amp;rdquo; it may change style, structure, features, and logic. If you say &amp;ldquo;change the login failure message from English to Chinese without altering the authentication flow,&amp;rdquo; the result is usually more controllable.&lt;/p&gt;
&lt;p&gt;Second, standardize validation commands.&lt;/p&gt;
&lt;p&gt;If a project has no tests, no build command, and no lint, AI has trouble forming a loop. Even basic commands like &lt;code&gt;npm test&lt;/code&gt;, &lt;code&gt;go test ./...&lt;/code&gt;, &lt;code&gt;pytest&lt;/code&gt;, or &lt;code&gt;hugo&lt;/code&gt; are better than relying only on visual inspection.&lt;/p&gt;
&lt;p&gt;Third, control the scope of changes.&lt;/p&gt;
&lt;p&gt;Having AI handle one module, one bug, or one page at a time is usually more reliable than asking it to &amp;ldquo;refactor the whole project.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Fourth, keep human review.&lt;/p&gt;
&lt;p&gt;For authentication, payments, permissions, data deletion, deployment scripts, database migrations, and security configuration, do not lower the review bar just because the code was generated by AI.&lt;/p&gt;
&lt;p&gt;Fifth, review prompts and failure patterns.&lt;/p&gt;
&lt;p&gt;If AI often misunderstands a certain type of task, write those constraints into project rules, agent instructions, or skill files. AI coding capability comes not only from the model, but also from the work environment you build around it.&lt;/p&gt;
&lt;h2 id=&#34;where-ai-software-development-is-going&#34;&gt;Where AI software development is going
&lt;/h2&gt;&lt;p&gt;Steinberger&amp;rsquo;s story suggests that AI software development is moving from &amp;ldquo;helping write code&amp;rdquo; toward &amp;ldquo;organizing software production workflows.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Early AI coding tools were mainly useful for function completion, error explanation, and template generation. The shift now is that agents can work across files, call tools, run checks, and continue fixing based on feedback.&lt;/p&gt;
&lt;p&gt;This points to several trends.&lt;/p&gt;
&lt;p&gt;First, the productivity ceiling for individual developers will rise.&lt;/p&gt;
&lt;p&gt;One person can push more prototypes, scripts, internal tools, and small products. But higher output does not automatically mean higher quality. The faster code is generated, the more validation matters.&lt;/p&gt;
&lt;p&gt;Second, project structure becomes more important.&lt;/p&gt;
&lt;p&gt;The clearer the code, tests, and documentation, the easier it is for AI to make correct changes. Messy projects are hard for humans and hard for AI.&lt;/p&gt;
&lt;p&gt;Third, software engineers will look more like workflow designers.&lt;/p&gt;
&lt;p&gt;In the future, what matters will not only be whether someone knows a programming language, but whether they can organize requirements, context, tools, tests, deployment, and permissions into a controlled loop.&lt;/p&gt;
&lt;p&gt;Fourth, security boundaries become more sensitive.&lt;/p&gt;
&lt;p&gt;If an agent can do things, it can also do the wrong things. If it can read files, run commands, and access services, then permissions, audit, and rollback become infrastructure for AI development environments.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The most valuable part of Peter Steinberger&amp;rsquo;s view of AI software development is not how much code AI generated. It is the development posture he demonstrates.&lt;/p&gt;
&lt;p&gt;Humans are no longer only typing line by line inside an editor. They are designing goals, managing agents, building feedback loops, reviewing results, and adjusting the system. Code remains important, but it is no longer the only center of labor.&lt;/p&gt;
&lt;p&gt;If traditional software development emphasized &amp;ldquo;writing the code correctly,&amp;rdquo; AI software development increasingly emphasizes &amp;ldquo;making the system continuously produce verifiably correct results.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This is not just about lowering the engineering barrier. It changes the shape of engineering ability: from manual implementation toward task decomposition, context management, tool orchestration, automated validation, and final judgment.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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&amp;rsquo;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: a skill library that gives AI Agents scientific workflows</title>
        <link>https://knightli.com/en/2026/05/17/scientific-agent-skills/</link>
        <pubDate>Sun, 17 May 2026 17:52:04 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/scientific-agent-skills/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-Dense-AI/scientific-agent-skills&lt;/code&gt; is an Agent Skills collection for scientific and research work.&lt;/p&gt;
&lt;p&gt;Its goal is not to create yet another chatbot. Instead, it turns common research tasks such as reading documentation, querying databases, writing analysis scripts, processing files, creating charts, and preparing reports into skills that an AI Agent can discover and call.&lt;/p&gt;
&lt;p&gt;Project: &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;As of 2026-05-17, the GitHub API showed about 23.4k stars, 2.5k forks, an MIT license, and a latest push time of 2026-05-11. The README says the repository contains 135 ready-to-use scientific and research skills, while the &lt;code&gt;scientific-skills&lt;/code&gt; directory currently shows 137 entries through the GitHub API. The difference may come from counting rules, recent additions, or README lag.&lt;/p&gt;
&lt;h2 id=&#34;bottom-line&#34;&gt;Bottom line
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills is useful if you already use Codex, Claude Code, Cursor, Gemini CLI, or another tool that supports the Agent Skills standard.&lt;/p&gt;
&lt;p&gt;Its value is mainly in three areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It writes scientific toolchain usage into &lt;code&gt;SKILL.md&lt;/code&gt;, so the agent does not have to guess how a library works every time.&lt;/li&gt;
&lt;li&gt;It organizes common scientific databases, Python packages, document processing, scientific writing, and visualization workflows into one skill collection.&lt;/li&gt;
&lt;li&gt;It makes an AI Agent feel more like a workflow-capable research assistant, not just a concept-answering bot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But it is not a magic button that automatically does science after installation. Skills can help an agent choose the right tools and generate more reliable code and workflows, but data quality, experimental design, statistical assumptions, clinical decisions, and research conclusions still require human judgment.&lt;/p&gt;
&lt;h2 id=&#34;what-it-includes&#34;&gt;What it includes
&lt;/h2&gt;&lt;p&gt;The README describes the project as a skill collection for research, scientific computing, engineering, analysis, finance, and writing. Major areas include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bioinformatics and genomics.&lt;/li&gt;
&lt;li&gt;Cheminformatics and drug discovery.&lt;/li&gt;
&lt;li&gt;Proteomics and mass spectrometry.&lt;/li&gt;
&lt;li&gt;Clinical research and precision medicine.&lt;/li&gt;
&lt;li&gt;Healthcare AI and clinical machine learning.&lt;/li&gt;
&lt;li&gt;Medical imaging and digital pathology.&lt;/li&gt;
&lt;li&gt;Machine learning and AI.&lt;/li&gt;
&lt;li&gt;Materials science and chemistry.&lt;/li&gt;
&lt;li&gt;Physics and astronomy.&lt;/li&gt;
&lt;li&gt;Engineering simulation and optimization.&lt;/li&gt;
&lt;li&gt;Data analysis and visualization.&lt;/li&gt;
&lt;li&gt;Geospatial science and remote sensing.&lt;/li&gt;
&lt;li&gt;Laboratory automation.&lt;/li&gt;
&lt;li&gt;Scientific writing, literature review, peer review, and citation management.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point of these skills is not to limit an agent to specific libraries. The README also says the agent can still write Python and call any available API or package. The skills provide curated documentation, examples, best practices, and integration paths.&lt;/p&gt;
&lt;p&gt;In other words, it is closer to a collection of “scientific tool manuals + workflow templates + agent calling conventions.”&lt;/p&gt;
&lt;h2 id=&#34;database-and-python-package-coverage&#34;&gt;Database and Python package coverage
&lt;/h2&gt;&lt;p&gt;The most attractive part for researchers is the coverage of scientific databases and the Python ecosystem.&lt;/p&gt;
&lt;p&gt;The README mentions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unified access to 78 public databases through &lt;code&gt;database-lookup&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Coverage of PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED, USPTO, and more.&lt;/li&gt;
&lt;li&gt;Dedicated access skills for DepMap, Imaging Data Commons, PrimeKG, U.S. Treasury Fiscal Data, Hugging Science, and others.&lt;/li&gt;
&lt;li&gt;More than 70 optimized Python Package Skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The directory includes many familiar names:&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;For developers, these libraries are not surprising by themselves. What matters is that an agent can read library-specific constraints, examples, workflows, and caveats while doing a task. That is more stable than relying only on old model memory.&lt;/p&gt;
&lt;h2 id=&#34;typical-scenarios&#34;&gt;Typical scenarios
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills is better suited to multi-step research tasks than single-turn Q&amp;amp;A.&lt;/p&gt;
&lt;p&gt;For drug discovery, an agent might query ChEMBL for EGFR inhibitors, analyze structure-activity relationships with RDKit, run virtual screening with DiffDock, search the literature, and generate a report.&lt;/p&gt;
&lt;p&gt;For single-cell analysis, it might load 10X data into Scanpy, perform QC, integrate datasets, identify cell types, run differential expression, and do pathway enrichment.&lt;/p&gt;
&lt;p&gt;For multi-omics, it might connect RNA-seq, mass spectrometry, metabolites, protein interactions, clinical trials, and statistical modeling.&lt;/p&gt;
&lt;p&gt;Without skills, these tasks can easily become “the agent knows the general direction, but you have to remind it at every step.” The value of a skill library is to preserve these high-frequency paths so the agent takes fewer wrong turns.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The README recommends the standard Agent Skills tool:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you use GitHub CLI &lt;code&gt;v2.90.0+&lt;/code&gt;, you can also install with &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;Install a specific 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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Target a specific 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;For reproducibility, pin a release tag or 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;This matters in research. The worst situation is “it ran last week, the result changed this week, and nobody knows why.” If a skill participates in analysis, record the skill version, dependency versions, and data version together.&lt;/p&gt;
&lt;h2 id=&#34;runtime-requirements&#34;&gt;Runtime requirements
&lt;/h2&gt;&lt;p&gt;The README lists:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.11+, with 3.12+ recommended.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv&lt;/code&gt; for installing Python dependencies.&lt;/li&gt;
&lt;li&gt;A client that supports the Agent Skills standard.&lt;/li&gt;
&lt;li&gt;macOS, Linux, or Windows with WSL2.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows users should pay attention to the WSL2 detail. Many scientific computing libraries can run on native Windows, but dependency chains, compilers, binary wheels, and path behavior are more likely to cause trouble. The README’s “Windows with WSL2” wording suggests a Unix-like research computing environment is the better target.&lt;/p&gt;
&lt;h2 id=&#34;how-this-differs-from-a-prompt-collection&#34;&gt;How this differs from a prompt collection
&lt;/h2&gt;&lt;p&gt;A regular prompt collection usually tells the model how to answer. Scientific Agent Skills goes further: it describes tools, libraries, databases, and workflows as discoverable skills.&lt;/p&gt;
&lt;p&gt;The practical differences are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A skill can contain structured instructions and example code.&lt;/li&gt;
&lt;li&gt;A skill can be maintained around a specific library or database.&lt;/li&gt;
&lt;li&gt;An agent can choose relevant skills by task instead of stuffing every rule into the system prompt.&lt;/li&gt;
&lt;li&gt;A team can install only the skills it needs and reduce context noise.&lt;/li&gt;
&lt;li&gt;Skills can be versioned, reviewed, and updated with the repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For complex research work, this is easier to maintain than copying one giant universal prompt. Models change, databases change, and Python packages change. Capturing those changes in skills is more controllable than scattering them across personal prompt documents.&lt;/p&gt;
&lt;h2 id=&#34;security-and-trust-boundaries&#34;&gt;Security and trust boundaries
&lt;/h2&gt;&lt;p&gt;The README’s security warning is direct: Skills can execute code and affect coding-agent behavior.&lt;/p&gt;
&lt;p&gt;That matters. Research skills may:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install Python dependencies.&lt;/li&gt;
&lt;li&gt;Access network databases.&lt;/li&gt;
&lt;li&gt;Read and write local files.&lt;/li&gt;
&lt;li&gt;Run analysis scripts.&lt;/li&gt;
&lt;li&gt;Process sensitive experimental or clinical data.&lt;/li&gt;
&lt;li&gt;Generate reports that people may later cite.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So do not blindly install every skill. A safer approach is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install only the skills required for the current task.&lt;/li&gt;
&lt;li&gt;Read the relevant &lt;code&gt;SKILL.md&lt;/code&gt; before installation.&lt;/li&gt;
&lt;li&gt;Check which packages, APIs, files, and external services the skill may call.&lt;/li&gt;
&lt;li&gt;Be extra careful with community-contributed skills.&lt;/li&gt;
&lt;li&gt;Run data-processing and code-execution tasks in an isolated environment.&lt;/li&gt;
&lt;li&gt;Keep human review for research conclusions, clinical suggestions, and statistical results.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The README also mentions Cisco AI Defense Skill Scanner and suggests local scanning of third-party skills. Scanning does not replace human review, but it shows that the maintainers are aware of skill supply-chain risk.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who it is for
&lt;/h2&gt;&lt;p&gt;This project is most useful for people who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Already use AI coding agents daily.&lt;/li&gt;
&lt;li&gt;Often process scientific data, papers, charts, and reports.&lt;/li&gt;
&lt;li&gt;Need to move frequently across the Python scientific ecosystem.&lt;/li&gt;
&lt;li&gt;Want an agent to execute multi-step analysis instead of just explaining concepts.&lt;/li&gt;
&lt;li&gt;Want a team to turn research workflows into reusable skills.&lt;/li&gt;
&lt;li&gt;Want to study how the Agent Skills standard applies to professional domains.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You only want AI to explain a paper once in a while.&lt;/li&gt;
&lt;li&gt;You do not have a local Python environment or do not want to manage dependencies.&lt;/li&gt;
&lt;li&gt;You do not yet control data privacy, network access, and code-execution boundaries.&lt;/li&gt;
&lt;li&gt;You need a strictly compliant clinical or production decision system without human review and validation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For one-off analysis, asking the agent to write a script may be lighter. If you repeat similar research workflows often, the skill library becomes more valuable.&lt;/p&gt;
&lt;h2 id=&#34;usage-advice&#34;&gt;Usage advice
&lt;/h2&gt;&lt;p&gt;Do not start by installing the entire repository and handing every task to the agent.&lt;/p&gt;
&lt;p&gt;A more practical path is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose a low-risk task, such as literature organization, chart generation, or public-data exploration.&lt;/li&gt;
&lt;li&gt;Install only relevant skills, such as &lt;code&gt;literature-review&lt;/code&gt;, &lt;code&gt;scientific-writing&lt;/code&gt;, &lt;code&gt;scanpy&lt;/code&gt;, or &lt;code&gt;rdkit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ask the agent to explain the plan before running code.&lt;/li&gt;
&lt;li&gt;Preserve input data, scripts, environment, and skill versions.&lt;/li&gt;
&lt;li&gt;Review outputs manually.&lt;/li&gt;
&lt;li&gt;If the workflow stabilizes, write it into your team’s SOP or custom skill.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key to a research agent is not automating everything. It is handing repetitive, tedious, documentation-heavy work to tools while leaving judgment, assumptions, and conclusions to humans.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Scientific Agent Skills matters because it pushes Agent Skills from general programming into research.&lt;/p&gt;
&lt;p&gt;Scientific work is naturally multi-tool, multi-database, multi-file, and multi-step. Chat-style prompts alone rarely cover these details reliably. This project turns common scientific libraries, data sources, and research workflows into skills, making it easier for an AI Agent to enter real research workflows.&lt;/p&gt;
&lt;p&gt;But the stronger it is, the more it needs boundaries. Skills can affect agent behavior, run code, access the network, and process files. Read the skill before installing it, isolate execution, and never skip human validation of research conclusions.&lt;/p&gt;
&lt;p&gt;If you already use Codex, Claude Code, Cursor, or Gemini CLI for research and data analysis, Scientific Agent Skills is worth a careful look. Even if you do not install it wholesale, its way of splitting skills is a useful reference for building team research AI workflows.&lt;/p&gt;
&lt;p&gt;References:&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 standard&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: An Open-Source AI Monitoring System for Goofish Listings</title>
        <link>https://knightli.com/en/2026/05/17/ai-goofish-monitor/</link>
        <pubDate>Sun, 17 May 2026 17:24:03 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/ai-goofish-monitor/</guid>
        <description>&lt;p&gt;ai-goofish-monitor is an open-source Goofish product monitoring system from Usagi-org.&lt;/p&gt;
&lt;p&gt;Its goal is clear: automate Goofish search, filtering, product analysis, result logging, and notifications, so users can find matching second-hand listings faster. The project uses Playwright for browser automation and connects to image-capable AI models to judge product information more intelligently.&lt;/p&gt;
&lt;p&gt;Project link: &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;the-short-version&#34;&gt;The Short Version
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor is closer to a &amp;ldquo;Goofish purchasing intelligence dashboard&amp;rdquo; than a simple keyword alert script.&lt;/p&gt;
&lt;p&gt;It has several notable traits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A complete web admin UI for managing tasks, accounts, AI criteria, logs, and results.&lt;/li&gt;
&lt;li&gt;Concurrent multi-task monitoring, where each task can define keywords, price range, filters, and AI Prompt.&lt;/li&gt;
&lt;li&gt;Playwright-based page automation, useful for scenarios that require login state and page interaction.&lt;/li&gt;
&lt;li&gt;AI-based product judgment, not just keyword matching.&lt;/li&gt;
&lt;li&gt;Notifications through ntfy.sh, WeCom, Bark, Telegram, Webhook, and other channels.&lt;/li&gt;
&lt;li&gt;Cron scheduling, multi-account management, proxy rotation, retry handling, and Docker deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It fits users who often search Goofish for specific items, such as second-hand electronics, cameras, GPUs, hard drives, game consoles, musical instruments, appliances, and collectibles. But it is not an &amp;ldquo;automatic bargain hunter.&amp;rdquo; Goofish search results change, login states may expire, and platform risk controls can affect automation stability. Treat it as an assisted filtering tool, not a replacement for human judgment.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Finding second-hand products on Goofish often has several pain points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are too many listings to browse manually.&lt;/li&gt;
&lt;li&gt;Titles and descriptions are inconsistent, so keywords can miss or misclassify listings.&lt;/li&gt;
&lt;li&gt;Good prices appear briefly and may be gone by the time you see them.&lt;/li&gt;
&lt;li&gt;The same product may differ by region, price, condition, and seller.&lt;/li&gt;
&lt;li&gt;Low-priced listings can include accessories, damaged goods, refurbished items, or misleading titles.&lt;/li&gt;
&lt;li&gt;Watching multiple keywords continuously is hard to sustain manually.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basic keyword alerts solve only part of this. Searching for &amp;ldquo;ThinkPad X1&amp;rdquo; may mix in accessories, broken screens, empty boxes, or disassembled parts. Searching for &amp;ldquo;Sony A7C&amp;rdquo; may return lens bundles, rentals, clickbait titles, or abnormal prices.&lt;/p&gt;
&lt;p&gt;ai-goofish-monitor&amp;rsquo;s idea is to use automation to collect candidate listings, then let AI apply your criteria, and finally push the results worth attention.&lt;/p&gt;
&lt;h2 id=&#34;core-features&#34;&gt;Core Features
&lt;/h2&gt;&lt;p&gt;The project README lists a fairly complete feature set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual web management: task management, account management, AI criteria editing, run logs, and result browsing.&lt;/li&gt;
&lt;li&gt;AI-driven workflow: create tasks with natural language and analyze products with multimodal models.&lt;/li&gt;
&lt;li&gt;Concurrent tasks: each task can define keywords, prices, filters, and AI Prompt independently.&lt;/li&gt;
&lt;li&gt;Advanced filters: free shipping, newly listed time range, and province / city / district filtering.&lt;/li&gt;
&lt;li&gt;Instant notifications: ntfy.sh, WeCom, Bark, Telegram, Webhook, and more.&lt;/li&gt;
&lt;li&gt;Scheduled execution: Cron-based periodic tasks.&lt;/li&gt;
&lt;li&gt;Account and proxy rotation: multi-account management, task-account binding, proxy pool rotation, and retry handling.&lt;/li&gt;
&lt;li&gt;Docker deployment: containerized deployment support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, these cover the full chain from creating a monitoring task to receiving a matching alert.&lt;/p&gt;
&lt;h2 id=&#34;workflow&#34;&gt;Workflow
&lt;/h2&gt;&lt;p&gt;A typical workflow looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Deploy the service and open the Web UI.&lt;/li&gt;
&lt;li&gt;Import Goofish account login state.&lt;/li&gt;
&lt;li&gt;Create a monitoring task.&lt;/li&gt;
&lt;li&gt;Set keywords, price range, region, newly listed window, and other filters.&lt;/li&gt;
&lt;li&gt;Write criteria or let AI generate them.&lt;/li&gt;
&lt;li&gt;Run the task in real-time or on a schedule.&lt;/li&gt;
&lt;li&gt;Playwright opens pages and extracts product information.&lt;/li&gt;
&lt;li&gt;AI checks title, description, images, and Prompt against your needs.&lt;/li&gt;
&lt;li&gt;Matching results are written to SQLite.&lt;/li&gt;
&lt;li&gt;The system sends notifications through configured channels.&lt;/li&gt;
&lt;li&gt;You review results, logs, and price history in the Web UI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI matters most at step 8. It can understand natural language criteria like &amp;ldquo;good condition, reasonable price, no accessories, no repaired units, preferably local pickup,&amp;rdquo; which is more flexible than simple keyword rules.&lt;/p&gt;
&lt;h2 id=&#34;docker-deployment&#34;&gt;Docker Deployment
&lt;/h2&gt;&lt;p&gt;The project recommends Docker deployment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The default Web UI address is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The official image is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the image pulls slowly, the README also gives an accelerated mirror example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The Docker image includes Chromium, so the host does not need an extra browser. Default persistent directories include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data/&lt;/code&gt;: main SQLite storage for tasks, results, and price history.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state/&lt;/code&gt;: login-state cookie files.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompts/&lt;/code&gt;: task prompts.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs/&lt;/code&gt;: runtime logs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;images/&lt;/code&gt;: product images and temporary task image folders.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you change &lt;code&gt;SERVER_PORT&lt;/code&gt; in &lt;code&gt;.env&lt;/code&gt;, also update the port mapping in &lt;code&gt;docker-compose.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;minimum-configuration&#34;&gt;Minimum Configuration
&lt;/h2&gt;&lt;p&gt;The minimum configuration mainly covers the AI model and Web UI login:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The first three are required for AI model access:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;: model API key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_BASE_URL&lt;/code&gt;: OpenAI-compatible endpoint.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;OPENAI_MODEL_NAME&lt;/code&gt;: model name that supports image input.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;WEB_USERNAME&lt;/code&gt; and &lt;code&gt;WEB_PASSWORD&lt;/code&gt; are used for Web UI login. The README mentions the default credentials &lt;code&gt;admin/admin123&lt;/code&gt;; change them in production.&lt;/p&gt;
&lt;h2 id=&#34;first-use&#34;&gt;First Use
&lt;/h2&gt;&lt;p&gt;The first-use flow is roughly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Log in to the Web UI.&lt;/li&gt;
&lt;li&gt;Go to Goofish account management.&lt;/li&gt;
&lt;li&gt;Use the provided Chrome extension to export Goofish login-state JSON.&lt;/li&gt;
&lt;li&gt;Paste the login state into the system.&lt;/li&gt;
&lt;li&gt;The state file is saved to &lt;code&gt;state/&lt;/code&gt;, for example &lt;code&gt;state/acc_1.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Return to task management, create a task, and bind an account.&lt;/li&gt;
&lt;li&gt;Run the task and check results.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key part is login state. Goofish does not provide a standard open API for arbitrary third-party scraping, so the project uses browser login state to simulate normal page access. Expired login state, risk controls, captchas, and account anomalies can all affect task execution.&lt;/p&gt;
&lt;h2 id=&#34;ai-tasks-and-keyword-tasks&#34;&gt;AI Tasks and Keyword Tasks
&lt;/h2&gt;&lt;p&gt;The project supports two task creation modes.&lt;/p&gt;
&lt;p&gt;The first is &lt;code&gt;AI判断&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can enter detailed requirements, and the system asynchronously generates analysis criteria. This fits complex needs, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only the main unit, no accessories.&lt;/li&gt;
&lt;li&gt;Alert only when the price is clearly below market.&lt;/li&gt;
&lt;li&gt;Good condition, with no water damage, repair, or hidden defects in the description.&lt;/li&gt;
&lt;li&gt;Prefer local listings and face-to-face pickup.&lt;/li&gt;
&lt;li&gt;Images should show serial number, packaging, or key accessories.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The second is &lt;code&gt;关键词判断&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is closer to traditional rule-based monitoring: create tasks directly from keywords, prices, regions, and other conditions without AI generation. It fits simple rules where some false positives are acceptable.&lt;/p&gt;
&lt;p&gt;In practice, you can mix both: keywords handle initial filtering, AI reduces false positives.&lt;/p&gt;
&lt;h2 id=&#34;what-the-web-ui-does&#34;&gt;What the Web UI Does
&lt;/h2&gt;&lt;p&gt;The Web UI is a major difference between this project and ordinary scripts.&lt;/p&gt;
&lt;p&gt;The task management page can configure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI-created tasks.&lt;/li&gt;
&lt;li&gt;Keyword rules.&lt;/li&gt;
&lt;li&gt;Price ranges.&lt;/li&gt;
&lt;li&gt;Newly listed windows.&lt;/li&gt;
&lt;li&gt;Region filters.&lt;/li&gt;
&lt;li&gt;Account binding.&lt;/li&gt;
&lt;li&gt;Scheduling rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The account management page can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Import Goofish account login state.&lt;/li&gt;
&lt;li&gt;Update login state.&lt;/li&gt;
&lt;li&gt;Delete accounts.&lt;/li&gt;
&lt;li&gt;Assign accounts to tasks.&lt;/li&gt;
&lt;li&gt;Let the system choose accounts automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Results and logs pages can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View matching products.&lt;/li&gt;
&lt;li&gt;Export results.&lt;/li&gt;
&lt;li&gt;Search history.&lt;/li&gt;
&lt;li&gt;Inspect task execution.&lt;/li&gt;
&lt;li&gt;Troubleshoot login expiration, risk controls, and AI call issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The system settings page can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View system status.&lt;/li&gt;
&lt;li&gt;Edit Prompt.&lt;/li&gt;
&lt;li&gt;Adjust proxy and rotation configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For long-term monitoring, the Web UI is important. Without it, many tasks quickly make configuration, logs, results, and notifications hard to maintain.&lt;/p&gt;
&lt;h2 id=&#34;data-storage&#34;&gt;Data Storage
&lt;/h2&gt;&lt;p&gt;The current online primary storage is SQLite, with the default path:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 mounts the SQLite main database by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;On startup, the app creates tables automatically and tries to import historical data once from old &lt;code&gt;config.json&lt;/code&gt;, &lt;code&gt;jsonl/&lt;/code&gt;, and &lt;code&gt;price_history/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;state/&lt;/code&gt;, &lt;code&gt;prompts/&lt;/code&gt;, &lt;code&gt;logs/&lt;/code&gt;, and &lt;code&gt;images/&lt;/code&gt; remain filesystem directories and are not stored in SQLite. Product images are temporarily saved to directories like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;They are cleaned up by default after the task ends.&lt;/p&gt;
&lt;p&gt;This structure fits personal or small-team deployments: SQLite is lightweight and easy to migrate, while files keep login state, images, and logs easy to inspect.&lt;/p&gt;
&lt;h2 id=&#34;notification-channels&#34;&gt;Notification Channels
&lt;/h2&gt;&lt;p&gt;The project supports multiple notification channels. Common configuration items include:&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;Notifications are central to the experience. If a monitor only writes results to a backend, users still need to keep checking the page. With push notifications, matching listings reach the user immediately.&lt;/p&gt;
&lt;p&gt;A practical setup is to tier notifications by item value:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Normal keyword hits are written only to the backend.&lt;/li&gt;
&lt;li&gt;High-confidence AI results are pushed to the phone.&lt;/li&gt;
&lt;li&gt;High-value items are pushed to WeCom or Telegram.&lt;/li&gt;
&lt;li&gt;Enable more logs during debugging, then reduce noise after stabilization.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;developer-run&#34;&gt;Developer Run
&lt;/h2&gt;&lt;p&gt;Without Docker, local development requires:&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 or Chrome / Edge browser&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basic commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;One-command startup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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; checks Playwright CLI and browser conditions, installs dependencies, builds the frontend, copies build artifacts, and starts the backend.&lt;/p&gt;
&lt;p&gt;Start the backend manually:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Frontend development:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Testing and build:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;who-it-fits&#34;&gt;Who It Fits
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor fits users who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frequently watch Goofish for specific models.&lt;/li&gt;
&lt;li&gt;Want to monitor second-hand electronics, cameras, game devices, hardware parts, and similar goods.&lt;/li&gt;
&lt;li&gt;Want to automate &amp;ldquo;keyword search + manual screening.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Have an OpenAI-compatible model API and accept AI judgment costs.&lt;/li&gt;
&lt;li&gt;Are comfortable with Docker or basic command-line deployment.&lt;/li&gt;
&lt;li&gt;Need matching results pushed to phone, WeCom, or Telegram.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable if you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Know nothing about deployment and only want a ready-to-use app.&lt;/li&gt;
&lt;li&gt;Do not want to handle login state, captchas, or account risk controls.&lt;/li&gt;
&lt;li&gt;Need official authorization and strongly compliant data APIs.&lt;/li&gt;
&lt;li&gt;Want large-scale high-frequency platform scraping.&lt;/li&gt;
&lt;li&gt;Expect AI to automatically judge trading risk and place orders for you.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;risks-and-boundaries&#34;&gt;Risks and Boundaries
&lt;/h2&gt;&lt;p&gt;Tools like this need clear boundaries.&lt;/p&gt;
&lt;p&gt;First, follow platform rules.&lt;/p&gt;
&lt;p&gt;Goofish has its own terms, risk controls, and account security mechanisms. Automation may trigger restrictions. Do not scrape at high frequency, bypass risk controls, harass sellers, bulk-collect private information, or disrupt platform order.&lt;/p&gt;
&lt;p&gt;Second, protect account login state.&lt;/p&gt;
&lt;p&gt;Files in &lt;code&gt;state/&lt;/code&gt; are login-state cookie files. They are effectively account access credentials. Do not commit them to Git, and do not put them on untrusted servers. If the server is exposed to the public internet, change the default Web UI password and place it behind a VPN, reverse-proxy authentication, or an internal network.&lt;/p&gt;
&lt;p&gt;Third, AI judgment is not a factual guarantee.&lt;/p&gt;
&lt;p&gt;AI can reduce false positives, but it cannot guarantee product authenticity, seller trustworthiness, reasonable pricing, or transaction safety. You still need to review product details, seller reputation, chat history, shipping method, and payment process.&lt;/p&gt;
&lt;p&gt;Fourth, watch cost.&lt;/p&gt;
&lt;p&gt;If every candidate listing is analyzed by a multimodal model, costs can rise quickly. Use keyword, price, and region filters first, then send a smaller candidate set to AI.&lt;/p&gt;
&lt;p&gt;Fifth, protect privacy.&lt;/p&gt;
&lt;p&gt;Product screenshots, chat-related content, account state, and notification content may all contain sensitive information. Protect notification Webhooks, log directories, and databases carefully.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-ordinary-scripts&#34;&gt;Difference from Ordinary Scripts
&lt;/h2&gt;&lt;p&gt;Ordinary Goofish monitoring scripts usually do three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search keywords.&lt;/li&gt;
&lt;li&gt;Check prices.&lt;/li&gt;
&lt;li&gt;Send notifications.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ai-goofish-monitor goes further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Manage tasks and accounts through Web UI.&lt;/li&gt;
&lt;li&gt;Express complex buying criteria with AI Prompt.&lt;/li&gt;
&lt;li&gt;Use multimodal models to inspect product images and descriptions.&lt;/li&gt;
&lt;li&gt;Store results and price history in SQLite.&lt;/li&gt;
&lt;li&gt;Use log pages to diagnose task failures.&lt;/li&gt;
&lt;li&gt;Improve stability through proxy rotation and multi-account mechanisms.&lt;/li&gt;
&lt;li&gt;Support long-running schedules with Cron.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because it does more, it also costs more to deploy and maintain. For normal users, Docker is the easiest path. For developers, the Web UI, FastAPI, Playwright, and SQLite structure is also friendly for secondary development.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-it&#34;&gt;How to Use It
&lt;/h2&gt;&lt;p&gt;A practical approach is to start with small tasks.&lt;/p&gt;
&lt;p&gt;For example, if you want a second-hand camera, create a task like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keywords: &lt;code&gt;A7C&lt;/code&gt;, &lt;code&gt;索尼 A7C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Price range: set an upper limit based on market price&lt;/li&gt;
&lt;li&gt;Region: prefer same province or local city&lt;/li&gt;
&lt;li&gt;Newly listed window: last day or last few hours&lt;/li&gt;
&lt;li&gt;AI criteria: exclude lens-only listings, repaired units, obvious accessories; pay attention to shutter count and condition&lt;/li&gt;
&lt;li&gt;Notification: push only results that pass AI judgment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After it runs stably, gradually add more tasks. Do not start with dozens of keywords, multiple accounts, and high-frequency Cron. First check login stability, false-positive rate, AI cost, and notification noise, then tune parameters.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;ai-goofish-monitor moves Goofish monitoring from a &amp;ldquo;keyword script&amp;rdquo; to a manageable AI monitoring system. It uses Playwright for page automation, AI for complex judgment, Web UI for tasks and results, SQLite for storage, and multiple notification channels for delivery.&lt;/p&gt;
&lt;p&gt;It is best for individuals or small teams monitoring specific products, especially second-hand electronics, hardware, and cameras where prices fluctuate, timing matters, and descriptions are noisy.&lt;/p&gt;
&lt;p&gt;But it must be used carefully: protect login state, change default passwords, keep scraping frequency restrained, review AI results manually, and respect platform rules and privacy boundaries. As an assisted filtering tool, it can be valuable. As a fully automated trading system, it is easy to overestimate.&lt;/p&gt;
&lt;p&gt;References:&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;Project English 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;Project disclaimer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenKB: Compiling Documents into a Continuously Updated LLM Knowledge Base</title>
        <link>https://knightli.com/en/2026/05/17/openkb-llm-knowledge-base/</link>
        <pubDate>Sun, 17 May 2026 17:15:08 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/openkb-llm-knowledge-base/</guid>
        <description>&lt;p&gt;OpenKB is an open-source LLM knowledge base tool from VectifyAI.&lt;/p&gt;
&lt;p&gt;It is not a traditional RAG system that chunks documents, vectorizes them, and then stitches context back together at query time. Instead, it first compiles raw documents into a structured wiki: document summaries, concept pages, cross-references, follow-up queries, and lint checks. In other words, it feels more like a knowledge-base CLI that keeps organizing your material over time.&lt;/p&gt;
&lt;p&gt;Project link: &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;the-short-version&#34;&gt;The Short Version
&lt;/h2&gt;&lt;p&gt;OpenKB is worth watching for three reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It outputs the knowledge base as ordinary Markdown files instead of locking it inside a dedicated database.&lt;/li&gt;
&lt;li&gt;It uses PageIndex for long PDFs, focusing on vector-database-free retrieval for long documents.&lt;/li&gt;
&lt;li&gt;It emphasizes &amp;ldquo;knowledge compilation&amp;rdquo;: the LLM generates summaries, concept pages, and cross-links instead of retrieving from scratch on every question.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That makes OpenKB better suited to long-term knowledge accumulation: paper reading, project documentation, internal company materials, technical standards, product research, and personal knowledge bases.&lt;/p&gt;
&lt;p&gt;It is not a universal replacement. If you need high-concurrency online Q&amp;amp;A, complex permissions, a web admin console, enterprise audit trails, or large-scale multi-tenancy, OpenKB currently looks more like a developer tool and knowledge-base prototype than a complete enterprise knowledge platform.&lt;/p&gt;
&lt;h2 id=&#34;what-openkb-is&#34;&gt;What OpenKB Is
&lt;/h2&gt;&lt;p&gt;OpenKB stands for Open Knowledge Base.&lt;/p&gt;
&lt;p&gt;It works as a CLI: it converts, organizes, summarizes, and writes documents into a set of wiki files. The official README describes it directly: OpenKB uses LLMs to compile raw documents into a structured, interlinked wiki-style knowledge base, with PageIndex providing vectorless long-document retrieval.&lt;/p&gt;
&lt;p&gt;Supported input formats include:&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;Plain text&lt;/li&gt;
&lt;li&gt;Other formats that markitdown can convert&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The generated knowledge base lives under &lt;code&gt;wiki/&lt;/code&gt; and mainly includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;index.md&lt;/code&gt;: knowledge base overview&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log.md&lt;/code&gt;: operation timeline&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;: knowledge base structure and maintenance instructions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/&lt;/code&gt;: converted source text&lt;/li&gt;
&lt;li&gt;&lt;code&gt;summaries/&lt;/code&gt;: summaries for each document&lt;/li&gt;
&lt;li&gt;&lt;code&gt;concepts/&lt;/code&gt;: cross-document concept pages&lt;/li&gt;
&lt;li&gt;&lt;code&gt;explorations/&lt;/code&gt;: saved query results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reports/&lt;/code&gt;: lint reports&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The biggest benefit of this design is transparency. You can open the Markdown files directly instead of only receiving answers through a black-box retrieval interface.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-traditional-rag&#34;&gt;How It Differs from Traditional RAG
&lt;/h2&gt;&lt;p&gt;A typical traditional RAG pipeline looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Chunk the documents.&lt;/li&gt;
&lt;li&gt;Generate embeddings.&lt;/li&gt;
&lt;li&gt;Store them in a vector database.&lt;/li&gt;
&lt;li&gt;Retrieve relevant chunks at query time.&lt;/li&gt;
&lt;li&gt;Feed those chunks to the LLM to generate an answer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That workflow is mature and works well for Q&amp;amp;A systems. But it has one problem: the knowledge itself does not really accumulate. Every question repeats the work of finding chunks, assembling context, and generating an answer.&lt;/p&gt;
&lt;p&gt;OpenKB is closer to &amp;ldquo;organize first, ask later&amp;rdquo;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Documents enter &lt;code&gt;raw/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Short documents are converted to Markdown with markitdown.&lt;/li&gt;
&lt;li&gt;Long PDFs go through PageIndex to produce tree indexes and summaries.&lt;/li&gt;
&lt;li&gt;The LLM generates document summaries.&lt;/li&gt;
&lt;li&gt;The LLM reads existing concept pages and creates or updates cross-document concepts.&lt;/li&gt;
&lt;li&gt;The knowledge base index, log, and cross-links are updated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a result, adding one document does more than create another searchable file. It may update a dozen wiki pages. Knowledge is written into concept pages and connected to existing material.&lt;/p&gt;
&lt;p&gt;This is closer to how humans maintain knowledge bases: when new material arrives, you do not just archive it; you update topic pages, summarize differences, and add references.&lt;/p&gt;
&lt;h2 id=&#34;what-pageindex-solves&#34;&gt;What PageIndex Solves
&lt;/h2&gt;&lt;p&gt;Long documents have always been difficult for RAG and LLM knowledge bases.&lt;/p&gt;
&lt;p&gt;If you simply split a long PDF into many chunks, several problems appear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chapter relationships are lost.&lt;/li&gt;
&lt;li&gt;Tables, images, and footnotes are hard to handle.&lt;/li&gt;
&lt;li&gt;Retrieved snippets are too fragmented, so answers lack global structure.&lt;/li&gt;
&lt;li&gt;Even a large context window is not ideal for stuffing an entire document into the prompt.&lt;/li&gt;
&lt;li&gt;Long summary chains can compress away important details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenKB uses PageIndex for long PDFs. According to the project description, PageIndex builds tree indexes and summaries for long documents, letting the LLM reason over the document tree instead of reading the whole document directly.&lt;/p&gt;
&lt;p&gt;The focus is not &amp;ldquo;the few text snippets with the highest vector similarity.&amp;rdquo; It is about helping the model use document hierarchy to find relevant content. For research reports, papers, manuals, prospectuses, and compliance documents, this direction makes a lot of sense.&lt;/p&gt;
&lt;p&gt;OpenKB can use the open-source PageIndex locally by default. If you need OCR, complex PDF handling, or faster structure generation, you can configure &lt;code&gt;PAGEINDEX_API_KEY&lt;/code&gt; to use PageIndex Cloud.&lt;/p&gt;
&lt;h2 id=&#34;install-and-quick-start&#34;&gt;Install and Quick Start
&lt;/h2&gt;&lt;p&gt;Install OpenKB with 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;Or install the latest GitHub version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For editable source installation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Create a knowledge base directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Add documents:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Ask a question:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Start an interactive chat:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want OpenKB to process new files automatically, use watch mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After that, drop files into &lt;code&gt;raw/&lt;/code&gt;, and OpenKB will update the wiki automatically.&lt;/p&gt;
&lt;h2 id=&#34;llm-configuration&#34;&gt;LLM Configuration
&lt;/h2&gt;&lt;p&gt;OpenKB uses LiteLLM to support multiple model providers, including OpenAI, Claude, and Gemini.&lt;/p&gt;
&lt;p&gt;You can set the model during initialization, or configure it in &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;Model names follow LiteLLM&amp;rsquo;s &lt;code&gt;provider/model&lt;/code&gt; format. OpenAI models can omit the provider prefix:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Models such as Anthropic and Gemini are usually written like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Put the API key in &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;If you enable PageIndex Cloud, add:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;common-commands&#34;&gt;Common Commands
&lt;/h2&gt;&lt;p&gt;OpenKB&amp;rsquo;s commands are developer-friendly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;openkb init&lt;/code&gt;: initialize a knowledge base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb add &amp;lt;file_or_dir&amp;gt;&lt;/code&gt;: add a file or directory.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb remove &amp;lt;doc&amp;gt;&lt;/code&gt;: remove a document and clean up related wiki pages, images, registry entries, and PageIndex state.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb query &amp;quot;question&amp;quot;&lt;/code&gt;: ask a one-off question against the knowledge base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb chat&lt;/code&gt;: enter a multi-turn conversation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb watch&lt;/code&gt;: monitor &lt;code&gt;raw/&lt;/code&gt; and update automatically.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb lint&lt;/code&gt;: check knowledge base structure and content health.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb list&lt;/code&gt;: list indexed documents and concepts.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openkb status&lt;/code&gt;: show knowledge base statistics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;openkb chat&lt;/code&gt; is better than &lt;code&gt;openkb query&lt;/code&gt; for continuous exploration. It supports session resume, session listing, deletion, and slash commands such as &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;, and &lt;code&gt;/lint&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;why-a-markdown-wiki-matters&#34;&gt;Why a Markdown Wiki Matters
&lt;/h2&gt;&lt;p&gt;Many knowledge-base tools are painful because of migration cost.&lt;/p&gt;
&lt;p&gt;Once material enters a proprietary database, index, or format, it becomes hard to inspect, edit, back up, or migrate directly. OpenKB writes the result as ordinary Markdown, which makes it naturally compatible with existing tools.&lt;/p&gt;
&lt;p&gt;The most direct use is opening &lt;code&gt;wiki/&lt;/code&gt; in Obsidian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summary pages can be read directly.&lt;/li&gt;
&lt;li&gt;Concept pages can connect through &lt;code&gt;[[wikilinks]]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Graph view can show relationships between knowledge items.&lt;/li&gt;
&lt;li&gt;Query results can be saved to &lt;code&gt;explorations/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; can define how the knowledge base should be maintained.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes OpenKB more than a Q&amp;amp;A tool. It can become a knowledge-organizing pipeline for individuals or teams.&lt;/p&gt;
&lt;h2 id=&#34;best-fit-scenarios&#34;&gt;Best-Fit Scenarios
&lt;/h2&gt;&lt;p&gt;OpenKB is especially useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading papers and technical reports.&lt;/li&gt;
&lt;li&gt;Organizing project documentation.&lt;/li&gt;
&lt;li&gt;Building product research archives.&lt;/li&gt;
&lt;li&gt;Creating documentation knowledge bases around open-source projects.&lt;/li&gt;
&lt;li&gt;Organizing internal policies, meeting notes, and explanatory documents.&lt;/li&gt;
&lt;li&gt;Maintaining a personal Obsidian knowledge base automatically.&lt;/li&gt;
&lt;li&gt;Structuring long PDFs, PPTs, Word files, and web materials.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you often face piles of documents and want more than &amp;ldquo;ask one question, get one answer,&amp;rdquo; OpenKB&amp;rsquo;s direction is a good fit: it gradually turns material into a browsable, reusable, and traceable knowledge base.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What to Watch Out For
&lt;/h2&gt;&lt;p&gt;First, OpenKB depends on LLM quality.&lt;/p&gt;
&lt;p&gt;Summaries, concept pages, and cross-links are generated by models. Stronger models usually produce more stable knowledge compilation; weaker models may struggle with concept extraction, contradiction detection, and cross-document synthesis.&lt;/p&gt;
&lt;p&gt;Second, estimate cost early.&lt;/p&gt;
&lt;p&gt;If you import many long documents at once, LLM calls may become expensive. Start with a small dataset, check the output structure and quality, and then expand.&lt;/p&gt;
&lt;p&gt;Third, the generated wiki still needs human review.&lt;/p&gt;
&lt;p&gt;OpenKB can organize material, but it does not automatically guarantee factual correctness. Important knowledge bases still need humans to review summaries, concept pages, and references.&lt;/p&gt;
&lt;p&gt;Fourth, be careful with sensitive material.&lt;/p&gt;
&lt;p&gt;If you use cloud LLMs or PageIndex Cloud, pay attention to privacy, trade secrets, and compliance requirements. For internal materials, confirm the model provider, data retention policy, and access boundaries first.&lt;/p&gt;
&lt;p&gt;Fifth, it is currently more of a CLI tool.&lt;/p&gt;
&lt;p&gt;The roadmap mentions a future Web UI, database-backed storage, support for large collections, and hierarchical concept indexing. At this stage, if teammates are not comfortable with the command line, there is still some adoption friction.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-obsidian-notebooklm-and-enterprise-rag&#34;&gt;Relationship with Obsidian, NotebookLM, and Enterprise RAG
&lt;/h2&gt;&lt;p&gt;OpenKB and Obsidian are best understood as an &amp;ldquo;automatic organization layer&amp;rdquo; plus a &amp;ldquo;reading and editing layer.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Obsidian is good for humans to write, edit, browse, and link notes. OpenKB is good for turning raw documents into a wiki that can enter Obsidian.&lt;/p&gt;
&lt;p&gt;OpenKB and NotebookLM differ more around local control and open file formats.&lt;/p&gt;
&lt;p&gt;NotebookLM is more direct for quickly asking questions and generating summaries after dropping in materials. OpenKB is better for developers who want the organized result to remain in a local directory and continue evolving as Markdown.&lt;/p&gt;
&lt;p&gt;OpenKB does not replace enterprise RAG; it complements it.&lt;/p&gt;
&lt;p&gt;Enterprise RAG cares more about permissions, auditability, service deployment, access isolation, monitoring, and stable throughput. OpenKB is better for building a readable, editable, long-lived knowledge layer. If you later build online Q&amp;amp;A, the wiki generated by OpenKB can also become a higher-quality corpus.&lt;/p&gt;
&lt;h2 id=&#34;a-recommended-workflow&#34;&gt;A Recommended Workflow
&lt;/h2&gt;&lt;p&gt;If you want to try OpenKB, start like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a test knowledge base directory.&lt;/li&gt;
&lt;li&gt;Add 3 to 5 documents on the same topic.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;openkb add&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;wiki/&lt;/code&gt; and inspect the summaries and concept pages.&lt;/li&gt;
&lt;li&gt;Ask a few specific questions with &lt;code&gt;openkb query&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;openkb lint&lt;/code&gt; to check knowledge-base health.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;wiki/&lt;/code&gt; in Obsidian and see whether the link graph is meaningful.&lt;/li&gt;
&lt;li&gt;Once quality looks good, import a larger document collection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do not throw in hundreds of files at the beginning. First see whether it understands your material type well, especially tables, images, long PDFs, and multi-document concept merging.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;OpenKB&amp;rsquo;s value is that it moves an LLM knowledge base one step earlier than &amp;ldquo;assemble context at query time&amp;rdquo;: organize the material into a wiki first, then ask questions, chat, lint, and keep maintaining that wiki.&lt;/p&gt;
&lt;p&gt;This direction is not right for every Q&amp;amp;A system, but it is well suited to knowledge work that needs long-term accumulation. Markdown files, Obsidian compatibility, PageIndex long-document handling, multi-model support, and a CLI workflow combine into a useful tool for developers and research-oriented users.&lt;/p&gt;
&lt;p&gt;If you have many PDFs, reports, web pages, papers, and project documents, OpenKB is worth trying. It may not immediately replace a mature enterprise knowledge base, but it can become a practical entry point for organizing material: first turn documents into readable, linked, traceable knowledge, then let the LLM work on top of that knowledge.&lt;/p&gt;
&lt;p&gt;References:&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 project page&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 Leak: A 24/7 Gemini Agent May Be Coming</title>
        <link>https://knightli.com/en/2026/05/17/google-gemini-spark-ai-agent-leak/</link>
        <pubDate>Sun, 17 May 2026 11:58:08 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/google-gemini-spark-ai-agent-leak/</guid>
        <description>&lt;p&gt;Google has not officially released &lt;code&gt;Gemini Spark&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Current information about it mainly comes from internal Gemini Web test screens, community screenshots, TestingCatalog reporting, and 36Kr / Xinzhiyuan&amp;rsquo;s summary of related leaks. The consistent picture is that &lt;code&gt;Gemini Spark BETA&lt;/code&gt; may be an always-on AI Agent that Google is preparing. Its positioning is no longer just a chat assistant, but an &amp;ldquo;everyday AI agent&amp;rdquo; that can handle email, online tasks, and multi-step workflows in the background.&lt;/p&gt;
&lt;p&gt;So the boundary should be clear first: this is a leak analysis, not an official Google announcement. All features, naming, and launch timing still need to be confirmed by Google.&lt;/p&gt;
&lt;h2 id=&#34;bottom-line&#34;&gt;Bottom line
&lt;/h2&gt;&lt;p&gt;Based on currently exposed information, Gemini Spark has three key points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It may be a 24-hour online Agent inside the Gemini system, not a normal chat model.&lt;/li&gt;
&lt;li&gt;It may use broader personal context, including Google apps, chat history, tasks, logged-in websites, and location.&lt;/li&gt;
&lt;li&gt;Its risks are as large as its appeal, because it may involve information sharing, remote browser data, purchases, and third-party service calls.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If Google really launches Spark, Gemini&amp;rsquo;s role will change from &amp;ldquo;AI that answers questions&amp;rdquo; to &amp;ldquo;AI that continuously handles tasks for you.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-gemini-spark-is&#34;&gt;What Gemini Spark is
&lt;/h2&gt;&lt;p&gt;TestingCatalog reported on May 14, 2026 that Google is testing &lt;code&gt;Gemini Spark BETA&lt;/code&gt; inside Gemini Web. The exposed welcome text describes it as an everyday AI agent that can help users 24/7 with inbox, online tasks, and more multi-step work.&lt;/p&gt;
&lt;p&gt;The 36Kr / Xinzhiyuan article also says that after Spark was uncovered, the outside world saw a &amp;ldquo;full-time Agent&amp;rdquo; direction: it can stay on standby all day, process inboxes, execute online tasks, and may even involve purchases and information sharing.&lt;/p&gt;
&lt;p&gt;This means Spark is not simply a new model name. It looks more like a Gemini product-layer upgrade: bringing Gemini out of the conversation window and into users&amp;rsquo; email, web, calendar, tasks, and cross-app workflows.&lt;/p&gt;
&lt;h2 id=&#34;how-it-may-work&#34;&gt;How it may work
&lt;/h2&gt;&lt;p&gt;According to the hidden onboarding text disclosed by TestingCatalog, Gemini Spark may gather context from multiple sources, including:&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;Websites the user has logged into.&lt;/li&gt;
&lt;li&gt;Personal intelligence.&lt;/li&gt;
&lt;li&gt;location.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This information would help Spark understand what the user wants to complete and call the necessary context while executing tasks. The text also says that, to complete some actions, Gemini may share necessary information with third parties, such as names, contact details, files, preferences, and information the user may consider sensitive.&lt;/p&gt;
&lt;p&gt;If these descriptions prove accurate, Spark will work more like a context-aware agent system than a one-shot Q&amp;amp;A assistant. It will not only look at the current prompt, but may combine long-term preferences, connected apps, browser state, and task history.&lt;/p&gt;
&lt;h2 id=&#34;why-it-matters&#34;&gt;Why it matters
&lt;/h2&gt;&lt;p&gt;The key to Gemini Spark is not one more chat entry point. It is that Google has a natural ecosystem entry point.&lt;/p&gt;
&lt;p&gt;OpenAI and Anthropic can build powerful Agents, but they do not naturally own the full chain of Gmail, Calendar, Drive, Chrome, Android, and Workspace. If Google connects Spark into these products, users will not need to build many extra workflows before letting an Agent enter daily work.&lt;/p&gt;
&lt;p&gt;This may bring three changes.&lt;/p&gt;
&lt;p&gt;First, Gemini may move from passive Q&amp;amp;A to active execution. Users may no longer only ask &amp;ldquo;summarize this email&amp;rdquo;; they may ask it to continuously organize the inbox, track tasks, and take follow-up actions.&lt;/p&gt;
&lt;p&gt;Second, Agents will rely more on personal context. The more it understands your email, calendar, files, browser state, and preferences, the more useful the result may be.&lt;/p&gt;
&lt;p&gt;Third, permission boundaries will become more sensitive. Doing more also means users need to know more clearly when it can act, how far it can go, and whether confirmation is required.&lt;/p&gt;
&lt;h2 id=&#34;where-the-risks-are&#34;&gt;Where the risks are
&lt;/h2&gt;&lt;p&gt;Several details in the onboarding text disclosed by TestingCatalog are worth watching.&lt;/p&gt;
&lt;p&gt;First, Spark is experimental. Even if it launches, it should not be treated as a fully mature system that needs no supervision.&lt;/p&gt;
&lt;p&gt;Second, although the system is designed to ask for permission before sensitive operations, the text also warns that it may share information or complete purchases without asking.&lt;/p&gt;
&lt;p&gt;Third, to maintain session continuity, Gemini will save remote browser data, such as login details and remote code execution data. Users can clear these data in Settings and can also disable Connected Apps and Personal intelligence.&lt;/p&gt;
&lt;p&gt;Taken together, these points show that Spark&amp;rsquo;s product direction is aggressive: it wants to be an Agent that can truly execute tasks, not only generate suggestions. But the closer it gets to real execution, the more it needs strict permissioning, auditing, confirmation, and rollback mechanisms.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-remy-and-ai-ultra&#34;&gt;Relationship with Remy and AI Ultra
&lt;/h2&gt;&lt;p&gt;TestingCatalog says Spark may be a renamed version of the agentic Gemini upgrade previously codenamed &lt;code&gt;Remy&lt;/code&gt;, and may also relate to the Gemini Agent direction for Google AI Ultra subscribers.&lt;/p&gt;
&lt;p&gt;If this clue is correct, Spark may not be a brand-new project from nowhere. It may be Google repackaging previously higher-end or more closed Agent capabilities and preparing to bring them to a wider audience.&lt;/p&gt;
&lt;p&gt;36Kr / Xinzhiyuan also describes it as an upgrade from &amp;ldquo;Remy&amp;rdquo; to &amp;ldquo;Spark&amp;rdquo;: Gemini Agent is no longer just a feature, but is moving toward a 24/7 digital life manager.&lt;/p&gt;
&lt;p&gt;But this is still a judgment based on leaked information. Whether Google will use &lt;code&gt;Spark&lt;/code&gt; as the official name, whether it will be limited to AI Ultra, and whether a lighter subscription tier will appear all need official confirmation.&lt;/p&gt;
&lt;h2 id=&#34;mcp-skills-and-the-tool-ecosystem&#34;&gt;MCP, skills, and the tool ecosystem
&lt;/h2&gt;&lt;p&gt;The same batch of community screenshots also showed model selector entries such as &lt;code&gt;MCP Tool Testing&lt;/code&gt;. The 36Kr article suggests this may hint that the new Gemini will natively support MCP third-party tool integration, with Thinking mode also being rebuilt.&lt;/p&gt;
&lt;p&gt;This clue becomes more interesting when viewed together with Spark.&lt;/p&gt;
&lt;p&gt;If Spark were only a chat assistant, skills and MCP would matter less. But if Spark is a long-running Agent, it needs to reliably call tools, access web pages, execute tasks, read and write context, and deliver results to users.&lt;/p&gt;
&lt;p&gt;In other words, Spark may not be a single feature. It may be part of Google&amp;rsquo;s Agent tool ecosystem: the model handles understanding and planning, while skills / MCP / connected apps handle execution and expansion.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-ordinary-users&#34;&gt;What it means for ordinary users
&lt;/h2&gt;&lt;p&gt;If Gemini Spark really launches, ordinary users may see these direct changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email is not only summarized, but can be categorized, followed up, and turned into tasks.&lt;/li&gt;
&lt;li&gt;Web tasks are not only suggested, but may be continuously executed in a remote browser.&lt;/li&gt;
&lt;li&gt;Calendar, location, preferences, and previous chats become long-term Agent context.&lt;/li&gt;
&lt;li&gt;Purchases, bookings, form filling, and similar actions may enter the AI execution range.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This sounds convenient, but users will need new habits: not only checking what the AI says, but also what it is preparing to do, what it has already done, whether it can be undone, and whether there is a record.&lt;/p&gt;
&lt;p&gt;Future AI Agent experience may depend not only on model intelligence, but also on clear permission prompts, inspectable task logs, and recovery from mistakes.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-developers-and-teams&#34;&gt;What it means for developers and teams
&lt;/h2&gt;&lt;p&gt;For developers, Spark matters because Google may be moving Agents from &amp;ldquo;demo products&amp;rdquo; toward real workflow platforms.&lt;/p&gt;
&lt;p&gt;If Spark can reliably connect Google apps, third-party tools, and browser state, developers will care about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether APIs or extension mechanisms are open.&lt;/li&gt;
&lt;li&gt;Whether MCP or skills can be connected by third parties.&lt;/li&gt;
&lt;li&gt;Whether enterprise admins can control permissions, data retention, and audits.&lt;/li&gt;
&lt;li&gt;Whether Agent execution failures have traceable logs.&lt;/li&gt;
&lt;li&gt;Whether sandboxing, approval flows, and sensitive-operation confirmation are supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For teams, Spark may first enter high-frequency scenarios such as Gmail, Calendar, Docs, Drive, and Chrome. It may not be suitable for fully automated high-risk work at the beginning, but it is a strong fit for inbox triage, meeting follow-up, document organization, market research, and lightweight operations tasks.&lt;/p&gt;
&lt;h2 id=&#34;how-to-read-it-now&#34;&gt;How to read it now
&lt;/h2&gt;&lt;p&gt;This story is best understood as &amp;ldquo;high-confidence direction, low-certainty details.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The high-confidence direction is that Google is pushing Gemini Agents to be more proactive, longer-running, and more deeply integrated with its ecosystem. The Gemini Web test text reported by TestingCatalog, community screenshots, and 36Kr&amp;rsquo;s summary of multiple leaks all point in the same direction.&lt;/p&gt;
&lt;p&gt;The low-certainty details are the official name, launch timing, permission rules, subscription tiers, supported regions, API availability, and whether it will really be called Gemini Spark.&lt;/p&gt;
&lt;p&gt;The safest view for now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not treat Spark as an already released official product.&lt;/li&gt;
&lt;li&gt;Treat it as a strong signal for Google&amp;rsquo;s next AI Agent direction.&lt;/li&gt;
&lt;li&gt;Wait for official explanations around permissions, privacy, third-party data sharing, and remote browser data storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;If &lt;code&gt;Gemini Spark&lt;/code&gt; eventually launches, it may be a key step in Gemini&amp;rsquo;s move from chat assistant to always-on Agent. It is not just a model swap; it places Gemini into Google&amp;rsquo;s ecosystem of email, web, tasks, location, personal intelligence, and third-party services.&lt;/p&gt;
&lt;p&gt;Its potential is large: more proactive, closer to real workflows, and easier to distribute to many users through Google&amp;rsquo;s ecosystem. Its risks are just as large: once AI can share information, save browser state, make purchases, and call third-party services, permission boundaries must be extremely clear.&lt;/p&gt;
&lt;p&gt;So the most important question about Gemini Spark is not &amp;ldquo;how smart is it&amp;rdquo;, but how Google plans to make a 24-hour online AI Agent controllable, auditable, and trustworthy.&lt;/p&gt;
&lt;p&gt;References:&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 leaked, coding reportedly catches up with GPT-5.5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Gemini Intelligence on Android: Google Is Turning the Phone into a Proactive AI System</title>
        <link>https://knightli.com/en/2026/05/17/google-gemini-intelligence-android/</link>
        <pubDate>Sun, 17 May 2026 09:13:32 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/google-gemini-intelligence-android/</guid>
        <description>&lt;p&gt;On May 12, 2026, Google published “A smarter, more proactive Android with Gemini Intelligence,” introducing Gemini Intelligence on Android. This is not a standalone chat app. It brings Gemini capabilities into Android, Chrome, Gboard, Autofill, widgets, and multi-device experiences, moving the phone from “wait for the user to tap” toward “proactively help the user complete tasks.”&lt;/p&gt;
&lt;p&gt;In short, Google wants Android to move from an operating system toward an intelligence system. The phone no longer just opens apps, shows notifications, and runs settings. It can understand the screen, apps, voice, and personal context, then complete more complex actions with user confirmation.&lt;/p&gt;
&lt;h2 id=&#34;short-version&#34;&gt;Short Version
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android focuses on five areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-step automation: Gemini can complete flows across apps, such as rides, shopping, and research.&lt;/li&gt;
&lt;li&gt;Smarter Chrome browsing: summarize pages, compare information, and handle some repetitive web tasks on Android.&lt;/li&gt;
&lt;li&gt;Upgraded Autofill: use Gemini and personal context to fill more complex forms.&lt;/li&gt;
&lt;li&gt;Rambler: turn natural speech into clearer, more polished text.&lt;/li&gt;
&lt;li&gt;Natural-language widgets: describe what you want, and Android generates custom widgets.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These features will start rolling out in summer 2026, first on select Samsung Galaxy and Google Pixel phones, and later to more Android devices including watches, cars, glasses, and laptops.&lt;/p&gt;
&lt;h2 id=&#34;multi-step-automation-from-suggestions-to-execution&#34;&gt;Multi-Step Automation: From Suggestions to Execution
&lt;/h2&gt;&lt;p&gt;The most important direction is letting Gemini complete multi-step tasks across apps.&lt;/p&gt;
&lt;p&gt;Google gives examples such as booking a spin class, finding a course syllabus in Gmail and adding required books to a shopping cart, or seeing a travel poster and asking Gemini to find a similar trip on Expedia.&lt;/p&gt;
&lt;p&gt;The hard part is not just understanding one sentence. The system needs to understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is on the user’s current screen or image.&lt;/li&gt;
&lt;li&gt;App information the user has authorized.&lt;/li&gt;
&lt;li&gt;Which app should be opened next.&lt;/li&gt;
&lt;li&gt;Which steps can be automated.&lt;/li&gt;
&lt;li&gt;Which steps must pause for user confirmation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google emphasizes that Gemini acts on user instructions and stops when the task is done, with final confirmation remaining under user control. This is not a fully autonomous agent, but a mobile agent with human confirmation in the loop.&lt;/p&gt;
&lt;h2 id=&#34;screen-and-image-context-matter-more&#34;&gt;Screen and Image Context Matter More
&lt;/h2&gt;&lt;p&gt;One important change is screen context and image context.&lt;/p&gt;
&lt;p&gt;Older phone assistants mostly relied on voice commands and fixed app integrations. Gemini Intelligence puts more emphasis on “seeing” the current screen. For example, if a user has a shopping list in notes, they can long-press the power button to summon Gemini and ask it to create a delivery cart from the list.&lt;/p&gt;
&lt;p&gt;This means Android AI is not just a chatbot. It is trying to understand the user’s current operating environment. Future mobile AI competition may depend not only on who has the better model answer, but also on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the AI can understand the current screen.&lt;/li&gt;
&lt;li&gt;Whether it can act across apps.&lt;/li&gt;
&lt;li&gt;Whether it can track task progress in the background.&lt;/li&gt;
&lt;li&gt;Whether it can reliably ask for confirmation at key points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is a major difference between mobile AI and web chat AI.&lt;/p&gt;
&lt;h2 id=&#34;chrome-from-search-to-web-task-agent&#34;&gt;Chrome: From Search to Web Task Agent
&lt;/h2&gt;&lt;p&gt;Google says Android devices will get a smarter Gemini in Chrome starting in late June 2026.&lt;/p&gt;
&lt;p&gt;It can help users research, summarize, and compare web content, and Chrome auto browse can handle some repetitive web tasks such as appointments and parking reservations.&lt;/p&gt;
&lt;p&gt;This means Gemini in Chrome is not just a page-summary feature. It is moving toward a browser agent. The browser is already where users complete many web tasks. If Gemini can understand pages, fill information, compare options, and execute some steps, Chrome becomes a task execution surface.&lt;/p&gt;
&lt;p&gt;The challenge is practical:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Websites are complex, so automated actions can fail.&lt;/li&gt;
&lt;li&gt;Forms, payments, logins, and CAPTCHAs require caution.&lt;/li&gt;
&lt;li&gt;Users need to know what Gemini did.&lt;/li&gt;
&lt;li&gt;Final submission, payment, or booking should usually remain human-confirmed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The hard part is not only model capability, but browser automation, safety boundaries, and user trust.&lt;/p&gt;
&lt;h2 id=&#34;autofill-from-password-filling-to-complex-forms&#34;&gt;Autofill: From Password Filling to Complex Forms
&lt;/h2&gt;&lt;p&gt;Autofill with Google was mostly about passwords, addresses, and payment details. Google now wants to upgrade it into a smarter form assistant.&lt;/p&gt;
&lt;p&gt;With Gemini’s Personal Intelligence, Android can use relevant information from connected apps to fill more complex form fields, including forms in Chrome.&lt;/p&gt;
&lt;p&gt;This is very practical. Filling complex forms on mobile is painful: small screen, many fields, and information scattered across email, calendar, chats, and documents. If Gemini can organize and fill this information with user permission, it can save a lot of time.&lt;/p&gt;
&lt;p&gt;Google also stresses that connecting Gemini and Autofill with Google is strictly opt-in. Users choose whether to connect them and can turn the connection on or off in settings.&lt;/p&gt;
&lt;p&gt;That matters because Autofill touches personal details, addresses, accounts, payments, work information, and sensitive forms. The more useful it becomes, the more important explicit permission and easy opt-out become.&lt;/p&gt;
&lt;h2 id=&#34;rambler-turning-speech-into-sendable-text&#34;&gt;Rambler: Turning Speech into Sendable Text
&lt;/h2&gt;&lt;p&gt;Rambler is one of the more interesting new features.&lt;/p&gt;
&lt;p&gt;Gboard already supports speech-to-text, but natural speech often includes repetition, pauses, filler words, and self-corrections. Rambler’s goal is to turn natural speech into clearer text that is ready to send.&lt;/p&gt;
&lt;p&gt;It is useful when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want to dictate a message quickly without editing every word.&lt;/li&gt;
&lt;li&gt;Your speech includes pauses, repetition, or filler.&lt;/li&gt;
&lt;li&gt;You need to turn a rough thought into a more professional text, email, or chat message.&lt;/li&gt;
&lt;li&gt;You switch between languages and want the system to understand context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google says Rambler will clearly show when it is enabled, and audio is used only for real-time transcription and not saved. This is a response to privacy and transparency concerns.&lt;/p&gt;
&lt;p&gt;From a product perspective, Rambler upgrades “voice input” into “voice writing.” It does not only record what you said; it helps turn speech into sendable text.&lt;/p&gt;
&lt;h2 id=&#34;natural-language-widgets&#34;&gt;Natural-Language Widgets
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence also introduces Create My Widget. Users can describe a widget in natural language, such as “recommend three high-protein meal prep recipes every week,” and Android generates a custom widget for the home screen.&lt;/p&gt;
&lt;p&gt;This points toward generative UI. Users no longer pick only from fixed widget templates; they describe the information and presentation they want.&lt;/p&gt;
&lt;p&gt;If the idea matures, the phone home screen could become much more personal. Weather, schedule, health, commute, food, learning, and work reminders could all become dynamic modules generated around user needs.&lt;/p&gt;
&lt;p&gt;But generative UI also needs stability. A widget is not a one-off chat response. It sits on the home screen for a long time and must be reliable, readable, configurable, and visually controlled.&lt;/p&gt;
&lt;h2 id=&#34;material-3-expressive-and-intelligent-ui&#34;&gt;Material 3 Expressive and Intelligent UI
&lt;/h2&gt;&lt;p&gt;Google also says Gemini Intelligence will bring design updates based on Material 3 Expressive.&lt;/p&gt;
&lt;p&gt;This is not just decoration. When AI starts acting proactively, the UI needs to clearly show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What the AI is doing.&lt;/li&gt;
&lt;li&gt;Which steps are done.&lt;/li&gt;
&lt;li&gt;Where user confirmation is needed.&lt;/li&gt;
&lt;li&gt;How the user can cancel or change the action.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Proactive AI without clear UI easily makes users feel out of control. Design language becomes part of the AI product experience.&lt;/p&gt;
&lt;h2 id=&#34;availability-and-rollout&#34;&gt;Availability and Rollout
&lt;/h2&gt;&lt;p&gt;According to Google, Gemini Intelligence features will start on the latest Samsung Galaxy and Google Pixel phones in summer 2026, then expand to more Android devices, including watches, cars, glasses, and laptops.&lt;/p&gt;
&lt;p&gt;This is not a global all-at-once launch. Availability may depend on device, region, language, app support, and account settings.&lt;/p&gt;
&lt;p&gt;If you want to try it, the realistic expectations are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Watch Pixel and Samsung flagship phones first.&lt;/li&gt;
&lt;li&gt;Watch for system updates after summer 2026.&lt;/li&gt;
&lt;li&gt;Look for new toggles in Gemini, Chrome, Gboard, Autofill, and Android settings.&lt;/li&gt;
&lt;li&gt;Not every region and language will support every feature at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-this-means-for-android&#34;&gt;What This Means for Android
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android is not just a bundle of small AI features. It changes Android’s product direction.&lt;/p&gt;
&lt;p&gt;Traditional phone operating systems manage apps, notifications, permissions, files, and hardware. Google now wants the system to understand user intent and complete tasks across apps. If this works, Android’s competition will shift from “system features and app ecosystem” toward “how well the system can proactively help users do things.”&lt;/p&gt;
&lt;p&gt;It also changes mobile AI competition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple will emphasize on-device integration, privacy, and system-level control.&lt;/li&gt;
&lt;li&gt;Google will emphasize Gemini, Search, Chrome, Android, and multi-device ecosystems.&lt;/li&gt;
&lt;li&gt;Third-party AI apps will find it harder to compete with system-level entry points.&lt;/li&gt;
&lt;li&gt;App developers will need to think about how their apps can be called by AI agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next few years, AI on phones may no longer be just a chat entry point. It may become the system-level execution layer.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Gemini Intelligence on Android is not about adding another Gemini chat box to the phone. It puts AI into Android’s operating flow. Multi-step automation, smarter Chrome browsing, Autofill, Rambler, and natural-language widgets all aim to turn the phone from a passive tool into a proactive assistant.&lt;/p&gt;
&lt;p&gt;Whether it changes user habits depends on reliability, clear privacy controls, smooth cross-app operation, and keeping users in final control. At least from this announcement, Google is defining the next stage of Android as a proactive AI system, not just a traditional mobile operating system.&lt;/p&gt;
&lt;p&gt;Reference:&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 Now Supports Remote Access from ChatGPT Mobile, with Access Tokens for Enterprise Workspaces</title>
        <link>https://knightli.com/en/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/en/2026/05/17/codex-mobile-remote-access-enterprise-access-tokens/</guid>
        <description>&lt;p&gt;On May 14, 2026, OpenAI updated the ChatGPT Enterprise &amp;amp; Edu release notes with two Codex changes: Codex can now be accessed remotely from the ChatGPT mobile app, and Enterprise workspaces can use Codex access tokens for controlled automation.&lt;/p&gt;
&lt;p&gt;This is not a model capability release. It is a shift in the shape of Codex as a product. Codex is moving from a coding assistant that lives locally or in a web session toward a coding agent that can run for longer, be managed remotely, and connect to enterprise automation workflows.&lt;/p&gt;
&lt;h2 id=&#34;what-changed&#34;&gt;What Changed
&lt;/h2&gt;&lt;p&gt;According to OpenAI Help Center, Codex now supports remote access from the ChatGPT mobile app. Users can connect to a running Codex environment from their phone, follow long-running tasks, and step in when needed.&lt;/p&gt;
&lt;p&gt;At the same time, ChatGPT Enterprise workspaces now have Codex access tokens. These are designed for trusted non-interactive local workflows, allowing automation to use ChatGPT workspace identity and enterprise controls without requiring a browser login every time.&lt;/p&gt;
&lt;p&gt;The update has two main entry points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mobile remote access: solves the problem of monitoring long Codex tasks when you are away from your computer.&lt;/li&gt;
&lt;li&gt;Access tokens: lets enterprise automation scripts use Codex workflows with a controlled identity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-mobile-remote-access-solves&#34;&gt;What Mobile Remote Access Solves
&lt;/h2&gt;&lt;p&gt;Codex tasks do not always finish in seconds. In real development work, Codex may need to read a repository, edit multiple files, run tests, wait for command output, fix errors, and ask for approval midway.&lt;/p&gt;
&lt;p&gt;Previously, these tasks often required users to stay near their Mac, desktop app, CLI, or IDE. Now the ChatGPT mobile app can act as a remote console, letting users follow Codex after leaving their computer.&lt;/p&gt;
&lt;p&gt;OpenAI says the mobile app can show live state from the underlying environment, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project context.&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;Users can also answer Codex questions, redirect execution, approve actions, inspect output, and switch between connected hosts. The underlying task still runs on a Mac host or connected remote environment; the phone is used for viewing and control.&lt;/p&gt;
&lt;h2 id=&#34;why-this-matters-for-developers&#34;&gt;Why This Matters for Developers
&lt;/h2&gt;&lt;p&gt;This feature is most useful for long tasks that need occasional confirmation.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codex is running a slow test suite and you want to check the result while away.&lt;/li&gt;
&lt;li&gt;Codex changed multiple files and you want to review the diff from your phone before approving the next step.&lt;/li&gt;
&lt;li&gt;Codex is waiting for confirmation before a risky operation.&lt;/li&gt;
&lt;li&gt;You have multiple connected hosts and need to switch between them from mobile.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value is not writing code on a phone. The value is that you no longer need to sit in front of the computer the entire time. Codex keeps working in the original environment, while you step in only at key moments.&lt;/p&gt;
&lt;p&gt;This also shows Codex moving toward a background-agent model: tasks can keep running, the user does not need to stay online the entire time, but approval and control remain with the human.&lt;/p&gt;
&lt;h2 id=&#34;what-access-tokens-solve&#34;&gt;What Access Tokens Solve
&lt;/h2&gt;&lt;p&gt;Codex access tokens are for ChatGPT Enterprise workspaces. Their focus is not ordinary personal login, but trusted enterprise automation.&lt;/p&gt;
&lt;p&gt;Enterprises often have local or internal workflows that need to run non-interactively, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scheduled code checks.&lt;/li&gt;
&lt;li&gt;Triggering Codex workflows on managed machines.&lt;/li&gt;
&lt;li&gt;Connecting Codex to internal developer tooling.&lt;/li&gt;
&lt;li&gt;Using workspace identity without opening a browser.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access tokens let these workflows run with ChatGPT workspace identity while still being governed by enterprise policy. Compared with manual browser login, they are better suited to automation. Compared with sharing personal credentials, they are easier to govern.&lt;/p&gt;
&lt;h2 id=&#34;this-is-not-a-generic-api-key&#34;&gt;This Is Not a Generic API Key
&lt;/h2&gt;&lt;p&gt;This distinction matters. Codex access tokens should not be understood as a simple all-purpose API key.&lt;/p&gt;
&lt;p&gt;OpenAI notes that access tokens are available for ChatGPT Enterprise workspaces, admins can manage workspace-level availability, and members with allowed roles can create their own tokens. Governance views may also reflect access token activity when available.&lt;/p&gt;
&lt;p&gt;In other words, access tokens sit inside the enterprise permission, role, and audit framework:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Admins can decide whether a workspace enables them.&lt;/li&gt;
&lt;li&gt;Not every member can create them by default.&lt;/li&gt;
&lt;li&gt;Token activity can appear in governance views.&lt;/li&gt;
&lt;li&gt;They inherit ChatGPT workspace identity and enterprise controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is different from casually generating a long-lived personal secret.&lt;/p&gt;
&lt;h2 id=&#34;secure-defaults-remote-control-is-off-by-default&#34;&gt;Secure Defaults: Remote Control Is Off by Default
&lt;/h2&gt;&lt;p&gt;Codex mobile remote access touches code environments, terminal output, diffs, test results, and approval actions. If it were enabled by default, it would create obvious enterprise security risks.&lt;/p&gt;
&lt;p&gt;OpenAI’s default is therefore conservative: remote control is off by default, and an admin or owner must enable it in Workspace settings.&lt;/p&gt;
&lt;p&gt;Enabling mobile remote access may also involve:&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;Multi-factor authentication.&lt;/li&gt;
&lt;li&gt;Passkey.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a capability that enterprise IT and security teams need to configure, not something that automatically becomes available to everyone after updating the app.&lt;/p&gt;
&lt;h2 id=&#34;what-needs-to-be-updated&#34;&gt;What Needs to Be Updated
&lt;/h2&gt;&lt;p&gt;OpenAI says mobile remote access requires updates on both sides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT mobile app.&lt;/li&gt;
&lt;li&gt;Codex app on macOS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the workspace requires it, setup may also trigger SSO, multi-factor authentication, or passkey flows.&lt;/p&gt;
&lt;p&gt;In practice, enterprise admins should first review the remote control settings in Workspace settings and decide which members or roles can use the feature.&lt;/p&gt;
&lt;h2 id=&#34;impact-on-enterprise-codex-usage&#34;&gt;Impact on Enterprise Codex Usage
&lt;/h2&gt;&lt;p&gt;This update pushes Codex in two directions.&lt;/p&gt;
&lt;p&gt;First, Codex becomes more suitable for long-running tasks. Previously, long tasks often required constant attention. Now users can monitor status and approve actions from mobile, making Codex more natural as a background worker.&lt;/p&gt;
&lt;p&gt;Second, Codex becomes more suitable for enterprise automation. Access tokens give non-interactive workflows a more formal identity path, making future integration with internal CI, code review, scripts, and developer platforms easier.&lt;/p&gt;
&lt;p&gt;Together, these changes suggest Codex is evolving from a developer-side AI helper into a manageable enterprise coding agent.&lt;/p&gt;
&lt;h2 id=&#34;remaining-boundaries&#34;&gt;Remaining Boundaries
&lt;/h2&gt;&lt;p&gt;This update is useful, but it does not mean Codex should run unattended without policy.&lt;/p&gt;
&lt;p&gt;Enterprises still need to consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which projects allow remote control.&lt;/li&gt;
&lt;li&gt;Which commands require approval.&lt;/li&gt;
&lt;li&gt;How tokens are created, rotated, and revoked.&lt;/li&gt;
&lt;li&gt;Whether mobile remote access fits device management policy.&lt;/li&gt;
&lt;li&gt;Whether terminal output, screenshots, and diffs may contain sensitive data.&lt;/li&gt;
&lt;li&gt;Whether audit logs and governance views meet compliance requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access tokens in particular should be managed like other enterprise credentials: least privilege, rotation, no hardcoding, and timely revocation of unused tokens.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;OpenAI’s Codex update is focused: ChatGPT mobile can remotely access long-running Codex tasks, and Enterprise workspaces can use Codex access tokens for controlled automation.&lt;/p&gt;
&lt;p&gt;The first change lets developers avoid sitting in front of their computer the whole time. The second lets enterprises connect Codex more formally to internal workflows. Together, they show Codex moving from an interactive coding assistant toward a remotely manageable, auditable, automation-friendly enterprise coding agent.&lt;/p&gt;
&lt;p&gt;Reference:&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>Why Did Codex Usage Limits Suddenly Reset? History and Sources</title>
        <link>https://knightli.com/en/2026/05/17/codex-usage-limit-reset-history/</link>
        <pubDate>Sun, 17 May 2026 08:36:15 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/17/codex-usage-limit-reset-history/</guid>
        <description>&lt;p&gt;Codex users sometimes see an odd situation: their usage limits recover even though their normal reset time has not arrived. This kind of unexpected reset is not new, and it does not necessarily mean the quota policy has permanently become more generous. It may come from incident compensation, product promotions, growth milestones, or a backend reset that only applies to certain windows or account states.&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;Screenshot of Tibo discussing a Codex usage limits reset&#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;This screenshot comes from a post on X by Tibo Sottiaux (@thsottiaux), who leads the OpenAI Codex team. For users tracking limits, the key point is not the model detail but the line saying he would reset usage limits that evening. The context suggests this was a compensating reset, not a normal scheduled refresh.&lt;/p&gt;
&lt;h2 id=&#34;short-version&#34;&gt;Short Version
&lt;/h2&gt;&lt;p&gt;Sudden Codex usage limit resets usually fall into several categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Incident compensation&lt;/strong&gt;: a Codex or model issue wastes user quota, so OpenAI resets limits to make up for it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Launch or promotion events&lt;/strong&gt;: a new model, client, or feature ships with temporary extra capacity or a reset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Growth milestones&lt;/strong&gt;: OpenAI resets or raises limits after Codex reaches a user-growth milestone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backend policy changes&lt;/strong&gt;: only some quota windows or account states are reset, and the UI may not explain the scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The most common misunderstanding is assuming that “reset” means every visible quota window recovered. In practice, Codex may have short rolling windows, weekly limits, model-specific consumption weights, and plan-specific rules. A special reset may only affect part of that system.&lt;/p&gt;
&lt;h2 id=&#34;what-this-screenshot-shows&#34;&gt;What This Screenshot Shows
&lt;/h2&gt;&lt;p&gt;The screenshot shows Tibo posting an update on May 15, 2026, saying the team would continue monitoring and reset usage limits that evening. It quotes an earlier message saying the team was investigating reports from some users.&lt;/p&gt;
&lt;p&gt;For users, there are three practical takeaways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;This was not a normal user-specific reset cycle; it was an active reset by the team.&lt;/li&gt;
&lt;li&gt;The reset had a specific event context and was not a permanent limit increase.&lt;/li&gt;
&lt;li&gt;The phrase “usage limits” does not by itself clarify whether both short windows and weekly limits were included.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So if your quota recovered, treat it first as a special reset event, not as evidence that future limits have changed.&lt;/p&gt;
&lt;h2 id=&#34;why-codex-resets-can-feel-unexpected&#34;&gt;Why Codex Resets Can Feel Unexpected
&lt;/h2&gt;&lt;p&gt;Codex limits are not simply “refreshed at a fixed time every day.” The backend may track several things at once:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Short usage windows, such as a few-hour window.&lt;/li&gt;
&lt;li&gt;Weekly or longer-period limits.&lt;/li&gt;
&lt;li&gt;Different consumption weights for different models.&lt;/li&gt;
&lt;li&gt;Different entry points such as local Codex, Cloud Tasks, IDEs, and the CLI.&lt;/li&gt;
&lt;li&gt;Plan differences across Plus, Pro, Business, and Team.&lt;/li&gt;
&lt;li&gt;Whether an account is eligible for a special reset.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When OpenAI applies a special reset, the UI may not clearly say whether it was a normal cycle refresh or a special compensation event. If only the short window resets, users may assume the weekly limit should also recover. If the weekly limit does not move, it can look like the reset failed.&lt;/p&gt;
&lt;p&gt;An issue in the OpenAI Codex GitHub repository raised the same transparency problem: public messaging said Codex rate limits had been reset, but the product UI did not clearly show which windows were reset, whether the weekly limit was included, or whether all paid plans were affected equally.&lt;/p&gt;
&lt;h2 id=&#34;historical-patterns&#34;&gt;Historical Patterns
&lt;/h2&gt;&lt;h3 id=&#34;1-february-2026-launch-period-and-temporary-extra-capacity&#34;&gt;1. February 2026: Launch Period and Temporary Extra Capacity
&lt;/h3&gt;&lt;p&gt;During the Codex desktop app and &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; promotion period, community users discussed usage limit resets and temporary 2x rate limits. Reddit users mentioned that the Codex app launch came with limited-time 2x rate limits and a usage limit reset.&lt;/p&gt;
&lt;p&gt;This kind of reset looks more like a launch-period operation: encourage people to try the new client, model, or workflow.&lt;/p&gt;
&lt;h3 id=&#34;2-march-2026-random-resets-and-abnormal-consumption&#34;&gt;2. March 2026: Random Resets and Abnormal Consumption
&lt;/h3&gt;&lt;p&gt;Around March, the community repeatedly discussed “random usage reset” and “weekly limit reset daily” behavior. Some users said their weekly limit recovered early, while others connected the behavior to new Codex models, safety blocks, abnormal quota burn, or bug fixes.&lt;/p&gt;
&lt;p&gt;These discussions are not official announcements, but they show that users had already observed Codex limits recovering outside their normal schedules.&lt;/p&gt;
&lt;h3 id=&#34;3-april-2026-growth-milestones-and-paid-plan-resets&#34;&gt;3. April 2026: Growth Milestones and Paid-Plan Resets
&lt;/h3&gt;&lt;p&gt;In late April, public reporting said Codex had reached 3 million weekly active users and that OpenAI reset rate limits, with plans to give users more room at later growth milestones.&lt;/p&gt;
&lt;p&gt;A GitHub issue also cited a Tibo post from April 28 saying he had reset Codex rate limits for paid plans after a “good week,” so users could build more with &lt;code&gt;GPT-5.5&lt;/code&gt;. The same issue noted that the product UI did not clearly explain which quota windows were actually reset or whether the weekly limit was included.&lt;/p&gt;
&lt;p&gt;This shows why activity-based resets can still cause confusion: users may hear broad wording but see different behavior in their own account.&lt;/p&gt;
&lt;h3 id=&#34;4-may-2026-compensation-reset&#34;&gt;4. May 2026: Compensation Reset
&lt;/h3&gt;&lt;p&gt;The screenshot in this post is a clearer example of a compensation-style reset. Tibo said the team had found issues and would reset usage limits that evening. OpenAI Status also recorded Codex-related elevated errors and degraded latency on May 13, 2026.&lt;/p&gt;
&lt;p&gt;For ordinary users, the point is not which model detail caused the issue. The key lesson is that OpenAI may reset limits when a service-side problem causes users to burn quota abnormally.&lt;/p&gt;
&lt;h2 id=&#34;how-to-interpret-a-sudden-reset&#34;&gt;How to Interpret a Sudden Reset
&lt;/h2&gt;&lt;p&gt;If your Codex quota suddenly recovers, check in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm whether your normal reset time had arrived.&lt;/li&gt;
&lt;li&gt;Check OpenAI Status for Codex incidents, model errors, latency, or degraded performance.&lt;/li&gt;
&lt;li&gt;Look for updates from Tibo, OpenAI accounts, or Codex GitHub issues.&lt;/li&gt;
&lt;li&gt;See whether community users are reporting the same reset, abnormal burn, or weekly-limit confusion.&lt;/li&gt;
&lt;li&gt;Separate short-window resets from weekly limits; do not assume they always move together.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If it is official incident compensation, there is usually a status-page entry, a team announcement, or a cluster of user reports. If it is only a partial backend refresh, there may be no clear public announcement.&lt;/p&gt;
&lt;h2 id=&#34;how-reliable-are-the-sources&#34;&gt;How Reliable Are the Sources?
&lt;/h2&gt;&lt;p&gt;It helps to separate sources by reliability:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Status&lt;/strong&gt;: best for confirming service incidents, error rates, latency, and recovery times.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tibo / OpenAI official accounts&lt;/strong&gt;: useful for special reset, compensation, or promotion messaging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Codex GitHub issues&lt;/strong&gt;: useful for seeing user reports about UI behavior, quota windows, and actual product behavior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reddit / X discussions&lt;/strong&gt;: useful for spotting broad user patterns, but not official confirmation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Third-party news or blogs&lt;/strong&gt;: useful for timeline context, but should be checked against original sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When writing or making decisions, keep these layers separate. “OpenAI Status recorded an incident” is an official status signal. “Reddit users reported random resets” is community observation. “A GitHub issue reported unclear UI behavior” is a user-submitted product issue.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;A sudden Codex usage limit reset is usually not just “free quota from nowhere.” It may come from incident compensation, launch promotion, growth activity, or a backend policy update. The confusing part is that Codex has multiple quota windows, and a special reset may not include all of them. The UI may also fail to show the reset scope clearly.&lt;/p&gt;
&lt;p&gt;When it happens, check your actual client-side quota first, then compare it with OpenAI Status, Tibo’s posts, Codex GitHub issues, and community reports. Do not assume one reset means the long-term rules have changed, and do not assume weekly limits, short windows, and every plan all reset together.&lt;/p&gt;
&lt;p&gt;References:&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 repost of Tibo&amp;rsquo;s announcement screenshot and X link&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: A Learning Map for Vibe Coding Beginners</title>
        <link>https://knightli.com/en/2026/05/16/easy-vibe-vibe-coding-learning-map/</link>
        <pubDate>Sat, 16 May 2026 22:44:43 +0800</pubDate>
        
        <guid>https://knightli.com/en/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; is an open source Vibe Coding learning project from Datawhale. It is not aimed at developers who are already fluent with AI coding tools. It is aimed at students, product managers, designers, operators, indie developers, and technical hobbyists who are just starting with Vibe Coding.&lt;/p&gt;
&lt;p&gt;The value of this project is not that it lists another batch of AI tools. It turns &amp;ldquo;how to start building projects with AI&amp;rdquo; into a learning path that is easier to understand. For many beginners, the hard part is not knowing that Claude Code, Cursor, MCP, or Agents exist. The hard part is knowing what to learn first, how to practice, and when to move into more advanced tools.&lt;/p&gt;
&lt;h2 id=&#34;beginners-need-a-path-most&#34;&gt;Beginners Need a Path Most
&lt;/h2&gt;&lt;p&gt;Vibe Coding has become popular in recent years, but it is not very friendly to beginners.&lt;/p&gt;
&lt;p&gt;On the surface, as long as you can describe a requirement, you can ask AI to write code. In reality, as soon as the task becomes slightly more complex, problems appear: the requirement is unclear, the model edits the wrong file, the project structure is confusing, errors are hard to handle, dependencies fail to install, prompts become messier, and the workflow falls back to &amp;ldquo;copy code into a chat box&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;So getting started with Vibe Coding cannot only mean learning &amp;ldquo;how to write prompts&amp;rdquo;. It needs to solve several things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to split an idea into executable tasks;&lt;/li&gt;
&lt;li&gt;How to let AI understand a project structure;&lt;/li&gt;
&lt;li&gt;How to read code generated by the model;&lt;/li&gt;
&lt;li&gt;How to handle errors and iterate;&lt;/li&gt;
&lt;li&gt;How to use the terminal and local development environment;&lt;/li&gt;
&lt;li&gt;How to move from web chat to real AI coding tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where easy-vibe matters: it tries to organize these topics into a learning route, instead of leaving beginners lost among tools, tutorials, and terminology.&lt;/p&gt;
&lt;h2 id=&#34;it-is-a-roadmap-not-a-single-tutorial&#34;&gt;It Is a Roadmap, Not a Single Tutorial
&lt;/h2&gt;&lt;p&gt;According to the project description, easy-vibe covers basic tutorials, interactive exercises, visual content, RAG, terminal tools, AI coding tools, and more advanced topics such as Claude Code, MCP, Skills, and Agent Teams.&lt;/p&gt;
&lt;p&gt;This structure is suitable for beginners because AI coding is not a single skill. It is a combination of abilities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Describing requirements;&lt;/li&gt;
&lt;li&gt;Splitting tasks;&lt;/li&gt;
&lt;li&gt;Reading projects;&lt;/li&gt;
&lt;li&gt;Asking the model to edit code;&lt;/li&gt;
&lt;li&gt;Running and verifying results;&lt;/li&gt;
&lt;li&gt;Iterating based on errors;&lt;/li&gt;
&lt;li&gt;Turning repeated workflows into tools or skills.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you only learn one tool, it is easy to be constrained by that tool&amp;rsquo;s interface. Switch models, editors, or CLIs, and the workflow becomes unclear again. A roadmap helps build the working method first, then places tools where they belong.&lt;/p&gt;
&lt;h2 id=&#34;especially-useful-for-non-programmers&#34;&gt;Especially Useful for Non-Programmers
&lt;/h2&gt;&lt;p&gt;The biggest appeal of Vibe Coding is that it lets non-professional programmers build prototypes.&lt;/p&gt;
&lt;p&gt;Product managers can turn product ideas into interactive demos. Designers can validate interaction logic. Operators can write internal tools. Students can quickly build course projects. Founders can validate demand early. These people do not necessarily need to become full-time engineers in the traditional sense, but they do need a method for &amp;ldquo;letting AI help me turn ideas into working things&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;This is also why easy-vibe fits the Chinese community. Many Chinese users already know AI can write code, but they still lack systematic beginner materials. Development environment, prompts, project structure, debugging methods, and Agent tools are easier to learn when explained clearly in Chinese and paired with exercises.&lt;/p&gt;
&lt;p&gt;For these users, the most important thing is not to learn a complex framework immediately. It is to complete a full loop first: propose a requirement, generate a project, run it, find problems, keep modifying, and finally get a usable version.&lt;/p&gt;
&lt;h2 id=&#34;the-advanced-part-moves-toward-real-ai-development-workflows&#34;&gt;The Advanced Part Moves Toward Real AI Development Workflows
&lt;/h2&gt;&lt;p&gt;The Claude Code, MCP, Skills, and Agent Teams mentioned in easy-vibe are no longer just beginner concepts.&lt;/p&gt;
&lt;p&gt;Claude Code represents terminal coding Agents: the model can enter a local project, read files, edit code, and run commands. MCP solves tool and data source integration, so the model is not trapped in a chat box. Skills preserve reusable workflows, such as fixed project generation, document organization, test checks, or content production processes. Agent Teams further split tasks across multiple agents.&lt;/p&gt;
&lt;p&gt;These topics may feel distant for beginners, but they are worth understanding early. The direction of Vibe Coding is already clear: from &amp;ldquo;let AI write a piece of code&amp;rdquo; to &amp;ldquo;let AI participate in a complete project workflow&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;If a learning route stops at prompts, it will quickly fall behind tool evolution. On the other hand, if every advanced concept is thrown at beginners immediately, they will not know where to start. The useful part of easy-vibe is that it places these topics on a gradual upgrade path.&lt;/p&gt;
&lt;h2 id=&#34;two-mistakes-to-avoid&#34;&gt;Two Mistakes to Avoid
&lt;/h2&gt;&lt;p&gt;The first mistake is thinking that Vibe Coding means you can ignore code entirely.&lt;/p&gt;
&lt;p&gt;AI can generate a lot, but the user still needs to judge whether the result is correct. At minimum, you need to understand the project structure, know how to run it, and roughly know where an error is happening. Even if you do not write complex code, you still need basic engineering common sense.&lt;/p&gt;
&lt;p&gt;The second mistake is thinking that more advanced tools are always better.&lt;/p&gt;
&lt;p&gt;Beginners do not necessarily need Claude Code, MCP, or multiple Agents at the start. A better order is to first build a feedback loop with simple projects, then gradually introduce the terminal, version control, testing, tool calling, and automated workflows. Tools should match task complexity; otherwise they look powerful but have no clear use.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-it&#34;&gt;How to Use It
&lt;/h2&gt;&lt;p&gt;If you are just starting with Vibe Coding, you can use easy-vibe as a learning checklist.&lt;/p&gt;
&lt;p&gt;Start with basic concepts and simple exercises. Do not rush to chase every tool. Build a small project, such as a personal homepage, data dashboard, form tool, automation script, or knowledge base demo. During the process, observe where AI helps and where you still need to confirm things yourself.&lt;/p&gt;
&lt;p&gt;Once you can complete small projects consistently, move into more complex topics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use terminal tools to work with local projects;&lt;/li&gt;
&lt;li&gt;Use Git to manage each change;&lt;/li&gt;
&lt;li&gt;Use RAG to connect your own materials;&lt;/li&gt;
&lt;li&gt;Use MCP to connect external tools;&lt;/li&gt;
&lt;li&gt;Use Skills to solidify repeated workflows;&lt;/li&gt;
&lt;li&gt;Use Agent Teams to split complex tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Learning Vibe Coding this way is not just learning to ask AI. It is learning to put AI into your own workflow.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;easy-vibe is best seen as a Chinese learning map for Vibe Coding. It organizes scattered AI coding concepts, tools, and exercises into a route that helps beginners move from &amp;ldquo;I heard AI can write code&amp;rdquo; to &amp;ldquo;I can build a project with AI&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;The real value of Vibe Coding is not that it lets people skip all learning. It lowers the threshold from idea to prototype. You still need to understand requirements, organize tasks, verify results, and control risks. But many repetitive, tedious, and blocking steps can be handled with AI assistance.&lt;/p&gt;
&lt;p&gt;If you want a systematic entry point into AI coding, without getting trapped immediately in tool names and complex engineering setup, easy-vibe is a good place to start.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic financial-services: Reusable Templates for Financial Agents</title>
        <link>https://knightli.com/en/2026/05/16/anthropic-financial-services-agent-templates/</link>
        <pubDate>Sat, 16 May 2026 22:43:08 +0800</pubDate>
        
        <guid>https://knightli.com/en/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; is a reference project from Anthropic for the financial services industry. It is not a single application, but a set of examples that can be studied and reused separately: Agents, Plugins, Skills, MCP connectors, and prompts and integration patterns designed around financial workflows.&lt;/p&gt;
&lt;p&gt;This project is worth watching not because it provides a &amp;ldquo;universal financial assistant&amp;rdquo;, but because it breaks common AI implementation problems in finance into more concrete components: what kind of Agent each role needs, which data sources need to be connected, which tasks can be automated, and which steps still require human judgment.&lt;/p&gt;
&lt;h2 id=&#34;it-is-more-like-a-showroom-for-financial-agents&#34;&gt;It Is More Like a Showroom for Financial Agents
&lt;/h2&gt;&lt;p&gt;When companies talk about AI Agents, the discussion can easily stay abstract: reading files, querying data, writing reports, and calling tools. Once the scenario enters finance, the questions become much more specific.&lt;/p&gt;
&lt;p&gt;Investment banking analysts need to organize company materials, generate transaction briefs, and compare comparable companies. Equity research needs to read filings, follow news, perform valuation, and analyze risks. Private equity and asset management teams need to screen deals, write memos, and track portfolio companies. Wealth management needs to place client profiles, market information, and investment advice within a compliance framework.&lt;/p&gt;
&lt;p&gt;These scenarios cannot be handled by a generic chat box alone. They require roles, processes, data sources, output formats, and permission boundaries. The value of this Anthropic repository is that it turns multiple typical financial services roles and tasks into Agent templates that can be used as references.&lt;/p&gt;
&lt;h2 id=&#34;why-provide-agents-plugins-skills-and-mcp-together&#34;&gt;Why Provide Agents, Plugins, Skills, and MCP Together
&lt;/h2&gt;&lt;p&gt;Judging from the project structure, Anthropic did not only provide a set of prompts. It provides several kinds of components at the same time. This maps to several layers of enterprise Agent implementation.&lt;/p&gt;
&lt;p&gt;Agents are more like work units for roles or tasks. They define what the agent should do, how it should do it, when to call tools, and how to produce output.&lt;/p&gt;
&lt;p&gt;Plugins are more like external capability extensions. Financial work rarely happens only inside the model. It often needs to connect databases, document systems, market data, CRM, research libraries, and internal workflow systems.&lt;/p&gt;
&lt;p&gt;Skills are reusable professional capability packages. Fixed analysis frameworks, report structures, checklists, and data processing methods can be turned into skills instead of being rewritten as prompts every time.&lt;/p&gt;
&lt;p&gt;MCP connectors solve tool integration and context standardization. For enterprises, the more tools there are, the more they need a relatively unified way to connect them. Otherwise every system needs separate adaptation, and maintenance cost rises quickly.&lt;/p&gt;
&lt;p&gt;Only when these pieces are combined does the result begin to resemble a real enterprise AI workflow.&lt;/p&gt;
&lt;h2 id=&#34;why-finance-is-a-good-industry-for-agent-examples&#34;&gt;Why Finance Is a Good Industry for Agent Examples
&lt;/h2&gt;&lt;p&gt;Financial services is a good industry for showing Agents because it has three traits at the same time.&lt;/p&gt;
&lt;p&gt;First, information density is high. Financial work relies heavily on filings, announcements, meeting notes, research reports, trading data, client records, and regulatory documents. If a model only relies on general knowledge, it quickly becomes ineffective. It must connect to real data sources.&lt;/p&gt;
&lt;p&gt;Second, output formats are stable. Investment memos, company profiles, KYC documents, research summaries, client briefings, and fund operation reports all have relatively fixed structures. This makes it easier for Agents to form verifiable workflows.&lt;/p&gt;
&lt;p&gt;Third, risk boundaries are clear. Finance has strict requirements for compliance, auditability, permissions, and traceability. AI cannot casually provide investment advice or bypass approval processes. This forces Agent design to become more engineering-driven: keep references, separate facts from inferences, record tool calls, and limit executable actions.&lt;/p&gt;
&lt;p&gt;That means this project is not only for financial companies. Any team building enterprise Agents can use it to observe how Anthropic decomposes industry scenarios.&lt;/p&gt;
&lt;h2 id=&#34;what-typical-workflows-it-covers&#34;&gt;What Typical Workflows It Covers
&lt;/h2&gt;&lt;p&gt;According to the project description, the repository covers several financial services areas, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Investment banking;&lt;/li&gt;
&lt;li&gt;Equity research;&lt;/li&gt;
&lt;li&gt;Private equity;&lt;/li&gt;
&lt;li&gt;Wealth management;&lt;/li&gt;
&lt;li&gt;Fund operations;&lt;/li&gt;
&lt;li&gt;KYC and compliance-related workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These workflows have one thing in common: they all require a lot of reading, organizing, comparison, and structured document generation. The best role for AI here is not to make decisions directly, but to reduce the time spent on information processing and document production.&lt;/p&gt;
&lt;p&gt;For example, in investment banking, an Agent can help organize target company information, extract key financial metrics, and generate a first draft of a transaction summary. In research, it can read filings and news first, then list key changes and open questions. In KYC, it can help check whether materials are complete and whether there are unusual signals.&lt;/p&gt;
&lt;p&gt;The final judgment should still belong to professionals. The Agent&amp;rsquo;s role is closer to assistant, analyst, and workflow accelerator.&lt;/p&gt;
&lt;h2 id=&#34;what-it-suggests-for-enterprise-adoption&#34;&gt;What It Suggests for Enterprise Adoption
&lt;/h2&gt;&lt;p&gt;The most useful part of this repository is that it turns &amp;ldquo;model capability&amp;rdquo; into &amp;ldquo;business components&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Internal AI projects often run into the same problem: model demos look impressive, but once they are connected to real business, they are hard to reuse. One team writes one set of prompts, another team writes another. One system connects a database, another builds its own interface. Security and audit requirements are scattered everywhere.&lt;/p&gt;
&lt;p&gt;A steadier approach is to split capabilities into several types of assets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Role-oriented Agents;&lt;/li&gt;
&lt;li&gt;Process-oriented Skills;&lt;/li&gt;
&lt;li&gt;MCP connectors for system integration;&lt;/li&gt;
&lt;li&gt;Execution rules for permissions and audit;&lt;/li&gt;
&lt;li&gt;Templates and checklists for business output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefit is that the enterprise does not restart from &amp;ldquo;building a chatbot&amp;rdquo; every time. It gradually accumulates maintainable AI workflow assets.&lt;/p&gt;
&lt;h2 id=&#34;compliance-and-responsibility-boundaries-cannot-be-ignored&#34;&gt;Compliance and Responsibility Boundaries Cannot Be Ignored
&lt;/h2&gt;&lt;p&gt;The easiest misunderstanding around financial Agents is treating &amp;ldquo;can generate analysis&amp;rdquo; as &amp;ldquo;can replace decisions&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In financial services, AI output should usually be treated as supporting material. It can organize facts, draft documents, highlight risks, and complete files, but it cannot bypass investment research, risk control, legal, compliance, and suitability requirements. Especially when investment advice, trading decisions, asset allocation, or identity checks are involved, human approval and responsibility chains must remain.&lt;/p&gt;
&lt;p&gt;That is why enterprise Agents cannot be evaluated only by answer quality. They must also be evaluated by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether data sources are reliable;&lt;/li&gt;
&lt;li&gt;Whether references and evidence are traceable;&lt;/li&gt;
&lt;li&gt;Whether tool calls are recorded;&lt;/li&gt;
&lt;li&gt;Whether sensitive data is restricted;&lt;/li&gt;
&lt;li&gt;Whether output has human confirmation;&lt;/li&gt;
&lt;li&gt;Whether wrong results can be discovered and rolled back.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If these questions are not solved, the more automated the Agent becomes, the larger the risk radius becomes.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;anthropics/financial-services is more like a financial Agent reference implementation than an out-of-the-box financial product. It shows one way Anthropic thinks about enterprise AI adoption: do not build only generic chat assistants; organize Agents around specific roles, specific workflows, specific data sources, and specific permission boundaries.&lt;/p&gt;
&lt;p&gt;For financial institutions, it can serve as a reference for designing internal AI workflows. For developers, it is a sample for observing enterprise Agent architecture: Agents handle roles and tasks, Skills preserve professional processes, Plugins and MCP connect external systems, and the model eventually enters real business workflows.&lt;/p&gt;
&lt;p&gt;If early AI tools solved &amp;ldquo;how to make models answer questions&amp;rdquo;, projects like this care more about &amp;ldquo;how to let models participate in work within controlled boundaries&amp;rdquo;. That is where enterprise Agents become truly difficult.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI: Turning DeepSeek V4 into a Terminal Coding Agent</title>
        <link>https://knightli.com/en/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/en/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; is an open source project that brings DeepSeek V4 into terminal-based development workflows. It is not just a chat wrapper. It is closer to a &amp;ldquo;command-line coding agent&amp;rdquo; like Claude Code or Codex CLI: it can read files, edit code, run commands, call tools, and keep working through tasks in a TUI.&lt;/p&gt;
&lt;p&gt;If you already switch between an editor and a terminal, the value of this kind of tool is straightforward: you do not need to copy code back and forth into a web chat window, and you do not need to manually describe the whole project structure. You give it a task, and it can read context from the current workspace, plan steps, make changes, then return the result for your review.&lt;/p&gt;
&lt;h2 id=&#34;it-solves-the-entry-point-problem-for-deepseek&#34;&gt;It Solves the Entry Point Problem for DeepSeek
&lt;/h2&gt;&lt;p&gt;DeepSeek models already provide strong reasoning and coding capabilities, but model capability needs an engineering layer before it can land in real development workflows.&lt;/p&gt;
&lt;p&gt;Web chat is suitable for asking questions, but not for long-running project edits. APIs are suitable for system integration, but individual developers still need to build tool calling, context management, file operations, and permission control themselves. DeepSeek-TUI tries to fill this layer: it wraps DeepSeek V4 into an Agent that can work inside the terminal.&lt;/p&gt;
&lt;p&gt;According to the project description, its main capabilities include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A terminal TUI;&lt;/li&gt;
&lt;li&gt;Conversation and task execution for DeepSeek V4;&lt;/li&gt;
&lt;li&gt;Tool calling and file operations;&lt;/li&gt;
&lt;li&gt;1M context support;&lt;/li&gt;
&lt;li&gt;Auto mode;&lt;/li&gt;
&lt;li&gt;Sub-agents;&lt;/li&gt;
&lt;li&gt;Sandboxed execution;&lt;/li&gt;
&lt;li&gt;A persistent task queue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, these features are not aimed at making the model sound more human. They are aimed at making the model easier to bring into the development environment.&lt;/p&gt;
&lt;h2 id=&#34;a-tui-fits-long-tasks-better-than-plain-cli-text&#34;&gt;A TUI Fits Long Tasks Better Than Plain CLI Text
&lt;/h2&gt;&lt;p&gt;Many AI CLI tools start with plain text interaction: enter a prompt, wait for output, then copy commands or add more context. This is simple, but longer tasks quickly become messy.&lt;/p&gt;
&lt;p&gt;The advantage of a TUI is that it can place conversations, files, execution results, and task status in a more stable interface. For a coding Agent, that matters. A code task is rarely a single question and answer. It often includes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Understanding the project structure;&lt;/li&gt;
&lt;li&gt;Finding relevant files;&lt;/li&gt;
&lt;li&gt;Editing code;&lt;/li&gt;
&lt;li&gt;Running tests or commands;&lt;/li&gt;
&lt;li&gt;Fixing issues based on errors;&lt;/li&gt;
&lt;li&gt;Summarizing changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the interface is only a stream of logs, it is hard for the user to see where the Agent is in the process. A TUI at least provides a better place to observe and take over.&lt;/p&gt;
&lt;h2 id=&#34;auto-mode-is-best-for-tasks-with-clear-boundaries&#34;&gt;Auto Mode Is Best for Tasks with Clear Boundaries
&lt;/h2&gt;&lt;p&gt;The Auto mode mentioned by DeepSeek-TUI is best for tasks with clear boundaries. For example: fixing a small bug, adding a script, changing a configuration, organizing a set of documents, or implementing a local feature.&lt;/p&gt;
&lt;p&gt;These tasks have something in common: the goal is clear, the verification method is clear, and the impact scope is controllable. The Agent can inspect files, edit files, run commands, and then hand the result back to the user for confirmation.&lt;/p&gt;
&lt;p&gt;But Auto mode should not mean unlimited permission. In real projects, file deletion, large-scale refactors, database migrations, and deployment commands should all require explicit confirmation. The efficiency of coding Agents comes from automation, but so does the risk. The more a tool can execute commands, the more it needs sandboxing, permission boundaries, and human review.&lt;/p&gt;
&lt;h2 id=&#34;sub-agents-matter-because-they-split-tasks&#34;&gt;Sub-Agents Matter Because They Split Tasks
&lt;/h2&gt;&lt;p&gt;Sub-agents are not a new concept, but they are useful in coding scenarios.&lt;/p&gt;
&lt;p&gt;A moderately complex task usually requires several kinds of work at the same time: someone reads the code, someone changes the implementation, someone checks tests, and someone organizes documentation. Traditional multi-agent systems often feel ornamental because they have no real tools or real workspace; they only discuss inside a conversation.&lt;/p&gt;
&lt;p&gt;If sub-agents can work with the file system, command execution, and task queues, they become more like a task decomposition mechanism. For example, one sub-agent can analyze dependencies, another can modify a specific module, and the main agent can integrate the result. This can reduce the problem of putting too much unrelated information into one context.&lt;/p&gt;
&lt;p&gt;Of course, sub-agents also add cost: more tokens, more complex state, and responsibility boundaries that are harder to track. They are better suited to medium-complexity tasks and above, not necessarily every small edit.&lt;/p&gt;
&lt;h2 id=&#34;1m-context-is-not-magic-but-it-helps-with-projects&#34;&gt;1M Context Is Not Magic, but It Helps with Projects
&lt;/h2&gt;&lt;p&gt;1M context sounds exaggerated, but in coding scenarios it is not just a marketing number.&lt;/p&gt;
&lt;p&gt;The context of a real codebase is fragmented: README files, configuration files, type definitions, tests, call chains, historical conventions, and error logs can all affect one change. Longer context can reduce the problem of editing after seeing only a local fragment, and it can help the model retain more project constraints.&lt;/p&gt;
&lt;p&gt;Still, longer context does not automatically mean better judgment. Code tasks still need retrieval, filtering, and verification. Putting an entire project into context is not necessarily better than reading the relevant files precisely. A good coding Agent should treat long context as a buffer, not as a shortcut that replaces engineering judgment.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-best-for&#34;&gt;Who It Is Best For
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI is better suited to several groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers who want to use DeepSeek for coding tasks in the terminal;&lt;/li&gt;
&lt;li&gt;People who do not want to build tool calling and file operation frameworks themselves;&lt;/li&gt;
&lt;li&gt;Users familiar with Claude Code or Codex CLI who want to try a DeepSeek-based entry point;&lt;/li&gt;
&lt;li&gt;People who need local project context instead of only asking about code snippets in a web page;&lt;/li&gt;
&lt;li&gt;Developers who want to put AI coding workflows into a command-line environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally ask how to write a function, web chat is enough. If you want the model to participate directly in project edits, a terminal Agent becomes more meaningful.&lt;/p&gt;
&lt;h2 id=&#34;risks-to-watch&#34;&gt;Risks to Watch
&lt;/h2&gt;&lt;p&gt;There are three things to watch most closely with this kind of tool.&lt;/p&gt;
&lt;p&gt;The first is permissions. As long as a tool can read and write files or execute commands, you need to know what it can access by default, whether it can delete files, whether it can access the network, and whether dangerous commands require confirmation.&lt;/p&gt;
&lt;p&gt;The second is rollback. Before using it, it is best to keep the Git working tree clean, so every Agent change can be clearly seen through &lt;code&gt;git diff&lt;/code&gt;. Do not let an Agent automatically edit a project while many unrelated changes are already uncommitted.&lt;/p&gt;
&lt;p&gt;The third is verification. Code written by an Agent does not mean the task is complete. Tests, builds, linting, and human review still need to remain. AI coding tools can speed up progress, but they cannot replace final engineering confirmation.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;The significance of DeepSeek-TUI is not that it adds another chat client. It puts DeepSeek V4 into a terminal environment that is closer to real development work.&lt;/p&gt;
&lt;p&gt;For developers, model capability is only the first step. The real experience depends on whether it can read a project, safely edit files, run verification commands, maintain state in long tasks, and let the user take over at any time.&lt;/p&gt;
&lt;p&gt;If you want to use DeepSeek for daily code changes, project reading, and automated development tasks, DeepSeek-TUI is worth watching. The direction is also clear: AI coding tools are moving from &amp;ldquo;answering code questions&amp;rdquo; to &amp;ldquo;participating in project execution.&amp;rdquo;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Mobile Remote Access: Use the ChatGPT App to Follow Coding Tasks on Your Mac</title>
        <link>https://knightli.com/en/2026/05/16/codex-mobile-remote-access-chatgpt-app/</link>
        <pubDate>Sat, 16 May 2026 17:42:40 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/16/codex-mobile-remote-access-chatgpt-app/</guid>
        <description>&lt;p&gt;In mid-May 2026, OpenAI brought &lt;code&gt;Codex remote access&lt;/code&gt; into the ChatGPT mobile app. The point is not to write code on a phone. It is to let you follow and steer Codex while it keeps working on a Mac.&lt;/p&gt;
&lt;p&gt;Think of it as a mobile approval and monitoring surface: Codex still reads the project, runs commands, edits files, and checks test results on the computer; the phone is used to review progress, answer questions, add instructions, and approve actions.&lt;/p&gt;
&lt;p&gt;For people who often let Codex run longer tasks, this is useful. You no longer need to sit in front of the Mac waiting for Codex to ask for approval or get stuck.&lt;/p&gt;
&lt;h2 id=&#34;what-it-can-do&#34;&gt;What it can do
&lt;/h2&gt;&lt;p&gt;According to OpenAI&amp;rsquo;s Codex remote connections documentation, mobile access can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start new threads in projects on the host, or continue existing ones;&lt;/li&gt;
&lt;li&gt;send follow-up instructions, answer questions, and steer active work;&lt;/li&gt;
&lt;li&gt;approve commands and other actions;&lt;/li&gt;
&lt;li&gt;review outputs, diffs, test results, terminal output, and screenshots;&lt;/li&gt;
&lt;li&gt;receive notifications when Codex completes a task or needs attention;&lt;/li&gt;
&lt;li&gt;switch between connected hosts and threads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the mobile app is not just a small chat box. It connects to the actual Codex work context on the host.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements
&lt;/h2&gt;&lt;p&gt;First, you need Codex access in the ChatGPT account and workspace you want to use. The phone and Mac must use the same account and workspace.&lt;/p&gt;
&lt;p&gt;Second, install the latest ChatGPT mobile app on iOS or Android. If Codex does not appear in the app, update ChatGPT first.&lt;/p&gt;
&lt;p&gt;Third, the host currently needs to be a Mac that is awake, online, running the Codex App, and signed in to the same account and workspace. OpenAI&amp;rsquo;s documentation says mobile setup and device control currently require &lt;code&gt;Codex App for macOS&lt;/code&gt;; setup is not available from Codex CLI or the IDE Extension.&lt;/p&gt;
&lt;p&gt;Fourth, complete any required MFA, SSO, or passkey flow. In a ChatGPT workspace, an admin may also need to enable Remote Control access.&lt;/p&gt;
&lt;p&gt;This makes the feature a mobile control layer for Codex App on macOS, not a generic remote desktop or a universal Codex connection for every environment.&lt;/p&gt;
&lt;h2 id=&#34;limits-of-codex-mobile-remote-access&#34;&gt;Limits of Codex mobile remote access
&lt;/h2&gt;&lt;p&gt;The feature is convenient, but the limits matter.&lt;/p&gt;
&lt;p&gt;First, it currently needs a &lt;code&gt;macOS host&lt;/code&gt;. The phone connects to Codex App running on a Mac, not directly to Codex CLI, the IDE Extension, or any Linux / Windows development machine.&lt;/p&gt;
&lt;p&gt;Second, the host must stay online. The Mac needs to remain awake, connected to the network, and running Codex App. If it sleeps, loses network access, or closes Codex, the remote session can disconnect.&lt;/p&gt;
&lt;p&gt;Third, connection uses a QR-code setup flow. You start &lt;code&gt;Set up Codex mobile&lt;/code&gt; on the Mac, scan the QR code with your phone, and finish setup in ChatGPT. It is not a simple &amp;ldquo;enter host address&amp;rdquo; flow.&lt;/p&gt;
&lt;p&gt;Fourth, remote actions still go through approvals. You can approve commands and actions from the phone, but you should read what Codex is asking to do before confirming, especially for terminal commands, file edits, tests, and external access.&lt;/p&gt;
&lt;p&gt;In short, it is for following up after you leave the computer. It is not a full development environment replacement and should not be treated as unattended remote control.&lt;/p&gt;
&lt;h2 id=&#34;how-to-connect&#34;&gt;How to connect
&lt;/h2&gt;&lt;p&gt;Start from Codex App on the Mac:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Codex on the Mac.&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;Set up Codex mobile&lt;/code&gt; in the sidebar.&lt;/li&gt;
&lt;li&gt;Codex enables remote access for this host and shows a QR code.&lt;/li&gt;
&lt;li&gt;Scan the QR code with your phone to open the Codex mobile setup flow in ChatGPT.&lt;/li&gt;
&lt;li&gt;Confirm the same ChatGPT account and workspace.&lt;/li&gt;
&lt;li&gt;Complete any required MFA, SSO, or passkey verification.&lt;/li&gt;
&lt;li&gt;After setup succeeds, the Mac appears in Codex on your phone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After connection, use &lt;code&gt;Settings &amp;gt; Connections&lt;/code&gt; in Codex on the Mac to manage connected devices. You can also configure whether the computer stays awake, whether Computer Use is enabled, and whether the Chrome extension is installed.&lt;/p&gt;
&lt;h2 id=&#34;what-the-phone-is-good-for&#34;&gt;What the phone is good for
&lt;/h2&gt;&lt;p&gt;The phone is best for approvals, course corrections, and result review.&lt;/p&gt;
&lt;p&gt;Approvals are the obvious case: Codex asks to run a command or continue an action, and you can decide from the phone.&lt;/p&gt;
&lt;p&gt;Course correction is just as useful. If Codex misunderstood the task, chose the wrong direction, or hit a failing test, you can send a short instruction and let it continue.&lt;/p&gt;
&lt;p&gt;Result review is the third case. You can inspect diffs, test output, terminal logs, and screenshots without returning to the computer.&lt;/p&gt;
&lt;p&gt;The value is not &amp;ldquo;coding on a phone&amp;rdquo;; it is turning the phone into a small control surface for engineering work that still runs on the host.&lt;/p&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common issues
&lt;/h2&gt;&lt;p&gt;If the host does not appear on your phone, confirm that Codex App is running on the Mac, &lt;code&gt;Allow other devices to connect&lt;/code&gt; is enabled, and both devices use the same ChatGPT account and workspace.&lt;/p&gt;
&lt;p&gt;If the approval request does not appear, open the ChatGPT mobile app, go to Codex, scan the QR code again, or restart setup from the host. Workspace users should also confirm that Remote Control access is enabled by an admin.&lt;/p&gt;
&lt;p&gt;If the remote session disconnects, check whether the Mac slept, lost network access, or closed Codex App.&lt;/p&gt;
&lt;p&gt;If authentication blocks setup, complete MFA, SSO, or passkey prompts first. In enterprise environments, workspace permissions may require admin help.&lt;/p&gt;
&lt;h2 id=&#34;best-use-cases&#34;&gt;Best use cases
&lt;/h2&gt;&lt;p&gt;It fits users who run longer Codex coding tasks, want to approve commands away from the desk, manage multiple projects or threads, and already use a Mac as the main development machine.&lt;/p&gt;
&lt;p&gt;It is less useful if you mainly use Windows or Linux, only use Codex CLI or an IDE Extension, expect the phone to be an independent development environment, or work on an unstable network.&lt;/p&gt;
&lt;h2 id=&#34;my-take&#34;&gt;My take
&lt;/h2&gt;&lt;p&gt;Codex mobile remote access is not about moving development to a phone. It is about making the waiting time around Codex more manageable.&lt;/p&gt;
&lt;p&gt;Previously, long Codex tasks often stopped at approval, clarification, failing tests, or direction changes. Now those moments can be handled from the ChatGPT mobile app, while the Mac continues to do the actual engineering work.&lt;/p&gt;
&lt;p&gt;If you already use Codex heavily on a Mac, this is worth enabling. If you only ask occasional coding questions, the value will be less obvious.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>What Is ChatGPT File Library? File Storage, Limits, and Privacy Boundaries</title>
        <link>https://knightli.com/en/2026/05/16/chatgpt-file-library-storage-limits-privacy/</link>
        <pubDate>Sat, 16 May 2026 17:40:14 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/16/chatgpt-file-library-storage-limits-privacy/</guid>
        <description>&lt;p&gt;&lt;code&gt;ChatGPT File Library&lt;/code&gt; is the file library inside ChatGPT.&lt;/p&gt;
&lt;p&gt;Previously, files uploaded to a conversation were mostly useful for that one chat. With File Library, files you upload or files created by ChatGPT can be saved to your account, found later, downloaded, deleted, or referenced again in a new conversation.&lt;/p&gt;
&lt;p&gt;This makes ChatGPT feel more like a persistent workspace, not just a temporary chat box.&lt;/p&gt;
&lt;h2 id=&#34;latest-availability&#34;&gt;Latest availability
&lt;/h2&gt;&lt;p&gt;According to OpenAI&amp;rsquo;s May 14, 2026 ChatGPT Release Notes, File Library is expanding to Free and Go users, including users in the European Economic Area. OpenAI also added storage management across plans.&lt;/p&gt;
&lt;p&gt;One detail matters: the dedicated File storage and Library help page still showed an older availability statement when checked, saying the Library was for Plus, Pro, and Business users outside the EEA, Switzerland, and the UK, and web-only.&lt;/p&gt;
&lt;p&gt;Help pages can lag behind release notes. This article follows the newer May 14, 2026 Release Notes: File Library has started expanding to Free, Go, and more regions, but actual visibility still depends on rollout, region, and app version.&lt;/p&gt;
&lt;h2 id=&#34;what-it-saves&#34;&gt;What it saves
&lt;/h2&gt;&lt;p&gt;ChatGPT can save files you upload or create, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;documents;&lt;/li&gt;
&lt;li&gt;spreadsheets;&lt;/li&gt;
&lt;li&gt;presentations;&lt;/li&gt;
&lt;li&gt;PDFs;&lt;/li&gt;
&lt;li&gt;images;&lt;/li&gt;
&lt;li&gt;files generated by ChatGPT.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Generated images still appear in the Images tab. File Library is more like a central place to manage uploaded and generated files.&lt;/p&gt;
&lt;p&gt;If you often ask ChatGPT to analyze PDFs, organize spreadsheets, create documents, or work with presentations, this reduces repeated uploads and makes reuse easier.&lt;/p&gt;
&lt;h2 id=&#34;adding-files-to-a-new-chat&#34;&gt;Adding files to a new chat
&lt;/h2&gt;&lt;p&gt;In supported clients, you can open the attachment or add menu near the composer and choose &lt;code&gt;Add from library&lt;/code&gt;, then select a saved file.&lt;/p&gt;
&lt;p&gt;The Release Notes also mention Library and Recent files in the composer across Web, iOS, and Android. That means mobile clients can continue using saved or recent files too.&lt;/p&gt;
&lt;h2 id=&#34;finding-and-managing-files&#34;&gt;Finding and managing files
&lt;/h2&gt;&lt;p&gt;On the web, Library is available from the left sidebar. You can review uploaded and generated files, filter by type or source, and manage storage.&lt;/p&gt;
&lt;p&gt;The help page lists filters such as uploaded files, generated files, images, documents, spreadsheets, presentations, and PDFs.&lt;/p&gt;
&lt;p&gt;Storage management is available from &lt;code&gt;Settings &amp;gt; Storage&lt;/code&gt;, and files can also be deleted directly from Library.&lt;/p&gt;
&lt;h2 id=&#34;storage-by-plan&#34;&gt;Storage by plan
&lt;/h2&gt;&lt;p&gt;OpenAI&amp;rsquo;s May 14, 2026 Release Notes list these capacities:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Plan&lt;/th&gt;
          &lt;th&gt;File Library storage&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;This storage includes uploaded files and files created by ChatGPT, such as documents, spreadsheets, presentations, and images.&lt;/p&gt;
&lt;p&gt;For light users, 500 MB is enough for some PDFs, screenshots, and small documents. Heavy users should treat 20 GB or 100 GB more like a real working library and manage it regularly.&lt;/p&gt;
&lt;h2 id=&#34;per-file-limits&#34;&gt;Per-file limits
&lt;/h2&gt;&lt;p&gt;OpenAI&amp;rsquo;s help page lists these file limits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;files uploaded to GPTs or ChatGPT conversations can be up to 512 MB each;&lt;/li&gt;
&lt;li&gt;text and document files can contain up to 2 million tokens;&lt;/li&gt;
&lt;li&gt;CSV or spreadsheet files are usually around 50 MB, depending on row size;&lt;/li&gt;
&lt;li&gt;images can be up to 20 MB each.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are separate from account storage. Even if your account has free space, a single file cannot exceed its own limit.&lt;/p&gt;
&lt;h2 id=&#34;deleting-and-downloading&#34;&gt;Deleting and downloading
&lt;/h2&gt;&lt;p&gt;Files stay in your account until you delete them.&lt;/p&gt;
&lt;p&gt;In Library, select a file and use delete or the trash icon. OpenAI&amp;rsquo;s help page says deleted files are removed from the account immediately and scheduled for permanent deletion from OpenAI systems within 30 days, unless they have been de-identified and disconnected from the account or must be retained for security or legal obligations.&lt;/p&gt;
&lt;p&gt;Files can also be downloaded from Library. If you often ask ChatGPT to generate documents, spreadsheets, or presentations, download and cleanup will become normal maintenance.&lt;/p&gt;
&lt;h2 id=&#34;temporary-chat-does-not-save-files&#34;&gt;Temporary Chat does not save files
&lt;/h2&gt;&lt;p&gt;Files uploaded in Temporary Chat are not saved to your account or Library.&lt;/p&gt;
&lt;p&gt;This is important. File Library is designed for reuse; Temporary Chat is better for temporary, sensitive, or one-off tasks where you do not want long-term context.&lt;/p&gt;
&lt;p&gt;If a file is only for a quick question and should not be kept, use Temporary Chat. If you will reuse it, Library is more convenient.&lt;/p&gt;
&lt;h2 id=&#34;data-and-training-settings&#34;&gt;Data and training settings
&lt;/h2&gt;&lt;p&gt;OpenAI&amp;rsquo;s help page says files and chats follow your settings and data controls.&lt;/p&gt;
&lt;p&gt;If Memory is enabled, files and chats may help ChatGPT remember useful information across conversations. For consumer services, if &lt;code&gt;Improve the model for everyone&lt;/code&gt; is enabled, OpenAI may use content submitted to ChatGPT, including uploaded files, to improve model performance. This can be turned off in &lt;code&gt;Settings &amp;gt; Data Controls&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;File Library is not a local folder. It is a cloud account feature, so think carefully about which documents should be uploaded.&lt;/p&gt;
&lt;h2 id=&#34;good-and-bad-use-cases&#34;&gt;Good and bad use cases
&lt;/h2&gt;&lt;p&gt;Good fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analyzing the same PDFs or reports over time;&lt;/li&gt;
&lt;li&gt;reusing course materials, meeting notes, or product documents;&lt;/li&gt;
&lt;li&gt;continuing to edit files generated by ChatGPT;&lt;/li&gt;
&lt;li&gt;reusing the same source material across conversations;&lt;/li&gt;
&lt;li&gt;turning ChatGPT into a lightweight knowledge workspace.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Poor fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;highly sensitive identity documents, contracts, medical records, or financial statements;&lt;/li&gt;
&lt;li&gt;using it as a formal cloud backup;&lt;/li&gt;
&lt;li&gt;letting old files accumulate without cleanup;&lt;/li&gt;
&lt;li&gt;uploading company internal documents without checking data controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;my-take&#34;&gt;My take
&lt;/h2&gt;&lt;p&gt;The value of ChatGPT File Library is not just a file list. It changes ChatGPT from a one-off chat tool into a workspace with persistent materials.&lt;/p&gt;
&lt;p&gt;That also creates new habits: clean up old files, watch storage, distinguish normal chats from Temporary Chat, and review data controls.&lt;/p&gt;
&lt;p&gt;If you often use ChatGPT for documents, spreadsheets, and research materials, File Library saves time. If you only upload sensitive files occasionally, be more careful.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>Do Not Push API Keys to GitHub: A Secret-Leak Prevention Guide for AI Coding</title>
        <link>https://knightli.com/en/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;AI coding lowers the barrier to building software, but it also brings many engineering security problems to beginners and non-engineering users.&lt;/p&gt;
&lt;p&gt;One of the most common incidents is pushing &lt;code&gt;API Key&lt;/code&gt;, &lt;code&gt;Secret&lt;/code&gt;, &lt;code&gt;Token&lt;/code&gt;, database connection strings, or &lt;code&gt;.env&lt;/code&gt; files to a public repository. Locally, these files may look like ordinary configuration that keeps the app running. Once they enter a public GitHub repository, they become credentials that can be scanned, called, and abused automatically.&lt;/p&gt;
&lt;p&gt;Secret leaks are not rare. GitGuardian&amp;rsquo;s 2026 report says public GitHub commits in 2025 contained about 28.65 million new hardcoded credentials, and AI-service credential leaks grew 81% year over year. The issue is no longer just carelessness. AI coding, rapid prototyping, and public hosting are amplifying the scale.&lt;/p&gt;
&lt;h2 id=&#34;why-beginners-leak-keys-more-easily&#34;&gt;Why Beginners Leak Keys More Easily
&lt;/h2&gt;&lt;p&gt;Many AI agents and small tools have two &amp;ldquo;repositories&amp;rdquo;: one on the local disk, and one visible to the world on GitHub. The problem is that beginners often do not understand the boundary between the two.&lt;/p&gt;
&lt;p&gt;During local development, &lt;code&gt;config.json&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, and &lt;code&gt;settings.yaml&lt;/code&gt; may contain API keys. After &lt;code&gt;git add .&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, and &lt;code&gt;git push&lt;/code&gt;, those files may be uploaded in full. Once a repository is public, scanning bots do not need to understand your business logic. They only need to match a secret pattern.&lt;/p&gt;
&lt;p&gt;AI coding makes this worse:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AI-generated examples may place &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; directly in source code.&lt;/li&gt;
&lt;li&gt;Beginners often hardcode secrets in frontend code, scripts, or config files just to get the project running.&lt;/li&gt;
&lt;li&gt;Many vibe coding platforms can deploy apps directly without going through GitHub push protection.&lt;/li&gt;
&lt;li&gt;Users may not know which files, APIs, or default permissions exist inside an AI-generated project.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In short, AI can help you build something that runs faster. It does not automatically take over the security responsibility.&lt;/p&gt;
&lt;h2 id=&#34;gitignore-is-not-decoration&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; Is Not Decoration
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; manages version history, &lt;code&gt;GitHub&lt;/code&gt; hosts code, and &lt;code&gt;.gitignore&lt;/code&gt; tells Git which files should not enter that history.&lt;/p&gt;
&lt;p&gt;A basic AI project should at least ignore these:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;But &lt;code&gt;.gitignore&lt;/code&gt; alone is not enough. It only prevents untracked files from being added later. If a secret file has already been committed, adding it to &lt;code&gt;.gitignore&lt;/code&gt; will not remove it from history.&lt;/p&gt;
&lt;p&gt;A safer habit is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create &lt;code&gt;.gitignore&lt;/code&gt; at the beginning of a project.&lt;/li&gt;
&lt;li&gt;Store API keys only in environment variables or local config.&lt;/li&gt;
&lt;li&gt;Provide &lt;code&gt;.env.example&lt;/code&gt; with placeholders, not real secrets.&lt;/li&gt;
&lt;li&gt;Run a secret scanner before committing, such as &lt;code&gt;gitleaks&lt;/code&gt;, &lt;code&gt;trufflehog&lt;/code&gt;, or GitHub Secret Scanning.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;deleting-the-file-is-not-enough&#34;&gt;Deleting the File Is Not Enough
&lt;/h2&gt;&lt;p&gt;If a key has already been pushed to a public repository, the first reaction should not be &amp;ldquo;delete the file and commit again.&amp;rdquo; Revoke or rotate the key first.&lt;/p&gt;
&lt;p&gt;Git records history. Even if the latest commit removes the file, old commits, forks, clones, caches, and scanners may still contain it. GitHub&amp;rsquo;s documentation also recommends revoking or rotating passwords, tokens, and credentials as the first step.&lt;/p&gt;
&lt;p&gt;Recommended order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revoke the old key in the provider console and create a new one.&lt;/li&gt;
&lt;li&gt;Check billing, usage logs, suspicious IPs, and unusual traffic.&lt;/li&gt;
&lt;li&gt;Remove hardcoded secrets and switch to environment variables or a secret manager.&lt;/li&gt;
&lt;li&gt;Clean sensitive files from repository history with &lt;code&gt;git filter-repo&lt;/code&gt; or BFG.&lt;/li&gt;
&lt;li&gt;Enable GitHub Secret Scanning and Push Protection.&lt;/li&gt;
&lt;li&gt;Check CI/CD, deployment platforms, cloud functions, and frontend build artifacts for the old key.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For OpenAI, Anthropic, DeepSeek, cloud providers, payment services, email services, and databases, a leaked key can lead to more than unexpected bills. It may expose data, enable abuse, affect the supply chain, or get business accounts banned.&lt;/p&gt;
&lt;h2 id=&#34;real-secrets-do-not-belong-in-frontend-code&#34;&gt;Real Secrets Do Not Belong in Frontend Code
&lt;/h2&gt;&lt;p&gt;Many beginners put API keys into frontend JavaScript because the page works:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;This is effectively public. Browser code, network requests, source maps, and build artifacts can all be inspected. Any key that must remain secret should not appear on the client side.&lt;/p&gt;
&lt;p&gt;The correct approach is to let the frontend call your own backend, and let the backend read environment variables and call the third-party 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;Then the server uses the environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;This keeps the secret in the server environment instead of exposing it to every visitor.&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-does-not-remove-security-responsibility&#34;&gt;Vibe Coding Does Not Remove Security Responsibility
&lt;/h2&gt;&lt;p&gt;Vibe coding is not only a GitHub leak problem. Many apps are published directly from AI coding platforms to the public internet, bypassing traditional code review, repository scanning, and security testing.&lt;/p&gt;
&lt;p&gt;Recent RedAccess research found a large number of publicly accessible assets generated or hosted by AI coding tools, some exposing corporate data, personal information, or internal files. The lesson is simple: when &amp;ldquo;can deploy&amp;rdquo; becomes too easy, people often forget to ask &amp;ldquo;should this be public?&amp;rdquo;, &amp;ldquo;should this only be internal?&amp;rdquo;, and &amp;ldquo;does it have access control?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Before publishing an AI-generated app, ask:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Does this app really need public access?&lt;/li&gt;
&lt;li&gt;Does it have login, authentication, and permission isolation?&lt;/li&gt;
&lt;li&gt;Are database URLs, API keys, tokens, or webhook URLs exposed in frontend code?&lt;/li&gt;
&lt;li&gt;Are third-party API quota, domain, permission, and expiry limits configured?&lt;/li&gt;
&lt;li&gt;Can keys be disabled and deployments rolled back quickly after an incident?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI-generated code still needs security review. The less code you personally wrote, the less you should assume it is safe.&lt;/p&gt;
&lt;h2 id=&#34;checks-to-run-now&#34;&gt;Checks to Run Now
&lt;/h2&gt;&lt;p&gt;Start with your own GitHub account. Search your username together with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If you find a real key, rotate first and clean up later. If it ever entered a public repository, treat it as leaked.&lt;/p&gt;
&lt;p&gt;For future AI projects, use a fixed process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write &lt;code&gt;.gitignore&lt;/code&gt; before writing business code.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;.env.example&lt;/code&gt; to document required variables.&lt;/li&gt;
&lt;li&gt;Put all secrets in environment variables, not source code.&lt;/li&gt;
&lt;li&gt;Give API keys minimal permissions, quotas, and expiry dates.&lt;/li&gt;
&lt;li&gt;Enable GitHub Secret Scanning and Push Protection.&lt;/li&gt;
&lt;li&gt;Let AI help with a security review before publishing, but do not trust AI alone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The danger of AI coding is not simply that it may write bad code. It gives many people the ability to publish unsafe apps to the public internet for the first time. Writing fast is not the problem. Handing out secrets, data, and permissions is.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 Local Deployment Guide: Build a Free AI Coding Assistant with CC Switch</title>
        <link>https://knightli.com/en/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/en/2026/05/15/claude-code-ollama-cc-switch-local-agent/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; has become a popular AI coding assistant recently. Its appeal is not just that it can chat about code, but that it can read a project, modify files, run commands, install dependencies, and keep fixing errors in an agent-like workflow.&lt;/p&gt;
&lt;p&gt;The hard part is cost. Once a project grows, long context and repeated agent turns can burn through API quota quickly. If you just want to experiment, refactor small utilities, generate scripts, or work on a private local project, it is natural to ask: can Claude Code&amp;rsquo;s workflow be kept while the model runs locally?&lt;/p&gt;
&lt;p&gt;The key tool in this setup is &lt;code&gt;CC Switch&lt;/code&gt;. It lets Claude Code connect to the local &lt;code&gt;Ollama&lt;/code&gt; service through an OpenAI-compatible API endpoint, so requests can be forwarded to a local model instead of the official Claude API.&lt;/p&gt;
&lt;h2 id=&#34;what-this-setup-solves&#34;&gt;What This Setup Solves
&lt;/h2&gt;&lt;p&gt;You can think of the whole setup as:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 desktop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ CC Switch API forwarding layer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Ollama local 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;Claude Code is still responsible for the coding workflow and project operations. CC Switch handles model provider configuration and API compatibility. Ollama runs the model locally.&lt;/p&gt;
&lt;p&gt;This does not make a local model suddenly become Claude. Its real value is that it makes Claude Code&amp;rsquo;s agent workflow usable in lower-cost, offline, and private local scenarios.&lt;/p&gt;
&lt;h2 id=&#34;basic-preparation&#34;&gt;Basic Preparation
&lt;/h2&gt;&lt;p&gt;Before you start, prepare these pieces:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;Git&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;Ollama&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Pull a local model suitable for coding.&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;CC Switch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Have Claude Code available on your machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For the model side, you can start with coding-oriented models, such as Qwen Coder, DeepSeek Coder, or other models with decent tool-calling and code generation behavior. The larger the model, the better the result may be, but memory and GPU pressure will also rise.&lt;/p&gt;
&lt;p&gt;If your machine only has limited memory, start with a smaller model first. Confirm that the workflow runs smoothly before trying a larger one.&lt;/p&gt;
&lt;h2 id=&#34;key-cc-switch-configuration&#34;&gt;Key CC Switch Configuration
&lt;/h2&gt;&lt;p&gt;After Ollama starts, its default local API address is usually:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In CC Switch, choose an OpenAI-compatible provider type, commonly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then point the base URL to Ollama&amp;rsquo;s local address.&lt;/p&gt;
&lt;p&gt;For the API key field, local Ollama normally does not need a real key, but many tools still require an environment variable or placeholder. You can use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;or another placeholder variable accepted by your local setup.&lt;/p&gt;
&lt;p&gt;One configuration item is worth special attention:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This means mapping Claude Code&amp;rsquo;s expected model roles to the local provider. In practice, you need to bind &lt;code&gt;haiku&lt;/code&gt;, &lt;code&gt;sonnet&lt;/code&gt;, and &lt;code&gt;opus&lt;/code&gt; to the model names exposed by Ollama or CC Switch. If this mapping is wrong, Claude Code may fail to call the model or may keep falling back to an unexpected configuration.&lt;/p&gt;
&lt;h2 id=&#34;where-claude-code-is-strong&#34;&gt;Where Claude Code Is Strong
&lt;/h2&gt;&lt;p&gt;Claude Code&amp;rsquo;s biggest advantage is not raw completion. It is the full coding workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reading and understanding project structure;&lt;/li&gt;
&lt;li&gt;locating related files based on a task;&lt;/li&gt;
&lt;li&gt;editing code directly;&lt;/li&gt;
&lt;li&gt;running commands and tests;&lt;/li&gt;
&lt;li&gt;observing errors and iterating;&lt;/li&gt;
&lt;li&gt;completing multi-step tasks in one session.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is why many people want to keep Claude Code even when switching to a local model. A normal chat UI can generate code snippets, but it does not naturally operate inside a repository. Claude Code is closer to an executable development assistant.&lt;/p&gt;
&lt;h2 id=&#34;what-role-ollama-plays-here&#34;&gt;What Role Ollama Plays Here
&lt;/h2&gt;&lt;p&gt;Ollama is responsible for local model runtime and management. It handles model downloading, loading, and local inference.&lt;/p&gt;
&lt;p&gt;The advantage is clear: requests stay on your machine, repeated use does not create API bills, and you can use it when the network is limited. For private code, this is also easier to accept than sending every context window to a cloud model.&lt;/p&gt;
&lt;p&gt;The trade-off is also clear. Local models depend heavily on your hardware and on model quality. A smaller model can handle simple edits, explanations, and script generation, but it may struggle with large cross-file refactors or subtle architectural decisions.&lt;/p&gt;
&lt;h2 id=&#34;where-the-experience-has-boundaries&#34;&gt;Where The Experience Has Boundaries
&lt;/h2&gt;&lt;p&gt;This setup should not be treated as a full replacement for Claude&amp;rsquo;s strongest cloud models.&lt;/p&gt;
&lt;p&gt;You may run into these issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;weaker long-context understanding;&lt;/li&gt;
&lt;li&gt;unstable tool-calling behavior in complex tasks;&lt;/li&gt;
&lt;li&gt;slower inference on CPU-only machines;&lt;/li&gt;
&lt;li&gt;more hallucinated file paths or APIs;&lt;/li&gt;
&lt;li&gt;less reliable multi-round planning;&lt;/li&gt;
&lt;li&gt;lower success rate on large repository refactors.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the better expectation is: use it as a free local development assistant, not as a perfect substitute for a top-tier cloud model.&lt;/p&gt;
&lt;h2 id=&#34;multimodal-compatibility-is-still-unstable&#34;&gt;Multimodal Compatibility Is Still Unstable
&lt;/h2&gt;&lt;p&gt;Some users want Claude Code to handle screenshots, UI images, diagrams, or other multimodal inputs. This part depends on the local model and the forwarding layer.&lt;/p&gt;
&lt;p&gt;If the selected Ollama model does not support vision, or CC Switch does not translate the request format correctly, multimodal features may fail. Even with a vision model, behavior may differ from Claude&amp;rsquo;s official API.&lt;/p&gt;
&lt;p&gt;For now, this setup is more suitable for text and code workflows. Treat multimodal support as experimental.&lt;/p&gt;
&lt;h2 id=&#34;who-should-try-it&#34;&gt;Who Should Try It
&lt;/h2&gt;&lt;p&gt;This setup is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;developers who want to try Claude Code&amp;rsquo;s workflow at low cost;&lt;/li&gt;
&lt;li&gt;users who frequently write scripts, small tools, and automation snippets;&lt;/li&gt;
&lt;li&gt;teams that want to keep code on local machines;&lt;/li&gt;
&lt;li&gt;learners who want an AI coding assistant without constant API spend;&lt;/li&gt;
&lt;li&gt;people testing different local coding models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable if you rely heavily on long context, large monorepos, strict code review quality, or complex full-project refactors.&lt;/p&gt;
&lt;h2 id=&#34;usage-advice&#34;&gt;Usage Advice
&lt;/h2&gt;&lt;p&gt;Start with small tasks.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;explain a single file;&lt;/li&gt;
&lt;li&gt;refactor a small function;&lt;/li&gt;
&lt;li&gt;generate a shell script;&lt;/li&gt;
&lt;li&gt;fix a simple error;&lt;/li&gt;
&lt;li&gt;add a small feature;&lt;/li&gt;
&lt;li&gt;write unit tests for a narrow module.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After each change, run tests or at least review the diff yourself. A local model can be useful, but you should not blindly accept every generated edit.&lt;/p&gt;
&lt;p&gt;If the model keeps losing context, reduce the task scope. Instead of asking it to &amp;ldquo;refactor the whole project&amp;rdquo;, ask it to &amp;ldquo;refactor this function&amp;rdquo; or &amp;ldquo;add validation in this file&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Code + CC Switch + Ollama&lt;/code&gt; is an interesting combination. It keeps Claude Code&amp;rsquo;s agent-style development workflow while moving inference to a local model.&lt;/p&gt;
&lt;p&gt;Its biggest strengths are lower cost, local privacy, and a smooth development workflow. Its limits are also obvious: model quality, hardware performance, long context, and tool-calling stability all affect the final experience.&lt;/p&gt;
&lt;p&gt;If you already use Ollama and want a more practical local AI coding workflow, this setup is worth trying. Just remember to start small, verify every change, and treat the local model as an assistant rather than an automatic engineer.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>OpenHuman Quick Read: The Desktop Route for an Open-Source Personal AI Agent</title>
        <link>https://knightli.com/en/2026/05/15/openhuman-open-source-personal-ai-agent/</link>
        <pubDate>Fri, 15 May 2026 14:52:31 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/openhuman-open-source-personal-ai-agent/</guid>
        <description>&lt;p&gt;OpenHuman is an open-source personal AI Agent project from tinyhumansai. Its goal is not to build yet another chat window, but to place a desktop app, personal memory, third-party integrations, voice, coding tools, and a local knowledge base into the same agent harness, so AI can understand your daily work context faster.&lt;/p&gt;
&lt;p&gt;The project README positions it as &amp;ldquo;Personal AI super intelligence,&amp;rdquo; and the official site emphasizes private, simple, and extremely powerful. That claim is ambitious, but it is more useful to break it down: the part of OpenHuman that deserves attention is its attempt to make &amp;ldquo;personal context&amp;rdquo; the product core, instead of leaving model calls, plugin configuration, and document retrieval for users to assemble themselves.&lt;/p&gt;
&lt;p&gt;At the time this article was checked, the GitHub repository had about 7.8k stars and 629 forks. The latest release was &lt;code&gt;OpenHuman v0.53.43&lt;/code&gt;, dated May 13, 2026. The project is still in Early Beta, and the README clearly warns that it is under active development, so rough edges should be expected.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-is-it-trying-to-solve&#34;&gt;What Problem Is It Trying to Solve?
&lt;/h2&gt;&lt;p&gt;The problem with many AI assistants is not that the model is too weak, but that the context is too cold. Every time, you have to explain the project background, recent emails, calendar, code repositories, documents, tasks, and preferences again. Once you move across Gmail, Notion, GitHub, Slack, Calendar, Drive, Linear, Jira, and similar systems, the information is scattered across different tools.&lt;/p&gt;
&lt;p&gt;OpenHuman&amp;rsquo;s approach is to connect those data sources first, then use automatic fetching, compression, summarization, and a local knowledge base to build a personal memory layer that can keep updating. The agent then remembers more than the current conversation; it can form long-term context around your workflow.&lt;/p&gt;
&lt;p&gt;This is also the biggest difference between it and a normal chatbot. Chatbots often work around prompts; OpenHuman is closer to a desktop personal operating-system entry point, trying to prepackage connectors, memory, tools, and model routing.&lt;/p&gt;
&lt;h2 id=&#34;main-capabilities&#34;&gt;Main Capabilities
&lt;/h2&gt;&lt;p&gt;Core capabilities listed in the OpenHuman README include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A desktop-first UI and a short onboarding path, without requiring users to start from terminal configuration.&lt;/li&gt;
&lt;li&gt;A desktop mascot with a &amp;ldquo;face&amp;rdquo; that can speak, respond to the environment, and participate in Google Meet.&lt;/li&gt;
&lt;li&gt;118+ third-party integrations covering Gmail, Notion, GitHub, Slack, Stripe, Calendar, Drive, Linear, Jira, and other tools.&lt;/li&gt;
&lt;li&gt;An automatic fetching mechanism: the project description mentions traversing active connections every 20 minutes and pulling new data into the memory tree.&lt;/li&gt;
&lt;li&gt;Memory Tree: compresses connected data and activity information into Markdown blocks and stores them in local SQLite.&lt;/li&gt;
&lt;li&gt;Obsidian-compatible vault: writes knowledge blocks as &lt;code&gt;.md&lt;/code&gt; files so users can open, browse, and edit them with Obsidian.&lt;/li&gt;
&lt;li&gt;Built-in search, web scraping, coding tools, file system access, git, lint, test, grep, voice input and output, and other capabilities.&lt;/li&gt;
&lt;li&gt;Model routing: routes requests to different model types according to the task.&lt;/li&gt;
&lt;li&gt;TokenJuice: compresses token usage before tool results, web pages, email bodies, and search results enter the LLM.&lt;/li&gt;
&lt;li&gt;Optional Ollama support for local AI workloads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities sound broad, but the real focus can be reduced to two points: reducing configuration and plugin assembly, and turning your personal data into memory that an agent can search, compress, and continuously update.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The project provides a website download entry point and terminal installation commands.&lt;/p&gt;
&lt;p&gt;macOS or 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;If this is your daily primary machine, it is better to download the installer from the official site first, or at least open and inspect the install script before deciding whether to execute a remote script directly. OpenHuman touches email, documents, code repositories, calendars, and local file permissions, so installation and authorization deserve more caution than a small ordinary utility.&lt;/p&gt;
&lt;h2 id=&#34;open-source-and-technical-stack&#34;&gt;Open Source and Technical Stack
&lt;/h2&gt;&lt;p&gt;The OpenHuman repository uses the GPL-3.0 license. The language breakdown shows Rust as the main language, followed by TypeScript, with JavaScript, Shell, CSS, and PowerShell also present. The README&amp;rsquo;s contribution notes require Node.js 24+, pnpm 10.10.0, Rust 1.93.0, CMake, and platform-specific desktop build dependencies.&lt;/p&gt;
&lt;p&gt;The rough local development path is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Before submitting changes, focused checks are recommended, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Judging from the repository structure, this is not a lightweight script project. It is a full product-style repository containing a desktop app, frontend, Rust backend, docs, tests, examples, and build scripts.&lt;/p&gt;
&lt;h2 id=&#34;why-memory-tree-and-the-obsidian-vault-matter&#34;&gt;Why Memory Tree and the Obsidian Vault Matter
&lt;/h2&gt;&lt;p&gt;The concept most worth examining in OpenHuman is Memory Tree. The README says it standardizes connected data into Markdown chunks of up to about 3k tokens, scores them, folds them into a hierarchical summary tree, and stores them in local SQLite. The same content also enters an Obsidian-compatible vault.&lt;/p&gt;
&lt;p&gt;This route has several advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users can directly see the agent&amp;rsquo;s knowledge base instead of only trusting black-box memory.&lt;/li&gt;
&lt;li&gt;Markdown files are convenient for search, backup, version control, and manual revision.&lt;/li&gt;
&lt;li&gt;SQLite is suitable for local indexing and fast queries.&lt;/li&gt;
&lt;li&gt;Hierarchical summaries are better suited to long-term context compression than a flat pile of documents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But it also has practical challenges: whether data sync is stable, whether summaries drop key details, whether permission boundaries are clear enough, whether deletion and undo are complete, and whether different connectors&amp;rsquo; semantics can be handled consistently. These are not solved by one README phrase like &amp;ldquo;remembers everything&amp;rdquo;; they require long-term use and auditing.&lt;/p&gt;
&lt;h2 id=&#34;tokenjuice-a-middle-layer-for-cost-and-latency&#34;&gt;TokenJuice: A Middle Layer for Cost and Latency
&lt;/h2&gt;&lt;p&gt;OpenHuman also emphasizes TokenJuice. Its role is to compress web pages, emails, search results, and tool-call results before they enter the model. Examples include converting HTML to Markdown, shortening long URLs, and removing some unnecessary characters. The README claims this can reduce cost and latency, with up to 80% lower token usage.&lt;/p&gt;
&lt;p&gt;The direction is reasonable. In agent systems, the truly expensive part is often not one chat turn, but background fetching, tool calls, search, web parsing, and long-context injection. Cleaning data before handing it to the model is usually steadier than directly stuffing raw content into context.&lt;/p&gt;
&lt;p&gt;However, a compression layer also creates new questions: it decides which information is kept and which is discarded. If you use it for contracts, bills, medical records, compliance material, or production incident logs, you cannot look only at token savings. You also need traceability, original-text review, and compression-error control.&lt;/p&gt;
&lt;h2 id=&#34;privacy-a-selling-point-and-an-audit-focus&#34;&gt;Privacy: A Selling Point and an Audit Focus
&lt;/h2&gt;&lt;p&gt;One of OpenHuman&amp;rsquo;s selling points is privacy. The official site mentions that local AI models can handle low-level tasks, and the README emphasizes that workflow data stays on device, is encrypted locally, and is treated as yours.&lt;/p&gt;
&lt;p&gt;This design direction is attractive because once a personal AI Agent connects to Gmail, Drive, Calendar, Slack, and GitHub, it touches the most sensitive work data. Compared with a fully cloud-based assistant, a local-first memory layer and a visible Markdown vault at least give users more sense of control.&lt;/p&gt;
&lt;p&gt;But the full picture matters: OpenHuman also mentions one subscription, 30+ providers, model routing, ElevenLabs TTS, OAuth integrations, and other capabilities. That means it is not a purely offline tool. To evaluate privacy seriously, you need to check what each connector, each kind of model call, and each voice or search capability sends, and where it sends it.&lt;/p&gt;
&lt;h2 id=&#34;who-should-pay-attention&#34;&gt;Who Should Pay Attention?
&lt;/h2&gt;&lt;p&gt;OpenHuman is currently more suitable for three groups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Users who want a personal AI control desk rather than a single-purpose chatbot.&lt;/li&gt;
&lt;li&gt;Developers willing to try an Early Beta and accept changing features and rough edges.&lt;/li&gt;
&lt;li&gt;People interested in local memory, Obsidian workflows, agent connectors, and context compression.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you only want a stable, lightweight offline assistant with very simple privacy boundaries, it may be too heavy right now. If you want to study how the next generation of personal AI Agents might integrate desktop apps, connectors, memory, and tools, OpenHuman is an open-source sample worth tracking.&lt;/p&gt;
&lt;p&gt;My suggestion is to first treat it as a &amp;ldquo;product-style open-source experiment&amp;rdquo;: watch release cadence, issue quality, connector permissions, data export capability, deletion mechanisms, and readability of the local vault. The key question for personal AI is not only whether it can answer questions, but whether it can carry your context for the long term in a transparent and controllable way.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 official site&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: an Agent Skill for turning articles into screen-recordable web videos</title>
        <link>https://knightli.com/en/2026/05/15/web-video-presentation-agent-skill/</link>
        <pubDate>Fri, 15 May 2026 09:02:15 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/web-video-presentation-agent-skill/</guid>
        <description>&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; is an agent skill in &lt;code&gt;ConardLi/garden-skills&lt;/code&gt;. It solves a concrete problem: turn an article or narration script into a web-based presentation that can be recorded as a video.&lt;/p&gt;
&lt;p&gt;Project: &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;It is not a normal slide template or a React component library. It is a production process for AI agents: rewrite content into narration, turn it into an outline, choose a theme, build a 16:9 click-driven Vite + React + TypeScript web surface, then record it.&lt;/p&gt;
&lt;h2 id=&#34;it-is-not-trying-to-make-slides&#34;&gt;It is not trying to make slides
&lt;/h2&gt;&lt;p&gt;The README makes an important distinction: the skill generates a &amp;ldquo;video production surface&amp;rdquo;, not a slide deck.&lt;/p&gt;
&lt;p&gt;Each click advances a narration beat. Each step owns a 1920×1080 stage. The UI progress controls stay hidden unless hovered, making recordings clean.&lt;/p&gt;
&lt;p&gt;It is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turning blog posts into YouTube or Bilibili-style explainers&lt;/li&gt;
&lt;li&gt;Building visuals for narration scripts&lt;/li&gt;
&lt;li&gt;Product demos&lt;/li&gt;
&lt;li&gt;Tutorial videos&lt;/li&gt;
&lt;li&gt;Keynote-style visual talks&lt;/li&gt;
&lt;li&gt;Dynamic presentations that do not feel like PowerPoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value is not replacing video editing software. It makes the browser a controllable, iterative video canvas.&lt;/p&gt;
&lt;h2 id=&#34;core-principles&#34;&gt;Core principles
&lt;/h2&gt;&lt;p&gt;The skill has several clear principles.&lt;/p&gt;
&lt;p&gt;First, a fixed 16:9 stage. Design happens in a stable &lt;code&gt;1920×1080&lt;/code&gt; coordinate system, then scales to the viewport. This prevents layout drift during recording.&lt;/p&gt;
&lt;p&gt;Second, a global step cursor. Clicks and keyboard input advance &lt;code&gt;(chapter, step)&lt;/code&gt; and save progress locally. It behaves like a video timeline, but controlled through web state.&lt;/p&gt;
&lt;p&gt;Third, one idea per step. Every beat should have its own visual moment, not just more bullets on the same page.&lt;/p&gt;
&lt;p&gt;Fourth, narration drives structure. The script defines rhythm; the outline defines chapters and steps; visuals follow the story.&lt;/p&gt;
&lt;p&gt;Fifth, motion first. Each scene should have a moving visual anchor. If it is only static text, it has not become video language yet.&lt;/p&gt;
&lt;p&gt;Sixth, theme tokens. A theme is not just colors; it controls typography, colors, cards, background, separators, decoration, and tone through semantic tokens.&lt;/p&gt;
&lt;h2 id=&#34;four-part-workflow&#34;&gt;Four-part workflow
&lt;/h2&gt;&lt;p&gt;The workflow has four stages.&lt;/p&gt;
&lt;p&gt;First is content writing. If the user provides an article, the agent rewrites it into &lt;code&gt;script.md&lt;/code&gt;, then creates &lt;code&gt;outline.md&lt;/code&gt;. If the user already provides a narration script, it saves it as &lt;code&gt;script.md&lt;/code&gt; and generates the outline.&lt;/p&gt;
&lt;p&gt;Second is web development. The agent scaffolds a Vite / React / TypeScript project and implements scenes chapter by chapter. Chapter 1 must be completed by the main thread and approved by the user, because it becomes the style anchor.&lt;/p&gt;
&lt;p&gt;Third is optional audio generation. The skill can extract narration definitions from each chapter&amp;rsquo;s &lt;code&gt;narrations.ts&lt;/code&gt; and run a voice synthesis flow.&lt;/p&gt;
&lt;p&gt;Fourth is recording and post-production. The web app is the recording stage; the user records the click-driven presentation.&lt;/p&gt;
&lt;p&gt;The process has hard checkpoints: script, outline, theme, asset plan, and development mode must be aligned first; chapter 1 must be reviewed; audio generation must also be confirmed.&lt;/p&gt;
&lt;h2 id=&#34;why-outline-should-not-define-animation&#34;&gt;Why outline should not define animation
&lt;/h2&gt;&lt;p&gt;One interesting constraint is that &lt;code&gt;outline.md&lt;/code&gt; plans rhythm and information density, but not concrete animations.&lt;/p&gt;
&lt;p&gt;It may describe chapters, step count, screen content, information pools, asset plans, and estimated duration. It should not define CSS animation type, timing, clip-path, or filter implementation.&lt;/p&gt;
&lt;p&gt;The reason is good: if outline locks animation, later implementation becomes mechanical. Video feeling should be designed per chapter based on content relationships.&lt;/p&gt;
&lt;h2 id=&#34;narrationsts-as-the-source-of-truth&#34;&gt;narrations.ts as the source of truth
&lt;/h2&gt;&lt;p&gt;Each chapter has a &lt;code&gt;narrations.ts&lt;/code&gt;. It stores the step count and corresponding narration text. The skill requires the maximum step used in the chapter &lt;code&gt;.tsx&lt;/code&gt; to align with &lt;code&gt;narrations.length&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This prevents drift across &lt;code&gt;script.md&lt;/code&gt;, &lt;code&gt;outline.md&lt;/code&gt;, chapter code, &lt;code&gt;chapters.ts&lt;/code&gt;, and audio files. For video production, keeping narration, screen, audio, and step count aligned is essential.&lt;/p&gt;
&lt;h2 id=&#34;themes-are-more-than-skins&#34;&gt;Themes are more than skins
&lt;/h2&gt;&lt;p&gt;Built-in themes include &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;, and &lt;code&gt;monochrome-print&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;These are not just color swaps. They define different visual languages: print, keynote, blueprint, terminal, newsroom, and so on.&lt;/p&gt;
&lt;p&gt;During planning, the agent should recommend two or three themes based on the topic and tone. The user can also request a custom theme.&lt;/p&gt;
&lt;h2 id=&#34;three-development-modes&#34;&gt;Three development modes
&lt;/h2&gt;&lt;p&gt;Chapter 1 is always built by the main thread and reviewed first. After that, there are three modes.&lt;/p&gt;
&lt;p&gt;Mode A: chapter-by-chapter confirmation. Lowest risk and best quality control.&lt;/p&gt;
&lt;p&gt;Mode B: sequential development. The main thread builds remaining chapters and reviews at the end.&lt;/p&gt;
&lt;p&gt;Mode C: parallel development. After chapter 1 approval, subagents build later chapters in parallel. It is fastest, but visual differences may appear. Theme tokens provide consistency while each chapter can still have its own expression.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who should use it
&lt;/h2&gt;&lt;p&gt;This skill is best for people who already have content: an article, script, product description, tutorial, or technical explanation.&lt;/p&gt;
&lt;p&gt;If the user has no topic or material, the agent should ask for source content. This is not an ideation tool; it is a content-to-video production flow.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;web-video-presentation&lt;/code&gt; is valuable because it turns content video production into a collaborative, reviewable, reusable workflow.&lt;/p&gt;
&lt;p&gt;It connects article, narration, outline, theme, chapter implementation, audio, and recording, while hard checkpoints prevent the agent from running away.&lt;/p&gt;
&lt;p&gt;Even if you do not use its scaffold, ideas like &amp;ldquo;one step, one idea&amp;rdquo;, &amp;ldquo;chapter 1 as style anchor&amp;rdquo;, &amp;ldquo;&lt;code&gt;narrations.ts&lt;/code&gt; as source of truth&amp;rdquo;, and &amp;ldquo;outline does not hard-code animation&amp;rdquo; are worth borrowing.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt-Vault: a prompt specification library for testing AI coding ability</title>
        <link>https://knightli.com/en/2026/05/15/prompt-vault-coding-prompt-benchmark/</link>
        <pubDate>Fri, 15 May 2026 09:00:52 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/prompt-vault-coding-prompt-benchmark/</guid>
        <description>&lt;p&gt;&lt;code&gt;w512/Prompt-Vault&lt;/code&gt; is a small but useful prompt repository. It does not collect magic prompts; it organizes executable coding prompts into difficulty levels so they can be used to test LLMs and coding agents.&lt;/p&gt;
&lt;p&gt;Project: &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;The repository is small, but the structure is clear: &lt;code&gt;Easy&lt;/code&gt;, &lt;code&gt;Medium&lt;/code&gt;, and &lt;code&gt;Hard&lt;/code&gt;. Each Markdown file is a standalone task. The README also says these prompts are suitable for testing language models or practicing small projects.&lt;/p&gt;
&lt;h2 id=&#34;not-a-prompt-scrapbook&#34;&gt;Not a prompt scrapbook
&lt;/h2&gt;&lt;p&gt;Many prompt repositories look large but are hard to evaluate. The titles are attractive, but the prompts lack acceptance criteria.&lt;/p&gt;
&lt;p&gt;Prompt-Vault is closer to a specification library. Each task tries to describe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What app to build&lt;/li&gt;
&lt;li&gt;Required features&lt;/li&gt;
&lt;li&gt;UI style&lt;/li&gt;
&lt;li&gt;Technical constraints&lt;/li&gt;
&lt;li&gt;Whether it must run as a single file&lt;/li&gt;
&lt;li&gt;Whether dependencies are allowed&lt;/li&gt;
&lt;li&gt;Whether data should persist&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is much better for testing models than &amp;ldquo;make a nice Kanban board&amp;rdquo;, because it reveals whether the model truly understands requirements.&lt;/p&gt;
&lt;h2 id=&#34;easy-basic-interaction&#34;&gt;Easy: basic interaction
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Easy/Bubble_Sort_Visualizer.md&lt;/code&gt; asks for a single-file &lt;code&gt;index.html&lt;/code&gt; that visualizes bubble sort with bars, start/reset buttons, a speed slider, comparison count, and a dark theme.&lt;/p&gt;
&lt;p&gt;It tests whether a model can connect algorithm state to UI, control animation timing, handle reset and running states, and keep the code readable.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Easy/ToDo_List.md&lt;/code&gt; starts from static HTML and gradually adds task creation, completed state, deletion, counters, Active / Completed stats, and &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is a simple task, but it tests whether a model can evolve code step by step instead of dumping a messy implementation.&lt;/p&gt;
&lt;h2 id=&#34;medium-state-and-animation-complexity&#34;&gt;Medium: state and animation complexity
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Medium/Sorting_Visualization.md&lt;/code&gt; upgrades the challenge. The same page must support Bubble Sort, Insertion Sort, Selection Sort, Merge Sort, Quick Sort, and Heap Sort.&lt;/p&gt;
&lt;p&gt;It also needs algorithm selection, speed and size sliders, reset, start / pause, and a live stats panel.&lt;/p&gt;
&lt;p&gt;This catches many failures: an agent may implement one bubble sort animation, but multiple algorithms plus pause/resume and stats often break state management.&lt;/p&gt;
&lt;p&gt;Useful checks include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does every algorithm really sort?&lt;/li&gt;
&lt;li&gt;Does the animation match the algorithm steps?&lt;/li&gt;
&lt;li&gt;Can it pause and resume?&lt;/li&gt;
&lt;li&gt;Does reset stop old animation loops?&lt;/li&gt;
&lt;li&gt;Does changing array size break state?&lt;/li&gt;
&lt;li&gt;Are the statistics credible?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;hard-product-completeness&#34;&gt;Hard: product completeness
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Hard/Kanban_Board.md&lt;/code&gt; asks for a complete board: default columns, custom columns, double-click rename, delete empty columns, cards with title and description, priority, deadline, drag-and-drop, search, priority filter, &lt;code&gt;localStorage&lt;/code&gt;, footer stats, glassmorphism dark theme, and responsive horizontal scrolling.&lt;/p&gt;
&lt;p&gt;This tests product completeness, not just one feature.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Hard/Markdown_Editor_Desktop.md&lt;/code&gt; asks for a Tauri 2 cross-platform Markdown editor. It includes split editing and preview, sync scrolling, live rendering, preview mode, focus mode, open/save/save-as, unsaved title markers, formatting toolbar, shortcuts, themes, font settings, Vue 3, Pinia, &lt;code&gt;marked.js&lt;/code&gt;, &lt;code&gt;prism.js&lt;/code&gt;, and Tauri plugins.&lt;/p&gt;
&lt;p&gt;This is no longer a simple web prompt. It tests frontend state, Tauri plugins, filesystem permissions, IPC boundaries, and desktop packaging.&lt;/p&gt;
&lt;h2 id=&#34;why-it-is-valuable&#34;&gt;Why it is valuable
&lt;/h2&gt;&lt;p&gt;Prompt-Vault is valuable because it provides reusable evaluation samples.&lt;/p&gt;
&lt;p&gt;If you compare models or coding agents, you can run the same prompt repeatedly and observe:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which model follows constraints&lt;/li&gt;
&lt;li&gt;Which model misses fewer features&lt;/li&gt;
&lt;li&gt;Which model handles edge cases&lt;/li&gt;
&lt;li&gt;Which output is easier to maintain&lt;/li&gt;
&lt;li&gt;Which model is better at UI details&lt;/li&gt;
&lt;li&gt;Which model is stable under single-file constraints&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more reliable than &amp;ldquo;it feels smarter&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Frontend tasks are especially useful because many failures are not syntax errors. They are missing button states, broken animation, lost persistence, wrong drag targets, or stale statistics.&lt;/p&gt;
&lt;h2 id=&#34;how-to-extend-it&#34;&gt;How to extend it
&lt;/h2&gt;&lt;p&gt;The repository could become a stronger benchmark by adding acceptance checklists, failure cases, scoring dimensions, reference implementations, and cross-model result records.&lt;/p&gt;
&lt;p&gt;For example, a sorting task should include checks such as &amp;ldquo;rapid Start / Reset clicks must not create multiple animation loops.&amp;rdquo; A Kanban task should specify what happens when deleting a non-empty column.&lt;/p&gt;
&lt;p&gt;These details make the prompt useful for human review and automated agent evaluation.&lt;/p&gt;
&lt;h2 id=&#34;suggested-use&#34;&gt;Suggested use
&lt;/h2&gt;&lt;p&gt;To test an AI coding tool:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Give one prompt unchanged.&lt;/li&gt;
&lt;li&gt;Do not add extra hints.&lt;/li&gt;
&lt;li&gt;Run the generated result.&lt;/li&gt;
&lt;li&gt;Check features one by one.&lt;/li&gt;
&lt;li&gt;Record missing features and bugs.&lt;/li&gt;
&lt;li&gt;Give one repair round.&lt;/li&gt;
&lt;li&gt;Compare time, token cost, and final code quality.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is closer to real development than simply checking whether a page appears.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Prompt-Vault is a lightweight prompt specification library. It is useful for AI coding tests and for frontend practice projects.&lt;/p&gt;
&lt;p&gt;It reminds us that a good coding prompt is not just a wish. It should define requirements, constraints, interactions, state, acceptance, and run mode.&lt;/p&gt;
&lt;p&gt;If you compare Codex, Claude Code, Cursor, Gemini CLI, or other coding agents, this kind of leveled prompt is worth keeping.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What is Token Efficiency? DeepSeek V4, big-model planning, and small-model execution</title>
        <link>https://knightli.com/en/2026/05/15/token-efficiency-agent-orchestration/</link>
        <pubDate>Fri, 15 May 2026 08:59:33 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/token-efficiency-agent-orchestration/</guid>
        <description>&lt;p&gt;The next important metric for AI coding may not be who has the strongest model, but who can complete more verifiable work with fewer tokens, lower cost, and a more stable process.&lt;/p&gt;
&lt;p&gt;That is the value of Token Efficiency.&lt;/p&gt;
&lt;p&gt;Many people hear Token Efficiency and think only about cheaper models, longer context, or cheaper cache hits. Those are base conditions. Real productivity comes from model division of labor, task orchestration, context budgeting, and evaluation.&lt;/p&gt;
&lt;p&gt;In other words, Token Efficiency is not a cost-saving trick. It is an engineering method for turning tokens into output.&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-productizing-the-split-between-planner-and-executor&#34;&gt;DeepSeek V4: productizing the split between planner and executor
&lt;/h2&gt;&lt;p&gt;The missing background in this topic is the positioning of DeepSeek V4.&lt;/p&gt;
&lt;p&gt;DeepSeek V4 is not just another stronger model. It splits the two capabilities needed for Token Efficiency into &lt;code&gt;V4 Pro&lt;/code&gt; and &lt;code&gt;V4 Flash&lt;/code&gt;: &lt;code&gt;V4 Pro&lt;/code&gt; is better suited for planning, reasoning, architecture judgment, and critical review, while &lt;code&gt;V4 Flash&lt;/code&gt; fits high-frequency execution, batch rewriting, code completion, data organization, and ordinary agent-loop nodes.&lt;/p&gt;
&lt;p&gt;That maps directly to two roles in AI coding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4 Pro&lt;/code&gt;: planner / consultant for requirement breakdown, technical design, complex bug analysis, architecture review, and final acceptance.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4 Flash&lt;/code&gt;: executor for file scanning, simple implementation, test completion, documentation, candidate generation, and repetitive work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DeepSeek&amp;rsquo;s API documentation shows that both &lt;code&gt;V4 Flash&lt;/code&gt; and &lt;code&gt;V4 Pro&lt;/code&gt; support &lt;code&gt;1M&lt;/code&gt; context, JSON Output, Tool Calls, Chat Prefix Completion, and FIM Completion. The pricing page also prices cache-hit input separately and notes that input cache-hit prices have been reduced to one tenth of the launch price.&lt;/p&gt;
&lt;p&gt;Together, these are why it matters for Token Efficiency: &lt;code&gt;1M&lt;/code&gt; context reduces compression in complex agent tasks; low cache-hit pricing lowers the cost of repeatedly loading prompts, project docs, code, and history; the &lt;code&gt;Flash / Pro&lt;/code&gt; split solves the problem of using a flagship model for every step or an unstable small model for every step.&lt;/p&gt;
&lt;p&gt;DeepSeek V4 should therefore be understood in three ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Cheap execution layer&lt;/strong&gt;: many agent nodes can run on &lt;code&gt;V4 Flash&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usable judgment layer&lt;/strong&gt;: key steps can still call &lt;code&gt;V4 Pro&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Long-chain friendly&lt;/strong&gt;: &lt;code&gt;1M&lt;/code&gt; context and cache pricing make codebases, docs, and tool history easier to keep in the usable window.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Its significance for AI coding is not just another model option. It offers a realistic cost structure for the &amp;ldquo;consultant model + executor model + harness orchestration&amp;rdquo; pattern.&lt;/p&gt;
&lt;h2 id=&#34;do-not-let-the-strongest-model-do-everything&#34;&gt;Do not let the strongest model do everything
&lt;/h2&gt;&lt;p&gt;The old approach was to pick the smartest model and let it handle requirement analysis, code, tests, and summaries end to end.&lt;/p&gt;
&lt;p&gt;That is simple but not always efficient. Many tasks do not need frontier reasoning. Expensive models should behave more like consultants, architects, or planners that appear only at key decision points.&lt;/p&gt;
&lt;p&gt;A better structure is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Big models break down problems and make key decisions.&lt;/li&gt;
&lt;li&gt;Small models execute, batch-process, and repeat edits.&lt;/li&gt;
&lt;li&gt;Tools and harnesses manage process, state, context, and validation.&lt;/li&gt;
&lt;li&gt;Humans define product goals, accept results, and make tradeoffs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This prevents frontier reasoning from being wasted on mechanical execution.&lt;/p&gt;
&lt;h2 id=&#34;context-is-not-always-better-when-larger&#34;&gt;Context is not always better when larger
&lt;/h2&gt;&lt;p&gt;Long context matters for coding agents because code, docs, chat history, test output, and logs all consume the window. When the window fills up, compression, forgetting, and misjudgment appear.&lt;/p&gt;
&lt;p&gt;But long context does not mean dumping everything into the model.&lt;/p&gt;
&lt;p&gt;Token Efficiency means each task should fit inside a clear, controlled context window:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bring only necessary files.&lt;/li&gt;
&lt;li&gt;Include only decision-relevant documents.&lt;/li&gt;
&lt;li&gt;Keep only the current state from history.&lt;/li&gt;
&lt;li&gt;Give each node clear input and output.&lt;/li&gt;
&lt;li&gt;Compress completed work into structured summaries for the next node.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cheap context can tempt people to include noise. Noise does not make a model smarter.&lt;/p&gt;
&lt;h2 id=&#34;harness-matters-more-than-a-single-model&#34;&gt;Harness matters more than a single model
&lt;/h2&gt;&lt;p&gt;Connecting Claude Code, Codex, or another coding agent to a cheap model is not enough. Small models drift in long-chain tasks unless a stronger process controls them.&lt;/p&gt;
&lt;p&gt;A harness is a scheduling system. It decides how to split tasks, run nodes, choose models, validate results, retry failures, and pass context.&lt;/p&gt;
&lt;p&gt;A useful orchestration system should answer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which tasks need planning?&lt;/li&gt;
&lt;li&gt;Which tasks can execute directly?&lt;/li&gt;
&lt;li&gt;Which nodes can run in parallel?&lt;/li&gt;
&lt;li&gt;Which nodes must be serial?&lt;/li&gt;
&lt;li&gt;Which nodes use big models or small models?&lt;/li&gt;
&lt;li&gt;What is the context budget for each node?&lt;/li&gt;
&lt;li&gt;What structured output does each node produce?&lt;/li&gt;
&lt;li&gt;Who reviews and decides whether to continue?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without this software layer, small models are merely cheap. With it, they can become leverage.&lt;/p&gt;
&lt;h2 id=&#34;split-tasks-with-dags&#34;&gt;Split tasks with DAGs
&lt;/h2&gt;&lt;p&gt;A good approach is to split complex work into a directed acyclic graph.&lt;/p&gt;
&lt;p&gt;A feature task might become:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Requirement clarification&lt;/li&gt;
&lt;li&gt;Technical design&lt;/li&gt;
&lt;li&gt;Task decomposition&lt;/li&gt;
&lt;li&gt;Implementation&lt;/li&gt;
&lt;li&gt;Test completion&lt;/li&gt;
&lt;li&gt;Code Review&lt;/li&gt;
&lt;li&gt;Fixes&lt;/li&gt;
&lt;li&gt;PR submission&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each node can be an independent agent with its own role, prompt, tools, permissions, and output format. Nodes should pass structured results, not long chat transcripts.&lt;/p&gt;
&lt;p&gt;This makes each node shorter, easier for small models, and easier to measure.&lt;/p&gt;
&lt;h2 id=&#34;run-multiple-task-replicas&#34;&gt;Run multiple task replicas
&lt;/h2&gt;&lt;p&gt;When tokens are cheap enough, the same task does not have to run only once.&lt;/p&gt;
&lt;p&gt;You can run the same task with different models, prompts, or orchestrations, then pick the best result or merge useful parts. This is suitable for design proposals, copy, test cases, bug hypotheses, refactor options, and code review.&lt;/p&gt;
&lt;p&gt;It is not suitable for tasks with external side effects, shared mutable state, or unclear acceptance criteria.&lt;/p&gt;
&lt;p&gt;The goal is not gambling. It is collecting comparable samples that can improve orchestration, model selection, and node skills.&lt;/p&gt;
&lt;h2 id=&#34;build-an-evaluation-system&#34;&gt;Build an evaluation system
&lt;/h2&gt;&lt;p&gt;Token Efficiency cannot be judged only by price. A cheap model with a high failure rate can consume more human time and become more expensive.&lt;/p&gt;
&lt;p&gt;Start recording:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Completion rate&lt;/li&gt;
&lt;li&gt;Human interventions&lt;/li&gt;
&lt;li&gt;Tool-call failure rate&lt;/li&gt;
&lt;li&gt;Test pass rate&lt;/li&gt;
&lt;li&gt;Review findings&lt;/li&gt;
&lt;li&gt;Token cost per task&lt;/li&gt;
&lt;li&gt;Time per task&lt;/li&gt;
&lt;li&gt;Rework count&lt;/li&gt;
&lt;li&gt;Differences between model combinations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this data, you can decide which tasks fit small models, which require big models, and which should stay human-led.&lt;/p&gt;
&lt;h2 id=&#34;make-business-workflows-atomic&#34;&gt;Make business workflows atomic
&lt;/h2&gt;&lt;p&gt;Most users do not need to build a full harness today. But they can start decomposing their business workflow into atomic nodes.&lt;/p&gt;
&lt;p&gt;Content production can become topic selection, research, outline, draft, fact check, style rewrite, SEO title, translation, and publishing check.&lt;/p&gt;
&lt;p&gt;Software development can become requirement confirmation, technical design, data structure, API change, unit tests, implementation, migration script, documentation, and review.&lt;/p&gt;
&lt;p&gt;Each node should have clear input, output, acceptance, and context limits. When harness tools mature, these workflows can plug in directly.&lt;/p&gt;
&lt;h2 id=&#34;hardware-is-not-the-first-priority&#34;&gt;Hardware is not the first priority
&lt;/h2&gt;&lt;p&gt;Many discussions of Token Efficiency jump to local deployment and GPUs. For most people, API should still be the first choice.&lt;/p&gt;
&lt;p&gt;Before the economic model works, local hardware is only prepaid cost. A safer sequence is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use API to validate the workflow.&lt;/li&gt;
&lt;li&gt;Record task evaluation and cost.&lt;/li&gt;
&lt;li&gt;Find stable high-frequency execution nodes.&lt;/li&gt;
&lt;li&gt;Consider which nodes should be localized.&lt;/li&gt;
&lt;li&gt;Then calculate hardware, power, maintenance, and depreciation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For personal productivity, API is often enough. For startups exploring inference frameworks and model boundaries, local CUDA platforms can be useful. For production workloads with clear unit economics, multi-GPU deployment becomes worth discussing.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Token Efficiency is not replacing expensive models with cheap ones. It is redesigning the AI workflow.&lt;/p&gt;
&lt;p&gt;Big models make key judgments, small models execute in bulk, the harness schedules and validates, and humans define goals and acceptance. Only when these layers work together can tokens reliably become productivity.&lt;/p&gt;
&lt;p&gt;Models will get cheaper, context windows will grow, and small models will improve. The future gap may not be who calls the strongest model, but who can use the same tokens to produce more real output.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Superpowers: a skills framework that pulls coding agents back into engineering process</title>
        <link>https://knightli.com/en/2026/05/15/obra-superpowers-agentic-skills-framework/</link>
        <pubDate>Fri, 15 May 2026 08:53:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/obra-superpowers-agentic-skills-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;obra/superpowers&lt;/code&gt; is both a skills framework for coding agents and a software development methodology. Its goal is not to add another universal prompt, but to make agents follow a process: clarify goals, produce a design, write a plan, implement through TDD, then review and finish.&lt;/p&gt;
&lt;p&gt;Project: &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;At the time of writing, the GitHub API shows more than 190,000 stars, an MIT license, and recent activity. The README describes it plainly: &lt;code&gt;An agentic skills framework &amp;amp; software development methodology that works.&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What problem it solves
&lt;/h2&gt;&lt;p&gt;Many AI coding tools are not weak at writing code; they are too eager to write code.&lt;/p&gt;
&lt;p&gt;A user says something vague, the agent edits files, and the result looks finished while boundaries, tests, and architecture remain unclear. Small tasks may survive this. Complex projects turn it into rework and technical debt.&lt;/p&gt;
&lt;p&gt;Superpowers makes the agent enter a workflow before touching code:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When the user wants to build something, ask about the goal first.&lt;/li&gt;
&lt;li&gt;Turn the conversation into a spec and confirm it in sections.&lt;/li&gt;
&lt;li&gt;After design approval, write an implementation plan.&lt;/li&gt;
&lt;li&gt;After the user says &amp;ldquo;go&amp;rdquo;, begin implementation.&lt;/li&gt;
&lt;li&gt;During implementation, emphasize TDD, YAGNI, DRY, and code review.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is not new software engineering. It is important because fast agents need stronger guardrails.&lt;/p&gt;
&lt;h2 id=&#34;supported-tools&#34;&gt;Supported tools
&lt;/h2&gt;&lt;p&gt;Superpowers is not tied to a single agent. The README lists installation paths for Claude Code, Codex CLI, Codex App, Factory Droid, Gemini CLI, OpenCode, Cursor, and GitHub Copilot CLI.&lt;/p&gt;
&lt;p&gt;That makes it more like a workflow layer across harnesses than a model-specific trick.&lt;/p&gt;
&lt;h2 id=&#34;the-base-workflow&#34;&gt;The base workflow
&lt;/h2&gt;&lt;p&gt;The base workflow has several stages.&lt;/p&gt;
&lt;p&gt;First is &lt;code&gt;brainstorming&lt;/code&gt;. Before implementation, the agent turns rough ideas into an executable design and confirms it with the user.&lt;/p&gt;
&lt;p&gt;Second is &lt;code&gt;using-git-worktrees&lt;/code&gt;. After design approval, it creates an isolated worktree and branch, then checks that install and test baselines are clean.&lt;/p&gt;
&lt;p&gt;Third is &lt;code&gt;writing-plans&lt;/code&gt;. It decomposes design into small tasks with paths, code scopes, and validation steps. The plan should be clear enough for someone without context to execute.&lt;/p&gt;
&lt;p&gt;Fourth is execution. &lt;code&gt;subagent-driven-development&lt;/code&gt; can dispatch tasks to subagents, while &lt;code&gt;executing-plans&lt;/code&gt; runs them in batches. Each task should be reviewable and verifiable.&lt;/p&gt;
&lt;p&gt;Fifth is &lt;code&gt;test-driven-development&lt;/code&gt;: true RED-GREEN-REFACTOR. Write a failing test, confirm failure, implement minimally, confirm pass, refactor.&lt;/p&gt;
&lt;p&gt;Sixth is &lt;code&gt;requesting-code-review&lt;/code&gt;. Reviews happen between tasks; critical findings block progress.&lt;/p&gt;
&lt;p&gt;Finally, &lt;code&gt;finishing-a-development-branch&lt;/code&gt; validates tests and offers choices such as merge, PR, keep, or discard the worktree.&lt;/p&gt;
&lt;h2 id=&#34;what-is-in-the-skills-library&#34;&gt;What is in the skills library
&lt;/h2&gt;&lt;p&gt;The skills library can be grouped by purpose.&lt;/p&gt;
&lt;p&gt;Testing centers on &lt;code&gt;test-driven-development&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Debugging includes &lt;code&gt;systematic-debugging&lt;/code&gt; and &lt;code&gt;verification-before-completion&lt;/code&gt;. They focus on reproduction, minimization, hypotheses, validation, and not claiming completion before verification.&lt;/p&gt;
&lt;p&gt;Collaboration skills include:&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;Meta skills include &lt;code&gt;writing-skills&lt;/code&gt; and &lt;code&gt;using-superpowers&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Together they give the agent engineering habits: when to ask, when to plan, when to test, and when to stop for review.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-a-prompt&#34;&gt;How it differs from a prompt
&lt;/h2&gt;&lt;p&gt;A normal prompt often piles rules into one system message: do not over-edit, think first, test, explain, be concise. As rules accumulate, complex tasks make the model forget or ignore some of them.&lt;/p&gt;
&lt;p&gt;Superpowers splits rules into phase-specific workflow modules. Each skill is shorter and focused. The agent knows the current phase, complex processes become checkable, and teams can turn their own practices into reusable skills.&lt;/p&gt;
&lt;p&gt;The lesson is not just &amp;ldquo;use a smarter model&amp;rdquo;. Give the model a repeatable way to work.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who should use it
&lt;/h2&gt;&lt;p&gt;Superpowers is most useful for developers already using coding agents on real projects, especially when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The task spans multiple files.&lt;/li&gt;
&lt;li&gt;The agent should design before implementation.&lt;/li&gt;
&lt;li&gt;TDD or validation matters.&lt;/li&gt;
&lt;li&gt;Multiple branches or worktrees are common.&lt;/li&gt;
&lt;li&gt;Subagents can help with implementation or review.&lt;/li&gt;
&lt;li&gt;A team wants to encode its workflow as skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a one-line config change, it may feel heavy. For multi-step development, the constraints are valuable.&lt;/p&gt;
&lt;h2 id=&#34;notes-before-using-it&#34;&gt;Notes before using it
&lt;/h2&gt;&lt;p&gt;Do not treat it as full autopilot. It gives the agent process, but humans still own requirements, tradeoffs, and final acceptance.&lt;/p&gt;
&lt;p&gt;TDD and review add upfront cost. For small tasks they may slow things down; for complex tasks they reduce rework.&lt;/p&gt;
&lt;p&gt;Parallel subagents are not always better. They work when boundaries and write scopes are clear. If the requirement is still fuzzy, parallelism only multiplies confusion.&lt;/p&gt;
&lt;p&gt;Teams must maintain skill quality. Outdated processes, vague instructions, and conflicting rules can also hurt agents.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Superpowers is valuable because it pulls coding agents away from &amp;ldquo;receive request, edit code&amp;rdquo; and back into software engineering process.&lt;/p&gt;
&lt;p&gt;AI coding often lacks not generation speed, but clarification, planning, verification, review, and closure. The stronger the model becomes, the less these steps should be skipped.&lt;/p&gt;
&lt;p&gt;If you use Codex, Claude Code, Cursor, or Gemini CLI on real projects, Superpowers is worth studying. Even if you do not install it, its skill decomposition is a good reference for designing your own agent workflow.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Reject Vibe Coding: Matt Pocock&#39;s skills repo adds engineering constraints to AI coding</title>
        <link>https://knightli.com/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</link>
        <pubDate>Fri, 15 May 2026 08:46:23 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/15/matt-pocock-skills-ai-engineering-workflow/</guid>
        <description>&lt;p&gt;The faster AI writes code, the faster a project can lose control. The real question is not whether a model can generate functions, but whether it understands the requirement, follows the team&amp;rsquo;s language, and makes small changes inside the existing architecture.&lt;/p&gt;
&lt;p&gt;Matt Pocock&amp;rsquo;s &lt;code&gt;mattpocock/skills&lt;/code&gt; repository points in the opposite direction of casual vibe coding: do not let AI take over the whole development process. Put it inside mature software engineering constraints.&lt;/p&gt;
&lt;p&gt;Project: &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;This is not about one magic prompt. It is a set of composable agent skills that turn requirement clarification, domain modeling, TDD, debugging, and architecture review into AI-friendly workflows.&lt;/p&gt;
&lt;h2 id=&#34;solve-alignment-failure-first&#34;&gt;Solve alignment failure first
&lt;/h2&gt;&lt;p&gt;The most common failure in AI coding is assuming the model understood the request when it merely guessed from a vague sentence.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-me&lt;/code&gt; flips the interaction. Before writing code, the agent acts like a demanding reviewer and keeps asking about branches, boundaries, and unresolved decisions.&lt;/p&gt;
&lt;p&gt;If you ask for a login page, it should first ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should password reset work?&lt;/li&gt;
&lt;li&gt;Should third-party login be supported?&lt;/li&gt;
&lt;li&gt;What should failed-login errors look like?&lt;/li&gt;
&lt;li&gt;Are account lockout, CAPTCHA, or risk controls in scope?&lt;/li&gt;
&lt;li&gt;Where should the user go after success?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This feels slower, but it prevents expensive rework later. The cheaper code generation becomes, the more costly unclear requirements become.&lt;/p&gt;
&lt;h2 id=&#34;write-domain-language-into-context&#34;&gt;Write domain language into context
&lt;/h2&gt;&lt;p&gt;Another common problem is generic vocabulary. The model does not know the team&amp;rsquo;s business terms, so names and documents drift.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;grill-with-docs&lt;/code&gt; asks questions while also checking &lt;code&gt;CONTEXT.md&lt;/code&gt;, ADRs, and domain docs. Once terms and decisions are confirmed, they can be written back into shared context.&lt;/p&gt;
&lt;p&gt;This is close to the &amp;ldquo;ubiquitous language&amp;rdquo; idea in domain-driven design. If a team says customer instead of user, or transaction instead of order, the model should inherit that language.&lt;/p&gt;
&lt;p&gt;Context documents are valuable because they reduce guessing.&lt;/p&gt;
&lt;h2 id=&#34;use-tdd-to-slow-down-generation&#34;&gt;Use TDD to slow down generation
&lt;/h2&gt;&lt;p&gt;AI is risky because it is fast. Bad code used to take time to write; now hundreds of lines can appear in seconds. The problem is not speed itself, but lack of feedback loops.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;tdd&lt;/code&gt; skill brings back red-green-refactor:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write a failing test for one behavior.&lt;/li&gt;
&lt;li&gt;Implement only enough code to pass.&lt;/li&gt;
&lt;li&gt;Refactor.&lt;/li&gt;
&lt;li&gt;Continue with the next vertical slice.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The key is one behavior at a time. AI executes, while humans keep control of direction and boundaries.&lt;/p&gt;
&lt;h2 id=&#34;debug-through-a-loop&#34;&gt;Debug through a loop
&lt;/h2&gt;&lt;p&gt;When facing a bug, many agents guess and patch repeatedly until the code becomes messier.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;diagnose&lt;/code&gt; asks the agent to build a feedback loop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reproduce the issue&lt;/li&gt;
&lt;li&gt;Minimize the case&lt;/li&gt;
&lt;li&gt;Form a hypothesis&lt;/li&gt;
&lt;li&gt;Add observations or logs&lt;/li&gt;
&lt;li&gt;Fix the cause&lt;/li&gt;
&lt;li&gt;Add a regression test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This process is old, but it matters even more with AI. The model is good at trying things; the loop keeps it close to the root cause.&lt;/p&gt;
&lt;h2 id=&#34;review-architecture-regularly&#34;&gt;Review architecture regularly
&lt;/h2&gt;&lt;p&gt;A task passing tests does not mean the codebase is healthier. Repeated AI patches can blur module boundaries, make interfaces more complex, and make tests harder to write.&lt;/p&gt;
&lt;p&gt;Skills such as &lt;code&gt;improve-codebase-architecture&lt;/code&gt; ask the agent to step back and inspect the whole codebase:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Are responsibilities mixing across modules?&lt;/li&gt;
&lt;li&gt;Which interfaces are too complex?&lt;/li&gt;
&lt;li&gt;Which paths are hard to test?&lt;/li&gt;
&lt;li&gt;Which names conflict with domain language?&lt;/li&gt;
&lt;li&gt;Which duplicate logic should be merged?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not automatic large-scale refactoring. It is structured observation and suggested direction; humans still decide whether and how far to change.&lt;/p&gt;
&lt;h2 id=&#34;what-really-needs-limiting-is-freedom&#34;&gt;What really needs limiting is freedom
&lt;/h2&gt;&lt;p&gt;The core idea is simple: AI coding is not about letting the model improvise freely. It is about giving it clear goals, context, tests, and stopping conditions.&lt;/p&gt;
&lt;p&gt;Humans define the problem, architecture, tradeoffs, and acceptance criteria. AI generates code, fills in tests, repeats edits, and handles local refactors. Used well, AI amplifies capability; used poorly, it amplifies confusion.&lt;/p&gt;
&lt;p&gt;Software engineering fundamentals did not become obsolete because AI improved. Requirement clarity, domain language, TDD, diagnosis, and architecture review are becoming more important.&lt;/p&gt;
&lt;p&gt;More people will be able to write code. The gap will be between people who can put AI inside a maintainable, verifiable, evolving engineering system and those who cannot.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What is cc-haha? A project that turns Claude Code into a desktop workbench</title>
        <link>https://knightli.com/en/2026/05/14/cc-haha-claude-code-desktop-workbench/</link>
        <pubDate>Thu, 14 May 2026 22:38:04 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/14/cc-haha-claude-code-desktop-workbench/</guid>
        <description>&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; is a project built around a modified Claude Code workflow. Its full repository name is &lt;code&gt;NanmiCoder/cc-haha&lt;/code&gt;. The project page says plainly that it is based on Claude Code source code leaked from the Anthropic npm registry on &lt;code&gt;2026-03-31&lt;/code&gt;, and that its current main form is a desktop Claude Code workbench.&lt;/p&gt;
&lt;p&gt;Project URL: &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;There are two important points in that description.&lt;/p&gt;
&lt;p&gt;First, it is not Anthropic&amp;rsquo;s official Claude Code. The README also states that the original source code copyright belongs to Anthropic and that the project is only for learning and research.&lt;/p&gt;
&lt;p&gt;Second, its focus is no longer just &amp;ldquo;run a Claude Code CLI locally.&amp;rdquo; Judging from the README and the latest release, &lt;code&gt;cc-haha&lt;/code&gt; is more like a desktop app that brings Claude Code sessions, projects, permissions, diffs, Computer Use, remote access, and model provider configuration into one place.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-is-it-trying-to-solve&#34;&gt;What problem is it trying to solve?
&lt;/h2&gt;&lt;p&gt;Claude Code is originally terminal-oriented. Sessions, command execution, permission prompts, file edits, and context switching all happen in the terminal. That works for people who are comfortable with CLI tools, but long-term use exposes a few rough edges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple projects and sessions are hard to manage side by side.&lt;/li&gt;
&lt;li&gt;To see what files the AI changed, you often need to switch to Git or an editor.&lt;/li&gt;
&lt;li&gt;Permission approvals, command execution, and file diffs are spread across different surfaces.&lt;/li&gt;
&lt;li&gt;Remote viewing from a phone or another device requires extra setup.&lt;/li&gt;
&lt;li&gt;Connecting non-Anthropic models requires dealing with protocol compatibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; tries to package these pieces into a graphical workbench. It is not just a skin for Claude Code; it moves session management and local development flow control into the desktop app.&lt;/p&gt;
&lt;h2 id=&#34;desktop-workbench-from-terminal-to-control-center&#34;&gt;Desktop workbench: from terminal to control center
&lt;/h2&gt;&lt;p&gt;According to the README, the &lt;code&gt;cc-haha&lt;/code&gt; desktop app brings these capabilities into a macOS / Windows app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-session workbench: manage tasks with tabs, project switching, terminal entry points, and session history.&lt;/li&gt;
&lt;li&gt;Branch / Worktree launch: choose a repository branch for a new session and decide whether to use the current worktree or an isolated Worktree.&lt;/li&gt;
&lt;li&gt;Right-side code changes panel: view modified files, added and removed lines, and workspace status while chatting.&lt;/li&gt;
&lt;li&gt;Visualized code edits: inspect AI edits, diffs, and execution steps.&lt;/li&gt;
&lt;li&gt;Permission and approval flow: review dangerous commands, tool calls, and AI questions in the desktop app.&lt;/li&gt;
&lt;li&gt;Multiple model providers: supports Anthropic-compatible APIs, third-party models, WebSearch fallback, and local configuration.&lt;/li&gt;
&lt;li&gt;H5 remote access: use a one-time token to connect to the current desktop session from a phone or another device.&lt;/li&gt;
&lt;li&gt;IM integration: use Telegram, Feishu, WeChat, or DingTalk to chat remotely, switch projects, and approve permissions.&lt;/li&gt;
&lt;li&gt;Scheduled tasks and token usage: create scheduled tasks and view local token usage trends.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These features make it closer to an &amp;ldquo;AI coding workbench&amp;rdquo; than a simple command-line replacement. It tries to put the common surfaces of AI coding into one place: chat, file changes, permissions, projects, remote access, and model configuration.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-startup&#34;&gt;Installation and startup
&lt;/h2&gt;&lt;p&gt;Most users should download the desktop installer from Releases.&lt;/p&gt;
&lt;p&gt;The README describes the desktop install flow as:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to GitHub Releases and download the macOS or Windows installer.&lt;/li&gt;
&lt;li&gt;On first launch, configure the model provider, API key, and default model in the desktop settings.&lt;/li&gt;
&lt;li&gt;If macOS says the app cannot be opened, follow the installation guide to handle Gatekeeper permissions.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The latest release page shows that &lt;code&gt;v0.2.6&lt;/code&gt; was published on &lt;code&gt;2026-05-13&lt;/code&gt;. That version mainly focuses on restoring secure H5 mobile access, desktop session management, file mention search, and desktop UX polish.&lt;/p&gt;
&lt;p&gt;If you want to start the CLI from source, the README provides:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;That path is better for people who want to debug the lower-level CLI, server, or build their own changes. For normal use, the desktop app is more direct.&lt;/p&gt;
&lt;h2 id=&#34;what-changed-in-v026&#34;&gt;What changed in v0.2.6
&lt;/h2&gt;&lt;p&gt;The main point of &lt;code&gt;v0.2.6&lt;/code&gt; is that H5/LAN access was pulled back from a temporary open state into an explicit enablement and token pairing model.&lt;/p&gt;
&lt;p&gt;Notable changes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;H5/LAN access must be explicitly enabled locally.&lt;/li&gt;
&lt;li&gt;QR links carry a one-time visible token.&lt;/li&gt;
&lt;li&gt;Remote APIs, proxies, and WebSockets are no longer exposed without protection.&lt;/li&gt;
&lt;li&gt;Settings now has a separate H5 Access page.&lt;/li&gt;
&lt;li&gt;The desktop sidebar gained batch management for selecting and deleting sessions.&lt;/li&gt;
&lt;li&gt;Desktop file mention search became git-first, respects ignore rules, and reduces noise from &lt;code&gt;node_modules&lt;/code&gt; and build output.&lt;/li&gt;
&lt;li&gt;A pure white theme was added, and bugs such as long URLs breaking chat layout and draft leakage across tabs were fixed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This shows the project has moved beyond &amp;ldquo;it runs&amp;rdquo; and is now filling in the safety boundaries and daily UX details that a desktop product needs.&lt;/p&gt;
&lt;p&gt;The H5 access part deserves special care. The author explicitly notes in the release that H5 is a browser access entry for individuals or trusted teams, not a public multi-tenant login system. In practice, it should not be treated as an internet-facing SaaS admin console.&lt;/p&gt;
&lt;h2 id=&#34;computer-use-letting-the-agent-operate-the-desktop&#34;&gt;Computer Use: letting the Agent operate the desktop
&lt;/h2&gt;&lt;p&gt;Another important selling point of &lt;code&gt;cc-haha&lt;/code&gt; is Computer Use.&lt;/p&gt;
&lt;p&gt;The project docs say this feature is a heavily modified version of the Computer Use implementation in the leaked Claude Code source. The official implementation depends on Anthropic&amp;rsquo;s private native modules, such as &lt;code&gt;@ant/computer-use-swift&lt;/code&gt; and &lt;code&gt;@ant/computer-use-input&lt;/code&gt;, which are not publicly available. &lt;code&gt;cc-haha&lt;/code&gt; replaces the low-level operation layer with a Python bridge using public libraries such as &lt;code&gt;pyautogui&lt;/code&gt;, &lt;code&gt;mss&lt;/code&gt;, and &lt;code&gt;pyobjc&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Computer Use supports operations such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Screenshot: &lt;code&gt;screenshot&lt;/code&gt;, &lt;code&gt;zoom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mouse: click, drag, move, scroll, and read cursor position&lt;/li&gt;
&lt;li&gt;Keyboard: type text, press keys, hold keys&lt;/li&gt;
&lt;li&gt;Applications: open applications, switch displays&lt;/li&gt;
&lt;li&gt;Permissions: request app access, list granted applications&lt;/li&gt;
&lt;li&gt;Clipboard: read and write clipboard content&lt;/li&gt;
&lt;li&gt;Other: wait, batch operations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its workflow is a &amp;ldquo;screenshot - analyze - act&amp;rdquo; loop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The model receives a user request.&lt;/li&gt;
&lt;li&gt;It calls &lt;code&gt;screenshot&lt;/code&gt; to capture the screen.&lt;/li&gt;
&lt;li&gt;The model uses vision to identify buttons, input fields, and coordinates.&lt;/li&gt;
&lt;li&gt;It calls click, typing, or application tools.&lt;/li&gt;
&lt;li&gt;It screenshots again to confirm the result, then continues.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From the docs, the fully supported platform is mainly macOS, including Apple Silicon and Intel. Windows / Linux are theoretically possible, but the &lt;code&gt;pyobjc&lt;/code&gt; app-management parts need platform-specific replacements and are not fully adapted yet.&lt;/p&gt;
&lt;p&gt;Runtime requirements include:&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 permission&lt;/li&gt;
&lt;li&gt;macOS Screen Recording permission&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This kind of feature is powerful, but it also raises permission risk. When letting AI operate desktop apps, it is better to authorize only the applications that are clearly needed and avoid leaving sensitive content open in unrelated windows.&lt;/p&gt;
&lt;h2 id=&#34;multi-model-access-through-an-anthropic-compatible-layer&#34;&gt;Multi-model access through an Anthropic-compatible layer
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; still communicates using the Anthropic Messages API protocol. The project docs recommend using LiteLLM as a protocol conversion proxy.&lt;/p&gt;
&lt;p&gt;The basic structure is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In other words, &lt;code&gt;cc-haha&lt;/code&gt; sends Anthropic Messages API requests, LiteLLM converts them to formats such as OpenAI Chat Completions, and then forwards them to OpenAI, DeepSeek, Ollama, or other model services.&lt;/p&gt;
&lt;p&gt;The LiteLLM install command in the docs is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then you can configure OpenAI, DeepSeek, Ollama, and other models in &lt;code&gt;litellm_config.yaml&lt;/code&gt;. After the proxy starts, set these values in &lt;code&gt;.env&lt;/code&gt; or &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;There are a few practical caveats:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;drop_params: true&lt;/code&gt; is important, because Anthropic parameters such as &lt;code&gt;thinking&lt;/code&gt; and &lt;code&gt;cache_control&lt;/code&gt; do not exist in the OpenAI API.&lt;/li&gt;
&lt;li&gt;Extended Thinking is an Anthropic-specific feature and is unavailable with third-party models.&lt;/li&gt;
&lt;li&gt;Prompt Caching will not work in the Anthropic-native way.&lt;/li&gt;
&lt;li&gt;Tool calls must be converted from Anthropic &lt;code&gt;tool_use&lt;/code&gt; to OpenAI function calling, so complex tool use may have compatibility issues.&lt;/li&gt;
&lt;li&gt;Small local Ollama models may not handle this tool-heavy workflow reliably.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So multi-model access can work, but that does not mean every model will feel the same. &lt;code&gt;cc-haha&lt;/code&gt; still demands strong tool use, code understanding, and long-context ability from the model.&lt;/p&gt;
&lt;h2 id=&#34;who-is-it-for&#34;&gt;Who is it for?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cc-haha&lt;/code&gt; is better suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People already familiar with Claude Code who want desktop session management.&lt;/li&gt;
&lt;li&gt;Users who often work across multiple repositories, branches, and AI sessions.&lt;/li&gt;
&lt;li&gt;People who want to inspect AI file changes, diffs, and workspace status in a side panel.&lt;/li&gt;
&lt;li&gt;Users who want to experiment with Computer Use and let an Agent operate desktop apps.&lt;/li&gt;
&lt;li&gt;People who want to connect OpenAI, DeepSeek, Ollama, or other models through an Anthropic-compatible protocol.&lt;/li&gt;
&lt;li&gt;Users who need phone or IM-based remote viewing and permission approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users who only want the stable official Claude Code experience.&lt;/li&gt;
&lt;li&gt;People who cannot accept the leaked-source background and copyright uncertainty.&lt;/li&gt;
&lt;li&gt;Users who do not want to grant high system permissions to local tools.&lt;/li&gt;
&lt;li&gt;Teams that need enterprise compliance, auditability, and official support.&lt;/li&gt;
&lt;li&gt;Users unfamiliar with API keys, proxies, model compatibility, and local service configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;risks-and-boundaries&#34;&gt;Risks and boundaries
&lt;/h2&gt;&lt;p&gt;This article cannot only talk about features. It also has to talk about risk.&lt;/p&gt;
&lt;p&gt;The origin of &lt;code&gt;cc-haha&lt;/code&gt; means it is not an ordinary community reimplementation. The README clearly states that it is based on leaked Claude Code source code and that the original source belongs to Anthropic. This creates uncertainty around copyright, compliance, and long-term maintenance.&lt;/p&gt;
&lt;p&gt;Computer Use, H5 remote access, IM integration, and local permission approval are also high-permission capabilities. The more convenient they are, the more clearly boundaries need to be defined:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not expose H5 access on untrusted networks.&lt;/li&gt;
&lt;li&gt;Do not treat the token as a long-term public login credential.&lt;/li&gt;
&lt;li&gt;Do not grant the Agent access to unrelated sensitive applications.&lt;/li&gt;
&lt;li&gt;Do not casually use it in production or company compliance environments.&lt;/li&gt;
&lt;li&gt;Do not expose third-party model proxy settings or API keys in public repositories.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is to study AI coding tool architecture, desktop workflows, and Computer Use implementation, it is a useful reference. If you want to put it into a long-term production workflow, evaluate legal, permission, security, and maintenance risks first.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The most interesting thing about &lt;code&gt;cc-haha&lt;/code&gt; is not whether it can replicate Claude Code. It is that it pushes Claude Code-style AI coding tools toward a desktop workbench form.&lt;/p&gt;
&lt;p&gt;Sessions, projects, Worktree, diffs, permissions, remote access, Computer Use, model providers, scheduled tasks, and token usage are all brought into one desktop experience. That suggests the next step for AI coding tools is not only stronger models, but also a more complete workflow interface.&lt;/p&gt;
&lt;p&gt;But its boundaries are also clear: it is not an official Anthropic product, it has a sensitive source-code background, and its high-permission features require caution. A better way to view it is as a project for observing where AI coding tools may evolve, not as a careless replacement for official Claude Code.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub repository: &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;Latest 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 documentation: &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;Third-party model documentation: &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: running long tasks until they are done</title>
        <link>https://knightli.com/en/2026/05/14/codex-goal-vs-claude-code-goal/</link>
        <pubDate>Thu, 14 May 2026 22:25:31 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/14/codex-goal-vs-claude-code-goal/</guid>
        <description>&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; is becoming an important command in AI coding tools.&lt;/p&gt;
&lt;p&gt;It is not about making the model write a few more lines of code. It solves a more practical problem: when a task has clear completion conditions, can the agent keep going until those conditions are met, instead of stopping after every turn and waiting for the user to say &amp;ldquo;continue&amp;rdquo;?&lt;/p&gt;
&lt;p&gt;Codex CLI has already added an experimental &lt;code&gt;/goal&lt;/code&gt; command in its official docs. Claude Code has also published its own &lt;code&gt;/goal&lt;/code&gt; documentation, describing it as an automation capability that can keep working across multiple turns. The names are the same, but the product direction is not exactly the same.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-goal-solve&#34;&gt;What problem does &lt;code&gt;/goal&lt;/code&gt; solve?
&lt;/h2&gt;&lt;p&gt;Ordinary AI coding conversations usually work as a one-turn-at-a-time loop:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The user describes a task.&lt;/li&gt;
&lt;li&gt;The agent analyzes, edits code, and runs tests.&lt;/li&gt;
&lt;li&gt;The agent reports the result.&lt;/li&gt;
&lt;li&gt;The user decides what to do next.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That workflow is fine for short tasks. But for migrations, refactors, test fixes, or issue backlog cleanup, it gets fragmented. The agent may move forward a little, then stop and wait for you to type &amp;ldquo;continue&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; changes the question from &amp;ldquo;what should you do next?&amp;rdquo; to &amp;ldquo;what final state counts as done?&amp;rdquo; For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This kind of target naturally fits long tasks because it has a clear endpoint: tests pass, the build succeeds, files are split, a queue is empty, or acceptance criteria are satisfied.&lt;/p&gt;
&lt;h2 id=&#34;codex-goal-experimental-and-attached-to-the-current-thread&#34;&gt;Codex &lt;code&gt;/goal&lt;/code&gt;: experimental and attached to the current thread
&lt;/h2&gt;&lt;p&gt;OpenAI&amp;rsquo;s Codex CLI documentation marks &lt;code&gt;/goal&lt;/code&gt; as experimental. It is not a stable default capability and requires &lt;code&gt;features.goals&lt;/code&gt; to be enabled first.&lt;/p&gt;
&lt;p&gt;There are two ways to enable it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Or add this to &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;Once enabled, you can use it like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Common commands include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;According to OpenAI&amp;rsquo;s docs, Codex attaches the goal to the current active thread and keeps tracking that target while a larger task continues.&lt;/p&gt;
&lt;p&gt;One detail matters here: the official wording for Codex &lt;code&gt;/goal&lt;/code&gt; is restrained. It emphasizes setting an experimental goal for long-running work and attaching the goal to the current thread, but it does not describe, in the same level of detail as Claude Code&amp;rsquo;s docs, an independent evaluator that automatically checks every turn and starts the next one. So for now, it is better to treat Codex &lt;code&gt;/goal&lt;/code&gt; as an experimental long-task goal mechanism, not a fully stable unattended execution mode.&lt;/p&gt;
&lt;h2 id=&#34;claude-code-goal-multi-turn-execution-driven-by-completion-conditions&#34;&gt;Claude Code &lt;code&gt;/goal&lt;/code&gt;: multi-turn execution driven by completion conditions
&lt;/h2&gt;&lt;p&gt;Claude Code&amp;rsquo;s &lt;code&gt;/goal&lt;/code&gt; documentation is more explicit: after the user sets a completion condition, Claude keeps working across turns until that condition is met.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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&amp;rsquo;s mechanism is roughly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After the current turn finishes, control is not immediately returned to the user.&lt;/li&gt;
&lt;li&gt;A small, fast model checks whether the goal condition has already been met.&lt;/li&gt;
&lt;li&gt;If it has not been met, Claude automatically starts the next turn.&lt;/li&gt;
&lt;li&gt;If it has been met, the goal is cleared automatically and the completion status is recorded in the transcript.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes Claude Code&amp;rsquo;s &lt;code&gt;/goal&lt;/code&gt; more like &amp;ldquo;auto-continue until the completion condition is satisfied.&amp;rdquo; It does not merely pin a target to the conversation; it gives an independent evaluation step the decision of whether to continue.&lt;/p&gt;
&lt;p&gt;Claude Code also supports checking status directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The status shows the goal condition, elapsed time, evaluated turn count, token usage, and the evaluator&amp;rsquo;s latest reason.&lt;/p&gt;
&lt;p&gt;To stop early, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;, and &lt;code&gt;cancel&lt;/code&gt; also work as clearing aliases. After a goal is enabled, if the session is interrupted and later resumed with &lt;code&gt;--resume&lt;/code&gt; or &lt;code&gt;--continue&lt;/code&gt;, an active goal can be restored. However, elapsed time, turn count, and token baselines are recalculated.&lt;/p&gt;
&lt;h2 id=&#34;the-biggest-difference&#34;&gt;The biggest difference
&lt;/h2&gt;&lt;p&gt;Both Codex and Claude Code are pushing AI coding from single-turn answers toward long-running task execution, but their &lt;code&gt;/goal&lt;/code&gt; commands have different positioning.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Comparison&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;Status&lt;/td&gt;
          &lt;td&gt;experimental&lt;/td&gt;
          &lt;td&gt;documented on a dedicated official page&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Enablement&lt;/td&gt;
          &lt;td&gt;requires &lt;code&gt;features.goals&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;usable directly in a trusted workspace&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Goal scope&lt;/td&gt;
          &lt;td&gt;current active thread&lt;/td&gt;
          &lt;td&gt;current session&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Common operations&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;Automatic evaluation&lt;/td&gt;
          &lt;td&gt;docs emphasize attachment and tracking&lt;/td&gt;
          &lt;td&gt;docs explicitly describe evaluator checks after each turn&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Auto-continuation&lt;/td&gt;
          &lt;td&gt;official wording is restrained&lt;/td&gt;
          &lt;td&gt;starts the next turn automatically when conditions are unmet&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Best fit&lt;/td&gt;
          &lt;td&gt;keeping a long-term target in a Codex task&lt;/td&gt;
          &lt;td&gt;letting Claude Code keep moving toward completion conditions&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In short, Codex &lt;code&gt;/goal&lt;/code&gt; is closer to &amp;ldquo;attach an experimental long-term target to the current thread.&amp;rdquo; Claude Code &lt;code&gt;/goal&lt;/code&gt; is closer to &amp;ldquo;set a verifiable stop condition for the current session and let it keep working until satisfied.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;how-to-write-a-good-goal&#34;&gt;How to write a good &lt;code&gt;/goal&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Whichever tool you use, &lt;code&gt;/goal&lt;/code&gt; is not a good place for vague wishes.&lt;/p&gt;
&lt;p&gt;Not a great goal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;A better goal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;A good goal usually includes three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A clear completed state.&lt;/li&gt;
&lt;li&gt;An executable validation method.&lt;/li&gt;
&lt;li&gt;Boundaries that must be respected.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the goal is large, add a stop condition:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This matters. The stronger &lt;code&gt;/goal&lt;/code&gt; becomes, the more it needs boundaries. Otherwise, the agent may modify too many files, run too long, consume too many tokens, or keep pushing forward on a question that should have been paused for human input.&lt;/p&gt;
&lt;h2 id=&#34;when-goal-is-a-good-fit&#34;&gt;When &lt;code&gt;/goal&lt;/code&gt; is a good fit
&lt;/h2&gt;&lt;p&gt;Good fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test fixes: until specific tests pass.&lt;/li&gt;
&lt;li&gt;Code migrations: until all call sites are updated and compilation succeeds.&lt;/li&gt;
&lt;li&gt;Batch cleanup: until a class of lint or type errors is reduced to zero.&lt;/li&gt;
&lt;li&gt;Documentation completion: until all specified modules have documentation.&lt;/li&gt;
&lt;li&gt;Issue queue handling: until every issue under a tag is handled or clearly classified.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Poor fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The requirement itself is still unclear.&lt;/li&gt;
&lt;li&gt;The task needs frequent product judgment.&lt;/li&gt;
&lt;li&gt;It involves high-risk deletion, data migration, or permission changes.&lt;/li&gt;
&lt;li&gt;Acceptance can only be judged subjectively.&lt;/li&gt;
&lt;li&gt;The task spans many unrelated modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A practical rule: if you can write &amp;ldquo;which command to run, what result to see, and which files must not be touched,&amp;rdquo; it is a good candidate for &lt;code&gt;/goal&lt;/code&gt;. If you can only write &amp;ldquo;make this better,&amp;rdquo; ordinary conversation, plan mode, or human review is still safer.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-ai-coding-tools&#34;&gt;What this means for AI coding tools
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; points to a clear direction: AI coding tools are moving from interactive assistants toward continuously executable work units.&lt;/p&gt;
&lt;p&gt;In the past, using an agent often meant staying nearby. If it got stuck, you prompted it. If tests finished, you told it to continue. If errors appeared, you issued another command. &lt;code&gt;/goal&lt;/code&gt; compresses that interaction into a completion condition and lets the agent decide what the next turn should do.&lt;/p&gt;
&lt;p&gt;But this also raises the bar for users. Writing prompts is no longer just describing a task; it also means defining acceptance criteria, validation commands, modification boundaries, and stop rules. In other words, the user&amp;rsquo;s job shifts from &amp;ldquo;keep telling it to continue&amp;rdquo; to &amp;ldquo;define what done means.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The fact that both Codex and Claude Code have reached &lt;code&gt;/goal&lt;/code&gt; shows that long-running agents are no longer only for background tasks or cloud queues. Local terminal coding tools now also need stronger autonomous progress.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Codex CLI and Claude Code both have &lt;code&gt;/goal&lt;/code&gt;, but at this stage they should not be treated as the same feature.&lt;/p&gt;
&lt;p&gt;Codex &lt;code&gt;/goal&lt;/code&gt; is still experimental, requires &lt;code&gt;features.goals&lt;/code&gt;, and is better understood as a way to maintain a long-term target in the current Codex thread. Claude Code &lt;code&gt;/goal&lt;/code&gt; more explicitly connects completion conditions with auto-continuation, using an independent evaluator to decide whether to keep going.&lt;/p&gt;
&lt;p&gt;For everyday development, this kind of command is best for engineering tasks with clear acceptance criteria. It does not replace product judgment or code review, but it can reduce the repetitive &amp;ldquo;continue,&amp;rdquo; &amp;ldquo;run it again,&amp;rdquo; and &amp;ldquo;fix until tests pass&amp;rdquo; loop inside long tasks.&lt;/p&gt;
&lt;p&gt;The real skill is not memorizing the command. It is learning how to write tasks as clear, verifiable, stoppable goals.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 documentation: &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>Connecting Claude to Fusion 360: An Example of Editing STEP Models With AI</title>
        <link>https://knightli.com/en/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/en/2026/05/14/claude-fusion-360-mcp-step-model-edit/</guid>
        <description>&lt;p&gt;After Claude is connected to Fusion 360, it can do more than &amp;ldquo;talk through ideas&amp;rdquo;. It can directly participate in CAD model editing. A typical workflow is to open an existing STEP file, let Claude read the current model, analyze structural conflicts, plan dimensions, and then execute modeling changes through the Fusion plugin.&lt;/p&gt;
&lt;p&gt;The following uses a planetary gear indexer modification as an example to summarize the basic Claude + Fusion 360 workflow.&lt;/p&gt;
&lt;h2 id=&#34;enable-fusion-360s-apimcp-service-first&#34;&gt;Enable Fusion 360&amp;rsquo;s API/MCP Service First
&lt;/h2&gt;&lt;p&gt;Start with a basic Fusion 360 setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;Preferences&lt;/code&gt; in the upper-right corner.&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;General&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Find the &lt;code&gt;API&lt;/code&gt; option.&lt;/li&gt;
&lt;li&gt;Enable the MCP server.&lt;/li&gt;
&lt;li&gt;Note the port number. The default example is &lt;code&gt;27182&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Then return to Claude, go to &lt;code&gt;Connectors&lt;/code&gt;, find the Fusion connector, and enter the Fusion 360 address and port. In most cases, the default port &lt;code&gt;27182&lt;/code&gt; is enough.&lt;/p&gt;
&lt;p&gt;After the connection succeeds, Claude can interact with the currently opened model through the Fusion plugin.&lt;/p&gt;
&lt;h2 id=&#34;open-the-step-file-and-define-the-goal-clearly&#34;&gt;Open the STEP File and Define the Goal Clearly
&lt;/h2&gt;&lt;p&gt;The part to modify is a gear inside a planetary gear indexer. In the original design, the gear is fixed to the bracket with a screw acting as the central shaft.&lt;/p&gt;
&lt;p&gt;The goal is to convert it into a bearing-based structure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the center hole needs to fit a bearing;&lt;/li&gt;
&lt;li&gt;surrounding screw holes must not interfere with the enlarged center hole;&lt;/li&gt;
&lt;li&gt;the self-tapping screw hole on the bracket should also be adjusted into a shaft structure suitable for bearing rotation;&lt;/li&gt;
&lt;li&gt;the final model should be importable into slicer software and usable for 3D printing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key is not to simply tell Claude &amp;ldquo;modify this for me&amp;rdquo;. You need to clearly state the use case, assembly method, material, and manufacturing process.&lt;/p&gt;
&lt;h2 id=&#34;claude-can-understand-the-current-model-through-screenshots&#34;&gt;Claude Can Understand the Current Model Through Screenshots
&lt;/h2&gt;&lt;p&gt;Some people worry that the Fusion plugin can only execute commands and cannot let Claude see the model. In actual testing, Claude can recognize the current model state through screenshots.&lt;/p&gt;
&lt;p&gt;In this case, Claude could see the gear structure and complete several tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;identify the gear and center hole;&lt;/li&gt;
&lt;li&gt;measure or estimate related dimensions;&lt;/li&gt;
&lt;li&gt;recommend bearing dimensions;&lt;/li&gt;
&lt;li&gt;judge which structures would affect bearing installation;&lt;/li&gt;
&lt;li&gt;notice that after enlarging the center hole, surrounding screw holes might create geometric interference.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This step matters. It shows that Claude is not blindly editing from text instructions. It can combine the current model view with structural reasoning.&lt;/p&gt;
&lt;h2 id=&#34;specify-material-and-manufacturing-method-in-advance&#34;&gt;Specify Material and Manufacturing Method in Advance
&lt;/h2&gt;&lt;p&gt;If the model will be used for 3D printing, you must clearly tell Claude the material and process.&lt;/p&gt;
&lt;p&gt;For example, when printing with PLA, the bearing hole should not be designed strictly according to CNC metal machining tolerances. For a 6mm bearing that needs a press fit, a hole diameter around &lt;code&gt;6.1mm&lt;/code&gt; may be considered. Whether that size is appropriate still depends on printer accuracy, material shrinkage, slicer settings, and real testing.&lt;/p&gt;
&lt;p&gt;If you do not specify the material, Claude may default to CNC-style tolerances. The resulting hole size may be too small for 3D printing, making assembly difficult.&lt;/p&gt;
&lt;p&gt;A useful prompt might be:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This model is for FDM 3D printing, using PLA.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;The goal is to install a 6mm bearing, so printing tolerance and press fit should be considered.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not handle it as CNC metal machining tolerance.
&lt;/span&gt;&lt;/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;let-claude-modify-the-gear-structure&#34;&gt;Let Claude Modify the Gear Structure
&lt;/h2&gt;&lt;p&gt;After the goal is clear, Claude can perform specific modifications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;enlarge the center hole;&lt;/li&gt;
&lt;li&gt;adjust surrounding screw holes that interfere;&lt;/li&gt;
&lt;li&gt;add a bearing seat;&lt;/li&gt;
&lt;li&gt;add chamfers to edges;&lt;/li&gt;
&lt;li&gt;keep the gear body and key meshing structure unchanged.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case, Claude first produced a plan and then called Fusion 360 to perform modeling operations. For example, after detecting a conflict between the original screw holes and the center hole, it moved the holes slightly outward to protect the bearing installation space.&lt;/p&gt;
&lt;p&gt;After modification, check the model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether the central bearing seat is formed correctly;&lt;/li&gt;
&lt;li&gt;whether surrounding holes still preserve their function;&lt;/li&gt;
&lt;li&gt;whether the gear structure was accidentally damaged;&lt;/li&gt;
&lt;li&gt;whether chamfers affect assembly;&lt;/li&gt;
&lt;li&gt;whether there are overhangs, thin walls, or slicing risks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-bracket-must-be-modified-too&#34;&gt;The Bracket Must Be Modified Too
&lt;/h2&gt;&lt;p&gt;Changing only the gear is not enough. The original bracket had a self-tapping screw hole. If the gear center is converted to a bearing, the bracket must also be changed into a bearing shaft structure.&lt;/p&gt;
&lt;p&gt;You can ask Claude to perform a similar modification on the bracket:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;preserve the overall mounting position;&lt;/li&gt;
&lt;li&gt;convert the original self-tapping screw hole into a cylindrical shaft;&lt;/li&gt;
&lt;li&gt;control shaft diameter and height;&lt;/li&gt;
&lt;li&gt;reserve space for bearing rotation;&lt;/li&gt;
&lt;li&gt;avoid interference with other bracket structures.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After printing, the gear can be pressed into the bearing, and the bracket can provide the new rotation center. The final result changes a screw-fixed structure into a smoother bearing-rotating structure.&lt;/p&gt;
&lt;h2 id=&#34;export-slice-and-print-for-verification&#34;&gt;Export, Slice, and Print for Verification
&lt;/h2&gt;&lt;p&gt;After the CAD modification is done, the actual manufacturing process still matters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Export the modified model from Fusion 360.&lt;/li&gt;
&lt;li&gt;Import it into slicer software.&lt;/li&gt;
&lt;li&gt;Check holes, thin walls, overhangs, and supports.&lt;/li&gt;
&lt;li&gt;Print the gear and bracket.&lt;/li&gt;
&lt;li&gt;Press the bearing into place.&lt;/li&gt;
&lt;li&gt;Check whether rotation is smooth.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AI-edited CAD results cannot be judged only by whether the on-screen model looks good. They must be verified through printing. For mechanical structures such as bearings, holes, clips, and gears, an error at the 0.1mm level can decide whether the part fits and rotates smoothly.&lt;/p&gt;
&lt;h2 id=&#34;usage-suggestions&#34;&gt;Usage Suggestions
&lt;/h2&gt;&lt;p&gt;Claude + Fusion 360 is well suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;making local modifications to existing STEP models;&lt;/li&gt;
&lt;li&gt;adjusting holes, chamfers, brackets, and mounting seats;&lt;/li&gt;
&lt;li&gt;converting screw-fixed structures into bearing, snap-fit, or pin structures;&lt;/li&gt;
&lt;li&gt;correcting tolerances for 3D printed models;&lt;/li&gt;
&lt;li&gt;quickly generating multiple revised versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But it is not suitable for directly producing final parts without inspection. A more reliable workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define the assembly goal and material process yourself.&lt;/li&gt;
&lt;li&gt;Let Claude analyze the structure and propose modifications.&lt;/li&gt;
&lt;li&gt;Let Claude call Fusion to execute modeling.&lt;/li&gt;
&lt;li&gt;Manually check key dimensions and interference.&lt;/li&gt;
&lt;li&gt;Print a small test sample.&lt;/li&gt;
&lt;li&gt;Iterate based on the physical result.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of connecting Claude to Fusion 360 is not replacing CAD fundamentals. It is making local edits to existing models much faster.&lt;/p&gt;
&lt;p&gt;As long as you clearly specify the goal, material, dimensions, tolerance, and assembly method, it can help read the model, find interference, modify structures, add chamfers, and push the model toward a printable state. For 3D printing, open-source mechanical part modification, and small-batch iteration in personal workshops, this AI CAD workflow is already practical.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How Can Codex Use Chinese LLMs? Managing OpenAI-Compatible APIs with CCX</title>
        <link>https://knightli.com/en/2026/05/13/ccx-ai-api-proxy-gateway/</link>
        <pubDate>Wed, 13 May 2026 23:20:40 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/13/ccx-ai-api-proxy-gateway/</guid>
        <description>&lt;p&gt;CCX is an AI API proxy and protocol-conversion gateway. It puts Claude Messages, OpenAI Chat Completions, OpenAI Images, Codex Responses, and Gemini API behind one service entry point, while also providing a web management UI for configuring channels, keys, model mappings, priorities, failover, and traffic monitoring.&lt;/p&gt;
&lt;p&gt;If you use Claude, OpenAI, Gemini, and Codex at the same time, or maintain multiple upstream services compatible with OpenAI API, CCX is valuable because it gives you one entry point and one management layer. Clients connect to a single service address; CCX decides which upstream channel should handle each request.&lt;/p&gt;
&lt;p&gt;Project: &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;what-problem-does-ccx-solve&#34;&gt;What problem does CCX solve?
&lt;/h2&gt;&lt;p&gt;When multiple AI APIs are used together, several problems appear quickly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each provider has different paths, authentication, and request formats.&lt;/li&gt;
&lt;li&gt;One class of models may have multiple upstreams, requiring manual switching of base URL and API key.&lt;/li&gt;
&lt;li&gt;When a key or channel fails, the client usually does not automatically switch to a backup channel.&lt;/li&gt;
&lt;li&gt;In team use, it is hard to centrally manage model allowlists, proxies, custom headers, and request logs.&lt;/li&gt;
&lt;li&gt;When Claude, Gemini, OpenAI Chat, image APIs, and Codex Responses all need to coexist, configuration becomes scattered.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CCX&amp;rsquo;s approach is to consolidate these differences into a proxy layer. Frontend tools, scripts, or business services call CCX; CCX then routes the request to a suitable upstream based on API type, model, channel status, priority, and health.&lt;/p&gt;
&lt;h2 id=&#34;supported-endpoints&#34;&gt;Supported endpoints
&lt;/h2&gt;&lt;p&gt;CCX exposes one backend entry point. The default port is &lt;code&gt;3000&lt;/code&gt;. Main paths include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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 management UI
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GET  /health                   -&amp;gt; Health check
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/api/*                         -&amp;gt; Management 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 proxy
&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 proxy
&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 proxy
&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 generation
&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 editing
&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 variations
&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; Model list
&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 proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;In other words, CCX does not proxy only one protocol. It manages common AI APIs as separate channel types: Messages, Chat, Responses, Gemini, and Images. Different protocols do not share the same health state or log space, which matters when troubleshooting.&lt;/p&gt;
&lt;h2 id=&#34;architecture-overview&#34;&gt;Architecture overview
&lt;/h2&gt;&lt;p&gt;CCX uses a Go backend and Vue 3 frontend. The frontend build is embedded into the backend binary, so it can be deployed on a single port: the same service provides the Web UI, management API, and proxy API.&lt;/p&gt;
&lt;p&gt;A request roughly follows this path:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The main modules can be understood as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;handlers&lt;/code&gt;: receive requests for different protocols and management operations.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;providers&lt;/code&gt;: wrap upstream API request and response handling.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;converters&lt;/code&gt;: handle protocol conversion for scenarios such as Responses.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scheduler&lt;/code&gt;: choose channels based on priority, promotion period, health state, circuit breaker state, and trace affinity.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics&lt;/code&gt;: record request counts, success rate, latency, logs, and circuit breaker state.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;config&lt;/code&gt;: maintain runtime configuration, with hot reload and backup support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The design is not about forcing every API into one format. It proxies each protocol type separately, while unifying management, scheduling, logging, and authentication.&lt;/p&gt;
&lt;h2 id=&#34;ccx-vs-codexbridge&#34;&gt;CCX vs CodexBridge
&lt;/h2&gt;&lt;p&gt;CCX and CodexBridge are both related to Codex and OpenAI-compatible APIs, but they solve different problems.&lt;/p&gt;
&lt;p&gt;CodexBridge is more like a dedicated Codex bridge. Its main goal is to wrap Codex CLI/SDK as an OpenAI-compatible &lt;code&gt;/v1/chat/completions&lt;/code&gt; service, so OpenWebUI, Cherry Studio, scripts, or other OpenAI-compatible clients can call local Codex. In short, CodexBridge focuses on exposing Codex.&lt;/p&gt;
&lt;p&gt;CCX is more like a unified AI API gateway. It does not only handle Codex Responses; it also supports Claude Messages, OpenAI Chat, OpenAI Images, and Gemini API, with a web management UI, channel priority, failover, log monitoring, and multi-key management. In short, CCX focuses on managing multiple models and providers together.&lt;/p&gt;
&lt;p&gt;Quick comparison:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item&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;Core positioning&lt;/td&gt;
          &lt;td&gt;Local Codex bridge&lt;/td&gt;
          &lt;td&gt;Multi-protocol AI API gateway&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Main goal&lt;/td&gt;
          &lt;td&gt;Turn Codex into an OpenAI-compatible endpoint&lt;/td&gt;
          &lt;td&gt;Manage Claude, OpenAI, Gemini, Codex, and other channels together&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Management UI&lt;/td&gt;
          &lt;td&gt;Focuses on the API service itself&lt;/td&gt;
          &lt;td&gt;Provides a web management UI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multi-channel scheduling&lt;/td&gt;
          &lt;td&gt;Not the focus&lt;/td&gt;
          &lt;td&gt;Supports channel priority, failover, and log monitoring&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Best fit&lt;/td&gt;
          &lt;td&gt;Local or single-service Codex calls&lt;/td&gt;
          &lt;td&gt;Teams, multiple keys, multiple providers, multiple protocols&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you only want to connect Codex to OpenWebUI or Cherry Studio, CodexBridge is more direct. If you want to manage Codex, Claude, Gemini, DeepSeek, Qwen, Kimi, and other upstreams together, CCX is a better fit.&lt;/p&gt;
&lt;h2 id=&#34;quick-deployment&#34;&gt;Quick deployment
&lt;/h2&gt;&lt;p&gt;The simplest way is to download the binary. After downloading it, create &lt;code&gt;.env&lt;/code&gt; in the same directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;After startup, open:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If &lt;code&gt;localhost&lt;/code&gt; does not work from WSL, Docker, PowerShell, or another Windows environment, use the Windows host&amp;rsquo;s LAN IPv4 address instead, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;By default, CCX listens on &lt;code&gt;:PORT&lt;/code&gt; for all network interfaces, so access control matters if it is exposed to a LAN.&lt;/p&gt;
&lt;h2 id=&#34;docker-deployment&#34;&gt;Docker deployment
&lt;/h2&gt;&lt;p&gt;Docker is suitable for long-running service deployment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If the repository already has &lt;code&gt;docker-compose.yml&lt;/code&gt;, you can also run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For automatic updates, add the Watchtower configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After deployment, &lt;code&gt;.config&lt;/code&gt; stores runtime configuration and persistent data. Mount it to the host to avoid losing configuration when the container is recreated.&lt;/p&gt;
&lt;h2 id=&#34;running-from-source&#34;&gt;Running from source
&lt;/h2&gt;&lt;p&gt;For development or custom builds:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Common commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Frontend-only development:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Backend-only development:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;key-environment-variables&#34;&gt;Key environment variables
&lt;/h2&gt;&lt;p&gt;Minimal usable configuration usually includes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt; is used for the proxy API and must be changed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt; is used for the Web UI and &lt;code&gt;/api/*&lt;/code&gt;; it should be separate from the proxy key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENABLE_WEB_UI&lt;/code&gt; controls whether the management UI is enabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REQUEST_TIMEOUT&lt;/code&gt; controls request timeout; increase it for long-context or image tasks.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt; controls log verbosity; production usually uses &lt;code&gt;info&lt;/code&gt; or &lt;code&gt;warn&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To limit request body size, check:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Image editing, base64 images, and multimodal requests can all increase request body size.&lt;/p&gt;
&lt;h2 id=&#34;channel-orchestration-and-failover&#34;&gt;Channel orchestration and failover
&lt;/h2&gt;&lt;p&gt;The CCX management UI can configure multiple channels, with options such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Upstream service type.&lt;/li&gt;
&lt;li&gt;API key or multi-key rotation.&lt;/li&gt;
&lt;li&gt;Proxy address.&lt;/li&gt;
&lt;li&gt;Custom request headers.&lt;/li&gt;
&lt;li&gt;Model allowlist.&lt;/li&gt;
&lt;li&gt;Route prefix.&lt;/li&gt;
&lt;li&gt;Priority.&lt;/li&gt;
&lt;li&gt;Health checks and circuit-breaker recovery.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scheduling considers channel state, priority, promotion period, trace affinity, circuit-breaker state, and available keys. In simple terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under normal conditions, higher-priority channels are used first.&lt;/li&gt;
&lt;li&gt;If one channel fails, CCX can fail over to a backup channel.&lt;/li&gt;
&lt;li&gt;Circuit breaking avoids repeatedly hitting an obviously unavailable upstream.&lt;/li&gt;
&lt;li&gt;Trace affinity tries to keep related sessions on suitable channels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These features are useful when you have multiple keys, providers, or regional upstreams. For personal lightweight use, you can also configure only one channel and use CCX as a proxy layer with a Web UI.&lt;/p&gt;
&lt;h2 id=&#34;logs-and-monitoring&#34;&gt;Logs and monitoring
&lt;/h2&gt;&lt;p&gt;CCX provides channel metrics and request logs, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Request volume.&lt;/li&gt;
&lt;li&gt;Success rate.&lt;/li&gt;
&lt;li&gt;Failure rate.&lt;/li&gt;
&lt;li&gt;Average latency.&lt;/li&gt;
&lt;li&gt;Historical data by model.&lt;/li&gt;
&lt;li&gt;Channel status and circuit-breaker state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For production, use relatively conservative logging:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This keeps basic request information while avoiding full response content in logs. You can temporarily enable more detailed logs for troubleshooting, but restore the safer configuration afterward, especially in production.&lt;/p&gt;
&lt;h2 id=&#34;security-recommendations&#34;&gt;Security recommendations
&lt;/h2&gt;&lt;p&gt;CCX is a proxy gateway and stores upstream API keys, so deployment should not stop at &amp;ldquo;it runs.&amp;rdquo; At minimum:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not use a default or short &lt;code&gt;PROXY_ACCESS_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set a separate &lt;code&gt;ADMIN_ACCESS_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Do not expose the Web UI directly to the public internet.&lt;/li&gt;
&lt;li&gt;If public access is required, place it behind a reverse proxy, VPN, access control, or SSO.&lt;/li&gt;
&lt;li&gt;Do not commit &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.config&lt;/code&gt;, or log files to Git.&lt;/li&gt;
&lt;li&gt;Do not keep full request and response body logging enabled in production.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can generate random keys like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;who-should-use-it&#34;&gt;Who should use it?
&lt;/h2&gt;&lt;p&gt;CCX is better suited to these scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maintaining Claude, OpenAI, Gemini, Codex, or image APIs at the same time.&lt;/li&gt;
&lt;li&gt;Having multiple API keys that need rotation, routing, and failover.&lt;/li&gt;
&lt;li&gt;Managing upstream channels through a Web UI instead of editing config files manually.&lt;/li&gt;
&lt;li&gt;Observing success rate, latency, and logs for each channel.&lt;/li&gt;
&lt;li&gt;Providing one unified AI API entry point for a team.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only call one model occasionally on your own machine, the official SDK or a single OpenAI-compatible proxy is simpler. CCX&amp;rsquo;s advantage is multi-channel, multi-protocol, unified operation.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;CCX is an AI API gateway, not a client for one specific model. It puts Claude Messages, OpenAI Chat, OpenAI Images, Codex Responses, and Gemini into one proxy layer, with channel orchestration, failover, logs, monitoring, and a Web management UI.&lt;/p&gt;
&lt;p&gt;For individuals, it reduces the trouble of switching API addresses and keys. For teams or long-running services, it is closer to a lightweight AI gateway. Before production use, the important work is not only configuring models, but also securing keys, the management entry point, logging levels, channel priority, and failover strategy.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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;Architecture notes: &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;Environment variables: &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>How Can Codex Use Chinese LLMs? OpenAI-Compatible APIs and the CodexBridge Approach</title>
        <link>https://knightli.com/en/2026/05/13/codexbridge-openai-compatible-api/</link>
        <pubDate>Wed, 13 May 2026 23:08:28 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/13/codexbridge-openai-compatible-api/</guid>
        <description>&lt;p&gt;CodexBridge is a local bridge for exposing Codex CLI/SDK as an OpenAI-compatible HTTP service. With it, Codex no longer has to live only in the terminal. OpenWebUI, Cherry Studio, scripts, automation systems, or any client that supports OpenAI Chat Completions can call it.&lt;/p&gt;
&lt;p&gt;The two core endpoints are &lt;code&gt;/v1/chat/completions&lt;/code&gt; and &lt;code&gt;/v1/models&lt;/code&gt;. The former handles conversations and supports both normal and SSE streaming responses. The latter lets clients discover models in the same way they read an OpenAI-style model list. For tools that already support OpenAI APIs, this usually means changing only the base URL, API key, and model name.&lt;/p&gt;
&lt;p&gt;Project: &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;what-it-is-useful-for&#34;&gt;What it is useful for
&lt;/h2&gt;&lt;p&gt;CodexBridge is useful when you want to plug Codex into existing AI clients or workflows. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select Codex directly in OpenWebUI or Cherry Studio.&lt;/li&gt;
&lt;li&gt;Call local Codex from &lt;code&gt;curl&lt;/code&gt;, Python, Node.js, or other scripts.&lt;/li&gt;
&lt;li&gt;Let one frontend connect to OpenAI, Ollama, other compatible APIs, and Codex at the same time.&lt;/li&gt;
&lt;li&gt;Keep Codex&amp;rsquo;s local threads, sandbox, working directory, and approval behavior.&lt;/li&gt;
&lt;li&gt;Provide a unified &lt;code&gt;/v1/chat/completions&lt;/code&gt; endpoint for internal tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not a new LLM, and it is not a full replacement for Codex CLI. More precisely, it is an adapter layer: Codex remains the upstream engine, while the bridge converts OpenAI-style requests into conversation input that Codex can handle.&lt;/p&gt;
&lt;h2 id=&#34;basic-requirements&#34;&gt;Basic requirements
&lt;/h2&gt;&lt;p&gt;You need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 or later.&lt;/li&gt;
&lt;li&gt;Codex CLI installed and logged in.&lt;/li&gt;
&lt;li&gt;npm, or pnpm / yarn if you prefer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Basic source deployment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Then edit &lt;code&gt;.env&lt;/code&gt; or &lt;code&gt;.env.local&lt;/code&gt; to set the API key, default model, working directory, sandbox mode, network access, and related options.&lt;/p&gt;
&lt;p&gt;Start the HTTP service:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The default port is &lt;code&gt;8080&lt;/code&gt;, and it can be changed with &lt;code&gt;PORT&lt;/code&gt;. After startup, the service exposes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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-conversation-mode&#34;&gt;CLI conversation mode
&lt;/h2&gt;&lt;p&gt;Besides the HTTP service, CodexBridge also includes a lightweight 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;You can type natural-language messages directly. Two useful commands are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/reset&lt;/code&gt;: create a new Codex thread.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/exit&lt;/code&gt;: exit the CLI.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The current thread ID is stored in &lt;code&gt;.codex_thread.json&lt;/code&gt;. If this file still exists the next time the CLI starts, the previous conversation can continue.&lt;/p&gt;
&lt;h2 id=&#34;http-example&#34;&gt;HTTP example
&lt;/h2&gt;&lt;p&gt;A minimal request looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Key points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The token in &lt;code&gt;authorization&lt;/code&gt; must match &lt;code&gt;CODEX_BRIDGE_API_KEY&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt; can include reasoning effort, such as &lt;code&gt;gpt-5-codex:medium&lt;/code&gt; or &lt;code&gt;gpt-5-codex:high&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;session_id&lt;/code&gt; binds the request to a conversation and allows reuse of the same Codex thread.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For streaming output, add &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;Explain step by step how to create a Node.js project&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;For clients that support OpenAI streaming responses, this feels much closer to a normal chat experience.&lt;/p&gt;
&lt;h2 id=&#34;how-sessions-are-persisted&#34;&gt;How sessions are persisted
&lt;/h2&gt;&lt;p&gt;Session mapping is one of CodexBridge&amp;rsquo;s important features. A request can pass a session ID through these fields:&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;It can also be passed through request headers:&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;For production use, enable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;This requires every request to include a session ID, preventing different users or chat windows from being mixed into the same temporary context. The bridge-side mapping is saved in &lt;code&gt;.codex_threads.json&lt;/code&gt;. Deleting this file resets the bridge mapping, while Codex&amp;rsquo;s own threads remain under &lt;code&gt;~/.codex/sessions&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;CODEX_REQUIRE_SESSION_ID=false&lt;/code&gt; and the request provides no session ID, the bridge expands the current &lt;code&gt;messages&lt;/code&gt; into one-off input for Codex. This is fine for temporary calls, but not for long-running conversations.&lt;/p&gt;
&lt;h2 id=&#34;multimodal-input&#34;&gt;Multimodal input
&lt;/h2&gt;&lt;p&gt;CodexBridge supports OpenAI-style content blocks and converts images into Codex-compatible &lt;code&gt;local_image&lt;/code&gt; input.&lt;/p&gt;
&lt;p&gt;Remote images can be written as:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Local images can be written as:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Remote resources are downloaded into a temporary directory and cleaned up after the turn. In real use, watch the request body size, especially when sending base64 images. You may need to increase &lt;code&gt;CODEX_JSON_LIMIT&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;structured-output&#34;&gt;Structured output
&lt;/h2&gt;&lt;p&gt;If the client supports &lt;code&gt;response_format&lt;/code&gt;, CodexBridge can map it to Codex&amp;rsquo;s &lt;code&gt;outputSchema&lt;/code&gt;. This is useful when you want Codex to return a fixed JSON structure, such as a check result, summary, classification result, or automation report.&lt;/p&gt;
&lt;p&gt;A minimal example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Check lint issues under src/ and return the result as 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; must include a &lt;code&gt;schema&lt;/code&gt;, otherwise the service returns 400.&lt;/p&gt;
&lt;h2 id=&#34;key-environment-variables&#34;&gt;Key environment variables
&lt;/h2&gt;&lt;p&gt;Common configuration can be grouped as follows.&lt;/p&gt;
&lt;p&gt;Service and authentication:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Default model:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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 runtime:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Network access:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;If the service is only used for frontend chat, keeping network access off by default is safer. Enable these switches only when Codex clearly needs to run &lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;git clone&lt;/code&gt;, or web search.&lt;/p&gt;
&lt;h2 id=&#34;docker-and-one-line-scripts&#34;&gt;Docker and one-line scripts
&lt;/h2&gt;&lt;p&gt;The project also provides Docker deployment for long-running service use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;It also provides a Linux install script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The script installs dependencies, clones or updates the repository, copies &lt;code&gt;.env.example&lt;/code&gt;, and starts the service with Docker Compose. It requires &lt;code&gt;sudo&lt;/code&gt;, so it is best suited to a clean server. If the machine already has a complex Node.js, Docker, or Codex setup, read the script before running it.&lt;/p&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common issues
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Request returns 413&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The request body is usually too large, often because of base64 images. Increase:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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 is rejected&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Check that the request header includes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;your 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;or use &lt;code&gt;x-api-key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex reports a Git repository restriction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the working directory is not a trusted repository, Codex may trigger a check. Use this only in an environment you trust:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Reset conversations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The bridge mapping lives in &lt;code&gt;.codex_threads.json&lt;/code&gt;, while Codex&amp;rsquo;s own threads live in &lt;code&gt;~/.codex/sessions&lt;/code&gt;. Stop the service and delete the corresponding files or directories to reset them.&lt;/p&gt;
&lt;h2 id=&#34;recommendations&#34;&gt;Recommendations
&lt;/h2&gt;&lt;p&gt;For local testing, start with the default API key and the &lt;code&gt;read-only&lt;/code&gt; sandbox. After OpenWebUI, Cherry Studio, or scripts can call the service normally, gradually adjust &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;, and &lt;code&gt;CODEX_APPROVAL_POLICY&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For multi-user use, do at least three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Require &lt;code&gt;session_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change the default API key.&lt;/li&gt;
&lt;li&gt;Clearly limit the working directory and sandbox permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CodexBridge is valuable not because it is complex, but because it places Codex inside the existing OpenAI-compatible ecosystem. If a client can change its base URL, it can treat Codex like a normal chat model while still retaining Codex&amp;rsquo;s local threads, sandbox, and tool behavior.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Can Sulphur 2 Run on 8GB VRAM? Notes on Local Deployment of an LTX 2.3 Video Model</title>
        <link>https://knightli.com/en/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/en/2026/05/12/sulphur-2-ltx-2-3-video-generation/</guid>
        <description>&lt;p&gt;SulphurAI has released &lt;code&gt;Sulphur-2-base&lt;/code&gt; on Hugging Face. According to the model card, Sulphur 2 is a video generation model based on LTX 2.3. It is positioned as an uncensored video generation model, natively supports text-to-video and image-to-video, and is compatible with other LTX 2.3 formats.&lt;/p&gt;
&lt;p&gt;Model page: &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;what-is-sulphur-2&#34;&gt;What Is Sulphur 2?
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is not a general-purpose chat model. It is centered on video generation workflows and provides model weights plus related tools. The key points from the model card are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Based on LTX 2.3.&lt;/li&gt;
&lt;li&gt;Supports text-to-video and image-to-video.&lt;/li&gt;
&lt;li&gt;Provides a prompt enhancer for improving prompts.&lt;/li&gt;
&lt;li&gt;The Hugging Face page exposes entry points for Diffusers, llama.cpp, Ollama, LM Studio, Jan, and more.&lt;/li&gt;
&lt;li&gt;The model files include GGUF-related assets, making them easier to load with some local tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, it is aimed more at video generation enthusiasts and workflow builders than at ordinary users looking for a one-click web product.&lt;/p&gt;
&lt;h2 id=&#34;the-relationship-between-sulphur-2-and-ltx-23&#34;&gt;The Relationship Between Sulphur 2 and LTX 2.3
&lt;/h2&gt;&lt;p&gt;To understand Sulphur 2, it is best to place it inside the LTX 2.3 ecosystem.&lt;/p&gt;
&lt;p&gt;LTX 2.3 is the underlying video generation model line. It determines the supported input types, model components, and workflow structure. Sulphur 2 is a variant released on top of that foundation, focusing on text-to-video, image-to-video, and related workflows.&lt;/p&gt;
&lt;p&gt;So Sulphur 2 is not a completely independent new tool, nor is it a regular chat model. It is closer to a model package in the LTX 2.3 ecosystem: you still need to choose the right frontend, nodes, weight version, and parameters before you can actually generate video.&lt;/p&gt;
&lt;p&gt;That also explains why it has a higher barrier than web-based generation tools. Web tools hide models, parameters, VRAM scheduling, and retries on the backend; local deployment means you have to handle those details yourself.&lt;/p&gt;
&lt;h2 id=&#34;why-it-is-worth-watching&#34;&gt;Why It Is Worth Watching
&lt;/h2&gt;&lt;p&gt;The LTX family is already known for efficient video generation. Since Sulphur 2 is based on LTX 2.3, it naturally fits existing LTX workflows. For ComfyUI, Diffusers, or local inference users, the value is mainly in controllability and the ability to modify workflows.&lt;/p&gt;
&lt;p&gt;Another point is the prompt enhancer. Video generation is highly sensitive to prompts. The same subject, camera movement, action, style, and quality description can produce very different results depending on wording. By including a prompt enhancer, Sulphur 2 is clearly trying to help users turn ordinary descriptions into prompts that the model can handle more reliably.&lt;/p&gt;
&lt;h2 id=&#34;suggestions-from-the-model-card&#34;&gt;Suggestions From the Model Card
&lt;/h2&gt;&lt;p&gt;The official model card recommends starting with the dev version, such as &lt;code&gt;fp8mixed&lt;/code&gt; or &lt;code&gt;bf16&lt;/code&gt;, and using the provided distill lora. It also warns that if you use the LoRA, you should not load the duplicate full-model components at the same time, otherwise the workflow may stack the same capability twice.&lt;/p&gt;
&lt;p&gt;The prompt enhancer is closer to a local tooling workflow. The model card says you can create a &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; directory inside LM Studio&amp;rsquo;s model folder, put the &lt;code&gt;gguf&lt;/code&gt; and &lt;code&gt;mmproj&lt;/code&gt; files there, and load the enhancer. It does not require a system prompt; you send the text you want to enhance directly, and images can also be attached.&lt;/p&gt;
&lt;h2 id=&#34;local-runtime-entry-points&#34;&gt;Local Runtime Entry Points
&lt;/h2&gt;&lt;p&gt;The Hugging Face page lists several common local entry points. With &lt;code&gt;llama.cpp&lt;/code&gt;, for example, you can start a local server from the model repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;You can also run it from the terminal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For Ollama, the entry point is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;These commands are closer to automatically generated Hugging Face loading examples. Whether they run smoothly depends on your VRAM, model file version, quantization format, and tool compatibility. Video generation models are usually much heavier than text-only models, so for the first attempt it is better to follow the model card&amp;rsquo;s recommended version and workflow instead of mixing weights from different sources.&lt;/p&gt;
&lt;h2 id=&#34;choosing-a-test-environment-comfyui-diffusers-or-gguf&#34;&gt;Choosing a Test Environment: ComfyUI, Diffusers, or GGUF
&lt;/h2&gt;&lt;p&gt;If you only want to see results quickly, first look for a community ComfyUI workflow. ComfyUI is visual, so models, LoRA, samplers, resolution, frame count, and post-processing nodes can all be laid out in one graph. That makes it useful for debugging video generation.&lt;/p&gt;
&lt;p&gt;If you are more comfortable with Python, or if you want to connect Sulphur 2 to your own scripts, Diffusers is a better fit. It is reproducible and easier to automate, so it works well for batch parameter tests and for recording VRAM usage and generation time under different settings.&lt;/p&gt;
&lt;p&gt;GGUF, llama.cpp, Ollama, and LM Studio are more suitable for the prompt enhancer or text-side components. Do not assume that GGUF alone means the full video generation pipeline is covered. Video models often involve vision models, VAE, sampling flows, and frame generation components. GGUF is only one part of the local loading and lightweight tooling ecosystem.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beginners should first look for a ComfyUI workflow.&lt;/li&gt;
&lt;li&gt;Script users can use Diffusers for reproducible and batch tests.&lt;/li&gt;
&lt;li&gt;Use GGUF / LM Studio / Ollama mainly for prompt enhancers or text enhancers.&lt;/li&gt;
&lt;li&gt;When unsure, follow the dev version and LoRA combination recommended in the model card.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;can-8gb-vram-run-it-it-depends-on-version-and-workflow&#34;&gt;Can 8GB VRAM Run It? It Depends on Version and Workflow
&lt;/h2&gt;&lt;p&gt;Whether Sulphur 2 can run on 8GB VRAM depends not only on the model name, but also on the exact version, quantization method, resolution, frame count, batch size, and workflow.&lt;/p&gt;
&lt;p&gt;In general, video generation consumes more VRAM than image generation because it is not generating a single image. It needs to handle multiple frames, temporal consistency, and video-related intermediate states. Even if the model itself has lighter versions, adding LoRA, higher resolution, longer frame counts, or extra post-processing nodes can quickly exceed 8GB.&lt;/p&gt;
&lt;p&gt;If you only have 8GB VRAM, try reducing pressure in these ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer &lt;code&gt;fp8mixed&lt;/code&gt;, quantized versions, or community low-VRAM workflows.&lt;/li&gt;
&lt;li&gt;Lower the resolution and first confirm that the pipeline can run at a small size.&lt;/li&gt;
&lt;li&gt;Reduce the frame count; do not start with long videos.&lt;/li&gt;
&lt;li&gt;Set batch size to 1.&lt;/li&gt;
&lt;li&gt;Disable unnecessary enhancement and post-processing nodes at first.&lt;/li&gt;
&lt;li&gt;Use CPU offload, low-VRAM mode, or framework-provided memory optimizations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So a more accurate version of &amp;ldquo;8GB VRAM can run it&amp;rdquo; is: under a low-memory version, lower resolution, shorter frame count, and simplified workflow, it may run; but it is not realistic to expect high-resolution, long-video, complex workflows on 8GB.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-the-prompt-enhancer&#34;&gt;How to Use the Prompt Enhancer
&lt;/h2&gt;&lt;p&gt;The Sulphur 2 model card specifically mentions a prompt enhancer. Its job is not to generate videos, but to rewrite ordinary prompts into prompts that the model can understand better.&lt;/p&gt;
&lt;p&gt;Video prompts usually need to describe the subject, action, camera, scene, lighting, style, and quality. If the prompt is too short, the model may miss the important parts. A prompt enhancer can expand a simple description into a more complete video generation prompt and improve stability.&lt;/p&gt;
&lt;p&gt;The model card suggests creating a &lt;code&gt;Sulphur/promptenhancer&lt;/code&gt; directory inside the LM Studio model directory, putting the corresponding &lt;code&gt;gguf&lt;/code&gt; and &lt;code&gt;mmproj&lt;/code&gt; files there, and loading the enhancer. It does not require a system prompt; send the text you want to enhance directly, and images can be attached too.&lt;/p&gt;
&lt;p&gt;You can think of it as a prompt preprocessor:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;plain description -&amp;gt; prompt enhancer -&amp;gt; fuller video prompt -&amp;gt; Sulphur 2 workflow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you are only testing whether the model can run, the prompt enhancer is not the first priority. Get the main workflow running first, then use it to improve prompts. That makes troubleshooting much easier.&lt;/p&gt;
&lt;h2 id=&#34;common-local-deployment-failures&#34;&gt;Common Local Deployment Failures
&lt;/h2&gt;&lt;p&gt;Local deployment of models like Sulphur 2 usually fails for more than one possible reason. Common pitfalls include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model version and workflow mismatch, such as using weights different from the dev version expected by the workflow.&lt;/li&gt;
&lt;li&gt;Loading both LoRA and duplicate full-model components, causing abnormal behavior or excessive VRAM usage.&lt;/li&gt;
&lt;li&gt;Insufficient VRAM, especially with high resolution, long frame counts, or complex nodes.&lt;/li&gt;
&lt;li&gt;Tool versions are too old, such as incompatible ComfyUI nodes, Diffusers, Transformers, or Accelerate.&lt;/li&gt;
&lt;li&gt;Missing supporting files such as VAE, text encoder, &lt;code&gt;mmproj&lt;/code&gt;, or prompt enhancer files.&lt;/li&gt;
&lt;li&gt;File paths or directory structure do not match tool requirements.&lt;/li&gt;
&lt;li&gt;Copying a Hugging Face command without confirming whether it applies to the main video generation pipeline or only to a text-side component.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When troubleshooting, go step by step: verify model files, confirm the workflow&amp;rsquo;s expected version, lower resolution and frame count, then add LoRA, prompt enhancer, and post-processing nodes gradually. Change only one variable at a time; it is the easiest way to locate problems.&lt;/p&gt;
&lt;h2 id=&#34;who-should-try-it&#34;&gt;Who Should Try It?
&lt;/h2&gt;&lt;p&gt;Sulphur 2 is better suited for users who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Already use LTX, ComfyUI, Diffusers, or local video generation workflows.&lt;/li&gt;
&lt;li&gt;Want to try text-to-video or image-to-video and can handle manual model setup.&lt;/li&gt;
&lt;li&gt;Need an uncensored video generation model and understand the boundaries of using one.&lt;/li&gt;
&lt;li&gt;Want to study how prompt enhancers improve video prompts.&lt;/li&gt;
&lt;li&gt;Have enough VRAM or are willing to try quantized versions and local inference tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want to quickly generate short videos, online products are still easier. Sulphur 2 is more suitable for people willing to experiment with models, nodes, LoRA, prompts, and local environments.&lt;/p&gt;
&lt;h2 id=&#34;notes-before-using-it&#34;&gt;Notes Before Using It
&lt;/h2&gt;&lt;p&gt;First, the model card is still being updated. The author also mentions that the README will later include fuller setup instructions and training details, so the latest model card and file list should be treated as the source of truth.&lt;/p&gt;
&lt;p&gt;Second, do not judge whether it can run just from a single Hugging Face command. Video generation involves the main model, VAE, LoRA, prompt enhancer, sampling parameters, resolution, frame count, and VRAM usage. A mismatch in any one of these can cause failure.&lt;/p&gt;
&lt;p&gt;Third, an uncensored model does not mean unlimited use. Generated content still needs to follow the rules of the platform, community, and law. Be especially careful with real people, copyrighted characters, minors, violence, and privacy-related content.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Sulphur 2 has a clear position: it is not a chat model, but a model release for the LTX 2.3 video generation ecosystem. Its appeal lies in text-to-video and image-to-video support, plus the prompt enhancer, local tool entry points, and recommended workflows.&lt;/p&gt;
&lt;p&gt;For ordinary users, the threshold is not low. For local video generation users, it is worth adding to the test list. The actual experience will depend on the workflow, VRAM configuration, prompt quality, and whether the README and community examples become more complete.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Hugging Face model page: &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 reference page: &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>Running DeepSeek 4 Locally: Antirez&#39;s ds4 Experiment on Apple Silicon Mac</title>
        <link>https://knightli.com/en/2026/05/11/deepseek-v4-flash-ds4-metal/</link>
        <pubDate>Mon, 11 May 2026 08:51:37 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/11/deepseek-v4-flash-ds4-metal/</guid>
        <description>&lt;p&gt;Antirez has open sourced a new project: &lt;code&gt;ds4&lt;/code&gt;. It is not a general-purpose LLM framework, but a local inference engine for DeepSeek V4 Flash, with a focus on Apple Silicon and the Metal backend.&lt;/p&gt;
&lt;p&gt;Project URL: &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;what-is-ds4&#34;&gt;What is ds4?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; has a clear goal: running DeepSeek V4 Flash locally on a Mac.&lt;/p&gt;
&lt;p&gt;It currently provides three ways to use it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interactive CLI.&lt;/li&gt;
&lt;li&gt;HTTP server.&lt;/li&gt;
&lt;li&gt;An experimental Agent mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Judging from its positioning, it is more like an inference project deeply optimized for one specific model than a replacement for general-purpose tools such as &lt;code&gt;llama.cpp&lt;/code&gt;, Ollama, or vLLM.&lt;/p&gt;
&lt;h2 id=&#34;why-it-is-worth-watching&#34;&gt;Why it is worth watching
&lt;/h2&gt;&lt;p&gt;There are three main reasons this kind of project is worth following.&lt;/p&gt;
&lt;p&gt;First, the author is Antirez, the creator of Redis. He has long focused on low-level systems, performance, and simple tools, and his projects are usually quite direct in style.&lt;/p&gt;
&lt;p&gt;Second, DeepSeek V4 Flash points toward efficient inference. If the local running experience is good enough, it could be very attractive for Mac users.&lt;/p&gt;
&lt;p&gt;Third, &lt;code&gt;ds4&lt;/code&gt; directly targets Apple Metal. Compared with the route of supporting every platform first and optimizing later, it feels more like a project trying to go deep on one well-defined scenario.&lt;/p&gt;
&lt;h2 id=&#34;who-should-try-it&#34;&gt;Who should try it
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; is better suited for users who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use an Apple Silicon Mac.&lt;/li&gt;
&lt;li&gt;Want to run DeepSeek V4 Flash locally.&lt;/li&gt;
&lt;li&gt;Care about Metal inference performance.&lt;/li&gt;
&lt;li&gt;Are willing to try an alpha-stage project.&lt;/li&gt;
&lt;li&gt;Want to study lightweight inference engines and model runtime details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is stable deployment, cross-platform operation, or OpenAI API-compatible infrastructure, it may not be the first choice at this stage. It is better treated as an experimental tool and a technical project to watch.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-it&#34;&gt;How to use it
&lt;/h2&gt;&lt;p&gt;The basic workflow in the project README is to build it first, then run it.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Run it interactively:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Start the 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 mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For exact parameters and model file preparation, follow the repository README, because the project is still changing quickly.&lt;/p&gt;
&lt;h2 id=&#34;current-risks&#34;&gt;Current risks
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ds4&lt;/code&gt; is still at an early stage, so set expectations before using it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Features may be incomplete.&lt;/li&gt;
&lt;li&gt;Parameters, model formats, and command-line behavior may change.&lt;/li&gt;
&lt;li&gt;Compatibility mainly revolves around Apple Silicon and Metal.&lt;/li&gt;
&lt;li&gt;Agent mode is more experimental and is not suitable for direct production use.&lt;/li&gt;
&lt;li&gt;When something breaks, you may need to read the README, issues, or source code yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, it is currently more of an open source experiment worth trying than a one-click tool for ordinary users.&lt;/p&gt;
&lt;h2 id=&#34;how-it-differs-from-general-inference-tools&#34;&gt;How it differs from general inference tools
&lt;/h2&gt;&lt;p&gt;General-purpose inference tools usually aim for broad compatibility across model formats, platforms, backends, and APIs. &lt;code&gt;ds4&lt;/code&gt; takes a narrower path: local DeepSeek V4 Flash inference on Metal.&lt;/p&gt;
&lt;p&gt;That choice has both benefits and trade-offs.&lt;/p&gt;
&lt;p&gt;The benefit is that the implementation can stay focused, making performance and user experience easier to optimize around a single target. The trade-off is a limited scope: it is not meant to run every possible model, nor to replace a complete deployment platform.&lt;/p&gt;
&lt;p&gt;If you already use &lt;code&gt;llama.cpp&lt;/code&gt; or Ollama, &lt;code&gt;ds4&lt;/code&gt; is better treated as a supplementary testing tool, not an immediate replacement for your existing workflow.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The interesting part of &lt;code&gt;ds4&lt;/code&gt; is not that it is yet another local LLM tool. It is that its scope is intentionally narrow: DeepSeek V4 Flash, Apple Silicon, Metal, and local inference.&lt;/p&gt;
&lt;p&gt;If you have a suitable Mac and are willing to tinker with an early-stage project, it is worth watching its performance, model support approach, and server/agent capabilities. For production environments, it is better to keep observing until the interfaces and usage patterns become more stable.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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>Why DeepSeek Became the Cost-Saving Key in This Round of AI Coding Tools</title>
        <link>https://knightli.com/en/2026/05/11/deepseek-ai-coding-cost-saving/</link>
        <pubDate>Mon, 11 May 2026 04:59:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/11/deepseek-ai-coding-cost-saving/</guid>
        <description>&lt;p&gt;In this round of AI coding tool competition, the surface battle is about model capability, plugin ecosystems, and agent automation. But once you actually use these tools, the first wall you hit is cost.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, OpenClaw, and Superpowers are all useful, but they share one trait: once a task becomes complex, they eat tokens aggressively. They need to read the project, build a plan, call tools, summarize context, repeatedly check results, and sometimes launch multiple subtasks. The smarter the model and the more automated the workflow, the easier it is for the bill to quietly grow.&lt;/p&gt;
&lt;p&gt;That is why DeepSeek has become important in this cycle. Not merely because it can write code, but because its long context and cache pricing happen to hit the most expensive part of AI coding tools.&lt;/p&gt;
&lt;h2 id=&#34;why-agent-tools-burn-so-many-tokens&#34;&gt;Why Agent Tools Burn So Many Tokens
&lt;/h2&gt;&lt;p&gt;Traditional chat-style coding assistants usually work in question-and-answer mode. You ask how to write a function, and the model returns a code snippet. This still costs tokens, but it is relatively controllable.&lt;/p&gt;
&lt;p&gt;Agent tools are different. They do not just answer questions. They enter the project like a temporary engineer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scan directories and key files;&lt;/li&gt;
&lt;li&gt;understand the requirement and existing architecture;&lt;/li&gt;
&lt;li&gt;make a plan;&lt;/li&gt;
&lt;li&gt;modify files;&lt;/li&gt;
&lt;li&gt;run commands or tests;&lt;/li&gt;
&lt;li&gt;keep fixing based on errors;&lt;/li&gt;
&lt;li&gt;summarize what changed at the end.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During this process, the model repeatedly reads the same context. Project descriptions, code snippets, tool outputs, conversation history, plans, and error logs all get placed back into the context. Once the task is a little complex, hundreds of thousands of tokens can disappear quickly.&lt;/p&gt;
&lt;p&gt;If you add more aggressive plugins, the cost becomes even more obvious. Some OpenCode or Claude Code enhancement tools may organize a whole agent team by default. You only wanted to change a small feature, but it may still start planning, review, execution, and retrospective steps. The task may look more &amp;ldquo;intelligent&amp;rdquo;, but the token count keeps climbing.&lt;/p&gt;
&lt;h2 id=&#34;the-advantage-of-superpowers-is-on-demand-activation&#34;&gt;The Advantage of Superpowers Is On-Demand Activation
&lt;/h2&gt;&lt;p&gt;One advantage of tools like Superpowers is that they do not force a full agent workflow onto every task.&lt;/p&gt;
&lt;p&gt;Most of the time, you can still let Claude Code, OpenCode, or Codex work in their normal mode. Only when you explicitly call a skill, such as brainstorming, planning, executing a plan, or doing a retrospective, does it enter a heavier automation flow.&lt;/p&gt;
&lt;p&gt;That matters for cost.&lt;/p&gt;
&lt;p&gt;AI coding should not use heavy artillery for every task. Changing one config line, checking one error, or writing a small script can be handled through ordinary conversation. Only complex refactors, cross-file changes, long-document processing, and multi-round validation deserve a full agent workflow.&lt;/p&gt;
&lt;p&gt;The stronger the tool, the more you need to control when it triggers. Otherwise, more automation simply means more waste.&lt;/p&gt;
&lt;h2 id=&#34;deepseeks-key-advantage-is-cheap-cache-hits&#34;&gt;DeepSeek&amp;rsquo;s Key Advantage Is Cheap Cache Hits
&lt;/h2&gt;&lt;p&gt;One important reason DeepSeek fits these agent tools is its low cache-hit cost.&lt;/p&gt;
&lt;p&gt;AI coding tasks contain a lot of repeated prefixes: project background, system prompts, tool instructions, file content, and earlier conversation turns often appear again in later requests. If the model service supports prompt caching, those repeated parts become much cheaper after a cache hit.&lt;/p&gt;
&lt;p&gt;For many models, a cache hit is only somewhat cheaper than a miss, perhaps around one third of the original price. DeepSeek&amp;rsquo;s advantage is that the gap after a cache hit can be much larger. For long-context, multi-round agent workflows that repeatedly read the same project, this gap shows up directly on the bill.&lt;/p&gt;
&lt;p&gt;In other words, DeepSeek is not necessarily the strongest answer on every single turn. But in scenarios with long tasks, many rounds, and repeated context reads, its cost structure is unusually suitable for AI coding.&lt;/p&gt;
&lt;h2 id=&#34;long-context-makes-claude-code-more-useful&#34;&gt;Long Context Makes Claude Code More Useful
&lt;/h2&gt;&lt;p&gt;When Claude Code or similar tools are connected to DeepSeek V4, another clear advantage is long context.&lt;/p&gt;
&lt;p&gt;AI coding tools fear insufficient context. Once context runs short, compression becomes frequent. Once compression becomes frequent, previously read details may be lost. The model may start forgetting the project structure, constraints, or why a certain file was changed, and quality declines afterward.&lt;/p&gt;
&lt;p&gt;DeepSeek V4&amp;rsquo;s long-context capability makes it better suited for code repositories, document batch processing, subtitle translation, and site article cleanup. Especially when connected to tools like Claude Code or OpenClaw, the right configuration can delay context compression and preserve more project detail.&lt;/p&gt;
&lt;p&gt;That is why some tasks feel &amp;ldquo;durable&amp;rdquo; when run on DeepSeek. It may not be dazzling at every step, but it can tolerate long-running, low-cost, repeated calls.&lt;/p&gt;
&lt;h2 id=&#34;how-to-split-work-between-v4-pro-and-v4-flash&#34;&gt;How to Split Work Between V4 Pro and V4 Flash
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro and V4 Flash should not be mixed casually.&lt;/p&gt;
&lt;p&gt;For simple tasks, &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; is usually a better fit. It is fast and cheap, and is often enough for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;subtitle translation;&lt;/li&gt;
&lt;li&gt;document cleanup;&lt;/li&gt;
&lt;li&gt;ordinary script generation;&lt;/li&gt;
&lt;li&gt;small code edits;&lt;/li&gt;
&lt;li&gt;lightweight OpenClaw tasks;&lt;/li&gt;
&lt;li&gt;simple site content processing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For complex tasks, consider &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;large-scale refactoring;&lt;/li&gt;
&lt;li&gt;multi-module code understanding;&lt;/li&gt;
&lt;li&gt;complex reasoning;&lt;/li&gt;
&lt;li&gt;long-chain agent tasks;&lt;/li&gt;
&lt;li&gt;high-risk code changes;&lt;/li&gt;
&lt;li&gt;engineering tasks that require stronger planning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Many people want to attach the strongest model immediately, but that is often uneconomical. The practical way to use AI coding tools is to layer tasks: let the cheaper model handle a large amount of routine work, and reserve the expensive model for key decision points.&lt;/p&gt;
&lt;h2 id=&#34;minimax-doubao-and-deepseek-occupy-different-positions&#34;&gt;MiniMax, Doubao, and DeepSeek Occupy Different Positions
&lt;/h2&gt;&lt;p&gt;Among domestic models and plans, MiniMax, Doubao, Kimi, and DeepSeek each have their own place.&lt;/p&gt;
&lt;p&gt;MiniMax&amp;rsquo;s advantage is generous quota, low price, and broad functionality. It may not be the smartest coding model, but it is cost-effective for translation, lightweight cleanup, and batch processing. For example, batch subtitle processing, format conversion, and simple proofreading are good fits for MiniMax-style plans.&lt;/p&gt;
&lt;p&gt;Doubao&amp;rsquo;s advantage is a broader tool ecosystem: image, video, search, TTS, possible STT, and embedding can be connected together. It feels more like a comprehensive toolbox.&lt;/p&gt;
&lt;p&gt;DeepSeek&amp;rsquo;s position is clearer: text, code, long context, and low-cost caching. It lacks a complete image generation, voice, and video ecosystem, and its weaknesses are obvious. But in AI coding and long-text agent workflows, its strengths are long enough to matter.&lt;/p&gt;
&lt;p&gt;So this is not about one tool replacing another. It is about splitting the task and using each tool where it fits.&lt;/p&gt;
&lt;h2 id=&#34;saving-money-is-not-just-choosing-a-cheap-model&#34;&gt;Saving Money Is Not Just Choosing a Cheap Model
&lt;/h2&gt;&lt;p&gt;Saving money in AI coding does not mean simply switching every request to the cheapest model.&lt;/p&gt;
&lt;p&gt;The effective methods are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Do not start a heavy agent for simple tasks.&lt;/li&gt;
&lt;li&gt;Do not use Pro when Flash is enough.&lt;/li&gt;
&lt;li&gt;Use cache as much as possible for long tasks.&lt;/li&gt;
&lt;li&gt;Keep repeated context stable, so meaningless changes do not break cache hits.&lt;/li&gt;
&lt;li&gt;Let a cheaper model draft and batch-process first, then use a stronger model for key reviews.&lt;/li&gt;
&lt;li&gt;Tell the agent clearly not to repeat facts or summarize the same point again and again.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The last point matters more than it looks. AI tools are prone to verbosity, and verbosity is not only a reading problem; it is also a cost problem. Putting &amp;ldquo;describe each fact once and state each opinion once&amp;rdquo; into the prompt can improve both article quality and token consumption.&lt;/p&gt;
&lt;h2 id=&#34;what-ai-coding-workflows-deepseek-fits-best&#34;&gt;What AI Coding Workflows DeepSeek Fits Best
&lt;/h2&gt;&lt;p&gt;DeepSeek is best suited for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reading long code repositories;&lt;/li&gt;
&lt;li&gt;lightweight multi-file edits;&lt;/li&gt;
&lt;li&gt;batch document cleanup;&lt;/li&gt;
&lt;li&gt;batch subtitle translation;&lt;/li&gt;
&lt;li&gt;Hugo article cleanup;&lt;/li&gt;
&lt;li&gt;agent plan execution;&lt;/li&gt;
&lt;li&gt;low-cost automation with lots of repeated context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not the best fit for every task. If you need especially strong frontend taste, complex product judgment, or cross-modal creation, you may still need Claude, GPT, Gemini, Doubao, or other tools.&lt;/p&gt;
&lt;p&gt;But whenever a task is long-text, long-context, repeated-call, and cost-sensitive, DeepSeek can easily become the first choice.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;In this round of AI coding tools, DeepSeek&amp;rsquo;s value is not just that a domestic model can write code. Its real value is that it addresses the most practical pain point of agent tools: long tasks are too expensive.&lt;/p&gt;
&lt;p&gt;Tools like Claude Code, OpenClaw, and Superpowers make the development process increasingly automated, but behind that automation are massive context reads and multi-round calls. Whoever can lower this part of the cost can make AI coding go from &amp;ldquo;fun once in a while&amp;rdquo; to &amp;ldquo;affordable every day&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;DeepSeek&amp;rsquo;s long context, low cache cost, and layered use of V4 Flash / V4 Pro put it in exactly that position.&lt;/p&gt;
&lt;p&gt;The real cost-saving key in this cycle is not avoiding good models. It is combining good models, cheap models, cache, and agent workflows properly. Once you understand that bill, AI coding tools can become real productivity rather than a beautiful but expensive toy.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Choose Between GPT-5.5, GPT-5.4, and GPT-5.3-Codex</title>
        <link>https://knightli.com/en/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/en/2026/05/10/gpt-5-5-vs-gpt-5-4-vs-gpt-5-3-codex/</guid>
        <description>&lt;p&gt;If you only want the short version, the conclusion is simple: default to &lt;code&gt;GPT-5.5&lt;/code&gt;, choose &lt;code&gt;GPT-5.4&lt;/code&gt; when budget and usage are more sensitive, and focus on &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; mainly when you are doing longer-running software engineering work inside Codex or need capabilities such as Cloud Tasks and Code Review.&lt;/p&gt;
&lt;p&gt;This is not just a subjective impression. As of &lt;code&gt;2026-05-10&lt;/code&gt;, OpenAI&amp;rsquo;s Codex documentation still says that most tasks should start with &lt;code&gt;gpt-5.5&lt;/code&gt;; if &lt;code&gt;gpt-5.5&lt;/code&gt; is not available yet, continue using &lt;code&gt;gpt-5.4&lt;/code&gt;; and for lighter tasks or subagents, &lt;code&gt;gpt-5.4-mini&lt;/code&gt; is the better fit.&lt;/p&gt;
&lt;h2 id=&#34;positioning-of-the-three-models&#34;&gt;Positioning of the three models
&lt;/h2&gt;&lt;p&gt;Start with the official positioning.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; is the newest frontier model in Codex, aimed at complex coding, computer use, knowledge work, and research workflows. It behaves like the default flagship model for harder analysis, multi-step tasks, cross-file edits, solution design, and heavier document work.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; is a steadier all-around choice. OpenAI describes it as bringing the industry-leading coding capabilities of &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; together with stronger reasoning, tool use, and agentic workflows. In other words, it is not simply a weaker &lt;code&gt;5.5&lt;/code&gt;; it is a more balanced model that is easier to use as a long-term default.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; is still a very strong coding model, but its core strengths are more concentrated in real software engineering and native Codex workflows. The official docs also make a point of saying that it is optimized for agentic coding tasks, while &lt;code&gt;GPT-5.4&lt;/code&gt; already inherits much of its coding strength.&lt;/p&gt;
&lt;p&gt;So today it no longer makes much sense to treat &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; as the automatic choice for &amp;ldquo;the strongest coding model.&amp;rdquo; In most day-to-day development scenarios, &lt;code&gt;GPT-5.5&lt;/code&gt; and &lt;code&gt;GPT-5.4&lt;/code&gt; deserve attention first.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-by-use-case&#34;&gt;How to choose by use case
&lt;/h2&gt;&lt;p&gt;If your work is daily Q&amp;amp;A, complex explanations, research summaries, file analysis, or long-form synthesis, &lt;code&gt;GPT-5.5&lt;/code&gt; is the best fit. It is not only good at coding, but also better at handling demanding knowledge work outside pure code.&lt;/p&gt;
&lt;p&gt;If your work is complex programming, refactoring, debugging, architecture design, or multi-file edits, &lt;code&gt;GPT-5.5&lt;/code&gt; is still the first choice. That is also how the Codex documentation frames it: when &lt;code&gt;gpt-5.5&lt;/code&gt; is available, most tasks should start there.&lt;/p&gt;
&lt;p&gt;If you care more about usage limits and cost while still wanting strong quality, &lt;code&gt;GPT-5.4&lt;/code&gt; is often the more practical default. For many routine development tasks, rewrites, standard translations, script generation, and bug fixes, &lt;code&gt;GPT-5.4&lt;/code&gt; is already strong enough and noticeably cheaper.&lt;/p&gt;
&lt;p&gt;If you are using Codex CLI, the IDE extension, or the app for more agent-like engineering work, such as reading a repository for a long time, continuously changing code, queueing tasks, or using Cloud Tasks or Code Review, &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; still matters. That is not because it is more advanced than &lt;code&gt;GPT-5.5&lt;/code&gt;, but because Cloud Tasks and Code Review in Codex still run on &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-much-credit-does-each-one-use&#34;&gt;How much credit does each one use
&lt;/h2&gt;&lt;p&gt;The Codex credit table makes the differences very clear.&lt;/p&gt;
&lt;p&gt;Under the Business / New Enterprise token-based pricing:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: &lt;code&gt;125 credits / 1M input tokens&lt;/code&gt;, &lt;code&gt;12.5 credits&lt;/code&gt; for cached input, &lt;code&gt;750 credits&lt;/code&gt; for output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: &lt;code&gt;62.5 credits / 1M input tokens&lt;/code&gt;, &lt;code&gt;6.25 credits&lt;/code&gt; for cached input, &lt;code&gt;375 credits&lt;/code&gt; for output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: &lt;code&gt;43.75 credits / 1M input tokens&lt;/code&gt;, &lt;code&gt;4.375 credits&lt;/code&gt; for cached input, &lt;code&gt;350 credits&lt;/code&gt; for output&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That means, by headline pricing, &lt;code&gt;GPT-5.4&lt;/code&gt; costs about half of &lt;code&gt;GPT-5.5&lt;/code&gt; for similar input and output lengths. &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; is cheaper on input, but its output cost is already very close to &lt;code&gt;GPT-5.4&lt;/code&gt;, so it is not the kind of option that is dramatically cheaper overall.&lt;/p&gt;
&lt;p&gt;There is another detail that is easy to miss. The official Codex docs also say that &lt;code&gt;GPT-5.5 uses significantly fewer tokens to achieve results comparable to GPT-5.4&lt;/code&gt;. So although its unit price is higher, in some complex tasks it may reduce the gap through lower token usage and fewer retries.&lt;/p&gt;
&lt;p&gt;For fixed-template article rewriting, translation, and SEO description generation, however, input and output lengths are usually stable. In that kind of work, the advantage of taking fewer wrong turns is smaller than in complex engineering tasks. In practice, &lt;code&gt;GPT-5.4&lt;/code&gt; is still usually the cheaper option, often by roughly &lt;code&gt;45%&lt;/code&gt; to &lt;code&gt;50%&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;differences-in-codex-usage-limits&#34;&gt;Differences in Codex usage limits
&lt;/h2&gt;&lt;p&gt;Beyond raw pricing, these models are not available in exactly the same ways inside Codex.&lt;/p&gt;
&lt;p&gt;As of &lt;code&gt;2026-05-10&lt;/code&gt;, &lt;code&gt;GPT-5.5&lt;/code&gt; is the recommended model in Codex, but it is currently only available when you sign in to Codex with ChatGPT, and it does not support API-key authentication. &lt;code&gt;GPT-5.4&lt;/code&gt; and &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; do support API access.&lt;/p&gt;
&lt;p&gt;Also, &lt;code&gt;GPT-5.5&lt;/code&gt; and &lt;code&gt;GPT-5.4&lt;/code&gt; currently do not support Codex Cloud Tasks or Code Review. Those two features still belong to &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;. So if what you really mean is long-running engineering work inside Codex, you cannot only compare model quality. You also have to ask whether the feature you need is still tied to &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you are only using local messages, the official Plus-plan five-hour window is roughly:&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;This also shows a practical difference: &lt;code&gt;GPT-5.5&lt;/code&gt; is the strongest, but it typically gives you fewer uses under fixed limits; &lt;code&gt;GPT-5.4&lt;/code&gt; is more balanced; and &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; can look more durable for local messages.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-across-common-scenarios&#34;&gt;How to choose across common scenarios
&lt;/h2&gt;&lt;p&gt;There are many high-frequency tasks in daily work. The more useful way to compare these models is not to ask in the abstract which one is &amp;ldquo;better,&amp;rdquo; but to break the decision down by scenario.&lt;/p&gt;
&lt;h3 id=&#34;1-daily-qa-research-organization-and-long-summaries&#34;&gt;1. Daily Q&amp;amp;A, research organization, and long summaries
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Best fit. It is better at handling ambiguous prompts, filling in context, and turning scattered information into structured output.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Good for normal summaries and bulk organization. When the difficulty is moderate and the volume is high, it is usually the more economical choice.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Not ideal as the main choice. It can do the work, but this is not where it stands out most.&lt;/p&gt;
&lt;h3 id=&#34;2-explaining-technical-concepts-code-walkthroughs-and-reading-old-projects&#34;&gt;2. Explaining technical concepts, code walkthroughs, and reading old projects
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Better for complex projects. It is more reliable when relationships span many files, call chains are long, and historical baggage is heavy.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Good for normal reading and explanation. It works well for understanding functions, modules, configuration, and getting up to speed on a project quickly.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: More execution-oriented, not the first choice for explanation-heavy tasks.&lt;/p&gt;
&lt;h3 id=&#34;3-writing-scripts-small-tools-sql-shell-commands-and-regex&#34;&gt;3. Writing scripts, small tools, SQL, shell commands, and regex
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Better when the script is tied to broader system design, multiple services, or more complex constraints.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: The best default main choice. Most scripts, small tools, SQL tasks, and command-line work are well within its comfort zone, and it uses fewer credits.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Worth considering if the script is only one part of a larger engineering-agent workflow, but not necessary as the first choice for standalone scripting.&lt;/p&gt;
&lt;h3 id=&#34;4-fixing-bugs-making-small-feature-changes-adding-tests-and-routine-development&#34;&gt;4. Fixing bugs, making small feature changes, adding tests, and routine development
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Better for somewhat harder fixes, especially when it needs to analyze the cause first, then edit across files, then add tests.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: The best daily development workhorse. For ordinary bugs, small features, test scaffolding, renaming, and formatting cleanup, it has the best cost-performance balance.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Capable, but usually not the first choice unless you specifically need Cloud Tasks or an engineering-agent workflow.&lt;/p&gt;
&lt;h3 id=&#34;5-complex-refactoring-architecture-design-and-hard-debugging&#34;&gt;5. Complex refactoring, architecture design, and hard debugging
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Best fit. In complex tasks, the expensive part is usually rework, not a single output. &lt;code&gt;GPT-5.5&lt;/code&gt; is better suited to be the main problem-solving model.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Good for medium-complexity work. It can handle refactors and design discussions, but for very long context, multi-step reasoning, and high-uncertainty tasks, it is usually less steady than &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;: More execution-oriented and not the default priority for hard decision-heavy work.&lt;/p&gt;
&lt;h3 id=&#34;6-bulk-light-tasks-repetitive-work-and-split-sub-tasks&#34;&gt;6. Bulk light tasks, repetitive work, and split sub-tasks
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Capable, but usually not cost-effective.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Best fit. For batch comment edits, bulk formatting, template-style code generation, and repetitive content changes, it is the most balanced option.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Worth considering if the work is already embedded in a Codex engineering workflow, but in plain cost-performance terms it is still usually weaker than &lt;code&gt;GPT-5.4&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;7-automation-pipelines-agent-execution-and-continuous-repository-work&#34;&gt;7. Automation pipelines, agent execution, and continuous repository work
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Good for early-stage design, rules, and breaking down complex tasks.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Good for writing automation scripts and filling in medium-complexity workflow logic, especially when API access matters.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: The most relevant model here. Because Codex Cloud Tasks and Code Review still run on it, it is better suited to scenarios where you want the system to keep running on its own.&lt;/p&gt;
&lt;h3 id=&#34;8-important-page-copy-brand-introductions-and-final-polish&#34;&gt;8. Important page copy, brand introductions, and final polish
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Best fit. It is strongest in naturalness, style control, and long-context consistency.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Good for most ordinary pages and daily updates. Important pages can start with a draft in &lt;code&gt;GPT-5.4&lt;/code&gt; and then be polished with &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;: Not suitable as a primary writing model.&lt;/p&gt;
&lt;h3 id=&#34;9-fixed-template-website-rewriting-translation-and-seo-descriptions&#34;&gt;9. Fixed-template website rewriting, translation, and SEO descriptions
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Better for template design, final polish, high-value pages, and more natural Chinese-to-English translation.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Best fit for bulk production. For standard article rewriting, fixed-structure translation, product copy rewriting, and batch meta-description generation, it usually offers the best quality-cost balance.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Not suitable as the primary writing model. It is more useful for writing batch-processing scripts, cleaning HTML, preserving tag structure, and improving publishing workflows.&lt;/p&gt;
&lt;h3 id=&#34;10-e-commerce-product-copy-category-pages-and-bulk-content-operations&#34;&gt;10. E-commerce product copy, category pages, and bulk content operations
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: Good for defining rules, spot-checking, and polishing high-value pages.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.4&lt;/code&gt;: Best fit for bulk production. It is more balanced for product titles, category descriptions, campaign copy, and long-tail SEO content.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt;: Good for crawling, cleaning, batch processing, and auto-publishing scripts, but not ideal for the core copy itself.&lt;/p&gt;
&lt;p&gt;If you compress all of these scenarios into one line:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Complex knowledge work, complex analysis, and high-value writing: prioritize &lt;code&gt;GPT-5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Daily development, bulk production, and repetitive work: prioritize &lt;code&gt;GPT-5.4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Codex engineering agents, Cloud Tasks, and Code Review: pay special attention to &lt;code&gt;GPT-5.3-Codex&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;final-recommendation&#34;&gt;Final recommendation
&lt;/h2&gt;&lt;p&gt;If your work is mostly ordinary coding, bug fixing, technical questions, and accompanying documentation, &lt;code&gt;GPT-5.4&lt;/code&gt; is a very steady default model.&lt;/p&gt;
&lt;p&gt;If you need more complex project analysis, multi-file changes, architecture planning, hard debugging, or one model that can cover both engineering and demanding knowledge work, go straight to &lt;code&gt;GPT-5.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If what matters most is the engineering workflow inside Codex itself, such as Cloud Tasks, Code Review, and long-running agent execution, then &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; is still worth keeping around, but it no longer makes much sense as the first default choice.&lt;/p&gt;
&lt;p&gt;For a fixed-template content site, the more practical setup is usually:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;GPT-5.4&lt;/code&gt; for bulk production&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; for template design, spot checks, and final polishing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-5.3-Codex&lt;/code&gt; for writing automation tools rather than the main content&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The more practical default order now is &lt;code&gt;GPT-5.5&lt;/code&gt; first, &lt;code&gt;GPT-5.4&lt;/code&gt; second, and &lt;code&gt;GPT-5.3-Codex&lt;/code&gt; reserved for more engineering-agent-heavy or Codex-specific scenarios.&lt;/p&gt;
&lt;p&gt;If your question is specifically &amp;ldquo;How much does &lt;code&gt;GPT-5.4&lt;/code&gt; save versus &lt;code&gt;GPT-5.5&lt;/code&gt; for rewriting the same template article?&amp;rdquo;, then based on the official credit table and the typical token structure of this type of work, it is reasonable to think of it as saving close to half. For content-heavy batch sites, that difference is large enough that the common pattern is not to use &lt;code&gt;GPT-5.5&lt;/code&gt; for everything, but to use &lt;code&gt;GPT-5.5&lt;/code&gt; to define the rules and style first, then hand the bulk work to &lt;code&gt;GPT-5.4&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Choose AI Coding Plans: Convenience for Light Users, Flexibility for Heavy Users</title>
        <link>https://knightli.com/en/2026/05/10/ai-coding-plan-selection/</link>
        <pubDate>Sun, 10 May 2026 08:20:58 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/10/ai-coding-plan-selection/</guid>
        <description>&lt;p&gt;AI coding plans have changed quickly over the past six months. Many tools have shifted from message-style pricing to usage-based pricing, generous low-cost tiers have become tighter, and some overseas services have added stricter identity checks, regional limits, and usage rules.&lt;/p&gt;
&lt;p&gt;For developers, the question is no longer just which model is strongest. It is also about how much to spend every month, whether the quota is enough, whether the tool feels comfortable to use, and whether you can switch smoothly when a provider suddenly raises prices or changes the rules.&lt;/p&gt;
&lt;p&gt;A practical conclusion is this: light users should buy convenience, mid-level users should buy value, and heavy users should buy flexibility. The heavier your usage, the less you should bind models and tools together in a single plan.&lt;/p&gt;
&lt;h2 id=&#34;four-things-to-evaluate-before-choosing-a-plan&#34;&gt;Four things to evaluate before choosing a plan
&lt;/h2&gt;&lt;p&gt;In the past, people usually looked at three things when choosing an AI coding plan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Whether the model was strong enough.&lt;/li&gt;
&lt;li&gt;Whether the response speed was stable.&lt;/li&gt;
&lt;li&gt;Whether the usage quota was sufficient.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now there is a fourth factor: whether the model and the tool can be separated.&lt;/p&gt;
&lt;p&gt;The model provides reasoning ability, while the tool provides context management, file editing, agent orchestration, and workflow experience. Both matter, but they are better not fully tied together. For example, if you like Claude models, you can buy an official plan or connect the API to another tool. If you like a certain editor or agent environment, it is better if it can connect to different models instead of only its own.&lt;/p&gt;
&lt;p&gt;The value here is not complexity for its own sake. It is risk reduction. AI coding is one of the fastest-changing segments in the industry. A plan that feels generous today may switch pricing in two months, and a tool that feels good today may become worse after the next model integration change. Separating models from tools gives you room to move.&lt;/p&gt;
&lt;h2 id=&#34;overseas-plans-are-getting-tighter&#34;&gt;Overseas plans are getting tighter
&lt;/h2&gt;&lt;p&gt;Tools such as GitHub Copilot, Cursor, Windsurf, and Claude Code are still the primary choices for many users, but the trend is clear: cheap plans with unusually high quotas are becoming harder to sustain, and usage-based billing is becoming more common.&lt;/p&gt;
&lt;p&gt;Once services like GitHub Copilot lean more heavily on usage-based billing, the room for plan-based arbitrage becomes much smaller. For light users, these products are still convenient. But for people who frequently use agents, long context, and complex code tasks, actual consumption starts to look much closer to real API cost.&lt;/p&gt;
&lt;p&gt;Cursor and Windsurf essentially package model capability into an IDE experience. Their strength is convenience and a mature editor workflow. Their weakness is tighter tool lock-in. Once you become dependent on their proprietary agents, indexing, and automation flow, migration costs can rise quickly.&lt;/p&gt;
&lt;p&gt;Claude Code remains attractive in terms of experience and ecosystem attention, but overseas subscriptions, identity verification, regional restrictions, and the safety of relay services are all risks that users in China have to factor in. Third-party relay services may mix models, be unstable, expose user data, or even disappear entirely, which makes them hard to treat as long-term infrastructure for important work.&lt;/p&gt;
&lt;h2 id=&#34;the-strengths-and-limits-of-domestic-plans&#34;&gt;The strengths and limits of domestic plans
&lt;/h2&gt;&lt;p&gt;One advantage of domestic AI coding plans is that many of them are offered through APIs, which means they are less tightly bound to a specific tool. You can connect them to OpenCode, Cline, Continue, your own scripts, or internal agents.&lt;/p&gt;
&lt;p&gt;The weakness is also clear: if you want model strength, high speed, and generous quota all at once, very few plans can deliver everything together.&lt;/p&gt;
&lt;p&gt;GLM models are strong within the domestic model landscape, but throughput during peak hours may not be stable, which can make heavy tasks feel slow. Kimi is capable, but pricing and quota rules still need ongoing attention, especially whether backend quota is transparent. Models like MiniMax are friendlier in speed and allowance, which makes them suitable for light day-to-day tasks, batch jobs, and simpler coding help, though they may sit a tier lower on harder engineering reasoning. DeepSeek can be highly cost-effective when a new model is still in its promotional pricing period, but once that ends, you have to evaluate it again under normal pricing.&lt;/p&gt;
&lt;p&gt;That is why domestic options are often better used as a model pool: different tasks use different models, instead of betting everything on one model and one plan.&lt;/p&gt;
&lt;h2 id=&#34;light-users-choose-what-feels-convenient-and-do-not-overbuild&#34;&gt;Light users: choose what feels convenient and do not overbuild
&lt;/h2&gt;&lt;p&gt;If you only ask AI to tweak scripts, patch documentation, explain errors, or generate small tools once or twice a week, you probably do not need a complicated setup.&lt;/p&gt;
&lt;p&gt;For this kind of user, convenience matters most. Cursor, Windsurf, Trae, CodeBuddy, Tongyi Lingma, GitHub Copilot, and similar tools are all worth trying. The goal is not the absolute lowest unit cost. The goal is low friction: something stable inside your editor, decent completions, and easy recovery when it makes a mistake.&lt;/p&gt;
&lt;p&gt;Light users usually should not spend too much time building multi-layer API setups, relays, and proxy chains just to save a little money. The time cost, account risk, and debugging overhead are often more expensive than the subscription fee you save.&lt;/p&gt;
&lt;h2 id=&#34;mid-level-users-focus-on-value-but-also-on-portability&#34;&gt;Mid-level users: focus on value, but also on portability
&lt;/h2&gt;&lt;p&gt;If you use AI every day for coding, project edits, test generation, and document work, then quota and actual consumption start to matter much more.&lt;/p&gt;
&lt;p&gt;For this kind of user, it makes sense to separate the main tool from backup models. For example, one convenient IDE plan can handle daily editing, while a multi-tool API or aggregator plan can be used for longer-context and more complex agent tasks.&lt;/p&gt;
&lt;p&gt;Three things matter most at this stage:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Whether it supports third-party tool integration.&lt;/li&gt;
&lt;li&gt;Whether token or quota consumption is visible and understandable.&lt;/li&gt;
&lt;li&gt;Whether overage means throttling, downgrade, shutdown, or pure usage-based billing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If a plan looks cheap but can only be used inside its own tool, you need to count migration cost as part of the real price. If a plan costs more but can plug into multiple tools, it may be the better long-term choice.&lt;/p&gt;
&lt;h2 id=&#34;heavy-users-do-not-lock-models-and-tools-together&#34;&gt;Heavy users: do not lock models and tools together
&lt;/h2&gt;&lt;p&gt;For heavy users, flexibility is the core requirement.&lt;/p&gt;
&lt;p&gt;When a person or team uses AI agents intensively every day, consumption grows very quickly. Repository search, long-context edits, multi-round debugging, and automated test repair can all multiply token use. Once you rely on a single plan, three problems show up easily:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The quota suddenly becomes too small.&lt;/li&gt;
&lt;li&gt;The pricing rule suddenly changes.&lt;/li&gt;
&lt;li&gt;A tool or model becomes temporarily unavailable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A more stable approach is to prepare a layered setup: one primary agent tool, one or more replaceable model endpoints, one low-cost model for simple work, and one high-capability model for harder tasks. Small routine work should not always go to the most expensive model, and critical work should not rely only on the cheapest model either.&lt;/p&gt;
&lt;p&gt;For heavy users, the ability for tools to connect to any model and for models to connect to any tool matters more than saving a few dozen dollars per month. The real expense is not the subscription itself. It is the cost of being locked into one ecosystem and having to rebuild your workflow later.&lt;/p&gt;
&lt;h2 id=&#34;a-more-stable-combination-strategy&#34;&gt;A more stable combination strategy
&lt;/h2&gt;&lt;p&gt;A relatively steady way to structure your setup looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use a low-cost model for light tasks such as code explanations, small scripts, formatting, and simple documents.&lt;/li&gt;
&lt;li&gt;Use a value-oriented model for mid-level tasks such as standard feature work, test completion, and refactor suggestions.&lt;/li&gt;
&lt;li&gt;Use a stronger model for difficult tasks such as architecture changes, cross-file fixes, hard bugs, and long-context reasoning.&lt;/li&gt;
&lt;li&gt;Keep the tool layer open by choosing tools that can connect to APIs, export configuration, and switch models.&lt;/li&gt;
&lt;li&gt;Maintain a backup path so that when a main plan changes rules, you can switch quickly to another model or tool.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This may not be the absolute cheapest setup, but it is much more resilient. AI coding prices and quotas will keep changing. The thing worth investing in for the long term is a portable workflow, not a short-term deal that only looks unusually generous for a while.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;AI coding plans should not be judged by monthly price alone. Light users should keep things simple and choose a convenient tool. Mid-level users should start paying attention to quota, consumption, and portability. Heavy users should decouple models from tools and avoid being trapped in one ecosystem.&lt;/p&gt;
&lt;p&gt;The most useful thing to remember is that plans will change, models will change, and tools will change too. Keeping the choice in your own hands is the most important form of cost control in long-term AI coding work.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Chrome Silently Downloads 4GB Gemini Nano: How to Check, Disable, and Delete It</title>
        <link>https://knightli.com/en/2026/05/09/chrome-gemini-nano-silent-download/</link>
        <pubDate>Sat, 09 May 2026 21:37:18 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/09/chrome-gemini-nano-silent-download/</guid>
        <description>&lt;p&gt;Google Chrome has been reported to download a roughly 4GB local AI model file in the background without explicit user permission, sparking debate about privacy, storage usage, and environmental impact.&lt;/p&gt;
&lt;p&gt;The files are related to Gemini Nano and are mainly used for Chrome&amp;rsquo;s local AI features. The dispute is not simply that the browser supports local AI, but whether the download process is transparent enough, whether users should be informed in advance, and whether system resources are being used reasonably.&lt;/p&gt;
&lt;h2 id=&#34;what-happened&#34;&gt;What happened
&lt;/h2&gt;&lt;p&gt;The model file being discussed is named &lt;code&gt;weights.bin&lt;/code&gt; and is located in Chrome&amp;rsquo;s &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; directory. It is believed to be a localized version of Gemini Nano, used to perform some AI inference directly on the device.&lt;/p&gt;
&lt;p&gt;Chrome decides in the background whether to download it based on hardware capability, especially RAM and VRAM. Users generally do not need to start the download themselves, and they may not see a clear prompt before it happens.&lt;/p&gt;
&lt;p&gt;The more frustrating part is that manually deleting the model file usually does not stop it from coming back. As long as the related feature remains enabled, Chrome may download the model again after a restart or a later update.&lt;/p&gt;
&lt;p&gt;The platforms mentioned in the discussion include Windows 11, macOS, and Ubuntu desktop systems. Based on Chrome&amp;rsquo;s desktop install base, the number of potentially affected devices could reach hundreds of millions.&lt;/p&gt;
&lt;h2 id=&#34;googles-explanation&#34;&gt;Google&amp;rsquo;s explanation
&lt;/h2&gt;&lt;p&gt;Google says these files support local AI features such as &amp;ldquo;Help me write&amp;rdquo; and scam detection. Running the model locally can reduce some data uploads and improve privacy protection.&lt;/p&gt;
&lt;p&gt;Google also says that if device storage is low, Chrome will automatically remove the related model to free up space. In other words, the model does not necessarily occupy disk space permanently.&lt;/p&gt;
&lt;p&gt;At the same time, Google says users have been able to disable the related feature in Chrome settings since February 2024. Once disabled, the model will no longer continue downloading or updating.&lt;/p&gt;
&lt;h2 id=&#34;how-to-check-and-disable-it&#34;&gt;How to check and disable it
&lt;/h2&gt;&lt;p&gt;If you do not want Chrome to keep the Gemini Nano model locally, start by checking a few places.&lt;/p&gt;
&lt;p&gt;First, open Chrome settings and look for options related to &amp;ldquo;on-device AI&amp;rdquo;, local AI, writing assistance, or optimization suggestions, then disable the features you do not need.&lt;/p&gt;
&lt;p&gt;Second, enter this in the address bar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then search for and disable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Finally, check Chrome&amp;rsquo;s user data directory for the &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; folder and delete the model files inside it. Keep in mind that deleting the file alone is usually not enough. It is better to disable the related flag or setting first, otherwise Chrome may download it again later.&lt;/p&gt;
&lt;h2 id=&#34;possible-paths-on-different-systems&#34;&gt;Possible paths on different systems
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; is usually under Chrome&amp;rsquo;s user data directory. The exact location can vary depending on the operating system and installation method, but these are good places to check first:&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;After opening the relevant directory, search for &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; or &lt;code&gt;weights.bin&lt;/code&gt;. If you use Chrome Beta, Dev, or Canary, the directory name may include the corresponding release channel.&lt;/p&gt;
&lt;h2 id=&#34;how-to-tell-whether-weightsbin-has-been-downloaded&#34;&gt;How to tell whether weights.bin has been downloaded
&lt;/h2&gt;&lt;p&gt;The simplest method is to search Chrome&amp;rsquo;s user data directory for:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If it has been downloaded, it will usually appear inside &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt;, and the file size may be close to several GB. You can also check the modified time to see whether Chrome recently created or updated it in the background.&lt;/p&gt;
&lt;p&gt;If you cannot find &lt;code&gt;weights.bin&lt;/code&gt;, that does not necessarily mean the device will never download it. Chrome may decide whether to fetch the model based on hardware conditions, region, version, feature flags, and experiment configuration.&lt;/p&gt;
&lt;h2 id=&#34;which-chrome-ai-features-may-be-affected&#34;&gt;Which Chrome AI features may be affected
&lt;/h2&gt;&lt;p&gt;After disabling the related local AI or optimization features, some on-device capabilities that depend on Gemini Nano may be affected, such as &amp;ldquo;Help me write&amp;rdquo;, local scam detection, and future browser AI features that do not go through the cloud.&lt;/p&gt;
&lt;p&gt;For users who do not use these features, everyday browsing is usually not affected much. For users who frequently use Chrome&amp;rsquo;s built-in writing assistance, page understanding, or experimental safety detection features, the experience may fall back to cloud processing, become unavailable, or use another browser-provided alternative.&lt;/p&gt;
&lt;h2 id=&#34;where-the-controversy-lies&#34;&gt;Where the controversy lies
&lt;/h2&gt;&lt;p&gt;The central question is whether a browser should download several GB of model files for AI features before the user has clearly agreed.&lt;/p&gt;
&lt;p&gt;Supporters argue that local AI can reduce cloud processing, improve privacy, and make responses faster. Critics argue that users should at least see a clear prompt before the download, especially when the file is close to 4GB and may affect storage space and network traffic.&lt;/p&gt;
&lt;p&gt;Privacy experts also point out that this kind of insufficiently disclosed background download may raise compliance questions under the EU ePrivacy Directive and GDPR. Whether it constitutes a violation depends on Google&amp;rsquo;s notice mechanism, default settings, data processing path, and user controls.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Chrome&amp;rsquo;s adoption of Gemini Nano shows that browsers are moving more AI capabilities onto the local device. But it also creates a new product boundary problem: local models still consume disk space and bandwidth, and they can affect the user&amp;rsquo;s sense of control over their own device.&lt;/p&gt;
&lt;p&gt;For ordinary users, the most direct step is to check Chrome&amp;rsquo;s local AI and optimization settings. If you do not need these features, disable the related options and then delete the model files in the &lt;code&gt;OptGuideOnDeviceModel&lt;/code&gt; directory.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>A Practical llama.cpp Multi-GPU Benchmarking Approach: Is 2x V100 16GB Faster Than One 32GB Card?</title>
        <link>https://knightli.com/en/2026/05/09/llama-cpp-multi-gpu-offload-performance/</link>
        <pubDate>Sat, 09 May 2026 15:05:41 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/09/llama-cpp-multi-gpu-offload-performance/</guid>
        <description>&lt;p&gt;Short version: llama.cpp multi-GPU offload is not free performance just because you add a second card. If the model already fits fully on one 32GB GPU, 2x V100 16GB is often less convenient than a single 32GB card and may even be slower. If the model does not fit on one 16GB card, the main value of dual GPUs is that the model can stay on GPU, and the benefit can be obvious.&lt;/p&gt;
&lt;h2 id=&#34;first-understand-split-mode&#34;&gt;First, Understand split mode
&lt;/h2&gt;&lt;p&gt;llama.cpp multi-GPU usage mainly revolves around &lt;code&gt;--split-mode&lt;/code&gt; and &lt;code&gt;--tensor-split&lt;/code&gt;. When discussing performance, distinguish these modes first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;layer&lt;/code&gt;: splits layers across GPUs. It is usually the most compatible starting point.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tensor&lt;/code&gt;: splits tensor computation across multiple GPUs. It is closer to true parallel compute, but depends more heavily on inter-GPU bandwidth and backend support.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;row&lt;/code&gt;: an older row-splitting mode that still appears in some setups, but is usually not the first choice for new deployments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In simple terms, &lt;code&gt;layer&lt;/code&gt; is like putting different floors on different cards. During single-token generation, it may not keep both cards fully busy at the same time. &lt;code&gt;tensor&lt;/code&gt; is more like letting both cards work on the same layer together. It has more theoretical parallelism, but inter-GPU communication can become the bottleneck.&lt;/p&gt;
&lt;h2 id=&#34;if-one-32gb-card-can-fit-the-model-dual-16gb-is-not-always-faster&#34;&gt;If One 32GB Card Can Fit the Model, Dual 16GB Is Not Always Faster
&lt;/h2&gt;&lt;p&gt;If the model and KV cache fit fully on one 32GB GPU, a single card is usually steadier and often faster. For hardware in the same generation, such as 1x V100 32GB versus 2x V100 16GB, the dual-card setup does not necessarily win.&lt;/p&gt;
&lt;p&gt;A conservative expectation is that 2x V100 16GB may be 10% to 40% slower than one V100 32GB, especially for single-user chat, Continue Agent, and code Q&amp;amp;A workloads where one request is mainly generating one answer.&lt;/p&gt;
&lt;p&gt;The reason is straightforward: multi-GPU does not simply merge VRAM into one fast pool. With layer splitting, inference moves across GPUs and one card may wait for the other during token generation. With tensor splitting, both cards can compute together, but intermediate results need cross-GPU synchronization, so bandwidth and latency directly affect throughput.&lt;/p&gt;
&lt;p&gt;So if your choice is:&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;and the target model already fits fully on one 32GB card, the single 32GB card is often the more comfortable option.&lt;/p&gt;
&lt;h2 id=&#34;if-one-16gb-card-cannot-fit-the-model-dual-cards-matter&#34;&gt;If One 16GB Card Cannot Fit the Model, Dual Cards Matter
&lt;/h2&gt;&lt;p&gt;The situation changes completely when the model does not fit on one 16GB card but can fit across two 16GB cards.&lt;/p&gt;
&lt;p&gt;In that case, the value of dual GPUs is very direct:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One 16GB card: may require heavy CPU offload, which can slow things down a lot.&lt;/li&gt;
&lt;li&gt;2x 16GB cards: weights can stay mostly on GPU, which may be much faster than mixed CPU/GPU execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this scenario, 2x V100 16GB is not guaranteed to beat one 32GB card, but it may be several times faster than a single 16GB card with heavy system-memory offload. In other words, the first value of dual cards is not acceleration. It is avoiding the need to push model weights into slower system RAM.&lt;/p&gt;
&lt;h2 id=&#34;v100-pcie-and-v100-sxm2-are-very-different&#34;&gt;V100 PCIe and V100 SXM2 Are Very Different
&lt;/h2&gt;&lt;p&gt;The easiest thing to overlook in multi-GPU inference is the interconnect.&lt;/p&gt;
&lt;p&gt;If you have V100 SXM2 with NVLink, cross-GPU communication bandwidth is much higher. NVIDIA&amp;rsquo;s V100 material lists NVLink interconnect bandwidth up to 300GB/s. In that environment, &lt;code&gt;tensor&lt;/code&gt; mode or higher-batch workloads have a better chance of approaching or exceeding single-card performance.&lt;/p&gt;
&lt;p&gt;If you have V100 PCIe, expectations should be more conservative. V100 PCIe mainly uses PCIe Gen3, and the listed interconnect bandwidth is 32GB/s. That is a very different class from NVLink, which is why dual PCIe cards often provide enough VRAM without doubling speed.&lt;/p&gt;
&lt;p&gt;So when judging whether 2x V100 16GB is worthwhile, do not only add the VRAM to 32GB. Also check whether the cards are PCIe or SXM2/NVLink.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-buying-rule&#34;&gt;A Practical Buying Rule
&lt;/h2&gt;&lt;p&gt;If the model fits on one 32GB GPU, choose the single card first. Its latency, stability, and tuning cost are usually better.&lt;/p&gt;
&lt;p&gt;If the model does not fit on one 16GB GPU but can fit on two 16GB GPUs, dual cards are worth using. At that point, the goal is to keep weights on GPU as much as possible, not to expect linear performance scaling.&lt;/p&gt;
&lt;p&gt;If you have dual V100 PCIe cards, start with &lt;code&gt;--split-mode layer&lt;/code&gt; and aim for stable execution with less CPU fallback.&lt;/p&gt;
&lt;p&gt;If you have V100 SXM2/NVLink, it is more worth testing &lt;code&gt;tensor&lt;/code&gt;-related modes, especially for prefill, larger batches, or concurrent serving.&lt;/p&gt;
&lt;h2 id=&#34;when-to-buy-2x16gb-and-when-to-buy-1x32gb&#34;&gt;When to Buy 2x16GB and When to Buy 1x32GB
&lt;/h2&gt;&lt;p&gt;If you serve only one user and mainly do chat, code completion, Continue Agent, or long-context Q&amp;amp;A, and the target model fits within 32GB, 1x32GB is usually the better choice. It avoids cross-GPU scheduling, has steadier latency, and is easier to debug.&lt;/p&gt;
&lt;p&gt;If you already own one 16GB card and want a lower-cost path to run 30B, 32B, or higher-quantized models, 2x16GB makes sense. It may not double token/s, but it can keep weights on GPU that would otherwise require CPU offload.&lt;/p&gt;
&lt;p&gt;If you are buying from scratch, the priority can look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single model, single user, latency-sensitive: prefer 1x32GB.&lt;/li&gt;
&lt;li&gt;Model does not fit on one card and budget is limited: consider 2x16GB.&lt;/li&gt;
&lt;li&gt;Machine has NVLink or SXM2: 2x16GB is much more interesting than ordinary PCIe dual cards.&lt;/li&gt;
&lt;li&gt;You want longer context later: do not only count model weights; reserve VRAM for KV cache too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;practical-advice-for-layer-split-and-tensor-split&#34;&gt;Practical Advice for layer split and tensor split
&lt;/h2&gt;&lt;p&gt;The practical rule is: start with &lt;code&gt;layer&lt;/code&gt;, then benchmark &lt;code&gt;tensor&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;layer&lt;/code&gt; is the default starting point. It splits the model by layer, has better compatibility, and is friendlier to PCIe dual-card systems. The downside is that generation can behave more like a pipeline: at certain moments one card is busy while the other waits.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tensor&lt;/code&gt; is better suited to machines with strong interconnects, such as V100 SXM2/NVLink. It splits part of the same layer&amp;rsquo;s computation across GPUs, so it has more parallelism in theory, but it also synchronizes across cards more often. On PCIe dual cards, communication overhead may eat the benefit.&lt;/p&gt;
&lt;p&gt;You can start with these tests:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The third command is not meant as the long-term configuration. It gives you a single-card reference, so you can see whether dual GPUs are actually faster or only distributing VRAM pressure.&lt;/p&gt;
&lt;h2 id=&#34;why-prefill-and-decode-behave-differently&#34;&gt;Why prefill and decode Behave Differently
&lt;/h2&gt;&lt;p&gt;Local LLM performance should usually be viewed in two stages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;prefill&lt;/code&gt;: processes the input prompt. A typical metric is prompt-processing throughput such as &lt;code&gt;pp512&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;decode&lt;/code&gt;: generates the response token by token. A typical metric is token-generation throughput such as &lt;code&gt;tg128&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;prefill&lt;/code&gt; is more like large-batch matrix computation. With larger batches, it is easier to keep GPUs busy and more likely to benefit from multi-GPU parallelism. &lt;code&gt;decode&lt;/code&gt; generates one token after another. The batch is smaller and synchronization is more frequent, so cross-card communication and scheduling latency are easier to notice.&lt;/p&gt;
&lt;p&gt;That is why you may see dual GPUs improve &lt;code&gt;pp512&lt;/code&gt; while &lt;code&gt;tg128&lt;/code&gt; barely improves or even gets worse. For chat and agent workflows, user experience is closer to &lt;code&gt;tg128&lt;/code&gt;. For long document ingestion, batch prefill, or concurrent serving, &lt;code&gt;pp512&lt;/code&gt; also matters.&lt;/p&gt;
&lt;h2 id=&#34;can-kv-cache-become-a-second-vram-bottleneck&#34;&gt;Can KV cache Become a Second VRAM Bottleneck?
&lt;/h2&gt;&lt;p&gt;Yes. Many people only count model weights and forget KV cache.&lt;/p&gt;
&lt;p&gt;Model weights decide whether the model can load. KV cache decides whether you can use the context length you want. The longer the context, the higher the concurrency, and the larger the batch, the more visible KV cache usage becomes. You may find that the model itself fits in 32GB, but 32K or 64K context pushes VRAM over the limit.&lt;/p&gt;
&lt;p&gt;At minimum, leave VRAM headroom for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KV cache&lt;/li&gt;
&lt;li&gt;CUDA graph or backend runtime overhead&lt;/li&gt;
&lt;li&gt;prompt batch and ubatch&lt;/li&gt;
&lt;li&gt;desktop, driver, and other process usage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use 2x16GB, VRAM is not a fully equivalent 32GB pool. Some buffers, KV cache, or intermediate tensors may still be limited by remaining memory on a single card. When testing long context, use the target &lt;code&gt;--ctx-size&lt;/code&gt; and target concurrency directly instead of only checking whether the model starts.&lt;/p&gt;
&lt;h2 id=&#34;how-to-benchmark-dual-cards-with-llama-bench&#34;&gt;How to Benchmark Dual Cards with llama-bench
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;llama-bench&lt;/code&gt; is better than direct chatting for hardware comparison because it separates prompt processing and token generation into comparable metrics. The default example in the official README is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For dual V100 cards, test at least these sets:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;# Single-card baseline&lt;/span&gt;
&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;# Dual-card 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;# Dual-card 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;Focus on two columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;: prompt processing, more relevant to long inputs and batch prefill.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;: token generation, more relevant to single-user chat and agent responsiveness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keep the model, quantization, context length, batch settings, driver version, and llama.cpp version fixed. Run each group several times and compare medians rather than one-off results. Finally, test your real workflow too, such as Continue Agent, an OpenAI-compatible server, or your own RAG requests, because a good benchmark does not always mean better interactive experience.&lt;/p&gt;
&lt;h2 id=&#34;one-sentence-conclusion&#34;&gt;One-Sentence Conclusion
&lt;/h2&gt;&lt;p&gt;The main advantage of 2x V100 16GB is VRAM capacity, not guaranteed generation speed. If the model fits on one card, a single 32GB card is usually faster and steadier. If the model does not fit on one 16GB card, dual 16GB cards become valuable because they avoid heavy CPU offload. Whether they are faster depends on split mode, batch size, model size, and whether the two V100 cards are connected through PCIe or NVLink.&lt;/p&gt;
&lt;p&gt;References:&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 Limits Doubled: Anthropic Uses SpaceX Compute Expansion to Ease Usage Constraints</title>
        <link>https://knightli.com/en/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/en/2026/05/09/anthropic-claude-code-higher-limits-spacex-compute/</guid>
        <description>&lt;p&gt;On May 6, 2026, Anthropic announced higher usage limits for Claude Code and the Claude API, along with a new compute partnership with SpaceX. For everyday users, the most direct change is more usable capacity for Claude Code. For developers and enterprises, the larger point is that Claude&amp;rsquo;s inference capacity is still expanding.&lt;/p&gt;
&lt;p&gt;The announcement has two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Higher limits for Claude Code and the Claude API.&lt;/li&gt;
&lt;li&gt;New compute capacity from SpaceX data centers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-changed-for-claude-code-limits&#34;&gt;What changed for Claude Code limits
&lt;/h2&gt;&lt;p&gt;Anthropic says the following three changes took effect on the day of the announcement:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code&amp;rsquo;s five-hour rate limit doubled for Pro, Max, Team, and seat-based Enterprise plans.&lt;/li&gt;
&lt;li&gt;Peak-hour limit reductions for Pro and Max Claude Code accounts were removed.&lt;/li&gt;
&lt;li&gt;Claude Opus API rate limits were significantly increased.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In practical terms, if you often use Claude Code for long coding sessions, repository analysis, refactoring, debugging, or agent workflows, this change may reduce the number of times a task stops before it is finished.&lt;/p&gt;
&lt;p&gt;That does not mean unlimited usage. Claude Code is still affected by subscription plan, usage pattern, model, task length, context size, and platform policy. But Anthropic has clearly expanded the usable room compared with the previous limits.&lt;/p&gt;
&lt;h2 id=&#34;why-compute-affects-the-claude-code-experience&#34;&gt;Why compute affects the Claude Code experience
&lt;/h2&gt;&lt;p&gt;Tools like Claude Code consume more resources than ordinary chat. A single coding task can involve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading many files.&lt;/li&gt;
&lt;li&gt;Long-context analysis.&lt;/li&gt;
&lt;li&gt;Multiple tool calls.&lt;/li&gt;
&lt;li&gt;Generating, editing, and checking code.&lt;/li&gt;
&lt;li&gt;Repeatedly running tests or explaining errors.&lt;/li&gt;
&lt;li&gt;Using Opus for difficult reasoning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Behind those actions are not only tokens, but also inference capacity, concurrency, and scheduling resources. Users see limits, queues, or slower peak-hour behavior; the platform sees pressure between compute supply and demand.&lt;/p&gt;
&lt;p&gt;So Anthropic putting limit increases and a compute partnership in the same announcement is meaningful. It is saying that improving Claude Code is not just a plan-setting change, but also depends on more backend inference capacity.&lt;/p&gt;
&lt;h2 id=&#34;what-the-spacex-partnership-adds&#34;&gt;What the SpaceX partnership adds
&lt;/h2&gt;&lt;p&gt;Anthropic says it has signed an agreement with SpaceX to use the full compute capacity of SpaceX&amp;rsquo;s Colossus 1 data center. The announced capacity is over 300 megawatts, corresponding to more than 220,000 NVIDIA GPUs, and will be made available to Anthropic within a month.&lt;/p&gt;
&lt;p&gt;This added capacity is expected to directly improve available capacity for Claude Pro and Claude Max subscribers.&lt;/p&gt;
&lt;p&gt;Anthropic also says it is interested in future work with SpaceX on orbital AI compute. That is more of a long-term direction, not the same thing as the Claude Code limit increase users can feel immediately.&lt;/p&gt;
&lt;h2 id=&#34;anthropics-compute-footprint-is-getting-larger&#34;&gt;Anthropic&amp;rsquo;s compute footprint is getting larger
&lt;/h2&gt;&lt;p&gt;SpaceX is only one part of Anthropic&amp;rsquo;s recent compute expansion. The company also lists other partnerships:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Up to 5GW with Amazon, including nearly 1GW of new capacity planned to come online by the end of 2026.&lt;/li&gt;
&lt;li&gt;5GW with Google and Broadcom, expected to come online starting in 2027.&lt;/li&gt;
&lt;li&gt;A strategic partnership with Microsoft and NVIDIA, including $30 billion of Azure capacity.&lt;/li&gt;
&lt;li&gt;A $50 billion U.S. AI infrastructure investment with Fluidstack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic also notes that Claude training and inference will use multiple types of AI hardware, including AWS Trainium, Google TPUs, and NVIDIA GPUs.&lt;/p&gt;
&lt;p&gt;The trend is clear: competition among leading model companies is not only about model names, benchmarks, and product features. It is also about power, data centers, GPUs, TPUs, networking, and global deployment capacity.&lt;/p&gt;
&lt;h2 id=&#34;practical-impact-for-claude-code-users&#34;&gt;Practical impact for Claude Code users
&lt;/h2&gt;&lt;p&gt;For developers, the most important change is the doubled five-hour Claude Code limit. It affects scenarios such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading large repositories.&lt;/li&gt;
&lt;li&gt;Multi-file refactoring.&lt;/li&gt;
&lt;li&gt;Bug investigation and test fixing.&lt;/li&gt;
&lt;li&gt;Code migration and dependency upgrades.&lt;/li&gt;
&lt;li&gt;Long-running agentic coding tasks.&lt;/li&gt;
&lt;li&gt;Multiple people using Claude Code in Team or Enterprise plans.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A common Claude Code problem has been reaching the limit while a task is still in progress. Higher limits make it easier for an agent to complete a full task instead of stopping halfway.&lt;/p&gt;
&lt;p&gt;For Pro and Max users, removing peak-hour limit reductions is also important. It means the experience may become more stable during busy periods, with less disruption from temporary tightening.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-api-users&#34;&gt;What it means for API users
&lt;/h2&gt;&lt;p&gt;The announcement also says Claude Opus API rate limits have increased significantly. For teams using Opus for difficult tasks, that usually means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Higher concurrency.&lt;/li&gt;
&lt;li&gt;Fewer 429 rate-limit errors.&lt;/li&gt;
&lt;li&gt;Easier support for batch workloads.&lt;/li&gt;
&lt;li&gt;Better fit for long-context, complex reasoning, and agent workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Actual limits still vary by account, organization, model, and plan. Before production deployment, teams should still check their Anthropic Console, rate limit documentation, and error logs.&lt;/p&gt;
&lt;h2 id=&#34;enterprise-and-regional-deployment-matter-more&#34;&gt;Enterprise and regional deployment matter more
&lt;/h2&gt;&lt;p&gt;Anthropic also notes that regulated industries such as finance, healthcare, and government increasingly need regional infrastructure to satisfy compliance and data residency requirements. Part of its capacity expansion will therefore be outside the United States, especially for inference capacity in Asia and Europe.&lt;/p&gt;
&lt;p&gt;This matters for enterprise customers. Once large model applications enter core business workflows, the questions are not only whether the model is good enough. They also include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether data stays in the required region.&lt;/li&gt;
&lt;li&gt;Whether industry compliance requirements are met.&lt;/li&gt;
&lt;li&gt;Whether peak-hour capacity is stable.&lt;/li&gt;
&lt;li&gt;Whether team-level and organization-level concurrency are supported.&lt;/li&gt;
&lt;li&gt;Whether audit, permission, and security controls are available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From that perspective, compute expansion is not just performance news. It can shape enterprise procurement and deployment decisions.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Anthropic&amp;rsquo;s message is direct: Claude Code and Claude API usage constraints are being relaxed because new compute capacity is coming online.&lt;/p&gt;
&lt;p&gt;For everyday Claude Code users, the most important points are the doubled five-hour limit and the removal of peak-hour reductions for Pro and Max. For API and enterprise users, the main points are higher Opus rate limits and Anthropic&amp;rsquo;s longer-term compute partnerships with SpaceX, Amazon, Google, Microsoft, NVIDIA, and Fluidstack.&lt;/p&gt;
&lt;p&gt;AI tools are increasingly infrastructure services. Model quality matters, but stable capacity, regional compliance, limit policy, and cost control also shape the user experience.&lt;/p&gt;
&lt;p&gt;Reference:&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&#39;s New Realtime Voice Models: GPT-Realtime-2, Live Translation, and Streaming Transcription</title>
        <link>https://knightli.com/en/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/en/2026/05/09/openai-realtime-voice-models-gpt-realtime-2-translate-whisper/</guid>
        <description>&lt;p&gt;On May 7, 2026, OpenAI introduced a new generation of voice models for the Realtime API. The point is not only to make AI sound more natural, but to let voice agents understand, reason, call tools, translate, and transcribe during a live conversation.&lt;/p&gt;
&lt;p&gt;The update includes three models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt;: the main model for realtime voice agents, with stronger reasoning, tool calling, and longer context.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt;: a live speech translation model that supports 70+ input languages and 13 output languages.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt;: a low-latency streaming speech-to-text model for captions, meeting notes, and realtime workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If early voice assistants were mostly “ask once, answer once,” this release moves closer to a voice interface that can listen and act at the same time.&lt;/p&gt;
&lt;h2 id=&#34;gpt-realtime-2-the-main-model-for-voice-agents&#34;&gt;GPT-Realtime-2: the main model for voice agents
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; is built for live voice interactions. It does not just answer questions; it needs to keep context while the user speaks, changes direction, interrupts, or adds constraints, and then call tools when needed.&lt;/p&gt;
&lt;p&gt;Officially highlighted capabilities include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Short preambles before a response, such as “let me check that,” so users know the system is working.&lt;/li&gt;
&lt;li&gt;Parallel tool calls for calendars, search, orders, support systems, and other multi-tool workflows.&lt;/li&gt;
&lt;li&gt;More natural recovery behavior when something fails.&lt;/li&gt;
&lt;li&gt;A context window increased from 32K to 128K for longer conversations and more complex task flows.&lt;/li&gt;
&lt;li&gt;Better retention of specialized terminology, proper nouns, and medical vocabulary.&lt;/li&gt;
&lt;li&gt;More controllable tone and delivery, such as calm, empathetic, confirmational, or upbeat responses.&lt;/li&gt;
&lt;li&gt;Adjustable 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;, and &lt;code&gt;xhigh&lt;/code&gt;, with &lt;code&gt;low&lt;/code&gt; as the default.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This means developers can use voice agents in more demanding products, not only simple Q&amp;amp;A. A support agent can listen while checking an order; a travel app can give next steps after a flight change; a real estate assistant can filter listings and schedule a tour from spoken requirements.&lt;/p&gt;
&lt;h2 id=&#34;live-translation-for-multilingual-voice-products&#34;&gt;Live translation for multilingual voice products
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; is designed for live speech translation. People can speak in their own language while the other side hears translated speech and sees realtime transcripts.&lt;/p&gt;
&lt;p&gt;Clear use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multilingual customer support.&lt;/li&gt;
&lt;li&gt;Cross-border sales and pre-sales conversations.&lt;/li&gt;
&lt;li&gt;Online education and live events.&lt;/li&gt;
&lt;li&gt;International meetings and hosting.&lt;/li&gt;
&lt;li&gt;Creator and video platform localization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The hard part of live translation is not only accuracy. It also requires low latency, natural pauses, tone preservation, accent handling, and domain vocabulary. OpenAI is emphasizing cross-language conversations that feel closer to natural speech, instead of waiting for an entire segment before translation begins.&lt;/p&gt;
&lt;h2 id=&#34;streaming-transcription-voice-content-enters-workflows-immediately&#34;&gt;Streaming transcription: voice content enters workflows immediately
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; is the new streaming speech-to-text model. Its value is turning speech into usable text while it is happening, instead of waiting for a recording to finish.&lt;/p&gt;
&lt;p&gt;Common applications include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live meeting captions.&lt;/li&gt;
&lt;li&gt;Classroom and broadcast captions.&lt;/li&gt;
&lt;li&gt;Realtime meeting notes.&lt;/li&gt;
&lt;li&gt;Continuous dictation input for voice agents.&lt;/li&gt;
&lt;li&gt;Follow-up workflows in support, healthcare, recruiting, sales, and other high-volume voice scenarios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For products, streaming transcription shortens the time from spoken words to actionable text. Captions appear faster, notes can be generated during the conversation, and downstream workflows such as summaries, task extraction, and CRM updates can start earlier.&lt;/p&gt;
&lt;h2 id=&#34;pricing-and-availability&#34;&gt;Pricing and availability
&lt;/h2&gt;&lt;p&gt;All three models are available in the Realtime API. Official pricing is:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Price&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;Audio input $32 / 1M tokens, cached input $0.40 / 1M tokens, audio output $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 / minute&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 / minute&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OpenAI also says the Realtime API supports EU Data Residency and is covered by its enterprise privacy commitments. For European businesses or products with data residency requirements, that is worth evaluating separately.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-developers&#34;&gt;What this means for developers
&lt;/h2&gt;&lt;p&gt;The key shift is that voice is becoming part of the product interaction layer, not just an input/output layer.&lt;/p&gt;
&lt;p&gt;In many earlier voice features, speech was converted to text, and text responses were converted back into speech. The hard middle layer is intent understanding, interruption handling, context tracking, tool calls, tool transparency, and graceful recovery.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; tries to move more of that capability directly into the realtime voice model. For developers, the question is not only answer quality, but whether the model can support sustained conversations and multi-step tasks.&lt;/p&gt;
&lt;p&gt;Products that are especially worth testing include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Customer support voice agents.&lt;/li&gt;
&lt;li&gt;In-car and mobile voice assistants.&lt;/li&gt;
&lt;li&gt;Travel, booking, real estate, finance, and other services that need conversation plus lookup.&lt;/li&gt;
&lt;li&gt;Multilingual meetings and cross-border communication tools.&lt;/li&gt;
&lt;li&gt;Live captions, meeting notes, and call quality systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;safety-and-disclosure-still-matter&#34;&gt;Safety and disclosure still matter
&lt;/h2&gt;&lt;p&gt;OpenAI says the Realtime API includes multiple safety layers, such as active classifiers over sessions and the ability to stop policy-violating conversations. Developers can also add their own guardrails through the Agents SDK.&lt;/p&gt;
&lt;p&gt;One easily missed requirement is disclosure: developers should make it clear when end users are interacting with AI, unless that is already obvious from the context.&lt;/p&gt;
&lt;p&gt;This matters in support, sales, education, healthcare, and similar scenarios. The more natural voice becomes, the more important product boundaries become: users should know they are talking to AI, and understand when speech may be recorded, transcribed, or used to trigger tools.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;OpenAI&amp;rsquo;s Realtime API update moves live voice from “can listen and speak” toward “can listen while working through tasks.”&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-Realtime-2&lt;/code&gt; handles more complex voice agents, &lt;code&gt;GPT-Realtime-Translate&lt;/code&gt; handles live cross-language communication, and &lt;code&gt;GPT-Realtime-Whisper&lt;/code&gt; handles low-latency transcription. Together, they cover the three basic capabilities most voice products need: conversation, translation, and transcription.&lt;/p&gt;
&lt;p&gt;If you are building support, in-car, meeting, education, cross-border communication, or mobile voice assistant products, this release is worth testing. The important question is not only whether the model sounds natural, but how it performs in long conversations, interruptions, tool calls, failure recovery, and cost control.&lt;/p&gt;
&lt;p&gt;Reference:&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>What to Do if Your Claude Account Is Suspended: Claude Code Limits and Appeal Guide</title>
        <link>https://knightli.com/en/2026/05/09/claude-account-suspension-code-limit-guide/</link>
        <pubDate>Sat, 09 May 2026 10:32:12 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/09/claude-account-suspension-code-limit-guide/</guid>
        <description>&lt;p&gt;When a Claude or Claude Code account is suddenly limited, suspended right after payment, loses Pro access, or shows lower-than-expected usage capacity, many users naturally look for quick explanations. The important point is that this should not be treated as a simple &amp;ldquo;change IP&amp;rdquo; or &amp;ldquo;create another account&amp;rdquo; technical problem. Account risk systems usually combine signals such as region, payment, device, login behavior, usage content, automation, and sharing patterns.&lt;/p&gt;
&lt;p&gt;A safer way to handle the issue is to first identify what kind of problem you actually have: normal quota limit, payment or subscription mismatch, Claude Code authorization issue, or an account-level action because Anthropic believes usage violated its policies or terms.&lt;/p&gt;
&lt;h2 id=&#34;first-distinguish-three-situations&#34;&gt;First, distinguish three situations
&lt;/h2&gt;&lt;p&gt;The first category is normal usage limits. Claude Pro, Max, Team, API, and Claude Code have different quota models. Peak-hour use, long context, coding tasks, and agent workflows may consume limits faster. Seeing &amp;ldquo;limit reached&amp;rdquo; does not necessarily mean your account is banned.&lt;/p&gt;
&lt;p&gt;The second category is subscription or authorization trouble. For example, payment may have succeeded but access has not refreshed, a mobile subscription may not match the web account, Claude Code may not be logged in correctly, or an old &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; may remain in your environment. Start by checking billing, login state, and client configuration.&lt;/p&gt;
&lt;p&gt;The third category is account suspension or termination. Typical signs include emails mentioning suspension, disabled account, or termination, or a login page that says the account is unavailable. In this case, do not repeatedly switch devices, networks, and accounts to try again. That may make the risk signals more complicated.&lt;/p&gt;
&lt;h2 id=&#34;common-triggers&#34;&gt;Common triggers
&lt;/h2&gt;&lt;p&gt;Anthropic&amp;rsquo;s help and privacy documentation mention common risk areas such as violations of the Usage Policy, account creation or use from unsupported regions, terms violations, repeated violations, unusual access, and abuse.&lt;/p&gt;
&lt;p&gt;In practice, risky patterns include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Account registration, login region, and payment region do not match.&lt;/li&gt;
&lt;li&gt;Long-term use of datacenter proxies, shared proxies, or frequent IP switching.&lt;/li&gt;
&lt;li&gt;Multiple people sharing one personal account.&lt;/li&gt;
&lt;li&gt;Frequent logins from many devices or regions in a short time.&lt;/li&gt;
&lt;li&gt;Automated high-frequency access to Claude.ai.&lt;/li&gt;
&lt;li&gt;Treating Claude Code as a shared service or resale entry point.&lt;/li&gt;
&lt;li&gt;Requesting content that clearly violates Anthropic&amp;rsquo;s policies.&lt;/li&gt;
&lt;li&gt;Conflicts among payment method, billing address, and account region.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key is not that any single signal always causes suspension. The risk increases when multiple abnormal signals appear together.&lt;/p&gt;
&lt;h2 id=&#34;do-not-solve-it-by-evading-risk-controls&#34;&gt;Do not solve it by evading risk controls
&lt;/h2&gt;&lt;p&gt;Online advice often suggests &amp;ldquo;stable usage solutions&amp;rdquo; such as fingerprint browsers, device fingerprint reset, deleting local folders, changing environments, aligning time zone and language, or registering with a new email. Some of this is ordinary troubleshooting, but some is clearly aimed at evading platform risk controls.&lt;/p&gt;
&lt;p&gt;Do not treat &amp;ldquo;bypassing risk control&amp;rdquo; as the solution. Reasons are simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It may violate the terms of service.&lt;/li&gt;
&lt;li&gt;It may add more account risk signals.&lt;/li&gt;
&lt;li&gt;It does not solve root causes such as payment, region, or policy violations.&lt;/li&gt;
&lt;li&gt;For team or business use, it makes later appeals harder to explain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is long-term stable use of Claude, the right direction is not disguise. It is making account information, region, payment, device, and usage real, consistent, and explainable.&lt;/p&gt;
&lt;h2 id=&#34;troubleshooting-claude-code-limits&#34;&gt;Troubleshooting Claude Code limits
&lt;/h2&gt;&lt;p&gt;Claude Code users can start with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;If you use an API key, confirm that the environment variable points to the right account:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In 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;If you have used web login, OAuth, API keys, third-party clients, or different terminals, standardize the authentication method first. One tool may still be using old credentials.&lt;/p&gt;
&lt;p&gt;Also distinguish two cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code reached its usage limit: usually a quota or subscription issue.&lt;/li&gt;
&lt;li&gt;The account or organization is disabled: usually an account, organization, payment, or policy risk issue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the first, wait for quota refresh or adjust the plan. For the second, keep screenshots and emails, then use official support or appeal channels.&lt;/p&gt;
&lt;h2 id=&#34;compliant-stability-tips&#34;&gt;Compliant stability tips
&lt;/h2&gt;&lt;p&gt;To reduce the chance of account problems, start with the basics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a normal account in a supported country or region.&lt;/li&gt;
&lt;li&gt;Keep login region, payment method, and billing information consistent when possible.&lt;/li&gt;
&lt;li&gt;Avoid sharing a personal account among multiple people.&lt;/li&gt;
&lt;li&gt;Do not use a personal Pro/Max account as a team API pool.&lt;/li&gt;
&lt;li&gt;Avoid frequent changes of IP, device, and browser environment.&lt;/li&gt;
&lt;li&gt;Do not use unknown third-party Claude clients.&lt;/li&gt;
&lt;li&gt;Avoid high-frequency automation against Claude.ai&amp;rsquo;s web interface.&lt;/li&gt;
&lt;li&gt;For business or team use, prefer Team, Enterprise, or API plans.&lt;/li&gt;
&lt;li&gt;Read Anthropic&amp;rsquo;s Usage Policy and avoid restricted use cases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you genuinely need to use Claude on multiple devices, log in normally. Do not keep clearing environments, changing fingerprints, or switching proxies. Excessive environment manipulation can itself look abnormal.&lt;/p&gt;
&lt;h2 id=&#34;what-to-do-after-suspension&#34;&gt;What to do after suspension
&lt;/h2&gt;&lt;p&gt;If the account is already suspended, handle it in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check emails from Anthropic or Claude and confirm the stated reason or message type.&lt;/li&gt;
&lt;li&gt;Stop creating new accounts, changing networks, and retrying from more devices.&lt;/li&gt;
&lt;li&gt;Collect account email, subscription order, payment proof, and recent usage context.&lt;/li&gt;
&lt;li&gt;If you believe it is a mistake, submit an appeal or contact support through official channels.&lt;/li&gt;
&lt;li&gt;Explain the real usage scenario. Do not invent region, identity, or purpose.&lt;/li&gt;
&lt;li&gt;If payment is involved, ask separately about refund or subscription handling.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When appealing, be specific. Mention whether you used Claude Code, switched devices, used a VPN, shared with a team, or connected third-party tools. The platform needs to identify the source of risk. A vague &amp;ldquo;I did nothing&amp;rdquo; usually does not help much.&lt;/p&gt;
&lt;h2 id=&#34;claims-to-treat-carefully&#34;&gt;Claims to treat carefully
&lt;/h2&gt;&lt;p&gt;Some posts or videos claim that &amp;ldquo;fixed fingerprints prevent bans&amp;rdquo;, &amp;ldquo;one browser prevents suspension completely&amp;rdquo;, &amp;ldquo;deleting one directory resets device identity&amp;rdquo;, or &amp;ldquo;matching IP, time zone, and language solves everything&amp;rdquo;. Do not accept these claims uncritically.&lt;/p&gt;
&lt;p&gt;Platform risk systems are usually multidimensional. They do not only look at browser fingerprint or IP. Account history, payment information, region policy, content, access frequency, automation patterns, client version, and API calling behavior may all matter. Single-signal disguise is not long-term stability and may create more inconsistencies.&lt;/p&gt;
&lt;p&gt;More importantly, many so-called anti-ban solutions are actually selling tools or services. What users really need is to identify the risk source, use the service compliantly, and preserve appeal evidence, not rely on third-party environment wrappers for account safety.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Claude account suspension or Claude Code limitation is not always caused by one thing. It may be quota, subscription, authorization, or a combined risk signal involving region, payment, device, sharing, automation, or policy-sensitive content.&lt;/p&gt;
&lt;p&gt;The key to long-term stable use of Claude is not bypassing risk controls. It is compliant usage, consistent account information, stable access patterns, and formal plans for team use. If an account is suspended, stop manipulating the environment, preserve evidence, and use official appeal and support channels.&lt;/p&gt;
&lt;p&gt;References:&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>From PPT to Prototypes: Use Cases for Guizang PPT Skill and Huashu Design</title>
        <link>https://knightli.com/en/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/en/2026/05/09/guizang-ppt-skill-huashu-design-agent-skills/</guid>
        <description>&lt;p&gt;Two design-oriented Agent Skills made by Chinese developers are worth looking at side by side: &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; by Guizang, and &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; by Huashu.&lt;/p&gt;
&lt;p&gt;They are not “design tools” in the traditional sense. Instead, they turn a design process, aesthetic preferences, checklists, and engineering templates into Skills that an Agent can execute. You are not opening a UI and slowly dragging elements around. You hand the requirement to an Agent such as Claude Code, Codex, or Cursor, and let it generate HTML, PPT, animation, or prototypes through a fixed workflow.&lt;/p&gt;
&lt;p&gt;The value of these projects is not that they let AI improvise. It is that they turn “how to make this not look bad” into a repeatable process.&lt;/p&gt;
&lt;h2 id=&#34;guizang-ppt-skill-focused-on-magazine-style-web-ppt&#34;&gt;guizang-ppt-skill: focused on magazine-style web PPT
&lt;/h2&gt;&lt;p&gt;Guizang&amp;rsquo;s &lt;code&gt;guizang-ppt-skill&lt;/code&gt; has a clear positioning: it generates single-file HTML, horizontally paged PPTs with a visual baseline of “digital magazine x e-ink.” It feels more like a layout system prepared for talks than a general-purpose design framework.&lt;/p&gt;
&lt;p&gt;The repository README lists these core capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single-file HTML output, with no build step or server required. Open it directly in a browser.&lt;/li&gt;
&lt;li&gt;Horizontal page navigation, with support for keyboard, mouse wheel, touch swipes, bottom dots, and an ESC index.&lt;/li&gt;
&lt;li&gt;5 preset theme palettes, including Ink Classic, Indigo Porcelain, Forest Ink, Kraft Paper, and Dune.&lt;/li&gt;
&lt;li&gt;10 page layouts, including opening cover, section divider, big-number data poster, text-left-image-right, image grid, Pipeline, suspense question, large quote, Before/After comparison, and mixed text-image layout.&lt;/li&gt;
&lt;li&gt;Built-in templates, component notes, layout skeletons, theme configuration, and quality checklists.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is suitable for offline sharing, internal industry talks, private salons, AI product launches, demo days, and presentation decks with a strong personal style. It is less suited to large tables, training courseware, or multi-person collaborative editing.&lt;/p&gt;
&lt;p&gt;This project makes a good tradeoff: it does not try to cover every design scenario, but narrows itself to “magazine-style PPT.” Theme colors are chosen from presets, and layouts have clear skeletons. That actually reduces the chance of the Agent drifting off course.&lt;/p&gt;
&lt;p&gt;If you often need to turn opinions, industry observations, or product launch content into a presentation deck, it can be highly practical.&lt;/p&gt;
&lt;p&gt;The install command is straightforward:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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-a-fuller-html-native-design-workflow&#34;&gt;huashu-design: a fuller HTML-native design workflow
&lt;/h2&gt;&lt;p&gt;Huashu&amp;rsquo;s &lt;code&gt;huashu-design&lt;/code&gt; has broader coverage. Its goal is not just to make PPTs, but to treat HTML as a native design canvas and let an Agent produce deliverable design assets.&lt;/p&gt;
&lt;p&gt;The repository README lists these capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clickable App or Web prototypes.&lt;/li&gt;
&lt;li&gt;HTML slides, plus editable PPTX export.&lt;/li&gt;
&lt;li&gt;Product launch animations, MP4, GIF, and versions with music.&lt;/li&gt;
&lt;li&gt;Multiple design directions shown side by side for comparison.&lt;/li&gt;
&lt;li&gt;Infographics, data visualizations, and PDF, PNG, SVG export.&lt;/li&gt;
&lt;li&gt;5-dimensional expert review, covering philosophical consistency, visual hierarchy, execution craft, functionality, and innovation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its core idea is to let the Agent understand the brand and assets first, then produce high-fidelity design. The project emphasizes a Core Asset Protocol: when dealing with a specific brand, first confirm the logo, product images, UI screenshots, color palette, fonts, and brand guidelines instead of guessing from memory.&lt;/p&gt;
&lt;p&gt;This matters. Many AI-generated designs look “like design,” but they do not look like a real product or brand. &lt;code&gt;huashu-design&lt;/code&gt; tries to solve that problem up front: find real assets first, then design.&lt;/p&gt;
&lt;p&gt;The install command is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;It is better suited to people who want to complete a fuller design delivery from the terminal: product prototypes, launch animations, presentations, infographics, and design reviews can all be handled inside one Agent workflow.&lt;/p&gt;
&lt;h2 id=&#34;the-biggest-difference-between-the-two&#34;&gt;The biggest difference between the two
&lt;/h2&gt;&lt;p&gt;In simple terms, &lt;code&gt;guizang-ppt-skill&lt;/code&gt; is a narrower and steadier presentation deck generator; &lt;code&gt;huashu-design&lt;/code&gt; is a broader and more complete HTML-native design system.&lt;/p&gt;
&lt;p&gt;If you only look at PPT:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; emphasizes magazine feel, rhythm, layout, and single-file browser presentations.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; emphasizes general design capability, editable PPTX, brand assets, export paths, and review workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you look at overall design capability:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; has clearer boundaries and is suitable for quickly making a stylish horizontal presentation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;huashu-design&lt;/code&gt; is more comprehensive and is suitable for breaking a product or brand design task into prototypes, animations, slides, and infographics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These two projects also represent two different ways to write Skills. The former is like a highly constrained set of templates and aesthetic rules. The latter is like a workflow manual for a small design team.&lt;/p&gt;
&lt;h2 id=&#34;why-this-kind-of-skill-matters&#34;&gt;Why this kind of Skill matters
&lt;/h2&gt;&lt;p&gt;A common problem with Agents is that they “can do it, but not consistently.” The same request may produce a strong result once, then drift into purple gradients, rounded cards, fake icons, and a pile of fancy-sounding empty copy the next time.&lt;/p&gt;
&lt;p&gt;Skills are a way to add stability. They lock down things such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reusable templates.&lt;/li&gt;
&lt;li&gt;Executable checklists.&lt;/li&gt;
&lt;li&gt;Clear aesthetic preferences.&lt;/li&gt;
&lt;li&gt;Rules for avoiding common mistakes.&lt;/li&gt;
&lt;li&gt;Output formats and validation flows.&lt;/li&gt;
&lt;li&gt;When to ask questions and when to start directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is far more reliable than simply writing “please make it look more premium.”&lt;/p&gt;
&lt;p&gt;This is especially true for design tasks. Aesthetics cannot be reproduced reliably by a single prompt. What really helps is process: confirm assets first, decide the direction, build the structure, work on the visuals, then inspect the output. When this process is written as a Skill, the Agent becomes more like a collaborative executor rather than a one-shot image generator.&lt;/p&gt;
&lt;h2 id=&#34;usage-recommendations&#34;&gt;Usage recommendations
&lt;/h2&gt;&lt;p&gt;If you just want to turn a topic into an offline talk or sharing deck, try &lt;code&gt;guizang-ppt-skill&lt;/code&gt; first. Its output boundary is narrow, and single-file HTML is also easy to distribute and preview.&lt;/p&gt;
&lt;p&gt;If you want an Agent to take on a more complete design task, such as App prototypes, launch animations, branded slides, exportable PPTX, or infographics, look at &lt;code&gt;huashu-design&lt;/code&gt; first. Its workflow is longer and better suited to tasks that need multiple rounds of iteration and exported deliverables.&lt;/p&gt;
&lt;p&gt;If you are already writing your own Codex or Claude Code Skill, both projects are worth studying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To learn “how to make a narrow scenario stable,” look at &lt;code&gt;guizang-ppt-skill&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To learn “how to break a complex workflow into executable protocols,” look at &lt;code&gt;huashu-design&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;What Guizang and Huashu have in common is that both turn “design capability” from a one-time prompt into a repeatable process.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;guizang-ppt-skill&lt;/code&gt; focuses on magazine-style HTML PPT and works well for highly stylized presentations. &lt;code&gt;huashu-design&lt;/code&gt; focuses on an HTML-native design system covering prototypes, animations, slides, infographics, and reviews. The problem they solve is not “can AI generate design,” but “can AI generate deliverable design through a stable method.”&lt;/p&gt;
&lt;p&gt;This may become an important type of open-source project in the Agent tooling ecosystem: not just code templates, but packaged human experience, aesthetics, and working methods as Skills.&lt;/p&gt;
&lt;p&gt;Reference links:&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>How to Detect Claude 4-Generated Text: AI Text Detection Tools and Methods</title>
        <link>https://knightli.com/en/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/en/2026/05/08/detect-claude-4-ai-generated-text-tools/</guid>
        <description>&lt;p&gt;If you want to judge whether a text was generated by Claude 4, the most important premise is this: no tool can give a 100% certain answer. AI text detection is probabilistic. It can suggest that a passage looks more like AI writing, but it cannot prove that the author definitely used Claude 4.&lt;/p&gt;
&lt;p&gt;This matters even more in 2026. Claude 4, GPT-5, Gemini 2.5, DeepSeek, and other models write more like humans than earlier systems. Many texts are also no longer purely AI or purely human: they may be drafted by AI, edited by humans, polished by grammar tools, translated, rewritten, and stitched together. Detection tools can provide clues, but reliable judgment should also consider the writing process, version history, cited sources, and human review.&lt;/p&gt;
&lt;h2 id=&#34;the-short-answer-never-rely-on-one-score&#34;&gt;The short answer: never rely on one score
&lt;/h2&gt;&lt;p&gt;For a quick self-check, use two or three detectors together, such as GPTZero, Copyleaks, Originality.ai, Sapling, and Winston AI. In academic settings, Turnitin is common. Their models, training data, and thresholds differ, so the same text may receive different results.&lt;/p&gt;
&lt;p&gt;A more reliable process is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run the same text through at least two tools.&lt;/li&gt;
&lt;li&gt;Review sentence-level highlights, not just the total score.&lt;/li&gt;
&lt;li&gt;Check for citation errors, factual hallucinations, and overly smooth transitions.&lt;/li&gt;
&lt;li&gt;Look at writing-process evidence such as drafts, revision history, and commit history.&lt;/li&gt;
&lt;li&gt;Treat low AI scores cautiously and never use detection output as the only evidence.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In schools, hiring, publishing, and compliance scenarios, AI detection should be a risk signal, not the final verdict.&lt;/p&gt;
&lt;h2 id=&#34;common-tools&#34;&gt;Common tools
&lt;/h2&gt;&lt;h3 id=&#34;gptzero&#34;&gt;GPTZero
&lt;/h3&gt;&lt;p&gt;GPTZero is widely used in education and publishing. It became known early for statistical ideas such as perplexity and burstiness, and has since evolved into a multi-stage detection system that updates for newer model families.&lt;/p&gt;
&lt;p&gt;It works well as an initial screen for long English essays, drafts, and articles. Its strengths are a friendly interface and clear sentence-level explanations. Its weaknesses are short texts, heavily human-edited texts, and multilingual mixed content.&lt;/p&gt;
&lt;h3 id=&#34;copyleaks-ai-detector&#34;&gt;Copyleaks AI Detector
&lt;/h3&gt;&lt;p&gt;Copyleaks is strong in multilingual detection, API access, browser extensions, and LMS integrations. Its official pages claim support for Claude, Gemini, GPT-5, DeepSeek, Llama, and other model families, and emphasize detection of mixed human and AI writing.&lt;/p&gt;
&lt;p&gt;It is useful for content teams, educational institutions, and enterprises that need batch workflows. Still, vendor accuracy claims are usually measured on specific test sets. In practice, you must consider text length, language, rewriting, and the cost of false positives.&lt;/p&gt;
&lt;h3 id=&#34;turnitin-ai-writing-report&#34;&gt;Turnitin AI Writing Report
&lt;/h3&gt;&lt;p&gt;Turnitin is mainly used in academic integrity workflows. It provides an AI writing indicator, highlighted passages, and support for detecting both generated text and text processed by AI paraphrasing tools.&lt;/p&gt;
&lt;p&gt;But Turnitin&amp;rsquo;s own documentation warns that models can misclassify human text, AI text, or AI-paraphrased text, and should not be used as the only basis for adverse action against a student. It also handles lower AI percentages carefully to reduce misreading and false-positive risk.&lt;/p&gt;
&lt;h3 id=&#34;originalityai-sapling-and-winston-ai&#34;&gt;Originality.ai, Sapling, and Winston AI
&lt;/h3&gt;&lt;p&gt;These tools often appear in content marketing, SEO, publishing, and editorial workflows. They usually provide batch detection, team features, APIs, or sentence-level analysis. They are useful for content quality control, but a single result still should not be treated as proof.&lt;/p&gt;
&lt;h3 id=&#34;zerogpt-monica-phrasly-and-free-tools&#34;&gt;ZeroGPT, Monica, Phrasly, and free tools
&lt;/h3&gt;&lt;p&gt;Free tools are fine for a quick self-check, but they are not recommended for high-stakes decisions. Their thresholds, training data, false-positive rates, and update schedules may not be transparent. Claims of &amp;ldquo;99%+ accuracy&amp;rdquo; should be treated cautiously.&lt;/p&gt;
&lt;h2 id=&#34;what-detection-algorithms-look-at&#34;&gt;What detection algorithms look at
&lt;/h2&gt;&lt;p&gt;Traditional AI text detection often mentions two metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Perplexity&lt;/code&gt;: roughly measures how predictable the text is to a language model. Extremely smooth text with highly predictable next words may look more AI-like.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Burstiness&lt;/code&gt;: measures variation in sentence length, structure, and rhythm. Human writing often has more uneven variation, while model output is often smoother.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Modern detectors usually go beyond these two metrics. They combine many signals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Word frequency and phrase patterns.&lt;/li&gt;
&lt;li&gt;Syntax structure and part-of-speech distribution.&lt;/li&gt;
&lt;li&gt;Punctuation, connectors, and paragraph organization.&lt;/li&gt;
&lt;li&gt;Repeated sentence templates.&lt;/li&gt;
&lt;li&gt;Semantic consistency and suspicious factual references.&lt;/li&gt;
&lt;li&gt;Model-specific linguistic fingerprints.&lt;/li&gt;
&lt;li&gt;Boundaries between human and AI-written passages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, when a tool detects Claude 4-like writing, it is usually not identifying a Claude 4 watermark. It is judging whether the passage matches statistical patterns associated with LLM-generated text.&lt;/p&gt;
&lt;h2 id=&#34;why-claude-4-is-harder-to-detect&#34;&gt;Why Claude 4 is harder to detect
&lt;/h2&gt;&lt;p&gt;Claude models tend to produce natural prose with stable long-paragraph transitions. With careful prompting, Claude 4 can imitate personal style, reduce template-like wording, and keep a small amount of conversational irregularity. After human editing or translation, detection becomes even harder.&lt;/p&gt;
&lt;p&gt;That creates two issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pure Claude 4 output may be detected as AI, but confidence depends on topic, language, and length.&lt;/li&gt;
&lt;li&gt;Text drafted by Claude 4 and then edited by humans may evade detection, or may still be flagged with a high AI score.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the most valuable part of a report is not &amp;ldquo;87% AI&amp;rdquo;. It is which sentences are highlighted, why they look suspicious, and whether those signals align with writing-process evidence.&lt;/p&gt;
&lt;h2 id=&#34;recommended-workflow&#34;&gt;Recommended workflow
&lt;/h2&gt;&lt;p&gt;If you need to judge whether an article may have been generated by Claude 4, use this process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Preserve the original text and do not rewrite it first.&lt;/li&gt;
&lt;li&gt;Test it with tools such as GPTZero, Copyleaks, or Turnitin.&lt;/li&gt;
&lt;li&gt;Record the total score, highlighted sentences, and tool version.&lt;/li&gt;
&lt;li&gt;Manually review highlighted sentences for formulaic transitions, generic wording, and unsupported claims.&lt;/li&gt;
&lt;li&gt;Verify citations, data, links, and proper nouns.&lt;/li&gt;
&lt;li&gt;Ask for writing-process material such as outlines, drafts, and revision history.&lt;/li&gt;
&lt;li&gt;Treat the detection result only as supporting evidence.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you want to reduce the risk of your own writing being misclassified, the right approach is not to &amp;ldquo;bypass detectors&amp;rdquo;. Keep writing records, add real experience, verify citations, remove vague filler, and make the article reflect real human judgment and sources.&lt;/p&gt;
&lt;h2 id=&#34;common-false-positive-cases&#34;&gt;Common false-positive cases
&lt;/h2&gt;&lt;p&gt;These texts are especially easy to misclassify:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Formal English written by non-native speakers.&lt;/li&gt;
&lt;li&gt;Highly templated academic abstracts, business emails, and policy notes.&lt;/li&gt;
&lt;li&gt;Text polished by tools such as Grammarly, DeepL Write, or Notion AI.&lt;/li&gt;
&lt;li&gt;Short texts, titles, summaries, and product descriptions.&lt;/li&gt;
&lt;li&gt;Translation-like Chinese or English.&lt;/li&gt;
&lt;li&gt;Multi-author drafts that have been normalized into one style.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The higher the stakes around discipline, hiring, grades, copyright, or compliance, the less acceptable it is to decide based on one AI score.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The most reliable way to detect Claude 4-generated text is not to trust one &amp;ldquo;latest algorithm&amp;rdquo; tool. Treat detectors as probability signals: cross-check multiple tools, inspect sentence-level highlights, and combine the result with citation checks and writing-process evidence.&lt;/p&gt;
&lt;p&gt;GPTZero, Copyleaks, Turnitin, Originality.ai, Sapling, and Winston AI can all be part of the toolbox. They improve the chance of finding AI-generated text, but they do not replace human judgment. A defensible conclusion should combine detection results, factual quality, process records, and the rules of the specific context.&lt;/p&gt;
&lt;p&gt;References:&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: How to Choose Between Two Subagent Designs</title>
        <link>https://knightli.com/en/2026/05/08/codex-vs-claude-code-subagent-design/</link>
        <pubDate>Fri, 08 May 2026 14:14:01 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/08/codex-vs-claude-code-subagent-design/</guid>
        <description>&lt;p&gt;AI coding tools are paying more attention to subagents. This is not just feature chasing. A single agent eventually hits limits when it has to handle real engineering work.&lt;/p&gt;
&lt;p&gt;If one agent reads code, checks logs, edits implementation, runs tests, analyzes failures, and summarizes results at the same time, the main context quickly becomes noisy. Search results, command output, test logs, and intermediate reasoning get mixed together. Later decisions become less reliable. Work also becomes hard to parallelize: exploration, implementation, verification, and review all sit on one main thread.&lt;/p&gt;
&lt;p&gt;The purpose of subagents is to reduce that pressure. The main session stops doing everything from start to finish and becomes more like a coordinator: define goals, assign work, receive results, and merge them into the final answer. A subagent handles a local piece of work, such as exploration, implementation, verification, or review, and returns a compressed conclusion.&lt;/p&gt;
&lt;p&gt;So a subagent is not “another copy of me.” It is a way to split tangled engineering work into clearer roles.&lt;/p&gt;
&lt;h2 id=&#34;shared-foundations&#34;&gt;Shared Foundations
&lt;/h2&gt;&lt;p&gt;A mature subagent system usually needs four foundations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Context isolation.&lt;/li&gt;
&lt;li&gt;Role specialization.&lt;/li&gt;
&lt;li&gt;Project and user-level configuration.&lt;/li&gt;
&lt;li&gt;Tool and permission boundaries.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Context isolation comes first. Real repositories produce a lot of intermediate material: dozens of search hits, hundreds of test log lines, noisy command output. If all of that is poured into the main session, the main thread gets confused. A subagent can digest that local process and bring back only the signals that matter.&lt;/p&gt;
&lt;p&gt;Role specialization is just as important. Multi-agent does not mean opening several identical models. Exploration roles should search, read, and summarize. Implementation roles should focus on local code changes. Verification roles should run checks, identify risks, and report clearly.&lt;/p&gt;
&lt;p&gt;Tool and permission boundaries determine whether the system can be used safely. A subagent should not automatically inherit every capability of the main session. A read-only explorer does not need write access. A verifier may not need to change implementation. Background tasks and isolated worktrees need visible boundaries.&lt;/p&gt;
&lt;p&gt;Codex and Claude Code share these concerns, but they take different routes.&lt;/p&gt;
&lt;h2 id=&#34;codex-explicit-delegation&#34;&gt;Codex: Explicit Delegation
&lt;/h2&gt;&lt;p&gt;Codex’s subagent design feels restrained.&lt;/p&gt;
&lt;p&gt;It gives you a controlled, lightweight delegation mechanism around the current main session. When to delegate, who receives the task, and when results are collected are all explicit decisions. The control flow stays in the current task.&lt;/p&gt;
&lt;p&gt;Its traits are clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The main session explicitly delegates subwork.&lt;/li&gt;
&lt;li&gt;The role set stays small.&lt;/li&gt;
&lt;li&gt;The main session knows which agent is doing what.&lt;/li&gt;
&lt;li&gt;Results return to the main line for final judgment.&lt;/li&gt;
&lt;li&gt;Collaboration boundaries are transparent.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This works well for teams that care about manual orchestration, predictability, and execution determinism. You can ask an explorer to inspect a call chain, ask a worker to make a bounded change, then let the main session merge the result and decide whether to test further.&lt;/p&gt;
&lt;p&gt;The tradeoff is that orchestration pressure still sits with the main session. The main thread must decide when to split work, how to split it, who should take it, and how to merge the result. For lightweight collaboration this is pleasant; for long-running engineering workflows it can become tiring.&lt;/p&gt;
&lt;h2 id=&#34;claude-code-agents-as-workstations&#34;&gt;Claude Code: Agents as Workstations
&lt;/h2&gt;&lt;p&gt;Claude Code takes a more platform-like route.&lt;/p&gt;
&lt;p&gt;It treats agents as describable, selectable, configurable, memorable, isolated, and background-capable objects. A subagent is not just a helper in a conversation. It is closer to a workstation in an engineering system.&lt;/p&gt;
&lt;p&gt;The system can expose agent lists, use cases, descriptions, and tool boundaries to the model, allowing the model to decide which role should handle a turn. That makes delegation more automatic.&lt;/p&gt;
&lt;p&gt;Several capabilities define this direction.&lt;/p&gt;
&lt;p&gt;First, a role system. Explorer, planner, general-purpose, and verifier roles can carry usage descriptions, tool restrictions, default models, and runtime conditions. A read-only explorer can be prevented from editing files. A planner can focus on architecture. A verifier can focus on checks.&lt;/p&gt;
&lt;p&gt;Second, inheritance and overrides. A subagent is not completely free. It inherits the larger boundary of the main session by default, but can adjust local behavior within allowed rules. The main session defines the big boundary; the agent performs local assembly inside it.&lt;/p&gt;
&lt;p&gt;Third, memory. Memory is not just “remember a few things.” It can have scope. User memory is like long-term preference. Project memory is repository background. Local memory is environment-specific state. This lets some agents avoid relearning the project from scratch.&lt;/p&gt;
&lt;p&gt;Fourth, background work and worktree isolation. Some verification tasks can keep running in the background, while the main thread continues. When stronger isolation is needed, an agent can work in a separate worktree, keeping the project connected but the operation space separated.&lt;/p&gt;
&lt;p&gt;Fifth, plugin ecosystem. If agents are first-class objects, you have to think about distribution, installation, priority, override rules, and safety. Plugin agents can enter the system, but high-risk fields such as permission mode, hooks, and MCP servers should remain guarded.&lt;/p&gt;
&lt;p&gt;This makes Claude Code feel more like an agent runtime than a one-session collaboration tool.&lt;/p&gt;
&lt;h2 id=&#34;the-difference&#34;&gt;The Difference
&lt;/h2&gt;&lt;p&gt;Codex is closer to a controlled delegation tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explicit delegation.&lt;/li&gt;
&lt;li&gt;Lightweight role set.&lt;/li&gt;
&lt;li&gt;Clean control flow.&lt;/li&gt;
&lt;li&gt;Subtasks centered on the current session.&lt;/li&gt;
&lt;li&gt;Good for deterministic, human-orchestrated work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code is closer to an engineering workstation system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agents are formally modeled.&lt;/li&gt;
&lt;li&gt;Roles are more systematic.&lt;/li&gt;
&lt;li&gt;Memory, background execution, isolation, and plugins are part of the runtime.&lt;/li&gt;
&lt;li&gt;The model can help choose roles.&lt;/li&gt;
&lt;li&gt;Good for long-term projects and platform-like workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The real question is not which one has more features. It is whether you want a subagent to be “a helper I explicitly call” or “a long-lived workstation in the system.”&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;Choose the Codex style if you value explicit control, lightweight delegation, and safe parallelism inside the current session. It is good for code review, small changes, clearly scoped implementation tasks, and workflows where a human wants to keep the rhythm.&lt;/p&gt;
&lt;p&gt;Choose the Claude Code style if you want systematic roles, long-term memory, background execution, worktree isolation, plugin extension, and a more complete agent runtime.&lt;/p&gt;
&lt;p&gt;Ask two questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Are you comfortable with the model choosing who should do the work?&lt;/li&gt;
&lt;li&gt;Do you need a fuller agent runtime?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the first question makes you uncomfortable, explicit delegation is likely better. If the second answer is yes, a platform-like workstation system may fit better.&lt;/p&gt;
&lt;h2 id=&#34;practical-advice&#34;&gt;Practical Advice
&lt;/h2&gt;&lt;p&gt;Do not treat subagents as “more models means stronger.” Better practice is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give every role a clear task boundary.&lt;/li&gt;
&lt;li&gt;Limit the tools each role can use.&lt;/li&gt;
&lt;li&gt;Ask subagents to return conclusions, not raw logs.&lt;/li&gt;
&lt;li&gt;Keep final decisions in the main session.&lt;/li&gt;
&lt;li&gt;Make background tasks and worktree isolation visible.&lt;/li&gt;
&lt;li&gt;Set clear safety boundaries for plugin agents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value of subagents is not quantity. It is clean division of labor, cleaner context, and more stable main-thread decisions.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Codex and Claude Code solve the same problem: one agent cannot comfortably carry all real engineering work. Both recognize the importance of context isolation, role specialization, permissions, and local summarization.&lt;/p&gt;
&lt;p&gt;Codex is more restrained, emphasizing explicit delegation and main-session control. Claude Code is more systematic, treating agents as configurable, memorable, isolated, background-capable workstations that can also enter a plugin ecosystem.&lt;/p&gt;
&lt;p&gt;The choice is not which brand wins. It is whether your workflow needs a controlled collaboration tool or a full agent runtime.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>9Router: Connect Claude Code, Codex, and Cursor to One AI Router</title>
        <link>https://knightli.com/en/2026/05/08/9router-ai-coding-router-token-saver/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/08/9router-ai-coding-router-token-saver/</guid>
        <description>&lt;p&gt;9Router is a local router for AI coding tools. It lets Claude Code, Codex, Cursor, Cline, Copilot, OpenCode, OpenClaw, and similar tools connect to one OpenAI-compatible endpoint, then routes requests to different models and providers.&lt;/p&gt;
&lt;p&gt;It is not trying to be another chat client. It sits between your AI coding tools and model providers, solving a few practical problems: incompatible API formats, manual provider switching, fast token burn from tool output, interrupted work when quotas run out, and messy multi-account configuration.&lt;/p&gt;
&lt;p&gt;According to the project README, 9Router supports 40+ providers and 100+ models. It includes RTK Token Saver, automatic fallback, quota tracking, multi-account rotation, format translation, and request logging. The project is written in JavaScript and uses Node.js, Next.js, React, Tailwind CSS, and LowDB. It is licensed under MIT.&lt;/p&gt;
&lt;h2 id=&#34;what-it-is-good-for&#34;&gt;What It Is Good For
&lt;/h2&gt;&lt;p&gt;9Router is most useful when you use multiple AI coding tools and multiple model sources at the same time.&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code uses a subscription account.&lt;/li&gt;
&lt;li&gt;Codex or Cursor needs a custom OpenAI endpoint.&lt;/li&gt;
&lt;li&gt;Cline, Continue, or RooCode needs an OpenAI-compatible API.&lt;/li&gt;
&lt;li&gt;Free providers are used for experiments.&lt;/li&gt;
&lt;li&gt;GLM, MiniMax, or Kimi is used as a cheaper backup.&lt;/li&gt;
&lt;li&gt;High-quality models are reserved for difficult tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without 9Router, these settings are scattered across many tools. Each tool needs its own endpoint, API key, model name, and fallback plan. 9Router centralizes that into one local routing layer.&lt;/p&gt;
&lt;p&gt;Default local 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: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;quick-install&#34;&gt;Quick Install
&lt;/h2&gt;&lt;p&gt;For local use, npm is the simplest path:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The dashboard opens locally, and the README uses &lt;code&gt;20128&lt;/code&gt; as the default port.&lt;/p&gt;
&lt;p&gt;Run from source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Production mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The npm package requires Node.js &lt;code&gt;&amp;gt;=18.0.0&lt;/code&gt;. For VPS or Docker deployment, configure &lt;code&gt;JWT_SECRET&lt;/code&gt;, &lt;code&gt;INITIAL_PASSWORD&lt;/code&gt;, &lt;code&gt;DATA_DIR&lt;/code&gt;, and &lt;code&gt;API_KEY_SECRET&lt;/code&gt; instead of exposing defaults.&lt;/p&gt;
&lt;h2 id=&#34;connect-coding-tools&#34;&gt;Connect Coding Tools
&lt;/h2&gt;&lt;p&gt;9Router exposes an OpenAI-compatible API, so most tools that support custom OpenAI endpoints can connect to it.&lt;/p&gt;
&lt;p&gt;Typical configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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: copied from the 9Router dashboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Model: a model name or combo name configured in 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;For 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;For Cline, Continue, or RooCode, choose &lt;code&gt;OpenAI Compatible&lt;/code&gt; and set:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Model names depend on connected providers. The README shows prefixes such as &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;, and &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 coding tools often burn tokens fastest on tool outputs:&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;logs&lt;/li&gt;
&lt;li&gt;long file lists&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router includes RTK Token Saver, which compresses these outputs before they are sent to the model. The project says this can save 20%-40% input tokens in many requests.&lt;/p&gt;
&lt;p&gt;The value is that you do not need to change tools or models. The routing layer removes waste before the request reaches the provider. Still, for critical logs or complete file content, test the behavior first and make sure answer quality does not drop.&lt;/p&gt;
&lt;h2 id=&#34;automatic-fallback&#34;&gt;Automatic Fallback
&lt;/h2&gt;&lt;p&gt;9Router can arrange models in priority order:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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. Subscription model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Cheap API
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. Free 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;When the first tier is rate-limited, out of quota, or failing, it can switch to the next one. This reduces manual switching and keeps coding sessions from stopping suddenly.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 changes output consistency. Different models have different style and reasoning quality. For large refactors, protocols, migrations, or other consistency-sensitive work, prefer a fixed model and switch manually only when needed.&lt;/p&gt;
&lt;h2 id=&#34;be-careful-with-free-providers&#34;&gt;Be Careful with Free Providers
&lt;/h2&gt;&lt;p&gt;The README highlights Kiro, OpenCode Free, Vertex, and also notes that some old free tiers have changed or are no longer recommended.&lt;/p&gt;
&lt;p&gt;Always confirm provider policy at the time of use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is it really free?&lt;/li&gt;
&lt;li&gt;Is it region-limited?&lt;/li&gt;
&lt;li&gt;Is third-party tool access allowed?&lt;/li&gt;
&lt;li&gt;Can it trigger bans or rate limits?&lt;/li&gt;
&lt;li&gt;Does the free quota expire?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;9Router manages routing, not upstream terms. Be especially careful when using personal subscriptions, OAuth tokens, or free quotas with automated tools.&lt;/p&gt;
&lt;h2 id=&#34;local-deployment-advice&#34;&gt;Local Deployment Advice
&lt;/h2&gt;&lt;p&gt;For personal use, bind to &lt;code&gt;localhost&lt;/code&gt;. Local tools can reach it, but the internet cannot.&lt;/p&gt;
&lt;p&gt;For VPS or LAN deployment:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change the default login password.&lt;/li&gt;
&lt;li&gt;Set a strong &lt;code&gt;JWT_SECRET&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;API_KEY_SECRET&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Put authentication in front of the dashboard.&lt;/li&gt;
&lt;li&gt;Do not expose the dashboard directly to the public internet.&lt;/li&gt;
&lt;li&gt;Require Bearer API keys for &lt;code&gt;/v1/*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Back up &lt;code&gt;DATA_DIR&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docker example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Start locally first, verify providers, combos, logs, and model names, then decide whether server deployment is worth it.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who Should Use It
&lt;/h2&gt;&lt;p&gt;9Router is a good fit if you use multiple AI coding tools, multiple providers, subscription plus free or cheap tiers, and want a central fallback policy. It is less useful if you only use one model and one tool.&lt;/p&gt;
&lt;p&gt;Its real value is turning scattered model access into a configurable local routing layer.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;9Router is a local gateway for AI coding tools. It lets Claude Code, Codex, Cursor, Cline, and similar tools talk to &lt;code&gt;http://localhost:20128/v1&lt;/code&gt;, while it handles model selection, format translation, token compression, quota tracking, and fallback.&lt;/p&gt;
&lt;p&gt;It is best for heavy AI coding users who already switch between providers. Start with one tool and one provider, then add accounts and combos gradually.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 repository&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 website&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 package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-TUI: Run a DeepSeek Coding Agent in Your Terminal</title>
        <link>https://knightli.com/en/2026/05/08/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Fri, 08 May 2026 13:41:15 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/08/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;DeepSeek-TUI is an AI coding agent that runs in the terminal. It is built around DeepSeek V4 models and starts from the &lt;code&gt;deepseek&lt;/code&gt; command. Inside a keyboard-driven TUI, it can read and edit files, run shell commands, search the web, manage git, connect to MCP servers, and coordinate sub-agents.&lt;/p&gt;
&lt;p&gt;It is closer to a terminal workbench than a simple chat CLI. The goal is not only to send a question to a model, but to combine code reading, file edits, commands, diagnostics, session recovery, and workspace rollback in one local workflow.&lt;/p&gt;
&lt;p&gt;The repository is mainly written in Rust and uses the MIT license. Its GitHub description is: “Coding agent for DeepSeek models that runs in your terminal.”&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI fits developers who prefer terminal workflows and want to use DeepSeek models for real local development tasks.&lt;/p&gt;
&lt;p&gt;It is useful when you want to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use DeepSeek models for code changes and project analysis.&lt;/li&gt;
&lt;li&gt;Work without opening a full IDE.&lt;/li&gt;
&lt;li&gt;Let an AI tool read and modify a local workspace.&lt;/li&gt;
&lt;li&gt;Switch between Plan, Agent, and YOLO modes.&lt;/li&gt;
&lt;li&gt;Save sessions and resume long tasks.&lt;/li&gt;
&lt;li&gt;Roll back workspace changes.&lt;/li&gt;
&lt;li&gt;Connect MCP, LSP diagnostics, HTTP/SSE runtime APIs, and skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only need simple Q&amp;amp;A, a web client or lightweight CLI is enough. DeepSeek-TUI is better when the model should become part of your local development loop.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI ships Rust binaries. The common entry command is &lt;code&gt;deepseek&lt;/code&gt;, and the companion TUI binary is &lt;code&gt;deepseek-tui&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Using 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;The npm package is an installer and wrapper that downloads prebuilt Rust binaries. It requires Node.js &lt;code&gt;&amp;gt;=18&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Using 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;Using 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;You can also download prebuilt binaries from GitHub Releases. The README lists Linux x64/ARM64, macOS x64/ARM64, and Windows x64 builds.&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;p&gt;In mainland China, use npm or Cargo mirrors, or download release binaries manually.&lt;/p&gt;
&lt;h2 id=&#34;configure-the-api-key&#34;&gt;Configure the API Key
&lt;/h2&gt;&lt;p&gt;On first launch, DeepSeek-TUI asks for your DeepSeek API key and saves it to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;You can also configure it explicitly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Or use an environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Check the setup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the wrong key source is used, run &lt;code&gt;deepseek auth status&lt;/code&gt;. Saved config keys take precedence over the keyring and environment variables.&lt;/p&gt;
&lt;p&gt;Clear a saved 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;p&gt;Auto mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Inside the 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 chooses both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model: &lt;code&gt;deepseek-v4-flash&lt;/code&gt; or &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;, or &lt;code&gt;max&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before the real request, DeepSeek-TUI makes a small routing call to analyze the latest request and recent context. Simple tasks can stay on Flash with thinking off; coding, debugging, architecture, release, security review, or ambiguous multi-step work can move to Pro or higher thinking.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;auto&lt;/code&gt; is local to DeepSeek-TUI. The upstream API receives the concrete model and thinking setting chosen for that turn. For benchmarks, strict cost control, or fixed behavior, use an explicit model.&lt;/p&gt;
&lt;h2 id=&#34;modes&#34;&gt;Modes
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Mode&lt;/th&gt;
          &lt;th&gt;Use&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;Read-only exploration and planning&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Agent&lt;/td&gt;
          &lt;td&gt;Default interactive mode with approval gates&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YOLO&lt;/td&gt;
          &lt;td&gt;Auto-approve tools in a trusted workspace&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Plan is for investigation. Agent is safer for everyday coding. YOLO is fast but risky and should only be used in trusted workspaces and low-risk branches.&lt;/p&gt;
&lt;h2 id=&#34;tooling&#34;&gt;Tooling
&lt;/h2&gt;&lt;p&gt;The README lists a broad tool set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File reads/writes and apply patch.&lt;/li&gt;
&lt;li&gt;Shell execution.&lt;/li&gt;
&lt;li&gt;Git operations.&lt;/li&gt;
&lt;li&gt;Web search and browse.&lt;/li&gt;
&lt;li&gt;Sub-agents.&lt;/li&gt;
&lt;li&gt;MCP servers.&lt;/li&gt;
&lt;li&gt;LSP diagnostics.&lt;/li&gt;
&lt;li&gt;Session save/resume.&lt;/li&gt;
&lt;li&gt;Workspace rollback.&lt;/li&gt;
&lt;li&gt;Durable task queue.&lt;/li&gt;
&lt;li&gt;HTTP/SSE runtime API.&lt;/li&gt;
&lt;li&gt;Skills system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LSP diagnostics are especially useful because errors from rust-analyzer, pyright, typescript-language-server, gopls, clangd, and similar tools can be fed back after edits.&lt;/p&gt;
&lt;p&gt;Workspace rollback uses side-git snapshots and provides &lt;code&gt;/restore&lt;/code&gt; and &lt;code&gt;revert_turn&lt;/code&gt;. It does not touch the repository’s own &lt;code&gt;.git&lt;/code&gt;, but normal git commits are still the safest baseline.&lt;/p&gt;
&lt;h2 id=&#34;common-commands&#34;&gt;Common Commands
&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-and-acp&#34;&gt;Zed and ACP
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI can run as an Agent Client Protocol 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;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;The README notes that the first ACP slice supports new sessions and prompt responses, while tool-backed editing and checkpoint replay are not exposed through ACP yet.&lt;/p&gt;
&lt;h2 id=&#34;configuration-and-providers&#34;&gt;Configuration and Providers
&lt;/h2&gt;&lt;p&gt;User config:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Workspace 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;Some sensitive fields, such as &lt;code&gt;api_key&lt;/code&gt;, &lt;code&gt;base_url&lt;/code&gt;, &lt;code&gt;provider&lt;/code&gt;, and &lt;code&gt;mcp_config_path&lt;/code&gt;, are denied in workspace overlays.&lt;/p&gt;
&lt;p&gt;DeepSeek-TUI supports the default &lt;code&gt;deepseek&lt;/code&gt; provider plus NVIDIA NIM, Fireworks, OpenAI-compatible endpoints, SGLang, vLLM, Ollama, and others.&lt;/p&gt;
&lt;p&gt;OpenAI-compatible example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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 example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;cost-and-context&#34;&gt;Cost and Context
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI is designed around DeepSeek V4. The README mentions &lt;code&gt;deepseek-v4-pro&lt;/code&gt; and &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, 1M-token context windows, token usage, cost estimates, and prefix-cache telemetry.&lt;/p&gt;
&lt;p&gt;For light tasks, &lt;code&gt;deepseek-v4-flash&lt;/code&gt; or auto mode may be enough. For complex refactors, long-context debugging, and architecture work, use higher thinking or Pro.&lt;/p&gt;
&lt;p&gt;Pricing and discounts change, so check DeepSeek’s official pricing page and the current TUI cost estimates before relying on numbers.&lt;/p&gt;
&lt;h2 id=&#34;suggested-workflow&#34;&gt;Suggested Workflow
&lt;/h2&gt;&lt;p&gt;Start safely:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Try it in a small test repository.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;deepseek doctor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use Plan mode for read-only exploration.&lt;/li&gt;
&lt;li&gt;Use Agent mode for small edits.&lt;/li&gt;
&lt;li&gt;Review changes with git diff and tests.&lt;/li&gt;
&lt;li&gt;Learn &lt;code&gt;/restore&lt;/code&gt; and session recovery.&lt;/li&gt;
&lt;li&gt;Use YOLO only in trusted temporary branches.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do not store API keys in project files. For company code, confirm provider, logging, web search, and compliance rules first.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI is a full terminal AI coding agent. It brings DeepSeek V4, TUI interaction, tool calls, LSP diagnostics, session recovery, rollback, MCP, and skills into one Rust-based workflow.&lt;/p&gt;
&lt;p&gt;It is not the lightest DeepSeek client, but its strength is moving from chat to executable local development.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 repository&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 website&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 package&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: An Open Source AI Agent with Desktop, CLI, and API</title>
        <link>https://knightli.com/en/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/en/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/</guid>
        <description>&lt;p&gt;goose is an open source AI agent that runs on your own machine. It is not limited to code completion; it aims to cover code, research, writing, automation, data analysis, and other tasks. The README positions it as a desktop app, CLI, and API that can serve both normal users and custom workflows.&lt;/p&gt;
&lt;p&gt;The project has moved from &lt;code&gt;block/goose&lt;/code&gt; to the Agentic AI Foundation (AAIF) at the Linux Foundation. The current repository is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 is mainly written in Rust and TypeScript and uses the Apache-2.0 license. Its GitHub description says it is an open source, extensible AI agent that goes beyond code suggestions and can install, execute, edit, and test with any LLM.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Many AI coding tools focus on suggestions or local code edits. goose takes a broader view: let an AI agent complete tasks directly on your machine.&lt;/p&gt;
&lt;p&gt;It can be used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code changes and tests.&lt;/li&gt;
&lt;li&gt;Local automation.&lt;/li&gt;
&lt;li&gt;Research and writing.&lt;/li&gt;
&lt;li&gt;Data analysis.&lt;/li&gt;
&lt;li&gt;Multi-step workflows.&lt;/li&gt;
&lt;li&gt;Embedding through an API.&lt;/li&gt;
&lt;li&gt;Tool extension through MCP.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only need IDE completion, a Copilot-style tool may be enough. goose is more useful when you want AI inside the local task execution chain.&lt;/p&gt;
&lt;h2 id=&#34;desktop-cli-and-api&#34;&gt;Desktop, CLI, and API
&lt;/h2&gt;&lt;p&gt;goose has three entry points.&lt;/p&gt;
&lt;p&gt;The desktop app supports macOS, Linux, and Windows. It is good for users who prefer a visual interface.&lt;/p&gt;
&lt;p&gt;The CLI fits terminal workflows and local development automation.&lt;/p&gt;
&lt;p&gt;The API lets other systems or internal tools embed goose as an agent runtime.&lt;/p&gt;
&lt;p&gt;Personal users can start with the desktop app or CLI. Teams and workflow builders should also look at the API and custom distribution support.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;The README recommends downloading the desktop app:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 install:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 provide builds for multiple platforms. The latest release checked here was &lt;code&gt;v1.33.1&lt;/code&gt;, published on 2026-04-29, with macOS, Linux, Windows, deb, rpm, and Flatpak assets.&lt;/p&gt;
&lt;p&gt;After installation, configure a provider from the official quickstart and test in a low-risk directory first. goose can execute local tasks, so avoid giving it broad permissions in a production repository from the start.&lt;/p&gt;
&lt;h2 id=&#34;providers&#34;&gt;Providers
&lt;/h2&gt;&lt;p&gt;goose supports 15+ providers, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic&lt;/li&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;Azure&lt;/li&gt;
&lt;li&gt;Bedrock&lt;/li&gt;
&lt;li&gt;other cloud or OpenAI-compatible providers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It can use API keys, and it can also use existing Claude, ChatGPT, or Gemini subscriptions through ACP.&lt;/p&gt;
&lt;p&gt;ACP is important because many users already pay for subscriptions, but different tools cannot easily reuse them. goose uses ACP providers to bring those subscriptions into an agent workflow.&lt;/p&gt;
&lt;p&gt;Provider policies change quickly. Check whether the access method is allowed, whether there are quotas, and whether it is suitable for company code or sensitive data.&lt;/p&gt;
&lt;h2 id=&#34;mcp-extensions&#34;&gt;MCP Extensions
&lt;/h2&gt;&lt;p&gt;goose supports Model Context Protocol extensions. The README mentions 70+ extensions.&lt;/p&gt;
&lt;p&gt;MCP matters because an agent should not only chat and edit files. Through standard protocol servers, it can connect to documentation, databases, browsers, internal systems, search services, design tools, or project management tools.&lt;/p&gt;
&lt;p&gt;For teams, MCP can become a safer integration layer: expose internal capabilities through explicit interfaces instead of letting the model touch every system directly.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-a-coding-assistant&#34;&gt;Difference from a Coding Assistant
&lt;/h2&gt;&lt;p&gt;goose is not just a code completion tool. It is closer to a local agent runtime.&lt;/p&gt;
&lt;p&gt;Common coding assistants focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Code completion.&lt;/li&gt;
&lt;li&gt;Code explanation.&lt;/li&gt;
&lt;li&gt;Function generation.&lt;/li&gt;
&lt;li&gt;Local editor edits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;goose emphasizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Local task execution.&lt;/li&gt;
&lt;li&gt;Multi-step workflows.&lt;/li&gt;
&lt;li&gt;Switchable providers.&lt;/li&gt;
&lt;li&gt;Extensions.&lt;/li&gt;
&lt;li&gt;Desktop and CLI.&lt;/li&gt;
&lt;li&gt;Embeddable API.&lt;/li&gt;
&lt;li&gt;Non-code tasks too.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This also means more complexity. You must think about model configuration, permissions, extensions, workspace scope, logs, and credentials.&lt;/p&gt;
&lt;h2 id=&#34;custom-distributions&#34;&gt;Custom Distributions
&lt;/h2&gt;&lt;p&gt;The repository includes &lt;code&gt;CUSTOM_DISTROS.md&lt;/code&gt;, which explains how to build a custom goose distribution with preconfigured providers, extensions, and branding.&lt;/p&gt;
&lt;p&gt;This is useful for teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preconfigure allowed model providers.&lt;/li&gt;
&lt;li&gt;Connect internal MCP servers.&lt;/li&gt;
&lt;li&gt;Set safety policies and logging.&lt;/li&gt;
&lt;li&gt;Block disallowed external services.&lt;/li&gt;
&lt;li&gt;Apply company branding and onboarding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Members do not need to configure everything from scratch, and the risk of wrong provider or key setup is reduced.&lt;/p&gt;
&lt;h2 id=&#34;suggested-use&#34;&gt;Suggested Use
&lt;/h2&gt;&lt;p&gt;Start gradually:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the desktop app or CLI.&lt;/li&gt;
&lt;li&gt;Configure one known-good provider.&lt;/li&gt;
&lt;li&gt;Run simple tasks in a test directory.&lt;/li&gt;
&lt;li&gt;Observe what it reads and executes.&lt;/li&gt;
&lt;li&gt;Add MCP extensions.&lt;/li&gt;
&lt;li&gt;Try larger repositories later.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keep a few habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Commit important changes before agent work.&lt;/li&gt;
&lt;li&gt;Do not store API keys in project files.&lt;/li&gt;
&lt;li&gt;Use high-permission modes only in trusted workspaces.&lt;/li&gt;
&lt;li&gt;Review company data and provider policy first.&lt;/li&gt;
&lt;li&gt;Keep human review for automation results.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who Should Use It
&lt;/h2&gt;&lt;p&gt;goose is a good fit if you want a desktop and CLI AI agent, multiple model providers, MCP integration, API embedding, or custom team distributions. It may be heavy if all you need is IDE code completion.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;goose is an open source AI agent under AAIF/Linux Foundation. It provides desktop, CLI, and API entry points, supports 15+ providers, ACP subscription access, and 70+ MCP extensions.&lt;/p&gt;
&lt;p&gt;Its value is not only writing code, but placing models, tools, extensions, and local execution into one agent framework. Start small, define permission and data boundaries, then expand usage.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 repository&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 documentation&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 installation guide&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>Which Local AI Models Can a Laptop RTX 4060 8GB Run?</title>
        <link>https://knightli.com/en/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/en/2026/05/08/laptop-rtx-4060-8gb-local-ai-models/</guid>
        <description>&lt;p&gt;A laptop RTX 4060 8GB can run local AI, but the boundary is clear: the key question is not whether a model starts, but whether it stays inside VRAM. Mobile RTX 4060 cards are also limited by laptop power, cooling, memory bandwidth, and vendor tuning, so sustained performance varies between machines.&lt;/p&gt;
&lt;p&gt;In 2026, 8GB VRAM is still the entry baseline for local AI. With the right quantized models and tools, it can run 3B-8B LLMs, SDXL, SD 1.5, some quantized FLUX workflows, Whisper transcription, and image feature extraction. If you force 14B+ LLMs, unquantized large models, or heavy image workflows, performance can collapse once data spills into system memory.&lt;/p&gt;
&lt;p&gt;Short version: do not chase the largest model. Use small models, quantized weights, and low-VRAM workflows.&lt;/p&gt;
&lt;h2 id=&#34;vram-budget&#34;&gt;VRAM Budget
&lt;/h2&gt;&lt;p&gt;Windows 11, browsers, drivers, and background apps already use part of the GPU memory. The usable AI budget is often closer to 6.5GB-7.2GB than the full 8GB.&lt;/p&gt;
&lt;p&gt;Practical rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLM: prefer 3B-8B with 4-bit quantization.&lt;/li&gt;
&lt;li&gt;Image generation: prefer SDXL, SD 1.5, and FLUX GGUF/NF4 low-VRAM workflows.&lt;/li&gt;
&lt;li&gt;Multimodal: prefer light 4B-class models.&lt;/li&gt;
&lt;li&gt;Speech: Whisper large-v3 can run, but long batches generate heat.&lt;/li&gt;
&lt;li&gt;Image indexing: CLIP, ViT, and similar feature models are a good fit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If VRAM spills to system memory, speed can become painful. A smaller model fully on GPU is usually better than a larger model half offloaded.&lt;/p&gt;
&lt;h2 id=&#34;llms-3b-8b-quantized-models&#34;&gt;LLMs: 3B-8B Quantized Models
&lt;/h2&gt;&lt;p&gt;For local chat and text reasoning, use Ollama, LM Studio, koboldcpp, llama.cpp, or another GGUF-friendly frontend. The sweet spot for 8GB VRAM is 3B-8B with 4-bit quantization.&lt;/p&gt;
&lt;h3 id=&#34;lightweight-general-use-gemma-4-e4b&#34;&gt;Lightweight General Use: Gemma 4 E4B
&lt;/h3&gt;&lt;p&gt;Gemma 4 E4B is one of Google’s small Gemma 4 models released in 2026. It is aimed at local and edge use, and is a reasonable daily model for Q&amp;amp;A, summaries, light multimodal tasks, and low-cost inference.&lt;/p&gt;
&lt;p&gt;On a laptop RTX 4060, start with an official or community quantized build. Do not start with the highest-precision weights. First confirm speed, VRAM, and answer quality.&lt;/p&gt;
&lt;p&gt;Good for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daily Q&amp;amp;A.&lt;/li&gt;
&lt;li&gt;Summaries and rewriting.&lt;/li&gt;
&lt;li&gt;Light document organization.&lt;/li&gt;
&lt;li&gt;Simple code explanation.&lt;/li&gt;
&lt;li&gt;Light image understanding.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;reasoning-and-long-text-deepseek-r1-distill-7b8b-qwen-3-8b&#34;&gt;Reasoning and Long Text: DeepSeek R1 Distill 7B/8B, Qwen 3 8B
&lt;/h3&gt;&lt;p&gt;For logic, math, complex analysis, and long Chinese text, try DeepSeek R1 distill 7B/8B or quantized Qwen 3 8B.&lt;/p&gt;
&lt;p&gt;With &lt;code&gt;Q4_K_M&lt;/code&gt;, 8B-class models usually fit within an 8GB laptop GPU budget. Actual speed depends on context length, backend, driver, and laptop power mode. Short chats are comfortable; long contexts increase both VRAM and latency.&lt;/p&gt;
&lt;p&gt;Avoid starting with 14B, 32B, or larger models. They may launch with CPU offload, but the experience is usually worse than a smaller full-GPU model.&lt;/p&gt;
&lt;h3 id=&#34;coding-qwen-25-coder-3b7b&#34;&gt;Coding: Qwen 2.5 Coder 3B/7B
&lt;/h3&gt;&lt;p&gt;For coding, Qwen 2.5 Coder 3B or 7B is a good choice. The 3B version is fast and fits real-time completion, explanations, and small snippets. The 7B version is stronger but heavier.&lt;/p&gt;
&lt;p&gt;Suggested use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Realtime completion: 3B.&lt;/li&gt;
&lt;li&gt;Q&amp;amp;A and explanation: 3B or 7B.&lt;/li&gt;
&lt;li&gt;Small refactors: quantized 7B.&lt;/li&gt;
&lt;li&gt;Large architecture analysis: do not expect an 8GB laptop to hold the full project context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;image-generation-sdxl-is-stable-flux-needs-quantization&#34;&gt;Image Generation: SDXL Is Stable, FLUX Needs Quantization
&lt;/h2&gt;&lt;p&gt;RTX 4060 8GB is usable for image generation, but model choice matters.&lt;/p&gt;
&lt;h3 id=&#34;sd-15-and-sdxl&#34;&gt;SD 1.5 and SDXL
&lt;/h3&gt;&lt;p&gt;SD 1.5 is very friendly to 8GB VRAM, fast, and mature. SDXL needs more memory but remains usable.&lt;/p&gt;
&lt;p&gt;Recommended tools:&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 is good for fast generation, LoRA, ControlNet, and old model ecosystems. SDXL is better for general quality. SDXL with Forge or ComfyUI is a stable starting point.&lt;/p&gt;
&lt;h3 id=&#34;flux1-schnell&#34;&gt;FLUX.1 schnell
&lt;/h3&gt;&lt;p&gt;FLUX has stronger prompt understanding and image quality, but the original models are heavy. On 8GB VRAM, use GGUF, NF4, FP8, or other low-VRAM paths with ComfyUI-GGUF or equivalent workflows.&lt;/p&gt;
&lt;p&gt;Practical tips:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use FLUX.1 schnell GGUF Q4/Q5.&lt;/li&gt;
&lt;li&gt;Reduce resolution or batch size.&lt;/li&gt;
&lt;li&gt;Use low-VRAM nodes or &lt;code&gt;--lowvram&lt;/code&gt; in ComfyUI.&lt;/li&gt;
&lt;li&gt;Avoid too many LoRA, ControlNet, and hi-res fix steps at once.&lt;/li&gt;
&lt;li&gt;Watch whether VRAM is released after workflow changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can try 1024px generation, but do not copy workflows meant for 16GB/24GB desktop GPUs.&lt;/p&gt;
&lt;h2 id=&#34;multimodal-and-utility-workloads&#34;&gt;Multimodal and Utility Workloads
&lt;/h2&gt;&lt;h3 id=&#34;whisper-large-v3&#34;&gt;Whisper large-v3
&lt;/h3&gt;&lt;p&gt;Whisper large-v3 works for speech-to-text. RTX 4060 can process ordinary audio quickly, useful for meeting recordings, lessons, video subtitles, and media organization.&lt;/p&gt;
&lt;p&gt;For long batches, enable performance mode and keep cooling under control.&lt;/p&gt;
&lt;h3 id=&#34;clip--vit-image-indexing&#34;&gt;CLIP / ViT Image Indexing
&lt;/h3&gt;&lt;p&gt;For a photo search system, RTX 4060 8GB is a strong fit. CLIP, ViT, and SigLIP feature models do not require extreme VRAM and can process thousands of images quickly.&lt;/p&gt;
&lt;p&gt;Typical pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Extract image embeddings with CLIP/ViT/SigLIP.&lt;/li&gt;
&lt;li&gt;Store them in SQLite or a vector database.&lt;/li&gt;
&lt;li&gt;Search by text or similar image.&lt;/li&gt;
&lt;li&gt;Use a small LLM for tags, descriptions, or album summaries.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This workload suits 8GB GPUs better than large LLMs because it is mostly feature extraction and batch processing.&lt;/p&gt;
&lt;h2 id=&#34;recommended-combos&#34;&gt;Recommended Combos
&lt;/h2&gt;&lt;p&gt;Local chat:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 quantized
&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;p&gt;Coding:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 / local 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;p&gt;Image generation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;p&gt;Photo search:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 or Phi-4 Mini for text organization
&lt;/span&gt;&lt;/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;pitfalls&#34;&gt;Pitfalls
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Scenario&lt;/th&gt;
          &lt;th&gt;Advice&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Large models&lt;/td&gt;
          &lt;td&gt;Avoid 14B+ unless you accept major slowdown&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quantization&lt;/td&gt;
          &lt;td&gt;Start with &lt;code&gt;Q4_K_M&lt;/code&gt;, then try Q5 if quality matters&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;VRAM&lt;/td&gt;
          &lt;td&gt;Monitor with Task Manager or &lt;code&gt;nvidia-smi&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cooling&lt;/td&gt;
          &lt;td&gt;Use laptop performance mode for generation and batches&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Resolution&lt;/td&gt;
          &lt;td&gt;Start image generation at 768px or one 1024px image&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Browser&lt;/td&gt;
          &lt;td&gt;Close GPU-heavy tabs while running models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Driver&lt;/td&gt;
          &lt;td&gt;Keep NVIDIA drivers reasonably current&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Workflows&lt;/td&gt;
          &lt;td&gt;Do not copy 16GB/24GB ComfyUI workflows directly&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If VRAM stays above 7.5GB, lower the model size, lower context, close apps, or enable low-VRAM mode.&lt;/p&gt;
&lt;h2 id=&#34;my-take&#34;&gt;My Take
&lt;/h2&gt;&lt;p&gt;A laptop RTX 4060 8GB is best seen as a cost-effective local AI entry platform.&lt;/p&gt;
&lt;p&gt;Good fit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3B-8B local LLMs.&lt;/li&gt;
&lt;li&gt;Small coding models.&lt;/li&gt;
&lt;li&gt;SDXL and SD 1.5.&lt;/li&gt;
&lt;li&gt;Quantized FLUX experiments.&lt;/li&gt;
&lt;li&gt;Whisper transcription.&lt;/li&gt;
&lt;li&gt;Image vector indexing.&lt;/li&gt;
&lt;li&gt;Photo management and local data organization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Poor fit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long-term 14B/32B LLM use.&lt;/li&gt;
&lt;li&gt;Unquantized large models.&lt;/li&gt;
&lt;li&gt;High-resolution batch FLUX workflows.&lt;/li&gt;
&lt;li&gt;Large-scale video generation.&lt;/li&gt;
&lt;li&gt;Many models resident at the same time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a photo retrieval system, use the GPU for CLIP/SigLIP feature extraction and small-model tagging, then store vectors in SQLite, FAISS, or LanceDB. Models like Gemma 4 E4B, Phi-4 Mini, or Qwen 2.5 Coder 3B/7B are more efficient than forcing a large model.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 paper&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 guide&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>24 Claude Code Tips: Plan Mode, Rewind, CLAUDE.md, Skills, Agents, and Plugins</title>
        <link>https://knightli.com/en/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/en/2026/05/08/claude-code-24-tips-plan-rewind-skills-agents/</guid>
        <description>&lt;p&gt;Claude Code is not just a chat box. It is closer to a coding Agent that can enter a project directory, read and write files, run commands, and maintain context.&lt;/p&gt;
&lt;p&gt;If you only throw a requirement at it and wait for code, problems appear quickly: unclear plans, repeated permission prompts, growing context, unsatisfactory output, no clear rollback path, and no persistent place for project rules.&lt;/p&gt;
&lt;p&gt;Here is a set of common operations for developers getting started with Claude Code.&lt;/p&gt;
&lt;h2 id=&#34;start-inside-the-project-directory&#34;&gt;Start Inside the Project Directory
&lt;/h2&gt;&lt;p&gt;Claude Code works best when launched inside the project directory, not from a random terminal location.&lt;/p&gt;
&lt;p&gt;Create a folder as the project directory, enter it, open a command line, and start 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;When first entering a project, if Claude Code asks whether to trust the current folder, confirm before continuing. This lets it read files, create files, and run later operations around the current project.&lt;/p&gt;
&lt;p&gt;A simple practice task is to ask it to create a photographer portfolio website. The task is visual enough to inspect, and it also lets you practice file generation, command execution, rewind, and later refactoring.&lt;/p&gt;
&lt;h2 id=&#34;use-plan-mode-first&#34;&gt;Use Plan Mode First
&lt;/h2&gt;&lt;p&gt;For more complex tasks, Claude Code may enter plan mode. Plan mode is meant to discuss requirements and break down steps before you approve execution.&lt;/p&gt;
&lt;p&gt;After it writes a plan, you usually see options like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Approve the plan and automatically allow future edit tools.&lt;/li&gt;
&lt;li&gt;Approve the plan, but require manual approval for later edits.&lt;/li&gt;
&lt;li&gt;Pause and continue discussing the plan with Claude Code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the task is clear, approve and continue. If it is not clear yet, ask it to refine the plan, such as page style, tech stack, directory structure, interactions, and acceptance criteria.&lt;/p&gt;
&lt;p&gt;Plan mode reduces rework. If an Agent starts directly, it may quickly generate many files; if the direction is wrong, later changes can get messy.&lt;/p&gt;
&lt;h2 id=&#34;switch-modes-with-shift--tab&#34;&gt;Switch Modes With Shift + Tab
&lt;/h2&gt;&lt;p&gt;In Claude Code, &lt;code&gt;Shift + Tab&lt;/code&gt; can switch between working modes. A common use is entering plan mode or switching into an auto-approve-edit mode.&lt;/p&gt;
&lt;p&gt;Suggested habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New projects, new features, major changes: start in plan mode.&lt;/li&gt;
&lt;li&gt;Small edits and clear fixes: execute directly.&lt;/li&gt;
&lt;li&gt;Deletion, bulk replacement, dependency installation: keep manual approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In plan mode, Claude Code may ask project-detail questions. Use arrow keys to choose and Enter to confirm. After submitting feedback, it updates the plan.&lt;/p&gt;
&lt;h2 id=&#34;do-not-open-all-permissions-blindly&#34;&gt;Do Not Open All Permissions Blindly
&lt;/h2&gt;&lt;p&gt;When Claude Code runs commands, edits files, or starts programs, it may request permission.&lt;/p&gt;
&lt;p&gt;Common choices include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Allow only this time.&lt;/li&gt;
&lt;li&gt;Allow this command type for the current session.&lt;/li&gt;
&lt;li&gt;Reject or pause.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For local preview, dev server startup, or file inspection, approve as needed. But do not permanently use a mode that auto-approves all permissions just to save clicks.&lt;/p&gt;
&lt;p&gt;Full automation is only suitable when the task is low-risk, clearly understood, and the project already has Git backups. For daily use, keep human approval for deletion, overwriting folders, dependency installation, networking, commits, and scripts.&lt;/p&gt;
&lt;h2 id=&#34;run-local-commands-in-terminal-mode&#34;&gt;Run Local Commands in Terminal Mode
&lt;/h2&gt;&lt;p&gt;Claude Code can enter a terminal-command mode to run local commands.&lt;/p&gt;
&lt;p&gt;For example, after generating a page, you can open an HTML file with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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; is a Windows command for opening a file, followed by the filename. This is faster than finding the file manually.&lt;/p&gt;
&lt;p&gt;Terminal mode is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opening generated pages.&lt;/li&gt;
&lt;li&gt;Listing directory contents.&lt;/li&gt;
&lt;li&gt;Starting local development servers.&lt;/li&gt;
&lt;li&gt;Running tests or builds.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Still, be careful with high-risk commands such as recursive deletion, moving directories, bulk overwrites, and system environment changes.&lt;/p&gt;
&lt;h2 id=&#34;rewind-when-the-result-goes-wrong&#34;&gt;Rewind When the Result Goes Wrong
&lt;/h2&gt;&lt;p&gt;If the page or code produced by Claude Code is not what you want, and each correction makes it worse, rewind early.&lt;/p&gt;
&lt;p&gt;Rewind can return code or conversation to a previous point. Common options include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rewind both code and conversation.&lt;/li&gt;
&lt;li&gt;Rewind only conversation.&lt;/li&gt;
&lt;li&gt;Rewind only code.&lt;/li&gt;
&lt;li&gt;Compress earlier content into a summary.&lt;/li&gt;
&lt;li&gt;Cancel.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the direction is clearly wrong, it is usually better to rewind both code and conversation. That returns context and files to a cleaner state together.&lt;/p&gt;
&lt;p&gt;Note that Claude Code rewind usually only covers files it created or changed through built-in tools. Files created through external commands may not be fully rewindable. Important projects should still use Git.&lt;/p&gt;
&lt;h2 id=&#34;write-long-prompts-in-an-editor&#34;&gt;Write Long Prompts in an Editor
&lt;/h2&gt;&lt;p&gt;Do not squeeze complex requirements into one input line.&lt;/p&gt;
&lt;p&gt;If the system supports editing a long prompt in a text editor, open the editor, write the requirement clearly, save it, and then send it to Claude Code.&lt;/p&gt;
&lt;p&gt;Long prompts should include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The goal.&lt;/li&gt;
&lt;li&gt;The tech stack.&lt;/li&gt;
&lt;li&gt;What not to do.&lt;/li&gt;
&lt;li&gt;Which files must be kept.&lt;/li&gt;
&lt;li&gt;How to verify completion.&lt;/li&gt;
&lt;li&gt;Page or feature acceptance criteria.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if you want Claude Code to refactor a plain HTML page into a more modern stack, do not just say &amp;ldquo;refactor it.&amp;rdquo; Explain component structure, visual preservation, responsive layout, and ask it to run a build check.&lt;/p&gt;
&lt;h2 id=&#34;restore-sessions-after-exit&#34;&gt;Restore Sessions After Exit
&lt;/h2&gt;&lt;p&gt;If you need to quit Claude Code midway, exit normally. Later, return to the same project directory and start again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If previous records do not appear directly, use history-related commands to view and load recent sessions.&lt;/p&gt;
&lt;p&gt;This is useful for continuing interrupted work. But do not treat session history as the only memory. Project rules, tech stack, common commands, and notes should live in project files.&lt;/p&gt;
&lt;h2 id=&#34;use-claudemd-for-project-rules&#34;&gt;Use CLAUDE.md for Project Rules
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is an important memory file for Claude Code. It usually sits at the project root and tells Claude Code project rules, tech stack, directory structure, and collaboration constraints.&lt;/p&gt;
&lt;p&gt;You can ask Claude Code to initialize it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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; is good for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project goals.&lt;/li&gt;
&lt;li&gt;Tech stack.&lt;/li&gt;
&lt;li&gt;Common start, test, and build commands.&lt;/li&gt;
&lt;li&gt;Directory notes.&lt;/li&gt;
&lt;li&gt;Code style.&lt;/li&gt;
&lt;li&gt;Forbidden actions.&lt;/li&gt;
&lt;li&gt;Commit and deployment rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;During each conversation, Claude Code can use these rules as part of the context. Think of it as a project manual.&lt;/p&gt;
&lt;p&gt;A simple test is to add a clear rule into &lt;code&gt;CLAUDE.md&lt;/code&gt;, then ask Claude Code something. If its answer follows the rule, it has read the project memory.&lt;/p&gt;
&lt;h2 id=&#34;reference-files-with-&#34;&gt;Reference Files With @
&lt;/h2&gt;&lt;p&gt;Typing &lt;code&gt;@&lt;/code&gt; in the input box lets you select files or Agents and add them to the current context.&lt;/p&gt;
&lt;p&gt;This is useful when you want Claude Code to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read a config file.&lt;/li&gt;
&lt;li&gt;Modify a specific page.&lt;/li&gt;
&lt;li&gt;Continue based on &lt;code&gt;CLAUDE.md&lt;/code&gt; or another document.&lt;/li&gt;
&lt;li&gt;Only inspect a specific file instead of guessing the whole project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compared with copying file contents into the input box, &lt;code&gt;@&lt;/code&gt; references are clearer and less error-prone.&lt;/p&gt;
&lt;h2 id=&#34;view-and-compress-context&#34;&gt;View and Compress Context
&lt;/h2&gt;&lt;p&gt;After a long conversation, context grows. When it gets too long, the model may slow down or start ignoring earlier details.&lt;/p&gt;
&lt;p&gt;Use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If context is long, compress history:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the result is still poor, consider clearing the current context:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After clearing, Claude Code can still understand part of the project through files, &lt;code&gt;CLAUDE.md&lt;/code&gt;, and the current directory, but it will not keep the full conversation history.&lt;/p&gt;
&lt;p&gt;A practical habit: start a new chat after a task is done, write project rules into &lt;code&gt;CLAUDE.md&lt;/code&gt;, and do not let temporary discussion grow forever in one chat.&lt;/p&gt;
&lt;h2 id=&#34;skills-turn-repeated-work-into-instructions&#34;&gt;Skills: Turn Repeated Work Into Instructions
&lt;/h2&gt;&lt;p&gt;Skills are reusable task instructions for Claude Code. They are not one-off prompts, but packaged workflows.&lt;/p&gt;
&lt;p&gt;For example, if you often generate weekly reports, create a weekly-report Skill that defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Required input.&lt;/li&gt;
&lt;li&gt;Output format.&lt;/li&gt;
&lt;li&gt;Tone and structure.&lt;/li&gt;
&lt;li&gt;What must be preserved.&lt;/li&gt;
&lt;li&gt;What must not be invented.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills usually contain &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, and detailed instructions. Once installed in the global Skills directory, Claude Code can recognize and load them for related tasks.&lt;/p&gt;
&lt;p&gt;Good Skill candidates include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weekly reports.&lt;/li&gt;
&lt;li&gt;Code review templates.&lt;/li&gt;
&lt;li&gt;Document cleanup.&lt;/li&gt;
&lt;li&gt;Image batch processing.&lt;/li&gt;
&lt;li&gt;Fixed-format articles.&lt;/li&gt;
&lt;li&gt;Project initialization flows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you repeatedly copy the same prompt, consider turning it into a Skill.&lt;/p&gt;
&lt;h2 id=&#34;agents-delegate-subtasks-to-independent-helpers&#34;&gt;Agents: Delegate Subtasks to Independent Helpers
&lt;/h2&gt;&lt;p&gt;Agents are different from Skills.&lt;/p&gt;
&lt;p&gt;A Skill is more like an instruction manual. An Agent is more like an independent helper that can work outside the main conversation and return results.&lt;/p&gt;
&lt;p&gt;The value of Agents is context isolation. For code inspection, you can create a read-only Agent that only reads the project and outputs a report, without modifying files. This avoids polluting the main conversation and lowers risk.&lt;/p&gt;
&lt;p&gt;When creating an Agent, consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project-level or user-level Agent.&lt;/li&gt;
&lt;li&gt;Whether Claude Code should generate the config.&lt;/li&gt;
&lt;li&gt;Which tools are allowed.&lt;/li&gt;
&lt;li&gt;Which model to use.&lt;/li&gt;
&lt;li&gt;Whether memory should be saved.&lt;/li&gt;
&lt;li&gt;Whether the Agent prompt is clear enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For code-audit Agents, give read-only permissions first. Let it output a report, then decide in the main conversation whether to change code.&lt;/p&gt;
&lt;h2 id=&#34;plugins-package-skills-agents-mcp-and-hooks&#34;&gt;Plugins: Package Skills, Agents, MCP, and Hooks
&lt;/h2&gt;&lt;p&gt;Plugins are more complete capability packages. They may include:&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;Compared with installing one Skill, a plugin is better for a full capability set. For example, a frontend design plugin may package visual rules, layout habits, component preferences, and related Agents together.&lt;/p&gt;
&lt;p&gt;When installing a plugin, you may choose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install to the user directory, effective for all projects.&lt;/li&gt;
&lt;li&gt;Install to the project directory, shareable with the project.&lt;/li&gt;
&lt;li&gt;Install to a local project directory, effective only on your computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the user directory for personal common capabilities, the project directory for team conventions, and local project install for temporary testing.&lt;/p&gt;
&lt;h2 id=&#34;plugins-can-improve-specific-tasks&#34;&gt;Plugins Can Improve Specific Tasks
&lt;/h2&gt;&lt;p&gt;For frontend page generation, plugins can be more stable than raw prompts.&lt;/p&gt;
&lt;p&gt;For example, for &amp;ldquo;make a photographer portfolio website,&amp;rdquo; a plain prompt may generate an acceptable page. If you explicitly use a frontend design plugin, the structure, visual hierarchy, spacing, colors, and overall finish are often better.&lt;/p&gt;
&lt;p&gt;This does not mean plugins replace human taste. A better workflow is to let the plugin generate a stronger first draft, then refine details manually.&lt;/p&gt;
&lt;h2 id=&#34;a-more-stable-claude-code-workflow&#34;&gt;A More Stable Claude Code Workflow
&lt;/h2&gt;&lt;p&gt;Putting these tips together gives a steadier workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start &lt;code&gt;claude&lt;/code&gt; inside the project directory.&lt;/li&gt;
&lt;li&gt;Discuss requirements in plan mode first.&lt;/li&gt;
&lt;li&gt;Confirm tech stack and acceptance criteria before approving the plan.&lt;/li&gt;
&lt;li&gt;Keep manual approval for high-risk actions.&lt;/li&gt;
&lt;li&gt;Use terminal mode for local preview and tests.&lt;/li&gt;
&lt;li&gt;Rewind early when the result goes off track.&lt;/li&gt;
&lt;li&gt;Write project rules into &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check and compress context during long chats.&lt;/li&gt;
&lt;li&gt;Turn repeated workflows into Skills.&lt;/li&gt;
&lt;li&gt;Delegate inspection, research, and analysis to read-only Agents.&lt;/li&gt;
&lt;li&gt;Use plugins for domain-specific tasks.&lt;/li&gt;
&lt;li&gt;Always keep Git checkpoints for important projects.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is much more stable than simply sending one requirement and waiting for generation.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Claude Code efficiency does not come only from model capability. It also comes from workflow control.&lt;/p&gt;
&lt;p&gt;Plan mode sets direction, permission approval controls risk, rewind reduces rework, &lt;code&gt;CLAUDE.md&lt;/code&gt; stores project rules, &lt;code&gt;/context&lt;/code&gt;, &lt;code&gt;/compact&lt;/code&gt;, and &lt;code&gt;/clear&lt;/code&gt; manage context, Skills reuse fixed workflows, Agents isolate complex subtasks, and plugins package complete capabilities.&lt;/p&gt;
&lt;p&gt;The best way to use Claude Code is to let it move tasks forward inside clear boundaries, not to hand the entire project to it at once.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Opus 4.7, Sonnet 4.6, and Haiku 4.5: Differences and Model Selection Guide</title>
        <link>https://knightli.com/en/2026/05/08/anthropic-claude-model-lineup/</link>
        <pubDate>Fri, 08 May 2026 08:19:03 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/08/anthropic-claude-model-lineup/</guid>
        <description>&lt;p&gt;Anthropic&amp;rsquo;s core large language models mainly evolve through the &lt;code&gt;Claude&lt;/code&gt; series. As of May 2026, Claude&amp;rsquo;s mainstream product line has entered the 4.x stage, while still following a three-tier structure: &lt;code&gt;Opus&lt;/code&gt; is for maximum capability, &lt;code&gt;Sonnet&lt;/code&gt; balances performance and cost, and &lt;code&gt;Haiku&lt;/code&gt; focuses on speed and cost effectiveness.&lt;/p&gt;
&lt;p&gt;If you only want a quick rule of thumb, remember this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the most complex and demanding reasoning and agentic coding: start with &lt;code&gt;Claude Opus 4.7&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For most development, writing, analysis, and enterprise API scenarios: &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; is the safest starting point.&lt;/li&gt;
&lt;li&gt;For high-concurrency, low-latency, cost-sensitive tasks: consider &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;current-mainstream-models&#34;&gt;Current Mainstream Models
&lt;/h2&gt;&lt;p&gt;According to Anthropic&amp;rsquo;s official model documentation, the current Claude mainstream models can be understood this way.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Positioning&lt;/th&gt;
          &lt;th&gt;Suitable Scenarios&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;The strongest generally available model, built for complex reasoning and agentic coding&lt;/td&gt;
          &lt;td&gt;Large codebase refactoring, multi-step tasks, complex strategy analysis, work that requires stronger consistency&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;The balance point between speed, capability, and cost, with a 1 million token context window&lt;/td&gt;
          &lt;td&gt;Code generation, long-document analysis, enterprise knowledge work, Agent development, everyday high-quality production tasks&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;The fastest and lower-cost small-model tier, while still retaining capabilities close to frontier models&lt;/td&gt;
          &lt;td&gt;Real-time chat, customer support, batch classification, simple code collaboration, high-concurrency API calls&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There are two naming details worth noting.&lt;/p&gt;
&lt;p&gt;First, the official name is &lt;code&gt;Claude Haiku 4.5&lt;/code&gt;, not &lt;code&gt;Claude 4.5 Haiku&lt;/code&gt;. Second, &lt;code&gt;Claude Mythos Preview&lt;/code&gt; is not a mainstream available model for regular users or developers. It is a controlled research preview related to Project Glasswing, mainly aimed at defensive cybersecurity workflows, and should not be mixed into regular Claude model selection.&lt;/p&gt;
&lt;h2 id=&#34;opus-for-the-hardest-problems&#34;&gt;Opus: For the Hardest Problems
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Opus&lt;/code&gt; is the tier Anthropic uses for its strongest models. The point of &lt;code&gt;Claude Opus 4.7&lt;/code&gt; is not being cheap or the fastest option, but being better suited to complex, multi-step tasks that require repeated verification.&lt;/p&gt;
&lt;p&gt;It is better suited to these situations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large code changes across many files.&lt;/li&gt;
&lt;li&gt;Complex system refactoring and architectural reasoning.&lt;/li&gt;
&lt;li&gt;Long-chain Agent tasks.&lt;/li&gt;
&lt;li&gt;Work requiring stronger visual understanding, document understanding, and multi-turn planning.&lt;/li&gt;
&lt;li&gt;Enterprise analysis tasks where mistakes are costly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the cost of a single failed task is high, or you want the model to spend more time understanding context before acting, &lt;code&gt;Opus&lt;/code&gt; is usually more worth trying.&lt;/p&gt;
&lt;h2 id=&#34;sonnet-the-default-starting-point-for-most-people&#34;&gt;Sonnet: The Default Starting Point for Most People
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; is better suited as the default entry point. Its positioning is not &amp;ldquo;a lower-end Opus,&amp;rdquo; but rather a way to put sufficiently strong reasoning, coding, visual understanding, long context, and agent planning into a more controllable cost and speed profile.&lt;/p&gt;
&lt;p&gt;For developers, the value of &lt;code&gt;Sonnet 4.6&lt;/code&gt; mainly comes from three points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It can handle very long context, making it suitable for codebases, contracts, reports, or multiple documents.&lt;/li&gt;
&lt;li&gt;It is easier to use as a regular model in Claude Code, API, and enterprise scenarios.&lt;/li&gt;
&lt;li&gt;It costs less than Opus, making it more suitable for high-frequency use.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you do not know which Claude model to start with, &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt; is usually the right beginning. Switch to &lt;code&gt;Opus&lt;/code&gt; only when the task clearly needs stronger capability.&lt;/p&gt;
&lt;h2 id=&#34;haiku-when-fast-and-affordable-matter-more&#34;&gt;Haiku: When Fast and Affordable Matter More
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude Haiku 4.5&lt;/code&gt; is the small-model tier, but it should not simply be understood as a &amp;ldquo;weak model.&amp;rdquo; Anthropic positions it as fast and low cost while retaining capabilities close to frontier models.&lt;/p&gt;
&lt;p&gt;It fits these scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Real-time chat and customer support bots.&lt;/li&gt;
&lt;li&gt;Large-scale short-text classification.&lt;/li&gt;
&lt;li&gt;Low-latency API calls.&lt;/li&gt;
&lt;li&gt;Simple code edits and rapid prototypes.&lt;/li&gt;
&lt;li&gt;Subtask execution in multi-Agent workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the task itself is clear, the context is not complex, and throughput matters, &lt;code&gt;Haiku&lt;/code&gt; is often more reasonable than blindly using a larger model.&lt;/p&gt;
&lt;h2 id=&#34;claudes-tool-capabilities&#34;&gt;Claude&amp;rsquo;s Tool Capabilities
&lt;/h2&gt;&lt;p&gt;The Claude series is not just a set of chat models. Anthropic now places model capabilities inside multiple products and developer tools.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Code&lt;/code&gt; is a command-line coding tool for developers. It can read codebases, edit files, run commands, and execute tests, making it suitable for sustained engineering work. Its experience depends heavily on the model&amp;rsquo;s code understanding, context management, and tool-calling stability.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Computer Use&lt;/code&gt; lets the model operate a desktop environment through screenshots, mouse actions, and keyboard input. It still needs to be used carefully, and the official documentation emphasizes running it in an isolated environment to avoid mistakes or security risks.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Artifacts&lt;/code&gt; is more of a Claude app-side experience. It can place code, page prototypes, charts, or document outputs into the interface for preview and iteration. It is not a standalone model, but part of the Claude product experience.&lt;/p&gt;
&lt;p&gt;As for terms like &amp;ldquo;Managed Agents&amp;rdquo; or &amp;ldquo;self-evolving Agents,&amp;rdquo; be careful when writing about them. Anthropic is indeed strengthening Agent SDK, Claude Code, long context, tool use, and enterprise workflows, but it should not be described as already having uncontrolled self-evolution capability.&lt;/p&gt;
&lt;h2 id=&#34;access-options&#34;&gt;Access Options
&lt;/h2&gt;&lt;p&gt;Regular users can use Claude through the &lt;code&gt;Claude.ai&lt;/code&gt; web app or mobile apps. Different plans affect available models, usage limits, and features.&lt;/p&gt;
&lt;p&gt;Developers usually have several access options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anthropic Console and 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;Specific available models, context windows, pricing, and regional support can change. Before development, it is best to rely on Anthropic&amp;rsquo;s official model documentation and the relevant cloud platform pages.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;In actual use, you do not need to chase the strongest model from the beginning. A better approach is to tier model choice by task cost.&lt;/p&gt;
&lt;p&gt;For everyday writing, code generation, long-document analysis, knowledge organization, and most Agent prototypes, start with &lt;code&gt;Claude Sonnet 4.6&lt;/code&gt;. It is usually the best starting point for cost effectiveness and general capability.&lt;/p&gt;
&lt;p&gt;If the task requires stronger complex reasoning, cross-file engineering changes, long-chain planning, or higher reliability, switch to &lt;code&gt;Claude Opus 4.7&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If the task is simple, high-volume, and latency-sensitive, such as classification, summarization, customer support, or batch processing, put &lt;code&gt;Claude Haiku 4.5&lt;/code&gt; on the shortlist.&lt;/p&gt;
&lt;p&gt;Claude&amp;rsquo;s model line is not simply &amp;ldquo;new versions replacing old versions.&amp;rdquo; It is a toolbox layered by task difficulty, speed, and cost. Choosing the right model matters more than blindly using the most expensive one.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>What Is the Difference Between GPT-5.5, GPT-5.5 Instant, GPT-5.5 Thinking, and GPT-5.5 Pro?</title>
        <link>https://knightli.com/en/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/en/2026/05/07/gpt-5-5-instant-thinking-pro-differences/</guid>
        <description>&lt;p&gt;OpenAI now separates GPT-5.5 into clearer usage tiers: &lt;code&gt;Instant&lt;/code&gt;, &lt;code&gt;Thinking&lt;/code&gt;, and &lt;code&gt;Pro&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Many people mix up &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;, and &lt;code&gt;GPT-5.5 Pro&lt;/code&gt;. The short version: &lt;code&gt;GPT-5.5&lt;/code&gt; is the overall name for this generation of model capabilities. &lt;code&gt;Instant&lt;/code&gt; is the fast everyday model, &lt;code&gt;Thinking&lt;/code&gt; is the deeper reasoning mode, and &lt;code&gt;Pro&lt;/code&gt; is a heavier research-grade mode.&lt;/p&gt;
&lt;h2 id=&#34;quick-comparison&#34;&gt;Quick Comparison
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Name&lt;/th&gt;
          &lt;th&gt;What It Is&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
          &lt;th&gt;Speed/Cost&lt;/th&gt;
          &lt;th&gt;Availability&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;Main GPT-5.5 model/family name; in ChatGPT it usually maps to the capability positioning of GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;Complex work, code, research, analysis, tool use&lt;/td&gt;
          &lt;td&gt;Heavier than Instant, but more capable&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;Fast default model, replacing GPT-5.3 Instant&lt;/td&gt;
          &lt;td&gt;Daily Q&amp;amp;A, writing, summarization, light coding, quick lookup&lt;/td&gt;
          &lt;td&gt;Fastest and most quota-efficient&lt;/td&gt;
          &lt;td&gt;Gradual rollout to all ChatGPT users&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Thinking&lt;/td&gt;
          &lt;td&gt;Deep reasoning mode&lt;/td&gt;
          &lt;td&gt;Hard problems, long-context analysis, complex code, research, document-heavy tasks&lt;/td&gt;
          &lt;td&gt;Slower, but more reliable reasoning&lt;/td&gt;
          &lt;td&gt;Paid users can select it manually&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GPT-5.5 Pro&lt;/td&gt;
          &lt;td&gt;Heavier research-grade mode&lt;/td&gt;
          &lt;td&gt;High-risk or high-precision tasks: law, business, education, data science, scientific analysis&lt;/td&gt;
          &lt;td&gt;Slowest and heaviest, optimized for quality&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;If you only want one rule:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast everyday tasks&lt;/strong&gt;: use &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complex reasoning and code analysis&lt;/strong&gt;: use &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Especially hard, important, or accuracy-sensitive work&lt;/strong&gt;: use &lt;code&gt;GPT-5.5 Pro&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-is-gpt-55&#34;&gt;What Is GPT-5.5
&lt;/h2&gt;&lt;p&gt;When people say &lt;code&gt;GPT-5.5&lt;/code&gt; by itself, they usually mean the overall capability of the GPT-5.5 generation, not a single fixed button.&lt;/p&gt;
&lt;p&gt;OpenAI positions GPT-5.5 as a stronger model for real work. Its improvements focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;agentic coding;&lt;/li&gt;
&lt;li&gt;complex code debugging;&lt;/li&gt;
&lt;li&gt;research and synthesis;&lt;/li&gt;
&lt;li&gt;generating documents, spreadsheets, and presentations;&lt;/li&gt;
&lt;li&gt;computer use and cross-tool work;&lt;/li&gt;
&lt;li&gt;sustained reasoning and self-checking in long tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In ChatGPT, users do not usually see a vague &lt;code&gt;GPT-5.5&lt;/code&gt; button. They see more specific options: &lt;code&gt;Instant&lt;/code&gt;, &lt;code&gt;Thinking&lt;/code&gt;, and &lt;code&gt;Pro&lt;/code&gt;. So if someone says &amp;ldquo;I am using GPT-5.5,&amp;rdquo; it is worth asking: Instant, Thinking, or Pro?&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant-default-fast-everyday-use&#34;&gt;GPT-5.5 Instant: Default, Fast, Everyday Use
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; is the new fast default model. OpenAI&amp;rsquo;s official announcement says it begins replacing &lt;code&gt;GPT-5.3 Instant&lt;/code&gt; as the default ChatGPT model and is available in the API as &lt;code&gt;chat-latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;everyday chat;&lt;/li&gt;
&lt;li&gt;quick Q&amp;amp;A;&lt;/li&gt;
&lt;li&gt;ordinary writing;&lt;/li&gt;
&lt;li&gt;article summarization;&lt;/li&gt;
&lt;li&gt;email rewriting;&lt;/li&gt;
&lt;li&gt;light code explanation;&lt;/li&gt;
&lt;li&gt;simple tables and lists;&lt;/li&gt;
&lt;li&gt;tasks that do not need long reasoning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instant&amp;rsquo;s main advantages are speed and default availability. You do not need to manually select a reasoning mode every time, and ordinary questions do not pay a higher latency cost.&lt;/p&gt;
&lt;p&gt;It also changes the default tone: OpenAI emphasizes that GPT-5.5 Instant answers more clearly and concisely, with stronger personalization. For ordinary users, that makes it better as the model you leave open all day.&lt;/p&gt;
&lt;p&gt;The caveat is that Instant is not the strongest mode. For complex math, long code, architecture design, multi-file analysis, or serious research, it may switch to Thinking automatically, or you may need to select Thinking manually.&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-thinking-the-main-mode-for-complex-tasks&#34;&gt;GPT-5.5 Thinking: The Main Mode for Complex Tasks
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; is the reasoning mode better suited to complex tasks.&lt;/p&gt;
&lt;p&gt;It fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;code debugging;&lt;/li&gt;
&lt;li&gt;architecture design;&lt;/li&gt;
&lt;li&gt;multi-step reasoning;&lt;/li&gt;
&lt;li&gt;long-document analysis;&lt;/li&gt;
&lt;li&gt;academic material organization;&lt;/li&gt;
&lt;li&gt;business scenario planning;&lt;/li&gt;
&lt;li&gt;data-analysis explanation;&lt;/li&gt;
&lt;li&gt;tasks that require comparison, tradeoffs, and verification.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thinking spends more time reasoning. The OpenAI Help Center says that when GPT-5.5 Thinking or GPT-5.5 Pro starts reasoning, it may first show a short preamble explaining what it plans to do. Users can also add instructions while the model is still thinking to adjust direction early.&lt;/p&gt;
&lt;p&gt;In ChatGPT, when manually choosing Thinking, users can also adjust thinking time. According to the official explanation, Plus and Business users can use &lt;code&gt;Standard&lt;/code&gt; and &lt;code&gt;Extended&lt;/code&gt;; Pro users also have options such as &lt;code&gt;Light&lt;/code&gt; and &lt;code&gt;Heavy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;My interpretation: Thinking is the default choice for serious work. Whenever a task involves multiple steps, long context, or higher accuracy requirements, it is more suitable than Instant.&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-pro-research-grade-heavier-more-rigorous&#34;&gt;GPT-5.5 Pro: Research-Grade, Heavier, More Rigorous
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; is the mode for harder problems and higher-precision work.&lt;/p&gt;
&lt;p&gt;It fits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;legal material analysis;&lt;/li&gt;
&lt;li&gt;business research;&lt;/li&gt;
&lt;li&gt;education and curriculum design;&lt;/li&gt;
&lt;li&gt;data science;&lt;/li&gt;
&lt;li&gt;scientific literature synthesis;&lt;/li&gt;
&lt;li&gt;deep review before high-risk decisions;&lt;/li&gt;
&lt;li&gt;multi-document, multi-constraint, multi-round verification tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the GPT-5.5 announcement, OpenAI says early testers found GPT-5.5 Pro to improve over GPT-5.4 Pro in completeness, structure, accuracy, relevance, and usefulness, especially in business, law, education, and data science.&lt;/p&gt;
&lt;p&gt;The downside is also clear: Pro is slower and heavier, and it is not meant for every small question. It is more like an expert reviewer or research partner than a daily chat entry point.&lt;/p&gt;
&lt;p&gt;Pro also has special tool-support limitations. The OpenAI Help Center says Apps, Memory, Canvas, and image generation are not available in Pro. If your task needs those ChatGPT features, Instant or Thinking may be the better choice.&lt;/p&gt;
&lt;h2 id=&#34;tool-support-differences&#34;&gt;Tool Support Differences
&lt;/h2&gt;&lt;p&gt;According to the OpenAI Help Center, &lt;code&gt;GPT-5.5 Instant&lt;/code&gt; and &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; support common ChatGPT tools, including:&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; is more focused on research-grade reasoning, but not all ChatGPT tools are available. Pay particular attention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apps are unavailable;&lt;/li&gt;
&lt;li&gt;Memory is unavailable;&lt;/li&gt;
&lt;li&gt;Canvas is unavailable;&lt;/li&gt;
&lt;li&gt;image generation is unavailable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So when choosing a model, do not only ask &amp;ldquo;which one is smarter.&amp;rdquo; Also ask which tools you need.&lt;/p&gt;
&lt;h2 id=&#34;context-window-differences&#34;&gt;Context Window Differences
&lt;/h2&gt;&lt;p&gt;The OpenAI Help Center describes ChatGPT context windows roughly as:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Mode&lt;/th&gt;
          &lt;th&gt;Context Window&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;Usually 256K when manually selected on paid plans; up to 400K on Pro&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instant is enough for ordinary chat and short documents;&lt;/li&gt;
&lt;li&gt;Thinking is better for multi-file work, multi-round research, and long-codebase analysis;&lt;/li&gt;
&lt;li&gt;for especially long, complex, high-precision tasks, Pro users can use a larger context and heavier reasoning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;h3 id=&#34;everyday-qa&#34;&gt;Everyday Q&amp;amp;A
&lt;/h3&gt;&lt;p&gt;Use &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is fast, smart enough, and good for quick questions, quick writing, and quick edits.&lt;/p&gt;
&lt;h3 id=&#34;writing-summarizing-email-editing&#34;&gt;Writing, Summarizing, Email Editing
&lt;/h3&gt;&lt;p&gt;Start with &lt;code&gt;GPT-5.5 Instant&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If the article is long, needs structural rewriting, or requires multiple rounds of proofreading, switch to &lt;code&gt;GPT-5.5 Thinking&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;coding-and-debugging&#34;&gt;Coding and Debugging
&lt;/h3&gt;&lt;p&gt;Use &lt;code&gt;Instant&lt;/code&gt; for simple code explanation.&lt;/p&gt;
&lt;p&gt;Use &lt;code&gt;Thinking&lt;/code&gt; for multi-file debugging, architecture design, and complex error analysis. For very difficult long-running engineering problems, consider &lt;code&gt;Pro&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;research-and-material-analysis&#34;&gt;Research and Material Analysis
&lt;/h3&gt;&lt;p&gt;Use &lt;code&gt;Thinking&lt;/code&gt; for ordinary material organization.&lt;/p&gt;
&lt;p&gt;For law, business, scientific research, and data science tasks that need higher precision, &lt;code&gt;Pro&lt;/code&gt; is more suitable.&lt;/p&gt;
&lt;h3 id=&#34;tasks-requiring-image-generation-canvas-or-memory&#34;&gt;Tasks Requiring Image Generation, Canvas, or Memory
&lt;/h3&gt;&lt;p&gt;Prefer &lt;code&gt;Instant&lt;/code&gt; or &lt;code&gt;Thinking&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Do not automatically choose &lt;code&gt;Pro&lt;/code&gt;, because Pro does not support some ChatGPT tools.&lt;/p&gt;
&lt;h2 id=&#34;short-conclusion&#34;&gt;Short Conclusion
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GPT-5.5 Instant&lt;/code&gt; is the everyday default model: fast, clear, quota-efficient, and suitable for most ordinary tasks.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Thinking&lt;/code&gt; is the main mode for complex work: code, research, long documents, analysis, and multi-step reasoning.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5 Pro&lt;/code&gt; is the high-precision research mode: suitable for harder and more important tasks that need more rigor, but with more limits on speed and tool support.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT-5.5&lt;/code&gt; itself is more like the overall name for this generation. In practice, the real choice is whether you select &lt;code&gt;Instant&lt;/code&gt;, &lt;code&gt;Thinking&lt;/code&gt;, or &lt;code&gt;Pro&lt;/code&gt; in ChatGPT.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GPT-5.5 Instant announcement: &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 announcement: &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: An Open-Source AI Engine for Generating Short Videos From One Topic</title>
        <link>https://knightli.com/en/2026/05/07/pixelle-video-ai-short-video-engine/</link>
        <pubDate>Thu, 07 May 2026 20:25:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/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; is an open-source fully automated short-video generation engine from AIDC-AI. Its goal is direct: the user enters a topic, and the system automatically writes the script, generates AI images or videos, creates voice narration, adds background music, and renders the final video.&lt;/p&gt;
&lt;p&gt;This kind of tool is useful for batch short-video creation, knowledge explainers, talking-head content, novel recaps, history and culture videos, and self-media experiments. It is not a single text-to-video model. It is a production pipeline that connects several AI capabilities.&lt;/p&gt;
&lt;h2 id=&#34;what-it-automates&#34;&gt;What It Automates
&lt;/h2&gt;&lt;p&gt;Pixelle-Video&amp;rsquo;s default flow can be summarized as:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;enter a topic or fixed script;&lt;/li&gt;
&lt;li&gt;use an LLM to generate narration;&lt;/li&gt;
&lt;li&gt;plan scenes and generate images or video clips;&lt;/li&gt;
&lt;li&gt;use TTS to create voice narration;&lt;/li&gt;
&lt;li&gt;add background music;&lt;/li&gt;
&lt;li&gt;apply a video template and render the final result.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The README describes the flow as &amp;ldquo;script generation → image planning → frame-by-frame processing → video composition.&amp;rdquo; The modular design is clear: each step can be replaced, tuned, or connected to a custom workflow.&lt;/p&gt;
&lt;h2 id=&#34;key-features&#34;&gt;Key Features
&lt;/h2&gt;&lt;p&gt;The project covers a fairly complete set of capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI script writing: automatically generate narration from a topic;&lt;/li&gt;
&lt;li&gt;AI image generation: create illustrations for each line or scene;&lt;/li&gt;
&lt;li&gt;AI video generation: connect to video generation models such as WAN 2.1;&lt;/li&gt;
&lt;li&gt;TTS voice: support Edge-TTS, Index-TTS, and other options;&lt;/li&gt;
&lt;li&gt;background music: use built-in BGM or custom music;&lt;/li&gt;
&lt;li&gt;multiple aspect ratios: support vertical, horizontal, and other video sizes;&lt;/li&gt;
&lt;li&gt;multiple models: connect to GPT, Qwen, DeepSeek, Ollama, and more;&lt;/li&gt;
&lt;li&gt;ComfyUI workflows: use built-in workflows or replace image, TTS, and video generation steps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recent updates also mention motion transfer, digital-human talking videos, image-to-video pipelines, multilingual TTS voices, RunningHub support, and a Windows all-in-one package. The project is clearly moving beyond a simple script toward a fuller creation tool.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-launch&#34;&gt;Installation and Launch
&lt;/h2&gt;&lt;p&gt;Windows users can first look at the official all-in-one package. It is designed to reduce setup friction: no manual Python, uv, or ffmpeg installation is required. After extracting the package, run &lt;code&gt;start.bat&lt;/code&gt;, open the web interface, and configure the required APIs and image generation service.&lt;/p&gt;
&lt;p&gt;For source installation, the README gives this basic flow:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The source route is suitable for macOS and Linux users, and for anyone who wants to modify templates, workflows, or service configuration. The main prerequisites are &lt;code&gt;uv&lt;/code&gt; and &lt;code&gt;ffmpeg&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;configuration-priorities&#34;&gt;Configuration Priorities
&lt;/h2&gt;&lt;p&gt;On first use, the key is not to click &amp;ldquo;generate&amp;rdquo; immediately. The important part is connecting the external capabilities properly.&lt;/p&gt;
&lt;p&gt;LLM configuration determines script quality. You can choose models such as Qwen, GPT, DeepSeek, or Ollama, then fill in the API Key, Base URL, and model name. If you want to minimize cost, local Ollama is one option. If you want more stable results, a cloud model is usually easier.&lt;/p&gt;
&lt;p&gt;Image and video generation configuration determines visual quality. The project supports local ComfyUI and RunningHub. Users who understand ComfyUI can place their own workflows under &lt;code&gt;workflows/&lt;/code&gt; to replace the default image, video, or TTS pipeline.&lt;/p&gt;
&lt;p&gt;Template configuration determines the final visual form. The project organizes video templates under &lt;code&gt;templates/&lt;/code&gt;, with naming rules for static templates, image templates, and video templates. For creators, this is more practical than generating raw assets only, because the output is a video that can be previewed and downloaded directly.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who It Is For
&lt;/h2&gt;&lt;p&gt;Pixelle-Video is especially suitable for three groups:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Short-video creators&lt;/strong&gt; who want to turn ideas into draft videos quickly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AIGC tool users&lt;/strong&gt; who want to connect LLMs, ComfyUI, TTS, and video composition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developers and automation users&lt;/strong&gt; who want to modify templates, workflows, or integrate their own materials and models.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you only want to make one polished premium video, it may not replace manual editing. But if you want to generate many explainers, talking videos, or science and education videos with a consistent structure, its pipeline approach is valuable.&lt;/p&gt;
&lt;h2 id=&#34;things-to-note&#34;&gt;Things to Note
&lt;/h2&gt;&lt;p&gt;The ceiling of this kind of tool is determined by multiple links in the chain. A weak script model produces empty content; a weak image model gives scattered visuals; unnatural TTS makes the video feel rough; and a poor template weakens the final result.&lt;/p&gt;
&lt;p&gt;So it is better to start with one fixed scenario, such as a &amp;ldquo;60-second vertical science explainer.&amp;rdquo; Fix the LLM, visual style, TTS voice, BGM, and template first, then expand to more topics.&lt;/p&gt;
&lt;p&gt;The project supports a local free setup, but local setups often require a GPU, ComfyUI configuration, and model files. Users without a local inference environment can reduce setup difficulty by using a cloud LLM plus RunningHub, while keeping an eye on usage cost.&lt;/p&gt;
&lt;h2 id=&#34;short-take&#34;&gt;Short Take
&lt;/h2&gt;&lt;p&gt;Pixelle-Video is interesting not merely because it can &amp;ldquo;generate a video from one sentence.&amp;rdquo; Its real value is that it breaks short-video production into replaceable modules: script, visuals, voice, music, templates, and rendering. For ordinary users, it is a low-barrier AI video tool. For developers, it is closer to a hackable short-video automation framework.&lt;/p&gt;
&lt;p&gt;If you are studying AI short-video pipelines, or want to connect ComfyUI, TTS, LLMs, and template rendering into a usable product, Pixelle-Video is worth trying and dissecting.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How ChatGPT, Claude Code, and Gemini memory mechanisms differ</title>
        <link>https://knightli.com/en/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</link>
        <pubDate>Thu, 07 May 2026 14:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/07/chatgpt-claude-code-gemini-memory-comparison/</guid>
        <description>&lt;p&gt;&amp;ldquo;Memory&amp;rdquo; is becoming increasingly important in AI products. It marks the shift from one-off conversations to long-term collaboration: you do not need to reintroduce your background, repeat your preferences, or ask the model to understand the same project again and again.&lt;/p&gt;
&lt;p&gt;But memory does not mean the same thing in every product. &lt;code&gt;ChatGPT&lt;/code&gt;, &lt;code&gt;Claude Code&lt;/code&gt;, and &lt;code&gt;Gemini&lt;/code&gt; all try to help AI remember longer, but their goals, storage locations, transparency, and use cases are very different.&lt;/p&gt;
&lt;p&gt;As of May 7, 2026, they can be roughly understood as three types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT is more like personal assistant memory.&lt;/li&gt;
&lt;li&gt;Claude Code is more like engineering project memory.&lt;/li&gt;
&lt;li&gt;Gemini is more like Google ecosystem context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt-long-term-preferences-around-the-person&#34;&gt;ChatGPT: long-term preferences around the person
&lt;/h2&gt;&lt;p&gt;ChatGPT memory is mainly designed for personal collaboration. It cares about who you are, what you prefer, and what you work on over time.&lt;/p&gt;
&lt;p&gt;OpenAI currently separates ChatGPT memory into &lt;code&gt;saved memories&lt;/code&gt; and &lt;code&gt;chat history&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;saved memories&lt;/code&gt; are important pieces of information ChatGPT stores, such as your name, preferences, goals, common tech stack, and writing habits. You can explicitly ask it to remember something, and it may also save information from conversation when it thinks it will be useful later.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;chat history&lt;/code&gt; lets ChatGPT reference past conversations when answering. It does not mean every chat becomes a permanent memory. Instead, ChatGPT can search past conversations for relevant context when needed.&lt;/p&gt;
&lt;p&gt;So ChatGPT&amp;rsquo;s core logic is: understand the same user across sessions.&lt;/p&gt;
&lt;p&gt;Typical examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Keep code examples concise for me.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;I mainly use Python and TypeScript.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;I am writing a Hugo blog about AI tools.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;I prefer conclusions first, then details.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These memories are not bound to one project. They follow the account and the user&amp;rsquo;s working habits.&lt;/p&gt;
&lt;h2 id=&#34;memory-sources-making-personalization-more-visible&#34;&gt;Memory Sources: making personalization more visible
&lt;/h2&gt;&lt;p&gt;OpenAI emphasized &lt;code&gt;Memory sources&lt;/code&gt; in its May 2026 update.&lt;/p&gt;
&lt;p&gt;The purpose is not to add another type of memory, but to show users what sources ChatGPT referenced when personalizing a response. According to OpenAI help documents, Memory Sources may show:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Past chats.&lt;/li&gt;
&lt;li&gt;Saved memories.&lt;/li&gt;
&lt;li&gt;Custom instructions.&lt;/li&gt;
&lt;li&gt;Files in the file library.&lt;/li&gt;
&lt;li&gt;Emails from connected Gmail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Files and Gmail visibility depend on plan, region, and connection status. OpenAI also states that Memory sources may not show every factor that influenced a response, but they help users understand and manage personalization.&lt;/p&gt;
&lt;p&gt;This matters. The more AI can &amp;ldquo;remember you,&amp;rdquo; the more users need to know what it used to answer. Otherwise personalization becomes a black box: it seems to know you, but you do not know why.&lt;/p&gt;
&lt;p&gt;ChatGPT&amp;rsquo;s advantage is cross-session, cross-topic understanding of personal preferences. The risk is that memories can become outdated, or users may forget an old memory is still affecting answers. It is worth periodically cleaning saved memories and old chats.&lt;/p&gt;
&lt;h2 id=&#34;claude-code-around-codebases-and-engineering-rules&#34;&gt;Claude Code: around codebases and engineering rules
&lt;/h2&gt;&lt;p&gt;Claude Code memory is more engineering-oriented. It cares less about a user&amp;rsquo;s everyday preferences and more about how this codebase should be changed.&lt;/p&gt;
&lt;p&gt;Claude Code has two memory mechanisms that are easy to confuse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Explicit project memory: &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Automatic project memory: Auto Memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is the most basic and stable project memory file. It can live at the project root or inside subdirectories. Claude Code reads these files as project instructions and operating rules.&lt;/p&gt;
&lt;p&gt;Good content for &lt;code&gt;CLAUDE.md&lt;/code&gt; includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Common build, test, and lint commands.&lt;/li&gt;
&lt;li&gt;Code style and naming rules.&lt;/li&gt;
&lt;li&gt;Project architecture notes.&lt;/li&gt;
&lt;li&gt;Module boundaries and risky areas.&lt;/li&gt;
&lt;li&gt;Team conventions and commit workflow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If &lt;code&gt;CLAUDE.md&lt;/code&gt; is stored in the repository, it can be committed to Git and shared as a team agent guide. This is completely different from ChatGPT&amp;rsquo;s cloud-based personal memory.&lt;/p&gt;
&lt;h2 id=&#34;claude-code-auto-memory-accumulating-project-experience&#34;&gt;Claude Code Auto Memory: accumulating project experience
&lt;/h2&gt;&lt;p&gt;Claude Code also has &lt;code&gt;Auto Memory&lt;/code&gt;. Its goal is to let Claude automatically accumulate project knowledge across sessions without requiring users to write every note manually.&lt;/p&gt;
&lt;p&gt;According to Claude Code documentation, Auto Memory lets Claude save notes while working, such as build commands, debugging discoveries, architecture notes, code style preferences, and workflow habits. It does not save every session, but judges what may be useful later.&lt;/p&gt;
&lt;p&gt;One common misconception is that Auto Memory writes by default to &lt;code&gt;.claude/memory.md&lt;/code&gt; in the project root. Official documentation says each project has its own memory directory under the user&amp;rsquo;s home directory, with a path like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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; loads the first 200 lines or 25KB at the start of each conversation, while detailed content may be split into other topic files. Auto Memory files are local Markdown files, and users can view, edit, or delete them through &lt;code&gt;/memory&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This makes Claude Code memory more like a local project knowledge base. It is closer to the codebase than ChatGPT&amp;rsquo;s personal memory, and more dynamic than a plain &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But Auto Memory is local to the machine. It does not naturally follow the repository to other machines or cloud environments. For team-shared stable rules, put them in the repository&amp;rsquo;s &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;gemini-around-google-ecosystem-context&#34;&gt;Gemini: around Google ecosystem context
&lt;/h2&gt;&lt;p&gt;Gemini&amp;rsquo;s memory logic is different again.&lt;/p&gt;
&lt;p&gt;Gemini also supports saved information and past-chat references. Google help documents say users can save information about life, work, or preferences, and Gemini can reference past chats before answering. When it uses this information, the response may show sources such as &lt;code&gt;Your saved info&lt;/code&gt; or &lt;code&gt;Previous chats&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But Gemini&amp;rsquo;s differentiation is not only &amp;ldquo;saving a few preferences.&amp;rdquo; It is Google ecosystem integration.&lt;/p&gt;
&lt;p&gt;With user authorization and feature availability, Gemini can access context from connected Google apps such as Gmail, Google Drive, Docs, and Sheets. Its advantage is not making users teach it every item manually, but turning existing Google account data into searchable work context.&lt;/p&gt;
&lt;p&gt;A typical difference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT remembers: &amp;ldquo;I have been repairing an LTO tape drive recently.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Gemini may find the purchase confirmation email in Gmail or read repair notes from Drive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not mean Gemini can unconditionally read all Google data. It depends on account type, region, permissions, connected apps, Keep Activity settings, and product availability. Enterprise and school accounts may also be controlled by Google Workspace administrators.&lt;/p&gt;
&lt;p&gt;More accurately, Gemini memory is a combination of saved info, past chats, and connected Google ecosystem data.&lt;/p&gt;
&lt;h2 id=&#34;core-differences&#34;&gt;Core differences
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&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;Core object&lt;/td&gt;
          &lt;td&gt;Person and preferences&lt;/td&gt;
          &lt;td&gt;Project and codebase&lt;/td&gt;
          &lt;td&gt;Google account and ecosystem data&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Typical memory&lt;/td&gt;
          &lt;td&gt;Preferences, background, long-term goals&lt;/td&gt;
          &lt;td&gt;Architecture, commands, conventions, debugging experience&lt;/td&gt;
          &lt;td&gt;Saved info, past chats, Gmail/Drive/Docs context&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Storage form&lt;/td&gt;
          &lt;td&gt;Memory and chat context in OpenAI account&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;MEMORY.md&lt;/code&gt;, local Markdown files&lt;/td&gt;
          &lt;td&gt;Google account activity, saved info, connected app data&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Transparency&lt;/td&gt;
          &lt;td&gt;Memory sources show part of the source&lt;/td&gt;
          &lt;td&gt;Markdown files can be opened and edited&lt;/td&gt;
          &lt;td&gt;Managed through source prompts, Gemini Apps Activity, and Google settings&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cross-project ability&lt;/td&gt;
          &lt;td&gt;Strong, follows user account&lt;/td&gt;
          &lt;td&gt;Weak, mainly follows project or local project memory&lt;/td&gt;
          &lt;td&gt;Strong, depends on Google data and permissions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Team sharing&lt;/td&gt;
          &lt;td&gt;Not suitable for direct sharing&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; can be shared through Git&lt;/td&gt;
          &lt;td&gt;Mainly depends on Workspace and permissions&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Best for&lt;/td&gt;
          &lt;td&gt;Personal preferences and long-term assistant behavior&lt;/td&gt;
          &lt;td&gt;Long-term coding projects and agent collaboration&lt;/td&gt;
          &lt;td&gt;Google Workspace retrieval and cross-tool work&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to choose
&lt;/h2&gt;&lt;p&gt;If you want AI to remember who you are, what style you prefer, and how you usually work, ChatGPT memory is more suitable.&lt;/p&gt;
&lt;p&gt;It is good for saving personal preferences such as writing style, tech stack, answer format, professional background, and long-term project direction. Its focus is reducing self-introduction cost so each new conversation can start faster.&lt;/p&gt;
&lt;p&gt;If you want AI to remember how a codebase should be changed, which commands work, and which traps to avoid, Claude Code is more suitable.&lt;/p&gt;
&lt;p&gt;Put stable rules into &lt;code&gt;CLAUDE.md&lt;/code&gt; for team sharing. Let Auto Memory assist with dynamic experience. Important decisions should still be organized into documentation or &lt;code&gt;CLAUDE.md&lt;/code&gt;, not left only in local automatic memory.&lt;/p&gt;
&lt;p&gt;If most of your materials live in Gmail, Drive, Docs, and Sheets, Gemini&amp;rsquo;s ecosystem context has an advantage.&lt;/p&gt;
&lt;p&gt;It is useful for finding old emails, organizing Drive documents, and connecting calendar and office materials. The key to using Gemini is not repeatedly reminding it in chat, but making sure the relevant app connections, permissions, and activity settings are correct.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-division-of-labor&#34;&gt;A practical division of labor
&lt;/h2&gt;&lt;p&gt;You can divide them like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT remembers general personal preferences.&lt;/li&gt;
&lt;li&gt;Claude Code remembers engineering knowledge for a repository.&lt;/li&gt;
&lt;li&gt;Gemini retrieves materials from your Google ecosystem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, ChatGPT is like a personal secretary, Claude Code is like a senior engineer inside the project, and Gemini is like an indexer for your Google account.&lt;/p&gt;
&lt;p&gt;There is no absolute winner. They have different goals.&lt;/p&gt;
&lt;p&gt;The biggest mistake is mixing them together. Personal preferences do not always belong in project memory; project architecture does not always belong in cloud personal memory; and Google ecosystem retrieval does not mean the model has truly understood you long-term.&lt;/p&gt;
&lt;h2 id=&#34;short-take&#34;&gt;Short Take
&lt;/h2&gt;&lt;p&gt;The next stage of AI memory is not simply &amp;ldquo;remember more.&amp;rdquo; Memory needs layers, visibility, and control.&lt;/p&gt;
&lt;p&gt;ChatGPT focuses on cross-session personalization. Claude Code focuses on code project continuity. Gemini focuses on Google ecosystem context. Good long-term AI collaboration does not put all information into one black box; it keeps different kinds of memory in the right places.&lt;/p&gt;
&lt;p&gt;Put personal preferences in personal memory, engineering rules in the codebase, and historical materials in the original document and email systems. AI&amp;rsquo;s job is to call the right context when needed, not mix everything into one pile.&lt;/p&gt;
&lt;h2 id=&#34;links&#34;&gt;Links
&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 update: memory sources, GPT-5.5 Instant, and spreadsheet add-ins</title>
        <link>https://knightli.com/en/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/en/2026/05/07/chatgpt-release-notes-memory-gpt-5-5-sheets/</guid>
        <description>&lt;p&gt;OpenAI&amp;rsquo;s &lt;code&gt;ChatGPT Release Notes&lt;/code&gt; page was updated in early May 2026. The latest batch focuses on three things: memory sources and stronger personalization in ChatGPT, &lt;code&gt;GPT-5.5 Instant&lt;/code&gt; becoming the new default model, and the global launch of ChatGPT for Excel and Google Sheets.&lt;/p&gt;
&lt;p&gt;Taken together, these updates point in a clear direction: ChatGPT is continuing to move from a chat entry point toward a more continuous, more personalized, and more office-native work assistant.&lt;/p&gt;
&lt;h2 id=&#34;memory-sources-make-personalization-more-transparent&#34;&gt;Memory sources make personalization more transparent
&lt;/h2&gt;&lt;p&gt;The most important update is &lt;code&gt;memory sources&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;OpenAI says ChatGPT Plus and Pro users are beginning to receive stronger memory improvements. ChatGPT can better pull relevant context from past chats, saved memories, available files, and connected Gmail apps to provide more tailored ideas, recommendations, and next steps.&lt;/p&gt;
&lt;p&gt;This means users do not have to repeatedly explain project background, preferences, habits, or existing materials in every new conversation. For long-term writing, project planning, research organization, learning, and teamwork, continuity becomes stronger.&lt;/p&gt;
&lt;p&gt;But the stronger personalization becomes, the more important transparency becomes. That is why OpenAI is introducing memory sources, so users can see what information helped personalize a response. Users can click the Sources icon under a response to view relevant saved memories, past chats, and custom instructions. Plus and Pro users may also see files from their library and referenced emails from connected Gmail.&lt;/p&gt;
&lt;p&gt;If some information is outdated, irrelevant, or wrong, users can correct it, delete it, or mark it as not relevant.&lt;/p&gt;
&lt;h2 id=&#34;memory-control-is-still-the-key&#34;&gt;Memory control is still the key
&lt;/h2&gt;&lt;p&gt;OpenAI also notes that memory sources may not show every factor that shaped a response, and that it will keep improving the view.&lt;/p&gt;
&lt;p&gt;That matters. Memory sources are not a complete &amp;ldquo;model thinking log.&amp;rdquo; They are a product interface for understanding personalized context. They improve visibility, but cannot fully expose every factor that influenced an answer.&lt;/p&gt;
&lt;p&gt;For privacy and control, OpenAI says memory sources only appear inside the user&amp;rsquo;s own account experience. If a user shares a chat, the sources do not appear in the shared chat. Users can also delete chats, use temporary chats that do not use or update memory and do not appear in history, turn off memory, disconnect apps at any time, and manage whether their content is used to improve models.&lt;/p&gt;
&lt;p&gt;This shows ChatGPT personalization is following a clearer path: make the assistant more aware of the user, while also giving the user ways to see and manage why it answered that way.&lt;/p&gt;
&lt;h2 id=&#34;gpt-55-instant-becomes-the-default-model&#34;&gt;GPT-5.5 Instant becomes the default model
&lt;/h2&gt;&lt;p&gt;The release notes also confirm that &lt;code&gt;GPT-5.5 Instant&lt;/code&gt; is rolling out as the new default ChatGPT model, replacing &lt;code&gt;GPT-5.3 Instant&lt;/code&gt; for all users.&lt;/p&gt;
&lt;p&gt;The default model update improves several areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accuracy.&lt;/li&gt;
&lt;li&gt;Clarity and concision.&lt;/li&gt;
&lt;li&gt;Image understanding.&lt;/li&gt;
&lt;li&gt;STEM answers.&lt;/li&gt;
&lt;li&gt;Deciding when to use web search.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI emphasizes that GPT-5.5 Instant is more factually reliable, especially for prompts where accuracy matters. It also gives tighter and more direct answers, reduces unnecessary follow-up questions, and lowers clutter from overformatting and decorative content.&lt;/p&gt;
&lt;p&gt;For users, this may not be as visible as a new feature button, but it changes the feel of opening ChatGPT every day: fewer detours, less verbosity, and less formatting piled onto simple questions.&lt;/p&gt;
&lt;h2 id=&#34;personalization-and-the-default-model-now-work-together&#34;&gt;Personalization and the default model now work together
&lt;/h2&gt;&lt;p&gt;For Plus and Pro users on the web, GPT-5.5 Instant can also use context from past chats, files, and connected Gmail more effectively.&lt;/p&gt;
&lt;p&gt;This is part of the same product direction as memory sources. The model is not only &amp;ldquo;smarter.&amp;rdquo; It should also know, when appropriate, what you worked on before, what you care about, and what materials you already provided. When continuing a project, writing a plan, organizing email information, or making suggestions based on past preferences, ChatGPT can ask fewer repeated questions.&lt;/p&gt;
&lt;p&gt;Paid users can continue using GPT-5.3 Instant for three months through model configuration settings before it is retired.&lt;/p&gt;
&lt;h2 id=&#34;chatgpt-for-excel-and-google-sheets&#34;&gt;ChatGPT for Excel and Google Sheets
&lt;/h2&gt;&lt;p&gt;Another important update is the global launch of ChatGPT for Excel and Google Sheets.&lt;/p&gt;
&lt;p&gt;It brings ChatGPT into a sidebar inside Microsoft Excel and Google Sheets, so users can build, update, and understand data in place. OpenAI mentions use cases including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Trackers.&lt;/li&gt;
&lt;li&gt;Budgets.&lt;/li&gt;
&lt;li&gt;Formulas.&lt;/li&gt;
&lt;li&gt;Multi-tab files.&lt;/li&gt;
&lt;li&gt;Scenario work.&lt;/li&gt;
&lt;li&gt;Spreadsheet cleanup.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where available, it also supports Skills and apps.&lt;/p&gt;
&lt;p&gt;The meaning is straightforward: a lot of office data does not live in a specialized BI system. It lives in Excel and Google Sheets. Putting ChatGPT into the spreadsheet sidebar is more natural than asking users to copy and paste into a chat window, and makes it easier to enter real workflows.&lt;/p&gt;
&lt;h2 id=&#34;usage-limits-and-installation&#34;&gt;Usage limits and installation
&lt;/h2&gt;&lt;p&gt;The release notes say Free and Go plans include limited usage, while Plus and Pro use the same agentic usage limits as Codex. Users can buy additional credits if they need to go beyond plan limits.&lt;/p&gt;
&lt;p&gt;Installation is also direct: install ChatGPT for Excel from Microsoft Marketplace or ChatGPT from Google Workspace Marketplace, then sign in with an eligible ChatGPT account.&lt;/p&gt;
&lt;p&gt;OpenAI also reminds users to review outputs before relying on formulas or analysis. That point is important. AI can speed up spreadsheet work, but formulas, budgets, financial work, and business analysis still need human review.&lt;/p&gt;
&lt;h2 id=&#34;recent-update-pattern&#34;&gt;Recent update pattern
&lt;/h2&gt;&lt;p&gt;Looking at the release notes from late April to early May, ChatGPT&amp;rsquo;s direction is clearer.&lt;/p&gt;
&lt;p&gt;On April 30, OpenAI introduced Advanced Account Security for personal ChatGPT accounts, adding stronger sign-in requirements and account protections, including passkeys, security keys, recovery keys, shorter sessions, and login notifications.&lt;/p&gt;
&lt;p&gt;On April 28, model selection moved closer to the composer, making it easier to choose a model before sending a message. Thinking effort controls for Thinking and Pro models were also moved into the model picker.&lt;/p&gt;
&lt;p&gt;On April 22, ChatGPT introduced Fast answers for common information queries that do not require personalization and where the model has a high-confidence answer. Fast answers do not reference past chats or memory, and users can turn them off in personalization settings.&lt;/p&gt;
&lt;p&gt;These updates all serve the same goal: make ChatGPT better for frequent everyday use. It should be fast when speed matters, personalized when context matters, and provide security and visibility controls when needed.&lt;/p&gt;
&lt;h2 id=&#34;short-take&#34;&gt;Short Take
&lt;/h2&gt;&lt;p&gt;The point of this ChatGPT Release Notes update is not one single feature. It is the continued shaping of the product.&lt;/p&gt;
&lt;p&gt;GPT-5.5 Instant improves the default answer quality. Memory sources make personalization more visible. Excel and Google Sheets add-ins put ChatGPT inside office spreadsheets. Advanced Account Security and model picker changes strengthen account protection and interaction design.&lt;/p&gt;
&lt;p&gt;ChatGPT is becoming a longer-term work layer. It remembers more context, enters more tools, and handles more daily tasks. The next questions are whether personalization transparency is clear enough, whether office add-ins remain stable in real complex spreadsheets, and whether users can keep a healthy balance between convenience and control.&lt;/p&gt;
&lt;h2 id=&#34;links&#34;&gt;Links
&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 wants image generation inside enterprise workflows</title>
        <link>https://knightli.com/en/2026/05/07/grok-imagine-quality-mode-api/</link>
        <pubDate>Thu, 07 May 2026 14:27:29 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/07/grok-imagine-quality-mode-api/</guid>
        <description>&lt;p&gt;xAI released the &lt;code&gt;Grok Imagine Quality Mode API&lt;/code&gt; on May 6, 2026. It is a quality mode for image generation and editing in Grok Imagine, available to enterprise developers and teams, with a focus on higher realism, stronger text rendering, and better creative control.&lt;/p&gt;
&lt;p&gt;The point of this update is not to create another generic text-to-image entry point. It is to put Grok Imagine into enterprise content production workflows: product images, marketing assets, ad variations, UGC-style content, brand visuals, and video generation all fall within its target range.&lt;/p&gt;
&lt;h2 id=&#34;what-quality-mode-provides&#34;&gt;What Quality Mode provides
&lt;/h2&gt;&lt;p&gt;xAI&amp;rsquo;s positioning is clear: more realistic, better at text, and better at following prompts.&lt;/p&gt;
&lt;p&gt;First, realism is improved. The official examples emphasize natural skin, material details, lighting, scene atmosphere, and photographic texture. This matters for commercial images. Many image models already look &amp;ldquo;pretty,&amp;rdquo; but once the image is used in ads, product pages, or social assets, problems with skin, fabric, hands, spatial relationships, and lighting become obvious.&lt;/p&gt;
&lt;p&gt;Second, text rendering is stronger. xAI specifically says Quality Mode supports cleaner multilingual text capabilities. Whether an image model can reliably generate text is a real barrier for business use. Menus, posters, packaging, ads, buttons, signs, and social graphics are hard to use directly if even one word is wrong.&lt;/p&gt;
&lt;p&gt;Third, creative control is better. The official description includes tighter prompt following, deeper scene and world understanding, and more consistent brand results. In other words, Quality Mode is trying to solve not just &amp;ldquo;generate a good-looking image,&amp;rdquo; but &amp;ldquo;generate controllable, reusable, iterable images according to a team&amp;rsquo;s requirements.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;built-for-enterprises-not-just-casual-image-play&#34;&gt;Built for enterprises, not just casual image play
&lt;/h2&gt;&lt;p&gt;xAI places enterprise use cases near the front of the announcement.&lt;/p&gt;
&lt;p&gt;The most typical example is product visualization and marketing assets. Companies can use it to generate photorealistic product renders, hero images, social assets, icons, and ad variations. Compared with a personal user casually generating one image, companies care about three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the image is realistic enough to approach commercial photography or high-quality rendering.&lt;/li&gt;
&lt;li&gt;Whether it follows brand style, including color, composition, text placement, and visual tone.&lt;/li&gt;
&lt;li&gt;Whether it can generate variations at scale for A/B tests, campaigns, and different channels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is where Quality Mode is valuable. It does not replace designers. It compresses the &amp;ldquo;make a dozen directions first&amp;rdquo; stage into less time. Teams can generate candidates through the API, then let design, marketing, and brand teams select, adjust, and ship them.&lt;/p&gt;
&lt;h2 id=&#34;image-editing-matters-more-than-text-to-image&#34;&gt;Image editing matters more than text-to-image
&lt;/h2&gt;&lt;p&gt;The announcement shows not only images generated from scratch, but also workflows based on reference images. Examples include placing a product on a pamphlet, preserving a T-shirt graphic, and putting the same person into different UGC scenes.&lt;/p&gt;
&lt;p&gt;This is more useful for enterprises. In real business work, assets rarely start from nothing. Teams already have product photos, brand guidelines, character references, packaging designs, or campaign themes. If an AI tool can only randomly generate attractive images, its value is limited. If it can create stable variations around existing assets, it is much easier to fit into a workflow.&lt;/p&gt;
&lt;p&gt;This is also a direction for image model competition: from &amp;ldquo;prompt lottery&amp;rdquo; to controllable editing. Users do not only want surprise; they want predictable changes.&lt;/p&gt;
&lt;h2 id=&#34;the-business-meaning-of-ugc-style-content&#34;&gt;The business meaning of UGC-style content
&lt;/h2&gt;&lt;p&gt;xAI also shows UGC-style content, such as the same person wearing a specified T-shirt, eating birthday cake, or taking a mirror selfie in an elevator.&lt;/p&gt;
&lt;p&gt;This reflects a shift in advertising and social content production. Many brands no longer need only polished studio shots. They also need content that looks more natural and closer to real user sharing. UGC-style assets work well for short video covers, feed ads, social posts, and creator collaboration previews.&lt;/p&gt;
&lt;p&gt;Of course, this also means companies need clearer handling of portrait rights, brand authorization, and content labeling. AI can lower production costs, but it does not make usage risk disappear. Compliance still has to be designed in advance, especially when real likenesses, similar people, product marks, and ad distribution are involved.&lt;/p&gt;
&lt;h2 id=&#34;text-world-understanding-and-visual-range&#34;&gt;Text, world understanding, and visual range
&lt;/h2&gt;&lt;p&gt;Quality Mode also emphasizes world understanding and a broad visual range.&lt;/p&gt;
&lt;p&gt;Official examples include text on a cake explaining Alexander the Great, cinematic picnic scenes, and UI-style icons. These examples suggest xAI wants Grok Imagine to cover realistic photography, commercial ads, product renders, icons, posters, and image inputs for video generation rather than one fixed aesthetic.&lt;/p&gt;
&lt;p&gt;The most interesting part is the combination of text and world understanding. Many image tasks are not just about drawing objects. They require the model to understand relationships, use cases, historical facts, text meaning, and visual presentation. The more the model can understand these constraints, the more likely it is to move from entertainment tool to production tool.&lt;/p&gt;
&lt;h2 id=&#34;quality-mode-also-enhances-video-generation&#34;&gt;Quality Mode also enhances video generation
&lt;/h2&gt;&lt;p&gt;xAI says pairing its latest image model with its video capabilities can support social media video assets, product showcases, ads, and more.&lt;/p&gt;
&lt;p&gt;This fits the broader trend in multimodal products: image generation is no longer an isolated capability. It becomes part of a pipeline for video generation, ad creative, product demos, and social content. A company may first generate a high-quality product image, then extend it into a short video, motion ad, or multi-version campaign asset.&lt;/p&gt;
&lt;p&gt;From this perspective, Quality Mode is not just about clearer images. It provides a more stable visual starting point for video and marketing automation.&lt;/p&gt;
&lt;h2 id=&#34;how-developers-call-it&#34;&gt;How developers call it
&lt;/h2&gt;&lt;p&gt;The official example uses &lt;code&gt;xai_sdk&lt;/code&gt; to call the &lt;code&gt;grok-imagine-image-quality&lt;/code&gt; model:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;This shows Quality Mode is not only a feature inside the Grok frontend. It is exposed through the API for enterprise developers and teams. For companies, the API form matters because it can connect to internal asset systems, ad platforms, CMS tools, design workflows, and automation pipelines.&lt;/p&gt;
&lt;h2 id=&#34;short-take&#34;&gt;Short Take
&lt;/h2&gt;&lt;p&gt;The core direction of Grok Imagine Quality Mode API is to push image generation from &amp;ldquo;fun&amp;rdquo; toward &amp;ldquo;usable in enterprise production.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It emphasizes realism, text rendering, prompt following, brand consistency, image editing, UGC style, and video generation continuity. All of these point to one goal: helping teams produce visual assets in batches, with stability and control.&lt;/p&gt;
&lt;p&gt;The real test is not only whether a single image looks impressive. It is whether text rendering stays stable in complex scenes, whether reference-image editing preserves identity and brand consistency, and whether the API is fast, affordable, and controllable at scale. Only if those parts hold up can Grok Imagine truly enter enterprise content production pipelines.&lt;/p&gt;
&lt;h2 id=&#34;links&#34;&gt;Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;xAI announcement: &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 docs: &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 for a Godot Game Demo: How Far Can a Few Cents Go?</title>
        <link>https://knightli.com/en/2026/05/06/deepseek-v4-flash-godot-game-demo/</link>
        <pubDate>Wed, 06 May 2026 09:22:18 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/06/deepseek-v4-flash-godot-game-demo/</guid>
        <description>&lt;p&gt;Can &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; handle Godot game demo development?&lt;/p&gt;
&lt;p&gt;The focus is simple: can it create a small Godot demo that runs, can be observed, and includes physics effects?&lt;/p&gt;
&lt;p&gt;The short answer is yes. The quality is not commercial-grade, but it is already enough for gameplay prototyping and physics interaction demos. More importantly, the cost is very low, which makes it suitable for quickly validating ideas.&lt;/p&gt;
&lt;h2 id=&#34;demo-performance&#34;&gt;Demo Performance
&lt;/h2&gt;&lt;p&gt;The focus of this demo is physics interaction.&lt;/p&gt;
&lt;p&gt;Several visible effects include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The rope can be cut.&lt;/li&gt;
&lt;li&gt;The box falls to the ground.&lt;/li&gt;
&lt;li&gt;After increasing the mass, box collisions become more forceful.&lt;/li&gt;
&lt;li&gt;The rope shows noticeable elasticity.&lt;/li&gt;
&lt;li&gt;After adjusting friction and elasticity, the box shows clear sliding and bouncing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From what it presents, this is no longer just &amp;ldquo;a few generated Godot scripts&amp;rdquo;. It is a small prototype that can run and show observable physics behavior.&lt;/p&gt;
&lt;h2 id=&#34;usability&#34;&gt;Usability
&lt;/h2&gt;&lt;p&gt;The value of this demo is that it can run, be viewed, and be modified. It is not a complete game, nor an engineering project ready for direct commercialization, but it already demonstrates several things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Flash&lt;/code&gt; can understand the basic goal of a Godot demo.&lt;/li&gt;
&lt;li&gt;An AI Agent can turn requirements into a runnable project.&lt;/li&gt;
&lt;li&gt;Non-web tasks such as Godot physics interaction are entering a low-cost prototyping stage.&lt;/li&gt;
&lt;li&gt;For individual developers, it can quickly turn an idea into something visible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the goal is to build a formal game, it is obviously not enough. But if the goal is to verify whether a gameplay idea is interesting or whether the rough physics effect can be made, this demo is already usable.&lt;/p&gt;
&lt;h2 id=&#34;cost-significance&#34;&gt;Cost Significance
&lt;/h2&gt;&lt;p&gt;The most notable part is not how polished the visuals are, but the cost.&lt;/p&gt;
&lt;p&gt;If a Godot physics demo can produce a runnable version with model costs at the level of a few cents, its significance is not replacing professional game development. It is sharply reducing the cost of prototype trial and error.&lt;/p&gt;
&lt;p&gt;In the past, validating a small game idea usually required knowing Godot, writing scripts, setting up scenes, and adjusting physics parameters. Now an AI Agent can first generate a runnable version, and humans can judge whether the direction makes sense.&lt;/p&gt;
&lt;p&gt;For indie developers, this kind of low-cost experimentation is useful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quickly validate gameplay concepts.&lt;/li&gt;
&lt;li&gt;Generate temporary demos for others to see.&lt;/li&gt;
&lt;li&gt;Explore Godot APIs and the physics system.&lt;/li&gt;
&lt;li&gt;Turn ideas into an initial runnable project.&lt;/li&gt;
&lt;li&gt;Reduce handwritten code cost before the direction is clear.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deepseek-v4-flashs-performance&#34;&gt;DeepSeek V4 Flash&amp;rsquo;s Performance
&lt;/h2&gt;&lt;p&gt;What is worth noting is that the model used here is &lt;code&gt;DeepSeek V4 Flash&lt;/code&gt;, not a more expensive and heavier flagship model.&lt;/p&gt;
&lt;p&gt;It performs well in the role of a low-cost prototype model. It is not the strongest, most stable, or most suitable model for delivering production engineering, but it is attractive in budget-sensitive scenarios where the goal is to quickly test a direction.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4 Flash + Agent + Godot&lt;/code&gt; is better suited to these tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Small gameplay prototypes.&lt;/li&gt;
&lt;li&gt;Physics effect demos.&lt;/li&gt;
&lt;li&gt;UI or interaction concept validation.&lt;/li&gt;
&lt;li&gt;Teaching examples.&lt;/li&gt;
&lt;li&gt;Helping understand Godot project structure.&lt;/li&gt;
&lt;li&gt;Generating a first runnable project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable for directly taking on these tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large game architecture.&lt;/li&gt;
&lt;li&gt;Complex character controllers.&lt;/li&gt;
&lt;li&gt;Network synchronization.&lt;/li&gt;
&lt;li&gt;Core code for commercial projects.&lt;/li&gt;
&lt;li&gt;High-precision physics simulation.&lt;/li&gt;
&lt;li&gt;Automated submission without human testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, it is suitable as a first draft and testbed, not as the owner of production engineering.&lt;/p&gt;
&lt;h2 id=&#34;what-this-shows&#34;&gt;What This Shows
&lt;/h2&gt;&lt;p&gt;This shows that AI coding is continuing to expand from websites, scripts, and backend APIs into game development and interactive prototyping.&lt;/p&gt;
&lt;p&gt;Game development used to have a high barrier to entry, especially when engines, scripts, asset management, and physics systems were mixed together. Beginners could easily get stuck. Now models plus Agent tools can first set up the project, letting developers focus on gameplay judgment and effect tuning.&lt;/p&gt;
&lt;p&gt;This may bring three changes:&lt;/p&gt;
&lt;p&gt;First, game prototypes become cheaper. Many ideas no longer need to wait until full development to be validated; they can first become runnable demos.&lt;/p&gt;
&lt;p&gt;Second, indie developers may become more willing to experiment. People who do not know Godot can still use AI to touch the project structure and basic workflow.&lt;/p&gt;
&lt;p&gt;Third, model stability becomes more important. Game development is not just about code running. The effect also needs to be reasonable, the feel needs to be normal, and parameters need to be controllable. In the future, models that better combine actual visuals and runtime state will be more suitable for this kind of task.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Flash for a Godot demo can be summarized in one sentence: &lt;strong&gt;not perfect, but cheap enough, fast enough, and suitable enough for prototyping.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It is still far from commercial games, but if the goal is to validate a small game idea at extremely low cost, it is already valuable.&lt;/p&gt;
&lt;p&gt;For individual developers, the most realistic use is not handing the whole game to AI, but letting AI first produce a runnable project while humans handle judgment, trade-offs, and polishing. Used this way, low-cost models such as DeepSeek V4 Flash become genuinely appealing.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>CC Switch: A desktop tool for managing Claude Code, Codex, Gemini CLI, and OpenClaw in one place</title>
        <link>https://knightli.com/en/2026/05/06/cc-switch-ai-cli-manager/</link>
        <pubDate>Wed, 06 May 2026 09:03:08 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/06/cc-switch-ai-cli-manager/</guid>
        <description>&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is a desktop management tool for heavy AI coding users. The problem it tries to solve is straightforward: many people now use &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;, and &lt;code&gt;OpenClaw&lt;/code&gt; at the same time, but each tool has its own configuration format, Provider syntax, MCP setup, and Skills management method.&lt;/p&gt;
&lt;p&gt;When you only use one tool, manually editing configuration files is still tolerable. Once several tools are mixed together, plus official accounts, third-party APIs, relay services, local models, and shared team configuration, editing JSON, TOML, and &lt;code&gt;.env&lt;/code&gt; files by hand quickly becomes tedious.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is positioned as a way to pull these scattered configurations into one cross-platform desktop app.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What problem does it solve
&lt;/h2&gt;&lt;p&gt;Modern AI coding tools increasingly feel like &amp;ldquo;development colleagues inside the command line&amp;rdquo;, but their ecosystems are still not fully unified.&lt;/p&gt;
&lt;p&gt;Common pain points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw all use different configuration formats.&lt;/li&gt;
&lt;li&gt;Switching API Providers requires repeated configuration-file edits.&lt;/li&gt;
&lt;li&gt;MCP servers are configured repeatedly across different tools.&lt;/li&gt;
&lt;li&gt;Prompt files such as &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and &lt;code&gt;GEMINI.md&lt;/code&gt; are hard to maintain consistently.&lt;/li&gt;
&lt;li&gt;Skills installation, sync, backup, and removal lack a single central entry point.&lt;/li&gt;
&lt;li&gt;Switching between multiple accounts, relays, and model services can easily become confusing.&lt;/li&gt;
&lt;li&gt;Once a manually edited configuration file breaks, troubleshooting is costly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea behind &lt;code&gt;CC Switch&lt;/code&gt; is to stop forcing users to remember every tool&amp;rsquo;s configuration details, and instead use one unified interface to manage Providers, MCP, Prompts, Skills, Sessions, and proxies.&lt;/p&gt;
&lt;h2 id=&#34;supported-tools&#34;&gt;Supported tools
&lt;/h2&gt;&lt;p&gt;The README lists five core supported targets:&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;These tools are similar in positioning: all center on AI coding, Agent workflows, and command-line collaboration. But their configuration systems differ, and the value of &lt;code&gt;CC Switch&lt;/code&gt; lies in wrapping those differences.&lt;/p&gt;
&lt;p&gt;For people who often compare different AI coding tools, this is much easier than manually opening configuration files every time.&lt;/p&gt;
&lt;h2 id=&#34;provider-management&#34;&gt;Provider management
&lt;/h2&gt;&lt;p&gt;The first layer of &lt;code&gt;CC Switch&lt;/code&gt; is Provider management.&lt;/p&gt;
&lt;p&gt;It includes more than 50 Provider presets. The README mentions directions such as AWS Bedrock, NVIDIA NIM, and various community relays. Users can copy an API key, import it with one click, and then switch from the interface.&lt;/p&gt;
&lt;p&gt;The practical points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Providers with one click.&lt;/li&gt;
&lt;li&gt;Reorder Providers by dragging.&lt;/li&gt;
&lt;li&gt;Quickly switch from the system tray.&lt;/li&gt;
&lt;li&gt;Import and export Providers.&lt;/li&gt;
&lt;li&gt;Sync some common Providers across multiple apps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For many people, this feature alone is already attractive. In daily AI coding work, the problem is often not &amp;ldquo;I do not know how to use the model&amp;rdquo;, but &amp;ldquo;which tool, endpoint, and account should this key use today&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;local-proxy-and-failover&#34;&gt;Local proxy and failover
&lt;/h2&gt;&lt;p&gt;Besides writing configuration files, &lt;code&gt;CC Switch&lt;/code&gt; also provides a local proxy mode.&lt;/p&gt;
&lt;p&gt;The focus of this capability is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hot-switching Providers.&lt;/li&gt;
&lt;li&gt;Format conversion.&lt;/li&gt;
&lt;li&gt;Automatic failover.&lt;/li&gt;
&lt;li&gt;Circuit breakers.&lt;/li&gt;
&lt;li&gt;Provider health checks.&lt;/li&gt;
&lt;li&gt;Request correction.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In simple terms, it does not only write configuration into target tools. It can also add a local proxy layer in the middle, so different tools access model services through the proxy.&lt;/p&gt;
&lt;p&gt;This is useful for users with multiple Providers: if one service is down, switch to another; if one model is expensive, move to a cheaper one; if a request format is incompatible, adapt it through the proxy layer.&lt;/p&gt;
&lt;h2 id=&#34;mcp-prompts-and-skills&#34;&gt;MCP, Prompts, and Skills
&lt;/h2&gt;&lt;p&gt;The second important layer of &lt;code&gt;CC Switch&lt;/code&gt; is unified management for MCP, Prompts, and Skills.&lt;/p&gt;
&lt;h3 id=&#34;mcp&#34;&gt;MCP
&lt;/h3&gt;&lt;p&gt;It provides a unified MCP panel for managing MCP servers across multiple apps, with support for bidirectional sync and Deep Link import.&lt;/p&gt;
&lt;p&gt;This is practical for users already working with MCP. Once there are many MCP servers, configuration easily becomes scattered across different clients. A unified panel reduces duplicate configuration and makes migration easier.&lt;/p&gt;
&lt;h3 id=&#34;prompts&#34;&gt;Prompts
&lt;/h3&gt;&lt;p&gt;The Prompts section supports Markdown editing and can sync corresponding files across different tools, such as:&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;These files are essentially project manuals for Agents. Unified management makes it easier to maintain team rules, project conventions, and global prompts.&lt;/p&gt;
&lt;h3 id=&#34;skills&#34;&gt;Skills
&lt;/h3&gt;&lt;p&gt;Skills can be installed with one click from GitHub repositories or ZIP files. Custom repository management, symbolic links, and file copying are also supported.&lt;/p&gt;
&lt;p&gt;If you use tools such as Claude Code, Codex, and OpenClaw at the same time, Skills can easily turn into scattered files across different directories. &lt;code&gt;CC Switch&lt;/code&gt; centralizes them and reduces maintenance cost.&lt;/p&gt;
&lt;h2 id=&#34;sessions-and-workspace&#34;&gt;Sessions and workspace
&lt;/h2&gt;&lt;p&gt;The README also mentions Session Manager and Workspace features.&lt;/p&gt;
&lt;p&gt;It can browse, search, and restore session history from multiple apps. For people who use AI coding tools over a long period, session management is genuinely important: many valuable contexts, debugging trails, and solution comparisons are buried in old conversations.&lt;/p&gt;
&lt;p&gt;It also provides a Workspace editor for OpenClaw, allowing users to edit agent files such as &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;SOUL.md&lt;/code&gt; with Markdown preview.&lt;/p&gt;
&lt;p&gt;This shows that &lt;code&gt;CC Switch&lt;/code&gt; is not just a small &amp;ldquo;key switching&amp;rdquo; utility. It is expanding toward an AI Agent workstation.&lt;/p&gt;
&lt;h2 id=&#34;cloud-sync-and-data-storage&#34;&gt;Cloud sync and data storage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; supports syncing Provider data through Dropbox, OneDrive, iCloud, NAS, or WebDAV.&lt;/p&gt;
&lt;p&gt;Local data storage is also clearly defined:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Database: &lt;code&gt;~/.cc-switch/cc-switch.db&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Local settings: &lt;code&gt;~/.cc-switch/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Automatic backups: &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 backups: &lt;code&gt;~/.cc-switch/skill-backups/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It uses SQLite as the main data source and emphasizes atomic writes and automatic backups, with the goal of avoiding configuration-file corruption during switching or writing.&lt;/p&gt;
&lt;p&gt;This design matters for heavy users. If the configuration management tool itself writes a bad configuration, every AI coding tool can be affected.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; is a cross-platform desktop app built on Tauri 2.&lt;/p&gt;
&lt;p&gt;The approximate system requirements are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows: Windows 10 or later&lt;/li&gt;
&lt;li&gt;macOS: macOS 12 Monterey or later&lt;/li&gt;
&lt;li&gt;Linux: Ubuntu 22.04+, Debian 11+, Fedora 34+, and other mainstream distributions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows users can download the &lt;code&gt;.msi&lt;/code&gt; installer or a portable compressed package.&lt;/p&gt;
&lt;p&gt;macOS users can install it with 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;To update:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 users can choose &lt;code&gt;.deb&lt;/code&gt;, &lt;code&gt;.rpm&lt;/code&gt;, or AppImage. Arch Linux users can also install it through &lt;code&gt;paru -S cc-switch-bin&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;As of May 6, 2026, the repository page shows the latest release as &lt;code&gt;CC Switch v3.14.1&lt;/code&gt;, published on April 23, 2026.&lt;/p&gt;
&lt;h2 id=&#34;tech-stack&#34;&gt;Tech stack
&lt;/h2&gt;&lt;p&gt;Judging from the repository structure, &lt;code&gt;CC Switch&lt;/code&gt; is a typical Tauri desktop app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frontend: React 18, TypeScript, Vite, TailwindCSS, TanStack Query, shadcn/ui&lt;/li&gt;
&lt;li&gt;Backend: Tauri 2, Rust, SQLite, Tokio&lt;/li&gt;
&lt;li&gt;Testing: Vitest, MSW, Testing Library&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Core design patterns include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite as the Single Source of Truth.&lt;/li&gt;
&lt;li&gt;JSON for device-level local settings.&lt;/li&gt;
&lt;li&gt;Writing into target tools&amp;rsquo; live config during switching.&lt;/li&gt;
&lt;li&gt;Filling current Provider edits back from live config.&lt;/li&gt;
&lt;li&gt;Atomic writes using temporary files plus rename.&lt;/li&gt;
&lt;li&gt;Locked database connections to avoid concurrent write issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This architecture suggests the project is not a simple script, but a desktop tool designed for long-term use.&lt;/p&gt;
&lt;h2 id=&#34;who-it-is-for&#34;&gt;Who it is for
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; suits these users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People who use Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw together.&lt;/li&gt;
&lt;li&gt;People who frequently switch between official accounts, third-party relays, local models, or team Providers.&lt;/li&gt;
&lt;li&gt;Users already making heavy use of MCP.&lt;/li&gt;
&lt;li&gt;Teams that want to maintain &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;AGENTS.md&lt;/code&gt;, and &lt;code&gt;GEMINI.md&lt;/code&gt; in one place.&lt;/li&gt;
&lt;li&gt;Users who often install, test, and migrate Skills.&lt;/li&gt;
&lt;li&gt;People who want to view session history and usage across different tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only use one AI coding tool, rely on official login, and rarely touch Providers, MCP, or Skills, its value may not be obvious.&lt;/p&gt;
&lt;p&gt;But if you have already entered a &amp;ldquo;many tools, many accounts, many Providers, many projects&amp;rdquo; state, it can remove a lot of repetitive configuration work.&lt;/p&gt;
&lt;h2 id=&#34;what-to-watch-out-for&#34;&gt;What to watch out for
&lt;/h2&gt;&lt;p&gt;Tools like this are convenient, but they also need clear boundaries.&lt;/p&gt;
&lt;p&gt;First, it manages configuration for multiple AI CLIs, so users should be sure they trust the tool and its write logic.&lt;/p&gt;
&lt;p&gt;Second, API keys, relay endpoints, and MCP servers are all sensitive configuration. Before enabling cloud sync, make sure the sync folder and WebDAV service are secure and trustworthy.&lt;/p&gt;
&lt;p&gt;Third, after switching Providers, most tools still need the terminal or CLI to be restarted before changes take effect. The README mentions that Claude Code supports hot-switching Provider data, but other tools usually still require a restart.&lt;/p&gt;
&lt;p&gt;Fourth, when switching back to official login, it is better to add the official provider according to the project instructions and then rerun the corresponding tool&amp;rsquo;s login flow.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;CC Switch&lt;/code&gt; is not that it creates yet another AI coding tool. Its value is that it acknowledges a reality: the AI coding ecosystem has entered a stage where multiple tools coexist.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, Gemini CLI, OpenCode, and OpenClaw each have their own configuration systems, while MCP, Skills, Prompts, and Providers are expanding quickly. Continuing to edit configuration files by hand will eventually become a burden.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CC Switch&lt;/code&gt; pulls these pieces into one desktop app, making it easier to switch Providers, sync MCP, manage Skills, maintain prompt files, and view sessions. For heavy AI coding users, tools like this may move from &amp;ldquo;optional utility&amp;rdquo; to &amp;ldquo;daily infrastructure&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 Beginner Guide: Installation, Sandbox, Parallel Tasks, Skills, and MCP</title>
        <link>https://knightli.com/en/2026/05/06/codex-app-complete-guide-skills-mcp/</link>
        <pubDate>Wed, 06 May 2026 08:41:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/06/codex-app-complete-guide-skills-mcp/</guid>
        <description>&lt;p&gt;Codex App can be understood as a task workspace for AI coding. It is not a traditional IDE, nor just a chat window. It brings multitasking, project management, sandbox permissions, Git, cloud execution, plugins, Skills, MCP, and automation into one interface.&lt;/p&gt;
&lt;p&gt;If you already use Codex CLI, Claude Code, Cursor, or other coding agents, the most interesting part of Codex App is that it turns &amp;ldquo;running multiple agents in parallel&amp;rdquo; into a clearer desktop workflow.&lt;/p&gt;
&lt;h2 id=&#34;what-codex-app-is-good-for&#34;&gt;What Codex App Is Good For
&lt;/h2&gt;&lt;p&gt;The core value of Codex App is not answering questions, but letting AI continuously execute tasks inside a project directory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit code, run commands, and start development servers.&lt;/li&gt;
&lt;li&gt;Manage multiple projects and multiple tasks.&lt;/li&gt;
&lt;li&gt;Run long tasks locally or in the cloud.&lt;/li&gt;
&lt;li&gt;Call plugins, Skills, and MCP for extended capabilities.&lt;/li&gt;
&lt;li&gt;Manage changes through Git, worktree, and PR workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI also positions Codex App as an interface for managing multiple coding agents. It is suitable for people who need to advance several coding tasks at once, especially frontend pages, scripts, small apps, documentation, and automation workflows.&lt;/p&gt;
&lt;h2 id=&#34;preparation-before-installation&#34;&gt;Preparation Before Installation
&lt;/h2&gt;&lt;p&gt;Before using Codex App, it is best to prepare three basic tools:&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; or your preferred IDE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Codex App supports macOS and Windows. After installation, sign in with your ChatGPT account. On first launch, you can choose your main usage scenario, such as programming or daily work. Codex will preload some plugins and Skills based on your choices, and you can adjust them later in settings and the plugin marketplace.&lt;/p&gt;
&lt;p&gt;The main features on Windows and macOS are broadly similar, but some computer automation capabilities may depend on platform and plugin support. Use whatever your current version actually displays.&lt;/p&gt;
&lt;h2 id=&#34;interface-structure-projects-tasks-and-chats&#34;&gt;Interface Structure: Projects, Tasks, and Chats
&lt;/h2&gt;&lt;p&gt;Codex App uses a classic three-column layout:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Left: projects, tasks, chat history, plugins, and automation entry points.&lt;/li&gt;
&lt;li&gt;Middle: current chat window.&lt;/li&gt;
&lt;li&gt;Right: files, browser, terminal, run results, and other panels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A project usually corresponds to a local folder. You can open multiple chats inside the same project, or open several projects at once so different agents can work in parallel.&lt;/p&gt;
&lt;p&gt;The task list shows different states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running: the agent is still executing.&lt;/li&gt;
&lt;li&gt;Waiting for approval: you need to confirm permissions, networking, dependency installation, or a high-risk action.&lt;/li&gt;
&lt;li&gt;Completed: the task has finished, and you can inspect the result or continue asking.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more intuitive than switching between multiple terminal windows, and it is better suited to managing several AI tasks at once.&lt;/p&gt;
&lt;h2 id=&#34;sandbox-and-permission-control&#34;&gt;Sandbox and Permission Control
&lt;/h2&gt;&lt;p&gt;Codex App&amp;rsquo;s permission system is built around the sandbox. By default, the current project folder becomes the agent&amp;rsquo;s main workspace.&lt;/p&gt;
&lt;p&gt;Common permission boundaries include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can read and modify files inside the project directory.&lt;/li&gt;
&lt;li&gt;It cannot freely modify files outside the project by default.&lt;/li&gt;
&lt;li&gt;Networking or high-risk commands are restricted by default.&lt;/li&gt;
&lt;li&gt;When elevated access is needed, it asks the user for approval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A practical mode is &amp;ldquo;auto review&amp;rdquo;: low-risk actions are automatically allowed, while high-risk actions are still confirmed by the user. This reduces frequent pop-ups while keeping dangerous operations from happening silently.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Full access&amp;rdquo; should be enabled cautiously. It is suitable when you know exactly what the agent needs to do and the project already has Git backups and important files have separate backups. It is not recommended as a long-term daily default.&lt;/p&gt;
&lt;h2 id=&#34;context-models-and-quotas&#34;&gt;Context, Models, and Quotas
&lt;/h2&gt;&lt;p&gt;Codex App shows the current chat&amp;rsquo;s context usage. The longer the conversation and the more history it contains, the more context the model needs to process.&lt;/p&gt;
&lt;p&gt;Useful habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start a new chat after finishing a task.&lt;/li&gt;
&lt;li&gt;Long chats can be compressed manually, but do not treat compression as perfect memory.&lt;/li&gt;
&lt;li&gt;For complex tasks, clearly state goals, boundaries, and acceptance criteria.&lt;/li&gt;
&lt;li&gt;Do not dump large irrelevant logs, errors, or files into a chat all at once.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For model selection, adjust reasoning strength according to task complexity. Simple edits, writing, and repetitive tasks do not always need the strongest model. Architecture migration, difficult bugs, and cross-file refactors are better suited to stronger models.&lt;/p&gt;
&lt;p&gt;If the interface has a fast mode, remember that it usually consumes more quota. Use it when speed matters, but not as a daily default.&lt;/p&gt;
&lt;h2 id=&#34;image-generation-and-multimodal-inputs&#34;&gt;Image Generation and Multimodal Inputs
&lt;/h2&gt;&lt;p&gt;Codex App can accept images and files as context, and can call image generation in suitable scenarios.&lt;/p&gt;
&lt;p&gt;This is useful for frontend and content projects. For example, you can ask Codex to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix page styles based on screenshots.&lt;/li&gt;
&lt;li&gt;Replace unsuitable images in a webpage.&lt;/li&gt;
&lt;li&gt;Generate product images, carousel images, or page assets.&lt;/li&gt;
&lt;li&gt;Point out what needs to be changed from a UI screenshot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A more efficient approach is not to say only &amp;ldquo;make it look better&amp;rdquo;, but to use screenshots and point to concrete problems, such as &amp;ldquo;the spacing in this card is too large&amp;rdquo;, &amp;ldquo;this image does not match the service scene&amp;rdquo;, or &amp;ldquo;make the map area clearer&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;steer-correcting-direction-during-execution&#34;&gt;Steer: Correcting Direction During Execution
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Steer&lt;/code&gt; can be understood as taking over the direction during execution. If the agent has already started but you realize it misunderstood the direction, you should not always wait for it to finish before correcting it.&lt;/p&gt;
&lt;p&gt;You can use steering to insert a new instruction into the current execution flow and make Codex correct course.&lt;/p&gt;
&lt;p&gt;Good use cases for Steer include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The agent misunderstood the requirement.&lt;/li&gt;
&lt;li&gt;The generated page style is clearly wrong.&lt;/li&gt;
&lt;li&gt;The current plan is too expensive or heavy.&lt;/li&gt;
&lt;li&gt;You need to add a key constraint temporarily.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general, keep the default queued behavior and manually use Steer only when intervention is needed. This avoids disrupting normal tasks while still letting you pull the direction back at key moments.&lt;/p&gt;
&lt;h2 id=&#34;plan-mode-and-built-in-browser&#34;&gt;Plan Mode and Built-In Browser
&lt;/h2&gt;&lt;p&gt;For complex tasks, start with plan mode. In plan mode, Codex does not immediately modify code. It first outputs a plan and may ask key questions with cards.&lt;/p&gt;
&lt;p&gt;Tasks suitable for plan mode include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Framework migration, such as moving a React project to Next.js.&lt;/li&gt;
&lt;li&gt;Large refactors.&lt;/li&gt;
&lt;li&gt;Features involving databases, authentication, or deployment.&lt;/li&gt;
&lt;li&gt;Requirements where you have not decided the technical path.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The right panel in Codex App can open a built-in browser to preview the local development server. You can annotate the page and let Codex modify a specific UI location. This &amp;ldquo;look at the page, click the position, ask AI to change it&amp;rdquo; workflow is often better for frontend debugging than pure text descriptions.&lt;/p&gt;
&lt;h2 id=&#34;git-ide-and-code-rollback&#34;&gt;Git, IDE, and Code Rollback
&lt;/h2&gt;&lt;p&gt;Codex App is not a full IDE. It can view code and add annotations, but handwritten editing is still better done in VS Code, Cursor, Windsurf, or another IDE.&lt;/p&gt;
&lt;p&gt;Every Codex project should initialize Git early:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask Codex to create or check &lt;code&gt;.gitignore&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Commit once after reaching a usable state.&lt;/li&gt;
&lt;li&gt;Ensure a clean commit point before each large change.&lt;/li&gt;
&lt;li&gt;Roll back with Git if you are not satisfied.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you roll back only the chat history, the code will not automatically roll back. A safer approach is to return the chat to the right point, then use a Git commit hash to return the code to the corresponding state.&lt;/p&gt;
&lt;h2 id=&#34;worktree-parallel-development-in-multiple-directions&#34;&gt;Worktree: Parallel Development in Multiple Directions
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; is especially suitable for parallel agents in Codex App.&lt;/p&gt;
&lt;p&gt;It creates multiple independent working directories from the same repository, each corresponding to a different branch. This lets different agents work in different folders at the same time without overwriting each other.&lt;/p&gt;
&lt;p&gt;Typical usage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One worktree optimizes the customer review component.&lt;/li&gt;
&lt;li&gt;One worktree adjusts store information and map layout.&lt;/li&gt;
&lt;li&gt;Merge both tasks back to main after completion.&lt;/li&gt;
&lt;li&gt;Remove temporary worktrees after merging.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is much safer than letting multiple agents modify code in the same directory. If conflicts happen, review and merge them using normal Git workflows.&lt;/p&gt;
&lt;h2 id=&#34;cloud-execution-environment&#34;&gt;Cloud Execution Environment
&lt;/h2&gt;&lt;p&gt;Codex can work not only on your local machine, but also in a cloud environment.&lt;/p&gt;
&lt;p&gt;Cloud execution is suitable when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are outside and only have a phone.&lt;/li&gt;
&lt;li&gt;You want agents to run long tasks in the background.&lt;/li&gt;
&lt;li&gt;The code has already been synced to GitHub and Codex needs to modify the remote repository.&lt;/li&gt;
&lt;li&gt;You want changes reviewed and merged through PRs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A typical flow is: push local code to GitHub, let Codex pull the repository in a cloud environment, execute the task, generate changes, then present them as a PR or diff for review.&lt;/p&gt;
&lt;p&gt;When continuing local development, remember to pull down the latest remote changes.&lt;/p&gt;
&lt;h2 id=&#34;memory-system-write-a-good-agentsmd&#34;&gt;Memory System: Write a Good AGENTS.md
&lt;/h2&gt;&lt;p&gt;New chats do not have complete historical memory by default. Once a project becomes complex, repeatedly explaining the background is inefficient.&lt;/p&gt;
&lt;p&gt;The most general solution is to maintain &lt;code&gt;AGENTS.md&lt;/code&gt; in the project root. This file can record:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project goals and main tech stack.&lt;/li&gt;
&lt;li&gt;Common commands.&lt;/li&gt;
&lt;li&gt;Directory structure.&lt;/li&gt;
&lt;li&gt;Code style and naming conventions.&lt;/li&gt;
&lt;li&gt;Prohibited actions, such as bulk deleting files.&lt;/li&gt;
&lt;li&gt;Test, build, and deployment rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also ask Codex to read the project and generate a first version of &lt;code&gt;AGENTS.md&lt;/code&gt;, then review it manually. For complex projects, this file is worth maintaining.&lt;/p&gt;
&lt;p&gt;Global rules should be used carefully. They are suitable for universal safety constraints, such as &amp;ldquo;do not recursively delete directories&amp;rdquo; or &amp;ldquo;confirm before destructive operations&amp;rdquo;. Do not put project-specific details into global rules, or they will pollute other projects.&lt;/p&gt;
&lt;h2 id=&#34;plugins-and-automations&#34;&gt;Plugins and Automations
&lt;/h2&gt;&lt;p&gt;Plugins connect Codex to external services such as GitHub, Gmail, Google Drive, databases, and deployment platforms.&lt;/p&gt;
&lt;p&gt;Their value is reducing copy and paste. For example, Codex can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check star trends for a GitHub repository.&lt;/li&gt;
&lt;li&gt;Summarize email content and send it to you.&lt;/li&gt;
&lt;li&gt;Run a recurring check.&lt;/li&gt;
&lt;li&gt;Write the result as a summary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Automations are suitable for repeated tasks. For example, checking repository data every Friday afternoon and sending an email report. Simple automation tasks usually do not require the strongest model; a lighter model is enough.&lt;/p&gt;
&lt;h2 id=&#34;skills-turn-workflows-into-reusable-capabilities&#34;&gt;Skills: Turn Workflows Into Reusable Capabilities
&lt;/h2&gt;&lt;p&gt;Skills are &amp;ldquo;professional playbooks&amp;rdquo; for Codex. They are not one-off prompts. They package a task flow, rules, scripts, and notes so Codex can reuse them reliably later.&lt;/p&gt;
&lt;p&gt;Common sources include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Official Skills.&lt;/li&gt;
&lt;li&gt;Third-party Skills.&lt;/li&gt;
&lt;li&gt;Skills you write yourself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Good candidates for Skills include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turning subtitles into illustrated notes.&lt;/li&gt;
&lt;li&gt;Writing weekly reports in a company format.&lt;/li&gt;
&lt;li&gt;Batch-processing images or documents.&lt;/li&gt;
&lt;li&gt;Fixed-format code reviews.&lt;/li&gt;
&lt;li&gt;Project initialization for a specific framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have copied and pasted the same prompt many times, it is worth turning it into a Skill.&lt;/p&gt;
&lt;h2 id=&#34;mcp-connect-external-tools-and-databases&#34;&gt;MCP: Connect External Tools and Databases
&lt;/h2&gt;&lt;p&gt;MCP can be understood as a standardized tool protocol for large models. Through MCP, Codex can call external services to complete more concrete tasks.&lt;/p&gt;
&lt;p&gt;For example, after connecting Supabase, Codex can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create database tables.&lt;/li&gt;
&lt;li&gt;Read database schemas.&lt;/li&gt;
&lt;li&gt;Modify backend endpoints.&lt;/li&gt;
&lt;li&gt;Submit frontend forms to the database.&lt;/li&gt;
&lt;li&gt;Debug problems based on database state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is powerful, but permissions matter. Databases, production environments, deployment platforms, and email accounts are high-risk resources. When connecting for the first time, use a test project and a low-privilege account.&lt;/p&gt;
&lt;h2 id=&#34;deployment-plugins&#34;&gt;Deployment Plugins
&lt;/h2&gt;&lt;p&gt;Deployment platform plugins can let Codex complete builds and releases directly, such as deploying a frontend project to Netlify.&lt;/p&gt;
&lt;p&gt;These plugins are suitable for small websites, prototypes, internal tools, and demo projects. In real use, pay attention to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run a local build before deployment.&lt;/li&gt;
&lt;li&gt;Do not write environment variables directly into code.&lt;/li&gt;
&lt;li&gt;Check whether the page opens normally after publishing.&lt;/li&gt;
&lt;li&gt;Keep human review for production projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI can help connect the deployment flow, but deployment permissions should still be managed carefully.&lt;/p&gt;
&lt;h2 id=&#34;computer-automation&#34;&gt;Computer Automation
&lt;/h2&gt;&lt;p&gt;With supported platforms and plugin environments, Codex can also operate browsers or desktop apps, completing tasks closer to RPA.&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open a chat app and prepare a message.&lt;/li&gt;
&lt;li&gt;Browse a project board and summarize task status.&lt;/li&gt;
&lt;li&gt;Generate an English brief.&lt;/li&gt;
&lt;li&gt;Send it to a specified recipient after you confirm.&lt;/li&gt;
&lt;li&gt;Turn the flow into a scheduled automation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities are imaginative, but they require the strongest safety boundaries. Any operation involving sending messages, sending email, submitting forms, payments, or deleting data should retain human confirmation.&lt;/p&gt;
&lt;h2 id=&#34;usage-suggestions&#34;&gt;Usage Suggestions
&lt;/h2&gt;&lt;p&gt;The right way to use Codex App is not to let it fully take over everything at once, but to break tasks down and let it execute efficiently in a controlled environment.&lt;/p&gt;
&lt;p&gt;Recommended habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Initialize Git for every project.&lt;/li&gt;
&lt;li&gt;Use plan mode for complex tasks.&lt;/li&gt;
&lt;li&gt;Use worktree for parallel tasks.&lt;/li&gt;
&lt;li&gt;Put project rules in &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Keep human confirmation for high-risk actions.&lt;/li&gt;
&lt;li&gt;Turn repeated workflows into Skills or automations.&lt;/li&gt;
&lt;li&gt;Validate plugins and MCP in a test environment first.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Codex App is not &amp;ldquo;one more AI chat window&amp;rdquo;. Its focus is turning AI coding into a manageable workspace where local projects, cloud tasks, Git, worktree, plugins, Skills, MCP, and automation can connect.&lt;/p&gt;
&lt;p&gt;The key to using it well is balancing freedom and control. Small tasks can be handed to Codex boldly. Complex tasks should start with a plan. High-risk actions must be confirmed. Used this way, Codex can become not just a code-writing assistant, but a long-term engineering tool.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Hermes &#43; Qwen3.6: A Low-Cost Local Agent Deployment</title>
        <link>https://knightli.com/en/2026/05/04/hermes-qwen36-local-agent/</link>
        <pubDate>Mon, 04 May 2026 06:40:30 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/04/hermes-qwen36-local-agent/</guid>
        <description>&lt;p&gt;This article documents a local Agent deployment plan: run a Qwen3.6 GGUF model with &lt;code&gt;llama.cpp&lt;/code&gt; inside WSL2, then connect Hermes Agent to the local OpenAI-compatible API. This gives you a long-running local AI assistant on your own computer, without paying by online service Token usage.&lt;/p&gt;
&lt;p&gt;This setup is suitable for users who want to try local AI Agents while keeping data private and controllable over the long term. It can be used for daily Q&amp;amp;A, writing, coding assistance, document organization, and simple automation tasks. The larger the model, the higher the VRAM requirement. The original example uses Qwen3.6-27B, and 24GB VRAM is more stable. If your VRAM is smaller, choose a smaller model or a lower quantization.&lt;/p&gt;
&lt;h2 id=&#34;architecture&#34;&gt;Architecture
&lt;/h2&gt;&lt;p&gt;The overall chain is simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install WSL2 and Ubuntu 24.04 on Windows.&lt;/li&gt;
&lt;li&gt;Install CUDA Toolkit inside WSL2 and compile &lt;code&gt;llama.cpp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Download the Qwen3.6 GGUF model.&lt;/li&gt;
&lt;li&gt;Start a local model service with &lt;code&gt;llama-server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install Hermes Agent and configure it to &lt;code&gt;http://localhost:8080/v1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Optional: write a startup script so the model service starts automatically when WSL2 opens.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hermes provides the Agent capability, while Qwen3.6 provides the local LLM capability. Together, they turn the computer into a private local AI assistant.&lt;/p&gt;
&lt;h2 id=&#34;install-wsl2-and-ubuntu&#34;&gt;Install WSL2 and Ubuntu
&lt;/h2&gt;&lt;p&gt;Run in an administrator Windows PowerShell window:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;After rebooting, install 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;After installation, Ubuntu prompts you to set a username and password. Once inside Ubuntu, first check whether the NVIDIA GPU is visible in 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;If the GPU cannot be detected, update the NVIDIA driver on Windows first. WSL2 inherits the Windows driver, but CUDA Toolkit still needs to be installed separately inside WSL2.&lt;/p&gt;
&lt;h2 id=&#34;install-python-and-basic-tools&#34;&gt;Install Python and Basic Tools
&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;You also need build tools, Git, and 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;compile-llamacpp&#34;&gt;Compile llama.cpp
&lt;/h2&gt;&lt;p&gt;Clone the repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;If CUDA is already available in WSL2, compile directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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; is suitable for Ada GPUs, such as RTX 40 series cards. Adjust it according to your actual GPU architecture.&lt;/p&gt;
&lt;p&gt;If compilation reports that CUDA Toolkit is missing, install CUDA Toolkit inside WSL2 first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Configure environment variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Then rebuild:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;download-the-qwen36-gguf-model&#34;&gt;Download the Qwen3.6 GGUF Model
&lt;/h2&gt;&lt;p&gt;The example uses &lt;code&gt;Qwen3.6-27B-UD-Q4_K_XL.gguf&lt;/code&gt; from &lt;code&gt;unsloth/Qwen3.6-27B-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;The file is about 17GB. If Hugging Face is slow, use a mirror such as ModelScope. Do not force a 27B model if your VRAM is insufficient; use a smaller model or lower quantization.&lt;/p&gt;
&lt;h2 id=&#34;start-the-local-model-service&#34;&gt;Start the Local Model Service
&lt;/h2&gt;&lt;p&gt;Start &lt;code&gt;llama-server&lt;/code&gt; with your own model file name:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;After startup, open this in a Windows browser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For Hermes Agent or other OpenAI-compatible clients, the API endpoint is usually:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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-mode-tradeoff&#34;&gt;Thinking Mode Tradeoff
&lt;/h2&gt;&lt;p&gt;Qwen3.6 may enable Thinking mode by default. It is suitable for complex reasoning, complicated coding problems, and multi-step analysis, but it is slower.&lt;/p&gt;
&lt;p&gt;To disable Thinking mode, stop the service and add &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;After disabling Thinking, simple Q&amp;amp;A, writing, code completion, and code explanation become faster. For complex algorithm design, difficult debugging, and architecture analysis, Thinking mode is still recommended.&lt;/p&gt;
&lt;h2 id=&#34;install-hermes-agent&#34;&gt;Install Hermes Agent
&lt;/h2&gt;&lt;p&gt;Keep &lt;code&gt;llama-server&lt;/code&gt; running, then open a new WSL2 terminal and install 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;The installer handles dependencies such as Python, Node.js, ripgrep, and ffmpeg. When configuring the model endpoint, choose a custom 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: auto-detect
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For a local &lt;code&gt;llama-server&lt;/code&gt;, the API Key can be any placeholder value. After configuration, you can connect Telegram, WeChat, QQ, Discord, and other chat tools, allowing Hermes Agent to call the local model and execute tasks from those entry points.&lt;/p&gt;
&lt;h2 id=&#34;auto-start-the-model-service&#34;&gt;Auto-Start the Model Service
&lt;/h2&gt;&lt;p&gt;You can write a startup script so the model service starts automatically when a WSL2 terminal opens.&lt;/p&gt;
&lt;p&gt;Create the script:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Write it into &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;Each time you open a WSL2 terminal, it will start &lt;code&gt;llama-server&lt;/code&gt; if it is not already running. If it is running, it skips startup and avoids duplicate processes.&lt;/p&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;27B models require substantial VRAM; 24GB VRAM is more stable. Use a smaller model if VRAM is limited.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ctx-size 65536&lt;/code&gt; significantly increases VRAM and RAM pressure. If unstable, reduce it to &lt;code&gt;32768&lt;/code&gt; or lower.&lt;/li&gt;
&lt;li&gt;Both CUDA Toolkit in WSL2 and the Windows GPU driver must work properly. Either side can cause CUDA compilation or runtime failures.&lt;/li&gt;
&lt;li&gt;Hermes Agent calls the local service through an OpenAI-compatible API. The key is that &lt;code&gt;http://localhost:8080/v1&lt;/code&gt; responds correctly.&lt;/li&gt;
&lt;li&gt;If accessing from a phone or another device, handle Windows Firewall, LAN addresses, and security isolation. Do not expose the local model service directly to the public internet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Original article: &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 example: &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: Putting Text, Images, Video, and Audio in One Vector Space</title>
        <link>https://knightli.com/en/2026/05/04/gemini-embedding-2-multimodal-rag/</link>
        <pubDate>Mon, 04 May 2026 06:01:10 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/04/gemini-embedding-2-multimodal-rag/</guid>
        <description>&lt;p&gt;Google Developers Blog introduced how to build with Gemini Embedding 2. The model is now generally available through the Gemini API and Gemini Enterprise Agent Platform. The important point is not simply that it is a new embedding model, but that it maps text, images, video, audio, and documents into the same semantic space.&lt;/p&gt;
&lt;p&gt;This broadens what retrieval systems can handle. Many RAG pipelines previously had to convert images, video, or audio into text or metadata before indexing them separately. Gemini Embedding 2 can process multimodal inputs directly, making it easier for agents, search systems, and classifiers to work with real business materials.&lt;/p&gt;
&lt;p&gt;Original article: &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;model-capabilities&#34;&gt;Model Capabilities
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 supports more than 100 languages. A single request can process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Up to 8,192 text tokens&lt;/li&gt;
&lt;li&gt;Up to 6 images&lt;/li&gt;
&lt;li&gt;Up to 120 seconds of video&lt;/li&gt;
&lt;li&gt;Up to 180 seconds of audio&lt;/li&gt;
&lt;li&gt;Up to 6 pages of PDF&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its key idea is a unified semantic space. Developers can place content from different modalities into one vector representation system, then use the same retrieval, clustering, or reranking logic to process it.&lt;/p&gt;
&lt;p&gt;For example, a text description and an image can be included in the same embedding request:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;If you want a separate embedding for each input rather than one aggregated vector, you can use the Batch API. The original article also notes that Agent Platform support for this kind of batch workflow is still in progress.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-rag&#34;&gt;What It Means for RAG
&lt;/h2&gt;&lt;p&gt;Multimodal embeddings are useful for agentic RAG. An AI agent may need to inspect a code repository, PDFs, screenshots, charts, audio meeting notes, and product images at the same time. If all of these materials can enter the same semantic space, the retrieval pipeline no longer needs a separate entry point for every format.&lt;/p&gt;
&lt;p&gt;Google recommends using task prefixes according to the goal of the task, so the embeddings better match the retrieval objective. For example, question answering, fact checking, code retrieval, and search results can use different prefixes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;This kind of prefix is suitable for asymmetric retrieval: user queries are often short, while documents are often long. Formatting &lt;code&gt;query&lt;/code&gt; and &lt;code&gt;document&lt;/code&gt; differently for the task can improve matching between short queries and long documents.&lt;/p&gt;
&lt;p&gt;The original article gives two real-world examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Harvey saw a 3% increase in Recall@20 precision on legal retrieval benchmarks compared with its previous embeddings.&lt;/li&gt;
&lt;li&gt;Supermemory saw a 40% increase in Recall@1 search accuracy and uses it across memory, indexing, search, and Q&amp;amp;A pipelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These numbers do not mean every scenario will improve by the same amount, but they show that multimodal embeddings are already producing results in real retrieval products, not only demos.&lt;/p&gt;
&lt;h2 id=&#34;visual-search&#34;&gt;Visual Search
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 is also suitable for image-to-image search, image-text hybrid search, and product identification. The original article mentions Nuuly, URBN&amp;rsquo;s clothing rental company, using it to match photos of untagged garments in warehouses against its catalog. Match@20 improved from 60% to nearly 87%, and the overall successful identification rate rose from 74% to over 90%.&lt;/p&gt;
&lt;p&gt;The point in this type of scenario is not content generation, but understanding which inventory item, document, or product record is closest to a given image. If your business has many images, video clips, or scanned documents, multimodal embeddings can be more natural than text-only indexing.&lt;/p&gt;
&lt;h2 id=&#34;search-reranking&#34;&gt;Search Reranking
&lt;/h2&gt;&lt;p&gt;Embeddings can also be used for reranking. A common approach is to first retrieve a set of candidate results, then calculate the similarity between each candidate and the user&amp;rsquo;s query, pushing more relevant content to the top:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;The original article also mentions another idea: first ask the model to generate a baseline hypothetical answer from its internal knowledge, embed that answer, and compare it with candidate content to find the most semantically relevant result. This is especially useful for Q&amp;amp;A-style RAG.&lt;/p&gt;
&lt;h2 id=&#34;clustering-classification-and-anomaly-detection&#34;&gt;Clustering, Classification, and Anomaly Detection
&lt;/h2&gt;&lt;p&gt;Beyond retrieval, embeddings are also useful for clustering, classification, and anomaly detection. Unlike the asymmetric question-answering retrieval above, these are symmetric tasks, where the same task prefix can be used for both query and document:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;These tasks can be used for sentiment classification, content moderation, similar asset grouping, and anomaly discovery. They can also help agents organize large amounts of context before moving into later reasoning steps.&lt;/p&gt;
&lt;h2 id=&#34;storage-and-cost&#34;&gt;Storage and Cost
&lt;/h2&gt;&lt;p&gt;Gemini Embedding 2 outputs 3,072-dimensional vectors by default. It uses Matryoshka Representation Learning, so vectors can be truncated to smaller dimensions with &lt;code&gt;output_dimensionality&lt;/code&gt;. Google recommends 1,536 or 768 dimensions when efficiency is the priority:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Vectors can be stored in Agent Platform Vector Search, Pinecone, Weaviate, Qdrant, ChromaDB, and similar systems. For cost, the original article notes that the Batch API provides higher throughput and reaches 50% of the default embedding price.&lt;/p&gt;
&lt;h2 id=&#34;how-developers-can-use-it&#34;&gt;How Developers Can Use It
&lt;/h2&gt;&lt;p&gt;If you already have text-based RAG, you can start with two incremental upgrades:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Put PDFs, screenshots, image descriptions, and text documents into the same index, then test whether retrieval recall becomes more stable.&lt;/li&gt;
&lt;li&gt;Add task prefixes for different tasks, such as question answering, fact checking, code retrieval, and product search. Do not process all content with the same embedding format.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you are building a new product, consider these directions first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enterprise knowledge bases: retrieve documents, charts, presentation screenshots, and meeting materials together.&lt;/li&gt;
&lt;li&gt;Visual search: use images, text, or mixed inputs to find products, assets, design drafts, and archives.&lt;/li&gt;
&lt;li&gt;Agent toolchains: let coding agents, research agents, or customer support agents retrieve business materials in multiple formats.&lt;/li&gt;
&lt;li&gt;Content governance: classify, cluster, and detect anomalies across text, images, and video clips.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value of Gemini Embedding 2 is that it turns multimodal materials into one searchable asset system. For developers, this reduces the need for an intermediate &amp;ldquo;convert to text, then retrieve&amp;rdquo; layer and makes RAG systems closer to the shape of real-world data.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: Ad Creative Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;Ad Creative&lt;/code&gt; cases: 19 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ad-creative&#34;&gt;Ad Creative
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: Character Design Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;Character Design&lt;/code&gt; cases: 13 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;character-design&#34;&gt;Character Design
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: Comparisons and Community Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;Comparisons and Community Cases&lt;/code&gt; cases: 48 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;comparisons-and-community-cases&#34;&gt;Comparisons and Community Cases
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: E-commerce Hero Image Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;E-commerce Hero Images&lt;/code&gt; cases: 20 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;e-commerce-hero-images&#34;&gt;E-commerce Hero Images
&lt;/h2&gt;&lt;h3 id=&#34;e-commerce-hero-images---奢华琥珀香水广告&#34;&gt;E-commerce Hero Images - 奢华琥珀香水广告
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---护肤品棚拍图&#34;&gt;E-commerce Hero Images - 护肤品棚拍图
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---热带柑橘汽水广告海报&#34;&gt;E-commerce Hero Images - 热带柑橘汽水广告海报
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---工业设计展示图&#34;&gt;E-commerce Hero Images - 工业设计展示图
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;e-commerce-hero-images---奢华毛里乐福鞋生活方式照片&#34;&gt;E-commerce Hero Images - 奢华毛里乐福鞋生活方式照片
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---大理石梳妆台香水广告&#34;&gt;E-commerce Hero Images - 大理石梳妆台香水广告
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---微缩场景护肤品广告&#34;&gt;E-commerce Hero Images - 微缩场景护肤品广告
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---中国传统艺术与瓷瓶&#34;&gt;E-commerce Hero Images - 中国传统艺术与瓷瓶
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;e-commerce-hero-images---高端游戏主板棚拍图&#34;&gt;E-commerce Hero Images - 高端游戏主板棚拍图
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---高端谷物粉广告板&#34;&gt;E-commerce Hero Images - 高端谷物粉广告板
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---耳机电商信息图&#34;&gt;E-commerce Hero Images - 耳机电商信息图
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;e-commerce-hero-images---可持续-t-恤种植吊牌广告&#34;&gt;E-commerce Hero Images - 可持续 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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---优雅化妆品海报提示词&#34;&gt;E-commerce Hero Images - 优雅化妆品海报提示词
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---极简产品广告pure-crunch&#34;&gt;E-commerce Hero Images - 极简产品广告：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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;e-commerce-hero-images---浅蓝-crocs-时尚广告&#34;&gt;E-commerce Hero Images - 浅蓝 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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;e-commerce-hero-images---九宫格产品-tvc-分镜&#34;&gt;E-commerce Hero Images - 九宫格产品 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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: E-commerce, Posters, Portraits, and UI</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/</guid>
        <description>&lt;p&gt;This is an index for a set of GPT Image 2 prompt cases. The original collection is large enough that a single page would be too long, so it is split into several pages by internal category.&lt;/p&gt;
&lt;h2 id=&#34;category-navigation&#34;&gt;Category Navigation
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Category&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Cases&lt;/th&gt;
          &lt;th&gt;Page&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;E-commerce Hero Images&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/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Image Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ad Creative&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/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Portrait Photography&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/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Poster Illustration&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/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Character Design&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/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI and Social Media&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/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Comparisons and Community Cases&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/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;E-commerce hero image cases&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;Ad creative cases&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;Portrait photography cases&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;Poster illustration cases&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;Character design cases&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 and social media cases&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;Comparisons and community cases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: Portrait Photography Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;Portrait Photography&lt;/code&gt; cases: 55 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;portrait-photography&#34;&gt;Portrait Photography
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: Poster Illustration Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;Poster Illustration&lt;/code&gt; cases: 101 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;poster-illustration&#34;&gt;Poster Illustration
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>GPT-Image 2 Prompt Library: UI and Social Media Cases</title>
        <link>https://knightli.com/en/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/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/</guid>
        <description>&lt;p&gt;This page collects &lt;code&gt;UI and Social Media&lt;/code&gt; cases: 56 examples in total. Each entry keeps the original case link, author, generated image, and complete prompt.&lt;/p&gt;
&lt;p&gt;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ui-and-social-media&#34;&gt;UI and Social Media
&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Original case&lt;/a&gt; / Author: &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;Full prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Category navigation: &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Index&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ecommerce-cases/&#34; &gt;E-commerce Hero Images&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ad-creative-cases/&#34; &gt;Ad Creative&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-portrait-cases/&#34; &gt;Portrait Photography&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-poster-cases/&#34; &gt;Poster Illustration&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-character-cases/&#34; &gt;Character Design&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-ui-social-cases/&#34; &gt;UI and Social Media&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/05/02/awesome-gpt-image-2-prompts-comparison-community-cases/&#34; &gt;Comparisons and Community Cases&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;original-repository-links&#34;&gt;Original Repository Links
&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;Project home&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;Original category file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>faster-whisper: A Faster Whisper Transcription Engine</title>
        <link>https://knightli.com/en/2026/05/01/faster-whisper-speech-to-text/</link>
        <pubDate>Fri, 01 May 2026 22:31:26 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/faster-whisper-speech-to-text/</guid>
        <description>&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; is a Whisper inference implementation maintained by SYSTRAN. It uses CTranslate2 as the backend, keeping the workflow close to Whisper while making inference speed, memory use, and deployment flexibility more suitable for engineering work.&lt;/p&gt;
&lt;p&gt;If you have used &lt;code&gt;openai/whisper&lt;/code&gt;, you can think of &lt;code&gt;faster-whisper&lt;/code&gt; as a more production-oriented alternative. The interface still centers on loading a model, transcribing audio, and reading segmented results, but the execution layer is faster and easier to tune around CPU, GPU, quantization, and batching.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What problem does it solve?
&lt;/h2&gt;&lt;p&gt;Whisper works well, but the original implementation often runs into a few issues when deployed directly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Long audio can take a noticeable amount of time to transcribe.&lt;/li&gt;
&lt;li&gt;GPU memory usage can be high.&lt;/li&gt;
&lt;li&gt;CPU execution works, but speed may not be ideal.&lt;/li&gt;
&lt;li&gt;Throughput is not always easy to scale when processing large batches of audio or video.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; mainly optimizes around these problems. Its README states that, with the same accuracy, it can be up to 4 times faster than &lt;code&gt;openai/whisper&lt;/code&gt; while using less memory. With 8-bit quantization, speed can improve further.&lt;/p&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;In a regular Python environment, install it directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want to use a GPU, make sure your local CUDA, cuDNN, and CTranslate2 versions are compatible. This is the easiest place to stumble: the code itself may be fine, but inference can fail when loading the model or running the first request if the GPU driver and CUDA runtime do not match.&lt;/p&gt;
&lt;h2 id=&#34;basic-usage&#34;&gt;Basic usage
&lt;/h2&gt;&lt;p&gt;The minimal example is straightforward:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;The key parameters are:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Parameter&lt;/th&gt;
          &lt;th&gt;Purpose&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;Selects the Whisper model size, such as &lt;code&gt;small&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, or &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;Inference device, commonly &lt;code&gt;cuda&lt;/code&gt; or &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;Compute precision, such as &lt;code&gt;float16&lt;/code&gt;, &lt;code&gt;int8_float16&lt;/code&gt;, or &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;Decoding search width; larger values are usually more stable but slower&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your goal is quick local transcription, start by testing &lt;code&gt;medium&lt;/code&gt; or &lt;code&gt;large-v3&lt;/code&gt;. If GPU memory is tight, then consider quantization.&lt;/p&gt;
&lt;h2 id=&#34;choosing-cpu-or-gpu&#34;&gt;Choosing CPU or GPU
&lt;/h2&gt;&lt;p&gt;With an NVIDIA GPU, prefer:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;If GPU memory is not enough, switch to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Without a GPU, run it on 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 mode is better for lightweight jobs, low-frequency background tasks, or servers without a graphics card. For a large amount of long audio, GPU is still the better fit.&lt;/p&gt;
&lt;h2 id=&#34;batched-transcription&#34;&gt;Batched transcription
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; also provides batched transcription. Batching is useful for many short audio files or when you need higher GPU throughput:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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; is not always better when larger. It improves throughput, but also increases GPU memory pressure. In practice, test values like 4, 8, and 16 step by step until you find a stable point for your machine.&lt;/p&gt;
&lt;h2 id=&#34;vad-and-word-level-timestamps&#34;&gt;VAD and word-level timestamps
&lt;/h2&gt;&lt;p&gt;Speech-to-text often has to deal with long silence, background noise, and subtitle alignment. &lt;code&gt;faster-whisper&lt;/code&gt; includes practical parameters that can be enabled directly during transcription.&lt;/p&gt;
&lt;p&gt;Enable 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;Get word-level timestamps:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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 is useful for meeting recordings, podcasts, and livestream replays that contain long silent sections. Word-level timestamps are useful for subtitles, transcript proofreading, and player-side word highlighting.&lt;/p&gt;
&lt;h2 id=&#34;choosing-a-model&#34;&gt;Choosing a model
&lt;/h2&gt;&lt;p&gt;Model choice mainly depends on accuracy, speed, and machine resources.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Scenario&lt;/th&gt;
          &lt;th&gt;Recommendation&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Quick testing&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;small&lt;/code&gt; or &lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Chinese content with quality as the priority&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;Tight GPU memory&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;int8_float16&lt;/code&gt; or a smaller model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CPU background tasks&lt;/td&gt;
          &lt;td&gt;Smaller model plus &lt;code&gt;int8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Many short audio files&lt;/td&gt;
          &lt;td&gt;Try &lt;code&gt;BatchedInferencePipeline&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For Chinese speech, start with &lt;code&gt;large-v3&lt;/code&gt; if quality matters. If the machine is under too much pressure, then lower the model size or use quantization. Do not look only at speed at the beginning; if transcription quality drops, the extra manual proofreading time may cancel out the inference time you saved.&lt;/p&gt;
&lt;h2 id=&#34;suitable-use-cases&#34;&gt;Suitable use cases
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;faster-whisper&lt;/code&gt; is well suited for:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Generating video subtitles.&lt;/li&gt;
&lt;li&gt;Transcribing podcasts, meetings, and course recordings.&lt;/li&gt;
&lt;li&gt;Building local transcription workflows for Bilibili, YouTube, and similar videos.&lt;/li&gt;
&lt;li&gt;Batch archiving and searching audio content.&lt;/li&gt;
&lt;li&gt;Feeding speech content into RAG, knowledge bases, or search systems.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It does not directly solve higher-level tasks such as speaker diarization, summarization, or chapter segmentation, but it can serve as a stable transcription layer. You can add pyannote for speaker diarization and an LLM for summarization and structured cleanup.&lt;/p&gt;
&lt;h2 id=&#34;deployment-suggestions&#34;&gt;Deployment suggestions
&lt;/h2&gt;&lt;p&gt;For real use, debug in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use a 1-to-3-minute audio clip to confirm the environment runs correctly.&lt;/li&gt;
&lt;li&gt;Test accuracy with samples that match your target language and audio quality.&lt;/li&gt;
&lt;li&gt;Check GPU memory usage before deciding whether to enable quantization.&lt;/li&gt;
&lt;li&gt;Split long audio first, so a failed task does not require rerunning everything.&lt;/li&gt;
&lt;li&gt;Save both TXT and SRT outputs to make later proofreading easier.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For server-side tasks, load the model during service startup instead of reloading it for every request. Model loading takes time, and frequent reloading can also make GPU memory management less stable.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;faster-whisper&lt;/code&gt; is that it turns Whisper into a transcription component better suited for long-term use. It is not a different model; it is a more efficient inference backend and engineering interface.&lt;/p&gt;
&lt;p&gt;For personal workflows, it can quickly turn videos, meetings, and course audio into text. For server-side tasks, you can tune performance with GPU execution, quantization, batching, and VAD. As long as the machine environment is configured correctly, it is better suited than the original Whisper implementation for stable, batch speech-to-text work.&lt;/p&gt;
&lt;p&gt;Project: &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>How to Use DeepSeek V4 Pro in Cline</title>
        <link>https://knightli.com/en/2026/05/01/use-deepseek-v4-pro-in-cline/</link>
        <pubDate>Fri, 01 May 2026 20:59:06 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/use-deepseek-v4-pro-in-cline/</guid>
        <description>&lt;p&gt;Cline already supports the OpenAI Compatible Provider.
DeepSeek API is also compatible with OpenAI SDK-style calls, so connecting &lt;code&gt;deepseek-v4-pro&lt;/code&gt; to Cline is not complicated: choose OpenAI Compatible, then fill in DeepSeek&amp;rsquo;s Base URL, API Key, and model name.&lt;/p&gt;
&lt;p&gt;The steps below cover both the VS Code extension UI and Cline CLI.&lt;/p&gt;
&lt;h2 id=&#34;prepare-a-deepseek-api-key&#34;&gt;Prepare a DeepSeek API Key
&lt;/h2&gt;&lt;p&gt;First, create an API Key on the DeepSeek platform.&lt;/p&gt;
&lt;p&gt;You need three values:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item&lt;/th&gt;
          &lt;th&gt;Value&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&amp;rsquo;s official documentation states that the V4 series uses the existing OpenAI-compatible interface. Keep &lt;code&gt;base_url&lt;/code&gt; as &lt;code&gt;https://api.deepseek.com&lt;/code&gt;, and set &lt;code&gt;model&lt;/code&gt; to &lt;code&gt;deepseek-v4-pro&lt;/code&gt; or &lt;code&gt;deepseek-v4-flash&lt;/code&gt; when calling it.&lt;/p&gt;
&lt;h2 id=&#34;configure-it-in-the-cline-extension&#34;&gt;Configure It in the Cline Extension
&lt;/h2&gt;&lt;p&gt;If you use the Cline extension in VS Code, configure it this way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Cline from the VS Code sidebar.&lt;/li&gt;
&lt;li&gt;Go to Cline settings or model configuration.&lt;/li&gt;
&lt;li&gt;Select &lt;code&gt;OpenAI Compatible&lt;/code&gt; as the provider.&lt;/li&gt;
&lt;li&gt;Enter your DeepSeek API Key.&lt;/li&gt;
&lt;li&gt;Set Base URL to:&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;Set Model ID to:&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;Save the configuration and run a simple test in Cline.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Start with a low-risk read-only task:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please read the current project directory structure and summarize what type of project this is. Do not modify any files.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If Cline can read and answer normally, the model connection is working.&lt;/p&gt;
&lt;h2 id=&#34;configure-it-in-cline-cli&#34;&gt;Configure It in Cline CLI
&lt;/h2&gt;&lt;p&gt;If you use Cline CLI, run &lt;code&gt;cline provider configure openai-compatible&lt;/code&gt; to enter interactive configuration.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Fill in:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;After configuration, test it with a read-only task:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want to lower cost first, you can temporarily change Model ID to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then switch back to &lt;code&gt;deepseek-v4-pro&lt;/code&gt; for complex planning, fact checking, multi-tool collaboration, or high-risk code changes.&lt;/p&gt;
&lt;h2 id=&#34;recommended-model-split&#34;&gt;Recommended Model Split
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro and Flash are better used with a clear split.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Best for&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;Routine code reading, small batch fixes, script generation, context summarization, low-risk frontend changes&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;Architecture planning, complex bugs, cross-file refactors, fact checking, multi-tool calls, high-risk changes&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For Agent tools like Cline, cost mainly comes from long context, repeated file reads, plan generation, and multi-round tool calls.
If the task is light, use Flash for volume; if the task needs stronger judgment, switch to Pro.&lt;/p&gt;
&lt;h2 id=&#34;how-to-set-context-length&#34;&gt;How to Set Context Length
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 Pro and Flash both support long context.
If Cline requires a manual context window value, you can understand it according to the 1M context listed on DeepSeek&amp;rsquo;s official model page.&lt;/p&gt;
&lt;p&gt;In practice, do not put every file into context at the beginning.
Cline reads files according to the task, and a better workflow is usually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;first ask it to inspect the directory structure;&lt;/li&gt;
&lt;li&gt;then ask it to locate relevant files;&lt;/li&gt;
&lt;li&gt;finally let it modify only the target files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This saves tokens and keeps the task boundary clearer.&lt;/p&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common Issues
&lt;/h2&gt;&lt;h3 id=&#34;1-model-not-found&#34;&gt;1. Model Not Found
&lt;/h3&gt;&lt;p&gt;First check that Model ID is exactly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Do not write &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;, &lt;code&gt;deepseek-v4&lt;/code&gt;, or another display name.&lt;/p&gt;
&lt;h3 id=&#34;2-401-or-authentication-failed&#34;&gt;2. 401 or Authentication Failed
&lt;/h3&gt;&lt;p&gt;Check the API Key:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether it was copied completely;&lt;/li&gt;
&lt;li&gt;whether it contains extra spaces;&lt;/li&gt;
&lt;li&gt;whether it was entered into the provider configuration Cline is currently using;&lt;/li&gt;
&lt;li&gt;whether the DeepSeek account has available balance.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-connection-failed&#34;&gt;3. Connection Failed
&lt;/h3&gt;&lt;p&gt;Check the 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;Do not append &lt;code&gt;/v1/chat/completions&lt;/code&gt; at the end.
Cline&amp;rsquo;s OpenAI Compatible Provider will construct compatible interface requests itself.&lt;/p&gt;
&lt;h3 id=&#34;4-cline-calls-are-too-expensive&#34;&gt;4. Cline Calls Are Too Expensive
&lt;/h3&gt;&lt;p&gt;You can switch routine tasks to &lt;code&gt;deepseek-v4-flash&lt;/code&gt; and use &lt;code&gt;deepseek-v4-pro&lt;/code&gt; only for complex tasks.&lt;/p&gt;
&lt;p&gt;Also, make the task description as clear as possible:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Only modify files related to the login page. Do not refactor unrelated modules. First provide a plan, and modify code only after confirmation.
&lt;/span&gt;&lt;/span&gt;&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 tasks are most expensive when boundaries are unclear.
The clearer the boundary, the fewer files it reads, the fewer tool calls it makes, and the more controllable the cost becomes.&lt;/p&gt;
&lt;h3 id=&#34;5-error-reasoning_content-must-be-passed-back&#34;&gt;5. Error: reasoning_content must be passed back
&lt;/h3&gt;&lt;p&gt;If you see an error like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This is usually not a Key, quota, or Base URL problem. It means DeepSeek V4 Pro&amp;rsquo;s thinking mode and the current client&amp;rsquo;s multi-round tool-call history are not aligned.&lt;/p&gt;
&lt;p&gt;DeepSeek&amp;rsquo;s official documentation states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;thinking mode is &lt;code&gt;enabled&lt;/code&gt; by default;&lt;/li&gt;
&lt;li&gt;thinking mode returns &lt;code&gt;reasoning_content&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;if a tool call happens in one round, subsequent requests must pass back the &lt;code&gt;reasoning_content&lt;/code&gt; from that assistant message;&lt;/li&gt;
&lt;li&gt;if the client does not pass it back correctly, the API returns 400.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When Cline connects through the OpenAI Compatible Provider, this error may appear in the second round or after tool calls if the current version does not fully preserve and return DeepSeek&amp;rsquo;s &lt;code&gt;reasoning_content&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Try this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Upgrade Cline to the latest version;&lt;/li&gt;
&lt;li&gt;confirm you are using &lt;code&gt;OpenAI Compatible&lt;/code&gt;, not the normal &lt;code&gt;OpenAI&lt;/code&gt; provider;&lt;/li&gt;
&lt;li&gt;if Cline supports a custom request body, try disabling 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;if Cline does not support extra body parameters, temporarily use another model or a compatible proxy service;&lt;/li&gt;
&lt;li&gt;switch back to &lt;code&gt;deepseek-v4-pro&lt;/code&gt; after Cline supports passing back DeepSeek V4 &lt;code&gt;reasoning_content&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that disabling thinking mode may reduce complex reasoning ability, but it can work around client compatibility issues where &lt;code&gt;reasoning_content&lt;/code&gt; is not passed back.&lt;/p&gt;
&lt;h2 id=&#34;copyable-configuration&#34;&gt;Copyable Configuration
&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-your 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;For low-cost mode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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-your 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;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;There are only three key steps to calling DeepSeek V4 Pro in Cline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;choose &lt;code&gt;OpenAI Compatible&lt;/code&gt; as the provider;&lt;/li&gt;
&lt;li&gt;set Base URL to &lt;code&gt;https://api.deepseek.com&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;set Model ID to &lt;code&gt;deepseek-v4-pro&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After configuration, test with a read-only task before giving it real code changes.
If you often run Agent tasks, split Flash and Pro: Flash handles high-frequency lightweight work, while Pro handles complex judgment and fallback tasks.&lt;/p&gt;
&lt;p&gt;References:&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>How DeepSeek V4 Price Cuts Rewrite the Cost Model for AI Agents</title>
        <link>https://knightli.com/en/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/en/2026/05/01/deepseek-v4-price-cuts-ai-agent-economics/</guid>
        <description>&lt;p&gt;DeepSeek V4 did not arrive with an especially loud launch.
There was no major event, nor a benchmark story that instantly crushed every competitor.
But a few days later, the part that truly affects the industry became visible: repeated price cuts.&lt;/p&gt;
&lt;p&gt;The point of this change is not that &amp;ldquo;the model got a little stronger&amp;rdquo;, but that &amp;ldquo;usage cost has been pushed into another tier&amp;rdquo;.
When token prices become low enough that an ordinary Agent task can finish for a few cents or a couple of yuan, the business logic behind many Coding Plans and Token Plans needs to be reconsidered.&lt;/p&gt;
&lt;h2 id=&#34;launch-day-was-not-explosive&#34;&gt;Launch Day Was Not Explosive
&lt;/h2&gt;&lt;p&gt;The first wave of feedback to DeepSeek V4 was not especially heated.
Many people expected it to deliver the kind of shock R1 did: across-the-board benchmark leadership, validation of domestic compute, and simultaneous breakthroughs in multimodal and Agent capabilities.
After the actual release, however, it looked more like a steady upgrade.&lt;/p&gt;
&lt;p&gt;V4 Pro is indeed a strong model, especially in coding, math, long context, and agentic coding.
But it is not the kind of product that instantly makes every peer model look outdated.
So on launch day, the discussion felt a little awkward: people wanted to praise it, but it was hard to find a sufficiently explosive angle.&lt;/p&gt;
&lt;p&gt;The real turning point was not launch day, but the price adjustments that followed.&lt;/p&gt;
&lt;h2 id=&#34;successive-price-cuts-are-the-key&#34;&gt;Successive Price Cuts Are the Key
&lt;/h2&gt;&lt;p&gt;After DeepSeek V4 was released, prices started to move downward.
According to DeepSeek&amp;rsquo;s official pricing page and the information summarized in the source article, the rough prices at that time were:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek V4 Flash: about 1 yuan per 1 million input tokens; about 0.02 yuan per 1 million tokens after a cache hit;&lt;/li&gt;
&lt;li&gt;DeepSeek V4 Pro: about 3 yuan per 1 million input tokens; about 0.025 yuan per 1 million tokens after a cache hit;&lt;/li&gt;
&lt;li&gt;the cache-hit input price across the model family dropped to one tenth of the launch price;&lt;/li&gt;
&lt;li&gt;V4 Pro was once in a 75% discount period, extended until May 31, 2026 at 23:59.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The API prices in US dollars make the difference easier to see:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Cached input&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Non-cached input&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Output&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Context&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 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.14 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.28 / 1M tokens&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; promotional price&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.003625 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.435 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.87 / 1M tokens&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; regular price&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$0.0145 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$1.74 / 1M tokens&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;$3.48 / 1M tokens&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;Two details matter here.&lt;/p&gt;
&lt;p&gt;First, V4 Pro&amp;rsquo;s $0.435 / $0.87 is a promotional price, not the long-term regular price.
In DeepSeek&amp;rsquo;s official notes, this 75% discount was extended until May 31, 2026 at 15:59 UTC.&lt;/p&gt;
&lt;p&gt;Second, cache-hit pricing is the key variable in the Agent cost model.
Flash&amp;rsquo;s cached input price is as low as $0.0028 / 1M tokens, while Pro&amp;rsquo;s promotional cached input price is $0.003625 / 1M tokens.
That means repeated project context, tool definitions, system prompts, and historical summaries no longer need to be charged at the full input price.&lt;/p&gt;
&lt;p&gt;The most important thing about this pricing is that it makes the token cost of many tasks &amp;ldquo;insensitive&amp;rdquo;.
In the past, developers worried that one Agent task would consume a large amount of context, repeatedly read and write code, and call tools frequently.
Now, as long as the cache hit rate is high enough, the cost can be pushed very low.&lt;/p&gt;
&lt;h2 id=&#34;price-comparison-with-gpt-and-claude&#34;&gt;Price Comparison With GPT and Claude
&lt;/h2&gt;&lt;p&gt;DeepSeek&amp;rsquo;s own prices alone do not fully convey the gap.
The contrast becomes much clearer when placed next to common closed-source models from the same period.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Input&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Cached input&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Output&lt;/th&gt;
          &lt;th&gt;Best fit&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;High-frequency Agents, routine coding, batch tasks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; promotional price&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;Complex coding, planning, fact checking&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;deepseek-v4-pro&lt;/code&gt; regular price&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 cost baseline after the promotion&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;High-quality complex tasks, general reasoning&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;Mid-range choice for programming and professional tasks&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;Lower-cost general and subtask model&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;High-quality writing, complex reasoning, long tasks&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;Programming, Agents, general work&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;Lightweight tasks, summarization, classification&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The most striking number in this table is output price.
Agents do not only read context; they also keep generating plans, patches, explanations, logs, and next actions.
If there is a lot of output, DeepSeek V4 Pro&amp;rsquo;s promotional $0.87 / M becomes dramatically cheaper than GPT-5.5&amp;rsquo;s $30 / M or Claude Sonnet 4.6&amp;rsquo;s $15 / M.&lt;/p&gt;
&lt;p&gt;Even at V4 Pro&amp;rsquo;s regular output price of $3.48 / M, it is still clearly below GPT-5.4, GPT-5.5, and Claude Sonnet / Opus.
If the task can be handled by Flash, the output price drops further to $0.28 / M.&lt;/p&gt;
&lt;p&gt;The cached input gap is even more extreme.
DeepSeek V4 Flash&amp;rsquo;s cached input price is $0.0028 / M, while GPT-5.5 and Claude Opus 4.7 are both $0.50 / M.
These are not in the same order of magnitude.
For Agents that repeatedly read the same code repository, this gap matters more than it does in ordinary chat.&lt;/p&gt;
&lt;h2 id=&#34;why-agent-tasks-are-especially-affected&#34;&gt;Why Agent Tasks Are Especially Affected
&lt;/h2&gt;&lt;p&gt;AI Agents are different from ordinary chat.
Ordinary chat is usually a question-and-answer flow with relatively limited input context.
Agent tasks repeatedly read project files, generate plans, call tools, inspect results, and then modify code again.&lt;/p&gt;
&lt;p&gt;These tasks have two traits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;large token consumption;&lt;/li&gt;
&lt;li&gt;lots of repeated context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The second point is crucial.
In a code project, the model repeatedly reads the same files, directory structure, error logs, and modification results.
If the platform supports cache hits, the cost of repeated input drops sharply.&lt;/p&gt;
&lt;p&gt;The source article mentioned a real experience: connecting DeepSeek V4 Pro and Flash to a Claude Code-like tool, asking it to pull a prompt repository and turn it into a local search site.
The task was completed, with a total cost of roughly a little over 0.8 yuan, and Pro reached a cache hit rate of 98.7%.&lt;/p&gt;
&lt;p&gt;This example illustrates a practical issue: the more an Agent task resembles &amp;ldquo;repeated work around the same project&amp;rdquo;, the more valuable cache hits become.
If generating a website, fixing a bug, or changing a frontend costs only a few cents to a few yuan, subscription plans become less attractive.&lt;/p&gt;
&lt;p&gt;We can estimate the gap with a simplified task.
Assume one coding agent task includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;500,000 input tokens, of which 80% can hit cache;&lt;/li&gt;
&lt;li&gt;50,000 output tokens;&lt;/li&gt;
&lt;li&gt;no tool calls, search costs, or platform markup included, only model token cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rough costs are:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Estimated cost&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;about $0.03&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro promotional price&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;about $0.09&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek V4 Pro regular price&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;about $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;about $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;about $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;about $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;about $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;about $1.65&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This estimate does not mean DeepSeek is better for every task.
Model quality, tool-call stability, long-context retrieval ability, coding style, and factual reliability all need separate evaluation.
But from a cost perspective, DeepSeek V4 pushes the marginal cost of &amp;ldquo;letting the Agent run a few more rounds&amp;rdquo; very low.
That will encourage developers to design longer workflows, more frequent self-checks, and more candidate solutions instead of worrying about the token bill every time.&lt;/p&gt;
&lt;h2 id=&#34;the-difference-between-coding-plans-and-token-plans&#34;&gt;The Difference Between Coding Plans and Token Plans
&lt;/h2&gt;&lt;p&gt;Many AI products now offer two types of plans: Coding Plans and Token Plans.&lt;/p&gt;
&lt;p&gt;The rough difference is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coding Plans are usually mainly for programming;&lt;/li&gt;
&lt;li&gt;Token Plans usually cover more capabilities, such as STT, TTS, image generation, search, embedding, and RAG;&lt;/li&gt;
&lt;li&gt;STT means speech to text;&lt;/li&gt;
&lt;li&gt;TTS means text to speech;&lt;/li&gt;
&lt;li&gt;Coding Plans often restrict users to programming scenarios, while other capabilities still require separate purchases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From a business perspective, a Coding Plan is more like a buffet.
Users pay a fixed fee in advance, while the vendor bets that most people will not use up the quota.
Some users consume more, others consume less, and the platform can still make money on average.&lt;/p&gt;
&lt;p&gt;But if pay-as-you-go token prices are low enough, users start calculating: why do I have to buy a plan?
If the real monthly usage cost is only a few yuan or a dozen yuan, a 40-yuan or 200-yuan plan may no longer be worthwhile.&lt;/p&gt;
&lt;h2 id=&#34;why-price-cuts-challenge-the-subscription-model&#34;&gt;Why Price Cuts Challenge the Subscription Model
&lt;/h2&gt;&lt;p&gt;Subscription plans rely on one premise: users feel that each individual use is expensive, or they do not want to calculate the cost of every call.
When token prices are high, a plan feels reassuring.
When token prices are almost negligible, pay-as-you-go becomes more natural.&lt;/p&gt;
&lt;p&gt;DeepSeek V4&amp;rsquo;s price cut effectively reveals the underlying cost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent tasks can be very cheap;&lt;/li&gt;
&lt;li&gt;long context is not necessarily too expensive to use;&lt;/li&gt;
&lt;li&gt;cache hits can reduce cost significantly;&lt;/li&gt;
&lt;li&gt;ordinary developers do not necessarily need a fixed subscription;&lt;/li&gt;
&lt;li&gt;the model entry point can shift from a &amp;ldquo;plan platform&amp;rdquo; to a &amp;ldquo;low-cost API&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will make platforms built around Coding Plans uncomfortable.
If users find pay-as-you-go calls cheaper and freer, they have less reason to be locked into one platform&amp;rsquo;s subscription.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-between-flash-and-pro&#34;&gt;How to Choose Between Flash and Pro
&lt;/h2&gt;&lt;p&gt;A practical way to use DeepSeek V4 is to split work between Flash and Pro.&lt;/p&gt;
&lt;p&gt;Flash is suitable for high-frequency, lightweight, repeatable tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fixing bugs;&lt;/li&gt;
&lt;li&gt;writing frontend code;&lt;/li&gt;
&lt;li&gt;writing scripts;&lt;/li&gt;
&lt;li&gt;routine code understanding;&lt;/li&gt;
&lt;li&gt;processing ordinary information in long context;&lt;/li&gt;
&lt;li&gt;running large numbers of subtasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flash is cheap, fast, and also supports very long context.
For everyday coding agents, many tasks do not need Pro from the start.&lt;/p&gt;
&lt;p&gt;Pro is better for complex judgment and fallback work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;multi-round planning;&lt;/li&gt;
&lt;li&gt;complex Agent workflows;&lt;/li&gt;
&lt;li&gt;multiple function calls;&lt;/li&gt;
&lt;li&gt;fact checking;&lt;/li&gt;
&lt;li&gt;financial research;&lt;/li&gt;
&lt;li&gt;content production that requires stronger knowledge and judgment;&lt;/li&gt;
&lt;li&gt;high-risk code changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A reasonable setup is: Flash handles volume, Pro handles fallback.
Start ordinary tasks with Flash, then switch to Pro for long-horizon planning, complex judgment, fact checking, or multi-tool collaboration.
This keeps cost under control while preserving model quality.&lt;/p&gt;
&lt;h2 id=&#34;why-deepseek-can-price-this-way&#34;&gt;Why DeepSeek Can Price This Way
&lt;/h2&gt;&lt;p&gt;DeepSeek has a different business structure from many large platforms.
It does not have e-commerce, social networking, short video, cloud computing, phones, cars, office suites, operating systems, browsers, or a large enterprise SaaS ecosystem.&lt;/p&gt;
&lt;p&gt;That means it does not need to lock users into a complete platform.
It can simply sell text model capability: use cheap text models here, and call any other capability elsewhere.&lt;/p&gt;
&lt;p&gt;Large platforms usually think differently.
If you buy their Coding Plan or Token Plan, you are pulled into their cloud, search, image generation, voice, database, and developer-tool ecosystem.
The plan is not merely selling the model; it is competing for the user entry point.&lt;/p&gt;
&lt;p&gt;DeepSeek&amp;rsquo;s approach is more direct: push text model prices down and try to become the default model entry point for Agents.
Once the default entry point is occupied, many developers and toolchains will naturally adapt around it.&lt;/p&gt;
&lt;h2 id=&#34;open-models-and-the-default-entry-point&#34;&gt;Open Models and the Default Entry Point
&lt;/h2&gt;&lt;p&gt;If DeepSeek V4 keeps an open model route, third-party cloud vendors and platforms may deploy it themselves and provide services.
For DeepSeek, that is both distribution and potential diversion.&lt;/p&gt;
&lt;p&gt;This is where a low-price official API matters.
If the official price is already low enough, other platforms will struggle to offer an obvious price advantage even if they can deploy the model.
Users will tend to use the default, cheap, stable entry point directly.&lt;/p&gt;
&lt;p&gt;This is especially true for Agent tools.
Agent tasks depend on long context, caching, tool calls, and stable throughput.
Once a model is cheap enough in these scenarios, it has a chance to become the default option.&lt;/p&gt;
&lt;h2 id=&#34;coding-plans-are-still-not-useless&#34;&gt;Coding Plans Are Still Not Useless
&lt;/h2&gt;&lt;p&gt;This does not mean Coding Plans will disappear immediately.
They still fit some users.&lt;/p&gt;
&lt;p&gt;If some users are truly heavy users who max out their quota every day, a fixed subscription may still be economical.
Just like a buffet, if nobody could ever eat enough to get their money&amp;rsquo;s worth, users would not buy it.&lt;/p&gt;
&lt;p&gt;The problem is that most users are not that kind of extremely high-frequency user.
Low-frequency users, lightweight developers, and people who occasionally write scripts or modify projects are better suited to pay-as-you-go.
After DeepSeek lowers pay-as-you-go costs, the appeal of plans weakens.&lt;/p&gt;
&lt;p&gt;The future is more likely to become a layered choice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;heavy high-frequency users keep buying Coding Plans;&lt;/li&gt;
&lt;li&gt;ordinary users move to low-cost APIs;&lt;/li&gt;
&lt;li&gt;Agent tools automatically choose Flash / Pro according to the task;&lt;/li&gt;
&lt;li&gt;platform plans need to provide more non-model value, such as workflows, IDE integration, deployment, team management, and security auditing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 did not create its biggest impact through benchmarks.
What truly changed industry expectations was the price reduction that followed.&lt;/p&gt;
&lt;p&gt;When input tokens and cache-hit pricing are pushed very low, the cost of using AI Agents changes.
Long context, code-project analysis, and multi-round tool calls that used to look expensive may now become everyday costs of a few cents to a few yuan.&lt;/p&gt;
&lt;p&gt;This directly challenges the business logic of Coding Plans and Token Plans.
If users can pay by usage, freely combine models and tools, and keep costs low enough, they may not want to be tied to a specific platform plan.&lt;/p&gt;
&lt;p&gt;What DeepSeek V4 truly touches this time is not only the ranking of model capability, but the cost structure of AI Agents and the battle for the default entry point.&lt;/p&gt;
&lt;p&gt;References:&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 Releases Nemotron 3 Nano Omni: An Open Omnimodal Reasoning Model for Agents</title>
        <link>https://knightli.com/en/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/en/2026/05/01/nvidia-nemotron-3-nano-omni-multimodal-agents/</guid>
        <description>&lt;p&gt;NVIDIA has released &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt;, an open omnimodal reasoning model designed for agent workflows.
Its focus is not simply text question answering, but putting language, vision, and audio into the same reasoning framework so the model can handle inputs that are closer to real work.&lt;/p&gt;
&lt;p&gt;In positioning, &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; looks more like a foundation model prepared for AI Agents.
It can understand information from screens, documents, images, speech, and video, then turn that information into actionable reasoning results.
This kind of capability fits computer operation, document intelligence, video understanding, voice interaction, customer service, education, and enterprise process automation.&lt;/p&gt;
&lt;h2 id=&#34;model-specs&#34;&gt;Model Specs
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; uses a MoE architecture.
The key specs NVIDIA lists are:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item&lt;/th&gt;
          &lt;th&gt;Information&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Model name&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;Architecture&lt;/td&gt;
          &lt;td&gt;MoE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Parameter scale&lt;/td&gt;
          &lt;td&gt;30B total / 3B active&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Modalities&lt;/td&gt;
          &lt;td&gt;Text, image, audio, video&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Context length&lt;/td&gt;
          &lt;td&gt;256K tokens&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;License&lt;/td&gt;
          &lt;td&gt;Apache 2.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Main deployment direction&lt;/td&gt;
          &lt;td&gt;AI Agents, multimodal reasoning, enterprise agents&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The most notable point here is &lt;code&gt;30B-A3B&lt;/code&gt;.
It means the model has about 30B total parameters, but only activates about 3B parameters during each inference step.
This is a tradeoff between capability and inference cost: the model keeps a larger expert capacity while using only part of it at runtime.&lt;/p&gt;
&lt;p&gt;That said, MoE &lt;code&gt;active params&lt;/code&gt; does not mean VRAM can be estimated as if this were only a 3B model.
A full deployment still needs to account for expert weights, KV cache, vision and audio encoder modules, context length, and inference framework overhead.&lt;/p&gt;
&lt;h2 id=&#34;it-is-not-solving-a-single-modality-problem&#34;&gt;It Is Not Solving a Single-Modality Problem
&lt;/h2&gt;&lt;p&gt;Traditional large language models mainly process text.
Multimodal models add image understanding.
&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; has a broader target: it emphasizes omnimodal input, meaning text, images, audio, and video are all brought into a unified reasoning process.&lt;/p&gt;
&lt;p&gt;This matters a lot for agents.
Real agent tasks are often not &amp;ldquo;take a piece of text and generate another piece of text&amp;rdquo;; they are more like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reading buttons, tables, and windows on a screen;&lt;/li&gt;
&lt;li&gt;parsing PDFs, screenshots, charts, and webpages;&lt;/li&gt;
&lt;li&gt;listening to spoken instructions or meeting recordings;&lt;/li&gt;
&lt;li&gt;understanding actions, scenes, and timing in video;&lt;/li&gt;
&lt;li&gt;combining those signals into the next operation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a model can only handle one modality, an Agent needs extra glue between multiple specialized models.
The value of an omnimodal model is reducing that integration cost and letting the same model directly process more complex environmental inputs.&lt;/p&gt;
&lt;h2 id=&#34;built-for-computer-operation-and-document-intelligence&#34;&gt;Built for Computer Operation and Document Intelligence
&lt;/h2&gt;&lt;p&gt;NVIDIA specifically notes that &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; can be used for computer-operation tasks.
These tasks usually require the model to understand user interfaces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what controls are on the screen;&lt;/li&gt;
&lt;li&gt;what state the current window is in;&lt;/li&gt;
&lt;li&gt;which button or menu is the next target;&lt;/li&gt;
&lt;li&gt;what the content in tables, dialogs, and input boxes means.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is also one of the hard-to-avoid capabilities when AI Agents move into real deployment.
If an agent is going to help people operate office software, browsers, enterprise backends, or developer tools, it has to understand the interface, not just read API docs.&lt;/p&gt;
&lt;p&gt;Document intelligence follows a similar logic.
Enterprise materials often mix text, tables, images, scanned pages, and charts.
An omnimodal model can put all of that content into the same context for understanding, making it suitable for contract review, report analysis, invoice processing, knowledge-base QA, and process automation.&lt;/p&gt;
&lt;h2 id=&#34;audio-and-video-bring-agents-closer-to-real-scenarios&#34;&gt;Audio and Video Bring Agents Closer to Real Scenarios
&lt;/h2&gt;&lt;p&gt;Audio and video inputs can noticeably expand the range of agent applications.&lt;/p&gt;
&lt;p&gt;Audio scenarios include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meeting recording summaries;&lt;/li&gt;
&lt;li&gt;customer service call analysis;&lt;/li&gt;
&lt;li&gt;voice command understanding;&lt;/li&gt;
&lt;li&gt;education and training content organization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Video scenarios include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;instructional video understanding;&lt;/li&gt;
&lt;li&gt;security and industrial inspection;&lt;/li&gt;
&lt;li&gt;screen recording analysis;&lt;/li&gt;
&lt;li&gt;operation workflow review;&lt;/li&gt;
&lt;li&gt;temporal reasoning in multi-step tasks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If these tasks rely only on text transcription, a lot of visual and timing information is lost.
An omnimodal model can directly combine voice, frames, and textual clues, giving Agents a more complete sense of their environment.&lt;/p&gt;
&lt;h2 id=&#34;deployment-and-ecosystem&#34;&gt;Deployment and Ecosystem
&lt;/h2&gt;&lt;p&gt;NVIDIA is placing &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; inside an open ecosystem, and the model uses the Apache 2.0 license.
That matters for developers and enterprises because it lowers the licensing barrier for experimentation, integration, and secondary development.&lt;/p&gt;
&lt;p&gt;From NVIDIA&amp;rsquo;s introduction, this model is also closely tied to its inference ecosystem.
For enterprise users, real deployment usually raises questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether it can run efficiently on NVIDIA GPUs;&lt;/li&gt;
&lt;li&gt;whether it supports long context and multimodal input;&lt;/li&gt;
&lt;li&gt;whether it can connect to existing Agent frameworks;&lt;/li&gt;
&lt;li&gt;whether it can process internal documents, audio/video, and UI screenshots;&lt;/li&gt;
&lt;li&gt;whether it can be deployed in private environments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NVIDIA emphasizes that the model has a clear throughput advantage and says it can reach up to 9x the throughput of comparable open omnimodal reasoning models.
The real value of that number still depends on the specific hardware, context length, input modalities, and inference framework.
But the direction is clear: NVIDIA wants to bring open multimodal models and its inference infrastructure together into enterprise Agent scenarios.&lt;/p&gt;
&lt;h2 id=&#34;suitable-use-cases&#34;&gt;Suitable Use Cases
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; is better suited to tasks such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agents that need to understand text, images, audio, and video at the same time;&lt;/li&gt;
&lt;li&gt;enterprise document intelligence and knowledge-base QA;&lt;/li&gt;
&lt;li&gt;computer operation based on screenshots or web interfaces;&lt;/li&gt;
&lt;li&gt;multimodal analysis of meetings, customer service, and teaching content;&lt;/li&gt;
&lt;li&gt;video understanding, workflow review, and temporal reasoning;&lt;/li&gt;
&lt;li&gt;teams that require open licensing and private deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not necessarily a fit for every regular user.
If the task is local chat, code completion, or simple QA, a single-modality language model may be lighter, faster, and more resource-efficient.
The value of &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; mainly appears in complex input and multimodal Agent workflows.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-ai-agents&#34;&gt;What This Means for AI Agents
&lt;/h2&gt;&lt;p&gt;For AI Agents to truly enter work scenarios, they cannot only write text.
They need to understand interfaces, speech, documents, and changes in video, then turn that information into the next action.&lt;/p&gt;
&lt;p&gt;That is where &lt;code&gt;Nemotron 3 Nano Omni&lt;/code&gt; matters.
It is not simply making the model larger; it is unifying the many kinds of input Agents face into one reasoning model.
This can make it easier for developers to build agents for real tasks instead of building only around chat windows.&lt;/p&gt;
&lt;p&gt;From this angle, the point of NVIDIA&amp;rsquo;s release is not just &amp;ldquo;another multimodal model&amp;rdquo;.
It is part of a continuing effort to connect open models, GPU inference, enterprise Agents, and private deployment.
What will be worth watching next is how it performs in concrete Agent frameworks, enterprise workflows, and local deployments.&lt;/p&gt;
&lt;p&gt;References:&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 Technical Blog: NVIDIA Nemotron 3 Nano Omni&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Running Qwen3.6 Locally: VRAM Requirements for 27B and 35B-A3B Quantized Models</title>
        <link>https://knightli.com/en/2026/05/01/qwen3-6-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 12:02:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/qwen3-6-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;The Qwen3.6 open-weight models that are most relevant for local deployment are mainly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt;: a 27B dense model.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt;: a 35B total / 3B active MoE model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also online product or API model names such as &lt;code&gt;Qwen3.6-Plus&lt;/code&gt; and &lt;code&gt;Qwen3.6-Max&lt;/code&gt;.
If a model does not have public full weights and stable quantized files, it is not suitable for a local VRAM table.
This article only covers versions that can be deployed around Hugging Face weights and GGUF quantized files.&lt;/p&gt;
&lt;p&gt;As with the Gemma 4 table in &lt;code&gt;/05/10&lt;/code&gt;, two concepts need to be separated first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF file size&lt;/strong&gt;: how large the model weight file is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actual VRAM usage&lt;/strong&gt;: affected by weights, KV cache, context length, runtime backend, multimodal modules, and batch size.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qwen3.6 has a very long default context. The official model card states native support for &lt;code&gt;262,144&lt;/code&gt; tokens and extension to &lt;code&gt;1,010,000&lt;/code&gt; tokens.
So the “minimum VRAM” column below only applies to short or medium context.
If you really want 128K, 256K, or longer context, reserve much more room for KV cache.&lt;/p&gt;
&lt;h2 id=&#34;quick-summary&#34;&gt;Quick Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;VRAM&lt;/th&gt;
          &lt;th&gt;Good Fit&lt;/th&gt;
          &lt;th&gt;Avoid&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;Extreme 2-bit tests for 27B / 35B-A3B, with clear quality risk&lt;/td&gt;
          &lt;td&gt;Q4 and above&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 with short context&lt;/td&gt;
          &lt;td&gt;27B Q4 with long context&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 with long context&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 with longer context more comfortably&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;No need to chase BF16 for ordinary local chat&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you have a 24GB GPU, focus on:&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;If you only have 16GB VRAM, start with low-bit variants and do not enable very long context right away.&lt;/p&gt;
&lt;h2 id=&#34;official-weight-sizes&#34;&gt;Official Weight Sizes
&lt;/h2&gt;&lt;p&gt;The following BF16 weight sizes come from &lt;code&gt;model.safetensors.index.json&lt;/code&gt; in the official Hugging Face repositories.
They are useful as a reference for the original model scale.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Architecture&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Official BF16 Weight Size&lt;/th&gt;
          &lt;th&gt;Official Context&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;Native 262K, extendable to 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;Native 262K, extendable to 1,010K&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Although &lt;code&gt;35B-A3B&lt;/code&gt; activates about 3B parameters per step, it still needs to load the full MoE weights.
So it should not be estimated like a 3B small model.&lt;/p&gt;
&lt;h2 id=&#34;qwen36-27b-vram-table&#34;&gt;Qwen3.6-27B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-27B&lt;/code&gt; is a dense model. Its advantage is stable behavior, while its inference cost is closer to a traditional 27B model.
For local deployment, it is more compute-heavy than 35B-A3B, but its VRAM requirements are easier to estimate.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Extreme low-VRAM tests&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;Low-VRAM usability&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;Low-bit compromise&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;VRAM-saving 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 entry point&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;Common 3-bit compromise&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;Near-Q4, more VRAM efficient&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;Quality/size balance&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;Recommended 27B default&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;Higher-quality quantization&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;Quality first&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;Near-original precision&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;Research, evaluation, precision comparison&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For ordinary local coding and chat, &lt;code&gt;Q4_K_M&lt;/code&gt; is the easiest starting point to recommend.
A 24GB GPU can run &lt;code&gt;Q4_K_M&lt;/code&gt; fairly comfortably, but for long context, reduce quantization size or context length.&lt;/p&gt;
&lt;h2 id=&#34;qwen36-35b-a3b-vram-table&#34;&gt;Qwen3.6-35B-A3B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Qwen3.6-35B-A3B&lt;/code&gt; is an MoE model with 35B total parameters and about 3B active parameters per step.
Its advantage is a strong balance between speed and capability, especially for local agents, tool use, and coding workflows.&lt;/p&gt;
&lt;p&gt;But note that MoE &lt;code&gt;3B active&lt;/code&gt; mainly affects compute. It does not mean VRAM usage is comparable to a 3B model.
Full operation still needs the expert weights.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Extreme low-VRAM tests&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;Low-VRAM usability&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;Low-bit compromise&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;VRAM-saving 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 entry point&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;Common 3-bit compromise&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;Quality/size balance&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;Near-Q4 recommended option&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;Recommended 35B-A3B default&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;Higher-quality quantization&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;Quality first&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;Near-original precision&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;Research, evaluation, precision comparison&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;With 24GB VRAM, &lt;code&gt;UD-Q4_K_M&lt;/code&gt; is a key option, but do not set the context too high.
If you want room for 128K+ context, &lt;code&gt;UD-IQ4_XS&lt;/code&gt;, &lt;code&gt;UD-IQ4_NL&lt;/code&gt;, or 3-bit versions are more realistic.&lt;/p&gt;
&lt;h2 id=&#34;27b-vs-35b-a3b&#34;&gt;27B vs 35B-A3B
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Need&lt;/th&gt;
          &lt;th&gt;Better Choice&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Stable dense-model behavior&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;Faster response, agents, and tool use&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;Daily local use on 24GB VRAM&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt; or &lt;code&gt;27B Q4_K_M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Testing on 16GB VRAM&lt;/td&gt;
          &lt;td&gt;Use 2-bit/3-bit for both; avoid long context&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Long context first&lt;/td&gt;
          &lt;td&gt;Use lower-bit quantization and leave more KV cache room&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quality first with 32GB+ VRAM&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;27B Q5/Q6&lt;/code&gt; or &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;If you mainly write code, run agents, or use tools, &lt;code&gt;35B-A3B&lt;/code&gt; is worth trying first.
If you care more about dense-model stability and consistency, &lt;code&gt;27B&lt;/code&gt; is more straightforward.&lt;/p&gt;
&lt;h2 id=&#34;why-long-context-uses-so-much-vram&#34;&gt;Why Long Context Uses So Much VRAM
&lt;/h2&gt;&lt;p&gt;The Qwen3.6 model card recommends keeping longer context for complex tasks and even notes that 128K+ context can help reasoning.
But for local deployment, long context means a much larger &lt;code&gt;KV cache&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Actual VRAM usage is affected by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;: longer context means higher usage.&lt;/li&gt;
&lt;li&gt;Whether vision input is enabled: Qwen3.6 includes a vision encoder, and multimodal use adds overhead.&lt;/li&gt;
&lt;li&gt;Whether &lt;code&gt;--language-model-only&lt;/code&gt; is used: in runtimes such as vLLM, skipping vision can free memory for KV cache.&lt;/li&gt;
&lt;li&gt;Batch size and concurrency: more concurrency requires more VRAM.&lt;/li&gt;
&lt;li&gt;KV cache quantization: &lt;code&gt;q8_0&lt;/code&gt;, &lt;code&gt;q4_0&lt;/code&gt;, and similar settings can save VRAM, but may affect details.&lt;/li&gt;
&lt;li&gt;Runtime differences: llama.cpp, vLLM, SGLang, KTransformers, and LM Studio do not use exactly the same amount of memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So do not look only at GGUF file size.
If the file is already close to the VRAM limit, the model may load but still OOM when generating long outputs or using long context.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;If you just want to try Qwen3.6 locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;12GB VRAM: try &lt;code&gt;27B UD-IQ2_M&lt;/code&gt; or &lt;code&gt;35B-A3B UD-IQ2_M&lt;/code&gt;, with short context.&lt;/li&gt;
&lt;li&gt;16GB VRAM: try &lt;code&gt;27B Q3_K_M&lt;/code&gt; or &lt;code&gt;35B-A3B UD-IQ3_XXS&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;24GB VRAM: prefer &lt;code&gt;27B Q4_K_M&lt;/code&gt;, &lt;code&gt;35B-A3B UD-IQ4_NL&lt;/code&gt;, or &lt;code&gt;35B-A3B UD-Q4_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;32GB VRAM: consider &lt;code&gt;27B Q5/Q6&lt;/code&gt; or &lt;code&gt;35B-A3B Q5/Q6&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;48GB and above: try &lt;code&gt;Q8_0&lt;/code&gt;, or reserve more room for long context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most users do not need BF16.
The point of local Qwen3.6 deployment is not to choose the largest file, but to balance VRAM, context length, speed, and output quality.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>Running DeepSeek V4 Locally: VRAM Estimates for Pro, Flash, and Base Versions</title>
        <link>https://knightli.com/en/2026/05/01/deepseek-v4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:55:25 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/deepseek-v4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;DeepSeek V4 and Gemma 4 are not in the same class for local deployment.
With Gemma 4, it still makes sense to discuss how to run 26B or 31B models on 24GB or 32GB GPUs. DeepSeek V4 is a huge MoE model, and full local deployment quickly moves into multi-GPU workstation or server territory.&lt;/p&gt;
&lt;p&gt;The official DeepSeek V4 Preview release mainly includes two inference models:&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;The official Hugging Face collection also includes two Base models:&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;This article only discusses rough VRAM requirements when the full model weights are loaded.
For MoE models, &lt;code&gt;active params&lt;/code&gt; mainly affects per-token compute. It does not mean only those parameters need to be loaded.
Without expert-on-demand loading, CPU/NVMe offload, distributed inference, or specialized runtime optimizations, VRAM should still be estimated from the full weight size.&lt;/p&gt;
&lt;h2 id=&#34;quick-summary&#34;&gt;Quick Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;VRAM Scale&lt;/th&gt;
          &lt;th&gt;What Is Realistic&lt;/th&gt;
          &lt;th&gt;Do Not Expect&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;Cannot fully run DeepSeek V4; use smaller distilled models or API&lt;/td&gt;
          &lt;td&gt;Full V4-Flash / V4-Pro local loading&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;48GB&lt;/td&gt;
          &lt;td&gt;Still not suitable for full loading; good for small models or remote API clients&lt;/td&gt;
          &lt;td&gt;Stable V4-Flash Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;80GB&lt;/td&gt;
          &lt;td&gt;Theoretically try V4-Flash Q2/Q3 or heavy 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 becomes more realistic; Q5/Q6 still tight&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 is more comfortable; Pro Q2 enters experimental range&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 is fairly comfortable; Pro Q2/Q3 can be tested&lt;/td&gt;
          &lt;td&gt;V4-Pro Q5 and above&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;512GB&lt;/td&gt;
          &lt;td&gt;V4-Pro Q4 starts to become discussable&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 and low-bit Pro-Base are more realistic&lt;/td&gt;
          &lt;td&gt;Low-cost single-machine deployment&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2TB+&lt;/td&gt;
          &lt;td&gt;Pro-Base FP8 class&lt;/td&gt;
          &lt;td&gt;Ordinary workstation deployment&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your goal is to run a model on a personal computer, DeepSeek V4 is not the right target.
More realistic options are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the official DeepSeek API or compatible services.&lt;/li&gt;
&lt;li&gt;Wait for stable community GGUF/EXL2/MLX quantizations and inference support.&lt;/li&gt;
&lt;li&gt;Use smaller DeepSeek distilled models.&lt;/li&gt;
&lt;li&gt;Use local models in the 7B to 70B range from Qwen, Gemma, Llama, and similar families.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;official-weight-sizes&#34;&gt;Official Weight Sizes
&lt;/h2&gt;&lt;p&gt;The following figures come from &lt;code&gt;model.safetensors.index.json&lt;/code&gt; in the official Hugging Face repositories.
They reflect current public weight file sizes, not full runtime VRAM use under long context.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Parameter Scale&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Official Weight Size&lt;/th&gt;
          &lt;th&gt;Notes&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;Inference model, smallest in this group&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;Inference model, stronger but enormous&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 model, closer to full FP8 weight size&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 model, about 1.6TB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Even the smallest &lt;code&gt;V4-Flash&lt;/code&gt; is already close to 160GB of official weights.
That is why it should not be treated like a 13B model just because it has &lt;code&gt;13B active params&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-vram-estimate&#34;&gt;DeepSeek V4 Flash VRAM Estimate
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Flash&lt;/code&gt; is the most approachable DeepSeek V4 variant for local experiments.
But that only means “more approachable than Pro”; it is still not a consumer single-GPU model.&lt;/p&gt;
&lt;p&gt;The table below uses the official 159.61GB weight size as the baseline.
Q4/Q3/Q2 rows are bit-width estimates and do not imply that stable official GGUF versions currently exist.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Version / Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Estimated Weight Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / official weights&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;Multi-GPU servers, inference service&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;Quality-first quantization tests&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;Quality/size balance&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;More realistic starting point for 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;Large-VRAM single GPU or multi-GPU tests&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;Extreme low-bit experiments with clear quality risk&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If mature &lt;code&gt;V4-Flash Q4&lt;/code&gt; builds appear later, it still probably will not be a 24GB GPU model.
A more realistic starting point is 96GB to 128GB total VRAM, or CPU/offload setups that trade speed for capacity.&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-vram-estimate&#34;&gt;DeepSeek V4 Pro VRAM Estimate
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro&lt;/code&gt; is the flagship inference model, with official weights around 864.70GB.
Even at 4-bit quantization, the full weights remain in the hundreds of GB.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Version / Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Estimated Weight Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / official weights&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;Multi-node or multi-GPU inference service&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;High-quality quantized service&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;Quality/cost balance&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;Lowest practical quality line for 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;Low-bit experiments&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;Extreme experiments with high quality and stability risk&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For individual users, &lt;code&gt;V4-Pro&lt;/code&gt; is better consumed through an API.
If the goal is full local deployment, treat it as a multi-GPU server model, not a 4090, 5090, or RTX PRO single-GPU model.&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-flash-base-vram-estimate&#34;&gt;DeepSeek V4 Flash-Base VRAM Estimate
&lt;/h2&gt;&lt;p&gt;Base models are usually for research, fine-tuning, or continued training, not ordinary chat deployment.
&lt;code&gt;V4-Flash-Base&lt;/code&gt; has official weights of about 294.67GB.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Version / Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Estimated Weight Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / official weights&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;Research, preprocessing, evaluation&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;High-quality quantization research&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;Quality/size balance&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;Lower-cost Base experiments&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;Low-bit experiments&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;Extreme experiments&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you only want to use DeepSeek V4 capabilities, do not start with the Base model.
Base models cost more to deploy and tune; most applications should use the inference model or API.&lt;/p&gt;
&lt;h2 id=&#34;deepseek-v4-pro-base-vram-estimate&#34;&gt;DeepSeek V4 Pro-Base VRAM Estimate
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;V4-Pro-Base&lt;/code&gt; is the heaviest variant, with official weights around 1606.03GB.
That is already a 1.6TB-class model file.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Version / Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Estimated Weight Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;FP8 / official weights&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;Large-scale research clusters&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;High-quality quantization research&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;Research and evaluation&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;Low-bit research&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;Extreme low-bit research&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;Extreme experiments&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This kind of model should not be discussed in the framework of “can a home GPU run it?”
Even Q4 is already beyond the comfortable range of most single-machine workstations.&lt;/p&gt;
&lt;h2 id=&#34;why-active-params-are-not-enough&#34;&gt;Why Active Params Are Not Enough
&lt;/h2&gt;&lt;p&gt;DeepSeek V4 is an MoE model.
MoE means each token activates only part of the experts, so compute is much lower than the total parameter count.
But this does not mean VRAM only needs to hold the active parameters.&lt;/p&gt;
&lt;p&gt;Full local inference also depends on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether all expert weights must stay resident on GPU.&lt;/li&gt;
&lt;li&gt;Whether on-demand expert loading is supported.&lt;/li&gt;
&lt;li&gt;CPU memory to GPU memory transfer costs.&lt;/li&gt;
&lt;li&gt;NVMe offload latency.&lt;/li&gt;
&lt;li&gt;KV cache growth under long context.&lt;/li&gt;
&lt;li&gt;Extra runtime overhead under 1M context.&lt;/li&gt;
&lt;li&gt;Multi-node and multi-GPU communication cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;V4-Pro&lt;/code&gt; with &lt;code&gt;49B active&lt;/code&gt; should not be deployed like a 49B model.
&lt;code&gt;V4-Flash&lt;/code&gt; with &lt;code&gt;13B active&lt;/code&gt; should not be treated like a 13B small model either.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;If you are an ordinary individual user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not try to fully self-host DeepSeek V4.&lt;/li&gt;
&lt;li&gt;Use the official API when you need DeepSeek V4 capabilities.&lt;/li&gt;
&lt;li&gt;For private local deployment, first check whether you have mature inference infrastructure or internal multi-GPU servers.&lt;/li&gt;
&lt;li&gt;With only 24GB to 48GB VRAM, 7B, 14B, 32B, or 70B quantized models are more practical.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have 128GB to 256GB total VRAM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Watch for stable community implementations of &lt;code&gt;V4-Flash Q4/Q5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Do not treat &lt;code&gt;V4-Pro&lt;/code&gt; as your main local model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have 512GB+ total VRAM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro Q4&lt;/code&gt; starts to become an engineering validation target.&lt;/li&gt;
&lt;li&gt;You still need to care about inference framework support, expert scheduling, KV cache, throughput, and concurrency.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key question for DeepSeek V4 local deployment is not “which quantized file should I download?”
It is “do I have the system-level inference capacity for this model?”
It is closer to a server model than a desktop model.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>Running Gemma 4 Locally: VRAM Requirements for E2B, E4B, 26B, and 31B Quantized Models</title>
        <link>https://knightli.com/en/2026/05/01/gemma-4-local-vram-quantization-table/</link>
        <pubDate>Fri, 01 May 2026 11:42:34 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/gemma-4-local-vram-quantization-table/</guid>
        <description>&lt;p&gt;Gemma 4 currently has four main sizes for local deployment: &lt;code&gt;E2B&lt;/code&gt;, &lt;code&gt;E4B&lt;/code&gt;, &lt;code&gt;26B A4B&lt;/code&gt;, and &lt;code&gt;31B&lt;/code&gt;.
&lt;code&gt;E2B&lt;/code&gt; and &lt;code&gt;E4B&lt;/code&gt; target lightweight and edge devices, &lt;code&gt;26B A4B&lt;/code&gt; uses an MoE architecture, and &lt;code&gt;31B&lt;/code&gt; is the larger dense model.&lt;/p&gt;
&lt;p&gt;The easiest mistake in local inference is mixing up two numbers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GGUF file size&lt;/strong&gt;: how large the model weight file is.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actual VRAM usage&lt;/strong&gt;: affected by model weights, KV cache, runtime overhead, context length, and whether multimodal projection files are loaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The tables below estimate VRAM requirements based on GGUF file size.
The default assumption is local text inference with &lt;code&gt;llama.cpp&lt;/code&gt;, LM Studio, Ollama, or similar runtimes, using short to medium context.
If you need long context, image/audio input, or concurrent requests, leave more VRAM headroom.&lt;/p&gt;
&lt;h2 id=&#34;quick-summary&#34;&gt;Quick Summary
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;VRAM&lt;/th&gt;
          &lt;th&gt;Good Fit&lt;/th&gt;
          &lt;th&gt;Avoid&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;Low-bit E2B quantizations&lt;/td&gt;
          &lt;td&gt;E4B and above&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6GB&lt;/td&gt;
          &lt;td&gt;E2B Q4/Q5, low-bit 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, low-quality 2-bit/3-bit 26B or 31B tests&lt;/td&gt;
          &lt;td&gt;26B Q4 with long context, 31B Q4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;16GB&lt;/td&gt;
          &lt;td&gt;Low-bit 26B, low-bit 31B&lt;/td&gt;
          &lt;td&gt;31B Q4 with long context, 26B Q5 and above&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 more comfortably, 26B Q8 with longer context&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;Single consumer GPU deployment&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you just want something usable locally, start with &lt;code&gt;E4B Q4_K_M&lt;/code&gt; or &lt;code&gt;E2B Q4_K_M&lt;/code&gt;.
With 24GB VRAM, &lt;code&gt;26B A4B Q4_K_M&lt;/code&gt; and &lt;code&gt;31B Q4_K_M&lt;/code&gt; start to become realistic choices.&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e2b-vram-table&#34;&gt;Gemma 4 E2B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E2B&lt;/code&gt; is the lightest version, suitable for laptops, mini PCs, mobile devices, and low-VRAM testing.
It is easy to run, but complex reasoning, coding, and long tasks are limited.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Extreme low-VRAM tests&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;Low-VRAM usability&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;Lightweight chat and summaries&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;Balance of quality and size&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;Recommended E2B default&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;Slightly steadier than 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;Higher-quality small model&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;Near-original precision for lightweight deployment&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;Debugging, comparison, research&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For daily use, &lt;code&gt;E2B Q4_K_M&lt;/code&gt; is already enough.
With only 4GB VRAM, 2-bit or 3-bit variants can work, but output quality will be less stable.&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-e4b-vram-table&#34;&gt;Gemma 4 E4B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;E4B&lt;/code&gt; is the more practical lightweight model.
Compared with E2B, it is better for everyday writing, document summaries, light coding assistance, and local assistant use.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Low-VRAM tests&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;Low-VRAM usability&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;Lightweight local assistant&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;Balance of quality and speed&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;Recommended E4B default&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;Steadier everyday use&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;Quality first&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;Near-original precision&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;Research, evaluation, precision comparison&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your GPU has 8GB VRAM, &lt;code&gt;E4B Q4_K_M&lt;/code&gt; is a realistic starting point.
With 12GB or 16GB VRAM, &lt;code&gt;E4B Q8_0&lt;/code&gt; is also worth considering.&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-26b-a4b-vram-table&#34;&gt;Gemma 4 26B A4B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;26B A4B&lt;/code&gt; is the MoE version. It has a larger total parameter count, but activates only part of the experts during inference.
It is better suited to more complex Q&amp;amp;A, coding, tool use, and agent workflows.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Extreme 16GB GPU tests&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;Running 26B with low VRAM&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;Better quality while still VRAM-conscious&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;Balance of quality and size&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;Recommended 26B default&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;Higher-quality quantization&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;Quality first&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;Near-original precision&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;Not realistic for most single consumer GPUs&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;24GB VRAM is the comfortable dividing line for 26B A4B.
A 16GB GPU can try low-bit versions, but context length, concurrency, and multimodal input should be kept modest.&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-31b-vram-table&#34;&gt;Gemma 4 31B VRAM Table
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; is the larger dense model.
Its strength is stronger overall capability, but its VRAM pressure is more direct than 26B A4B.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GGUF File Size&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Minimum VRAM&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Safer VRAM&lt;/th&gt;
          &lt;th&gt;Best For&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;Extreme low-VRAM tests with clear quality loss&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;Low-VRAM tests&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 GPU experiments&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;More VRAM-efficient 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;Common 3-bit compromise&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;Near-Q4 compromise&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;Recommended 31B default&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;Higher-quality quantization&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;Quality first&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;Near-original precision&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;Server or large-VRAM workstation&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Low-bit 31B can be tested on a 16GB GPU, but for daily use, 24GB VRAM is a better starting point.
&lt;code&gt;Q4_K_M&lt;/code&gt; is the balanced choice, while &lt;code&gt;Q5_K_M&lt;/code&gt; and above make more sense with 32GB+ VRAM.&lt;/p&gt;
&lt;h2 id=&#34;why-actual-usage-is-higher-than-file-size&#34;&gt;Why Actual Usage Is Higher Than File Size
&lt;/h2&gt;&lt;p&gt;The GGUF file size is only the weight size.
Runtime usage also includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;KV cache&lt;/code&gt;: longer context means higher memory use.&lt;/li&gt;
&lt;li&gt;Batch size and concurrency: processing more tokens or more users increases VRAM.&lt;/li&gt;
&lt;li&gt;Multimodal components: image, audio, or video input often requires &lt;code&gt;mmproj&lt;/code&gt; or extra modules.&lt;/li&gt;
&lt;li&gt;Runtime backend: CUDA, Metal, ROCm, and CPU/GPU split loading behave differently.&lt;/li&gt;
&lt;li&gt;KV cache quantization: &lt;code&gt;q8_0&lt;/code&gt;, &lt;code&gt;q4_0&lt;/code&gt;, and similar modes can save VRAM, but may affect detail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the “minimum VRAM” column should be read as the threshold for startup and short-context inference.
For 32K, 64K, 128K, or even 256K context, VRAM requirements rise significantly.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose&#34;&gt;How to Choose
&lt;/h2&gt;&lt;p&gt;If you just want to try Gemma 4 locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4GB to 6GB VRAM: choose &lt;code&gt;E2B Q3_K_M&lt;/code&gt; or &lt;code&gt;E2B Q4_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;8GB VRAM: prefer &lt;code&gt;E4B Q4_K_M&lt;/code&gt;; &lt;code&gt;E2B Q8_0&lt;/code&gt; is also fine.&lt;/li&gt;
&lt;li&gt;12GB VRAM: choose &lt;code&gt;E4B Q8_0&lt;/code&gt;, or try low-bit 26B/31B variants.&lt;/li&gt;
&lt;li&gt;16GB VRAM: try &lt;code&gt;26B A4B UD-Q3_K_M&lt;/code&gt; or &lt;code&gt;31B Q3_K_S&lt;/code&gt;, but do not expect long context to feel comfortable.&lt;/li&gt;
&lt;li&gt;24GB VRAM: focus on &lt;code&gt;26B A4B UD-Q4_K_M&lt;/code&gt; and &lt;code&gt;31B Q4_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;32GB and above: consider &lt;code&gt;Q5_K_M&lt;/code&gt;, &lt;code&gt;Q6_K&lt;/code&gt;, or longer context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most users do not need BF16.
Local deployment is not about picking the largest file, but about balancing VRAM, speed, context length, and output quality.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 Introduces Advanced Account Security: A Stronger Layer of Protection for ChatGPT and Codex Accounts</title>
        <link>https://knightli.com/en/2026/05/01/openai-advanced-account-security/</link>
        <pubDate>Fri, 01 May 2026 06:15:29 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/openai-advanced-account-security/</guid>
        <description>&lt;p&gt;OpenAI introduced &lt;code&gt;Advanced Account Security&lt;/code&gt; on April 30, 2026, as an optional high-security setting for ChatGPT accounts.&lt;/p&gt;
&lt;p&gt;It is mainly designed for two groups of users. One includes journalists, elected officials, political dissidents, researchers, and others who are more likely to face targeted attacks. The other includes security-conscious users who want stronger protection for their ChatGPT and Codex accounts.&lt;/p&gt;
&lt;p&gt;Once enabled, this feature protects not only ChatGPT, but also Codex when accessed through the same login account.&lt;/p&gt;
&lt;h2 id=&#34;why-chatgpt-accounts-need-a-higher-level-of-security&#34;&gt;Why ChatGPT accounts need a higher level of security
&lt;/h2&gt;&lt;p&gt;Many people now use ChatGPT for increasingly private and high-stakes work.&lt;/p&gt;
&lt;p&gt;A ChatGPT account may contain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personal questions and long-running conversations&lt;/li&gt;
&lt;li&gt;Work documents and project context&lt;/li&gt;
&lt;li&gt;Connected tools and workflows&lt;/li&gt;
&lt;li&gt;Code and development tasks in Codex&lt;/li&gt;
&lt;li&gt;Enterprise, research, or security-related materials&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If an account is taken over, the loss is not limited to leaked chat history. An attacker may also access connected tools, view sensitive context, or interfere with work in progress.&lt;/p&gt;
&lt;p&gt;So what OpenAI is introducing is not just another login option. It is a stricter set of account protection measures.&lt;/p&gt;
&lt;h2 id=&#34;what-advanced-account-security-includes&#34;&gt;What Advanced Account Security includes
&lt;/h2&gt;&lt;p&gt;OpenAI places this capability in the Security settings of ChatGPT accounts on the web, where users can opt in.&lt;/p&gt;
&lt;p&gt;After it is enabled, it strengthens account security in several ways.&lt;/p&gt;
&lt;p&gt;First, sign-in becomes stronger.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; requires &lt;code&gt;passkeys&lt;/code&gt; or physical security keys and disables password-based login. The goal is to make phishing-resistant sign-in the default for people who need it most.&lt;/p&gt;
&lt;p&gt;Second, account recovery becomes stricter.&lt;/p&gt;
&lt;p&gt;Traditional account recovery often relies on email or SMS. If an attacker controls a user&amp;rsquo;s email account or phone number, they may use that access to reset the account. To reduce this risk, Advanced Account Security disables email and SMS recovery and uses stronger recovery methods instead, such as backup passkeys, security keys, and recovery keys.&lt;/p&gt;
&lt;p&gt;There is an important tradeoff here: after enabling the feature, account recovery depends much more on the user keeping those recovery methods safe. OpenAI explicitly states that if users enrolled in this feature lose their recovery methods, OpenAI Support will not be able to help recover the account.&lt;/p&gt;
&lt;p&gt;Third, sessions become shorter and easier to manage.&lt;/p&gt;
&lt;p&gt;OpenAI shortens sign-in sessions to reduce the exposure window if a device or active session is compromised. Users also receive login alerts and can review and manage active sessions across their devices.&lt;/p&gt;
&lt;p&gt;Fourth, training exclusion becomes automatic.&lt;/p&gt;
&lt;p&gt;For people handling sensitive information, preventing conversations from being used for model training is an important privacy setting. When Advanced Account Security is enabled, that preference takes effect automatically: conversations from those accounts will not be used to train OpenAI models.&lt;/p&gt;
&lt;h2 id=&#34;working-with-yubico-to-promote-physical-security-keys&#34;&gt;Working with Yubico to promote physical security keys
&lt;/h2&gt;&lt;p&gt;OpenAI also announced a partnership with Yubico to offer users a customized security key bundle.&lt;/p&gt;
&lt;p&gt;It includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;YubiKey C Nano&lt;/code&gt;: designed to stay plugged into a laptop, reducing daily sign-in friction&lt;/li&gt;
&lt;li&gt;&lt;code&gt;YubiKey C NFC&lt;/code&gt;: designed as a backup and for use across laptops and mobile devices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenAI says users can also use other FIDO-compliant physical security keys or software passkeys.&lt;/p&gt;
&lt;p&gt;This means Advanced Account Security is not tied to one specific piece of hardware. It is designed around phishing-resistant authentication methods.&lt;/p&gt;
&lt;h2 id=&#34;trusted-access-for-cyber-users-will-be-required-to-enable-it&#34;&gt;Trusted Access for Cyber users will be required to enable it
&lt;/h2&gt;&lt;p&gt;OpenAI also says that individual members of &lt;code&gt;Trusted Access for Cyber&lt;/code&gt; who access its more capable and permissive cybersecurity models will be required to enable Advanced Account Security starting June 1, 2026.&lt;/p&gt;
&lt;p&gt;Organizations can meet the requirement in another way: by attesting that their single sign-on workflow already uses phishing-resistant authentication.&lt;/p&gt;
&lt;p&gt;This arrangement makes sense. The more powerful the model capability, the stronger the account protection needs to be. This is especially true for cybersecurity research, vulnerability analysis, and red-teaming scenarios, where the account itself becomes a high-value target.&lt;/p&gt;
&lt;h2 id=&#34;who-should-consider-enabling-it&#34;&gt;Who should consider enabling it
&lt;/h2&gt;&lt;p&gt;This feature is not necessarily for everyone.&lt;/p&gt;
&lt;p&gt;If you only use ChatGPT for ordinary conversations and do not want to deal with the complexity of stricter recovery, it may be reasonable to wait.&lt;/p&gt;
&lt;p&gt;But the following users should seriously consider it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People who often handle sensitive work materials in ChatGPT&lt;/li&gt;
&lt;li&gt;People who use Codex with private code repositories&lt;/li&gt;
&lt;li&gt;Journalists, public affairs professionals, researchers, executives, and other high-risk users&lt;/li&gt;
&lt;li&gt;Cybersecurity professionals&lt;/li&gt;
&lt;li&gt;People already comfortable with passkeys or physical security keys&lt;/li&gt;
&lt;li&gt;People especially concerned about phishing, SIM swapping, or email account takeover&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before enabling it, it is best to prepare backup passkeys, security keys, and recovery keys, and make sure they are stored properly. Otherwise, security improves, but account recovery becomes much harder.&lt;/p&gt;
&lt;h2 id=&#34;what-this-means-for-ai-products&#34;&gt;What this means for AI products
&lt;/h2&gt;&lt;p&gt;Advanced Account Security is not a model capability update, but it reflects the fact that AI products are entering higher-risk usage.&lt;/p&gt;
&lt;p&gt;As ChatGPT and Codex begin to carry workflows, code, documents, enterprise connectors, and long-term context, the account is no longer just a way to &amp;ldquo;log in to a chat tool.&amp;rdquo; It becomes the key to an AI work environment.&lt;/p&gt;
&lt;p&gt;The more these products resemble personal workspaces, the more important account security, recovery mechanisms, session management, and training-data controls become.&lt;/p&gt;
&lt;p&gt;OpenAI&amp;rsquo;s decision to put passkeys, physical security keys, recovery restrictions, session management, and training exclusion into one setting is the right direction. It gives high-risk users a clear place to raise account protection to a level more suitable for sensitive work.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Advanced Account Security&lt;/code&gt; can be understood as a high-security mode for ChatGPT and Codex.&lt;/p&gt;
&lt;p&gt;It reduces the risk of account takeover through stronger sign-in, stricter recovery, shorter sessions, login alerts, and automatic training exclusion. The tradeoff is that users must manage their own recovery methods more carefully, because traditional email and SMS recovery are no longer available after enabling it, and OpenAI Support cannot serve as a fallback.&lt;/p&gt;
&lt;p&gt;If you already use ChatGPT or Codex for important work, especially involving private code, sensitive documents, or a high-risk identity, this feature is worth paying attention to.&lt;/p&gt;
&lt;p&gt;Reference link:&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 Comes to Cars with Google Built-in: In-Car Voice Assistants Start to Feel More Like Real AI Assistants</title>
        <link>https://knightli.com/en/2026/05/01/gemini-cars-with-google-built-in/</link>
        <pubDate>Fri, 01 May 2026 06:09:57 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/gemini-cars-with-google-built-in/</guid>
        <description>&lt;p&gt;Google announced on April 30, 2026 that &lt;code&gt;Gemini&lt;/code&gt; is starting to roll out to cars with &lt;code&gt;Google built-in&lt;/code&gt;, as an upgraded version of Google Assistant.&lt;/p&gt;
&lt;p&gt;The point is not simply that cars are getting another AI assistant. It is that in-car voice interaction is moving from fixed commands toward more natural, continuous conversation. Users no longer need to remember rigid command formats. They can speak more naturally and ask Gemini to help with navigation, messages, vehicle information, and even some in-car settings.&lt;/p&gt;
&lt;h2 id=&#34;starting-with-english-users-in-the-united-states&#34;&gt;Starting with English users in the United States
&lt;/h2&gt;&lt;p&gt;According to Google, this update will cover both new and existing vehicles, as long as the vehicle supports &lt;code&gt;Google built-in&lt;/code&gt; and the user is signed in to their Google account in the car.&lt;/p&gt;
&lt;p&gt;The rollout will begin with English-language users in the United States, then expand to more languages and countries. Eligible users will see an option in the car to upgrade to Gemini. After upgrading, they can call up Gemini in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Say &lt;code&gt;Hey Google&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tap the microphone on the home screen&lt;/li&gt;
&lt;li&gt;Use the voice button on the steering wheel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This shows that Google is not turning Gemini into a new entry point that users have to learn from scratch. It keeps the existing in-car voice entry point, while replacing the underlying assistant with a stronger Gemini experience.&lt;/p&gt;
&lt;h2 id=&#34;in-car-voice-no-longer-depends-only-on-fixed-commands&#34;&gt;In-car voice no longer depends only on fixed commands
&lt;/h2&gt;&lt;p&gt;A common problem with traditional in-car voice assistants is that they can do quite a lot, but users have to speak in a very &amp;ldquo;standard&amp;rdquo; way. As soon as the request becomes a little complex, the assistant may fail to understand it or only perform a basic action.&lt;/p&gt;
&lt;p&gt;With Gemini in the car, Google is emphasizing natural conversation. For example, a user can simply say:&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 can use Google Maps information to find suitable restaurants along the route. The user can then follow up by asking about parking or vegetarian options, without starting a whole new search.&lt;/p&gt;
&lt;p&gt;This interaction fits the driving context better. When driving, it is hard to repeatedly filter, tap, and revise options as you would on a phone. If a voice assistant can understand more complete intent, it can noticeably reduce distraction.&lt;/p&gt;
&lt;h2 id=&#34;maps-messages-and-music-become-easier-to-handle&#34;&gt;Maps, messages, and music become easier to handle
&lt;/h2&gt;&lt;p&gt;The examples Google gives are mostly built around the most common needs while driving.&lt;/p&gt;
&lt;p&gt;The first category is route and place search.&lt;/p&gt;
&lt;p&gt;Gemini can use Google Maps information to find restaurants, attractions, or charging stations along the way, and it can also answer questions related to the current route. For example, when passing near a stadium, the user can ask whether there is an event nearby and whether it will affect traffic.&lt;/p&gt;
&lt;p&gt;The second category is message handling.&lt;/p&gt;
&lt;p&gt;Users can ask Gemini to summarize new text messages and then reply based on the context. For example, they can ask it to tell a friend &amp;ldquo;I&amp;rsquo;m on my way&amp;rdquo; and include the estimated arrival time. If they want to change the message, they can add more instructions without starting over.&lt;/p&gt;
&lt;p&gt;The third category is music and ambience.&lt;/p&gt;
&lt;p&gt;Users do not necessarily need to know the name of a radio station or a specific playlist. They can simply describe what they want to hear. For example, they can ask for a jazz radio station, or ask YouTube Music to play upbeat &amp;rsquo;70s folk-rock for a mountain drive while skipping slow ballads.&lt;/p&gt;
&lt;p&gt;These functions are not entirely new by themselves. Gemini&amp;rsquo;s value is in handling multiple conditions in a single natural-language request, instead of forcing users back into fixed commands.&lt;/p&gt;
&lt;h2 id=&#34;gemini-live-lets-people-keep-talking-while-driving&#34;&gt;Gemini Live lets people keep talking while driving
&lt;/h2&gt;&lt;p&gt;Google also mentioned that &lt;code&gt;Gemini Live&lt;/code&gt; will enter the in-car experience and is currently in beta. Users can tap the Gemini Live button or say &lt;code&gt;Hey Google, let&#39;s talk&lt;/code&gt; to start a more free-flowing conversation.&lt;/p&gt;
&lt;p&gt;This scenario is closer to learning and brainstorming while driving. For example, when driving to Lake Tahoe, users can ask Gemini to share local history and fun facts. If something sounds interesting, they can interrupt and ask follow-up questions. Gemini can also help plan hikes and activities after arrival.&lt;/p&gt;
&lt;p&gt;The difference from traditional in-car assistants is clear. A traditional assistant is more like a tool button; Gemini Live is more like a voice interface that supports continuous conversation.&lt;/p&gt;
&lt;h2 id=&#34;owners-manuals-and-real-time-vehicle-status-are-the-key-differences&#34;&gt;Owner&amp;rsquo;s manuals and real-time vehicle status are the key differences
&lt;/h2&gt;&lt;p&gt;More importantly, Gemini does not only answer general questions. Google says it has worked with automakers to integrate Gemini more deeply with vehicle systems.&lt;/p&gt;
&lt;p&gt;This brings several capabilities closer to the car itself.&lt;/p&gt;
&lt;p&gt;First, users can ask about vehicle features.&lt;/p&gt;
&lt;p&gt;For example: &amp;ldquo;How should I prepare my car for an automatic car wash?&amp;rdquo; or &amp;ldquo;My garage ceiling is low and the trunk is hitting it. How do I program the trunk so it doesn&amp;rsquo;t open all the way?&amp;rdquo; Gemini can answer based on manufacturer-provided owner&amp;rsquo;s manuals, tailored to the specific vehicle model. The availability and level of detail will vary by brand and model.&lt;/p&gt;
&lt;p&gt;Second, EV users can ask about real-time battery level and range.&lt;/p&gt;
&lt;p&gt;For example, they can ask for the current battery level, the estimated battery level on arrival, or ask Gemini to find nearby charging stations. Gemini can also combine this with Google Maps and help find nearby cafes while charging.&lt;/p&gt;
&lt;p&gt;Third, some in-car settings can be adjusted through natural language.&lt;/p&gt;
&lt;p&gt;Google&amp;rsquo;s example is a user saying that the car is foggy and freezing. Gemini can understand the intent, turn up the heat, and switch on the defroster.&lt;/p&gt;
&lt;p&gt;These capabilities are more practical than simply moving a chatbot into the dashboard. A car is an environment with clear state, hardware capabilities, and safety boundaries. If an AI assistant can understand vehicle context, its value is much higher than ordinary Q&amp;amp;A.&lt;/p&gt;
&lt;h2 id=&#34;the-boundaries-of-in-car-ai-matter-even-more&#34;&gt;The boundaries of in-car AI matter even more
&lt;/h2&gt;&lt;p&gt;The requirements for AI in a car are different from those on a phone or web page.&lt;/p&gt;
&lt;p&gt;When driving, users cannot keep looking at the screen or spend much attention correcting AI. The assistant needs to be concise, reliable, and avoid creating new burdens in critical situations.&lt;/p&gt;
&lt;p&gt;So Gemini entering cars does not mean every complex task belongs in the car. A more reasonable direction is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduce the operation cost of navigation and information lookup&lt;/li&gt;
&lt;li&gt;Replace multi-level menus with natural language&lt;/li&gt;
&lt;li&gt;Help users quickly understand vehicle features&lt;/li&gt;
&lt;li&gt;Handle messages and media without increasing distraction&lt;/li&gt;
&lt;li&gt;Give EV users smoother charging and route information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the other hand, high-risk operations still need clear boundaries. Actions that affect driving safety, messages that require confirmation, and vehicle-control operations should all have sufficiently explicit confirmation flows.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Gemini coming to cars with &lt;code&gt;Google built-in&lt;/code&gt; is another step in AI assistants expanding from phones and web pages into everyday environments.&lt;/p&gt;
&lt;p&gt;Its significance is not that people can finally &amp;ldquo;chat&amp;rdquo; in the car. It is that in-car voice assistants are beginning to understand more complex intent and combine maps, messages, music, owner&amp;rsquo;s manuals, and some vehicle-status information to complete tasks.&lt;/p&gt;
&lt;p&gt;If the rollout goes well, in-car voice interaction may gradually move from &amp;ldquo;remember the command&amp;rdquo; to &amp;ldquo;describe the need.&amp;rdquo; That matters for driving, because a genuinely good in-car AI should not require the driver to give it too much attention.&lt;/p&gt;
&lt;p&gt;Reference link:&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 Brings Claude into Adobe, Blender, Ableton, and SketchUp</title>
        <link>https://knightli.com/en/2026/05/01/claude-for-creative-work-connectors/</link>
        <pubDate>Fri, 01 May 2026 05:52:14 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/claude-for-creative-work-connectors/</guid>
        <description>&lt;p&gt;Anthropic released &lt;code&gt;Claude for Creative Work&lt;/code&gt; on April 28, 2026. The point is not another new chatbot, but bringing Claude into the software that creative industries already use.&lt;/p&gt;
&lt;p&gt;The partnership list is telling: &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;, and &lt;code&gt;Splice&lt;/code&gt;, along with tool ecosystems such as &lt;code&gt;Affinity by Canva&lt;/code&gt;, &lt;code&gt;Resolume&lt;/code&gt;, and &lt;code&gt;SketchUp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In simple terms, Anthropic wants Claude to do more than offer suggestions in a chat box. It wants Claude to enter concrete workflows for design, 3D, music, video, and live visuals.&lt;/p&gt;
&lt;h2 id=&#34;claude-cannot-replace-taste-but-it-can-replace-a-lot-of-drudgery&#34;&gt;Claude Cannot Replace Taste, but It Can Replace a Lot of Drudgery
&lt;/h2&gt;&lt;p&gt;Anthropic&amp;rsquo;s announcement is fairly restrained: Claude cannot replace a creator&amp;rsquo;s taste and imagination.&lt;/p&gt;
&lt;p&gt;That is the right judgment. The hard part of creative work is often not &amp;ldquo;generating something,&amp;rdquo; but deciding which direction is worth pursuing, which details should be kept, and which proposal fits the character of a project.&lt;/p&gt;
&lt;p&gt;But creative workflows also contain a lot of repetitive labor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Batch-resizing images&lt;/li&gt;
&lt;li&gt;Renaming layers&lt;/li&gt;
&lt;li&gt;Exporting files in different formats&lt;/li&gt;
&lt;li&gt;Organizing assets&lt;/li&gt;
&lt;li&gt;Looking up software documentation&lt;/li&gt;
&lt;li&gt;Writing scripts to modify scenes&lt;/li&gt;
&lt;li&gt;Converting formats between multiple tools&lt;/li&gt;
&lt;li&gt;Turning an idea into a visible draft quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These steps do not necessarily require &amp;ldquo;inspiration,&amp;rdquo; but they consume a lot of time. Claude&amp;rsquo;s role is more like freeing creators from these mechanical steps.&lt;/p&gt;
&lt;h2 id=&#34;connectors-are-the-core-of-this-release&#34;&gt;Connectors Are the Core of This Release
&lt;/h2&gt;&lt;p&gt;The key to this release is &lt;code&gt;connectors&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;connectors&lt;/code&gt; can be understood as bridges between Claude and external platforms or software. Instead of copying a request into Claude and then manually returning to the software to act on it, users can let Claude understand the tool directly, call capabilities, or read relevant documentation.&lt;/p&gt;
&lt;p&gt;The connection areas mentioned in Anthropic&amp;rsquo;s announcement include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ableton&lt;/code&gt;: lets Claude answer questions based on official Live and Push documentation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Adobe for creativity&lt;/code&gt;: connects to more than 50 tools in Creative Cloud, including Photoshop, Premiere, and Express.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Affinity by Canva&lt;/code&gt;: automates repetitive production tasks in professional creative workflows, such as batch image adjustment, layer renaming, and file export.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Autodesk Fusion&lt;/code&gt;: lets designers and engineers with Fusion subscriptions create and modify 3D models through conversation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Blender&lt;/code&gt;: uses Blender&amp;rsquo;s Python API through natural language, helping users understand complex scenes, access documentation, and extend functionality.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Resolume Arena&lt;/code&gt; and &lt;code&gt;Resolume Wire&lt;/code&gt;: let VJs and live visual artists control Arena, Avenue, and Wire in real time using natural language.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SketchUp&lt;/code&gt;: turns a conversation with Claude into a starting point for 3D modeling, such as describing a room, furniture, or a site concept before refining it in SketchUp.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Splice&lt;/code&gt;: lets music producers search royalty-free sample libraries directly from Claude.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These integrations cover design, audio, 3D, video, live performance, and engineering modeling. They are not a small experiment in one direction; they show Anthropic clearly moving toward a &amp;ldquo;creative software workbench.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-creative-work&#34;&gt;What It Means for Creative Work
&lt;/h2&gt;&lt;p&gt;Based on the announcement, Claude&amp;rsquo;s uses in creative work can be grouped into several categories.&lt;/p&gt;
&lt;p&gt;The first is learning complex tools.&lt;/p&gt;
&lt;p&gt;Many creative applications are powerful, but their learning curves are steep. Blender, Ableton, Fusion, and Premiere are classic examples. Users can ask Claude to explain a modifier stack, describe a compositing technique, or demonstrate an unfamiliar feature instead of jumping between search results, forums, and official docs.&lt;/p&gt;
&lt;p&gt;The second is writing scripts and plugins.&lt;/p&gt;
&lt;p&gt;Creative software contains a lot of room for automation. Claude Code can help users write scripts, plugins, shaders, procedural animations, or parametric models. For creators who know a little technology but do not want to keep digging through APIs, this is very practical.&lt;/p&gt;
&lt;p&gt;The third is connecting toolchains.&lt;/p&gt;
&lt;p&gt;Real projects are rarely completed in a single application. Design may happen in Adobe, 3D in Blender or SketchUp, audio in Ableton, assets from Splice, and the final result may still need to enter a video or performance system. Claude can help convert formats, reorganize data, synchronize assets, and reduce manual handoffs.&lt;/p&gt;
&lt;p&gt;The fourth is rapid exploration and delivery.&lt;/p&gt;
&lt;p&gt;Anthropic also mentioned &lt;code&gt;Claude Design&lt;/code&gt;, a new product from Anthropic Labs for exploring software experience ideas. It can iterate visual proposals based on feedback, and its design results can be exported to other tools, starting with Canva.&lt;/p&gt;
&lt;p&gt;The fifth is reducing repetitive production work.&lt;/p&gt;
&lt;p&gt;For example: batch-processing assets, setting up project structures, modifying scene objects in bulk, and automating exports. Many creators know how to do these things; they simply do not want to spend an afternoon on repeated clicking.&lt;/p&gt;
&lt;h2 id=&#34;blender-is-the-most-notable-piece&#34;&gt;Blender Is the Most Notable Piece
&lt;/h2&gt;&lt;p&gt;In this announcement, &lt;code&gt;Blender&lt;/code&gt; has a particularly interesting position.&lt;/p&gt;
&lt;p&gt;Blender is a free and open-source 3D creation suite used in indie games, motion graphics, architectural visualization, film production, and more. It already has a powerful Python API and many complex workflows.&lt;/p&gt;
&lt;p&gt;Blender developers have created an MCP connector that can now be used officially in Claude.&lt;/p&gt;
&lt;p&gt;This connector can do things such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Analyze and debug an entire Blender scene&lt;/li&gt;
&lt;li&gt;Modify objects in a scene in bulk&lt;/li&gt;
&lt;li&gt;Write custom scripts with the Blender Python API&lt;/li&gt;
&lt;li&gt;Add new tools directly to the Blender interface&lt;/li&gt;
&lt;li&gt;Help users understand complex settings and documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More importantly, Anthropic has joined the Blender Development Fund as a patron, supporting Blender&amp;rsquo;s continued development of its Python API.&lt;/p&gt;
&lt;p&gt;This sends two signals.&lt;/p&gt;
&lt;p&gt;First, Anthropic is not only trying to connect with commercial software; it is also betting on open-source creative tools.&lt;/p&gt;
&lt;p&gt;Second, this connector is based on &lt;code&gt;MCP&lt;/code&gt;, so in theory it is not limited to Claude. Other large models could connect to it as well. That aligns well with Blender&amp;rsquo;s open-source and interoperability direction.&lt;/p&gt;
&lt;h2 id=&#34;this-is-not-ai-replacing-designers-it-is-ai-entering-the-tool-layer&#34;&gt;This Is Not &amp;ldquo;AI Replacing Designers&amp;rdquo;; It Is &amp;ldquo;AI Entering the Tool Layer&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;The most important thing about this release is not whether Claude can generate an image, a piece of music, or a 3D model.&lt;/p&gt;
&lt;p&gt;The more important point is that AI is moving from the chat box into the tool layer.&lt;/p&gt;
&lt;p&gt;In the past, many AI creative tools worked like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Describe a need inside an AI tool.&lt;/li&gt;
&lt;li&gt;Get a result.&lt;/li&gt;
&lt;li&gt;Download or copy it out.&lt;/li&gt;
&lt;li&gt;Return to professional software and modify it manually.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The new direction looks more like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude understands your creative software.&lt;/li&gt;
&lt;li&gt;Claude reads relevant documentation or project context.&lt;/li&gt;
&lt;li&gt;Claude generates scripts, operates tools, organizes assets, or builds drafts.&lt;/li&gt;
&lt;li&gt;The creator continues judging and refining inside familiar software.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is more attractive to professional users because they do not want to leave their existing toolchains or migrate all their work to a completely new AI platform.&lt;/p&gt;
&lt;h2 id=&#34;the-impact-on-students-and-creative-education&#34;&gt;The Impact on Students and Creative Education
&lt;/h2&gt;&lt;p&gt;Anthropic also mentioned that it is working with art and design programs to support courses involving creative computation.&lt;/p&gt;
&lt;p&gt;The first group of programs includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Art and Computation at Rhode Island School of Design&lt;/li&gt;
&lt;li&gt;Fundamentals of AI for Creatives at Ringling College of Art and Design&lt;/li&gt;
&lt;li&gt;MA/MFA Computational Arts at Goldsmiths, University of London&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Students and teachers will receive access to Claude and the new connectors, and their feedback will help Anthropic understand what creative practitioners actually need.&lt;/p&gt;
&lt;p&gt;This is interesting as well. If AI creation stays at the level of &amp;ldquo;generating assets,&amp;rdquo; it can easily become a showpiece. Once it enters courses, the more important questions become:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How should students understand the processes behind tools?&lt;/li&gt;
&lt;li&gt;How can AI be used as a tool for exploration and prototyping?&lt;/li&gt;
&lt;li&gt;How can they preserve their own judgment?&lt;/li&gt;
&lt;li&gt;How can code and automation expand creative boundaries?&lt;/li&gt;
&lt;li&gt;How can they avoid every work taking on the same AI flavor?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These questions are more practical than simply debating whether AI will replace creators.&lt;/p&gt;
&lt;h2 id=&#34;who-should-pay-attention-to-this-release&#34;&gt;Who Should Pay Attention to This Release
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude for Creative Work&lt;/code&gt; is especially worth watching for several groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People using Blender, SketchUp, or Fusion for 3D modeling&lt;/li&gt;
&lt;li&gt;People using Adobe or Affinity for design and video production&lt;/li&gt;
&lt;li&gt;People using Ableton or Splice for music production&lt;/li&gt;
&lt;li&gt;People who need to connect multiple creative tools into a workflow&lt;/li&gt;
&lt;li&gt;People with some scripting ability who want to automate creative software&lt;/li&gt;
&lt;li&gt;People working in creative education, interaction design, or computational arts courses&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally use AI to generate images, this release may not immediately change your experience.&lt;/p&gt;
&lt;p&gt;But if you already work inside professional software and often run into the feeling of &amp;ldquo;I know what to do, but these steps are too tedious,&amp;rdquo; connectors could be very valuable.&lt;/p&gt;
&lt;h2 id=&#34;boundaries-to-keep-in-mind&#34;&gt;Boundaries to Keep in Mind
&lt;/h2&gt;&lt;p&gt;These tools are not omnipotent.&lt;/p&gt;
&lt;p&gt;First, Claude still needs users to judge whether the result fits the aesthetics, brand, and project goals.&lt;/p&gt;
&lt;p&gt;Second, when automating operations in professional software, it is best to start with small tasks rather than immediately letting it batch-modify project files that may be hard to recover.&lt;/p&gt;
&lt;p&gt;Third, connector quality is crucial. A connector that can only look up documentation and a connector that can actually operate software are two very different experiences.&lt;/p&gt;
&lt;p&gt;Fourth, creative software projects often contain complex files, asset dependencies, and version management. Once AI is involved, backups and rollback workflows become even more important.&lt;/p&gt;
&lt;p&gt;Fifth, copyright, licensing, and asset sources still need to be checked by the user. For example, Splice emphasizes royalty-free samples, but real project use still requires confirming the specific license terms.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude for Creative Work&lt;/code&gt; is not a single feature update. It is Anthropic&amp;rsquo;s step toward pushing Claude into the creative software ecosystem.&lt;/p&gt;
&lt;p&gt;The point is not to turn Claude into the creator, but to make Claude a tool assistant beside creators: looking up docs, writing scripts, batch-processing, connecting software, generating drafts, and reducing repetitive labor.&lt;/p&gt;
&lt;p&gt;The long-term value lies in Claude beginning to enter the environments creators use every day, such as Blender, Adobe, Ableton, and SketchUp.&lt;/p&gt;
&lt;p&gt;When AI is no longer just a standalone web page, but can understand and call professional tools, creative workflows will change in more practical ways.&lt;/p&gt;
&lt;p&gt;Reference link:&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: An Open-Source Financial Terminal, Quant Research, and AI Agent Workbench</title>
        <link>https://knightli.com/en/2026/05/01/finceptterminal-open-source-financial-terminal/</link>
        <pubDate>Fri, 01 May 2026 03:47:18 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/finceptterminal-open-source-financial-terminal/</guid>
        <description>&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; is an open-source financial terminal project from Fincept Corporation.&lt;/p&gt;
&lt;p&gt;Based on the README, it is not a simple market quote panel. It is a comprehensive desktop platform for financial analysis, quant research, trading workflows, and AI Agents. Version 4 is built with C++20 and Qt6 as a native desktop application, while embedding the Python ecosystem for analytics, scripting, machine learning, and financial modeling.&lt;/p&gt;
&lt;p&gt;If we need a comparison, it is closer to an open-source financial research workbench: connecting data sources on one side, and handling charts, portfolios, quant research, trading, intelligence analysis, and automated workflows on the other.&lt;/p&gt;
&lt;p&gt;One thing should be made clear first: tools like this can be used for research, analysis, education, and internal tool building, but no output should be treated directly as investment advice. Financial markets are risky, and data, models, strategies, and execution all require independent verification.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What problem does it solve?
&lt;/h2&gt;&lt;p&gt;Financial research is often scattered across many tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Market data lives in one application&lt;/li&gt;
&lt;li&gt;Research code lives in Jupyter&lt;/li&gt;
&lt;li&gt;Charts live in another tool&lt;/li&gt;
&lt;li&gt;Portfolio analysis lives in spreadsheets&lt;/li&gt;
&lt;li&gt;Trading records live in brokerage systems&lt;/li&gt;
&lt;li&gt;News and intelligence live in the browser&lt;/li&gt;
&lt;li&gt;AI analysis lives in a chat window&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach works, but collaboration and reproducibility are difficult.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; tries to integrate these capabilities into one desktop terminal, so users can complete data access, analysis, modeling, visualization, Agent collaboration, and trading-related workflows in the same environment.&lt;/p&gt;
&lt;p&gt;Its goal is not to replace every professional system, but to provide an extensible open-source foundation for a financial terminal.&lt;/p&gt;
&lt;h2 id=&#34;technical-architecture&#34;&gt;Technical architecture
&lt;/h2&gt;&lt;p&gt;The README mentions that v4 uses C++20 and Qt6.&lt;/p&gt;
&lt;p&gt;This means it is not a pure web panel, but a native desktop application. For a financial terminal, native applications have several advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More stable UI responsiveness&lt;/li&gt;
&lt;li&gt;Better fit for complex windows and multi-panel layouts&lt;/li&gt;
&lt;li&gt;Easier access to local files and system resources&lt;/li&gt;
&lt;li&gt;Ability to embed high-performance components&lt;/li&gt;
&lt;li&gt;Better suited for long-running desktop workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At the same time, the project also embeds Python.&lt;/p&gt;
&lt;p&gt;This is important. In financial research and quant analysis, Python is one of the de facto mainstream languages. Data analysis, machine learning, statistics, backtesting, charting, and financial modeling all rely heavily on the Python ecosystem. C++/Qt handles the application framework and desktop experience, while Python handles research and extensibility. That is a very practical combination.&lt;/p&gt;
&lt;h2 id=&#34;data-connectors&#34;&gt;Data connectors
&lt;/h2&gt;&lt;p&gt;The README says the project provides 100+ data connectors.&lt;/p&gt;
&lt;p&gt;The value of a financial terminal depends heavily on data access. Without data, even the best UI and models are just an empty shell.&lt;/p&gt;
&lt;p&gt;These connectors can usually cover different sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Market quotes&lt;/li&gt;
&lt;li&gt;Macroeconomic data&lt;/li&gt;
&lt;li&gt;Company financials&lt;/li&gt;
&lt;li&gt;News and intelligence&lt;/li&gt;
&lt;li&gt;Exchange data&lt;/li&gt;
&lt;li&gt;Crypto asset data&lt;/li&gt;
&lt;li&gt;Research data sources&lt;/li&gt;
&lt;li&gt;Internal or custom APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For users, data connectors reduce the workflow of &amp;ldquo;download CSV, clean it manually, then import it again&amp;rdquo;, making analysis closer to real-time and automation.&lt;/p&gt;
&lt;p&gt;That said, the quality, licensing, latency, coverage, and cost of financial data are all critical. Before using any data source, its license and usage boundaries need to be confirmed.&lt;/p&gt;
&lt;h2 id=&#34;ai-agents-module&#34;&gt;AI Agents module
&lt;/h2&gt;&lt;p&gt;The project emphasizes AI Agents, which is also where it differs from traditional financial terminals.&lt;/p&gt;
&lt;p&gt;Traditional terminals are mostly human-operated interfaces: people look at data and make judgments. With AI Agents, the tool can take on more assistant-style work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summarize market information&lt;/li&gt;
&lt;li&gt;Explain financial reports and announcements&lt;/li&gt;
&lt;li&gt;Generate research summaries&lt;/li&gt;
&lt;li&gt;Help filter data&lt;/li&gt;
&lt;li&gt;Assist with analysis scripts&lt;/li&gt;
&lt;li&gt;Organize trading or research workflows&lt;/li&gt;
&lt;li&gt;Pass context across modules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not mean AI can replace analysts or traders.&lt;/p&gt;
&lt;p&gt;A more reasonable position is this: AI Agents help reduce repetitive organization work and provide preliminary analysis and interactive queries, but important conclusions still require data validation, model validation, and human judgment.&lt;/p&gt;
&lt;h2 id=&#34;quant-research-capabilities&#34;&gt;Quant research capabilities
&lt;/h2&gt;&lt;p&gt;FinceptTerminal is also aimed at quant research.&lt;/p&gt;
&lt;p&gt;Quant research usually includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data cleaning&lt;/li&gt;
&lt;li&gt;Factor construction&lt;/li&gt;
&lt;li&gt;Strategy hypotheses&lt;/li&gt;
&lt;li&gt;Backtesting&lt;/li&gt;
&lt;li&gt;Risk assessment&lt;/li&gt;
&lt;li&gt;Portfolio optimization&lt;/li&gt;
&lt;li&gt;Trading cost estimation&lt;/li&gt;
&lt;li&gt;Result visualization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a terminal can integrate data connections, Python analysis, charts, and workflows, it can be very useful for quant research. Researchers can move step by step from data to strategy validation in one environment.&lt;/p&gt;
&lt;p&gt;However, the biggest danger in quant research is something that &amp;ldquo;looks effective.&amp;rdquo; If a strategy does not strictly handle out-of-sample validation, trading costs, slippage, survivorship bias, overfitting, and data leakage, even a beautiful backtest is unreliable.&lt;/p&gt;
&lt;p&gt;So this kind of tool should be treated as a research platform, not an automatic money-making machine.&lt;/p&gt;
&lt;h2 id=&#34;quantlib-and-financial-modeling&#34;&gt;QuantLib and financial modeling
&lt;/h2&gt;&lt;p&gt;The README mentions QuantLib-related capabilities.&lt;/p&gt;
&lt;p&gt;QuantLib is a common open-source library in financial engineering. It is often used for interest rates, bonds, options, derivatives pricing, curve construction, risk calculation, and related areas.&lt;/p&gt;
&lt;p&gt;This means FinceptTerminal is not only about viewing stock quotes. It also tries to cover more professional financial modeling scenarios.&lt;/p&gt;
&lt;p&gt;These capabilities are suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learning financial engineering&lt;/li&gt;
&lt;li&gt;Experiments in derivatives pricing&lt;/li&gt;
&lt;li&gt;Curve and risk metric calculation&lt;/li&gt;
&lt;li&gt;Portfolio risk analysis&lt;/li&gt;
&lt;li&gt;Research model prototyping&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But financial modeling itself has a high barrier. Model parameters, market assumptions, data sources, and pricing logic all affect the results. A tool can reduce operating costs, but it cannot replace professional judgment.&lt;/p&gt;
&lt;h2 id=&#34;node-workflows&#34;&gt;Node workflows
&lt;/h2&gt;&lt;p&gt;The README also mentions node-based workflows.&lt;/p&gt;
&lt;p&gt;Node workflows are suitable for breaking complex tasks into visual processes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read data&lt;/li&gt;
&lt;li&gt;Clean data&lt;/li&gt;
&lt;li&gt;Run models&lt;/li&gt;
&lt;li&gt;Generate charts&lt;/li&gt;
&lt;li&gt;Trigger AI analysis&lt;/li&gt;
&lt;li&gt;Output reports&lt;/li&gt;
&lt;li&gt;Send notifications&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For financial scenarios, this approach has two advantages.&lt;/p&gt;
&lt;p&gt;First, the process becomes visible. Complex analysis is no longer hidden only inside a pile of scripts, and users can see how data flows.&lt;/p&gt;
&lt;p&gt;Second, it is suitable for automation. Repetitive research processes can be saved, reused, and adjusted.&lt;/p&gt;
&lt;p&gt;If these workflows can be combined with Python scripts, data connectors, Agents, and reporting systems, this kind of node workflow can become a very valuable module inside a financial terminal.&lt;/p&gt;
&lt;h2 id=&#34;trading-and-portfolio-management&#34;&gt;Trading and portfolio management
&lt;/h2&gt;&lt;p&gt;The project also mentions trading and portfolio-related capabilities.&lt;/p&gt;
&lt;p&gt;This is the area that requires the most caution.&lt;/p&gt;
&lt;p&gt;Portfolio management can help users understand asset exposure, returns, drawdowns, volatility, correlation, and risk concentration. Trading modules may involve orders, accounts, execution, and records.&lt;/p&gt;
&lt;p&gt;But whenever real trading is involved, the following must be considered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data latency&lt;/li&gt;
&lt;li&gt;Order execution risk&lt;/li&gt;
&lt;li&gt;API permissions&lt;/li&gt;
&lt;li&gt;Trading costs&lt;/li&gt;
&lt;li&gt;Slippage&lt;/li&gt;
&lt;li&gt;Liquidity&lt;/li&gt;
&lt;li&gt;Risk control limits&lt;/li&gt;
&lt;li&gt;Auditing and logs&lt;/li&gt;
&lt;li&gt;Accidental strategy triggers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trading features in development and research environments should not be equated with production-grade trading systems. Before connecting to live trading, strict testing, permission isolation, risk control mechanisms, and manual review are required.&lt;/p&gt;
&lt;h2 id=&#34;how-is-it-different-from-bloomberg-terminal&#34;&gt;How is it different from Bloomberg Terminal?
&lt;/h2&gt;&lt;p&gt;Many financial terminal projects are compared with Bloomberg Terminal.&lt;/p&gt;
&lt;p&gt;But the positioning is different.&lt;/p&gt;
&lt;p&gt;The value of Bloomberg Terminal is not only its software interface. It also includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data coverage&lt;/li&gt;
&lt;li&gt;Data licensing&lt;/li&gt;
&lt;li&gt;News network&lt;/li&gt;
&lt;li&gt;Trading ecosystem&lt;/li&gt;
&lt;li&gt;Customer support&lt;/li&gt;
&lt;li&gt;Financial institution workflows&lt;/li&gt;
&lt;li&gt;Long-accumulated industry trust&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FinceptTerminal is more like an open-source financial terminal framework and research platform. Its strengths are extensibility, customization, localization, and integration with Python and AI workflows.&lt;/p&gt;
&lt;p&gt;It should not be understood simply as a free replacement for Bloomberg.&lt;/p&gt;
&lt;p&gt;A more reasonable view is this: if you want to study how financial terminals are built, or if you want to build your own financial analysis workbench, FinceptTerminal provides an open-source starting point.&lt;/p&gt;
&lt;h2 id=&#34;licensing-and-commercial-boundaries&#34;&gt;Licensing and commercial boundaries
&lt;/h2&gt;&lt;p&gt;The README mentions that the project uses AGPL and a commercial licensing model.&lt;/p&gt;
&lt;p&gt;AGPL has explicit requirements for network services and derivative works. If you only use it for learning, research, or personal experiments, it is usually not a big issue. But if you plan to turn it into a commercial product, internal platform, or external service, you need to read the license carefully.&lt;/p&gt;
&lt;p&gt;Financial tools often enter internal enterprise systems. In that case, open-source licenses, commercial licenses, data licenses, and model licenses all need to be reviewed together, instead of only asking whether the code can run.&lt;/p&gt;
&lt;h2 id=&#34;who-should-pay-attention&#34;&gt;Who should pay attention?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FinceptTerminal&lt;/code&gt; is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers interested in financial terminal architecture&lt;/li&gt;
&lt;li&gt;People doing quant research or financial engineering experiments&lt;/li&gt;
&lt;li&gt;People who want to embed Python analysis into desktop tools&lt;/li&gt;
&lt;li&gt;People exploring AI Agent + finance workflows&lt;/li&gt;
&lt;li&gt;Teams building internal financial analysis platforms&lt;/li&gt;
&lt;li&gt;People learning C++/Qt financial application development&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want to watch quotes for a few stocks, ordinary market software may be simpler.&lt;/p&gt;
&lt;p&gt;If you want to understand how a financial terminal integrates data, charts, models, Agents, trading, and workflows, this project is more worth studying.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch-when-using-it&#34;&gt;Things to watch when using it
&lt;/h2&gt;&lt;p&gt;First, distinguish research from trading.&lt;/p&gt;
&lt;p&gt;Research environments can tolerate experiments and failure. Trading environments cannot. Do not connect a research tool to real accounts before it has been verified.&lt;/p&gt;
&lt;p&gt;Second, take data licensing seriously.&lt;/p&gt;
&lt;p&gt;Financial data cannot simply be scraped and used commercially. Different data sources have different licensing terms, especially market data, news, financial statements, and exchange data.&lt;/p&gt;
&lt;p&gt;Third, do not blindly trust AI Agents.&lt;/p&gt;
&lt;p&gt;AI can help organize information, but financial conclusions must return to data, models, risk, and factual validation.&lt;/p&gt;
&lt;p&gt;Fourth, pay attention to security.&lt;/p&gt;
&lt;p&gt;If a tool connects to accounts, API keys, trading interfaces, or internal data, key management, permission isolation, logs, and network boundaries must be handled properly.&lt;/p&gt;
&lt;p&gt;Fifth, understand the open-source license.&lt;/p&gt;
&lt;p&gt;AGPL has important implications for commercial use and service deployment. Before productization, licensing issues should be handled first.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final thought
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;FinceptTerminal&lt;/code&gt; worth watching is that it puts financial terminals, Python quant research, AI Agents, data connectors, and node workflows into the same open-source desktop platform concept.&lt;/p&gt;
&lt;p&gt;It is better suited as a starting point for financial technology research and internal tool building than as a finished product that can directly replace professional financial terminals or live trading systems.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>mattpocock/skills: A Practical Skill Collection for AI Coding Agents</title>
        <link>https://knightli.com/en/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</link>
        <pubDate>Fri, 01 May 2026 03:43:20 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/mattpocock-skills-ai-agent-coding-workflows/</guid>
        <description>&lt;p&gt;&lt;code&gt;mattpocock/skills&lt;/code&gt; is a public collection of AI coding agent skills from Matt Pocock.&lt;/p&gt;
&lt;p&gt;It is not a full application, nor a new chat client. It is a set of working skills that can be used by AI coding assistants. The idea is practical: break common AI coding problems into small skills that an Agent can call in the right task, instead of relying on one huge prompt every time.&lt;/p&gt;
&lt;p&gt;If you often use Claude Code, Codex, Cursor, or similar AI coding tools, this kind of skills collection is worth watching. What really affects the AI coding experience is often not whether the model can write code, but whether it can move through the task in your preferred working style.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;AI coding assistants are powerful, but they can easily go wrong.&lt;/p&gt;
&lt;p&gt;Common situations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting code changes before understanding the requirement&lt;/li&gt;
&lt;li&gt;Modifying too many files at once&lt;/li&gt;
&lt;li&gt;Producing lots of explanation but little useful action&lt;/li&gt;
&lt;li&gt;Blindly trying things after errors&lt;/li&gt;
&lt;li&gt;Not running tests or checks in time&lt;/li&gt;
&lt;li&gt;Ignoring existing project patterns&lt;/li&gt;
&lt;li&gt;Introducing unnecessary abstractions to finish a task&lt;/li&gt;
&lt;li&gt;Writing code without truly reviewing risks afterward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These problems are not always caused by weak model capability. Often, the workflow is not constrained well enough.&lt;/p&gt;
&lt;p&gt;The value of &lt;code&gt;mattpocock/skills&lt;/code&gt; is that it turns these common failure modes into reusable operating methods, making the Agent behave more like an experienced engineering collaborator in different scenarios.&lt;/p&gt;
&lt;h2 id=&#34;what-are-skills&#34;&gt;What Are Skills
&lt;/h2&gt;&lt;p&gt;In the AI Agent context, a skill can be understood as a reusable task instruction, working method, or professional workflow.&lt;/p&gt;
&lt;p&gt;It does not have to be a code plugin, and it does not always need to call an external service. In many cases, a skill is simply a clear set of rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When to use it&lt;/li&gt;
&lt;li&gt;What to do first&lt;/li&gt;
&lt;li&gt;What not to do&lt;/li&gt;
&lt;li&gt;What output is required&lt;/li&gt;
&lt;li&gt;How to judge task completion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is somewhat like a normal prompt template, but the granularity is closer to a task capability.&lt;/p&gt;
&lt;p&gt;Normal prompt templates are usually copied and pasted manually by the user. Skills are better as part of an agent toolbox, allowing the Agent to choose the right workflow for the task.&lt;/p&gt;
&lt;h2 id=&#34;why-small-and-composable-matters&#34;&gt;Why Small and Composable Matters
&lt;/h2&gt;&lt;p&gt;The README emphasizes that these skills are small and composable.&lt;/p&gt;
&lt;p&gt;This direction matters.&lt;/p&gt;
&lt;p&gt;If one skill tries to handle everything, it quickly becomes a new giant prompt: long, vague, and hard to maintain. The advantage of small skills is clear boundaries.&lt;/p&gt;
&lt;p&gt;For example, one skill can focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Planning first&lt;/li&gt;
&lt;li&gt;Fixing TypeScript errors&lt;/li&gt;
&lt;li&gt;Running tests and fixing based on results&lt;/li&gt;
&lt;li&gt;Doing code review&lt;/li&gt;
&lt;li&gt;Summarizing project conventions&lt;/li&gt;
&lt;li&gt;Improving prompts&lt;/li&gt;
&lt;li&gt;Removing unnecessary abstractions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These skills can be combined according to the task. A simple task may need only one skill, while a complex task can chain several together.&lt;/p&gt;
&lt;p&gt;This is closer to real engineering work. You do not use the same workflow for every problem; you choose tools according to the situation.&lt;/p&gt;
&lt;h2 id=&#34;keeping-the-engineer-in-control&#34;&gt;Keeping the Engineer in Control
&lt;/h2&gt;&lt;p&gt;One important direction of this repository is keeping the engineer in control.&lt;/p&gt;
&lt;p&gt;AI coding can easily slide into two extremes.&lt;/p&gt;
&lt;p&gt;The first is fully manual. AI only helps write a few lines of code, while all context, planning, and verification still depend on you.&lt;/p&gt;
&lt;p&gt;The second is fully hands-off. You throw a task to an Agent, let it change a lot of things, and then face a diff that is hard to review.&lt;/p&gt;
&lt;p&gt;Skills help find a more stable middle position.&lt;/p&gt;
&lt;p&gt;They let AI take on more repetitive workflow, while still constraining it with rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understand the task before acting&lt;/li&gt;
&lt;li&gt;Read relevant files before editing&lt;/li&gt;
&lt;li&gt;Keep the modification scope controlled&lt;/li&gt;
&lt;li&gt;Report uncertainty&lt;/li&gt;
&lt;li&gt;Verify after changes&lt;/li&gt;
&lt;li&gt;Do not refactor unrelated code just to show off&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This does not weaken AI. It makes AI actions easier for humans to review and take over.&lt;/p&gt;
&lt;h2 id=&#34;alignment-problems&#34;&gt;Alignment Problems
&lt;/h2&gt;&lt;p&gt;The first kind of AI coding failure is often alignment failure.&lt;/p&gt;
&lt;p&gt;The user wants a very specific change, but the Agent may understand it as a larger refactor. The user only wants a bug fixed, but it changes styles along the way. The user wants existing architecture to be followed, but it introduces a new pattern.&lt;/p&gt;
&lt;p&gt;Skills can help the Agent do several things at the start of a task:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restate the goal&lt;/li&gt;
&lt;li&gt;Identify the impact scope&lt;/li&gt;
&lt;li&gt;Recognize existing implementation patterns&lt;/li&gt;
&lt;li&gt;Provide a plan&lt;/li&gt;
&lt;li&gt;Clarify what will not be done&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This step is like an engineer’s self-check before starting work.&lt;/p&gt;
&lt;p&gt;If the Agent cannot clearly state the task boundary and starts writing code directly, it is easy for the task to drift.&lt;/p&gt;
&lt;h2 id=&#34;feedback-loop-problems&#34;&gt;Feedback Loop Problems
&lt;/h2&gt;&lt;p&gt;AI should not write code through one-shot generation alone.&lt;/p&gt;
&lt;p&gt;In real development, feedback loops matter:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Change a small piece&lt;/li&gt;
&lt;li&gt;Run tests or type checks&lt;/li&gt;
&lt;li&gt;Read the errors&lt;/li&gt;
&lt;li&gt;Fix them&lt;/li&gt;
&lt;li&gt;Verify again&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Many Agents fail because they skip the middle feedback. They change many things at once and then summarize from intuition that “it should work.”&lt;/p&gt;
&lt;p&gt;Skills can make the feedback loop explicit. For example, they can require the Agent to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run relevant checks after modification&lt;/li&gt;
&lt;li&gt;Read error messages first if checks fail&lt;/li&gt;
&lt;li&gt;Avoid blindly changing unrelated files&lt;/li&gt;
&lt;li&gt;Re-verify after each round of fixes&lt;/li&gt;
&lt;li&gt;Report final verification results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes AI coding more like real debugging and less like one-shot writing.&lt;/p&gt;
&lt;h2 id=&#34;architecture-control-problems&#34;&gt;Architecture Control Problems
&lt;/h2&gt;&lt;p&gt;AI is good at generating abstractions, and also good at over-generating abstractions.&lt;/p&gt;
&lt;p&gt;To complete a small requirement, it may create a service layer, helper functions, configuration objects, type wrappers, and adapters, making the code much more complex than the requirement itself.&lt;/p&gt;
&lt;p&gt;This is especially dangerous in large projects. AI-generated abstractions often look “professional,” but they may not match existing project style and may increase maintenance cost.&lt;/p&gt;
&lt;p&gt;Good skills remind the Agent to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer existing patterns&lt;/li&gt;
&lt;li&gt;Avoid unnecessary new abstractions&lt;/li&gt;
&lt;li&gt;Avoid refactoring unrelated areas&lt;/li&gt;
&lt;li&gt;Match the change to the size of the task&lt;/li&gt;
&lt;li&gt;Understand the code before designing structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This reduces output that looks engineered but is actually harder to maintain.&lt;/p&gt;
&lt;h2 id=&#34;why-review-skills-matter&#34;&gt;Why Review Skills Matter
&lt;/h2&gt;&lt;p&gt;Writing code and reviewing code are different states.&lt;/p&gt;
&lt;p&gt;When an Agent writes code, it usually tends to prove that its implementation works. It may explain why the change should work, but it does not always actively look for risks.&lt;/p&gt;
&lt;p&gt;The purpose of a review skill is to switch the Agent’s role:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find potential bugs&lt;/li&gt;
&lt;li&gt;Find behavior regressions&lt;/li&gt;
&lt;li&gt;Find missing tests&lt;/li&gt;
&lt;li&gt;Find edge cases&lt;/li&gt;
&lt;li&gt;Find increased complexity&lt;/li&gt;
&lt;li&gt;Find inconsistencies with existing conventions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This matters for AI coding because AI generates code quickly. Without review, users can easily be overwhelmed by large diffs.&lt;/p&gt;
&lt;p&gt;A good review output should list issues first, not praise the implementation first. It should help the engineer decide whether the change can be merged.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-normal-rules-files&#34;&gt;Difference from Normal Rules Files
&lt;/h2&gt;&lt;p&gt;Many AI coding tools support rules, instructions, or memory.&lt;/p&gt;
&lt;p&gt;These files usually record long-term rules, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project tech stack&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Test commands&lt;/li&gt;
&lt;li&gt;Directories not to modify&lt;/li&gt;
&lt;li&gt;Answer style preferences&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills are more focused on task workflow.&lt;/p&gt;
&lt;p&gt;Rules tell the Agent “how to behave in the long term,” while skills tell the Agent “how to execute this kind of task.”&lt;/p&gt;
&lt;p&gt;The two work best together.&lt;/p&gt;
&lt;p&gt;For example, rules can say the project uses &lt;code&gt;pnpm test&lt;/code&gt;, while a review skill requires checking test coverage after changes. Then the Agent knows not only the command, but also when to use it.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;Repositories like &lt;code&gt;mattpocock/skills&lt;/code&gt; are suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Frequent use of AI coding tools&lt;/li&gt;
&lt;li&gt;Agents working on real codebases&lt;/li&gt;
&lt;li&gt;Reducing out-of-scope AI edits&lt;/li&gt;
&lt;li&gt;Making the Agent verify results more actively&lt;/li&gt;
&lt;li&gt;Turning your engineering habits into skills&lt;/li&gt;
&lt;li&gt;Learning how others design agent workflows&lt;/li&gt;
&lt;li&gt;Turning temporary prompts into a maintainable skill collection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally ask AI to write a small function, you may not need to maintain skills.&lt;/p&gt;
&lt;p&gt;But if you already treat AI as a long-term development partner, skills become increasingly important. They are like a reusable working method for the Agent.&lt;/p&gt;
&lt;h2 id=&#34;how-to-learn-from-this-repository&#34;&gt;How to Learn from This Repository
&lt;/h2&gt;&lt;p&gt;Even if you do not use every skill directly, you can learn several things from this repository.&lt;/p&gt;
&lt;p&gt;First, write down failure modes.&lt;/p&gt;
&lt;p&gt;Do not only complain when AI makes a mistake. Turn the patterns it often gets wrong into rules, so a skill can prevent them next time.&lt;/p&gt;
&lt;p&gt;Second, keep skills short.&lt;/p&gt;
&lt;p&gt;One skill should solve one clear problem. The shorter it is, the easier it is to call correctly and maintain.&lt;/p&gt;
&lt;p&gt;Third, make output format clear.&lt;/p&gt;
&lt;p&gt;If you want the Agent to list a plan first, execute next, and summarize verification results at the end, write that structure clearly. Vague requirements usually produce vague results.&lt;/p&gt;
&lt;p&gt;Fourth, keep human handoff points.&lt;/p&gt;
&lt;p&gt;A good skill should not let AI run too far alone. When there is uncertainty, expanded impact scope, failing tests, or a product decision, it should stop and explain the situation.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, do not turn everything into a skill.&lt;/p&gt;
&lt;p&gt;Too many skills make the system complex, and the Agent may not know which one to choose. Start with the highest-frequency and most painful scenarios.&lt;/p&gt;
&lt;p&gt;Second, skills need iteration.&lt;/p&gt;
&lt;p&gt;The first version of a skill may not be good. Watch how AI actually executes it, then gradually delete, add, and rewrite.&lt;/p&gt;
&lt;p&gt;Third, do not let skills replace engineering judgment.&lt;/p&gt;
&lt;p&gt;Skills can improve workflow, but they cannot guarantee correct implementation. Tests, review, build checks, and human judgment still matter.&lt;/p&gt;
&lt;p&gt;Fourth, pay attention to differences between Agents.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, Cursor, and Copilot support instructions, skills, and rules differently. The same idea can be reused, but the specific format should be adjusted for each tool.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;mattpocock/skills&lt;/code&gt; worth watching is not one magic prompt inside it, but the practical AI coding idea it demonstrates: break engineering experience into small skills, then let the Agent combine them by scenario.&lt;/p&gt;
&lt;p&gt;As AI coding moves from occasional assistance into daily workflow, skills become important tools for constraining Agents, keeping engineers in control, and improving feedback quality.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>free-claude-code: Connecting Claude Code to OpenRouter, DeepSeek, and Local Models Through a Proxy</title>
        <link>https://knightli.com/en/2026/05/01/free-claude-code-anthropic-compatible-proxy/</link>
        <pubDate>Fri, 01 May 2026 03:41:49 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/free-claude-code-anthropic-compatible-proxy/</guid>
        <description>&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; is an Anthropic-compatible proxy for &lt;code&gt;Claude Code&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Its idea is not to crack Claude Code, nor to provide an official free Claude service. Instead, it starts a local proxy service that looks like an Anthropic API, then forwards requests from Claude Code to other model backends. The README mentions backends such as NVIDIA NIM, OpenRouter, DeepSeek, LM Studio, llama.cpp, and Ollama.&lt;/p&gt;
&lt;p&gt;In simple terms, it solves this problem: you like the terminal experience of Claude Code, but want to send model requests to another provider or a local model.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Claude Code has an interaction model that works well for development tasks.&lt;/p&gt;
&lt;p&gt;It can read code, edit files, run commands, and move tasks forward based on project context inside the terminal. But many users may not always want to use the same model backend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They want to try different models on OpenRouter&lt;/li&gt;
&lt;li&gt;They want to use models such as DeepSeek to reduce cost&lt;/li&gt;
&lt;li&gt;They want to route requests to local Ollama&lt;/li&gt;
&lt;li&gt;They want to run local models through LM Studio or llama.cpp&lt;/li&gt;
&lt;li&gt;They want one proxy entry point in the development environment&lt;/li&gt;
&lt;li&gt;They want to compare different models inside the Claude Code workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; is positioned as a compatibility layer between Claude Code and these model services.&lt;/p&gt;
&lt;p&gt;Claude Code still sends requests in an Anthropic-like style, while the proxy adapts those requests to different backends.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How It Works
&lt;/h2&gt;&lt;p&gt;You can think of it as three layers:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The frontend is Claude Code&lt;/li&gt;
&lt;li&gt;The middle layer is the &lt;code&gt;free-claude-code&lt;/code&gt; proxy&lt;/li&gt;
&lt;li&gt;The backend is OpenRouter, DeepSeek, a local model, or another model service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Claude Code believes it is accessing an Anthropic-compatible API.&lt;/p&gt;
&lt;p&gt;After the proxy receives a request, it selects a target provider according to configuration, transforms the necessary fields, and returns the response to Claude Code.&lt;/p&gt;
&lt;p&gt;The benefit of this structure is that you do not need to modify Claude Code itself, and you do not need every model service to natively support Claude Code. As long as the proxy can align the interfaces, more models can be connected to the same workflow.&lt;/p&gt;
&lt;h2 id=&#34;supported-backends&#34;&gt;Supported Backends
&lt;/h2&gt;&lt;p&gt;The README lists these directions:&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;These backends represent different usage styles.&lt;/p&gt;
&lt;p&gt;OpenRouter is more like a model aggregation entry point, useful for testing different commercial and open-source models.&lt;/p&gt;
&lt;p&gt;DeepSeek is suitable for people who care about Chinese ability, coding ability, and cost.&lt;/p&gt;
&lt;p&gt;LM Studio, llama.cpp, and Ollama are more local-model oriented. They are suitable for running models on your own machine or inside an intranet, reducing dependence on external APIs and making offline experiments easier.&lt;/p&gt;
&lt;p&gt;NVIDIA NIM is more oriented toward enterprise and GPU inference deployment scenarios.&lt;/p&gt;
&lt;h2 id=&#34;why-an-anthropic-compatible-proxy&#34;&gt;Why an Anthropic-Compatible Proxy
&lt;/h2&gt;&lt;p&gt;Claude Code was originally designed around Anthropic interfaces and model conventions.&lt;/p&gt;
&lt;p&gt;If you want to connect it to other models, the most direct problem is interface mismatch:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Request fields differ&lt;/li&gt;
&lt;li&gt;Model names differ&lt;/li&gt;
&lt;li&gt;Streaming formats differ&lt;/li&gt;
&lt;li&gt;Tool use is represented differently&lt;/li&gt;
&lt;li&gt;Error response formats differ&lt;/li&gt;
&lt;li&gt;Token and context limits differ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where the proxy layer is useful.&lt;/p&gt;
&lt;p&gt;It keeps the interface seen by Claude Code close to the Anthropic shape, then adapts to the backend. For users, after configuring the proxy once, they can test different models inside the same Claude Code workflow.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;free-claude-code&lt;/code&gt; is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using the Claude Code terminal workflow&lt;/li&gt;
&lt;li&gt;Testing non-Anthropic models in Claude Code&lt;/li&gt;
&lt;li&gt;Reducing model calling costs&lt;/li&gt;
&lt;li&gt;Connecting Claude Code to OpenRouter&lt;/li&gt;
&lt;li&gt;Connecting to compatible model services such as DeepSeek&lt;/li&gt;
&lt;li&gt;Running local models through Ollama, LM Studio, or llama.cpp&lt;/li&gt;
&lt;li&gt;Giving a team one unified model proxy entry point&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only use official Claude Code normally and have no special needs around providers, cost, or local deployment, you may not need this type of proxy.&lt;/p&gt;
&lt;p&gt;But if you often compare models, or want Claude Code to connect to local and third-party models, this type of tool is useful.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-directly-using-openrouter-or-ollama&#34;&gt;Difference from Directly Using OpenRouter or Ollama
&lt;/h2&gt;&lt;p&gt;Using OpenRouter, Ollama, or LM Studio directly usually means chatting with a model or calling it through an API.&lt;/p&gt;
&lt;p&gt;The point of &lt;code&gt;free-claude-code&lt;/code&gt; is not to replace those services, but to connect them to the Claude Code development workflow.&lt;/p&gt;
&lt;p&gt;The difference is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You still use the Claude Code terminal experience&lt;/li&gt;
&lt;li&gt;AI can execute tasks around a code repository&lt;/li&gt;
&lt;li&gt;The model backend can be changed to another provider&lt;/li&gt;
&lt;li&gt;Local models can enter the Claude Code workflow&lt;/li&gt;
&lt;li&gt;Configuration is centralized in the proxy layer instead of changed in each tool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So it is more like a bridge than a new chat client.&lt;/p&gt;
&lt;h2 id=&#34;notes-about-local-models&#34;&gt;Notes About Local Models
&lt;/h2&gt;&lt;p&gt;Connecting Claude Code to local models is attractive, but there are real limitations.&lt;/p&gt;
&lt;p&gt;First, model capability differs.&lt;/p&gt;
&lt;p&gt;Claude Code tasks are usually not just chat. They include understanding code, planning modifications, editing files, and handling command output. Smaller local models may not complete these tasks reliably.&lt;/p&gt;
&lt;p&gt;Second, context window matters.&lt;/p&gt;
&lt;p&gt;Code tasks need a lot of context. If the model context is too small, it may fail to read full files, miss constraints, or lose background across multi-turn tasks.&lt;/p&gt;
&lt;p&gt;Third, tool use compatibility matters.&lt;/p&gt;
&lt;p&gt;Claude Code workflows depend on tool calls and structured behavior. Even if a backend model can chat, it may not follow tool-use protocols well.&lt;/p&gt;
&lt;p&gt;Fourth, speed and hardware matter.&lt;/p&gt;
&lt;p&gt;Local model speed depends on machine configuration, quantization, and model size. If code tasks respond too slowly, the experience drops noticeably.&lt;/p&gt;
&lt;p&gt;So local models are better for experiments, low-risk tasks, and specific scenarios. For truly complex coding tasks, choose carefully according to model capability.&lt;/p&gt;
&lt;h2 id=&#34;usage-boundaries&#34;&gt;Usage Boundaries
&lt;/h2&gt;&lt;p&gt;Projects like this are easy to misunderstand from the title, so the boundaries should be clear.&lt;/p&gt;
&lt;p&gt;First, it is not an official free Claude Code quota.&lt;/p&gt;
&lt;p&gt;It only forwards Claude Code requests to other model backends. When using OpenRouter, DeepSeek, NVIDIA NIM, or other APIs, you still need to follow the pricing, quotas, and terms of the corresponding services.&lt;/p&gt;
&lt;p&gt;Second, it is not a tool for bypassing authorization.&lt;/p&gt;
&lt;p&gt;When using any proxy tool, you should follow the licenses and terms of Claude Code, model providers, and the project itself. Do not interpret it as a way to avoid official restrictions.&lt;/p&gt;
&lt;p&gt;Third, the proxy handles your request content.&lt;/p&gt;
&lt;p&gt;Code, command output, and project context may pass through the proxy and backend services. When deploying, consider logs, keys, network boundaries, and privacy. For company code or sensitive projects, use a controlled environment.&lt;/p&gt;
&lt;p&gt;Fourth, model performance varies greatly.&lt;/p&gt;
&lt;p&gt;The same Claude Code operation may behave very differently after switching models. Do not assume every model can replace Claude.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-proxies-such-as-litellm&#34;&gt;Relationship with Proxies Such as LiteLLM
&lt;/h2&gt;&lt;p&gt;Conceptually, &lt;code&gt;free-claude-code&lt;/code&gt; belongs to the category of compatible interface proxies.&lt;/p&gt;
&lt;p&gt;The shared goal of such tools is to reduce coupling between upper-level applications and lower-level model services. The upper-level application faces a relatively unified interface, while backend providers can be switched by configuration.&lt;/p&gt;
&lt;p&gt;Different projects focus on different areas. Some are general model gateways, some focus on OpenAI-compatible APIs, and some specifically adapt tools such as Claude Code.&lt;/p&gt;
&lt;p&gt;What makes &lt;code&gt;free-claude-code&lt;/code&gt; worth noting is that it puts Claude Code directly at the center, rather than building a generic chat proxy.&lt;/p&gt;
&lt;h2 id=&#34;suitable-users&#34;&gt;Suitable Users
&lt;/h2&gt;&lt;p&gt;It is better suited to users who are comfortable tinkering:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Familiar with Claude Code&lt;/li&gt;
&lt;li&gt;Know how to configure API keys and model providers&lt;/li&gt;
&lt;li&gt;Understand proxy service startup and environment variables&lt;/li&gt;
&lt;li&gt;Can troubleshoot network, port, model name, and streaming issues&lt;/li&gt;
&lt;li&gt;Want to compare different models on coding tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want something that works out of the box, the official configuration is usually simpler.&lt;/p&gt;
&lt;p&gt;If you are willing to set up a proxy, switch models, tune parameters, and let Claude Code enter more model environments, this project is worth studying.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;free-claude-code&lt;/code&gt; is not in the word “free,” but in the bridge it builds between Claude Code and more model backends.&lt;/p&gt;
&lt;p&gt;When you want to keep the Claude Code development experience while testing OpenRouter, DeepSeek, local models, or enterprise inference services, an Anthropic-compatible proxy like this becomes useful.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Compound Engineering Plugin: Turning AI Coding into a Plan, Execute, Review Engineering Loop</title>
        <link>https://knightli.com/en/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</link>
        <pubDate>Fri, 01 May 2026 03:15:39 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/compound-engineering-plugin-ai-coding-workflow/</guid>
        <description>&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; is an open-source AI coding workflow plugin from Every Inc.&lt;/p&gt;
&lt;p&gt;It is not focused on “making AI write a piece of code faster.” Instead, it places AI coding inside a loop that looks more like an engineering team: plan first, implement next, review afterward, then preserve what was learned. For people who frequently use tools such as Claude Code, Codex, Cursor, and Copilot, this kind of plugin solves a workflow problem, not just a prompt problem.&lt;/p&gt;
&lt;p&gt;AI coding tools are becoming stronger, but in real projects the hardest part is often not generating code. It is making the AI continuously follow project rules, understand task boundaries, avoid repeating mistakes, and accumulate context across multiple iterations.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Many people use AI coding assistants in a flow like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Describe the requirement directly&lt;/li&gt;
&lt;li&gt;Ask AI to modify the code&lt;/li&gt;
&lt;li&gt;Check whether the result runs&lt;/li&gt;
&lt;li&gt;Add more explanation after errors appear&lt;/li&gt;
&lt;li&gt;Explain the background again in the next task&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This can work for small tasks, but it easily breaks down in complex projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requirements are not clarified before AI starts editing&lt;/li&gt;
&lt;li&gt;There is no systematic review after code changes&lt;/li&gt;
&lt;li&gt;Project conventions depend on repeated user reminders&lt;/li&gt;
&lt;li&gt;Similar mistakes happen again next time&lt;/li&gt;
&lt;li&gt;Multiple Agent tools lack a shared working method&lt;/li&gt;
&lt;li&gt;Experience is not turned into reusable rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; is designed for this class of problems. It splits AI coding into multiple stages, so an Agent is not only executing commands but participating in a more complete engineering process.&lt;/p&gt;
&lt;h2 id=&#34;what-is-compound-engineering&#34;&gt;What Is Compound Engineering
&lt;/h2&gt;&lt;p&gt;From the project README, Compound Engineering can be understood as a method for AI-assisted software development.&lt;/p&gt;
&lt;p&gt;It emphasizes a loop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plan: understand the goal, split the task, confirm the path&lt;/li&gt;
&lt;li&gt;Execute: modify code according to the plan, run commands, handle problems&lt;/li&gt;
&lt;li&gt;Review: check implementation quality, risks, and test coverage&lt;/li&gt;
&lt;li&gt;Learn: preserve experience as reusable rules for future work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This loop resembles how real engineering teams work.&lt;/p&gt;
&lt;p&gt;A reliable engineer does not receive a requirement and immediately make random changes, nor does he finish edits and hand them off without checking. He first judges the impact scope, then implements, then checks risks and test results, and finally records the traps he stepped into. AI Agents need similar constraints.&lt;/p&gt;
&lt;h2 id=&#34;why-a-plugin-is-needed&#34;&gt;Why a Plugin Is Needed
&lt;/h2&gt;&lt;p&gt;A prompt can tell AI, “Please plan before executing,” but prompts themselves are not always stable.&lt;/p&gt;
&lt;p&gt;Once a conversation becomes long and context becomes complex, the model may skip planning, ignore rules, or become overconfident in order to finish the task. The value of a plugin is that it fixes the workflow so different Agent environments can follow similar methods.&lt;/p&gt;
&lt;p&gt;This kind of plugin usually breaks a workflow into commands, rules, templates, or subflows. The user does not need to manually write the full prompt every time. Instead, a fixed entry point triggers a specific stage.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask the Agent to generate a plan first&lt;/li&gt;
&lt;li&gt;Implement step by step according to the plan&lt;/li&gt;
&lt;li&gt;Trigger review after edits&lt;/li&gt;
&lt;li&gt;Return to fixing after problems are found&lt;/li&gt;
&lt;li&gt;Write useful experience into memory or rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes AI coding feel more like controlled collaboration instead of one-off chat.&lt;/p&gt;
&lt;h2 id=&#34;supported-agent-environments&#34;&gt;Supported Agent Environments
&lt;/h2&gt;&lt;p&gt;The README mentions support for multiple AI coding environments, including:&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;This is worth noting.&lt;/p&gt;
&lt;p&gt;Many workflow tools are tied to one client. Once you switch tools, the rules cannot be reused. &lt;code&gt;Compound Engineering Plugin&lt;/code&gt; is more like a cross-Agent engineering method, bringing similar planning, execution, and review workflows to different tools.&lt;/p&gt;
&lt;p&gt;If you use multiple AI coding assistants at the same time, this unified workflow becomes more valuable. Different tools have different capabilities, but project conventions, review habits, and task decomposition methods should remain as consistent as possible.&lt;/p&gt;
&lt;h2 id=&#34;why-the-planning-stage-matters&#34;&gt;Why the Planning Stage Matters
&lt;/h2&gt;&lt;p&gt;The value of the planning stage is to stop AI from acting too early.&lt;/p&gt;
&lt;p&gt;In complex tasks, the truly important questions are usually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which files need to change?&lt;/li&gt;
&lt;li&gt;Which modules may be affected?&lt;/li&gt;
&lt;li&gt;What existing pattern should be followed?&lt;/li&gt;
&lt;li&gt;Are there tests?&lt;/li&gt;
&lt;li&gt;Where are the risks?&lt;/li&gt;
&lt;li&gt;Should documents be read first?&lt;/li&gt;
&lt;li&gt;Can the task be split into smaller steps?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If an Agent starts writing code before thinking through these questions, it can easily produce an implementation that looks finished but deviates from the project structure.&lt;/p&gt;
&lt;p&gt;A plan does not need to be long. A good plan should be short, specific, and executable. Its purpose is not to create documentation, but to give the following implementation clear boundaries.&lt;/p&gt;
&lt;h2 id=&#34;what-to-avoid-in-execution&#34;&gt;What to Avoid in Execution
&lt;/h2&gt;&lt;p&gt;When AI executes coding tasks, several problems appear easily:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refactoring unrelated code&lt;/li&gt;
&lt;li&gt;Overwriting existing user changes&lt;/li&gt;
&lt;li&gt;Only handling the happy path&lt;/li&gt;
&lt;li&gt;Ignoring error handling&lt;/li&gt;
&lt;li&gt;Not following the existing project style&lt;/li&gt;
&lt;li&gt;Not running necessary verification&lt;/li&gt;
&lt;li&gt;Blindly trying things after errors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A workflow plugin cannot guarantee these problems will disappear, but it can reduce their probability through rules and staged constraints.&lt;/p&gt;
&lt;p&gt;For example, the execution stage can require the Agent to proceed according to the plan. When it discovers something outside the plan, it should explain the risk first. When modifying shared modules, it should add tests or at least run related verification.&lt;/p&gt;
&lt;p&gt;This is especially important in large codebases. The faster AI writes code, the more process is needed to constrain its momentum.&lt;/p&gt;
&lt;h2 id=&#34;why-review-matters&#34;&gt;Why Review Matters
&lt;/h2&gt;&lt;p&gt;Many AI coding failures are not caused by code that cannot run at all. They come from detail problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edge cases are not handled&lt;/li&gt;
&lt;li&gt;State updates are inconsistent&lt;/li&gt;
&lt;li&gt;API contracts are changed quietly&lt;/li&gt;
&lt;li&gt;Tests do not cover key paths&lt;/li&gt;
&lt;li&gt;Error messages are unclear&lt;/li&gt;
&lt;li&gt;Performance or security risks are not mentioned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The review stage switches the Agent from “author mode” to “reviewer mode.”&lt;/p&gt;
&lt;p&gt;Author mode tends to justify its own implementation. Reviewer mode should actively look for holes, regression risks, and missing tests. Separating these two stages is more reliable than asking the same response to both implement and self-review.&lt;/p&gt;
&lt;p&gt;For users, review output is also more valuable. It helps you quickly judge whether the change is ready to merge or still needs rework.&lt;/p&gt;
&lt;h2 id=&#34;the-meaning-of-learning-and-memory&#34;&gt;The Meaning of Learning and Memory
&lt;/h2&gt;&lt;p&gt;The word “Compound” in the project name suggests an important idea: engineering experience should compound.&lt;/p&gt;
&lt;p&gt;If AI fixes a mistake only for the current task and then repeats the same mistake next time, the productivity gain is limited. A better approach is to preserve useful experience:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directory conventions in this project&lt;/li&gt;
&lt;li&gt;Debugging methods for a class of errors&lt;/li&gt;
&lt;li&gt;Test commands and notes&lt;/li&gt;
&lt;li&gt;Generated files that should not be touched&lt;/li&gt;
&lt;li&gt;Code style preferences&lt;/li&gt;
&lt;li&gt;Common implementation patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These experiences can become rules, memories, documents, or templates. In later tasks, the Agent reads these accumulated notes before starting work.&lt;/p&gt;
&lt;p&gt;This is the key to moving AI coding from “one-off Q&amp;amp;A” toward “long-term collaboration.”&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long-term use of AI Agents for coding&lt;/li&gt;
&lt;li&gt;Projects that receive many rounds of modifications&lt;/li&gt;
&lt;li&gt;Teams that want AI to plan before implementing&lt;/li&gt;
&lt;li&gt;Users who want review thinking after changes&lt;/li&gt;
&lt;li&gt;Teams that want a unified AI coding workflow&lt;/li&gt;
&lt;li&gt;People who use Claude Code, Codex, Cursor, and other tools at the same time&lt;/li&gt;
&lt;li&gt;Teams that want to turn project experience into reusable rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally ask AI to write a small script, the full workflow may feel heavy.&lt;/p&gt;
&lt;p&gt;But if you treat AI coding assistants as daily development partners, the plan, execute, review, learn loop becomes clearly useful.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-normal-prompt-templates&#34;&gt;Difference from Normal Prompt Templates
&lt;/h2&gt;&lt;p&gt;Normal prompt templates usually solve “how to state the task clearly.”&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Please think step by step&lt;/li&gt;
&lt;li&gt;Please read the files first&lt;/li&gt;
&lt;li&gt;Please keep code style consistent&lt;/li&gt;
&lt;li&gt;Please run tests&lt;/li&gt;
&lt;li&gt;Please summarize the changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These prompts are useful, but they still rely on the user using them correctly every time.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Compound Engineering Plugin&lt;/code&gt; operates more at the workflow layer. It organizes these requirements into a repeatable process and adapts them to different Agent tools. You are not writing prompts from scratch every time; you are moving tasks through a workflow.&lt;/p&gt;
&lt;p&gt;Simply put, a prompt template is like a reminder, while a workflow plugin is like a system.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, do not let the process become a burden.&lt;/p&gt;
&lt;p&gt;Small tasks do not always need a full plan and long review. A good workflow should adapt to task complexity: handle simple problems quickly and use the full loop for complex ones.&lt;/p&gt;
&lt;p&gt;Second, review cannot replace tests.&lt;/p&gt;
&lt;p&gt;Agent review can find many problems, but it can still miss real runtime errors. Final judgment still depends on tests, type checks, build results, and human review.&lt;/p&gt;
&lt;p&gt;Third, rules need continuous cleanup.&lt;/p&gt;
&lt;p&gt;Preserving experience is important, but rules can become noise as they accumulate. Outdated rules, duplicate rules, and temporary experience that only applied to one task should be cleaned up regularly.&lt;/p&gt;
&lt;p&gt;Fourth, cross-tool consistency does not mean everything is identical.&lt;/p&gt;
&lt;p&gt;Claude Code, Codex, Cursor, Copilot, and other tools have different capabilities and interaction models. What should be unified is the working method, not necessarily every command or configuration detail.&lt;/p&gt;
&lt;h2 id=&#34;suitable-teams&#34;&gt;Suitable Teams
&lt;/h2&gt;&lt;p&gt;If a team already allows AI Agents to modify real code, it is not enough to discuss only “which model is stronger.”&lt;/p&gt;
&lt;p&gt;The more important questions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does AI understand the task before editing?&lt;/li&gt;
&lt;li&gt;Does AI follow project boundaries during editing?&lt;/li&gt;
&lt;li&gt;Does AI actively review risks after editing?&lt;/li&gt;
&lt;li&gt;Can AI learn from historical mistakes?&lt;/li&gt;
&lt;li&gt;Does the team have unified Agent usage conventions?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where projects such as &lt;code&gt;Compound Engineering Plugin&lt;/code&gt; matter. They move AI coding one step away from personal tricks and toward reusable team workflow.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;Compound Engineering Plugin&lt;/code&gt; worth watching is not that it adds another AI coding command, but that it organizes AI coding into an engineering workflow that can improve over time.&lt;/p&gt;
&lt;p&gt;When AI Agents start participating in real projects, planning, execution, review, and experience preservation become more important than one-off code generation.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>TradingAgents-CN: A Multi-Agent Financial Trading Research Framework for Chinese Users</title>
        <link>https://knightli.com/en/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/en/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/</guid>
        <description>&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; is a multi-agent financial trading research framework for Chinese users.&lt;/p&gt;
&lt;p&gt;Its goal is not to give a simple answer such as “which stock should I buy.” Instead, it uses multiple AI Agents to simulate a more complete financial analysis team: one role looks at fundamentals, another looks at technicals, another follows news and sentiment, while others handle risk and final decisions. For people studying LLM + Agent + financial analysis, this kind of project is a good experimental entry point.&lt;/p&gt;
&lt;p&gt;One thing should be clear first: tools like this are suitable for learning, research, and auxiliary analysis. They should not be treated as real trading advice. Financial markets involve risk, and model outputs can be wrong, delayed, or overconfident.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Normal chat models can also analyze stocks.&lt;/p&gt;
&lt;p&gt;You can directly ask, “Help me analyze whether a company is worth buying.” The model may return an answer that looks complete. But this approach has several problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The analysis chain is not transparent&lt;/li&gt;
&lt;li&gt;Different dimensions are easily mixed together&lt;/li&gt;
&lt;li&gt;There is no clear role division&lt;/li&gt;
&lt;li&gt;There is little collision between positive and negative views&lt;/li&gt;
&lt;li&gt;Risk warnings may become formulaic&lt;/li&gt;
&lt;li&gt;It is hard to reproduce the same analysis workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; breaks financial analysis into multiple roles. Different Agents are responsible for different perspectives, and the final analysis is formed through collaboration, discussion, and summarization.&lt;/p&gt;
&lt;p&gt;This is closer to a real investment research workflow. An investment judgment usually does not rely on one news item or one technical indicator. It needs company fundamentals, market environment, price movement, capital sentiment, policy risk, and position control.&lt;/p&gt;
&lt;h2 id=&#34;what-multi-agent-analysis-means&#34;&gt;What Multi-Agent Analysis Means
&lt;/h2&gt;&lt;p&gt;Multi-agent analysis is not simply asking several models to speak in turn.&lt;/p&gt;
&lt;p&gt;The more valuable approach is assigning clear responsibilities to different Agents. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Market analysis Agent: focuses on market trends, price changes, and the market environment&lt;/li&gt;
&lt;li&gt;Fundamental analysis Agent: focuses on business, financial data, and long-term value&lt;/li&gt;
&lt;li&gt;News analysis Agent: focuses on announcements, news, public sentiment, and event impact&lt;/li&gt;
&lt;li&gt;Technical analysis Agent: focuses on trends, indicators, support and resistance, and trading signals&lt;/li&gt;
&lt;li&gt;Risk management Agent: focuses on volatility, drawdown, positions, and uncertainty&lt;/li&gt;
&lt;li&gt;Decision Agent: combines different views and forms a final judgment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This structure reduces the problem of a single model trying to “say everything in one breath.”&lt;/p&gt;
&lt;p&gt;When different roles analyze the same target, the system can present multi-dimensional judgments more easily and expose disagreements more naturally. For learners, this is more useful than reading only a summary.&lt;/p&gt;
&lt;h2 id=&#34;why-a-chinese-version-is-needed&#34;&gt;Why a Chinese Version Is Needed
&lt;/h2&gt;&lt;p&gt;Financial analysis is deeply connected to language and market context.&lt;/p&gt;
&lt;p&gt;Chinese users care about different data sources, market habits, stock names, trading systems, news expressions, and financial terms compared with English environments. Using an English framework directly often creates several problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chinese stock names and codes are not handled smoothly&lt;/li&gt;
&lt;li&gt;A-share, Hong Kong stock, and US stock contexts are mixed&lt;/li&gt;
&lt;li&gt;Chinese financial news is not understood stably&lt;/li&gt;
&lt;li&gt;Domestic data sources are inconvenient to access&lt;/li&gt;
&lt;li&gt;Output style does not match Chinese users’ reading habits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value of &lt;code&gt;TradingAgents-CN&lt;/code&gt; is that it adapts the multi-agent financial analysis workflow for Chinese users. It makes it easier for Chinese users to set up, run, and understand the entire trading analysis experiment process.&lt;/p&gt;
&lt;h2 id=&#34;what-it-can-be-used-for&#34;&gt;What It Can Be Used For
&lt;/h2&gt;&lt;p&gt;This project is more suitable for research and auxiliary analysis than for automatic order execution.&lt;/p&gt;
&lt;p&gt;Suitable uses include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learning how multi-agent systems collaborate&lt;/li&gt;
&lt;li&gt;Studying LLM performance in financial analysis&lt;/li&gt;
&lt;li&gt;Organizing stock information from multiple perspectives&lt;/li&gt;
&lt;li&gt;Comparing different models on investment research tasks&lt;/li&gt;
&lt;li&gt;Building your own financial analysis Agent prototype&lt;/li&gt;
&lt;li&gt;Reviewing historical information and risk points for a target&lt;/li&gt;
&lt;li&gt;Practicing how to break investment research workflows into executable tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are learning quantitative trading, financial engineering, AI Agent systems, or LLM application development, this kind of project can help you understand the engineering structure behind an “AI investment research assistant.”&lt;/p&gt;
&lt;h2 id=&#34;what-it-is-not-suitable-for&#34;&gt;What It Is Not Suitable For
&lt;/h2&gt;&lt;p&gt;It is not suitable as a guaranteed profit tool.&lt;/p&gt;
&lt;p&gt;It is especially not suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buying or selling with full position based directly on output&lt;/li&gt;
&lt;li&gt;Replacing your own risk judgment with model conclusions&lt;/li&gt;
&lt;li&gt;Treating short-term price predictions as certain results&lt;/li&gt;
&lt;li&gt;Ignoring transaction costs, slippage, and liquidity&lt;/li&gt;
&lt;li&gt;Connecting to a real account without backtesting&lt;/li&gt;
&lt;li&gt;Replacing a long-term investment strategy with one analysis result&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLMs are good at organizing information, generating explanations, and simulating reasoning workflows, but they do not naturally have stable market prediction ability. Financial markets contain strong noise, sudden events, and behavioral games. Model output can only be one reference material.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-normal-quant-frameworks&#34;&gt;Difference from Normal Quant Frameworks
&lt;/h2&gt;&lt;p&gt;Traditional quantitative frameworks focus more on data, factors, backtesting, portfolio optimization, and trading execution.&lt;/p&gt;
&lt;p&gt;For example, you may define strategy rules such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Moving average breakout&lt;/li&gt;
&lt;li&gt;Momentum factor&lt;/li&gt;
&lt;li&gt;Value factor&lt;/li&gt;
&lt;li&gt;Volatility filter&lt;/li&gt;
&lt;li&gt;Stop loss and take profit&lt;/li&gt;
&lt;li&gt;Position management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then you use historical data to backtest strategy performance.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; is more of an “agent analysis framework.” It focuses on how multiple LLM Agents collaborate around financial tasks, how to simulate investment research discussions, and how to organize news, fundamentals, technicals, and risk judgment.&lt;/p&gt;
&lt;p&gt;The two are not replacements for each other.&lt;/p&gt;
&lt;p&gt;A more realistic usage is: traditional quant systems handle verifiable rules and backtesting, while Agent systems handle information organization, report generation, viewpoint comparison, and decision support. Whether it can enter real trading still requires rigorous backtesting, risk control, and human review.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-directly-asking-chatgpt&#34;&gt;Difference from Directly Asking ChatGPT
&lt;/h2&gt;&lt;p&gt;Directly asking a model has the lowest barrier, but the process is loose.&lt;/p&gt;
&lt;p&gt;You ask once, it answers once. Change the wording, and the conclusion may change. It is hard to ensure that it analyzes from the same dimensions every time, and hard to make it consistently play multiple mutually checking roles.&lt;/p&gt;
&lt;p&gt;The value of &lt;code&gt;TradingAgents-CN&lt;/code&gt; is that it structures the analysis process:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Roles are clearer&lt;/li&gt;
&lt;li&gt;Steps are more reproducible&lt;/li&gt;
&lt;li&gt;Information sources are easier to organize&lt;/li&gt;
&lt;li&gt;Viewpoint collision is more natural&lt;/li&gt;
&lt;li&gt;Risk checks can be handled separately&lt;/li&gt;
&lt;li&gt;Output looks more like the result of an investment research workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is useful for learning and research. You can observe how different Agents affect the final conclusion, replace models, adjust prompts, modify role division, and compare how results change.&lt;/p&gt;
&lt;h2 id=&#34;risks-to-watch&#34;&gt;Risks to Watch
&lt;/h2&gt;&lt;p&gt;First, data quality.&lt;/p&gt;
&lt;p&gt;Financial analysis depends heavily on data. If market data, financial reports, news, or announcements are incomplete or delayed, even a fluent Agent analysis may be built on the wrong foundation.&lt;/p&gt;
&lt;p&gt;Second, model hallucination.&lt;/p&gt;
&lt;p&gt;LLMs may fabricate facts, misunderstand data meaning, or treat old information as new. When specific stocks are involved, you must verify against data sources.&lt;/p&gt;
&lt;p&gt;Third, over-explanation.&lt;/p&gt;
&lt;p&gt;Models are good at giving explanations that sound reasonable, but market price changes may not actually be caused by the reasons listed. Do not mistake post-hoc explanation for causal proof.&lt;/p&gt;
&lt;p&gt;Fourth, the gap between backtesting and live trading.&lt;/p&gt;
&lt;p&gt;Even if a strategy performs well on historical data, real trading still involves slippage, fees, liquidity, suspensions, limit-up and limit-down rules, and extreme market conditions.&lt;/p&gt;
&lt;p&gt;Fifth, license and commercial boundaries.&lt;/p&gt;
&lt;p&gt;The README mentions that the project uses a mixed license. Personal learning, research, and commercial use may have different conditions. If you plan to put it into a commercial product or service, read the project license carefully first.&lt;/p&gt;
&lt;h2 id=&#34;who-should-study-it&#34;&gt;Who Should Study It
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TradingAgents-CN&lt;/code&gt; is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers who want to learn AI Agent architecture&lt;/li&gt;
&lt;li&gt;People studying LLM financial analysis capability&lt;/li&gt;
&lt;li&gt;Quant traders who want to add natural-language analysis&lt;/li&gt;
&lt;li&gt;Teams building investment research support tools&lt;/li&gt;
&lt;li&gt;People interested in how multi-role collaboration affects decisions&lt;/li&gt;
&lt;li&gt;Users who want to experiment with trading Agents in a Chinese environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is only to get a simple buy/sell suggestion, this project is not the best way to use it. What is more worth studying is its workflow, roles, collaboration, and risk control, not the conclusion of one output.&lt;/p&gt;
&lt;h2 id=&#34;possible-extensions&#34;&gt;Possible Extensions
&lt;/h2&gt;&lt;p&gt;Frameworks like this have many possible extension directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Connect more reliable data sources&lt;/li&gt;
&lt;li&gt;Add local model support&lt;/li&gt;
&lt;li&gt;Add a backtesting module&lt;/li&gt;
&lt;li&gt;Refine rules for A-shares, Hong Kong stocks, and US stocks&lt;/li&gt;
&lt;li&gt;Add industry analysis Agents&lt;/li&gt;
&lt;li&gt;Add portfolio management and position control&lt;/li&gt;
&lt;li&gt;Improve report citations and data traceability&lt;/li&gt;
&lt;li&gt;Combine Agent conclusions with traditional quant signals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A truly valuable financial AI system usually does not let the model decide everything alone. It embeds the model into a workflow that is verifiable, traceable, and risk-controlled.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;TradingAgents-CN&lt;/code&gt; worth watching is not whether it can predict the next candlestick, but that it breaks financial analysis into a multi-agent collaboration workflow.&lt;/p&gt;
&lt;p&gt;It is more reasonable to treat it as a learning and research tool than as an automatic money-making machine.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>qmd: Local Markdown Document Search for AI Agents</title>
        <link>https://knightli.com/en/2026/05/01/qmd-markdown-search-for-ai-agents/</link>
        <pubDate>Fri, 01 May 2026 03:12:57 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/qmd-markdown-search-for-ai-agents/</guid>
        <description>&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; is a search tool for local Markdown documents, with AI Agents as its main target users.&lt;/p&gt;
&lt;p&gt;It solves a specific problem: when a project contains many &lt;code&gt;.md&lt;/code&gt; documents, AI coding assistants often do not know which file to read, which section to cite, or which instructions are current. Full-text grep can find keywords, but it does not understand meaning well. Putting all documentation into the context wastes window space and easily introduces irrelevant content.&lt;/p&gt;
&lt;p&gt;The idea behind &lt;code&gt;qmd&lt;/code&gt; is to index Markdown documents first, then return the most relevant snippets through a search interface for AI to use. It can be used as a command-line tool, integrated through an SDK, or exposed as an MCP Server for clients that support MCP.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Real projects usually have more than one or two README files.&lt;/p&gt;
&lt;p&gt;You may have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecture notes&lt;/li&gt;
&lt;li&gt;API documentation&lt;/li&gt;
&lt;li&gt;Development conventions&lt;/li&gt;
&lt;li&gt;Deployment procedures&lt;/li&gt;
&lt;li&gt;Architecture decision records&lt;/li&gt;
&lt;li&gt;Troubleshooting notes&lt;/li&gt;
&lt;li&gt;Requirement documents&lt;/li&gt;
&lt;li&gt;AI usage instructions&lt;/li&gt;
&lt;li&gt;Toolchain notes and reminders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Humans can browse documents through directories, but AI Agents need a clear retrieval entry point. Otherwise, they may:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read the wrong document&lt;/li&gt;
&lt;li&gt;Miss key constraints&lt;/li&gt;
&lt;li&gt;Use outdated instructions&lt;/li&gt;
&lt;li&gt;Put irrelevant content into context&lt;/li&gt;
&lt;li&gt;Invent rules in answers based on experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where &lt;code&gt;qmd&lt;/code&gt; is useful. It turns local Markdown documents into a searchable knowledge source, so AI can search first when it needs context, then answer or act based on matched snippets.&lt;/p&gt;
&lt;h2 id=&#34;search-approach&#34;&gt;Search Approach
&lt;/h2&gt;&lt;p&gt;The README says &lt;code&gt;qmd&lt;/code&gt; combines several retrieval methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BM25 keyword search&lt;/li&gt;
&lt;li&gt;Vector search&lt;/li&gt;
&lt;li&gt;LLM reranking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;BM25 is good for clear keywords. If you search for a function name, configuration key, error code, or file name, it is usually direct and effective.&lt;/p&gt;
&lt;p&gt;Vector search is better for semantic questions. For example, if you ask “how does this project handle permission validation,” the documentation may not contain that exact phrase, but it may contain related descriptions about authentication, access control, and role checks.&lt;/p&gt;
&lt;p&gt;LLM reranking is used to reorder candidate results. The first two steps find potentially relevant content, and the model then judges which snippets best match the current question.&lt;/p&gt;
&lt;p&gt;This combination is more suitable for AI Agents than plain keyword search, because Agent questions are often task intentions rather than fixed keywords.&lt;/p&gt;
&lt;h2 id=&#34;why-markdown&#34;&gt;Why Markdown
&lt;/h2&gt;&lt;p&gt;Markdown is the most common documentation format in development projects.&lt;/p&gt;
&lt;p&gt;It is simple enough to store in Git and structured enough to include headings, lists, code blocks, links, and tables. For AI, Markdown is also easier to parse than PDFs, web snapshots, or screenshots.&lt;/p&gt;
&lt;p&gt;Because &lt;code&gt;qmd&lt;/code&gt; focuses on Markdown, it can process developer documentation more directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Split content by headings and paragraphs&lt;/li&gt;
&lt;li&gt;Preserve code blocks&lt;/li&gt;
&lt;li&gt;Preserve document paths&lt;/li&gt;
&lt;li&gt;Return snippets suitable for citation&lt;/li&gt;
&lt;li&gt;Let the Agent know which document an answer comes from&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more stable than asking AI to randomly scan a repository, and it saves more context than putting every document into a prompt at once.&lt;/p&gt;
&lt;h2 id=&#34;three-entry-points&#34;&gt;Three Entry Points
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; provides three entry points: CLI, SDK, and MCP Server.&lt;/p&gt;
&lt;h3 id=&#34;1-cli&#34;&gt;1. CLI
&lt;/h3&gt;&lt;p&gt;The CLI is suitable for direct terminal use and for scripts.&lt;/p&gt;
&lt;p&gt;You can index a documentation directory and then search related content with commands. For developers, the CLI is the easiest way to validate the tool: first see whether it can find the correct documents, then consider integrating it into more complex workflows.&lt;/p&gt;
&lt;p&gt;This kind of tool is useful inside local projects. For example, before changing code you can search design documents; before debugging, search troubleshooting notes; before writing an API, search API conventions.&lt;/p&gt;
&lt;h3 id=&#34;2-sdk&#34;&gt;2. SDK
&lt;/h3&gt;&lt;p&gt;The SDK is suitable for integrating &lt;code&gt;qmd&lt;/code&gt; into your own tools.&lt;/p&gt;
&lt;p&gt;If you are building an internal development assistant, documentation Q&amp;amp;A system, code review bot, or project knowledge base, you can call the search capability through the SDK instead of asking users to run commands directly.&lt;/p&gt;
&lt;p&gt;The SDK gives more control over:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search directories&lt;/li&gt;
&lt;li&gt;Query content&lt;/li&gt;
&lt;li&gt;Number of returned results&lt;/li&gt;
&lt;li&gt;Result format&lt;/li&gt;
&lt;li&gt;Whether to pass results to a model for summarization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This fits scenarios that need deeper integration.&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-server&#34;&gt;3. MCP Server
&lt;/h3&gt;&lt;p&gt;MCP is the most valuable entry point for AI Agents.&lt;/p&gt;
&lt;p&gt;Through MCP Server, clients that support MCP can call &lt;code&gt;qmd&lt;/code&gt; as a document search tool. This lets an Agent search local Markdown documents before acting, instead of guessing project rules.&lt;/p&gt;
&lt;p&gt;A typical workflow could be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The user asks AI to modify a feature&lt;/li&gt;
&lt;li&gt;AI calls &lt;code&gt;qmd&lt;/code&gt; to search related design documents&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qmd&lt;/code&gt; returns the most relevant Markdown snippets&lt;/li&gt;
&lt;li&gt;AI modifies code based on those document constraints&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is more natural than manually pasting all rules into a new session, and it is better suited to long-term projects.&lt;/p&gt;
&lt;h2 id=&#34;suitable-scenarios&#34;&gt;Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Projects with many Markdown documents&lt;/li&gt;
&lt;li&gt;AI Agents that often need to look up project rules&lt;/li&gt;
&lt;li&gt;Teams that want AI answers to cite local documents&lt;/li&gt;
&lt;li&gt;Documentation spread across multiple directories&lt;/li&gt;
&lt;li&gt;Reusing the same retrieval capability across CLI, SDK, and MCP&lt;/li&gt;
&lt;li&gt;Reducing AI coding assistants’ tendency to guess project conventions&lt;/li&gt;
&lt;li&gt;Connecting local knowledge bases to Claude Desktop, Claude Code, or other MCP clients&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your project only has one short README, directly asking AI to read the file is enough.&lt;/p&gt;
&lt;p&gt;But if the documentation has grown to dozens or hundreds of files, or if you want the Agent to search documents before acting, this type of indexing tool becomes meaningful.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-grep&#34;&gt;Difference from grep
&lt;/h2&gt;&lt;p&gt;Tools such as &lt;code&gt;grep&lt;/code&gt; and &lt;code&gt;rg&lt;/code&gt; are excellent for exact search.&lt;/p&gt;
&lt;p&gt;If you know you need &lt;code&gt;DATABASE_URL&lt;/code&gt;, &lt;code&gt;authMiddleware&lt;/code&gt;, &lt;code&gt;404&lt;/code&gt;, or &lt;code&gt;docker compose&lt;/code&gt;, keyword search is usually the fastest.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; is better when you do not know the exact words.&lt;/p&gt;
&lt;p&gt;For example, you may ask:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the release process for this project?&lt;/li&gt;
&lt;li&gt;What conventions apply when adding a new API?&lt;/li&gt;
&lt;li&gt;Was the caching strategy documented before?&lt;/li&gt;
&lt;li&gt;Which documents should AI read before changing code?&lt;/li&gt;
&lt;li&gt;Where is the design background for a module?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These questions usually require semantic retrieval rather than matching one word. The BM25 + vector + reranking combination in &lt;code&gt;qmd&lt;/code&gt; is intended to make these questions find the right context more easily.&lt;/p&gt;
&lt;h2 id=&#34;relationship-with-rag&#34;&gt;Relationship with RAG
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; can be seen as a lightweight RAG component for Markdown documents.&lt;/p&gt;
&lt;p&gt;It does not try to build a full Q&amp;amp;A system for you. It focuses on one step: finding relevant document snippets. How those snippets are used afterward can be handled by CLI, SDK, an MCP client, or your own Agent workflow.&lt;/p&gt;
&lt;p&gt;This positioning is practical. Many projects do not need a large knowledge base system; they only need AI to search local documents more accurately and quickly, then bring the results back into the current task.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, documentation quality still matters.&lt;/p&gt;
&lt;p&gt;A retrieval tool can only find existing content. If the documents are outdated, duplicated, or contradictory, AI may still receive wrong context. Before connecting &lt;code&gt;qmd&lt;/code&gt; to an Agent, clean up the key documents first.&lt;/p&gt;
&lt;p&gt;Second, do not make the index scope too broad.&lt;/p&gt;
&lt;p&gt;Indexing every Markdown file in the repository is not always better. Dependency documentation, temporary notes, and old draft solutions can pollute results. A better approach is to define which directories are trusted documentation sources.&lt;/p&gt;
&lt;p&gt;Third, search results should preserve sources.&lt;/p&gt;
&lt;p&gt;When AI uses document snippets, it should know which file and section they came from. This makes human review traceable and reduces the risk of “this looks like a document conclusion, but it is only a model summary.”&lt;/p&gt;
&lt;p&gt;Fourth, do not replace human judgment completely.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qmd&lt;/code&gt; can improve context recall quality, but it is not a replacement for the source of truth. Important changes still require current code, test results, and the latest requirements.&lt;/p&gt;
&lt;h2 id=&#34;suitable-teams&#34;&gt;Suitable Teams
&lt;/h2&gt;&lt;p&gt;If your team has already started putting AI Agents into daily development workflows, tools like &lt;code&gt;qmd&lt;/code&gt; can be valuable.&lt;/p&gt;
&lt;p&gt;They are especially suitable for teams that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write a lot of documentation&lt;/li&gt;
&lt;li&gt;Have a long project history&lt;/li&gt;
&lt;li&gt;Need both new people and AI to quickly understand context&lt;/li&gt;
&lt;li&gt;Maintain architecture decision records&lt;/li&gt;
&lt;li&gt;Have many Markdown convention documents&lt;/li&gt;
&lt;li&gt;Want AI to check rules before modifying code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its goal is not to make AI all-knowing. It is to make AI guess less and look things up more.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;qmd&lt;/code&gt; is that it turns local Markdown documents into a search entry point that AI Agents can reliably call.&lt;/p&gt;
&lt;p&gt;When project documentation moves from “instructions for humans” to “a context source searchable by both humans and AI,” AI coding assistants can follow project rules more easily.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code Hooks Mastery: An Introduction to 13 Hook Lifecycle Events and Automation Control</title>
        <link>https://knightli.com/en/2026/05/01/claude-code-hooks-mastery-guide/</link>
        <pubDate>Fri, 01 May 2026 03:11:27 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/claude-code-hooks-mastery-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; is a learning project focused on &lt;code&gt;Claude Code Hooks&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is not just a collection of scattered scripts. It explains the Claude Code hook lifecycle, configuration methods, script patterns, and common automation scenarios in one place. For people who want Claude Code to be more controllable and more like an engineering assistant, this kind of material is worth reading.&lt;/p&gt;
&lt;p&gt;Claude Code can already read code, edit files, and run commands by default. But if you want it to automatically check permissions, block risky operations, inject project rules, run tests, or remind it of team conventions at specific moments, chat instructions alone are not stable enough. The value of hooks is that they turn “rules I need to remind the AI about every time” into executable workflow.&lt;/p&gt;
&lt;h2 id=&#34;what-problems-hooks-solve&#34;&gt;What Problems Hooks Solve
&lt;/h2&gt;&lt;p&gt;After using Claude Code for a while, common pain points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Every new session needs the same project rules repeated&lt;/li&gt;
&lt;li&gt;You worry that it may run commands it should not run&lt;/li&gt;
&lt;li&gt;You want checks before and after file edits&lt;/li&gt;
&lt;li&gt;You want formatting, tests, or security scans before committing&lt;/li&gt;
&lt;li&gt;You want team conventions as fixed workflow instead of verbal reminders&lt;/li&gt;
&lt;li&gt;You want context before and after tool calls for logging or blocking&lt;/li&gt;
&lt;li&gt;You want complex tasks to trigger subagents or dedicated scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hooks are designed for these “automatic actions at fixed moments.”&lt;/p&gt;
&lt;p&gt;You can think of them as event hooks in the Claude Code workflow. When a session starts, a user submits a prompt, the model is about to call a tool, a tool call finishes, or an agent is about to stop, Claude Code can run the scripts you configured.&lt;/p&gt;
&lt;h2 id=&#34;the-13-hook-lifecycle-events&#34;&gt;The 13 Hook Lifecycle Events
&lt;/h2&gt;&lt;p&gt;One of the main points in the project README is that it systematically covers the 13 Claude Code hook events.&lt;/p&gt;
&lt;p&gt;These events span multiple stages, from session startup to tool calls, and from user input to agent termination. By purpose, they can be roughly grouped as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Session startup: initialize environment and inject project context&lt;/li&gt;
&lt;li&gt;User input: inspect prompts, add rules, and perform auditing&lt;/li&gt;
&lt;li&gt;Before tool calls: permission checks, command blocking, and security validation&lt;/li&gt;
&lt;li&gt;After tool calls: log results, trigger formatting, and run verification&lt;/li&gt;
&lt;li&gt;Task ending: summarize, clean up, notify, or save state&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This lifecycle design means you do not need to put every rule into one very long prompt.&lt;/p&gt;
&lt;p&gt;For example, permission control should happen before tool calls. Formatting checks are better after file edits. Project rule injection is better at session startup or after user input. Putting rules at the right hook point is usually more reliable than stuffing everything into a system prompt.&lt;/p&gt;
&lt;h2 id=&#34;where-configuration-lives&#34;&gt;Where Configuration Lives
&lt;/h2&gt;&lt;p&gt;Claude Code hooks are usually configured through settings files.&lt;/p&gt;
&lt;p&gt;Common locations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User-level configuration: &lt;code&gt;~/.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Project-level configuration: &lt;code&gt;.claude/settings.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;User-level configuration is good for personal preferences, such as general security rules, command blocking, and log paths.&lt;/p&gt;
&lt;p&gt;Project-level configuration is better for repository-specific rules, such as which tests must run, which directories cannot be edited, how generated files are handled, and which checks are required before commit.&lt;/p&gt;
&lt;p&gt;If you use Claude Code in a team, it is better to put project-level configuration into the repository. That way everyone opens the project with the same AI collaboration constraints instead of relying on personal memory.&lt;/p&gt;
&lt;h2 id=&#34;why-single-file-scripts-matter&#34;&gt;Why Single-File Scripts Matter
&lt;/h2&gt;&lt;p&gt;The project emphasizes &lt;code&gt;UV&lt;/code&gt; single-file scripts.&lt;/p&gt;
&lt;p&gt;The benefit is simple deployment. A single Python file can declare dependencies and run without maintaining a complex environment for one hook. This fits hooks well because many hooks only do one small thing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check whether a command is allowed&lt;/li&gt;
&lt;li&gt;Determine whether a file path is safe&lt;/li&gt;
&lt;li&gt;Read project rules and return them to Claude&lt;/li&gt;
&lt;li&gt;Scan output for sensitive information&lt;/li&gt;
&lt;li&gt;Run formatting or tests after edits&lt;/li&gt;
&lt;li&gt;Write events to logs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The smaller a hook script is, the easier it is to maintain, and the less likely it is to become a new complicated system.&lt;/p&gt;
&lt;h2 id=&#34;what-automation-can-hooks-do&#34;&gt;What Automation Can Hooks Do
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;claude-code-hooks-mastery&lt;/code&gt; shows many directions. In real work, the most common ones are below.&lt;/p&gt;
&lt;h3 id=&#34;1-permission-and-security-control&#34;&gt;1. Permission and Security Control
&lt;/h3&gt;&lt;p&gt;This is the most direct use of hooks.&lt;/p&gt;
&lt;p&gt;Before Claude Code executes a command, a hook can inspect the command content. If it contains high-risk actions such as deletion, reset, cleanup, or overwrite, it can block execution or require manual confirmation.&lt;/p&gt;
&lt;p&gt;Similar rules can apply to file paths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not modify production configuration&lt;/li&gt;
&lt;li&gt;Do not write to secret files&lt;/li&gt;
&lt;li&gt;Do not delete migration scripts&lt;/li&gt;
&lt;li&gt;Do not touch specific directories&lt;/li&gt;
&lt;li&gt;Do not run unapproved network commands&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Putting this protection before tool calls is more reliable than writing “do not perform dangerous operations” in a prompt.&lt;/p&gt;
&lt;h3 id=&#34;2-context-injection&#34;&gt;2. Context Injection
&lt;/h3&gt;&lt;p&gt;Many projects have fixed background information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tech stack&lt;/li&gt;
&lt;li&gt;Coding conventions&lt;/li&gt;
&lt;li&gt;Test commands&lt;/li&gt;
&lt;li&gt;Branching strategy&lt;/li&gt;
&lt;li&gt;Directory structure&lt;/li&gt;
&lt;li&gt;Prohibited actions&lt;/li&gt;
&lt;li&gt;Rules for generated files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Telling Claude Code this manually every time is annoying and easy to forget. Hooks can automatically inject necessary context at session startup or after the user submits a prompt.&lt;/p&gt;
&lt;p&gt;This is like giving Claude Code a project-level work manual. It does not replace the README or development documentation, but it helps AI enter the correct state before executing a task.&lt;/p&gt;
&lt;h3 id=&#34;3-verification-after-edits&#34;&gt;3. Verification After Edits
&lt;/h3&gt;&lt;p&gt;After Claude Code modifies files, hooks can automatically trigger checks.&lt;/p&gt;
&lt;p&gt;Common actions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run formatting&lt;/li&gt;
&lt;li&gt;Run lint&lt;/li&gt;
&lt;li&gt;Run unit tests&lt;/li&gt;
&lt;li&gt;Check type errors&lt;/li&gt;
&lt;li&gt;Scan generated files&lt;/li&gt;
&lt;li&gt;Validate Markdown or JSON format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This helps reduce low-level mistakes. When AI edits multiple files, a lightweight verification pass after modification can reveal problems earlier.&lt;/p&gt;
&lt;p&gt;However, hooks should not run heavy tasks by default. Running the full test suite after every file change can make the experience slow. A better approach is to choose checks based on file type, directory, and task risk.&lt;/p&gt;
&lt;h3 id=&#34;4-team-rule-validation&#34;&gt;4. Team Rule Validation
&lt;/h3&gt;&lt;p&gt;If a team already has clear conventions, some of them can be placed in hooks.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Commit message format&lt;/li&gt;
&lt;li&gt;Code style rules&lt;/li&gt;
&lt;li&gt;Do not directly edit certain generated files&lt;/li&gt;
&lt;li&gt;Documentation must be updated together&lt;/li&gt;
&lt;li&gt;API changes must update tests&lt;/li&gt;
&lt;li&gt;Certain directories can only be generated by specific tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes Claude Code more like part of the team workflow rather than an unconstrained external assistant.&lt;/p&gt;
&lt;p&gt;Of course, hooks should not replace CI. They are better for local reminders and early blocking. Final validation should still belong to CI, review, and test systems.&lt;/p&gt;
&lt;h3 id=&#34;5-subagents-and-dedicated-tasks&#34;&gt;5. Subagents and Dedicated Tasks
&lt;/h3&gt;&lt;p&gt;The README also mentions subagent-related content.&lt;/p&gt;
&lt;p&gt;This type of usage is suitable for sending complex tasks into more specialized workflows. For example, the main conversation can understand the requirement, while a hook or configuration triggers dedicated checking, auditing, summarizing, or documentation tasks.&lt;/p&gt;
&lt;p&gt;For individual users, the first useful step is not complex agent orchestration. It is better to hand repetitive, clear, low-risk actions to hooks first. More complex automation can come after the rules become stable.&lt;/p&gt;
&lt;h2 id=&#34;statusline-and-output-styles&#34;&gt;Statusline and Output Styles
&lt;/h2&gt;&lt;p&gt;The project also covers statusline and output styles.&lt;/p&gt;
&lt;p&gt;This may look like a small experience detail, but it matters for long-term Claude Code usage. A statusline can show current context, task state, environment information, or hints. Output styles can make Claude Code answers fit your working habits better.&lt;/p&gt;
&lt;p&gt;If you collaborate with AI in the same terminal every day, these details affect efficiency. Good status hints reduce mistakes and help you quickly determine whether the current session is in the right project, branch, and environment.&lt;/p&gt;
&lt;h2 id=&#34;do-not-make-hooks-too-heavy&#34;&gt;Do Not Make Hooks Too Heavy
&lt;/h2&gt;&lt;p&gt;Hooks are powerful, but they are not the place to put everything.&lt;/p&gt;
&lt;p&gt;Good rules are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;High-frequency actions should be fast&lt;/li&gt;
&lt;li&gt;Security blocking should be clear&lt;/li&gt;
&lt;li&gt;Output should be short&lt;/li&gt;
&lt;li&gt;Failure reasons should be readable&lt;/li&gt;
&lt;li&gt;Scripts should have a single responsibility&lt;/li&gt;
&lt;li&gt;Heavy checks should be explicit commands or CI tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a hook takes more than ten seconds every time, users will soon want to disable it. If a hook has vague blocking rules, both Claude Code and the user will struggle to understand what to do next.&lt;/p&gt;
&lt;p&gt;Hooks are best for tasks with clear boundaries: allow or reject, add context, log events, run lightweight checks, and suggest the next step.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who Should Use It
&lt;/h2&gt;&lt;p&gt;If you only occasionally ask Claude Code to edit a small piece of code, you may not need to study hooks deeply yet.&lt;/p&gt;
&lt;p&gt;But this project is useful if you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Claude Code frequently&lt;/li&gt;
&lt;li&gt;Often let AI modify real project code&lt;/li&gt;
&lt;li&gt;Worry about AI running dangerous commands&lt;/li&gt;
&lt;li&gt;Want to automatically inject team rules into AI workflows&lt;/li&gt;
&lt;li&gt;Want checks to run automatically after edits&lt;/li&gt;
&lt;li&gt;Want to turn repeated reminders into configuration&lt;/li&gt;
&lt;li&gt;Are building a more stable AI coding workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hooks are especially meaningful in collaborative projects. They can turn part of team experience into scripts instead of relying on every person to remind AI manually.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, start with security hooks.&lt;/p&gt;
&lt;p&gt;Compared with complex automation, command blocking, path protection, and sensitive file checks are easier to implement and immediately reduce risk.&lt;/p&gt;
&lt;p&gt;Second, commit project-level rules carefully.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.claude/settings.json&lt;/code&gt; affects everyone who uses the repository. Before committing rules, make sure they do not over-restrict normal development or depend on paths that only exist on your machine.&lt;/p&gt;
&lt;p&gt;Third, keep hook output concise.&lt;/p&gt;
&lt;p&gt;Claude Code consumes this output. If it is too long, it pollutes the context. If it is too vague, it does not guide the next step. It is best to return only the necessary judgment and next recommendation.&lt;/p&gt;
&lt;p&gt;Fourth, keep hooks debuggable.&lt;/p&gt;
&lt;p&gt;When hooks increase in number, problems can come from configuration, scripts, permissions, paths, dependencies, or Claude Code itself. Clear logs make later debugging much easier.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;Claude Code Hooks&lt;/code&gt; is turning “rules I hope AI remembers every time” into workflows that actually execute.&lt;/p&gt;
&lt;p&gt;If you already use Claude Code in real projects, hooks are a key step from “a coding assistant that can chat” toward “a constrained engineering collaborator.”&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Prompt Optimizer: An Open-Source Tool for Prompt Optimization, Testing, and MCP</title>
        <link>https://knightli.com/en/2026/05/01/prompt-optimizer-prompt-engineering-tool/</link>
        <pubDate>Fri, 01 May 2026 03:09:07 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/prompt-optimizer-prompt-engineering-tool/</guid>
        <description>&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; is an open-source tool for improving prompts. Its goal is straightforward: help you turn a rough prompt into something clearer, more stable, and easier for large language models to follow.&lt;/p&gt;
&lt;p&gt;It is not just a page that “polishes my prompt.” The project provides prompt optimization, result testing, comparison and evaluation, multi-model access, image prompt handling, and MCP integration. For people who often write system prompts, user prompts, and AI workflow templates, it feels more like a dedicated prompt workbench.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-it-solves&#34;&gt;What Problem It Solves
&lt;/h2&gt;&lt;p&gt;Many people run into similar problems when using AI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompts keep getting longer, but output quality does not clearly improve&lt;/li&gt;
&lt;li&gt;The same task behaves differently after switching models&lt;/li&gt;
&lt;li&gt;System prompts and user prompts are mixed together and hard to debug&lt;/li&gt;
&lt;li&gt;After changing a prompt, it is unclear whether the new version is better&lt;/li&gt;
&lt;li&gt;Variable templates are useful, but manual replacement and testing are tedious&lt;/li&gt;
&lt;li&gt;Prompt optimization should be available to other AI tools, but there is no standard interface&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; is designed around these problems. It breaks “writing a prompt” into optimization, testing, evaluation, comparison, and iteration, so prompt tuning is no longer based only on intuition.&lt;/p&gt;
&lt;h2 id=&#34;main-features&#34;&gt;Main Features
&lt;/h2&gt;&lt;h3 id=&#34;1-optimize-system-prompts-and-user-prompts&#34;&gt;1. Optimize System Prompts and User Prompts
&lt;/h3&gt;&lt;p&gt;There is more than one kind of prompt.&lt;/p&gt;
&lt;p&gt;System prompts usually define roles, goals, boundaries, output rules, and working methods. User prompts are closer to the input for one specific task. When the two are mixed together, the model can miss the key point, and reuse becomes harder.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; supports both system prompt optimization and user prompt optimization. You can improve long-term reusable role definitions separately from the input for a specific task.&lt;/p&gt;
&lt;p&gt;This is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing rules for AI coding assistants&lt;/li&gt;
&lt;li&gt;Designing customer service, reviewer, translation, and analysis roles&lt;/li&gt;
&lt;li&gt;Optimizing text-to-image prompts&lt;/li&gt;
&lt;li&gt;Turning temporary requirements into reusable templates&lt;/li&gt;
&lt;li&gt;Preparing different prompt styles for different models&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-test-and-compare-outputs&#34;&gt;2. Test and Compare Outputs
&lt;/h3&gt;&lt;p&gt;Optimizing a prompt is not enough. The important question is whether the optimized prompt actually performs better.&lt;/p&gt;
&lt;p&gt;The project supports analysis, single-result evaluation, and multi-result comparison. You can run the original prompt and the optimized prompt on the same task, then compare whether the output is more accurate, stable, and aligned with the goal.&lt;/p&gt;
&lt;p&gt;This is more practical than prompts that only “look more professional.” Many prompts look complete on the surface but produce verbose, rigid, or even misdirected output. Comparison testing helps reveal that early.&lt;/p&gt;
&lt;h3 id=&#34;3-multi-model-support&#34;&gt;3. Multi-Model Support
&lt;/h3&gt;&lt;p&gt;The README says the project supports model services such as OpenAI, Gemini, DeepSeek, Zhipu AI, and SiliconFlow, as well as custom OpenAI-compatible APIs.&lt;/p&gt;
&lt;p&gt;This matters because prompt performance depends heavily on the model. The same prompt can behave very differently across models. Multi-model testing helps determine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether the prompt itself is weak&lt;/li&gt;
&lt;li&gt;Whether a specific model is unsuitable for the task&lt;/li&gt;
&lt;li&gt;Whether different model-specific prompt versions are needed&lt;/li&gt;
&lt;li&gt;Whether a smaller model can become usable with a clearer prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use Ollama locally, or your company has an OpenAI-compatible internal model service, it can also be connected through a custom API.&lt;/p&gt;
&lt;h3 id=&#34;4-advanced-testing-mode&#34;&gt;4. Advanced Testing Mode
&lt;/h3&gt;&lt;p&gt;The project provides context variable management, multi-turn conversation testing, and Function Calling support.&lt;/p&gt;
&lt;p&gt;Variable management is useful for templated tasks. For example, if you have prompts for second-hand sales replies, product descriptions, email responses, code reviews, or document generation, you can replace variables such as product, price, tone, and target user to test different inputs quickly.&lt;/p&gt;
&lt;p&gt;Multi-turn conversation testing helps validate long-running dialogue behavior. Many prompts look fine in a single turn, but once follow-up questions begin, they may forget constraints, drift away from the role, or repeat explanations. Multi-turn testing is closer to real usage.&lt;/p&gt;
&lt;p&gt;Function Calling support is suitable for more engineering-oriented AI applications. It helps validate model behavior around tool calls, parameter generation, and structured output.&lt;/p&gt;
&lt;h3 id=&#34;5-image-generation-prompts&#34;&gt;5. Image Generation Prompts
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; also supports text-to-image and image-to-image workflows. The README mentions integration with image models such as Gemini and Seedream.&lt;/p&gt;
&lt;p&gt;Image prompt optimization is different from text tasks. It focuses more on subject, composition, spatial relationship, style, material, lighting, mood, and constraints. Turning a vague idea into a controllable visual description is often more valuable than simply making the prompt longer.&lt;/p&gt;
&lt;p&gt;If you often generate product images, covers, illustrations, key visuals, or style references, this type of optimization is useful.&lt;/p&gt;
&lt;h2 id=&#34;ways-to-use-it&#34;&gt;Ways to Use It
&lt;/h2&gt;&lt;p&gt;The project provides several entry points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Online version&lt;/li&gt;
&lt;li&gt;Vercel self-hosting&lt;/li&gt;
&lt;li&gt;Desktop app&lt;/li&gt;
&lt;li&gt;Chrome extension&lt;/li&gt;
&lt;li&gt;Docker deployment&lt;/li&gt;
&lt;li&gt;Docker Compose deployment&lt;/li&gt;
&lt;li&gt;MCP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The online version is good for quick trials. The project notes that it is a pure frontend app: data is stored locally in the browser and sent directly to AI providers.&lt;/p&gt;
&lt;p&gt;The desktop app is better when you need to connect directly to different model APIs. Browser environments can run into CORS limits; the desktop app avoids those issues, especially when connecting to local Ollama or commercial APIs with strict cross-origin policies.&lt;/p&gt;
&lt;p&gt;Docker deployment is suitable for your own server or intranet environment. The README gives this basic command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;To configure API keys and access passwords, pass environment variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If Docker Hub is slow in China, the project also provides an Alibaba Cloud image address in the README.&lt;/p&gt;
&lt;h2 id=&#34;what-mcp-enables&#34;&gt;What MCP Enables
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; supports Model Context Protocol, or MCP.&lt;/p&gt;
&lt;p&gt;When running through Docker, the MCP service can start together with the Web app and be accessed through the &lt;code&gt;/mcp&lt;/code&gt; path. This turns it from a Web tool into something that can be called by MCP-compatible apps such as Claude Desktop.&lt;/p&gt;
&lt;p&gt;The README lists these MCP tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;optimize-user-prompt&lt;/code&gt;: optimize user prompts&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optimize-system-prompt&lt;/code&gt;: optimize system prompts&lt;/li&gt;
&lt;li&gt;&lt;code&gt;iterate-prompt&lt;/code&gt;: perform targeted iteration on an existing prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These interfaces are well suited for AI workflows. For example, when writing a complex task prompt, an MCP-compatible client can call the prompt optimization tool directly instead of requiring you to open a Web page and copy text manually.&lt;/p&gt;
&lt;h2 id=&#34;difference-from-normal-chat-tools&#34;&gt;Difference from Normal Chat Tools
&lt;/h2&gt;&lt;p&gt;Normal chat tools can also help rewrite prompts, but they usually lack several parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Saving and comparing multiple versions is inconvenient&lt;/li&gt;
&lt;li&gt;Testing multiple models at once is inconvenient&lt;/li&gt;
&lt;li&gt;Turning variables into templates is inconvenient&lt;/li&gt;
&lt;li&gt;Multi-turn conversation validation is inconvenient&lt;/li&gt;
&lt;li&gt;Integrating through MCP or self-hosting is inconvenient&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value of &lt;code&gt;Prompt Optimizer&lt;/code&gt; is that it turns prompt optimization into a repeatable process. It does not just give you a version that “looks more complete”; it lets you keep adjusting prompts around real outputs.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who Should Use It
&lt;/h2&gt;&lt;p&gt;This project is worth attention if you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Often write system prompts&lt;/li&gt;
&lt;li&gt;Design roles and output formats for AI applications&lt;/li&gt;
&lt;li&gt;Need to compare outputs from different models&lt;/li&gt;
&lt;li&gt;Want to turn prompts into reusable templates&lt;/li&gt;
&lt;li&gt;Need to test multi-turn dialogue or tool calls&lt;/li&gt;
&lt;li&gt;Want to connect prompt optimization to an MCP workflow&lt;/li&gt;
&lt;li&gt;Want to deploy a prompt tool locally or inside an intranet&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only occasionally ask AI a simple question, a normal chat page is enough. This tool is better for people who treat prompts as maintainable assets.&lt;/p&gt;
&lt;h2 id=&#34;notes-for-use&#34;&gt;Notes for Use
&lt;/h2&gt;&lt;p&gt;First, do not treat optimization results as absolutely correct.&lt;/p&gt;
&lt;p&gt;Prompt optimization tools can improve expression quality, but they cannot guarantee that a model will never misunderstand. Important tasks still need test cases, manual review, and version comparison.&lt;/p&gt;
&lt;p&gt;Second, do not only chase length.&lt;/p&gt;
&lt;p&gt;A good prompt is not necessarily longer. It should express goals, boundaries, input and output formats, and evaluation criteria more clearly. Meaningless rule stacking can make the model miss the point.&lt;/p&gt;
&lt;p&gt;Third, tune prompts by model.&lt;/p&gt;
&lt;p&gt;Different models respond differently to role settings, format constraints, reasoning steps, and examples. A prompt that works well on a large model may not suit a smaller model. Multi-model testing is one reason this tool is useful.&lt;/p&gt;
&lt;p&gt;Fourth, consider keys and access control when deploying.&lt;/p&gt;
&lt;p&gt;If you deploy it publicly, configure an access password and handle API keys carefully. The project supports access control through environment variables; do not write sensitive configuration directly into public repositories.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Prompt Optimizer&lt;/code&gt; is useful for turning prompts from “a temporary paragraph I wrote by hand” into “a work asset that can be tested, compared, and iterated.”&lt;/p&gt;
&lt;p&gt;When you start maintaining prompts across multiple models, scenarios, and versions, this kind of tool is more convenient than a normal chat window.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude-Mem: Adding Cross-Session Long-Term Memory to Claude Code</title>
        <link>https://knightli.com/en/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/en/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; is a persistent memory system for &lt;code&gt;Claude Code&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It tries to solve a very specific problem: every time an AI coding assistant starts a new session, it often forgets earlier architecture decisions, past pitfalls, project preferences, and implementation context.&lt;br&gt;
If a project lasts for a long time, repeatedly explaining the same background becomes a waste of time.&lt;/p&gt;
&lt;p&gt;The idea behind &lt;code&gt;Claude-Mem&lt;/code&gt; is to compress Claude Code conversations into memories, store them in a local database and vector store, and then retrieve them later through a search tool.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What Problem Does It Solve?
&lt;/h2&gt;&lt;p&gt;Claude Code is good at code tasks, but session context is still limited.&lt;/p&gt;
&lt;p&gt;Common pain points include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new session does not know what previous sessions did&lt;/li&gt;
&lt;li&gt;Project design decisions need to be explained repeatedly&lt;/li&gt;
&lt;li&gt;Problems that were already debugged are easy to repeat&lt;/li&gt;
&lt;li&gt;Long-running tasks lack continuity&lt;/li&gt;
&lt;li&gt;Project knowledge is hard to accumulate across conversations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; is designed around these problems.&lt;/p&gt;
&lt;p&gt;It is not simply saving chat logs. Instead, it compresses conversations into memory fragments that are easier to retrieve. When needed later, semantic search can bring the relevant context back.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How It Works
&lt;/h2&gt;&lt;p&gt;From the README design, &lt;code&gt;Claude-Mem&lt;/code&gt; mainly consists of several parts.&lt;/p&gt;
&lt;p&gt;The first part is hooks.&lt;/p&gt;
&lt;p&gt;It integrates with the Claude Code session flow and captures conversation data at the right time.&lt;/p&gt;
&lt;p&gt;The second part is a background worker.&lt;/p&gt;
&lt;p&gt;The worker processes raw conversation content into shorter, more searchable memories.&lt;/p&gt;
&lt;p&gt;The third part is local storage.&lt;/p&gt;
&lt;p&gt;The project uses &lt;code&gt;SQLite&lt;/code&gt; for structured metadata and &lt;code&gt;Chroma&lt;/code&gt; for vector indexing. This preserves basic session information while supporting semantic retrieval.&lt;/p&gt;
&lt;p&gt;The fourth part is &lt;code&gt;mem-search&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is the query entry point for Claude Code. When old context is needed, it can search relevant memories through this tool.&lt;/p&gt;
&lt;p&gt;The overall flow can be understood like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code sessions generate content&lt;/li&gt;
&lt;li&gt;Hooks capture session data&lt;/li&gt;
&lt;li&gt;The worker asynchronously compresses and organizes it&lt;/li&gt;
&lt;li&gt;Memories are written to SQLite and Chroma&lt;/li&gt;
&lt;li&gt;Later sessions retrieve them through &lt;code&gt;mem-search&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;when-is-it-useful&#34;&gt;When Is It Useful?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; is suitable for long-running projects, not one-off small tasks.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A repository is developed over many days&lt;/li&gt;
&lt;li&gt;The code structure is complex and has a lot of background&lt;/li&gt;
&lt;li&gt;Project conventions, naming habits, and architecture choices need to be remembered&lt;/li&gt;
&lt;li&gt;Claude Code is often used for bug fixes, features, and documentation&lt;/li&gt;
&lt;li&gt;You want the AI to remember why something was changed earlier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only ask Claude Code to make a one-line change, long-term memory is not very meaningful.&lt;br&gt;
But if you treat Claude Code as a long-term collaborator, it becomes useful.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-startup&#34;&gt;Installation and Startup
&lt;/h2&gt;&lt;p&gt;The README gives a direct installation flow:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Start it with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Check status:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Stop it when needed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The goal behind these commands is to connect the memory system as a long-running local service to the Claude Code workflow.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-mem-search&#34;&gt;How to Use &lt;code&gt;mem-search&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; is the key entry point for retrieving memory.&lt;/p&gt;
&lt;p&gt;It is not meant to replace ordinary search. It lets Claude Code query past conversations by meaning.&lt;/p&gt;
&lt;p&gt;For example, Claude Code can search for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why a module was designed in a certain way&lt;/li&gt;
&lt;li&gt;How a bug was debugged earlier&lt;/li&gt;
&lt;li&gt;Naming rules agreed on in the project&lt;/li&gt;
&lt;li&gt;Technical trade-offs discussed before&lt;/li&gt;
&lt;li&gt;The background behind a refactor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is different from simple keyword search.&lt;br&gt;
If memory compression and vector indexing work well, you can retrieve semantically related content even if you do not remember the exact wording.&lt;/p&gt;
&lt;h2 id=&#34;how-is-it-different-from-project-documentation&#34;&gt;How Is It Different from Project Documentation?
&lt;/h2&gt;&lt;p&gt;Project documentation is good for stable conclusions.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecture notes&lt;/li&gt;
&lt;li&gt;Deployment procedures&lt;/li&gt;
&lt;li&gt;API conventions&lt;/li&gt;
&lt;li&gt;Database structure&lt;/li&gt;
&lt;li&gt;Development rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; is better for context created during conversations.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why a plan was rejected&lt;/li&gt;
&lt;li&gt;How a temporary issue was worked around&lt;/li&gt;
&lt;li&gt;The discussion behind an implementation&lt;/li&gt;
&lt;li&gt;Project preferences not yet written into docs&lt;/li&gt;
&lt;li&gt;Task background accumulated across multiple conversations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The two are not replacements for each other.&lt;br&gt;
A good workflow is to write stable knowledge into project docs and use the memory system to help retrieve conversational context.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch-out-for&#34;&gt;Things to Watch Out For
&lt;/h2&gt;&lt;p&gt;First, more long-term memory is not always better.&lt;/p&gt;
&lt;p&gt;If every conversation is saved without distinction, later retrieval can become noisy. The most valuable memories are project decisions, implementation background, debugging history, and long-term preferences.&lt;/p&gt;
&lt;p&gt;Second, memory cannot replace code and documentation.&lt;/p&gt;
&lt;p&gt;Old context found by AI is only a reference. Final judgment still depends on the current code, test results, and latest requirements.&lt;/p&gt;
&lt;p&gt;Third, pay attention to privacy and local data.&lt;/p&gt;
&lt;p&gt;Since it stores conversation content, you should know which projects are suitable for it and which sensitive information should not enter the conversation.&lt;/p&gt;
&lt;p&gt;Fourth, memory systems need maintenance.&lt;/p&gt;
&lt;p&gt;As a project moves forward, old memories may become outdated. If outdated context is reused incorrectly, it can mislead later tasks.&lt;/p&gt;
&lt;h2 id=&#34;why-this-kind-of-tool-matters&#34;&gt;Why This Kind of Tool Matters
&lt;/h2&gt;&lt;p&gt;AI coding tools are moving from one-off Q&amp;amp;A toward long-term collaboration.&lt;/p&gt;
&lt;p&gt;In one-off Q&amp;amp;A, the model only needs to answer the current question.&lt;br&gt;
In long-term collaboration, it needs to know project history, earlier decisions, team preferences, and pitfalls that have already been found.&lt;/p&gt;
&lt;p&gt;This is where tools like &lt;code&gt;Claude-Mem&lt;/code&gt; matter: they turn &amp;ldquo;remembering context&amp;rdquo; from a temporary chat capability into a local system that can be installed, run, and searched.&lt;/p&gt;
&lt;p&gt;For real engineering projects, this is more practical than simply making the model context window longer.&lt;br&gt;
Much information does not need to be stuffed into context all at once; it needs to be retrieved at the right time.&lt;/p&gt;
&lt;h2 id=&#34;who-should-try-it&#34;&gt;Who Should Try It?
&lt;/h2&gt;&lt;p&gt;You may want to try it if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You use Claude Code frequently&lt;/li&gt;
&lt;li&gt;You often work on the same project across multiple days&lt;/li&gt;
&lt;li&gt;The project context is complex&lt;/li&gt;
&lt;li&gt;You repeatedly explain the same background to AI&lt;/li&gt;
&lt;li&gt;You want to preserve experience from conversations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only use Claude Code occasionally, or the project is small, you may not need this kind of system yet.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The point of &lt;code&gt;Claude-Mem&lt;/code&gt; is not &amp;ldquo;saving chat logs.&amp;rdquo; It is helping Claude Code retrieve useful context in later tasks.&lt;/p&gt;
&lt;p&gt;As AI coding moves from one-off tasks to long-running project collaboration, memory systems will become increasingly important.&lt;br&gt;
They cannot replace documentation and tests, but they can reduce repeated explanations and make the AI feel more like an assistant that understands project history.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Google LangExtract: Extract Structured Data from Long Text with LLMs</title>
        <link>https://knightli.com/en/2026/05/01/google-langextract-llm-structured-data-extraction/</link>
        <pubDate>Fri, 01 May 2026 02:58:21 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/01/google-langextract-llm-structured-data-extraction/</guid>
        <description>&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; is an open-source Python library from Google for extracting structured information from unstructured text.&lt;/p&gt;
&lt;p&gt;Its use case is straightforward: give it a piece of text, a prompt, and a few examples, then let a large language model extract fields according to your definition and organize the result into data that can be processed.&lt;/p&gt;
&lt;p&gt;Unlike simply asking a model to summarize something, &lt;code&gt;LangExtract&lt;/code&gt; focuses on three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extracting information into a fixed structure&lt;/li&gt;
&lt;li&gt;Preserving the relationship between extracted results and their source locations&lt;/li&gt;
&lt;li&gt;Supporting long documents and visual inspection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you often need to extract entities, events, relationships, or attributes from reports, papers, medical notes, contracts, logs, or web pages, this kind of tool is more flexible than hand-written regular expressions and easier to connect to downstream data workflows than plain chat-style questioning.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-does-it-solve&#34;&gt;What Problem Does It Solve?
&lt;/h2&gt;&lt;p&gt;Many text extraction tasks look simple, but become troublesome in practice.&lt;/p&gt;
&lt;p&gt;For example, you may want to extract:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;People, organizations, and locations&lt;/li&gt;
&lt;li&gt;Events, times, and participants&lt;/li&gt;
&lt;li&gt;Drugs, dosages, and adverse reactions&lt;/li&gt;
&lt;li&gt;Product models, parameters, and prices&lt;/li&gt;
&lt;li&gt;Contract clauses, obligations, and deadlines&lt;/li&gt;
&lt;li&gt;Error types and context from logs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the format is fixed, regular expressions or traditional parsers can work.&lt;br&gt;
But once the text becomes more natural, the rules quickly become complicated.&lt;/p&gt;
&lt;p&gt;Large language models are good at understanding natural language, but directly asking a model to &amp;ldquo;extract it&amp;rdquo; often causes several problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Output format is unstable&lt;/li&gt;
&lt;li&gt;It is unclear where the information came from in the source text&lt;/li&gt;
&lt;li&gt;Long documents are easy to miss&lt;/li&gt;
&lt;li&gt;Batch processing is difficult&lt;/li&gt;
&lt;li&gt;Results are inconvenient to review manually&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; addresses this layer of the problem: it wraps LLM understanding into a more controllable extraction workflow.&lt;/p&gt;
&lt;h2 id=&#34;key-features-of-langextract&#34;&gt;Key Features of LangExtract
&lt;/h2&gt;&lt;h3 id=&#34;1-use-examples-to-constrain-the-extraction-format&#34;&gt;1. Use Examples to Constrain the Extraction Format
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; does not rely on a vague one-line prompt. Instead, it uses prompts and examples to tell the model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What to extract&lt;/li&gt;
&lt;li&gt;What each field is called&lt;/li&gt;
&lt;li&gt;How each field should be filled&lt;/li&gt;
&lt;li&gt;What to do when information is uncertain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This few-shot approach works well for information extraction.&lt;br&gt;
The closer your examples are to real data, the more stable the model&amp;rsquo;s structured output becomes.&lt;/p&gt;
&lt;h3 id=&#34;2-extracted-results-can-link-back-to-the-source&#34;&gt;2. Extracted Results Can Link Back to the Source
&lt;/h3&gt;&lt;p&gt;The worst kind of extraction result is one that looks right but cannot be traced back.&lt;/p&gt;
&lt;p&gt;One of the important points of &lt;code&gt;LangExtract&lt;/code&gt; is aligning extracted results with source locations. When reviewing later, you do not only see a JSON result; you can also return to the original text and see where the information came from.&lt;/p&gt;
&lt;p&gt;This matters in scenarios that require review, such as medical text, legal text, research material, and internal business documents.&lt;/p&gt;
&lt;h3 id=&#34;3-support-for-long-documents&#34;&gt;3. Support for Long Documents
&lt;/h3&gt;&lt;p&gt;Long-document extraction often runs into context-window limits, missed results, and duplicate results.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; provides a workflow for long text: split the document, process chunks in parallel, and then organize the extracted results.&lt;/p&gt;
&lt;p&gt;This makes it more suitable for complete reports, papers, long web pages, and bulk documents, rather than only short snippets.&lt;/p&gt;
&lt;h3 id=&#34;4-visual-inspection&#34;&gt;4. Visual Inspection
&lt;/h3&gt;&lt;p&gt;If extraction results are only available as JSON, problems are easy to miss.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; supports visualizing extracted results, making it easier to see what the model extracted and where it came from.&lt;br&gt;
This is useful for tuning prompts, checking missed extractions, and finding false positives.&lt;/p&gt;
&lt;h2 id=&#34;when-should-you-use-it&#34;&gt;When Should You Use It?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; is suitable when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need to extract structured fields from natural-language text&lt;/li&gt;
&lt;li&gt;The text format is not fully fixed&lt;/li&gt;
&lt;li&gt;You need to preserve the relationship between extracted results and the source text&lt;/li&gt;
&lt;li&gt;You need to process longer documents&lt;/li&gt;
&lt;li&gt;Results require human review&lt;/li&gt;
&lt;li&gt;The output will later go into tables, databases, or data analysis workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Typical examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extracting symptoms, medications, dosages, and reactions from medical text&lt;/li&gt;
&lt;li&gt;Extracting parties, obligations, amounts, and deadlines from contracts&lt;/li&gt;
&lt;li&gt;Extracting subjects, methods, and conclusions from papers&lt;/li&gt;
&lt;li&gt;Extracting specification parameters from product documents&lt;/li&gt;
&lt;li&gt;Extracting issue types and resolutions from support records&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only need a temporary summary of a short piece of text, an ordinary chat model is enough.&lt;br&gt;
If you want to turn text into data that can be processed later, &lt;code&gt;LangExtract&lt;/code&gt; is a better fit.&lt;/p&gt;
&lt;h2 id=&#34;basic-installation&#34;&gt;Basic Installation
&lt;/h2&gt;&lt;p&gt;The project supports installation through &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;You can also install it from source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If you want to use a model API, configure the API key for the corresponding model provider.&lt;br&gt;
The project documentation focuses on Gemini usage, and it can also connect to other model providers through adapters.&lt;/p&gt;
&lt;h2 id=&#34;basic-usage-flow&#34;&gt;Basic Usage Flow
&lt;/h2&gt;&lt;p&gt;A typical workflow looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prepare the source text&lt;/li&gt;
&lt;li&gt;Clearly describe the extraction target&lt;/li&gt;
&lt;li&gt;Provide a few examples&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;LangExtract&lt;/code&gt; to perform extraction&lt;/li&gt;
&lt;li&gt;Inspect the structured result&lt;/li&gt;
&lt;li&gt;Generate a visualization page for review if needed&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second and third steps are the most important.&lt;/p&gt;
&lt;p&gt;The prompt should clearly describe the task, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extract only information explicitly present in the text&lt;/li&gt;
&lt;li&gt;Do not fill in missing facts from common sense&lt;/li&gt;
&lt;li&gt;Leave fields empty when information is missing&lt;/li&gt;
&lt;li&gt;Keep the same field structure for the same type of entity&lt;/li&gt;
&lt;li&gt;Preserve source snippets or positions in the output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples should be as close as possible to real inputs.&lt;br&gt;
If the real text has noise, abbreviations, line breaks, or table residue, the examples should reflect that.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch-out-for&#34;&gt;Things to Watch Out For
&lt;/h2&gt;&lt;p&gt;First, do not make the extraction task too broad.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Extract useful information&amp;rdquo; is too vague.&lt;br&gt;
A better instruction would be &amp;ldquo;extract medication name, dosage, frequency, and adverse reactions.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Second, do not fully trust model output.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; can align results with the source text, but that does not mean the model will never miss or mis-extract information. Important scenarios still require sampling checks or human review.&lt;/p&gt;
&lt;p&gt;Third, examples are more useful than long explanations.&lt;/p&gt;
&lt;p&gt;In information extraction tasks, models often rely more on examples to understand the output format.&lt;br&gt;
Instead of writing a long abstract rule set, provide a few high-quality examples.&lt;/p&gt;
&lt;p&gt;Fourth, pay attention to cost and speed for long documents.&lt;/p&gt;
&lt;p&gt;Splitting long documents, parallel extraction, and model calls all have costs. Before batch processing, use a small sample set to tune the prompt and field structure.&lt;/p&gt;
&lt;h2 id=&#34;how-is-it-different-from-regex-or-traditional-nlp&#34;&gt;How Is It Different from Regex or Traditional NLP?
&lt;/h2&gt;&lt;p&gt;Regular expressions are good for stable, well-defined text formats.&lt;/p&gt;
&lt;p&gt;Traditional NLP pipelines work well when task boundaries are clear and the model or dictionary is already prepared.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; is better for text whose format is less fixed but whose meaning is clear.&lt;br&gt;
It does not require you to write a rule for every possible expression; instead, the LLM learns the extraction target from examples.&lt;/p&gt;
&lt;p&gt;But it is not a complete replacement for regular expressions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For fixed-format text, regex is cheaper and more stable&lt;/li&gt;
&lt;li&gt;For high-risk scenarios, validation and review are still required&lt;/li&gt;
&lt;li&gt;For large-scale batch processing, model-call cost matters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A practical approach is to handle the rule-clear parts with code and use &lt;code&gt;LangExtract&lt;/code&gt; for the parts with more semantic variation.&lt;/p&gt;
&lt;h2 id=&#34;who-is-it-for&#34;&gt;Who Is It For?
&lt;/h2&gt;&lt;p&gt;You may want to look at &lt;code&gt;LangExtract&lt;/code&gt; if you are doing any of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turning long text into tables&lt;/li&gt;
&lt;li&gt;Extracting entities and relationships from documents&lt;/li&gt;
&lt;li&gt;Cleaning data before putting it into a knowledge base&lt;/li&gt;
&lt;li&gt;Extracting fields from business text&lt;/li&gt;
&lt;li&gt;Building an LLM-driven information extraction prototype&lt;/li&gt;
&lt;li&gt;Preserving evidence between extracted results and source text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not a &amp;ldquo;click once and understand every document&amp;rdquo; tool. It is more like a library for engineering an LLM extraction workflow.&lt;/p&gt;
&lt;p&gt;You still need to design fields, write examples, and inspect results.&lt;br&gt;
But compared with manually writing model calls, stitching prompts, and parsing output every time, it provides a more complete extraction framework.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;LangExtract&lt;/code&gt; is making &amp;ldquo;let an LLM find information in text&amp;rdquo; more controllable.&lt;/p&gt;
&lt;p&gt;It is not for casual summaries. It is for information extraction tasks with fields, evidence, and review requirements.&lt;br&gt;
If your work often turns long text into structured data, it is worth trying.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude.md Is Not Better When It Is Longer: How to Write Global Memory Files for AI Coding</title>
        <link>https://knightli.com/en/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/en/2026/04/29/how-to-write-claude-md-for-ai-coding/</guid>
        <description>&lt;p&gt;I recently saw a discussion about global memory files for AI coding: after projects add files such as &lt;code&gt;Claude.md&lt;/code&gt; or &lt;code&gt;AGENTS.md&lt;/code&gt;, the results do not necessarily improve. In some cases, success rates may even drop while reasoning cost rises.&lt;/p&gt;
&lt;p&gt;At first, this feels counterintuitive. We usually assume that if we give AI more project background, more rules, and more explanation, it should write code more accurately.&lt;br&gt;
The real issue is that &lt;code&gt;Claude.md&lt;/code&gt; is not an ordinary document. It is a global memory file that gets injected into the context on every conversation. The more it contains, the more the model has to read every time; the vaguer it is, the more judgment the model has to make; and if it contains workflows that should not always run, the model may trigger unnecessary actions in unrelated tasks.&lt;/p&gt;
&lt;p&gt;So the hard part of writing &lt;code&gt;Claude.md&lt;/code&gt; is not making it complete. It is deciding which pieces of information deserve to occupy context permanently.&lt;/p&gt;
&lt;h2 id=&#34;what-claudemd-is&#34;&gt;What Claude.md Is
&lt;/h2&gt;&lt;p&gt;In AI coding tools, files such as &lt;code&gt;Claude.md&lt;/code&gt; and &lt;code&gt;AGENTS.md&lt;/code&gt; are essentially global memory files.&lt;/p&gt;
&lt;p&gt;Normal conversation enters the context, but context length is limited. Once the conversation becomes long, historical content is compressed and some details are lost. A global memory file fixes important rules in place so the model can see them at the beginning of every task.&lt;/p&gt;
&lt;p&gt;This means two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content written there is harder to forget&lt;/li&gt;
&lt;li&gt;Content written there also costs something on every task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is not like a README that is read only when needed. It is more like a long-lived set of working constraints. Once something is placed there, it affects the model&amp;rsquo;s judgment by default.&lt;/p&gt;
&lt;p&gt;Therefore, &lt;code&gt;Claude.md&lt;/code&gt; is not a project introduction, not a collection of tips, and not a place to dump every development process. It should only store rules that the model is likely to violate repeatedly if it does not know them.&lt;/p&gt;
&lt;h2 id=&#34;why-it-can-make-things-worse&#34;&gt;Why It Can Make Things Worse
&lt;/h2&gt;&lt;p&gt;A poorly written global memory file usually causes three kinds of problems.&lt;/p&gt;
&lt;p&gt;First, it consumes context.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;Claude.md&lt;/code&gt; has one thousand lines, those lines stay in the model context for a long time. Code, error messages, and requirements that are actually relevant to the current task may get squeezed. Context is not free space. The larger the global rule file, the easier it is to dilute the current task.&lt;/p&gt;
&lt;p&gt;Second, it can trigger unnecessary behavior.&lt;/p&gt;
&lt;p&gt;For example, a global file might say:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Before every task, fully read the project directory.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;After every change, run a complete end-to-end test.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;These lines look responsible, but in a global memory file they become &amp;ldquo;do this for every task.&amp;rdquo; Even if the task is only changing one line of copy, the model may perform unnecessary exploration and tests because of these rules. The result is slower work, higher cost, and sometimes more interference.&lt;/p&gt;
&lt;p&gt;Third, it increases the burden of judgment.&lt;/p&gt;
&lt;p&gt;Statements like &amp;ldquo;keep code elegant, concise, maintainable, and extensible&amp;rdquo; sound correct, but they are weak constraints. Every time the model generates code, it has to decide what elegant or extensible means, without receiving a clear boundary.&lt;/p&gt;
&lt;p&gt;A better approach is to write concrete prohibitions or counterexamples instead of abstract virtues. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Do not add a generic abstraction for a single call site.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not change shared parsing logic without test coverage.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Do not put temporary scripts in the application source directory.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;These rules are more specific and easier to follow.&lt;/p&gt;
&lt;h2 id=&#34;what-should-go-in&#34;&gt;What Should Go In
&lt;/h2&gt;&lt;p&gt;You can use a simple standard to decide whether something belongs in &lt;code&gt;Claude.md&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;If the AI will repeatedly make the same mistake without it, then it is worth writing down.&lt;/p&gt;
&lt;p&gt;Content suitable for a global memory file usually has these traits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is durable&lt;/li&gt;
&lt;li&gt;It is strongly tied to the current repository&lt;/li&gt;
&lt;li&gt;It cannot be naturally inferred from the code structure&lt;/li&gt;
&lt;li&gt;It clearly changes model behavior&lt;/li&gt;
&lt;li&gt;It is preferably a constraint, prohibition, path rule, or fixed command&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;For all Hugo posts, only edit index.zh-cn.md and do not automatically generate other language versions.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Article front matter must include 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;Do not modify generated artifacts under public/.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On PowerShell, use scripts/deploy.ps1 for deployment.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;These are not vague suggestions. They are tied to how the repository actually works. If the model does not know them, it may make mistakes; once it knows them, it can avoid real missteps.&lt;/p&gt;
&lt;h2 id=&#34;what-should-stay-out&#34;&gt;What Should Stay Out
&lt;/h2&gt;&lt;p&gt;Many people turn &lt;code&gt;Claude.md&lt;/code&gt; into a project manual. That is usually unnecessary.&lt;/p&gt;
&lt;p&gt;Content that generally does not belong there includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project vision and background&lt;/li&gt;
&lt;li&gt;Large directory structure descriptions&lt;/li&gt;
&lt;li&gt;Temporary task plans&lt;/li&gt;
&lt;li&gt;One-off debugging steps&lt;/li&gt;
&lt;li&gt;Abstract code quality slogans&lt;/li&gt;
&lt;li&gt;Long workflows that are only needed in a few situations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, a description like &amp;ldquo;this is an e-commerce project with product, order, and user modules&amp;rdquo; helps very little with a concrete coding task. During real development, the model should rely on the current requirement, specification, code structure, and tests, not on a rough project introduction in global memory.&lt;/p&gt;
&lt;p&gt;The same applies to directory structure. Unless a directory has a special convention, such as &amp;ldquo;shared components must be imported from this directory,&amp;rdquo; there is no need to write the entire tree into the file. The model can read the project directory itself. A static directory description is easy to become stale.&lt;/p&gt;
&lt;h2 id=&#34;workflows-belong-in-skills-or-commands&#34;&gt;Workflows Belong in Skills or Commands
&lt;/h2&gt;&lt;p&gt;If a section says &amp;ldquo;first do this, then do that, then do the third thing,&amp;rdquo; it may not belong in &lt;code&gt;Claude.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Long-lived workflows can be turned into skills, scripts, or commands. The benefit is that the global memory only needs to keep the name and trigger condition, while the detailed steps are loaded only when needed.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;When the user asks to translate a Hugo post, use the post-translate skill.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;When the user asks to deploy the site, run the hugo-rsync-deploy workflow.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is lighter than putting the full translation and deployment processes into &lt;code&gt;Claude.md&lt;/code&gt;. Global memory stays short, and detailed workflows live in triggerable tools.&lt;/p&gt;
&lt;p&gt;Claude&amp;rsquo;s newer initialization flow is also moving in this direction. It does not only generate a &lt;code&gt;Claude.md&lt;/code&gt;; it also tries to split reusable workflows into skills and fixed events into hooks. The underlying idea is clear: global memory should be an entry point, while details should be loaded on demand.&lt;/p&gt;
&lt;h2 id=&#34;claudemd-needs-iteration&#34;&gt;Claude.md Needs Iteration
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude.md&lt;/code&gt; should not be written once and then ignored.&lt;/p&gt;
&lt;p&gt;A better approach is to keep it short at first and let real tasks expose problems. If an error happens once, handle it manually. If the same kind of error appears two or more times, it may deserve to become a global rule.&lt;/p&gt;
&lt;p&gt;This kind of iteration is more useful than writing a huge set of rules at the beginning. Early on, you do not know which rules are truly useful or which lines will become noise. As the project grows, collaboration increases, and the model&amp;rsquo;s behavior becomes clearer, you can gradually add the high-frequency problems.&lt;/p&gt;
&lt;p&gt;There is also an important trend: the stronger the model, the shorter the global memory file should become.&lt;/p&gt;
&lt;p&gt;Many requirements that once had to be written into prompts are now handled naturally by the model. Continuing to put those basic requirements into &lt;code&gt;Claude.md&lt;/code&gt; only increases context load. Global memory should shrink as model capability improves, keeping only what is unique to this repository and cannot be inferred automatically.&lt;/p&gt;
&lt;h2 id=&#34;a-more-practical-way-to-write-it&#34;&gt;A More Practical Way to Write It
&lt;/h2&gt;&lt;p&gt;When writing &lt;code&gt;Claude.md&lt;/code&gt;, think in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What special conventions does this repository have?&lt;/li&gt;
&lt;li&gt;Which mistakes has the model made more than once?&lt;/li&gt;
&lt;li&gt;Which directories, files, or commands must never be misused?&lt;/li&gt;
&lt;li&gt;Which workflows should become skills, scripts, or commands instead of permanent context?&lt;/li&gt;
&lt;li&gt;Which parts are merely introductions and can be deleted?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The final file may be only a few dozen lines. It does not need to fully explain the project. It needs to constrain behavior precisely.&lt;/p&gt;
&lt;p&gt;A good &lt;code&gt;Claude.md&lt;/code&gt; might look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;# Working Rules
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Only edit files related to the current task.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Do not modify generated artifact directories such as public/ or resources/.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- Hugo post rewrites only process index.zh-cn.md and do not generate other language versions.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- If deployment is involved, run the Hugo build first, then execute the existing rsync script.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- When there are existing user changes, do not revert them. Continue from the current state.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;It is short, but every line affects real behavior. That is the kind of content worth keeping in context permanently.&lt;/p&gt;
&lt;h2 id=&#34;final-thought&#34;&gt;Final Thought
&lt;/h2&gt;&lt;p&gt;The value of &lt;code&gt;Claude.md&lt;/code&gt; is not to make AI &amp;ldquo;know more.&amp;rdquo; It is to make AI &amp;ldquo;avoid fixed mistakes.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It is not a knowledge base or project encyclopedia. It is a long-lived constraint file for AI coding.&lt;br&gt;
The more specific, shorter, and closer to real mistakes it is, the more useful it becomes. The more generic, longer, and more like a project introduction it is, the more likely it is to slow the model down or even make results worse.&lt;/p&gt;
&lt;p&gt;Treat global memory as a scarce resource, not an unlimited scratchpad. That may be the most important principle for writing a good &lt;code&gt;Claude.md&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Is Starting to Control the Computer. What Does That Mean for the Future?</title>
        <link>https://knightli.com/en/2026/04/29/codex-computer-use-update/</link>
        <pubDate>Wed, 29 Apr 2026 11:28:25 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/29/codex-computer-use-update/</guid>
        <description>&lt;p&gt;The most important part of this Codex update is not that it added another ordinary button. It is that Codex is starting to move toward &amp;ldquo;controlling the computer.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;In the past, using AI usually meant asking questions in a chat box, copying, pasting, and then manually operating software.&lt;br&gt;
Now that boundary is expanding: AI does not just answer you. It can operate desktop applications according to your goal.&lt;/p&gt;
&lt;p&gt;In the short term, this is a new feature. In the long term, it may change how many people use computers.&lt;/p&gt;
&lt;h2 id=&#34;what-this-feature-is&#34;&gt;What This Feature Is
&lt;/h2&gt;&lt;p&gt;Simply put, Codex&amp;rsquo;s computer use capability lets it access and operate the desktop environment.&lt;/p&gt;
&lt;p&gt;It can do things such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;select and control an application&lt;/li&gt;
&lt;li&gt;receive tasks in natural language&lt;/li&gt;
&lt;li&gt;open browsers, AI tools, local files, or other software&lt;/li&gt;
&lt;li&gt;enter text, click buttons, and wait for results&lt;/li&gt;
&lt;li&gt;connect multiple steps into one task&lt;/li&gt;
&lt;li&gt;keep running in the background without requiring the user to follow every step manually&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its role is not just to write a piece of text for you, but to complete an operation flow for you.&lt;/p&gt;
&lt;p&gt;That is the key difference between an Agent and an ordinary chatbot:&lt;br&gt;
a chatbot mainly gives answers; an Agent is closer to &amp;ldquo;receiving a goal and then executing it.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;why-this-matters&#34;&gt;Why This Matters
&lt;/h2&gt;&lt;p&gt;In the past, much automation required you to know how to write scripts.&lt;/p&gt;
&lt;p&gt;For example, suppose you want to complete a cross-software workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;open a web page&lt;/li&gt;
&lt;li&gt;find information&lt;/li&gt;
&lt;li&gt;copy content&lt;/li&gt;
&lt;li&gt;pass it to another AI tool&lt;/li&gt;
&lt;li&gt;save a file&lt;/li&gt;
&lt;li&gt;open the local directory and check the result&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To automate this traditionally, you might need browser scripts, APIs, local programs, and even window automation.&lt;/p&gt;
&lt;p&gt;But many ordinary users do not know how to write these things.&lt;br&gt;
Even if they do, it may not be worth writing a script for a temporary task.&lt;/p&gt;
&lt;p&gt;This is where computer use matters: it pushes &amp;ldquo;script-like capability&amp;rdquo; toward natural language.&lt;/p&gt;
&lt;p&gt;You do not necessarily need to tell it exactly where to click.&lt;br&gt;
You can tell it what result you want and let it try to complete the task.&lt;/p&gt;
&lt;h2 id=&#34;workflows-it-may-change&#34;&gt;Workflows It May Change
&lt;/h2&gt;&lt;p&gt;I think the first workflows to change will not be extremely serious or high-risk work, but the tasks that are annoying, fragmented, repetitive, and not worth writing a dedicated program for.&lt;/p&gt;
&lt;h3 id=&#34;1-moving-information-across-software&#34;&gt;1. Moving Information Across Software
&lt;/h3&gt;&lt;p&gt;The most typical case is moving information between applications.&lt;/p&gt;
&lt;p&gt;Previously, you might switch back and forth between a browser, a document, a chat window, and a local folder.&lt;br&gt;
In the future, you can hand this kind of task to an Agent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;find a certain kind of information&lt;/li&gt;
&lt;li&gt;summarize it into a document&lt;/li&gt;
&lt;li&gt;save it to a specified directory&lt;/li&gt;
&lt;li&gt;open the result for you to review&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This work is not hard, but it consumes attention.&lt;br&gt;
The value of an Agent is that it absorbs these small operations.&lt;/p&gt;
&lt;h3 id=&#34;2-coordination-between-multiple-ai-tools&#34;&gt;2. Coordination Between Multiple AI Tools
&lt;/h3&gt;&lt;p&gt;Many people&amp;rsquo;s real workflow is no longer based on a single AI tool.&lt;/p&gt;
&lt;p&gt;It may look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one tool writes code&lt;/li&gt;
&lt;li&gt;one tool researches information&lt;/li&gt;
&lt;li&gt;one tool generates images&lt;/li&gt;
&lt;li&gt;one tool organizes documents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Previously, these tools were connected by manual copy and paste.&lt;br&gt;
In the future, an Agent can become the middle layer: it opens tools, passes context, waits for output, and organizes results.&lt;/p&gt;
&lt;p&gt;This can turn &amp;ldquo;multiple AI tools working together&amp;rdquo; from a manual process into a semi-automated process.&lt;/p&gt;
&lt;h3 id=&#34;3-office-software-automation&#34;&gt;3. Office Software Automation
&lt;/h3&gt;&lt;p&gt;Spreadsheets, presentations, documents, and email share one trait: they are powerful, but many operations are fragmented.&lt;/p&gt;
&lt;p&gt;If Agents can reliably control this software, the barrier to office automation will drop noticeably.&lt;/p&gt;
&lt;p&gt;You do not need to remember where a menu is or learn complicated shortcuts.&lt;br&gt;
You only need to describe the goal, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;turn this spreadsheet into a monthly report&lt;/li&gt;
&lt;li&gt;make a one-page summary from this document&lt;/li&gt;
&lt;li&gt;combine these materials into a clearly structured explanation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The tedious button operations will gradually be hidden behind natural language.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means-for-ordinary-users&#34;&gt;What It Means for Ordinary Users
&lt;/h2&gt;&lt;p&gt;For ordinary users, this kind of feature may have a more direct impact than &amp;ldquo;the model got a bit smarter.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Because it lowers the operation barrier, not just the knowledge barrier.&lt;/p&gt;
&lt;p&gt;Many people can describe what they want, but they do not know where to click or how to combine features inside software.&lt;br&gt;
If Agents can take over this part, using a computer may become:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;I describe the goal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent operates the software
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;I check the result
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That is closer to real productivity than simple chat.&lt;/p&gt;
&lt;h2 id=&#34;its-impact-on-software&#34;&gt;Its Impact on Software
&lt;/h2&gt;&lt;p&gt;If this kind of Agent capability continues to mature, software itself will also be affected.&lt;/p&gt;
&lt;p&gt;In the past, software design mainly served human clicking.&lt;br&gt;
In the future, software may also need to serve Agent operation.&lt;/p&gt;
&lt;p&gt;This means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;interface elements need to be clearer&lt;/li&gt;
&lt;li&gt;operation feedback needs to be more stable&lt;/li&gt;
&lt;li&gt;local permissions need to be more granular&lt;/li&gt;
&lt;li&gt;software may provide interfaces better suited for Agent calls&lt;/li&gt;
&lt;li&gt;users may care more about whether software can be operated smoothly by AI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the long run, the boundaries between applications may become thinner.&lt;br&gt;
Users may care less about &amp;ldquo;which app should I open&amp;rdquo; and more about &amp;ldquo;what task do I want to complete.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;do-not-overhype-it-yet&#34;&gt;Do Not Overhype It Yet
&lt;/h2&gt;&lt;p&gt;Of course, it is not time to fully let go yet.&lt;/p&gt;
&lt;p&gt;This kind of capability still has several clear limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;stability still needs observation&lt;/li&gt;
&lt;li&gt;complex tasks may fail in the middle&lt;/li&gt;
&lt;li&gt;permission boundaries must be handled carefully&lt;/li&gt;
&lt;li&gt;account, payment, and file deletion operations should not be delegated casually&lt;/li&gt;
&lt;li&gt;quota consumption is not something you can completely ignore&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So at this stage, the best use case is not letting it take over the whole computer, but letting it handle low-risk, reviewable, step-heavy tasks.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;organizing materials&lt;/li&gt;
&lt;li&gt;generating drafts&lt;/li&gt;
&lt;li&gt;moving content across tools&lt;/li&gt;
&lt;li&gt;opening and checking files&lt;/li&gt;
&lt;li&gt;running semi-automated workflows that can be reviewed by a human&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;The real importance of this Codex update is that it pushes AI from &amp;ldquo;answering questions&amp;rdquo; toward &amp;ldquo;operating the environment.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;In the short term, it is a computer use feature.&lt;br&gt;
In the long term, it may mark a shift in how personal computers are used.&lt;/p&gt;
&lt;p&gt;In the future, we may spend less time remembering buttons, finding menus, and switching windows.&lt;br&gt;
More often, we will describe the goal, let an Agent execute it, and then let humans make the final judgment.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Why Does a Codex Skill Exist in the Directory but Still Not Show Up?</title>
        <link>https://knightli.com/en/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/en/2026/04/29/codex-skill-not-loaded-because-of-utf-8-bom/</guid>
        <description>&lt;p&gt;This problem was easy to miss: several skills were already placed under &lt;code&gt;~/.codex/skills&lt;/code&gt;, but after opening a new Codex thread, the sidebar still showed only a small subset of them.&lt;/p&gt;
&lt;p&gt;At first, it looked like a cache or indexing issue. The real cause was more specific: several &lt;code&gt;SKILL.md&lt;/code&gt; files started with a UTF-8 BOM. Codex 0.111.0&amp;rsquo;s skill loader did not skip that byte sequence, so it misjudged the files as having no valid YAML front matter.&lt;/p&gt;
&lt;h2 id=&#34;symptom&#34;&gt;Symptom
&lt;/h2&gt;&lt;p&gt;The local directory contained these 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;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;But after opening a new thread, the actually exposed skills were only:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;In other words, a file existing on disk does not mean the current session can load it successfully. Codex parses the front matter of each &lt;code&gt;SKILL.md&lt;/code&gt; first. If parsing fails, that skill is excluded directly.&lt;/p&gt;
&lt;h2 id=&#34;investigation&#34;&gt;Investigation
&lt;/h2&gt;&lt;p&gt;Starting a fresh session with &lt;code&gt;codex exec&lt;/code&gt; showed a more direct error. In VS Code or other IDEs, these logs may not be visible:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Visually, these files seemed to have a normal header:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The real problem was at the byte level.&lt;/p&gt;
&lt;p&gt;The beginning of a failing file was:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The beginning of a file that loaded correctly was:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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; is &lt;code&gt;---&lt;/code&gt;. The preceding &lt;code&gt;EF-BB-BF&lt;/code&gt; is the UTF-8 BOM.&lt;/p&gt;
&lt;h2 id=&#34;cause&#34;&gt;Cause
&lt;/h2&gt;&lt;p&gt;In Codex 0.111.0, the skill loader expects the first byte of &lt;code&gt;SKILL.md&lt;/code&gt; to be the first &lt;code&gt;-&lt;/code&gt; in &lt;code&gt;---&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If the file starts with a UTF-8 BOM, the actual beginning becomes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;So the loader thinks the file does not start with the front matter delimiter and reports:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The skill content was not wrong, and the directory was not wrong either. A small encoding detail prevented the parser from recognizing the file.&lt;/p&gt;
&lt;h2 id=&#34;fix&#34;&gt;Fix
&lt;/h2&gt;&lt;p&gt;Convert the affected &lt;code&gt;SKILL.md&lt;/code&gt; files to UTF-8 without BOM.&lt;/p&gt;
&lt;p&gt;In PowerShell, this can be done like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;After processing, the file header should change from:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;verification&#34;&gt;Verification
&lt;/h2&gt;&lt;p&gt;After restarting a Codex session, the visible skills were restored to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If the sidebar still shows the old list, close the current Codex sidebar or window and reopen the project. The skill list is usually loaded when the session starts, so changes made in the middle of a session may not refresh immediately.&lt;/p&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;This kind of issue is easy to mistake for &amp;ldquo;Codex did not re-index&amp;rdquo; or &amp;ldquo;the skill was not installed correctly.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;When troubleshooting, check these three things first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether &lt;code&gt;SKILL.md&lt;/code&gt; is really in the correct directory&lt;/li&gt;
&lt;li&gt;whether the file has valid &lt;code&gt;---&lt;/code&gt; front matter at the top&lt;/li&gt;
&lt;li&gt;whether the file is UTF-8 without BOM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key in this case was the third point: the file looked fine, but its first byte was not &lt;code&gt;-&lt;/code&gt;, so Codex did not treat it as a valid skill.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What Is the Difference Between ~/.codex/skills and Project .codex/skills in Codex</title>
        <link>https://knightli.com/en/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/en/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;When organizing Codex skills, people most often get stuck on two questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is the difference between &lt;code&gt;~/.codex/skills&lt;/code&gt; and &lt;code&gt;project/.codex/skills&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Why does a skill exist in the directory but not appear in the current session?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is the short version.&lt;/p&gt;
&lt;h2 id=&#34;the-difference&#34;&gt;The Difference
&lt;/h2&gt;&lt;p&gt;The simplest way to remember it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; is your global skill library&lt;/li&gt;
&lt;li&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt; is the local skill library for that repository&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;Use it for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;skills you personally reuse across projects&lt;/li&gt;
&lt;li&gt;general workflows that are not tied to a specific repository&lt;/li&gt;
&lt;li&gt;workflows that clearly belong to your own habits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&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;The key trait of this kind of skill is: &lt;strong&gt;it still makes sense outside the current project.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;projectcodexskills&#34;&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Use it for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;workflows that only apply to this repository&lt;/li&gt;
&lt;li&gt;rules tightly coupled to the current project structure, scripts, or templates&lt;/li&gt;
&lt;li&gt;skills that should be shared by the team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a publishing workflow specific to this repository&lt;/li&gt;
&lt;li&gt;a generation template that only works in this project&lt;/li&gt;
&lt;li&gt;automation steps tightly bound to private project scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key trait of this kind of skill is: &lt;strong&gt;it stops being meaningful once it leaves this repository.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;when-to-use-global-and-when-to-use-project-skills&#34;&gt;When to Use Global and When to Use Project Skills
&lt;/h2&gt;&lt;p&gt;This rule of thumb is enough:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If it is about your personal habits, put it in &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it is about repository rules, put it in &lt;code&gt;project/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it can be reused across projects, prefer global&lt;/li&gt;
&lt;li&gt;If it should be shared by multiple people and evolve with the repository, prefer project-level&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;the-current-repository&#34;&gt;The Current Repository
&lt;/h2&gt;&lt;p&gt;Based on the current state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your machine has &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;this repository does not have &lt;code&gt;.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So right now, you mainly rely on global skills.&lt;/p&gt;
&lt;p&gt;That means workflows such as &lt;code&gt;post-rewrite&lt;/code&gt;, &lt;code&gt;post-translate&lt;/code&gt;, and &lt;code&gt;git-commit-push&lt;/code&gt; are currently more like part of your personal workflow, not something explicitly bundled with this repository.&lt;/p&gt;
&lt;h2 id=&#34;why-a-skill-exists-on-disk-but-may-not-appear-in-the-current-session&#34;&gt;Why a Skill Exists on Disk but May Not Appear in the Current Session
&lt;/h2&gt;&lt;p&gt;There are two different things here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Existing on disk&lt;/strong&gt;: the skill file exists in a local directory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exposed to the session&lt;/strong&gt;: the current session registered it into the available skill list&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are not the same thing.&lt;/p&gt;
&lt;p&gt;So this can happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a skill already exists under &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;but it does not appear in the list after &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This usually does not mean the skill is broken. More often, it means: &lt;strong&gt;the current session has not re-indexed it.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-make-a-skill-available-in-the-current-session&#34;&gt;How to Make a Skill Available in the Current Session
&lt;/h2&gt;&lt;p&gt;The practical checklist is short.&lt;/p&gt;
&lt;h3 id=&#34;1-put-it-in-the-right-directory&#34;&gt;1. Put It in the Right Directory
&lt;/h3&gt;&lt;p&gt;Global:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Project-level:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;project/.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-make-the-skillmd-header-recognizable&#34;&gt;2. Make the &lt;code&gt;SKILL.md&lt;/code&gt; Header Recognizable
&lt;/h3&gt;&lt;p&gt;At minimum, it needs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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: What this skill does
&lt;/span&gt;&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-open-a-new-session-after-creating-or-editing-it&#34;&gt;3. Open a New Session After Creating or Editing It
&lt;/h3&gt;&lt;p&gt;In many cases, a skill does not appear because the current session already fixed its available skill list when it started.&lt;/p&gt;
&lt;p&gt;So if you create a skill in the middle of a session, it may already exist on disk, but this session may not recognize it.&lt;/p&gt;
&lt;p&gt;The most reliable workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Put the skill in place&lt;/li&gt;
&lt;li&gt;End the current session&lt;/li&gt;
&lt;li&gt;Re-enter the project&lt;/li&gt;
&lt;li&gt;Open a new session&lt;/li&gt;
&lt;li&gt;Check whether it appears under &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-put-project-skills-in-place-before-starting&#34;&gt;4. Put Project Skills in Place Before Starting
&lt;/h3&gt;&lt;p&gt;If you want &lt;code&gt;project/.codex/skills&lt;/code&gt; to be recognized more reliably, put those skills into the project before entering the repository and starting the session.&lt;/p&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;The shortest conclusion is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; is your personal skill library&lt;/li&gt;
&lt;li&gt;&lt;code&gt;project/.codex/skills&lt;/code&gt; is the repository&amp;rsquo;s local rule library&lt;/li&gt;
&lt;li&gt;a skill existing in the directory does not mean the current session will always show it&lt;/li&gt;
&lt;li&gt;the most common fix is to put it in the right directory, write a valid &lt;code&gt;SKILL.md&lt;/code&gt;, and then start a new session&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>How to Choose Between GPT 5.5, Claude Opus 4.7, DeepSeek V4, and Qwen 3.6 Max</title>
        <link>https://knightli.com/en/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/en/2026/04/28/coding-ai-benchmark-gpt55-claude-opus47-deepseek-v4-qwen36max/</guid>
        <description>&lt;p&gt;If you only want the short answer, remember this version first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you want the most reliable option and the least wasted time, start with &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If you care most about page presentation, creativity, and visual polish, &lt;code&gt;Claude Opus 4.7&lt;/code&gt; is still strong&lt;/li&gt;
&lt;li&gt;If you want to know which domestic model is closest to the top tier, &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; is highly competitive now&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; is not weak, but its output is more uneven than the others&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When people ask which coding AI is the strongest right now, they are usually not really asking about a leaderboard. They are asking something more practical:&lt;br&gt;
&lt;strong&gt;If I need to build a page, make a demo, generate a small tool, or add interaction, which model is most likely to give me something usable on the first try?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From that angle, the differences between these models are already pretty clear.&lt;/p&gt;
&lt;h2 id=&#34;the-overall-verdict&#34;&gt;The Overall Verdict
&lt;/h2&gt;&lt;p&gt;If you put &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;, and &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; side by side, the most consistent all-around choice is still &lt;code&gt;GPT 5.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is not always the flashiest one, but it rarely leaves you clearly disappointed. It is fast, the first draft usually comes out with high completion, and it handles logic, interaction, motion, and small games with a steady hand.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude Opus 4.7&lt;/code&gt; feels different. Its biggest strength is not pure stability. It is page atmosphere, UI organization, and presentation. A lot of the time, you open what it made and your first reaction is simply that it looks polished. If visual presentation matters more to you, it is still very worth considering.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Qwen 3.6 Max&lt;/code&gt; is the one that most deserves a fresh look. It is no longer just &amp;ldquo;usable for a domestic model.&amp;rdquo; In some scenarios, it can genuinely go head-to-head with &lt;code&gt;GPT 5.5&lt;/code&gt; on output quality. In frontend pages, visual completeness, and realism, it has started to build real presence.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; is not failing because it cannot do the work. The issue is that it is less predictable. When it works, it can be perfectly solid, and sometimes surprisingly good. But the gap between its better and weaker outputs is still more obvious than it is with the others.&lt;/p&gt;
&lt;h2 id=&#34;where-gpt-55-is-strongest&#34;&gt;Where &lt;code&gt;GPT 5.5&lt;/code&gt; Is Strongest
&lt;/h2&gt;&lt;p&gt;If the things you do most often look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generate a complete webpage&lt;/li&gt;
&lt;li&gt;Build a small demo with motion&lt;/li&gt;
&lt;li&gt;Create an interactive page with some logic&lt;/li&gt;
&lt;li&gt;Generate a small game or a multi-state interaction&lt;/li&gt;
&lt;li&gt;Keep rework to a minimum&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then &lt;code&gt;GPT 5.5&lt;/code&gt; is still the safest default answer.&lt;/p&gt;
&lt;p&gt;Its advantages are mostly these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fast code generation&lt;/li&gt;
&lt;li&gt;High first-draft usability&lt;/li&gt;
&lt;li&gt;Fewer hard mistakes in logic and interaction&lt;/li&gt;
&lt;li&gt;Stable performance on mixed tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To put it more simply, &lt;code&gt;GPT 5.5&lt;/code&gt; feels like the model most likely to get the foundation right on the first pass.&lt;br&gt;
What many people actually need is not the most dazzling result in one category. They need the first version not to break. On that front, it is still the least stressful choice.&lt;/p&gt;
&lt;p&gt;Of course, it is not without weaknesses.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On highly visual pages, it is not always the most surprising&lt;/li&gt;
&lt;li&gt;Sometimes it is so stable that it leaves less of a design impression&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So if you want one default recommendation, it is still &lt;code&gt;GPT 5.5&lt;/code&gt;.&lt;br&gt;
That does not mean it is the only one worth looking at.&lt;/p&gt;
&lt;h2 id=&#34;who-claude-opus-47-fits-best&#34;&gt;Who &lt;code&gt;Claude Opus 4.7&lt;/code&gt; Fits Best
&lt;/h2&gt;&lt;p&gt;The appeal of &lt;code&gt;Claude Opus 4.7&lt;/code&gt; comes more from how the page feels.&lt;/p&gt;
&lt;p&gt;Its strengths are usually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cleaner UI structure&lt;/li&gt;
&lt;li&gt;More complete visual presentation&lt;/li&gt;
&lt;li&gt;Stronger presentation quality on some pages&lt;/li&gt;
&lt;li&gt;More noticeable creativity in visualization and design&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the model is helping you build things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demo pages&lt;/li&gt;
&lt;li&gt;Data presentation pages&lt;/li&gt;
&lt;li&gt;Small pages where visual feel matters a lot&lt;/li&gt;
&lt;li&gt;Outputs that should look polished immediately&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then &lt;code&gt;Claude&lt;/code&gt; still deserves a place near the top.&lt;/p&gt;
&lt;p&gt;Its weaknesses are also fairly clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is not as stable as &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sometimes it looks good, but the detailed logic drifts&lt;/li&gt;
&lt;li&gt;In some cases the code runs, yet the core experience is not quite right&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;Claude&lt;/code&gt; feels more like a frontend-leaning model with extra aesthetic instinct.&lt;br&gt;
If your first priority is how the page looks, it has real advantages. If your biggest fear is a logic mistake in the first output, you need to be a bit more careful.&lt;/p&gt;
&lt;h2 id=&#34;why-qwen-36-max-deserves-serious-attention&#34;&gt;Why &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; Deserves Serious Attention
&lt;/h2&gt;&lt;p&gt;Among these models, &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; gives the strongest sense of momentum.&lt;/p&gt;
&lt;p&gt;Not long ago, many people looked at domestic coding AI mainly by asking whether it could keep up at all. With &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;, the question is already different:&lt;br&gt;
&lt;strong&gt;In frontend-first output scenarios, can it directly compete with the top overseas models?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Its strongest areas right now include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Good-looking page output&lt;/li&gt;
&lt;li&gt;Solid motion and realistic visual effects in some cases&lt;/li&gt;
&lt;li&gt;Outputs that feel more complete&lt;/li&gt;
&lt;li&gt;Results that can sometimes approach or stay close to &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That says something important.&lt;br&gt;
If your use case leans toward webpages, frontend work, and presentation-heavy output, &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; is no longer just a backup option. It can be treated as a serious main candidate.&lt;/p&gt;
&lt;p&gt;It still has some weaknesses, though.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On interaction-heavy logic tasks, it can still lose a bit of completeness&lt;/li&gt;
&lt;li&gt;Some pages look very good, while some tasks fall flatter than expected&lt;/li&gt;
&lt;li&gt;Its variance is still higher than &lt;code&gt;GPT 5.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even so, its current presence is already very strong.&lt;br&gt;
If you want to know which domestic model deserves the most attention right now, it is hard to look past &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;where-deepseek-v4-stands-right-now&#34;&gt;Where &lt;code&gt;DeepSeek V4&lt;/code&gt; Stands Right Now
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeepSeek V4&lt;/code&gt; is a little more complicated to place.&lt;/p&gt;
&lt;p&gt;The issue is not that it cannot do the work. The issue is that it is harder to predict where a given result will land.&lt;br&gt;
Sometimes it can finish the task with decent visuals and working functionality. Sometimes, once the task asks for animation, logic, and data presentation at the same time, it becomes more likely to stumble.&lt;/p&gt;
&lt;p&gt;Right now it feels more like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It has real ability&lt;/li&gt;
&lt;li&gt;It is not weak&lt;/li&gt;
&lt;li&gt;It can still hand in acceptable results on some tasks&lt;/li&gt;
&lt;li&gt;But its stability is not yet reassuring enough&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That shapes who it suits best.&lt;/p&gt;
&lt;p&gt;If you do not mind trying a few times, can tolerate an occasional restart, or already plan to check and edit the code yourself, &lt;code&gt;DeepSeek V4&lt;/code&gt; is still worth using.&lt;br&gt;
But if your top priority is reducing friction and maximizing first-pass success, it is not yet the safest option.&lt;/p&gt;
&lt;h2 id=&#34;so-what-should-an-ordinary-user-pick&#34;&gt;So What Should an Ordinary User Pick?
&lt;/h2&gt;&lt;p&gt;If you are not benchmarking models for fun and actually want to get work done, the easiest way is to choose by use case.&lt;/p&gt;
&lt;h3 id=&#34;1-you-want-less-hassle-and-a-higher-first-pass-success-rate&#34;&gt;1. You want less hassle and a higher first-pass success rate
&lt;/h3&gt;&lt;p&gt;Pick &lt;code&gt;GPT 5.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is best at this workflow: &amp;ldquo;Here is my requirement, give me a usable first version.&amp;rdquo;&lt;br&gt;
That matters even more when you do not have the time to keep iterating and fixing.&lt;/p&gt;
&lt;h3 id=&#34;2-you-care-more-about-presentation-and-visual-finish&#34;&gt;2. You care more about presentation and visual finish
&lt;/h3&gt;&lt;p&gt;Pick &lt;code&gt;Claude Opus 4.7&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If what you want is a page that already looks more like a finished product, or your work is more demo-oriented and presentation-oriented, &lt;code&gt;Claude&lt;/code&gt; shows its value more easily.&lt;/p&gt;
&lt;h3 id=&#34;3-you-want-the-strongest-domestic-model-for-frontend-first-output&#34;&gt;3. You want the strongest domestic model for frontend-first output
&lt;/h3&gt;&lt;p&gt;Start with &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is no longer something you use only as a compromise. It can now be compared directly and seriously.&lt;br&gt;
If your tasks lean toward webpages, motion, and presentation, its competitiveness is already very real.&lt;/p&gt;
&lt;h3 id=&#34;4-you-can-tolerate-some-variance-and-want-to-keep-watching-domestic-progress&#34;&gt;4. You can tolerate some variance and want to keep watching domestic progress
&lt;/h3&gt;&lt;p&gt;Keep an eye on &lt;code&gt;DeepSeek V4&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Its problem is not lack of ability. It is that the level of execution still varies too much.&lt;br&gt;
If the stability keeps improving, it could become much more important.&lt;/p&gt;
&lt;h2 id=&#34;one-last-line&#34;&gt;One Last Line
&lt;/h2&gt;&lt;p&gt;The difference between these mainstream coding AIs is no longer about who can code and who cannot. It is about who is steadier, who looks better, and who fits your kind of work.&lt;/p&gt;
&lt;p&gt;If you want the simplest answer, &lt;code&gt;GPT 5.5&lt;/code&gt; is still the first choice.&lt;br&gt;
If you want stronger presentation quality, &lt;code&gt;Claude Opus 4.7&lt;/code&gt; still has real flavor.&lt;br&gt;
If you care about which domestic model deserves the closest attention, &lt;code&gt;Qwen 3.6 Max&lt;/code&gt; is already near the front.&lt;br&gt;
&lt;code&gt;DeepSeek V4&lt;/code&gt; feels more like a strong contender that is still working on consistency.&lt;/p&gt;
&lt;p&gt;If you want the shortest possible conclusion:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For stability, pick &lt;code&gt;GPT 5.5&lt;/code&gt;. For presentation, pick &lt;code&gt;Claude&lt;/code&gt;. Among domestic models, the one most worth watching is &lt;code&gt;Qwen 3.6 Max&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Ralph and Multi-Agent Collaboration: How to Keep AI Working Reliably Over Long Tasks</title>
        <link>https://knightli.com/en/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/en/2026/04/27/ralph-multi-agent-long-running-ai-workflows/</guid>
        <description>&lt;p&gt;If you have been using coding agents lately, you quickly run into a very practical question: &lt;strong&gt;AI can work, sure, but how do you keep it working for hours without drifting, forgetting requirements, or redoing the same work?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That is the real question behind many discussions around &lt;code&gt;Ralph&lt;/code&gt; and multi-agent collaboration. The point is not simply to compare which model is stronger. The more useful question is this: &lt;strong&gt;how do you design a workflow that lets AI stay stable during long tasks?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you break the problem down, there are usually two main routes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;Ralph&lt;/code&gt; approach: keep starting fresh sessions and connect context through the filesystem&lt;/li&gt;
&lt;li&gt;The multi-agent approach: let a lead agent coordinate while worker agents split the execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Put more simply, the question is not &amp;ldquo;which model is more powerful,&amp;rdquo; but &amp;ldquo;how do you organize AI so it behaves more like a small team that can keep delivering?&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;01-why-long-tasks-go-off-the-rails&#34;&gt;01 Why Long Tasks Go Off the Rails
&lt;/h2&gt;&lt;p&gt;In short tasks, many problems stay hidden. You give an instruction, the model reads a few files, changes a few lines, and the job is done.&lt;/p&gt;
&lt;p&gt;Once the task gets longer, the common failure modes start to pile up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conversations grow longer and context starts to bloat&lt;/li&gt;
&lt;li&gt;Earlier requirements get squeezed out by newer information&lt;/li&gt;
&lt;li&gt;One agent has to plan, implement, and test at the same time&lt;/li&gt;
&lt;li&gt;Without a clear acceptance step, &amp;ldquo;it is done&amp;rdquo; often just means &amp;ldquo;it says it is done&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So when AI runs for a long time, the real challenge is often not single-shot model quality. It is &lt;strong&gt;task slicing, state handoff, role separation, and feedback loops&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;02-the-ralph-approach-break-long-tasks-into-short-rounds&#34;&gt;02 The Ralph Approach: Break Long Tasks into Short Rounds
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Ralph&lt;/code&gt; is a good fit when the main problem is dirty, overloaded context.&lt;/p&gt;
&lt;p&gt;Its core pattern is straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep launching new agent sessions in a loop&lt;/li&gt;
&lt;li&gt;Let each round handle only one small enough task&lt;/li&gt;
&lt;li&gt;Store cross-round state in files instead of forcing everything into one conversation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefit is immediate: every round starts with fresh context, so the session stays more focused and is less likely to get dragged down by old history.&lt;/p&gt;
&lt;p&gt;If you have already looked at &lt;code&gt;Ralph&lt;/code&gt;-style projects, the structure will feel familiar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Current tasks live in structured files&lt;/li&gt;
&lt;li&gt;Intermediate learnings go into progress files&lt;/li&gt;
&lt;li&gt;Code changes stay in git history&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, &lt;code&gt;Ralph&lt;/code&gt; does not try to make one agent remember everything forever. It externalizes memory on purpose so the session itself can stay lighter.&lt;/p&gt;
&lt;p&gt;This kind of setup works especially well when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The work can already be split into small stories&lt;/li&gt;
&lt;li&gt;Each story can fit inside one context window&lt;/li&gt;
&lt;li&gt;The project already has tests, typecheck, or other checks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is a solution to the problem of &lt;strong&gt;how to keep AI moving forward one round at a time&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;03-the-multi-agent-approach-split-the-work-one-agent-cannot-handle-alone&#34;&gt;03 The Multi-Agent Approach: Split the Work One Agent Cannot Handle Alone
&lt;/h2&gt;&lt;p&gt;The other route is multi-agent collaboration.&lt;/p&gt;
&lt;p&gt;In this kind of workflow design, the more promising pattern is usually this: the lead agent should not do all the work directly. Instead, it coordinates while other agents handle development, testing, checking, and acceptance.&lt;/p&gt;
&lt;p&gt;That differs from &lt;code&gt;Ralph&lt;/code&gt; in an important way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; feels more like serial iteration&lt;/li&gt;
&lt;li&gt;Multi-agent work feels more like parallel division of labor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the task naturally contains different roles, multi-agent collaboration becomes easier to use. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One agent breaks down the task and writes the execution plan&lt;/li&gt;
&lt;li&gt;One agent implements the actual change&lt;/li&gt;
&lt;li&gt;One agent tests and validates the result&lt;/li&gt;
&lt;li&gt;One agent checks whether the result still matches the original goal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point is not to open more windows for the sake of it. The real value is role separation. Tasks that used to be piled onto one agent can now be split into clearer stages.&lt;/p&gt;
&lt;p&gt;Once the role boundaries are clear, several problems become lighter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The person writing does not have to be the same one reviewing&lt;/li&gt;
&lt;li&gt;The testing side does not have to reconstruct the full requirement every time&lt;/li&gt;
&lt;li&gt;The lead agent is less likely to drown in implementation detail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a solution to the problem of &lt;strong&gt;how to make AI cooperate more like a small team&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;04-the-real-key-is-not-parallelism-but-task-design&#34;&gt;04 The Real Key Is Not Parallelism, but Task Design
&lt;/h2&gt;&lt;p&gt;Whether you choose &lt;code&gt;Ralph&lt;/code&gt; or multi-agent collaboration, the easiest thing to underestimate is this: &lt;strong&gt;workflow design matters more than opening more agents.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If the task split is wrong, adding more agents only parallelizes the confusion.&lt;/p&gt;
&lt;p&gt;A more stable breakdown usually has a few traits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One task maps to one clear objective&lt;/li&gt;
&lt;li&gt;One role owns one category of output&lt;/li&gt;
&lt;li&gt;Every round has a clear done condition&lt;/li&gt;
&lt;li&gt;The output of one round can be consumed directly by the next&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, instead of giving AI one giant instruction like &amp;ldquo;build the whole feature,&amp;rdquo; a steadier structure is often:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Break out requirements and boundaries first&lt;/li&gt;
&lt;li&gt;Then split implementation&lt;/li&gt;
&lt;li&gt;Then split testing&lt;/li&gt;
&lt;li&gt;Then make acceptance its own step&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The advantage is that when something goes wrong, it becomes easier to tell whether the problem sits in understanding, implementation, testing, or delivery criteria.&lt;/p&gt;
&lt;h2 id=&#34;05-why-acceptance-matters-so-much&#34;&gt;05 Why Acceptance Matters So Much
&lt;/h2&gt;&lt;p&gt;Many AI workflows fail not because nothing happened earlier, but because the last step lacked a genuinely independent confirmation pass.&lt;/p&gt;
&lt;p&gt;In long tasks, there is often a wide gap between &amp;ldquo;a result was produced&amp;rdquo; and &amp;ldquo;the result is actually usable.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;So one especially important direction is to separate development from acceptance. Even without a complex process, it is worth asking at least these questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Did it really complete the original task?&lt;/li&gt;
&lt;li&gt;Did it only patch the surface without fixing the root cause?&lt;/li&gt;
&lt;li&gt;Did testing cover only the happiest path?&lt;/li&gt;
&lt;li&gt;Did the upstream requirement get silently changed along the way?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without that layer, AI can easily keep declaring success inside a long workflow.&lt;/p&gt;
&lt;h2 id=&#34;06-how-to-choose-between-the-two&#34;&gt;06 How to Choose Between the Two
&lt;/h2&gt;&lt;p&gt;If you want a fast rule of thumb:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If your main pain is context bloat and long-session drift, start with &lt;code&gt;Ralph&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If your main pain is one agent wearing too many hats, start with multi-agent collaboration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More specifically:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ralph&lt;/code&gt; fits work that is clear, granular, and easy to move forward round by round&lt;/li&gt;
&lt;li&gt;Multi-agent collaboration fits work with strong role boundaries and a need for parallelism and cross-checking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, these two approaches are not always competitors. A mature setup often combines them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a &lt;code&gt;Ralph&lt;/code&gt;-style outer loop to push the larger task forward&lt;/li&gt;
&lt;li&gt;Use multi-agent collaboration inside each round for research, implementation, testing, and acceptance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That gives you both better control over long context and better collaboration inside a single round.&lt;/p&gt;
&lt;h2 id=&#34;07-one-sentence-summary&#34;&gt;07 One-Sentence Summary
&lt;/h2&gt;&lt;p&gt;What makes these approaches worth studying is not that they recommend &lt;code&gt;Ralph&lt;/code&gt; or multi-agent collaboration in isolation. It is that they make one practical truth very clear: &lt;strong&gt;keeping AI stable over long tasks depends less on the model itself and more on whether you designed context, tasks, roles, and acceptance well.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are already asking &lt;code&gt;Claude Code&lt;/code&gt;, &lt;code&gt;Codex&lt;/code&gt;, or other coding agents to handle longer real-world tasks, this kind of workflow thinking is often more valuable than simply switching to a stronger model.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What Ralph Is: Turning Claude Code and Amp into a Repeatable Autonomous Development Loop</title>
        <link>https://knightli.com/en/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/en/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</guid>
        <description>&lt;p&gt;If you have been paying attention to long-running coding agent workflows lately, &lt;code&gt;snarktank/ralph&lt;/code&gt; is a project worth a close look. It is not another model wrapper or another chat UI. Instead, it organizes &lt;code&gt;Claude Code&lt;/code&gt; or &lt;code&gt;Amp&lt;/code&gt; into an autonomous loop that keeps running through stories in a &lt;code&gt;PRD&lt;/code&gt; until everything is done.&lt;/p&gt;
&lt;p&gt;Its core idea is simple: &lt;strong&gt;do not force the same agent to keep working inside an increasingly long and messy context. Start a brand-new AI coding session for every iteration instead.&lt;/strong&gt; That keeps context from bloating and makes task boundaries much clearer.&lt;/p&gt;
&lt;h2 id=&#34;01-what-ralph-is&#34;&gt;01 What Ralph Is
&lt;/h2&gt;&lt;p&gt;Ralph describes itself very clearly: it is an autonomous AI agent loop that repeatedly runs an AI coding tool until the items in a &lt;code&gt;PRD&lt;/code&gt; are complete.&lt;/p&gt;
&lt;p&gt;The repository currently supports two tools:&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;Each iteration starts a fresh instance. In other words, it does not depend on one endlessly extended conversation. Instead, it keeps memory in external state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git history&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;That detail matters a lot. When people let an agent run on large tasks, the main problem is often not that the model cannot code. It is that the session becomes heavier over time, starts losing context, forgets requirements, and repeats work. Ralph is designed almost entirely around that problem.&lt;/p&gt;
&lt;h2 id=&#34;02-how-it-works&#34;&gt;02 How It Works
&lt;/h2&gt;&lt;p&gt;Ralph&amp;rsquo;s workflow has three steps.&lt;/p&gt;
&lt;h3 id=&#34;1-write-a-prd-first&#34;&gt;1. Write a PRD first
&lt;/h3&gt;&lt;p&gt;The README suggests starting with the bundled &lt;code&gt;prd&lt;/code&gt; skill to generate a requirements document and break the feature into smaller stories.&lt;/p&gt;
&lt;h3 id=&#34;2-convert-the-prd-into-prdjson&#34;&gt;2. Convert the PRD into &lt;code&gt;prd.json&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Then the &lt;code&gt;ralph&lt;/code&gt; skill converts the Markdown PRD into a structured &lt;code&gt;prd.json&lt;/code&gt;. That file stores the user stories and whether each one has passed.&lt;/p&gt;
&lt;h3 id=&#34;3-run-the-loop-script&#34;&gt;3. Run the loop script
&lt;/h3&gt;&lt;p&gt;The actual execution is handled by &lt;code&gt;ralph.sh&lt;/code&gt;. The commands look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The default is 10 iterations. In each round, Ralph roughly does the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a branch from &lt;code&gt;branchName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pick the highest-priority story where &lt;code&gt;passes: false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Implement only that story&lt;/li&gt;
&lt;li&gt;Run quality checks such as typecheck and tests&lt;/li&gt;
&lt;li&gt;Commit if the checks pass&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Append learnings to &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Continue to the next round&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So Ralph is not trying to finish everything in one go. It compresses work into many small loops that can fit inside a single context window.&lt;/p&gt;
&lt;h2 id=&#34;03-what-makes-ralph-interesting&#34;&gt;03 What Makes Ralph Interesting
&lt;/h2&gt;&lt;h3 id=&#34;1-every-round-uses-fresh-context&#34;&gt;1. Every round uses fresh context
&lt;/h3&gt;&lt;p&gt;This is Ralph&amp;rsquo;s defining design choice. The README emphasizes that every iteration is a brand-new AI instance, and cross-iteration memory lives only in git, &lt;code&gt;progress.txt&lt;/code&gt;, and &lt;code&gt;prd.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is very different from the common pattern of keeping &lt;code&gt;Claude Code&lt;/code&gt; or another tool inside one long conversation. Once tasks get larger, that approach often slows down under its own history and gradually loses focus. Ralph accepts that no single round should remember everything, then moves memory into files instead.&lt;/p&gt;
&lt;h3 id=&#34;2-it-forces-tasks-to-stay-small&#34;&gt;2. It forces tasks to stay small
&lt;/h3&gt;&lt;p&gt;The docs explicitly say that each PRD item must be small enough to finish within one context window. Tasks like adding a filter, updating a server action, or adding a database column are about the right size. Tasks like rebuilding the whole API or creating an entire dashboard are too large.&lt;/p&gt;
&lt;p&gt;That constraint is practical. Many autonomous agent loops fail not because the loop is bad, but because the task slicing is too coarse and each round carries too much at once.&lt;/p&gt;
&lt;h3 id=&#34;3-it-preserves-learnings-not-just-code&#34;&gt;3. It preserves learnings, not just code
&lt;/h3&gt;&lt;p&gt;Beyond &lt;code&gt;progress.txt&lt;/code&gt;, the README also stresses updating &lt;code&gt;AGENTS.md&lt;/code&gt;. The reason is straightforward: future iterations and future developers will read those notes, so patterns, gotchas, and conventions discovered in each round should be written down in the project itself.&lt;/p&gt;
&lt;p&gt;Put differently, Ralph is not only trying to keep an agent coding continuously. It is also trying to help the agent build working memory about the codebase over time.&lt;/p&gt;
&lt;h2 id=&#34;04-when-it-fits-best&#34;&gt;04 When It Fits Best
&lt;/h2&gt;&lt;p&gt;Ralph is a good fit when your task looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can already be broken into a clear set of user stories&lt;/li&gt;
&lt;li&gt;The codebase has reliable feedback loops such as tests, typecheck, or CI&lt;/li&gt;
&lt;li&gt;You want the agent to keep moving forward without putting everything into one long conversation&lt;/li&gt;
&lt;li&gt;You are fine with iterative progress instead of demanding a one-shot completion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the other hand, if the requirement is still vague, or the work depends on frequent discussion and constant changes of direction, Ralph may not be the first thing to reach for. It fits better once the requirements are already shaped and execution needs to be steady.&lt;/p&gt;
&lt;h2 id=&#34;05-how-it-differs-from-normal-claude-code-usage&#34;&gt;05 How It Differs from Normal Claude Code Usage
&lt;/h2&gt;&lt;p&gt;With plain &lt;code&gt;Claude Code&lt;/code&gt;, the usual pattern is simple: open a session and let it keep reading code, editing files, and running commands. That works very well for small and medium tasks, but larger tasks often hit two problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Context keeps growing&lt;/li&gt;
&lt;li&gt;Intermediate decisions are harder to preserve in a structured way&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralph turns &lt;code&gt;Claude Code&lt;/code&gt; or &lt;code&gt;Amp&lt;/code&gt; into something closer to a batch executor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The task source is &lt;code&gt;prd.json&lt;/code&gt;, not ad hoc chat instructions&lt;/li&gt;
&lt;li&gt;Each iteration recognizes only one story&lt;/li&gt;
&lt;li&gt;Completion state is written back to files&lt;/li&gt;
&lt;li&gt;Learnings go into &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Code changes are preserved in git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So in practice, it feels less like a new AI assistant and more like an iteration controller added on top of a coding agent.&lt;/p&gt;
&lt;h2 id=&#34;06-one-important-requirement&#34;&gt;06 One Important Requirement
&lt;/h2&gt;&lt;p&gt;Whether Ralph works well depends less on the loop itself and more on the quality of your feedback loops. The README says this very directly: without typecheck, tests, and CI, errors will compound across later iterations.&lt;/p&gt;
&lt;p&gt;For frontend tasks, the repository even recommends adding browser verification to the acceptance criteria. Without real verification, an agent can easily confuse &amp;ldquo;it looks done&amp;rdquo; with &amp;ldquo;it actually works.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;That point is important. Ralph is not magical automation. It is more like a force multiplier for the engineering discipline you already have. If your project already has clear task breakdowns and reliable checks, Ralph becomes much more useful. If those foundations are missing, the loop will only repeat the confusion.&lt;/p&gt;
&lt;h2 id=&#34;07-one-sentence-summary&#34;&gt;07 One-Sentence Summary
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;Ralph&lt;/code&gt; worth studying is not that it introduces a huge amount of new infrastructure. It takes a simple but useful idea and turns it into a practical workflow: &lt;strong&gt;let &lt;code&gt;Claude Code&lt;/code&gt; or &lt;code&gt;Amp&lt;/code&gt; handle one small story per round, keep focus with fresh context, and preserve continuity through &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;prd.json&lt;/code&gt;, and &lt;code&gt;progress.txt&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are already using coding agents in real projects and keep getting stuck on how to push long tasks forward reliably, Ralph&amp;rsquo;s approach is well worth borrowing.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub repository: &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;Interactive flowchart: &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 vs GPT-5.5: After Testing Frontend, Writing, and Coding, the Gap Feels Bigger Than Expected</title>
        <link>https://knightli.com/en/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/en/2026/04/25/deepseek-v4-pro-vs-gpt-5-5-frontend-writing-code/</guid>
        <description>&lt;p&gt;Comparisons between &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; and &lt;code&gt;GPT-5.5&lt;/code&gt; are getting more attention lately. The reason is no longer whether either model is usable. The real question is: &lt;strong&gt;when the work lands in frontend development, writing, and coding, which one is better suited to be your main tool?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When people compare models like this, they often start by asking which one is stronger.&lt;br&gt;
But the more useful question is usually different: &lt;strong&gt;in a real task, which one is steadier, cheaper to communicate with, and more likely to produce something you can keep building on immediately?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If we simplify the conclusion first, it roughly looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When you want more balanced output and a more complete productized experience, many people still look at &lt;code&gt;GPT-5.5&lt;/code&gt; first&lt;/li&gt;
&lt;li&gt;When you need high-frequency iteration in Chinese, care more about cost, and want fast response cycles, &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; becomes a serious candidate&lt;/li&gt;
&lt;li&gt;What really determines the experience is often not the model name itself, but the task type, the prompting approach, and whether you need to keep revising afterward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s break this down through the three most common comparison scenarios.&lt;/p&gt;
&lt;h2 id=&#34;1-frontend-tasks-the-real-question-is-not-whether-it-can-build-a-page-but-whether-it-can-keep-improving-it&#34;&gt;1. Frontend tasks: the real question is not whether it can build a page, but whether it can keep improving it
&lt;/h2&gt;&lt;p&gt;Frontend work looks ideal for model comparisons because the result is easy to see.&lt;br&gt;
Can the page run? Does it look good? Is the structure clean? You can judge all of that quickly.&lt;/p&gt;
&lt;p&gt;But the real difference usually does not appear in whether the first draft works. It shows up in questions like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the structure clear enough?&lt;/li&gt;
&lt;li&gt;Is the component split natural?&lt;/li&gt;
&lt;li&gt;Does changing one part accidentally break another?&lt;/li&gt;
&lt;li&gt;Can it keep following the same implementation logic across multiple rounds of instructions?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is also why many frontend demos that look impressive in the first round do not necessarily stay ahead in real workflows.&lt;/p&gt;
&lt;p&gt;If your task is something like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quickly generate a runnable page prototype&lt;/li&gt;
&lt;li&gt;Draft a landing page idea&lt;/li&gt;
&lt;li&gt;Fill in required styles, buttons, cards, forms, and other basic elements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then both models will often get you fairly close, and the difference is more about output style.&lt;/p&gt;
&lt;p&gt;But if the task becomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repeatedly revising the UI over multiple rounds&lt;/li&gt;
&lt;li&gt;Reading existing code and continuing from there&lt;/li&gt;
&lt;li&gt;Balancing component structure, style consistency, and maintainability&lt;/li&gt;
&lt;li&gt;Gradually turning a static page into real project code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then what you should watch is no longer “who looks better in round one,” but “who is less likely to drift off by round five.”&lt;/p&gt;
&lt;p&gt;So in frontend work, the key comparison is not whether the model can generate a page. It is whether, after you keep adding constraints, it can still maintain stable structure, consistent naming, and manageable modification costs.&lt;/p&gt;
&lt;h2 id=&#34;2-writing-tasks-the-real-difference-is-not-how-much-it-writes-but-how-stable-the-style-stays-and-how-well-rewrites-go&#34;&gt;2. Writing tasks: the real difference is not how much it writes, but how stable the style stays and how well rewrites go
&lt;/h2&gt;&lt;p&gt;Writing is another area where people can misjudge models very easily.&lt;/p&gt;
&lt;p&gt;A big reason is that first drafts often look fine from both sides.&lt;br&gt;
The structure is complete, the paragraphs are there, and the tone is smooth enough that it is easy to think they are basically similar.&lt;/p&gt;
&lt;p&gt;But as soon as you push the task one step further, the differences show up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Can it accurately understand your intended audience?&lt;/li&gt;
&lt;li&gt;Can it switch tone while staying on the same topic?&lt;/li&gt;
&lt;li&gt;Does it lose key points when rewriting?&lt;/li&gt;
&lt;li&gt;Does it stay stable when compressing, expanding, retitling, or restructuring?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The biggest problem in writing is usually not “it cannot write,” but “it wrote something that still needs a lot of fixing.”&lt;/p&gt;
&lt;p&gt;So when comparing &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; and &lt;code&gt;GPT-5.5&lt;/code&gt;, the more useful method is not to ask each to write one article. It is to run several rounds like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write the first draft&lt;/li&gt;
&lt;li&gt;Rewrite it in a different tone&lt;/li&gt;
&lt;li&gt;Compress it into a shorter version&lt;/li&gt;
&lt;li&gt;Rework it into something better suited for click-driven headlines or search distribution&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If a model can keep the key points intact, the wording stable, and the structure clean through those rounds, then it has much more value in a real writing workflow.&lt;/p&gt;
&lt;p&gt;In other words, what writing tasks really measure is not “literary flair,” but &lt;strong&gt;revision ability, instruction following, and the feeling of continuous collaboration&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;3-coding-tasks-the-real-gap-shows-up-in-long-chain-stability&#34;&gt;3. Coding tasks: the real gap shows up in long-chain stability
&lt;/h2&gt;&lt;p&gt;Coding tasks expose a model’s real level more easily than frontend work, because they are not just about generating output. They have to connect with reality.&lt;/p&gt;
&lt;p&gt;Very quickly, you run into questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Can it understand an existing project structure?&lt;/li&gt;
&lt;li&gt;Can it modify multiple files at once?&lt;/li&gt;
&lt;li&gt;Does it introduce new problems after making changes?&lt;/li&gt;
&lt;li&gt;Can it keep debugging by following logs and errors?&lt;/li&gt;
&lt;li&gt;After several rounds, does it still remember what it already changed?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this kind of work, what users care about most is usually not whether a single code snippet looks elegant. It is: &lt;strong&gt;can this model keep moving the task forward, instead of leaving me to clean up the mess?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So when comparing &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; and &lt;code&gt;GPT-5.5&lt;/code&gt;, the most meaningful thing to look at is usually not isolated coding prompts, but a process closer to real work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read an existing repository&lt;/li&gt;
&lt;li&gt;Find a bug&lt;/li&gt;
&lt;li&gt;Modify several related files&lt;/li&gt;
&lt;li&gt;Continue fixing based on error messages&lt;/li&gt;
&lt;li&gt;Summarize the result clearly at the end&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once the task enters that kind of continuous workflow, context retention, execution habits, explanation quality, and rework rate all matter more than single-turn answer quality.&lt;/p&gt;
&lt;p&gt;That is also why many users eventually do not settle on “using only one model forever” for coding. Instead, they switch their main tool depending on the stage of the task.&lt;/p&gt;
&lt;h2 id=&#34;4-what-is-really-worth-comparing-is-not-who-wins-but-which-tasks-are-more-cost-effective-to-assign-to-whom&#34;&gt;4. What is really worth comparing is not who wins, but which tasks are more cost-effective to assign to whom
&lt;/h2&gt;&lt;p&gt;If you put &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; and &lt;code&gt;GPT-5.5&lt;/code&gt; side by side and only try to pick one overall champion, the result is usually an empty conclusion.&lt;/p&gt;
&lt;p&gt;That is because real tasks are not one standard exam:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some are one-off generation&lt;/li&gt;
&lt;li&gt;Some are multi-round collaboration&lt;/li&gt;
&lt;li&gt;Some are Chinese writing&lt;/li&gt;
&lt;li&gt;Some are engineering changes&lt;/li&gt;
&lt;li&gt;Some prioritize speed&lt;/li&gt;
&lt;li&gt;Some prioritize stability&lt;/li&gt;
&lt;li&gt;Some prioritize cost&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the approach that is closer to real usage is usually to divide by task goal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you want a more complete overall experience, more mature interaction, and steadier general output, try &lt;code&gt;GPT-5.5&lt;/code&gt; first&lt;/li&gt;
&lt;li&gt;If you want high-frequency experimentation in Chinese, fast iteration, and better efficiency for the money, &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; deserves a serious place in your workflow&lt;/li&gt;
&lt;li&gt;If the task itself is long-chain, multi-round, and collaborative, do not stop at the first result—look at who stays steadier after five rounds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, the real question is not “who is absolutely stronger,” but this:&lt;br&gt;
&lt;strong&gt;for frontend work, writing, and coding, which model feels more like the most practical tool for your current stage?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;5-how-to-run-a-comparison-that-actually-means-something&#34;&gt;5. How to run a comparison that actually means something
&lt;/h2&gt;&lt;p&gt;If you want to test &lt;code&gt;DeepSeek V4 Pro&lt;/code&gt; and &lt;code&gt;GPT-5.5&lt;/code&gt; yourself, a more reliable method is usually not to run a single round, but to do something like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Give both models the same initial requirement&lt;/li&gt;
&lt;li&gt;Keep the same constraints on both sides&lt;/li&gt;
&lt;li&gt;Continue asking follow-up questions for three to five rounds&lt;/li&gt;
&lt;li&gt;Record output quality, drift frequency, and rework amount&lt;/li&gt;
&lt;li&gt;Only then compare speed, cost, and final usability&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That kind of test will get you much closer to real work than simply asking who looks more impressive in the first round.&lt;/p&gt;
&lt;p&gt;Especially in frontend, writing, and coding, what often determines the actual experience is not the starting line, but &lt;strong&gt;who can stay with you and help finish the work&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;6-a-simple-way-to-remember-it&#34;&gt;6. A simple way to remember it
&lt;/h2&gt;&lt;p&gt;If you just want a practical summary, you can remember it like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPT-5.5&lt;/code&gt;: more like a broad, productized, mainstream default workspace&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DeepSeek V4 Pro&lt;/code&gt;: more like a strong competitor worth bringing into daily workflows in Chinese and in high-frequency trial-and-error work&lt;/li&gt;
&lt;li&gt;The real comparison point: not flashy first-round output, but who stays steadier and saves more effort after multiple rounds of revision&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So in this kind of comparison, what really matters is never just “who won.” It is this:&lt;br&gt;
&lt;strong&gt;for your frontend, writing, and coding tasks, which model makes continuous progress easier, reduces rework, and gives you more stable output?&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Split Tasks Between ChatGPT, Claude, and Gemini: Choosing for Daily Use, Coding, and Special Capabilities</title>
        <link>https://knightli.com/en/2026/04/25/chatgpt-claude-gemini-task-selection/</link>
        <pubDate>Sat, 25 Apr 2026 10:51:19 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/25/chatgpt-claude-gemini-task-selection/</guid>
        <description>&lt;p&gt;Many people no longer rely on just one model. Instead, they switch back and forth between &lt;code&gt;ChatGPT&lt;/code&gt;, &lt;code&gt;Claude&lt;/code&gt;, and &lt;code&gt;Gemini&lt;/code&gt;. That makes the question much more practical: &lt;strong&gt;which kinds of tasks should go to which model?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This feels confusing not because all three are weak, but because they are now strong in different ways. If you still choose based on a vague standard like “which one is smarter,” you can easily end up picking the wrong tool.&lt;/p&gt;
&lt;p&gt;If we simplify the conclusion first, it roughly looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For daily conversations and general-purpose tasks, many people start with &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For command-line coding, long-context collaboration, and sustained task execution, &lt;code&gt;Claude&lt;/code&gt; often feels smoother&lt;/li&gt;
&lt;li&gt;When you need Google ecosystem integration, search, multimodal entry points, or certain product-level capabilities, &lt;code&gt;Gemini&lt;/code&gt; tends to stand out more&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s break that down into three parts.&lt;/p&gt;
&lt;h2 id=&#34;1-daily-conversations-why-many-people-still-open-chatgpt-first&#34;&gt;1. Daily conversations: why many people still open &lt;code&gt;ChatGPT&lt;/code&gt; first
&lt;/h2&gt;&lt;p&gt;For most everyday scenarios, &lt;code&gt;ChatGPT&lt;/code&gt; still feels like the “default entry point.”&lt;/p&gt;
&lt;p&gt;This is not about a single benchmark. It is about the overall experience:&lt;br&gt;
when you want to ask a quick question, organize your thoughts, draft some copy, create a first version, or summarize a piece of material, &lt;code&gt;ChatGPT&lt;/code&gt; usually feels fairly balanced.&lt;/p&gt;
&lt;p&gt;Its strengths often show up in a few places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Its response style is relatively stable&lt;/li&gt;
&lt;li&gt;The learning curve is low for general users&lt;/li&gt;
&lt;li&gt;Most broad tasks do not require much extra prompt tuning&lt;/li&gt;
&lt;li&gt;The product feels polished and works well for frequent everyday use&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So if your task is something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Help me organize a topic&lt;/li&gt;
&lt;li&gt;Turn an idea into structured content&lt;/li&gt;
&lt;li&gt;Summarize a long article&lt;/li&gt;
&lt;li&gt;Brainstorm several approaches&lt;/li&gt;
&lt;li&gt;Rewrite something more clearly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then &lt;code&gt;ChatGPT&lt;/code&gt; is often a very natural place to start.&lt;/p&gt;
&lt;p&gt;That does not mean it is always the strongest option for every professional task. It means that for broad, general-purpose use, it often feels more like the default workspace.&lt;/p&gt;
&lt;h2 id=&#34;2-command-line-coding-and-long-tasks-why-many-people-lean-toward-claude&#34;&gt;2. Command-line coding and long tasks: why many people lean toward &lt;code&gt;Claude&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Once a task shifts from “let’s chat” to “let’s keep working until this is done,” many people start preferring &lt;code&gt;Claude&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is especially true in scenarios like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Command-line programming&lt;/li&gt;
&lt;li&gt;Understanding the context of a large project&lt;/li&gt;
&lt;li&gt;Coordinating edits across multiple files&lt;/li&gt;
&lt;li&gt;Debugging long task chains&lt;/li&gt;
&lt;li&gt;Reading code while steadily moving a task forward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this kind of work, the key is usually not whether one reply is especially impressive. It is whether the model can stay stable across a longer chain of work.&lt;/p&gt;
&lt;p&gt;The reason &lt;code&gt;Claude&lt;/code&gt; is often favored is usually not that “it says one sentence better than the others,” but that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It holds up better on long-context tasks&lt;/li&gt;
&lt;li&gt;It feels steadier when reading files, logs, and rules continuously&lt;/li&gt;
&lt;li&gt;It is better suited to gradually advancing complex coding work&lt;/li&gt;
&lt;li&gt;In command-line and agent workflows, it is often treated as the primary working model&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are doing &lt;code&gt;vibe coding&lt;/code&gt;, fixing bugs in the terminal, understanding project structure, or changing features across multiple files, &lt;code&gt;Claude&lt;/code&gt;’s strengths tend to show up more clearly.&lt;/p&gt;
&lt;p&gt;Put simply, &lt;code&gt;Claude&lt;/code&gt; feels more like a model you work with to get things done, not just one you ask a question and get an answer from.&lt;/p&gt;
&lt;h2 id=&#34;3-gemini-often-wins-not-by-competing-head-on-in-everything&#34;&gt;3. &lt;code&gt;Gemini&lt;/code&gt; often wins not by “competing head-on in everything”
&lt;/h2&gt;&lt;p&gt;When people talk about &lt;code&gt;Gemini&lt;/code&gt;, they often frame the question like this: is it the strongest of the three?&lt;/p&gt;
&lt;p&gt;But in real usage, the more useful question is usually not that. It is: &lt;strong&gt;in which scenarios is it especially worth pulling out and using on purpose?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Gemini&lt;/code&gt;’s value often shows up more clearly in these directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Integration with the Google ecosystem&lt;/li&gt;
&lt;li&gt;Search and information gathering&lt;/li&gt;
&lt;li&gt;Multimodal entry points&lt;/li&gt;
&lt;li&gt;Certain product-side feature linkages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your workflow is already close to Google’s toolchain, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;Browser-side usage&lt;/li&gt;
&lt;li&gt;Mobile entry points&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then &lt;code&gt;Gemini&lt;/code&gt;’s practical convenience may matter more than a simple model-score comparison.&lt;/p&gt;
&lt;p&gt;In other words, &lt;code&gt;Gemini&lt;/code&gt; is often useful because it plugs into your workflow more naturally, not just because it may or may not beat someone else in a single response.&lt;/p&gt;
&lt;h2 id=&#34;4-the-useful-way-to-choose-is-not-asking-who-is-strongest-but-asking-what-kind-of-task-you-have&#34;&gt;4. The useful way to choose is not asking who is strongest, but asking what kind of task you have
&lt;/h2&gt;&lt;p&gt;When people compare all three models side by side, the easiest trap is trying to find one “single best” model.&lt;/p&gt;
&lt;p&gt;But real tasks vary too much:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some are one-off Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;Some are long-running conversations&lt;/li&gt;
&lt;li&gt;Some are software projects&lt;/li&gt;
&lt;li&gt;Some are information retrieval&lt;/li&gt;
&lt;li&gt;Some are multimodal processing&lt;/li&gt;
&lt;li&gt;Some are toolchain collaboration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the more effective approach is usually to sort by task type:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you want a broad, high-frequency assistant that works right away, start with &lt;code&gt;ChatGPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If you need long context, command-line work, coding collaboration, and steady progress on complex tasks, try &lt;code&gt;Claude&lt;/code&gt; first&lt;/li&gt;
&lt;li&gt;If you need help from the Google ecosystem, search, multimodal entry points, or certain product integrations, pay special attention to &lt;code&gt;Gemini&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That kind of division of labor is much closer to real-world use than forcing a single overall champion.&lt;/p&gt;
&lt;h2 id=&#34;5-why-many-heavy-users-subscribe-to-all-three&#34;&gt;5. Why many heavy users subscribe to all three
&lt;/h2&gt;&lt;p&gt;From a light user’s perspective, paying for all three can look redundant.&lt;br&gt;
From a heavy user’s perspective, it is more like assigning different tools to different jobs.&lt;/p&gt;
&lt;p&gt;The reason is simple:&lt;br&gt;
if the strengths of the three models have already started to diverge clearly, then using them together is not really duplicated spending. It is a way to reduce switching costs and trial-and-error costs.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;ChatGPT&lt;/code&gt; for daily organization and general Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;Claude&lt;/code&gt; for primary coding work&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;Gemini&lt;/code&gt; for certain search, multimodal, or Google-related workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The logic of this setup is not fundamentally different from designers installing multiple creative tools or developers using multiple IDEs.&lt;/p&gt;
&lt;h2 id=&#34;6-when-you-should-not-switch-models-too-often&#34;&gt;6. When you should not switch models too often
&lt;/h2&gt;&lt;p&gt;Of course, having more models is not always better.&lt;/p&gt;
&lt;p&gt;If you are still building a stable workflow, jumping too early and too often between three models can actually make things messier. Common issues include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Re-explaining the same task three times&lt;/li&gt;
&lt;li&gt;Getting different suggestions from different models and struggling more to judge them&lt;/li&gt;
&lt;li&gt;Losing context and increasing collaboration costs&lt;/li&gt;
&lt;li&gt;Getting stuck on tool choice before forming your own working boundaries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So a steadier way is usually this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Give each model one primary scenario first&lt;/li&gt;
&lt;li&gt;Use it continuously in that scenario for a while&lt;/li&gt;
&lt;li&gt;Gradually build your own habits of division of labor&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That makes it easier to gain reusable experience instead of staying forever in the “let me try this one today” stage.&lt;/p&gt;
&lt;h2 id=&#34;7-a-simple-way-to-remember-it&#34;&gt;7. A simple way to remember it
&lt;/h2&gt;&lt;p&gt;If you just want a practical version to remember, you can use this plain-language split:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ChatGPT&lt;/code&gt;: more like the default general-purpose assistant&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Claude&lt;/code&gt;: more like the main option for long tasks and coding collaboration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemini&lt;/code&gt;: more like the tool with stronger advantages in search, multimodal work, and the Google ecosystem&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not an absolute rule, and it does not mean the three cannot replace each other. It is simply a more realistic starting point.&lt;/p&gt;
&lt;p&gt;What really matters is not choosing the “strongest model in the universe,” but figuring out as soon as possible:&lt;br&gt;
&lt;strong&gt;for the kind of task in front of you, which model saves the most time, costs the least mental effort, and makes it easiest to get results?&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Why LLM APIs Charge by Tokens: A Clear Guide to Input, Output, and Context Costs</title>
        <link>https://knightli.com/en/2026/04/25/llm-token-pricing-principles/</link>
        <pubDate>Sat, 25 Apr 2026 08:44:32 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/25/llm-token-pricing-principles/</guid>
        <description>&lt;p&gt;One of the easiest things to find confusing about LLM API billing is why almost every platform eventually comes down to one unit: &lt;code&gt;token&lt;/code&gt;. The real question is simple: &lt;strong&gt;why do LLMs charge by token, and why can different tokens have different prices?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For many people who are just starting to use model APIs, the most confusing part is not model capability but the bill. Why does the cost rise so quickly even when you only ask a few questions? Why is input cheaper than output? Why does the bill start growing much faster once context becomes long?&lt;/p&gt;
&lt;p&gt;A simple way to think about it is this: &lt;strong&gt;you are not paying for &amp;ldquo;one answer.&amp;rdquo; You are paying for the compute and bandwidth consumed throughout the whole inference process.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-what-is-a-token&#34;&gt;1. What is a token
&lt;/h2&gt;&lt;p&gt;In LLM billing, a &lt;code&gt;token&lt;/code&gt; is neither a character count nor a word count. It is the unit a model uses when processing text.&lt;/p&gt;
&lt;p&gt;A token might be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A single Chinese character&lt;/li&gt;
&lt;li&gt;Part of an English word&lt;/li&gt;
&lt;li&gt;A punctuation mark&lt;/li&gt;
&lt;li&gt;A short chunk of frequently seen text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is why API platforms usually do not charge per sentence or per request. They charge according to how many tokens the model actually reads and generates.&lt;br&gt;
This is much more reasonable than charging by request count, because one request might contain 20 characters, while another might include 200,000 tokens of context. The resource consumption is nowhere near the same.&lt;/p&gt;
&lt;h2 id=&#34;2-why-input-and-output-are-priced-separately&#34;&gt;2. Why input and output are priced separately
&lt;/h2&gt;&lt;p&gt;Most model APIs today split pricing into two parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input token price&lt;/li&gt;
&lt;li&gt;Output token price&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And in many cases, &lt;strong&gt;output tokens cost more than input tokens.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The reason is not hard to understand.&lt;/p&gt;
&lt;p&gt;When a model processes input, it is mainly reading and encoding existing content. But when it generates output, it has to predict the next token, then the next one, then the next one. This is not just reading. It is an ongoing process of inference and sampling, which usually costs more compute.&lt;/p&gt;
&lt;p&gt;You can think of it roughly like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Input: handing materials to the model&lt;/li&gt;
&lt;li&gt;Output: asking the model to write the answer on the spot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Writing on the spot usually costs more than reading the materials once, so it is very common for output pricing to be higher.&lt;/p&gt;
&lt;h2 id=&#34;3-why-long-context-makes-costs-easier-to-lose-control-of&#34;&gt;3. Why long context makes costs easier to lose control of
&lt;/h2&gt;&lt;p&gt;Many people think they are only adding a bit more background information, but from the model billing perspective, the impact is often much bigger than expected.&lt;/p&gt;
&lt;p&gt;The reason is that &lt;strong&gt;each model call usually has to process the full context included in that request again.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That means if your request currently contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A system prompt&lt;/li&gt;
&lt;li&gt;Conversation history&lt;/li&gt;
&lt;li&gt;Tool return values&lt;/li&gt;
&lt;li&gt;Long document chunks&lt;/li&gt;
&lt;li&gt;Source code files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;all of that goes into input token billing.&lt;/p&gt;
&lt;p&gt;So what really makes bills grow is often not the final question itself, but the long chain of context attached before it.&lt;br&gt;
As the number of conversation turns increases, tool calls accumulate, and prior messages keep getting fed back in, token cost grows round after round.&lt;/p&gt;
&lt;h2 id=&#34;4-why-tool-calls-are-especially-likely-to-inflate-token-usage&#34;&gt;4. Why tool calls are especially likely to inflate token usage
&lt;/h2&gt;&lt;p&gt;In scenarios like agents, coding assistants, and workflow automation, token usage is often much higher than in ordinary chat.&lt;/p&gt;
&lt;p&gt;The issue is not just that the model wrote a paragraph. It is that the workflow keeps producing content like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading files&lt;/li&gt;
&lt;li&gt;Inspecting logs&lt;/li&gt;
&lt;li&gt;Calling APIs&lt;/li&gt;
&lt;li&gt;Returning JSON&lt;/li&gt;
&lt;li&gt;Feeding tool results back into the model&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As long as the result of each tool call gets inserted into the next round of context, it becomes a new source of input tokens.&lt;/p&gt;
&lt;p&gt;That is why many developers eventually realize:&lt;br&gt;
&lt;strong&gt;the model&amp;rsquo;s unit price is not always the real problem. The workflow itself may be stacking token cost layer by layer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, imagine a coding agent doing the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Read the project structure&lt;/li&gt;
&lt;li&gt;Open several source files&lt;/li&gt;
&lt;li&gt;Run a test suite&lt;/li&gt;
&lt;li&gt;Feed the error logs back into the model&lt;/li&gt;
&lt;li&gt;Read more related files&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each step can make later requests carry even more context. Even if the unit price does not change, the total bill can rise quickly.&lt;/p&gt;
&lt;h2 id=&#34;5-why-the-same-kind-of-model-can-have-very-different-prices&#34;&gt;5. Why the same kind of model can have very different prices
&lt;/h2&gt;&lt;p&gt;Differences in token pricing between models are not only about vendors wanting to charge more. They are usually tied directly to several factors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model size&lt;/li&gt;
&lt;li&gt;Inference efficiency&lt;/li&gt;
&lt;li&gt;Context length&lt;/li&gt;
&lt;li&gt;Deployment cost&lt;/li&gt;
&lt;li&gt;Target market&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The larger the model, the more active parameters it uses, and the more complex its inference path is, the higher the cost of generating one token usually becomes.&lt;br&gt;
If the model also supports ultra-long context, more complex reasoning, or better tool use, the infrastructure pressure increases even more.&lt;/p&gt;
&lt;p&gt;So pricing is really covering several kinds of cost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU or accelerator resources&lt;/li&gt;
&lt;li&gt;VRAM usage&lt;/li&gt;
&lt;li&gt;Inference latency&lt;/li&gt;
&lt;li&gt;Network and service stability&lt;/li&gt;
&lt;li&gt;Peak concurrency capacity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A cheaper model is not necessarily bad, and a more expensive model is not necessarily the right choice for every task. In many cases, the price gap reflects how much infrastructure cost a certain level of capability requires.&lt;/p&gt;
&lt;h2 id=&#34;6-why-cached-input-is-cheaper&#34;&gt;6. Why cached input is cheaper
&lt;/h2&gt;&lt;p&gt;Many model platforms now offer features such as:&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;The shared idea behind them is simple: if a large chunk of input has already been processed once, do not keep recomputing it from scratch at full price.&lt;/p&gt;
&lt;p&gt;For example, if you repeatedly send the same system prompt, the same tool instructions, or the same long document prefix, the platform may be able to cache part of that computation. Then even though it is still input token usage, the cached portion can be billed at a lower rate.&lt;/p&gt;
&lt;p&gt;This also explains why many API pricing pages show three or more price tiers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standard input&lt;/li&gt;
&lt;li&gt;Cached input&lt;/li&gt;
&lt;li&gt;Output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The difference is not that the text means different things. It is that the underlying computation may or may not be reusable.&lt;/p&gt;
&lt;h2 id=&#34;7-why-cheap-tokens-do-not-automatically-mean-lower-total-cost&#34;&gt;7. Why &amp;ldquo;cheap tokens&amp;rdquo; do not automatically mean lower total cost
&lt;/h2&gt;&lt;p&gt;When people see a model advertised as &amp;ldquo;very cheap per million tokens,&amp;rdquo; the first instinct is often that total cost must also be lower. In reality, not always.&lt;/p&gt;
&lt;p&gt;That is because total cost is roughly:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;token unit price × actual token volume&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;And actual token volume can be amplified by many things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompts that are too long&lt;/li&gt;
&lt;li&gt;Conversation history that is never trimmed&lt;/li&gt;
&lt;li&gt;Too much tool output fed back in&lt;/li&gt;
&lt;li&gt;Overly verbose model output&lt;/li&gt;
&lt;li&gt;Repeated retries for the same task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the real bill is not determined by price alone. It is usually determined by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Model unit price&lt;/li&gt;
&lt;li&gt;Input length per round&lt;/li&gt;
&lt;li&gt;Output length per round&lt;/li&gt;
&lt;li&gt;Number of calls&lt;/li&gt;
&lt;li&gt;Workflow design&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is also why a &amp;ldquo;low-cost model&amp;rdquo; can still end up expensive in some agent workflows. It may need more rounds, more supplemental context, and more retry cycles.&lt;/p&gt;
&lt;h2 id=&#34;8-how-developers-should-estimate-token-cost&#34;&gt;8. How developers should estimate token cost
&lt;/h2&gt;&lt;p&gt;If you want better budget control in a real project, a simple way to estimate cost is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Measure average input tokens per request&lt;/li&gt;
&lt;li&gt;Measure average output tokens per request&lt;/li&gt;
&lt;li&gt;Estimate how many rounds one complete task requires&lt;/li&gt;
&lt;li&gt;Multiply by the model&amp;rsquo;s pricing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;8k tokens&lt;/code&gt; of input per round&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1k tokens&lt;/code&gt; of output per round&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10&lt;/code&gt; rounds for one task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then what you are really consuming is not &amp;ldquo;one Q&amp;amp;A exchange,&amp;rdquo; but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;About &lt;code&gt;80k tokens&lt;/code&gt; of input&lt;/li&gt;
&lt;li&gt;About &lt;code&gt;10k tokens&lt;/code&gt; of output&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And if logs, tool results, and file contents keep being added along the way, the total grows even further.&lt;/p&gt;
&lt;p&gt;That is why budget planning should not only look at a single round. It should look at &lt;strong&gt;how many tokens a full task loop will consume from start to finish.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;9-how-to-control-the-bill-in-practice&#34;&gt;9. How to control the bill in practice
&lt;/h2&gt;&lt;p&gt;If you are already using APIs or agents, the following methods are usually the most effective:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shorten the system prompt and cut repeated wording&lt;/li&gt;
&lt;li&gt;Trim old conversation history regularly&lt;/li&gt;
&lt;li&gt;Keep only necessary fields from tool outputs&lt;/li&gt;
&lt;li&gt;Retrieve first, then send only relevant parts of long documents&lt;/li&gt;
&lt;li&gt;Limit output length and avoid unbounded expansion&lt;/li&gt;
&lt;li&gt;Use expensive models for high-value tasks and cheaper ones for lower-value tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In many cases, the best way to save money is not to switch blindly to a cheaper model. It is to remove unnecessary token consumption from the workflow first.&lt;/p&gt;
&lt;h2 id=&#34;10-how-to-think-about-all-of-this&#34;&gt;10. How to think about all of this
&lt;/h2&gt;&lt;p&gt;At the end of the day, token pricing is a way of charging for how much the model had to read, infer, and write.&lt;/p&gt;
&lt;p&gt;It is not like traditional software pricing, where per-account, per-request, or monthly billing is enough to describe resource use. A model call is a dynamic computation process. The amount of context you send, the tools you invoke, and the output length you request all directly affect cost.&lt;/p&gt;
&lt;p&gt;So the most important thing is not memorizing price tables. It is building the right intuition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long context increases input cost&lt;/li&gt;
&lt;li&gt;Long output increases generation cost&lt;/li&gt;
&lt;li&gt;Tool chains amplify total token usage&lt;/li&gt;
&lt;li&gt;Caching and workflow design can change the bill significantly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once those points are clear, the pricing structure of most LLM APIs becomes much easier to understand.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>DeepSeek-V4 Preview Released: 1M Context, Two Models, and API Migration Notes</title>
        <link>https://knightli.com/en/2026/04/24/deepseek-v4-preview-release/</link>
        <pubDate>Fri, 24 Apr 2026 22:39:46 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/24/deepseek-v4-preview-release/</guid>
        <description>&lt;p&gt;DeepSeek released &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; on &lt;code&gt;2026-04-24&lt;/code&gt;. Based on the official announcement page, the update is centered on a few very clear themes: &lt;code&gt;1M context&lt;/code&gt;, a two-model lineup with &lt;code&gt;V4-Pro&lt;/code&gt; and &lt;code&gt;V4-Flash&lt;/code&gt;, dedicated optimization for agent scenarios, and API-side model migration.&lt;/p&gt;
&lt;p&gt;If we reduce the release to one sentence, the main signal is this: DeepSeek is not just trying to make a stronger model. It is pushing ultra-long context and agent capabilities toward something that is ready for practical deployment.&lt;/p&gt;
&lt;h2 id=&#34;1-what-was-released-this-time&#34;&gt;1. What was released this time
&lt;/h2&gt;&lt;p&gt;According to the official page, &lt;code&gt;DeepSeek-V4 Preview&lt;/code&gt; mainly includes two product lines:&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;The official descriptions are also very direct:&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;The naming already makes the strategy clear. This is not a single-model upgrade. DeepSeek is launching a higher-end model and a more cost-efficient model at the same time.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;V4-Pro&lt;/code&gt; is positioned around performance ceiling, with DeepSeek saying it can compete with the world&amp;rsquo;s top closed-source models. &lt;code&gt;V4-Flash&lt;/code&gt;, by contrast, is positioned around speed, efficiency, and lower cost, making it more suitable for workloads that care more about latency and API pricing.&lt;/p&gt;
&lt;h2 id=&#34;2-1m-context-is-the-most-visible-headline&#34;&gt;2. &lt;code&gt;1M context&lt;/code&gt; is the most visible headline
&lt;/h2&gt;&lt;p&gt;One of the most prominent lines on the official page is: &lt;strong&gt;&amp;ldquo;Welcome to the era of cost-effective 1M context length.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DeepSeek is not merely saying the model supports long context. It is presenting &lt;code&gt;1M context&lt;/code&gt; as a default capability of this generation. The page is explicit that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt; is now the default standard across official DeepSeek services&lt;/li&gt;
&lt;li&gt;Both &lt;code&gt;V4-Pro&lt;/code&gt; and &lt;code&gt;V4-Flash&lt;/code&gt; support &lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The importance of this is not just that you can fit more tokens. It directly affects tasks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understanding large codebases&lt;/li&gt;
&lt;li&gt;Long-document Q&amp;amp;A and information synthesis&lt;/li&gt;
&lt;li&gt;Multi-turn agent workflows&lt;/li&gt;
&lt;li&gt;Complex tasks spanning multiple files, tools, and stages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the context window is large enough, the model is less likely to lose context midway and re-read material repeatedly. That matters a lot for agentic coding and complex knowledge work.&lt;/p&gt;
&lt;h2 id=&#34;3-what-v4-pro-is-mainly-emphasizing&#34;&gt;3. What &lt;code&gt;V4-Pro&lt;/code&gt; is mainly emphasizing
&lt;/h2&gt;&lt;p&gt;From the wording on the official page, &lt;code&gt;DeepSeek-V4-Pro&lt;/code&gt; focuses on three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agentic coding capability&lt;/li&gt;
&lt;li&gt;World knowledge&lt;/li&gt;
&lt;li&gt;Reasoning ability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The page says &lt;code&gt;V4-Pro&lt;/code&gt; reaches open-source SOTA on agentic coding benchmarks. It also claims leadership among current open models in world knowledge, trailing only &lt;code&gt;Gemini-3.1-Pro&lt;/code&gt;, and states that its math, &lt;code&gt;STEM&lt;/code&gt;, and coding performance surpasses current open models while rivaling top closed-source models.&lt;/p&gt;
&lt;p&gt;In other words, &lt;code&gt;V4-Pro&lt;/code&gt; is not positioned as a simple question-answering model. It is aimed much more at high-difficulty reasoning, complex coding, and long-horizon task execution.&lt;/p&gt;
&lt;h2 id=&#34;4-v4-flash-is-not-just-a-cut-down-version&#34;&gt;4. &lt;code&gt;V4-Flash&lt;/code&gt; is not just a cut-down version
&lt;/h2&gt;&lt;p&gt;Another notable point is that DeepSeek does not present &lt;code&gt;V4-Flash&lt;/code&gt; as a low-end model. Instead, it stresses that the model is already strong enough for many practical tasks.&lt;/p&gt;
&lt;p&gt;According to the announcement, &lt;code&gt;V4-Flash&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Has reasoning ability that comes close to &lt;code&gt;V4-Pro&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Performs on par with &lt;code&gt;V4-Pro&lt;/code&gt; on simple agent tasks&lt;/li&gt;
&lt;li&gt;Uses fewer parameters, responds faster, and is more economical for API usage&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means the lineup is not a very split &amp;ldquo;one flagship, one entry-level&amp;rdquo; structure. It is closer to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;V4-Pro&lt;/code&gt;: optimize for higher performance and a stronger ceiling&lt;/li&gt;
&lt;li&gt;&lt;code&gt;V4-Flash&lt;/code&gt;: optimize for lower latency and better cost efficiency&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For developers, that is often a more practical combination, because many production tasks do not need the absolute strongest model in theory. They need something strong enough, fast enough, and affordable enough.&lt;/p&gt;
&lt;h2 id=&#34;5-the-release-puts-clear-emphasis-on-agent-optimization&#34;&gt;5. The release puts clear emphasis on agent optimization
&lt;/h2&gt;&lt;p&gt;Another strong signal from the announcement page is that DeepSeek is actively pushing &lt;code&gt;V4&lt;/code&gt; toward agent use cases.&lt;/p&gt;
&lt;p&gt;The page says &lt;code&gt;DeepSeek-V4&lt;/code&gt; has been seamlessly integrated with several leading AI agents, including:&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 also says that &lt;code&gt;V4&lt;/code&gt; is already being used in its in-house agentic coding workflows.&lt;/p&gt;
&lt;p&gt;That means the target is no longer limited to chat or ordinary completion. The model is being positioned for longer workflows: reading code, understanding structure, calling tools, generating outputs, and connecting the whole process together.&lt;/p&gt;
&lt;p&gt;If you have been paying attention to coding agents recently, this is worth noticing. Model providers are no longer only competing on benchmarks. They are also competing on whether the model can actually plug into real workflows.&lt;/p&gt;
&lt;h2 id=&#34;6-structural-innovation-is-serving-long-context-efficiency&#34;&gt;6. Structural innovation is serving long context efficiency
&lt;/h2&gt;&lt;p&gt;On the technical side, the page summarizes this release&amp;rsquo;s structural work as:&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;The direction is clear: make long context cheaper and more efficient while reducing compute and memory cost as much as possible.&lt;/p&gt;
&lt;p&gt;The announcement page does not go into full technical detail, but it at least suggests that DeepSeek is not relying only on brute-force scaling to support longer windows. It is also making architecture-level optimizations specifically for long-context efficiency.&lt;/p&gt;
&lt;p&gt;For actual users, that often matters more than just seeing a bigger context number, because real usability depends on more than whether &lt;code&gt;1M&lt;/code&gt; is technically available. It also depends on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether speed stays acceptable&lt;/li&gt;
&lt;li&gt;Whether cost stays acceptable&lt;/li&gt;
&lt;li&gt;Whether long-context tasks remain stable in practice&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-the-api-is-already-available-but-model-migration-matters&#34;&gt;7. The API is already available, but model migration matters
&lt;/h2&gt;&lt;p&gt;The official page clearly states that the API is available today.&lt;/p&gt;
&lt;p&gt;The migration path is also relatively simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep the same &lt;code&gt;base_url&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Switch the model name to &lt;code&gt;deepseek-v4-pro&lt;/code&gt; or &lt;code&gt;deepseek-v4-flash&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The page also says both models support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1M context&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Dual &lt;code&gt;Thinking / Non-Thinking&lt;/code&gt; modes&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;That means if you already use the DeepSeek API, the upgrade path is not especially difficult. The main work is updating model names and validating behavior.&lt;/p&gt;
&lt;h2 id=&#34;8-the-retirement-schedule-for-old-models-is-explicit&#34;&gt;8. The retirement schedule for old models is explicit
&lt;/h2&gt;&lt;p&gt;For developers, one of the most important details on the page is actually the retirement notice for older models.&lt;/p&gt;
&lt;p&gt;DeepSeek explicitly says:&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;will be fully retired and inaccessible after &lt;strong&gt;July 24, 2026, 15:59 UTC&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The page also notes that these two models are currently being routed to the non-thinking and thinking modes of &lt;code&gt;deepseek-v4-flash&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That means if your project still directly references &lt;code&gt;deepseek-chat&lt;/code&gt; or &lt;code&gt;deepseek-reasoner&lt;/code&gt;, now is the time to plan the migration instead of waiting until the formal shutdown date gets close.&lt;/p&gt;
&lt;h2 id=&#34;9-how-this-release-is-worth-reading&#34;&gt;9. How this release is worth reading
&lt;/h2&gt;&lt;p&gt;If we compress the update into a few main takeaways, they look like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek is turning &lt;code&gt;1M context&lt;/code&gt; from a premium feature into a default standard&lt;/li&gt;
&lt;li&gt;The two-model strategy is clearer: one targets performance ceiling, one targets speed and cost efficiency&lt;/li&gt;
&lt;li&gt;Agent capability has been moved into a very central role&lt;/li&gt;
&lt;li&gt;The API upgrade path is relatively direct, but the old-model retirement timeline needs attention soon&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For general users, the most visible change may be that long documents, long code contexts, and long workflows become easier to fit into one session.&lt;br&gt;
For developers, the more important point is that if you are already building agents, coding assistants, knowledge workflows, or complex automation pipelines, this generation is very clearly designed for those scenarios.&lt;/p&gt;
&lt;p&gt;This is not just a routine model update from DeepSeek. It reads more like a clearer statement of its next product direction: &lt;strong&gt;ultra-long context, agent optimization, and more practical API readiness.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;DeepSeek official news page: &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>How to Fix Ollama Using CPU Instead of GPU</title>
        <link>https://knightli.com/en/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/en/2026/04/24/fix-ollama-using-cpu-instead-of-gpu/</guid>
        <description>&lt;p&gt;When running local LLMs, one of the most frustrating problems is this: your machine clearly has a GPU, yet &lt;code&gt;Ollama&lt;/code&gt; still leans heavily on the &lt;code&gt;CPU&lt;/code&gt;, and performance is painfully slow.&lt;/p&gt;
&lt;p&gt;The short version is that this is usually not caused by one single issue. The most common causes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; is not detecting any usable GPU&lt;/li&gt;
&lt;li&gt;The driver, &lt;code&gt;ROCm&lt;/code&gt;, or &lt;code&gt;CUDA&lt;/code&gt; environment is not set up correctly&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;Ollama&lt;/code&gt; service was started without the right environment variables&lt;/li&gt;
&lt;li&gt;The model is too large and has fallen back to &lt;code&gt;CPU&lt;/code&gt; or mixed &lt;code&gt;CPU/GPU&lt;/code&gt; loading&lt;/li&gt;
&lt;li&gt;On AMD platforms, there may be extra compatibility issues such as &lt;code&gt;ROCm&lt;/code&gt; version mismatch, &lt;code&gt;gfx&lt;/code&gt; settings, or device visibility problems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The fastest way to troubleshoot it is to go through the checks below in order.&lt;/p&gt;
&lt;h2 id=&#34;1-first-confirm-whether-ollama-is-really-not-using-the-gpu&#34;&gt;1. First, confirm whether Ollama is really not using the GPU
&lt;/h2&gt;&lt;p&gt;The most direct check is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Focus on the &lt;code&gt;PROCESSOR&lt;/code&gt; column.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;: the model is fully running on the GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;: the GPU is not being used at all&lt;/li&gt;
&lt;li&gt;Results like &lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;: part of the model is in VRAM, and part has spilled into system memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you see &lt;code&gt;100% CPU&lt;/code&gt;, the next step is to focus on environment and service configuration.&lt;br&gt;
If you see mixed loading, that does not necessarily mean the GPU is broken. In many cases, it simply means VRAM is not enough.&lt;/p&gt;
&lt;h2 id=&#34;2-rule-out-the-most-common-misunderstanding-first-the-model-does-not-fit-into-vram&#34;&gt;2. Rule out the most common misunderstanding first: the model does not fit into VRAM
&lt;/h2&gt;&lt;p&gt;Many people assume that once a GPU is installed, &lt;code&gt;Ollama&lt;/code&gt; will always run fully on it. That is not how it works.&lt;/p&gt;
&lt;p&gt;If the model is too large, the context is too long, or some other loaded model is already occupying VRAM, &lt;code&gt;Ollama&lt;/code&gt; may fall back to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Partial GPU + partial CPU&lt;/li&gt;
&lt;li&gt;Full &lt;code&gt;100% CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point, the two simplest tests are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Try a smaller model first&lt;br&gt;
For example, test with a &lt;code&gt;4B&lt;/code&gt; or &lt;code&gt;7B&lt;/code&gt; model before jumping straight to much larger ones.&lt;/li&gt;
&lt;li&gt;Unload other active models and test again&lt;br&gt;
Run &lt;code&gt;ollama ps&lt;/code&gt; first and make sure nothing else is occupying VRAM.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If smaller models use the GPU but larger ones do not, the real problem is usually VRAM capacity rather than the driver.&lt;/p&gt;
&lt;h2 id=&#34;3-check-whether-the-gpu-driver-and-the-lower-level-runtime-are-actually-working&#34;&gt;3. Check whether the GPU driver and the lower-level runtime are actually working
&lt;/h2&gt;&lt;p&gt;If even small models run only on &lt;code&gt;CPU&lt;/code&gt;, the next step is to check the underlying environment.&lt;/p&gt;
&lt;h3 id=&#34;nvidia&#34;&gt;NVIDIA
&lt;/h3&gt;&lt;p&gt;First confirm that the driver is working and the system can see the GPU. A common check is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If this already fails, &lt;code&gt;Ollama&lt;/code&gt; is very unlikely to use the GPU correctly.&lt;/p&gt;
&lt;h3 id=&#34;amd--rocm&#34;&gt;AMD / ROCm
&lt;/h3&gt;&lt;p&gt;If you are using an &lt;code&gt;AMD GPU&lt;/code&gt;, especially with &lt;code&gt;ROCm&lt;/code&gt;, start with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;If these tools cannot list the device properly, the problem is still below &lt;code&gt;Ollama&lt;/code&gt;, so there is no point debugging the application layer yet.&lt;/p&gt;
&lt;p&gt;On AMD, the most common issue is not simply “is the driver installed,” but rather:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;ROCm&lt;/code&gt; version does not match the OS version&lt;/li&gt;
&lt;li&gt;The current GPU architecture has incomplete support&lt;/li&gt;
&lt;li&gt;The device exists, but the runtime is not being exposed correctly to &lt;code&gt;Ollama&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-restart-the-ollama-service-not-just-your-terminal&#34;&gt;4. Restart the Ollama service, not just your terminal
&lt;/h2&gt;&lt;p&gt;This is a very common trap.&lt;/p&gt;
&lt;p&gt;Many people install drivers, change environment variables, fix &lt;code&gt;ROCm&lt;/code&gt;, then just open a new terminal and continue with &lt;code&gt;ollama run&lt;/code&gt;. But if &lt;code&gt;Ollama&lt;/code&gt; is running as a background service, it may still be using the old environment.&lt;/p&gt;
&lt;p&gt;So the safer approach is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully restart the &lt;code&gt;Ollama&lt;/code&gt; service&lt;/li&gt;
&lt;li&gt;Reboot the machine if necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are running it as a service on Linux, make sure the service process was actually restarted instead of reusing the old one.&lt;/p&gt;
&lt;h2 id=&#34;5-check-whether-the-environment-variables-are-really-reaching-the-service&#34;&gt;5. Check whether the environment variables are really reaching the service
&lt;/h2&gt;&lt;p&gt;This matters especially on &lt;code&gt;AMD ROCm&lt;/code&gt; systems.&lt;/p&gt;
&lt;p&gt;Some machines work fine when commands are run manually in a shell, but the &lt;code&gt;Ollama&lt;/code&gt; service still uses only &lt;code&gt;CPU&lt;/code&gt;. In that case, the usual reason is that the service process never received the variables you set in your shell.&lt;/p&gt;
&lt;p&gt;Common variables to look at include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Specifically:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; limits or selects which GPUs &lt;code&gt;ROCm&lt;/code&gt; can see&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; is often used as a compatibility workaround on some AMD platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only &lt;code&gt;export&lt;/code&gt; these variables in the current terminal, but &lt;code&gt;Ollama&lt;/code&gt; is started by systemd, a desktop background service, or another daemon, they may not take effect.&lt;/p&gt;
&lt;p&gt;In other words, “it looks set in my terminal” does not mean &lt;code&gt;Ollama&lt;/code&gt; is actually using it.&lt;/p&gt;
&lt;h2 id=&#34;6-on-amd-platforms-focus-on-rocm-compatibility&#34;&gt;6. On AMD platforms, focus on ROCm compatibility
&lt;/h2&gt;&lt;p&gt;Based on the public page metadata, the original video for this topic is tied to &lt;code&gt;AMD Max+ 395&lt;/code&gt;, &lt;code&gt;strix halo&lt;/code&gt;, and &lt;code&gt;AMD ROCm&lt;/code&gt;.&lt;br&gt;
In setups like these, &lt;code&gt;Ollama&lt;/code&gt; failing to use the GPU is often more dependent on version matching than on NVIDIA systems.&lt;/p&gt;
&lt;p&gt;Start by checking these:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Whether the installed &lt;code&gt;ROCm&lt;/code&gt; version fits the current OS and GPU&lt;/li&gt;
&lt;li&gt;Whether the GPU belongs to an architecture with solid &lt;code&gt;ROCm&lt;/code&gt; support&lt;/li&gt;
&lt;li&gt;Whether you need to set &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Whether an older &lt;code&gt;Ollama&lt;/code&gt; build or older inference runtime is causing compatibility issues&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If &lt;code&gt;rocminfo&lt;/code&gt; works and the GPU is visible to the system, but &lt;code&gt;Ollama&lt;/code&gt; still runs only on &lt;code&gt;CPU&lt;/code&gt;, the issue is often in the version combination rather than in model parameters.&lt;/p&gt;
&lt;h2 id=&#34;7-in-docker-wsl-or-remote-environments-also-check-device-mapping&#34;&gt;7. In Docker, WSL, or remote environments, also check device mapping
&lt;/h2&gt;&lt;p&gt;If you are not running on bare metal but inside:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;WSL&lt;/li&gt;
&lt;li&gt;Remote containers&lt;/li&gt;
&lt;li&gt;Virtualized environments&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then you need to check one more layer: whether the GPU device is actually being exposed inside that environment.&lt;/p&gt;
&lt;p&gt;A typical symptom looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The host machine can see the GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ollama&lt;/code&gt; inside the container or subsystem still uses only &lt;code&gt;CPU&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In that case, the issue may not be &lt;code&gt;Ollama&lt;/code&gt; itself. The container or subsystem may simply not have GPU access.&lt;/p&gt;
&lt;h2 id=&#34;8-check-logs-last-but-check-them-for-the-right-reason&#34;&gt;8. Check logs last, but check them for the right reason
&lt;/h2&gt;&lt;p&gt;If you have already gone through the earlier steps, the most effective next move is not endless reinstalling, but looking directly at the &lt;code&gt;Ollama&lt;/code&gt; startup and runtime logs.&lt;/p&gt;
&lt;p&gt;Focus on two kinds of messages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether a GPU was detected at all&lt;/li&gt;
&lt;li&gt;Whether there are driver, library loading, or device initialization errors&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the logs clearly say something like “no compatible GPU found” or “failed to initialize ROCm/CUDA,” the troubleshooting direction becomes much clearer immediately.&lt;/p&gt;
&lt;h2 id=&#34;troubleshooting-order&#34;&gt;Troubleshooting Order
&lt;/h2&gt;&lt;p&gt;If you only want the shortest path, use this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;ollama ps&lt;/code&gt; and confirm whether it is &lt;code&gt;GPU&lt;/code&gt;, &lt;code&gt;CPU&lt;/code&gt;, or mixed loading&lt;/li&gt;
&lt;li&gt;Try a smaller model to rule out VRAM limits&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;nvidia-smi&lt;/code&gt;, &lt;code&gt;rocminfo&lt;/code&gt;, and &lt;code&gt;rocm-smi&lt;/code&gt; to verify the lower-level environment first&lt;/li&gt;
&lt;li&gt;Fully restart the &lt;code&gt;Ollama&lt;/code&gt; service&lt;/li&gt;
&lt;li&gt;Check service environment variables, especially &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; and &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt; on AMD&lt;/li&gt;
&lt;li&gt;If you are in Docker or WSL, verify device mapping&lt;/li&gt;
&lt;li&gt;Finally, inspect logs for the exact error&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;When &lt;code&gt;Ollama&lt;/code&gt; uses &lt;code&gt;CPU&lt;/code&gt; instead of &lt;code&gt;GPU&lt;/code&gt;, the root cause usually falls into one of three groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The GPU is not being detected at all&lt;/li&gt;
&lt;li&gt;The GPU is detectable, but the runtime environment is not reaching &lt;code&gt;Ollama&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The GPU is working, but the model is too large and falls back to &lt;code&gt;CPU&lt;/code&gt; or mixed memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you separate those three cases, troubleshooting becomes much faster.&lt;br&gt;
If you are on an AMD platform, pay special attention to &lt;code&gt;ROCm&lt;/code&gt; version matching, device visibility, and compatibility variables instead of focusing only on the &lt;code&gt;Ollama&lt;/code&gt; command itself.&lt;/p&gt;
&lt;p&gt;Original video: &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>What Is NVIDIA nvbandwidth: How to Use This GPU Bandwidth Testing Tool</title>
        <link>https://knightli.com/en/2026/04/24/nvidia-nvbandwidth-guide/</link>
        <pubDate>Fri, 24 Apr 2026 14:41:35 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/24/nvidia-nvbandwidth-guide/</guid>
        <description>&lt;p&gt;If you have recently been troubleshooting interconnect performance between multiple &lt;code&gt;NVIDIA GPU&lt;/code&gt;s, or you want to verify the real bandwidth between &lt;code&gt;PCIe&lt;/code&gt;, &lt;code&gt;NVLink&lt;/code&gt;, host memory, and VRAM, &lt;code&gt;NVIDIA/nvbandwidth&lt;/code&gt; is a small tool worth knowing about.&lt;/p&gt;
&lt;p&gt;It is not a general benchmark utility, and it is not a hidden command inside a large model framework. It is an open-source tool from NVIDIA specifically designed to measure bandwidth and latency for GPU-related memory copies. Instead of only looking at theoretical bandwidth, &lt;code&gt;nvbandwidth&lt;/code&gt; is better at answering a practical question: &lt;strong&gt;how much bandwidth can this machine and its current GPU interconnects actually deliver right now?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-what-does-nvbandwidth-do&#34;&gt;1. What does &lt;code&gt;nvbandwidth&lt;/code&gt; do
&lt;/h2&gt;&lt;p&gt;According to the official README, &lt;code&gt;nvbandwidth&lt;/code&gt; is a command-line tool for measuring bandwidth on &lt;code&gt;NVIDIA GPU&lt;/code&gt;s.&lt;/p&gt;
&lt;p&gt;It mainly focuses on transfer performance across different &lt;code&gt;memcpy&lt;/code&gt; patterns, such as:&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;Transfers between GPUs across multiple nodes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tests are especially useful in scenarios like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Troubleshooting interconnect bottlenecks in multi-GPU training or inference&lt;/li&gt;
&lt;li&gt;Verifying the actual behavior of links such as &lt;code&gt;NVLink&lt;/code&gt;, &lt;code&gt;PCIe&lt;/code&gt;, and &lt;code&gt;C2C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Comparing transfer differences across servers, topologies, drivers, or CUDA versions&lt;/li&gt;
&lt;li&gt;Performing baseline hardware validation before cluster deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short, &lt;code&gt;nvbandwidth&lt;/code&gt; is not about model throughput. It is about the lower-level ability to move data.&lt;/p&gt;
&lt;h2 id=&#34;2-it-does-not-produce-just-one-simple-score&#34;&gt;2. It does not produce just one simple score
&lt;/h2&gt;&lt;p&gt;Many people think of a bandwidth test as something that ends with a single number, but &lt;code&gt;nvbandwidth&lt;/code&gt; provides more detailed output than that.&lt;/p&gt;
&lt;p&gt;It reports results as matrices for each test type. For example, in a test like &lt;code&gt;device_to_device_memcpy_write_ce&lt;/code&gt;, it shows the bandwidth between each pair of GPUs by row and column. That means you can see more than just a rough system-wide speed estimate. You can also spot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which GPU pairs are especially fast&lt;/li&gt;
&lt;li&gt;Which paths are clearly limited by &lt;code&gt;PCIe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Whether certain GPU pairs show abnormally low bandwidth&lt;/li&gt;
&lt;li&gt;Whether the multi-GPU topology matches your expectations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are working with an 8-GPU server, a dual-socket platform, or a multinode system, this matrix-style output is often more useful than a single average number.&lt;/p&gt;
&lt;h2 id=&#34;3-how-to-understand-ce-and-sm-copies&#34;&gt;3. How to understand &lt;code&gt;CE&lt;/code&gt; and &lt;code&gt;SM&lt;/code&gt; copies
&lt;/h2&gt;&lt;p&gt;The official documentation splits tests into two categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CE&lt;/code&gt;: copy engine transfers based on &lt;code&gt;memcpy&lt;/code&gt; APIs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SM&lt;/code&gt;: kernel-based transfers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These two result types are not guaranteed to match exactly, because they represent different copy paths.&lt;br&gt;
If you mainly want to understand regular device-to-device transfer behavior, you will usually look at &lt;code&gt;CE&lt;/code&gt; first. If you want to study execution details more closely, then &lt;code&gt;SM&lt;/code&gt; is worth checking too.&lt;/p&gt;
&lt;p&gt;The README also explains that bandwidth results use the median across multiple test runs by default. Newer versions additionally include variability statistics, which makes it easier to judge how stable the numbers are.&lt;/p&gt;
&lt;h2 id=&#34;4-what-environment-does-it-require&#34;&gt;4. What environment does it require
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; is not a pure binary utility that you simply download and run. It expects a standard CUDA development environment.&lt;/p&gt;
&lt;p&gt;The current README lists these basic requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA Toolkit 11.x&lt;/code&gt; or newer&lt;/li&gt;
&lt;li&gt;A compiler with &lt;code&gt;C++17&lt;/code&gt; support&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMake 3.20+&lt;/code&gt;, with &lt;code&gt;3.24+&lt;/code&gt; recommended&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Boost program_options&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A usable &lt;code&gt;CUDA&lt;/code&gt; device and a compatible driver&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The requirements are higher if you want the multinode version. The current README explicitly states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multinode builds require &lt;code&gt;CUDA Toolkit 12.3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The driver must be &lt;code&gt;550&lt;/code&gt; or newer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MPI&lt;/code&gt; is required&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;nvidia-imex&lt;/code&gt; service must be configured&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So this is much more of an engineering tool for Linux GPU servers and clusters than something aimed at casual desktop use.&lt;/p&gt;
&lt;h2 id=&#34;5-how-to-build-and-run-the-single-node-version&#34;&gt;5. How to build and run the single-node version
&lt;/h2&gt;&lt;p&gt;The single-node build process is straightforward:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;On &lt;code&gt;Ubuntu&lt;/code&gt; / &lt;code&gt;Debian&lt;/code&gt;, the project also provides a &lt;code&gt;debian_install.sh&lt;/code&gt; script that installs common dependencies and builds the project.&lt;/p&gt;
&lt;p&gt;After building, you can check the help output first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Some commonly used options include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;: list available tests&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t&lt;/code&gt;: run a specific test by name or index&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;: run tests by prefix&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt;: set the memcpy buffer size, default &lt;code&gt;512 MiB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt;: set the number of benchmark iterations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-j&lt;/code&gt;: output &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-H&lt;/code&gt;: enable huge pages for host memory allocation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you just want to run the default test suite once, use:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you only want to test one specific item, such as a device-to-device copy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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-multinode-support-is-one-of-its-standout-features&#34;&gt;6. Multinode support is one of its standout features
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; is not only for single-node multi-GPU testing. It also supports multinode scenarios.&lt;/p&gt;
&lt;p&gt;According to the README, the multinode build is done like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;At runtime, it is typically used together with &lt;code&gt;mpirun&lt;/code&gt;, with one process launched per GPU.&lt;br&gt;
The documentation also requires all participating ranks to belong to the same multinode clique, and it recommends mainly running tests with the &lt;code&gt;multinode&lt;/code&gt; prefix under MPI.&lt;/p&gt;
&lt;p&gt;That makes its positioning much closer to high-performance computing and large GPU systems than to simple workstation self-checks.&lt;/p&gt;
&lt;p&gt;If you are working with &lt;code&gt;NVLink&lt;/code&gt; multinode deployments or more complex platforms such as &lt;code&gt;GB200&lt;/code&gt; / &lt;code&gt;Grace Hopper&lt;/code&gt;, the value of &lt;code&gt;nvbandwidth&lt;/code&gt; is much higher than it would be on a typical consumer GPU setup.&lt;/p&gt;
&lt;h2 id=&#34;7-what-changed-in-v09&#34;&gt;7. What changed in &lt;code&gt;v0.9&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;As of &lt;strong&gt;April 24, 2026&lt;/strong&gt;, the GitHub Releases page shows that the latest version of &lt;code&gt;nvbandwidth&lt;/code&gt; is &lt;strong&gt;&lt;code&gt;v0.9&lt;/code&gt;&lt;/strong&gt;, released on &lt;strong&gt;April 8, 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The most notable updates in this release include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added variability statistics to bandwidth output&lt;/li&gt;
&lt;li&gt;Added huge page support for host memory (&lt;code&gt;Windows&lt;/code&gt; excluded)&lt;/li&gt;
&lt;li&gt;Added pair sampling for device-to-device tests&lt;/li&gt;
&lt;li&gt;Added a troubleshooting guide&lt;/li&gt;
&lt;li&gt;Unified single-node and multinode execution paths&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two engineering-oriented changes are also worth noting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved CUDA architecture detection without relying as much on direct GPU access&lt;/li&gt;
&lt;li&gt;Deprecated &lt;code&gt;Volta&lt;/code&gt; (&lt;code&gt;sm_70&lt;/code&gt; / &lt;code&gt;sm_72&lt;/code&gt;) support in &lt;code&gt;CUDA Toolkit 13.0+&lt;/code&gt; environments&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So if you only looked at early versions before, &lt;code&gt;v0.9&lt;/code&gt; is no longer just a basic bandwidth tester. It is clearly moving toward better automation, troubleshooting, and large-scale system validation.&lt;/p&gt;
&lt;h2 id=&#34;8-when-is-it-a-good-fit&#34;&gt;8. When is it a good fit
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; is especially suitable when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want to verify real interconnect bandwidth between multiple &lt;code&gt;NVIDIA GPU&lt;/code&gt;s&lt;/li&gt;
&lt;li&gt;You suspect one GPU is installed in a bandwidth-limited &lt;code&gt;PCIe&lt;/code&gt; slot&lt;/li&gt;
&lt;li&gt;You want to compare &lt;code&gt;NVLink&lt;/code&gt; paths against non-&lt;code&gt;NVLink&lt;/code&gt; paths&lt;/li&gt;
&lt;li&gt;You are deploying a multinode GPU cluster and need to validate the links&lt;/li&gt;
&lt;li&gt;You want test results in &lt;code&gt;JSON&lt;/code&gt; for automation pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But if your goal is only to answer questions like &amp;ldquo;how fast is training&amp;rdquo; or &amp;ldquo;how many tokens per second can inference reach,&amp;rdquo; this tool is not the whole answer.&lt;br&gt;
In that case, you still need workload-level testing with your training framework, inference engine, or real application.&lt;/p&gt;
&lt;h2 id=&#34;9-how-to-think-about-its-value&#34;&gt;9. How to think about its value
&lt;/h2&gt;&lt;p&gt;Many GPU performance problems are not really caused by insufficient compute. They happen because the data path is not working as expected.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPUs are not using the intended interconnect path&lt;/li&gt;
&lt;li&gt;Cross-NUMA access is reducing speed&lt;/li&gt;
&lt;li&gt;Certain GPU pairs have abnormal bandwidth&lt;/li&gt;
&lt;li&gt;Multinode communication is only partially configured&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These issues are often hard to diagnose if you only look at &lt;code&gt;nvidia-smi&lt;/code&gt; or model throughput.&lt;br&gt;
A lower-level, matrix-oriented tool like &lt;code&gt;nvbandwidth&lt;/code&gt; is useful precisely because it exposes what is happening at the interconnect layer.&lt;/p&gt;
&lt;p&gt;So a simple way to think about it is: &lt;strong&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; is a command-line health check tool for bandwidth on NVIDIA GPU systems.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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-Nearest Neighbors for Beginners: Understanding Machine Learning Classification Through Neighbor Voting</title>
        <link>https://knightli.com/en/2026/04/24/knn-algorithm-beginner-guide/</link>
        <pubDate>Fri, 24 Apr 2026 11:17:13 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/24/knn-algorithm-beginner-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;K-nearest neighbors&lt;/code&gt;, often written as &lt;code&gt;KNN&lt;/code&gt; or &lt;code&gt;k-NN&lt;/code&gt;, is one of the easiest machine learning algorithms to start with. Its idea is very simple: to decide which class a new sample belongs to, look at the most similar samples around it and see which class appears most often.&lt;/p&gt;
&lt;p&gt;If we explain KNN in one sentence, it would be:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You are often judged by the company you keep.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For example, imagine you just moved into a neighborhood and want to know which nearby breakfast shop is best for students. You ask the 5 closest neighbors, and 4 of them recommend the same shop. You will probably trust that shop first. KNN does something similar when classifying data: it finds neighbors and follows the majority.&lt;/p&gt;
&lt;h2 id=&#34;1-start-with-a-small-example&#34;&gt;1. Start With a Small Example
&lt;/h2&gt;&lt;p&gt;Suppose we want to decide whether a fruit is an apple or an orange. We already know some fruit features, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Weight&lt;/li&gt;
&lt;li&gt;Color&lt;/li&gt;
&lt;li&gt;Sweetness&lt;/li&gt;
&lt;li&gt;Whether the peel is rough&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now a new fruit arrives, and we do not know what it is. KNN does not first summarize a complex rule. Instead, it directly looks for the known fruits that are most similar to it.&lt;/p&gt;
&lt;p&gt;If the 5 most similar fruits include 4 apples and 1 orange, KNN will judge that the new fruit is more likely to be an apple.&lt;/p&gt;
&lt;p&gt;Here, &lt;code&gt;K&lt;/code&gt; means &amp;ldquo;how many neighbors to look at.&amp;rdquo; If &lt;code&gt;K=5&lt;/code&gt;, we look at the nearest 5 samples.&lt;/p&gt;
&lt;h2 id=&#34;2-a-simple-diagram&#34;&gt;2. A Simple Diagram
&lt;/h2&gt;&lt;p&gt;The following two-dimensional sketch helps build intuition. Suppose &lt;code&gt;A&lt;/code&gt; means apple, &lt;code&gt;O&lt;/code&gt; means orange, and &lt;code&gt;?&lt;/code&gt; is the new fruit we want to classify.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Sweetness ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#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 |        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;  Low |   O       O
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      +--------------------→ Weight
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Light          Heavy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If we set &lt;code&gt;K=3&lt;/code&gt;, we look at the 3 points closest to &lt;code&gt;?&lt;/code&gt;. Suppose those 3 nearest neighbors contain 2 &lt;code&gt;A&lt;/code&gt;s and 1 &lt;code&gt;O&lt;/code&gt;. KNN will classify &lt;code&gt;?&lt;/code&gt; as &lt;code&gt;A&lt;/code&gt;, meaning apple.&lt;/p&gt;
&lt;p&gt;That is the core process of KNN: &lt;strong&gt;find the nearest K neighbors, then vote.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-basic-steps-of-knn&#34;&gt;3. Basic Steps of KNN
&lt;/h2&gt;&lt;p&gt;Without using formulas, the KNN classification process looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prepare a group of data whose classes are already known&lt;/li&gt;
&lt;li&gt;Receive a new sample with an unknown class&lt;/li&gt;
&lt;li&gt;Compare how similar it is to all known samples&lt;/li&gt;
&lt;li&gt;Find the K most similar samples&lt;/li&gt;
&lt;li&gt;Check which class appears most often among those K samples&lt;/li&gt;
&lt;li&gt;Assign the new sample to that class&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is why KNN is easy to understand. Unlike some models that first need to train many parameters, KNN is more like storing the training data first and looking up neighbors when a prediction is needed.&lt;/p&gt;
&lt;p&gt;This is also why KNN is often called a &amp;ldquo;lazy learning&amp;rdquo; method. &amp;ldquo;Lazy&amp;rdquo; is not negative here. It means the algorithm does not do much computation during training; most of the work is delayed until prediction time.&lt;/p&gt;
&lt;h2 id=&#34;4-what-does-nearest-mean&#34;&gt;4. What Does &amp;ldquo;Nearest&amp;rdquo; Mean?
&lt;/h2&gt;&lt;p&gt;In KNN, &amp;ldquo;nearest&amp;rdquo; does not necessarily mean distance on a map. It usually means &amp;ldquo;more similar in features.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;For fruit classification, two fruits can be considered closer if their weight, color, and sweetness are similar. For user interest prediction, two users can be considered closer if they have similar viewing history, click behavior, and purchase records.&lt;/p&gt;
&lt;p&gt;So the key in KNN is not physical location, but how you describe a sample.&lt;/p&gt;
&lt;p&gt;Common features can include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product price, weight, and sales volume&lt;/li&gt;
&lt;li&gt;User age, page views, and purchase frequency&lt;/li&gt;
&lt;li&gt;Image color, texture, and shape&lt;/li&gt;
&lt;li&gt;Whether certain words appear in a text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whether the features are chosen well directly affects KNN&amp;rsquo;s performance.&lt;/p&gt;
&lt;h2 id=&#34;5-how-to-choose-k&#34;&gt;5. How to Choose K
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K&lt;/code&gt; is not a fixed answer. It needs to be chosen based on the data.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;K&lt;/code&gt; is too small, such as &lt;code&gt;K=1&lt;/code&gt;, the model trusts the single nearest sample too much. This can be sensitive: if that nearest sample happens to be noisy data, the prediction can easily be wrong.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;K&lt;/code&gt; is too large, the model looks at too many neighbors, and distant samples that are not very relevant may affect the result. The boundary between classes can become blurry.&lt;/p&gt;
&lt;p&gt;You can think of it like asking people for advice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask only 1 person: easy to be misled by one opinion&lt;/li&gt;
&lt;li&gt;Ask too many people: some people may not understand your situation&lt;/li&gt;
&lt;li&gt;Ask a few nearby and relevant people: usually more stable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In binary classification, people often choose an odd K, such as &lt;code&gt;3&lt;/code&gt;, &lt;code&gt;5&lt;/code&gt;, or &lt;code&gt;7&lt;/code&gt;, to reduce the chance of a voting tie.&lt;/p&gt;
&lt;h2 id=&#34;6-knn-is-not-only-for-classification&#34;&gt;6. KNN Is Not Only for Classification
&lt;/h2&gt;&lt;p&gt;KNN is most commonly used for classification, such as judging:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether an email is spam&lt;/li&gt;
&lt;li&gt;Whether an image contains a cat or a dog&lt;/li&gt;
&lt;li&gt;Whether a user may churn&lt;/li&gt;
&lt;li&gt;Whether a review is positive or negative&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But it can also be used for regression. Regression means predicting a numeric value.&lt;/p&gt;
&lt;p&gt;For example, if we want to estimate the price of a house, we can find several houses that are most similar to it and use their prices as references. Instead of voting for a class, we combine the numeric values of the neighbors.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Classification: neighbors vote for a class&lt;/li&gt;
&lt;li&gt;Regression: neighbor values are used to estimate a result&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-weighted-knn-closer-neighbors-matter-more&#34;&gt;7. Weighted KNN: Closer Neighbors Matter More
&lt;/h2&gt;&lt;p&gt;Ordinary KNN gives each neighbor roughly the same voting power. But in real situations, closer neighbors are often more trustworthy.&lt;/p&gt;
&lt;p&gt;For example, among 5 neighbors, one sample may be almost identical to the new sample, while the other 4 are only somewhat similar. Treating all votes equally may not be reasonable.&lt;/p&gt;
&lt;p&gt;So there is an improved idea called &amp;ldquo;weighted KNN&amp;rdquo;: closer neighbors have more influence, and farther neighbors have less influence.&lt;/p&gt;
&lt;p&gt;This is easy to understand. When buying a phone, advice from someone whose budget, use case, and brand preference are very close to yours is usually more useful than general advice.&lt;/p&gt;
&lt;h2 id=&#34;8-advantages-of-knn&#34;&gt;8. Advantages of KNN
&lt;/h2&gt;&lt;p&gt;KNN has several beginner-friendly advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The idea is intuitive and easy to explain&lt;/li&gt;
&lt;li&gt;It does not require a complex training process&lt;/li&gt;
&lt;li&gt;It can be used for both classification and regression&lt;/li&gt;
&lt;li&gt;It is flexible for problems with irregular boundaries&lt;/li&gt;
&lt;li&gt;New data can usually be added easily&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are just starting to learn machine learning, KNN is a very good entry point. It helps you understand basic concepts such as samples, features, distance, classification, and training data.&lt;/p&gt;
&lt;h2 id=&#34;9-limitations-of-knn&#34;&gt;9. Limitations of KNN
&lt;/h2&gt;&lt;p&gt;KNN also has clear weaknesses.&lt;/p&gt;
&lt;p&gt;First, prediction can be slow. Every time a new sample arrives, it may need to be compared with many existing samples. If the dataset is large, the computation cost can increase.&lt;/p&gt;
&lt;p&gt;Second, it depends heavily on feature scales. For example, one feature may be &amp;ldquo;income,&amp;rdquo; often in thousands or tens of thousands, while another is &amp;ldquo;age,&amp;rdquo; usually only dozens. Without processing, income may dominate the distance calculation too much.&lt;/p&gt;
&lt;p&gt;That is why data standardization is often needed before using KNN, so different features are compared more fairly.&lt;/p&gt;
&lt;p&gt;Third, it is easily affected by irrelevant features. If you are classifying fruit but include irrelevant information such as &amp;ldquo;purchase date,&amp;rdquo; the model may be distracted.&lt;/p&gt;
&lt;p&gt;Fourth, it is sensitive to local data distribution. If one class has far more samples than another, it may more easily dominate the vote.&lt;/p&gt;
&lt;h2 id=&#34;10-do-not-confuse-it-with-k-means&#34;&gt;10. Do Not Confuse It With K-Means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;KNN&lt;/code&gt; and &lt;code&gt;K-means&lt;/code&gt; both contain &lt;code&gt;K&lt;/code&gt; in their names, but they are not the same thing.&lt;/p&gt;
&lt;p&gt;KNN is supervised learning. It usually uses data that already has labels to classify new samples.&lt;/p&gt;
&lt;p&gt;K-means is more often used for clustering, which means automatically dividing data into groups when there are no clear labels.&lt;/p&gt;
&lt;p&gt;A simple way to remember:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KNN: look at neighbors, then classify or regress&lt;/li&gt;
&lt;li&gt;K-means: find centers, then group data&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;11-when-knn-is-a-good-fit&#34;&gt;11. When KNN Is a Good Fit
&lt;/h2&gt;&lt;p&gt;KNN is suitable for these situations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The dataset is not too large&lt;/li&gt;
&lt;li&gt;Features can be represented as numbers fairly easily&lt;/li&gt;
&lt;li&gt;Similarity between samples is meaningful&lt;/li&gt;
&lt;li&gt;You need an easy-to-explain baseline method&lt;/li&gt;
&lt;li&gt;You want to quickly test whether a classification idea works&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the dataset is huge, the number of features is very large, or prediction speed is critical, KNN may not be the best choice, or it may need to be paired with more efficient nearest-neighbor search methods.&lt;/p&gt;
&lt;h2 id=&#34;12-what-beginners-should-remember&#34;&gt;12. What Beginners Should Remember
&lt;/h2&gt;&lt;p&gt;When learning KNN, you do not need to start with complex formulas. Remember these intuitions first:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KNN uses &amp;ldquo;neighbors&amp;rdquo; to judge a new sample&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; means how many nearest neighbors to look at&lt;/li&gt;
&lt;li&gt;Classification uses voting, while regression uses neighbor values&lt;/li&gt;
&lt;li&gt;Feature selection and data standardization are important&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;K&lt;/code&gt; is too small, noise matters too much; if it is too large, the model can become sluggish&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;KNN is valuable not only because it can solve some problems, but also because it clearly introduces several basic ideas in machine learning: how data is represented, how similarity is measured, and how predictions are produced from existing samples.&lt;/p&gt;
&lt;p&gt;Once you understand &amp;ldquo;find similar samples, then judge based on neighbors,&amp;rdquo; you have grasped the core of KNN.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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-Nearest Neighbors - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>OpenAI Releases GPT-5.5: Stronger Agentic Coding, Knowledge Work, and Research</title>
        <link>https://knightli.com/en/2026/04/24/openai-gpt-5-5-release/</link>
        <pubDate>Fri, 24 Apr 2026 08:39:56 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/24/openai-gpt-5-5-release/</guid>
        <description>&lt;p&gt;OpenAI published &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; on April 23, 2026. Judging from the official page, this release is not just about making the model &amp;ldquo;smarter&amp;rdquo;; it is more about whether the model can keep pushing complex tasks forward.&lt;/p&gt;
&lt;p&gt;OpenAI positions GPT-5.5 as a model better suited for real work. It is expected not only to answer questions, but also to write code, debug, research online, analyze data, create documents and spreadsheets, operate software, and move across tools until the task is finished.&lt;/p&gt;
&lt;h2 id=&#34;1-where-gpt-55-is-strongest&#34;&gt;1. Where GPT-5.5 Is Strongest
&lt;/h2&gt;&lt;p&gt;The release page repeatedly highlights four areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agentic coding&lt;/li&gt;
&lt;li&gt;Computer use and tool use&lt;/li&gt;
&lt;li&gt;Knowledge work&lt;/li&gt;
&lt;li&gt;Early scientific research assistance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, GPT-5.5 is aimed less at short Q&amp;amp;A and more at long-running tasks. For example, an engineering problem is not just &amp;ldquo;how should this code be changed&amp;rdquo;; the model needs to understand the project structure, locate the cause of failure, edit related files, add tests, verify results, and reduce repeated prompting from the user.&lt;/p&gt;
&lt;p&gt;OpenAI also emphasizes that GPT-5.5 uses fewer tokens in Codex tasks. This matters in practice because coding agents can consume tokens quickly once they start reading files, running commands, and fixing bugs. If a model can complete the same task in fewer steps, both cost and waiting time go down.&lt;/p&gt;
&lt;h2 id=&#34;2-coding-is-the-main-showcase&#34;&gt;2. Coding Is the Main Showcase
&lt;/h2&gt;&lt;p&gt;OpenAI calls GPT-5.5 its strongest agentic coding model to date.&lt;/p&gt;
&lt;p&gt;The most notable public numbers include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Terminal-Bench 2.0&lt;/code&gt;: GPT-5.5 reaches &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 reaches &lt;code&gt;58.6%&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OpenAI&amp;rsquo;s internal &lt;code&gt;Expert-SWE&lt;/code&gt;: GPT-5.5 also scores higher than GPT-5.4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These evaluations have one thing in common: they are closer to real engineering workflows than isolated algorithm questions. Terminal-Bench in particular involves command-line operations, planning, trial and error, tool coordination, and multi-step verification.&lt;/p&gt;
&lt;p&gt;For everyday developers, the implication is direct: whether a model can take on larger tasks depends on whether it can hold context for a long time, check its own assumptions, know when to run tests, and understand what else a change may affect.&lt;/p&gt;
&lt;p&gt;The value of GPT-5.5 in Codex also shows up mainly in these behaviors. It feels more like a collaborator that can take over part of an engineering task, rather than a tool that only completes code fragments.&lt;/p&gt;
&lt;h2 id=&#34;3-knowledge-work-becomes-a-core-scenario&#34;&gt;3. Knowledge Work Becomes a Core Scenario
&lt;/h2&gt;&lt;p&gt;Beyond coding, OpenAI is placing GPT-5.5 into a broader office-work context.&lt;/p&gt;
&lt;p&gt;The announcement says GPT-5.5 can generate documents, spreadsheets, and slide decks better in Codex, and is also better suited for operational research, spreadsheet modeling, and organizing business materials. Combined with computer use, its goal is not merely to offer suggestions, but to participate in the full workflow of finding information, understanding content, using tools, checking output, and turning raw material into a result.&lt;/p&gt;
&lt;p&gt;The page also notes that OpenAI already uses Codex across many internal departments, including software engineering, finance, communications, marketing, data science, and product management. The interesting part is not any single example, but the direction: OpenAI is expanding Codex from a developer tool into a more general work tool.&lt;/p&gt;
&lt;p&gt;In ChatGPT, GPT-5.5 Thinking is available to Plus, Pro, Business, and Enterprise users; GPT-5.5 Pro is aimed at harder questions and higher-accuracy work, and is available to Pro, Business, and Enterprise users.&lt;/p&gt;
&lt;h2 id=&#34;4-research-capability-is-more-than-better-answers&#34;&gt;4. Research Capability Is More Than Better Answers
&lt;/h2&gt;&lt;p&gt;GPT-5.5 also receives a strong research-focused presentation.&lt;/p&gt;
&lt;p&gt;OpenAI says it has improved in genetics, quantitative biology, bioinformatics, mathematical proof, and related areas. The key is not whether the model can recall a fact, but whether it can handle more realistic research problems: reading data, spotting anomalies, proposing analyses, interpreting results, and continuing based on intermediate findings.&lt;/p&gt;
&lt;p&gt;The release page mentions &lt;code&gt;GeneBench&lt;/code&gt; and &lt;code&gt;BixBench&lt;/code&gt;, both of which focus more on multi-stage scientific analysis. OpenAI also says an internal version of GPT-5.5, with a custom harness, helped discover a new proof related to Ramsey numbers and verified it with Lean.&lt;/p&gt;
&lt;p&gt;These examples should not be simplified into &amp;ldquo;AI can now do research independently.&amp;rdquo; But they do suggest that models are moving from answer engines toward research collaborators. In scenarios where code, data, papers, experiment ideas, and notes are mixed together, GPT-5.5&amp;rsquo;s long-horizon reasoning and tool use become especially important.&lt;/p&gt;
&lt;h2 id=&#34;5-inference-efficiency-stronger-without-getting-much-slower&#34;&gt;5. Inference Efficiency: Stronger Without Getting Much Slower
&lt;/h2&gt;&lt;p&gt;One easily overlooked point is that OpenAI says GPT-5.5 matches GPT-5.4 in real-world per-token latency.&lt;/p&gt;
&lt;p&gt;Normally, larger and more capable models bring higher latency. This time, OpenAI emphasizes that inference-system optimization helped GPT-5.5 become more capable while keeping speed stable. The release page also mentions that Codex analyzed production traffic patterns and wrote load-balancing heuristic algorithms, increasing token generation speed by more than &lt;code&gt;20%&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That detail is interesting: the model is not only served by infrastructure, but also helps improve the infrastructure that serves it.&lt;/p&gt;
&lt;h2 id=&#34;6-safety-gets-stricter-especially-around-cybersecurity&#34;&gt;6. Safety Gets Stricter, Especially Around Cybersecurity
&lt;/h2&gt;&lt;p&gt;Because GPT-5.5 has stronger cybersecurity capabilities, OpenAI is also tightening safety controls.&lt;/p&gt;
&lt;p&gt;The announcement says GPT-5.5 improves over GPT-5.4 in cybersecurity capability, so OpenAI is deploying stricter classifiers, especially for high-risk activity, sensitive cybersecurity requests, and repeated misuse.&lt;/p&gt;
&lt;p&gt;This means some users may see more refusals or friction when working on cybersecurity-related tasks. OpenAI also offers Trusted Access for Cyber, intended to reduce unnecessary barriers for verified defensive users.&lt;/p&gt;
&lt;p&gt;For ordinary developers, the simple takeaway is: legitimate security hardening, vulnerability fixing, and code auditing should continue to be supported, while high-risk attack workflows will be more tightly controlled.&lt;/p&gt;
&lt;h2 id=&#34;7-availability-and-api-pricing&#34;&gt;7. Availability and API Pricing
&lt;/h2&gt;&lt;p&gt;According to OpenAI&amp;rsquo;s release page, GPT-5.5 availability is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChatGPT: GPT-5.5 Thinking for Plus, Pro, Business, and Enterprise users&lt;/li&gt;
&lt;li&gt;ChatGPT: GPT-5.5 Pro for Pro, Business, and Enterprise users&lt;/li&gt;
&lt;li&gt;Codex: GPT-5.5 for Plus, Pro, Business, Enterprise, Edu, and Go plans&lt;/li&gt;
&lt;li&gt;Codex: &lt;code&gt;400K&lt;/code&gt; context window&lt;/li&gt;
&lt;li&gt;Codex Fast mode: about &lt;code&gt;1.5x&lt;/code&gt; token generation speed at &lt;code&gt;2.5x&lt;/code&gt; the cost&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the API, OpenAI says &lt;code&gt;gpt-5.5&lt;/code&gt; and &lt;code&gt;gpt-5.5-pro&lt;/code&gt; will be available soon.&lt;/p&gt;
&lt;p&gt;The announced API prices are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt;: &lt;code&gt;US$5 / 1M tokens&lt;/code&gt; input and &lt;code&gt;US$30 / 1M tokens&lt;/code&gt; output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5-pro&lt;/code&gt;: &lt;code&gt;US$30 / 1M tokens&lt;/code&gt; input and &lt;code&gt;US$180 / 1M tokens&lt;/code&gt; output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-5.5&lt;/code&gt; API context window: &lt;code&gt;1M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Batch and Flex are half the standard API price&lt;/li&gt;
&lt;li&gt;Priority processing is &lt;code&gt;2.5x&lt;/code&gt; the standard price&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is clearly more expensive than many everyday models, so it is better suited for high-value tasks: complex engineering changes, long-document analysis, office automation, research assistance, and important business workflows, rather than casual chat.&lt;/p&gt;
&lt;h2 id=&#34;8-how-to-read-this-release&#34;&gt;8. How to Read This Release
&lt;/h2&gt;&lt;p&gt;In one sentence, GPT-5.5 is about OpenAI pushing models further from &amp;ldquo;answering questions&amp;rdquo; toward &amp;ldquo;getting work done.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The most important part is not just higher benchmark scores, but the convergence of several capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Better long-task persistence&lt;/li&gt;
&lt;li&gt;More reliable tool use&lt;/li&gt;
&lt;li&gt;Stronger engineering context understanding&lt;/li&gt;
&lt;li&gt;Better fit for documents, spreadsheets, research, and business workflows&lt;/li&gt;
&lt;li&gt;Longer context and higher token efficiency&lt;/li&gt;
&lt;li&gt;Stricter controls around high-risk capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For developers, the most interesting thing to test is complex engineering work in Codex. For enterprise users, the bigger question is whether it can turn some cross-tool, cross-document, cross-process work into deliverable output.&lt;/p&gt;
&lt;p&gt;GPT-5.5 is not a small update aimed only at chat experience. It looks more like another step in OpenAI&amp;rsquo;s push toward AI as an execution layer for work.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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>How to Choose Common Embedding Models: OpenAI vs BGE vs E5 vs GTE vs Jina</title>
        <link>https://knightli.com/en/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/en/2026/04/23/compare-openai-bge-e5-gte-jina-embedding-models/</guid>
        <description>&lt;p&gt;When people start building RAG systems, semantic search, or knowledge base retrieval, they often get stuck on the same question: there are so many embedding models, so which one should you choose?&lt;/p&gt;
&lt;p&gt;Common options can roughly be split into two groups. One group is general-purpose text embeddings that cover Chinese, English, and multilingual tasks. The other group is better suited to Chinese scenarios, especially Chinese retrieval, Chinese QA, and Chinese knowledge bases.&lt;/p&gt;
&lt;p&gt;If you want the short version first, this is a practical way to think about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you want the easiest path and prefer using an API directly: &lt;code&gt;text-embedding-3-small&lt;/code&gt; or &lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If you want Chinese retrieval and prefer open-source models you can self-host: &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;If you need multilingual support: &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;If you want to keep costs down in Chinese scenarios: &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;1-first-look-at-them-by-category&#34;&gt;1. First, Look at Them by Category
&lt;/h2&gt;&lt;h3 id=&#34;1-openai-series&#34;&gt;1. OpenAI Series
&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;The main strengths of these models are simplicity and stability. They are a good fit if you want to call an API directly for retrieval, RAG, classification, and similarity matching. Their advantage is not that they dominate one specific Chinese leaderboard, but that the overall experience is complete: low integration cost, stable quality, and low engineering overhead.&lt;/p&gt;
&lt;p&gt;If your team does not want to host models or maintain inference services, OpenAI is usually the most time-saving option.&lt;/p&gt;
&lt;h3 id=&#34;2-bge-series&#34;&gt;2. BGE Series
&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 is one of the most common families used in Chinese retrieval. &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt; and &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt; lean more toward Chinese monolingual tasks, making them suitable for Chinese semantic search, knowledge base retrieval, and FAQ matching. &lt;code&gt;bge-m3&lt;/code&gt; is more general-purpose and can cover multilingual, multi-granularity, and more complex retrieval scenarios.&lt;/p&gt;
&lt;p&gt;If most of your data is Chinese text, BGE is often one of the easiest families to put on the shortlist.&lt;/p&gt;
&lt;h3 id=&#34;3-e5-series&#34;&gt;3. E5 Series
&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;The strength of the E5 family is more balanced multilingual capability. It works well for mixed Chinese-English data, cross-lingual retrieval, and internationalized content libraries. It is not focused only on Chinese. Instead, it is built around the idea that different languages can live inside one unified retrieval system.&lt;/p&gt;
&lt;p&gt;If your corpus is not purely Chinese, but a mix of Chinese, English, Japanese, or even more languages, E5 is usually more reliable than a Chinese-only model.&lt;/p&gt;
&lt;h3 id=&#34;4-gte-series&#34;&gt;4. GTE Series
&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 is also common in Chinese tasks. Its positioning is similar to BGE: both are practical choices for Chinese retrieval. GTE is usually seen as balanced and easy to use, without much complexity in deployment. It works well for Chinese knowledge bases, site search, and enterprise internal document retrieval.&lt;/p&gt;
&lt;p&gt;If you want one more open-source Chinese model family for side-by-side evaluation, GTE is well worth testing.&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 is more oriented toward general-purpose and modern engineering scenarios, and often appears in multilingual retrieval, long-text processing, and web content tasks. It is frequently mentioned in discussions around using a single model to cover more task types, so it is a good fit for teams that want one unified embedding layer.&lt;/p&gt;
&lt;p&gt;If your content sources are mixed, such as webpages, documents, and multilingual text, Jina is often a strong candidate to test.&lt;/p&gt;
&lt;h2 id=&#34;2-which-models-are-most-common-in-chinese-scenarios&#34;&gt;2. Which Models Are Most Common in Chinese Scenarios
&lt;/h2&gt;&lt;p&gt;If we narrow the scope to Chinese use cases, the usual candidates are basically these:&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;Among them, the most useful split is not really &amp;ldquo;which one is absolutely better,&amp;rdquo; but these three questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Is your data primarily Chinese?&lt;/li&gt;
&lt;li&gt;Do you need multilingual support?&lt;/li&gt;
&lt;li&gt;Do you care more about quality, cost, or deployment convenience?&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-put-these-models-side-by-side&#34;&gt;3. Put These Models Side by Side
&lt;/h2&gt;&lt;h3 id=&#34;1-if-you-only-care-about-chinese-performance&#34;&gt;1. If You Only Care About Chinese Performance
&lt;/h3&gt;&lt;p&gt;For pure Chinese knowledge bases, Chinese QA, and Chinese document retrieval, BGE and GTE are usually the first families to check.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;: lighter and better for cost-sensitive scenarios&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-base-zh-v1.5&lt;/code&gt;: usually one of the most balanced options for Chinese use cases&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-base-zh&lt;/code&gt;: similar to lightweight BGE and good for building a baseline first&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gte-large-zh&lt;/code&gt;: better when retrieval quality matters more&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt;: suitable if you want to evaluate Chinese retrieval together with broader capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your corpus is almost entirely Chinese, E5 can still work, but it often will not be the first priority.&lt;/p&gt;
&lt;h3 id=&#34;2-if-you-need-multilingual-support&#34;&gt;2. If You Need Multilingual Support
&lt;/h3&gt;&lt;p&gt;The priorities change quite a bit here.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;multilingual-e5-base&lt;/code&gt; and &lt;code&gt;multilingual-e5-large&lt;/code&gt; are better suited to unified multilingual retrieval&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jina-embeddings-v3&lt;/code&gt; also fits multilingual and general text tasks&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bge-m3&lt;/code&gt; is better than traditional Chinese-only models when you want to expand into multilingual usage&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text-embedding-3-small&lt;/code&gt; and &lt;code&gt;text-embedding-3-large&lt;/code&gt; are good if you want the simplest API-based route&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your corpus contains Chinese, English, product documentation, website copy, and user questions at the same time, multilingual models can save you a lot of future migration work.&lt;/p&gt;
&lt;h3 id=&#34;3-if-you-need-to-control-inference-and-storage-cost&#34;&gt;3. If You Need to Control Inference and Storage Cost
&lt;/h3&gt;&lt;p&gt;Lightweight models have the advantage here.&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;These models are usually a better fit when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have a large document volume&lt;/li&gt;
&lt;li&gt;Data is updated frequently&lt;/li&gt;
&lt;li&gt;You need batch vectorization&lt;/li&gt;
&lt;li&gt;You are sensitive to latency and cost&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your dataset is large, embedding dimensions, inference speed, and index size will all directly affect total cost. That is why starting with a smaller model as a baseline is often the safer choice.&lt;/p&gt;
&lt;h3 id=&#34;4-if-you-want-the-highest-ceiling-first&#34;&gt;4. If You Want the Highest Ceiling First
&lt;/h3&gt;&lt;p&gt;Larger models are usually better suited to complex retrieval or higher-quality recall, for example:&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;But one thing to keep in mind is that a larger model does not automatically lead to a better production experience. In many projects, the real bottleneck is not the model itself, but chunking strategy, recall count, reranking, data cleaning, and evaluation design.&lt;/p&gt;
&lt;h2 id=&#34;4-what-each-model-is-better-at&#34;&gt;4. What Each Model Is Better At
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Better suited for&lt;/th&gt;
          &lt;th&gt;Quick judgment&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;General retrieval, RAG, fast integration&lt;/td&gt;
          &lt;td&gt;Simple API usage and cost-friendly&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;General retrieval where quality matters more&lt;/td&gt;
          &lt;td&gt;Quality-first and lowest engineering burden&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;Lightweight Chinese retrieval&lt;/td&gt;
          &lt;td&gt;A common entry-level Chinese option&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;Chinese knowledge bases, FAQ, semantic search&lt;/td&gt;
          &lt;td&gt;Very balanced in Chinese scenarios&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;Chinese-focused setups that also need more complex retrieval&lt;/td&gt;
          &lt;td&gt;More extensible&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;Foundational multilingual retrieval&lt;/td&gt;
          &lt;td&gt;Common in international products&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;High-quality multilingual recall&lt;/td&gt;
          &lt;td&gt;More quality-oriented&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;Lightweight Chinese retrieval&lt;/td&gt;
          &lt;td&gt;Good for building a baseline&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;Chinese scenarios that prioritize quality&lt;/td&gt;
          &lt;td&gt;A good comparison point against 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;Multilingual, web, and general text tasks&lt;/td&gt;
          &lt;td&gt;Worth testing if you want one unified embedding layer&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;5-a-practical-way-to-make-the-choice&#34;&gt;5. A Practical Way to Make the Choice
&lt;/h2&gt;&lt;p&gt;If you are trying to ship a system rather than write a paper, you can keep the decision process simple.&lt;/p&gt;
&lt;h3 id=&#34;scenario-1-chinese-knowledge-base&#34;&gt;Scenario 1: Chinese Knowledge Base
&lt;/h3&gt;&lt;p&gt;Start with these:&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;If budget is tight, start from the smaller model first. If retrieval quality matters more, then move upward to larger models.&lt;/p&gt;
&lt;h3 id=&#34;scenario-2-mixed-chinese-english-knowledge-base&#34;&gt;Scenario 2: Mixed Chinese-English Knowledge Base
&lt;/h3&gt;&lt;p&gt;Start with:&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;If you do not want to self-host, OpenAI is the more direct option. If you want to host the model yourself, E5 is the more common path.&lt;/p&gt;
&lt;h3 id=&#34;scenario-3-mostly-chinese-now-but-possibly-multilingual-later&#34;&gt;Scenario 3: Mostly Chinese Now, but Possibly Multilingual Later
&lt;/h3&gt;&lt;p&gt;Start with:&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;The biggest risk in this kind of setup is optimizing only for Chinese at the beginning and then having to rebuild the whole vector database later.&lt;/p&gt;
&lt;h2 id=&#34;6-in-the-end-the-key-is-not-top-of-the-leaderboard&#34;&gt;6. In the End, the Key Is Not &amp;ldquo;Top of the Leaderboard&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;The easiest mistake in embedding model selection is to look only at public benchmark scores and then ship directly to production.&lt;/p&gt;
&lt;p&gt;A more reliable process is usually:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pick 2 to 4 candidate models first&lt;/li&gt;
&lt;li&gt;Run embeddings on your own real data&lt;/li&gt;
&lt;li&gt;Evaluate one round of retrieval performance&lt;/li&gt;
&lt;li&gt;Then make the final decision based on cost, latency, and deployment style&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Because in practice, what really determines the result is often not the model name itself, but whether the model matches your corpus, chunking strategy, and query patterns.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;If you only want one practical summary to remember, use this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chinese-first: start with &lt;code&gt;bge-base-zh-v1.5&lt;/code&gt; and &lt;code&gt;gte-large-zh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cost-first: start with &lt;code&gt;bge-small-zh-v1.5&lt;/code&gt;, &lt;code&gt;gte-base-zh&lt;/code&gt;, and &lt;code&gt;text-embedding-3-small&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Multilingual-first: start with &lt;code&gt;multilingual-e5-base&lt;/code&gt;, &lt;code&gt;multilingual-e5-large&lt;/code&gt;, and &lt;code&gt;jina-embeddings-v3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;API-first: start with &lt;code&gt;text-embedding-3-small&lt;/code&gt; and &lt;code&gt;text-embedding-3-large&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If you want Chinese now and flexibility later: start with &lt;code&gt;bge-m3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is no single model that fits every project, but for most projects, you can quickly narrow down the first batch of candidates from these few groups.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What image vectorization is: from pixel images to searchable, analyzable vector representations</title>
        <link>https://knightli.com/en/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/en/2026/04/23/what-is-image-vectorization-vector-search-vision-workflow/</guid>
        <description>&lt;p&gt;There are already a huge number of images everywhere, but images do not automatically become something a system can understand or use well.&lt;/p&gt;
&lt;p&gt;For people, it is easy to look at an image and quickly tell whether it contains a cat, whether it shows the same product, or whether it reveals a certain kind of defect. For a system, though, a raw image starts out as a grid of pixels. Without additional processing, it is closer to a pile of colored dots than to a piece of data that can be directly searched, clustered, recommended, or recognized.&lt;/p&gt;
&lt;p&gt;Image vectorization solves that step. It converts images from pixel-based files into vector representations that can be compared and computed efficiently by machines. Many capabilities such as image-to-image search, similar image recommendation, visual retrieval, image clustering, and multimodal understanding rely on this layer underneath.&lt;/p&gt;
&lt;h2 id=&#34;1-what-image-vectorization-actually-means&#34;&gt;1. What image vectorization actually means
&lt;/h2&gt;&lt;p&gt;The shortest way to describe it is this:&lt;/p&gt;
&lt;p&gt;image vectorization turns an image into a numerical vector that captures its visual features.&lt;/p&gt;
&lt;p&gt;That vector is usually not meant for people to read. It is meant for models and retrieval systems. Its value is that an image stops being only a file and becomes an object that can participate in similarity comparison, ranking, and computation.&lt;/p&gt;
&lt;p&gt;Take a photo of a cat as an example. In its raw form, the file stores pixel information. After vectorization, the system gets a fixed-length numerical vector instead. The vector does not literally say &amp;ldquo;this is a cat&amp;rdquo;, but it encodes features such as shape, texture, color distribution, local structure, and higher-level semantics. That makes it possible to calculate distances between it and other images and decide which ones are more similar.&lt;/p&gt;
&lt;p&gt;So image vectorization does not mainly change the image itself. It changes how the image can be processed by a system.&lt;/p&gt;
&lt;h2 id=&#34;2-why-raw-pixels-are-not-enough-for-search-and-analysis&#34;&gt;2. Why raw pixels are not enough for search and analysis
&lt;/h2&gt;&lt;p&gt;Raw pixels can still be compared, but both effectiveness and efficiency are limited.&lt;/p&gt;
&lt;p&gt;The main problems usually fall into three groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the dimensionality is high, so direct comparison is expensive&lt;/li&gt;
&lt;li&gt;pixel similarity is not the same thing as semantic similarity&lt;/li&gt;
&lt;li&gt;lighting, cropping, background, and resolution changes can all distort the result&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A typical example is product image retrieval. Two product photos may still clearly represent the same kind of item to a person, even if the angle, background, or image size is different. But if a system only compares pixels directly, it can easily judge them as completely different images.&lt;/p&gt;
&lt;p&gt;The purpose of vectorization is to move the definition of similarity from raw pixel comparison to something much closer to semantic and structural similarity.&lt;/p&gt;
&lt;h2 id=&#34;3-how-image-vectorization-is-usually-done&#34;&gt;3. How image vectorization is usually done
&lt;/h2&gt;&lt;p&gt;In practice, image vectorization is rarely a single step. It is usually a pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;preprocess the image&lt;/li&gt;
&lt;li&gt;extract image features&lt;/li&gt;
&lt;li&gt;compress those features into a fixed-length vector&lt;/li&gt;
&lt;li&gt;store the vector in a vector database or retrieval system&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each stage affects the final quality.&lt;/p&gt;
&lt;h3 id=&#34;1-preprocessing&#34;&gt;1. Preprocessing
&lt;/h3&gt;&lt;p&gt;Preprocessing usually includes things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;resizing the image&lt;/li&gt;
&lt;li&gt;normalizing the input&lt;/li&gt;
&lt;li&gt;removing part of the noise&lt;/li&gt;
&lt;li&gt;unifying color format or input structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal here is not visual beautification. It is to make later model input more stable.&lt;/p&gt;
&lt;h3 id=&#34;2-feature-extraction&#34;&gt;2. Feature extraction
&lt;/h3&gt;&lt;p&gt;This is the core of image vectorization.&lt;/p&gt;
&lt;p&gt;Earlier approaches relied more on handcrafted features such as &lt;code&gt;SIFT&lt;/code&gt;, &lt;code&gt;SURF&lt;/code&gt;, and &lt;code&gt;HOG&lt;/code&gt;, which are good at capturing edges, corners, and local structures. Today, deep learning models are much more common for this step, including:&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;These models encode images into higher-level and more abstract visual features. Compared with traditional feature engineering, they are better at expressing semantics and are more suitable for similarity search, multimodal understanding, and large-scale clustering.&lt;/p&gt;
&lt;h3 id=&#34;3-vector-generation&#34;&gt;3. Vector generation
&lt;/h3&gt;&lt;p&gt;After feature extraction, the system often compresses the internal representation into a fixed-length vector such as &lt;code&gt;512&lt;/code&gt;, &lt;code&gt;768&lt;/code&gt;, or &lt;code&gt;1024&lt;/code&gt; dimensions.&lt;/p&gt;
&lt;p&gt;The point here is not that higher dimensionality is always better. The real problem is finding a balance between representational power, storage cost, and retrieval speed.&lt;/p&gt;
&lt;h3 id=&#34;4-storage-and-retrieval&#34;&gt;4. Storage and retrieval
&lt;/h3&gt;&lt;p&gt;Once the vector is generated, it is usually no longer managed like a normal image file. It enters a system that supports vector retrieval, such as:&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;search systems with vector capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At that point, the image can participate in approximate nearest-neighbor search, clustering, and similarity ranking.&lt;/p&gt;
&lt;h2 id=&#34;4-how-the-technical-path-evolved&#34;&gt;4. How the technical path evolved
&lt;/h2&gt;&lt;p&gt;Image vectorization is not a brand-new idea. What changed in recent years is the quality and range of applications.&lt;/p&gt;
&lt;p&gt;You can roughly think of the evolution in three stages:&lt;/p&gt;
&lt;h3 id=&#34;1-traditional-feature-engineering&#34;&gt;1. Traditional feature engineering
&lt;/h3&gt;&lt;p&gt;At this stage, the focus was on manually defined image features such as edges, textures, corners, and local descriptors. The advantage was maturity and interpretability. The weakness was limited semantic understanding in more complex scenes.&lt;/p&gt;
&lt;h3 id=&#34;2-cnn-driven-stage&#34;&gt;2. CNN-driven stage
&lt;/h3&gt;&lt;p&gt;Convolutional neural networks moved image vectorization into a stage where features could be learned automatically. Compared with handcrafted features, they could capture richer and more stable visual representations for classification, recognition, and similarity search.&lt;/p&gt;
&lt;h3 id=&#34;3-transformer-and-multimodal-stage&#34;&gt;3. Transformer and multimodal stage
&lt;/h3&gt;&lt;p&gt;This stage pushed image vectorization beyond visual features alone toward image-text semantic alignment. Models such as &lt;code&gt;ViT&lt;/code&gt; and &lt;code&gt;CLIP&lt;/code&gt; are not only used for recognizing images. They allow images to enter larger multimodal systems and work together with text, labels, and knowledge bases.&lt;/p&gt;
&lt;p&gt;That is why many image retrieval systems today are no longer limited to image-to-image search. They can already support text-to-image search or mixed image-text retrieval.&lt;/p&gt;
&lt;h2 id=&#34;5-the-most-common-application-scenarios&#34;&gt;5. The most common application scenarios
&lt;/h2&gt;&lt;p&gt;Image vectorization is not only for academic research. It is highly practical in real systems.&lt;/p&gt;
&lt;h3 id=&#34;1-similar-image-retrieval&#34;&gt;1. Similar image retrieval
&lt;/h3&gt;&lt;p&gt;This is the most intuitive use case.&lt;/p&gt;
&lt;p&gt;Once images are converted into vectors, systems can do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;image-to-image search&lt;/li&gt;
&lt;li&gt;duplicate image detection&lt;/li&gt;
&lt;li&gt;similar product matching&lt;/li&gt;
&lt;li&gt;visual deduplication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is common in e-commerce, content platforms, and media asset systems.&lt;/p&gt;
&lt;h3 id=&#34;2-recommendation-systems&#34;&gt;2. Recommendation systems
&lt;/h3&gt;&lt;p&gt;Many recommendation problems are really asking whether one image is similar to what a user has just seen.&lt;/p&gt;
&lt;p&gt;After vectorization, the content of the image itself can become part of the recommendation logic, instead of relying only on text labels or manual categories. That is valuable for product recommendation, content recommendation, and ad matching.&lt;/p&gt;
&lt;h3 id=&#34;3-image-clustering-and-automatic-classification&#34;&gt;3. Image clustering and automatic classification
&lt;/h3&gt;&lt;p&gt;When image collections become large, manual organization becomes slow.&lt;/p&gt;
&lt;p&gt;With vectorization, images can first be grouped by similarity, and then used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;archiving&lt;/li&gt;
&lt;li&gt;scene grouping&lt;/li&gt;
&lt;li&gt;material organization&lt;/li&gt;
&lt;li&gt;automatic tag suggestions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is common in manufacturing, healthcare, education, and media content management.&lt;/p&gt;
&lt;h3 id=&#34;4-anomaly-detection-and-quality-inspection&#34;&gt;4. Anomaly detection and quality inspection
&lt;/h3&gt;&lt;p&gt;If normal samples can already be represented stably as vectors, then images that deviate from the normal distribution become easier to detect.&lt;/p&gt;
&lt;p&gt;Typical examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;industrial defect detection&lt;/li&gt;
&lt;li&gt;surveillance anomaly recognition&lt;/li&gt;
&lt;li&gt;abnormal document or imaging screening&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here, vectorization does not directly produce the final judgment. It turns the image into input that is easier to compare and model.&lt;/p&gt;
&lt;h3 id=&#34;5-multimodal-retrieval-and-image-text-understanding&#34;&gt;5. Multimodal retrieval and image-text understanding
&lt;/h3&gt;&lt;p&gt;This is one of the more important areas today.&lt;/p&gt;
&lt;p&gt;When images and text can both be encoded into nearby vector spaces, systems can support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;text-to-image search&lt;/li&gt;
&lt;li&gt;image-text alignment&lt;/li&gt;
&lt;li&gt;image content retrieval&lt;/li&gt;
&lt;li&gt;multimodal knowledge retrieval&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These capabilities connect naturally with many current generative AI systems, visual question answering pipelines, and enterprise retrieval-augmented workflows.&lt;/p&gt;
&lt;h2 id=&#34;6-what-enterprises-actually-have-to-deal-with&#34;&gt;6. What enterprises actually have to deal with
&lt;/h2&gt;&lt;p&gt;Image vectorization sounds smooth in theory, but the hard part in practice is usually not learning the term. It is dealing with details such as these:&lt;/p&gt;
&lt;h3 id=&#34;1-how-to-balance-vector-dimensionality-and-cost&#34;&gt;1. How to balance vector dimensionality and cost
&lt;/h3&gt;&lt;p&gt;If the vector is too small, representation may be weak. If it is too large, storage and retrieval costs rise. There is no single universal answer. It depends on data size, response time, and target accuracy.&lt;/p&gt;
&lt;h3 id=&#34;2-whether-a-model-can-generalize-across-scenarios&#34;&gt;2. Whether a model can generalize across scenarios
&lt;/h3&gt;&lt;p&gt;A model that works well on public datasets may not work equally well on your own images. Product photos, industrial images, medical images, and surveillance screenshots differ a lot in distribution, so they often need separate evaluation.&lt;/p&gt;
&lt;h3 id=&#34;3-whether-the-retrieval-system-can-scale&#34;&gt;3. Whether the retrieval system can scale
&lt;/h3&gt;&lt;p&gt;When the number of images grows from tens of thousands to millions or tens of millions, vector generation is only the first half. Index design, recall strategy, update behavior, and online query performance become the factors that really define the user experience.&lt;/p&gt;
&lt;h3 id=&#34;4-vectorization-is-not-the-business-loop-by-itself&#34;&gt;4. Vectorization is not the business loop by itself
&lt;/h3&gt;&lt;p&gt;This is easy to overlook.&lt;/p&gt;
&lt;p&gt;Vectorization solves the problem of turning images into computable objects, but it is not a complete solution by itself. After that, you still need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;retrieval logic&lt;/li&gt;
&lt;li&gt;a label system&lt;/li&gt;
&lt;li&gt;evaluation criteria&lt;/li&gt;
&lt;li&gt;human review processes&lt;/li&gt;
&lt;li&gt;integration with business systems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Without those pieces, vectors alone do not automatically create value.&lt;/p&gt;
&lt;h2 id=&#34;7-how-to-think-about-its-real-value&#34;&gt;7. How to think about its real value
&lt;/h2&gt;&lt;p&gt;From a pure technical perspective, image vectorization can sound like a low-level term. But from a business perspective, its value is actually quite concrete:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it gives images searchability for the first time&lt;/li&gt;
&lt;li&gt;it moves similarity comparison from the pixel layer to the semantic layer&lt;/li&gt;
&lt;li&gt;it allows images to enter recommendation, retrieval, clustering, and recognition pipelines&lt;/li&gt;
&lt;li&gt;it turns visual data into something that can participate in analytics and automation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can think of it as the standard entry point for visual data into AI systems. Without it, many image-related capabilities stay at the file-management level. With it, images begin to turn into data assets that can support decision-making and automation.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Image vectorization is not an isolated trick. It is a very basic layer in modern vision systems.&lt;/p&gt;
&lt;p&gt;What it does is not mysterious: it turns images from collections of pixels into vector representations that can be searched, compared, and analyzed. But that one step determines whether images can really enter AI, search, recommendation, and multimodal application pipelines.&lt;/p&gt;
&lt;p&gt;If you want to remember just one sentence, make it this:&lt;/p&gt;
&lt;p&gt;the essence of image vectorization is not image compression, but turning images into a representation that machines can actually use.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>AI Terms Explained: Agent, MCP, RAG, and Token in Plain Language</title>
        <link>https://knightli.com/en/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/en/2026/04/23/ai-terms-agent-mcp-rag-token-explained/</guid>
        <description>&lt;p&gt;When people first get into AI, what pushes them away is often not the models themselves, but the long list of terms that keeps showing up in every discussion. &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;, and &lt;code&gt;Token&lt;/code&gt; all look familiar, but without a simple explanation, many people only recognize the words without really understanding them.&lt;/p&gt;
&lt;p&gt;This article follows a common beginner-friendly line of explanation and condenses 10 high-frequency AI terms into a set of meanings that is easier to remember. The goal is not to sound academic. It is to help you build a basic mental model that lets you follow everyday AI conversations.&lt;/p&gt;
&lt;h2 id=&#34;10-common-ai-terms-and-what-they-mean&#34;&gt;10 common AI terms and what they mean
&lt;/h2&gt;&lt;h3 id=&#34;1-agent-an-ai-that-does-more-than-chat&#34;&gt;1. Agent: an AI that does more than chat
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Agent&lt;/code&gt; can be understood as an AI assistant that actually gets work done.&lt;/p&gt;
&lt;p&gt;A normal chatbot usually works in a simple question-and-answer pattern. An &lt;code&gt;Agent&lt;/code&gt; goes a step further. It can break a task into steps, arrange a process, call tools, and return a finished result. If you ask it to organize materials, look something up, or generate a document, it may do more than give advice. It may actually chain those actions together and complete them.&lt;/p&gt;
&lt;p&gt;That is why the key point of an &lt;code&gt;Agent&lt;/code&gt; is not whether it can talk, but whether it can act.&lt;/p&gt;
&lt;h3 id=&#34;2-openclaw-an-ai-assistant-that-stays-on-your-computer&#34;&gt;2. OpenClaw: an AI assistant that stays on your computer
&lt;/h3&gt;&lt;p&gt;Here, &lt;code&gt;OpenClaw&lt;/code&gt; is described as a kind of AI assistant that lives on your computer.&lt;/p&gt;
&lt;p&gt;You can think of this type of tool as a more desktop-oriented AI helper. It does not only receive text. It may also observe the interface, call local tools, and execute tasks step by step. Compared with a normal web chat interface, this kind of tool emphasizes operational ability much more.&lt;/p&gt;
&lt;p&gt;If &lt;code&gt;Agent&lt;/code&gt; is the abstract idea of an execution-oriented AI, this kind of desktop assistant is a more concrete personal-computer version of that idea.&lt;/p&gt;
&lt;h3 id=&#34;3-skills-capability-packs-added-to-an-agent&#34;&gt;3. Skills: capability packs added to an Agent
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Skills&lt;/code&gt; can be understood as functional modules or operating instructions for an &lt;code&gt;Agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The same &lt;code&gt;Agent&lt;/code&gt; can behave very differently depending on which &lt;code&gt;Skills&lt;/code&gt; it has. Some may focus on copywriting, some on data organization, and some on code-related work. They are a bit like apps on a phone, and a bit like reusable workflows.&lt;/p&gt;
&lt;p&gt;So in many cases, it is not that the model suddenly became smarter. It is that a clearer set of rules, tools, and steps was added behind it.&lt;/p&gt;
&lt;h3 id=&#34;4-mcp-a-unified-way-for-ai-to-connect-to-tools&#34;&gt;4. MCP: a unified way for AI to connect to tools
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;MCP&lt;/code&gt; stands for &lt;code&gt;Model Context Protocol&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In everyday terms, it is a bit like a &lt;code&gt;Type-C&lt;/code&gt; connector for the AI world. In the past, connecting a model to different tools often meant building separate integrations one by one. With a unified protocol, the way those tools connect becomes more standardized and easier to reuse.&lt;/p&gt;
&lt;p&gt;For most users, the most important thing to remember is this: &lt;code&gt;MCP&lt;/code&gt; is not about whether a model can answer a question. It is about how a model can connect to external tools and resources in a safe and stable way.&lt;/p&gt;
&lt;h3 id=&#34;5-gacha-ai-output-is-inherently-random&#34;&gt;5. Gacha: AI output is inherently random
&lt;/h3&gt;&lt;p&gt;The term &amp;ldquo;gacha&amp;rdquo; often appears in &lt;code&gt;AI&lt;/code&gt; image generation, video generation, and creative work.&lt;/p&gt;
&lt;p&gt;The idea is simple. Even with the same prompt and the same general direction, the result can still be different each time. Sometimes the output is great. Sometimes it falls apart. That is why people compare repeated generation attempts to pulling gacha in a game.&lt;/p&gt;
&lt;p&gt;What this really reminds us is that AI generation is not a fixed formula. It is a probabilistic process with variation.&lt;/p&gt;
&lt;h3 id=&#34;6-api-the-connection-between-an-app-and-a-model&#34;&gt;6. API: the connection between an app and a model
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;API&lt;/code&gt; stands for &lt;code&gt;Application Programming Interface&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can think of it as the standard entry point through which programs communicate. When you call a model service from your own app, script, or editor, you are essentially using an &lt;code&gt;API&lt;/code&gt; to send a request and receive a result.&lt;/p&gt;
&lt;p&gt;If you compare a model service to a restaurant, then:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the menu is like the &lt;code&gt;API&lt;/code&gt; documentation&lt;/li&gt;
&lt;li&gt;placing an order is like making an &lt;code&gt;API&lt;/code&gt; request&lt;/li&gt;
&lt;li&gt;the kitchen sending back the dish is like the model returning a result&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is why many tools may look different on the surface while still calling some form of &lt;code&gt;API&lt;/code&gt; underneath.&lt;/p&gt;
&lt;h3 id=&#34;7-multimodality-ai-handles-more-than-text&#34;&gt;7. Multimodality: AI handles more than text
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Multimodality&lt;/code&gt; means AI no longer only reads and writes text. It can process multiple kinds of input and output.&lt;/p&gt;
&lt;p&gt;For example, it may be able to read images, understand voice, interpret video, generate pictures, or even support real-time voice and video interaction. Compared with early text-only models, multimodal models are much closer to having the combined abilities to see, hear, speak, and write.&lt;/p&gt;
&lt;p&gt;That is also why many AI products are no longer centered around a single text box.&lt;/p&gt;
&lt;h3 id=&#34;8-rag-retrieve-information-first-then-generate-an-answer&#34;&gt;8. RAG: retrieve information first, then generate an answer
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;RAG&lt;/code&gt; stands for &lt;code&gt;Retrieval-Augmented Generation&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is useful for solving a practical problem: a model&amp;rsquo;s training data has a time boundary, and it does not automatically know your company&amp;rsquo;s newest documents, customer-service records, or business rules. The idea behind &lt;code&gt;RAG&lt;/code&gt; is to retrieve relevant material from specified sources first, and then generate an answer based on that material.&lt;/p&gt;
&lt;p&gt;Its value usually shows up in three ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;answers are more likely to stay close to real source material&lt;/li&gt;
&lt;li&gt;you can trace where the answer came from&lt;/li&gt;
&lt;li&gt;new documents can be added and reflected quickly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is why many enterprise knowledge bases, AI customer-service systems, and internal Q&amp;amp;A tools rely on &lt;code&gt;RAG&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;9-aigc-the-general-term-for-ai-generated-content&#34;&gt;9. AIGC: the general term for AI-generated content
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AIGC&lt;/code&gt; stands for &lt;code&gt;AI Generated Content&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is not a single tool. It is a broad label for content produced by AI, including text, images, audio, video, and more. AI writing, AI illustration, AI short-form video generation, and AI voice synthesis all fit under the umbrella of &lt;code&gt;AIGC&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What matters most about this term is that it describes a way of producing content, not one specific model.&lt;/p&gt;
&lt;h3 id=&#34;10-token-the-unit-used-to-measure-model-processing&#34;&gt;10. Token: the unit used to measure model processing
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Token&lt;/code&gt; can be understood as the basic unit a model uses to process text.&lt;/p&gt;
&lt;p&gt;It is not exactly the same as one character or one word, but in practice, you can treat it as the common unit used for model computation and billing. Your input consumes &lt;code&gt;Token&lt;/code&gt;, the model&amp;rsquo;s output consumes &lt;code&gt;Token&lt;/code&gt;, and the context kept in memory also takes up &lt;code&gt;Token&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is why model services keep talking about context length, cost control, and prompt compression. At the core, all of those topics are tied to &lt;code&gt;Token&lt;/code&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Tune llama.cpp on 8GB VRAM: Why 32K Is Safer and 64K Needs KV Cache Quantization</title>
        <link>https://knightli.com/en/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/en/2026/04/23/llama-cpp-8g-vram-32k-64k-kv-cache-tuning/</guid>
        <description>&lt;p&gt;Whether &lt;code&gt;8GB&lt;/code&gt; of VRAM is enough to run local LLMs smoothly, especially under long-context workloads, is one of the most common questions people run into when using &lt;code&gt;llama.cpp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There are three key takeaways worth remembering first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On &lt;code&gt;8GB&lt;/code&gt; VRAM, &lt;code&gt;32K&lt;/code&gt; context is usually the safer balance point&lt;/li&gt;
&lt;li&gt;If you really want to run &lt;code&gt;64K&lt;/code&gt;, &lt;code&gt;KV Cache&lt;/code&gt; quantization is often essential&lt;/li&gt;
&lt;li&gt;In full-GPU inference, blindly increasing &lt;code&gt;CPU&lt;/code&gt; thread count can actually make performance worse&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-first-what-do-32k-64k-and-kv-cache-actually-mean&#34;&gt;1. First, what do 32K, 64K, and KV Cache actually mean?
&lt;/h2&gt;&lt;p&gt;For many readers, these are the three terms that cause the most confusion.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; and &lt;code&gt;64K&lt;/code&gt; refer to context length, meaning how many &lt;code&gt;tokens&lt;/code&gt; the model can process at one time. Here, &lt;code&gt;K&lt;/code&gt; means thousand, so &lt;code&gt;32K&lt;/code&gt; is about &lt;code&gt;32000 tokens&lt;/code&gt;, and &lt;code&gt;64K&lt;/code&gt; is about &lt;code&gt;64000 tokens&lt;/code&gt;. The longer the context, the more prior content the model can see at once, which is useful for long-document QA, long conversations, and multi-step analysis.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;KV Cache&lt;/code&gt; is an intermediate-result cache that the model keeps in order to speed up autoregressive generation. You can think of it like this: once the model has already read and computed part of the context, it does not need to recompute everything from scratch every time. Instead, it stores key intermediate information and reuses it. The &lt;code&gt;K&lt;/code&gt; and &lt;code&gt;V&lt;/code&gt; come from &lt;code&gt;Key&lt;/code&gt; and &lt;code&gt;Value&lt;/code&gt; in the Transformer architecture.&lt;/p&gt;
&lt;p&gt;Why do these three terms always appear together? Because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; and &lt;code&gt;64K&lt;/code&gt; define how much content you want the model to remember at once&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KV Cache&lt;/code&gt; determines how much extra VRAM is needed to maintain that memory&lt;/li&gt;
&lt;li&gt;The longer the context, the larger the &lt;code&gt;KV Cache&lt;/code&gt; usually becomes, and the higher the VRAM pressure gets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So when long-context inference slows down, the root problem is often not that the model is &amp;ldquo;bad at computing&amp;rdquo;, but that the cache has grown large enough to push VRAM to its limit.&lt;/p&gt;
&lt;h2 id=&#34;2-why-does-32k-perform-so-differently-from-64k&#34;&gt;2. Why does 32K perform so differently from 64K?
&lt;/h2&gt;&lt;p&gt;Using roughly &lt;code&gt;30000&lt;/code&gt; Chinese characters from &lt;em&gt;The Three-Body Problem&lt;/em&gt; as a stress-test input, the comparison between &lt;code&gt;32K&lt;/code&gt; and &lt;code&gt;64K&lt;/code&gt; context can look dramatic: with similar document size, &lt;code&gt;64K&lt;/code&gt; can become much slower and total runtime can increase significantly.&lt;/p&gt;
&lt;p&gt;The reason is not that the model suddenly becomes worse. The real issue is hitting the VRAM boundary.&lt;/p&gt;
&lt;p&gt;At &lt;code&gt;32K&lt;/code&gt;, model weights plus cache may still fit within &lt;code&gt;8GB&lt;/code&gt; VRAM, so most data traffic stays on the GPU&amp;rsquo;s own memory bandwidth. But once you move to &lt;code&gt;64K&lt;/code&gt;, the cache grows further, total memory use approaches or exceeds the VRAM ceiling, and part of the data gets pushed into shared or system memory.&lt;/p&gt;
&lt;p&gt;At that point, what collapses is not raw compute, but bandwidth.&lt;/p&gt;
&lt;p&gt;In other words, what looks like &amp;ldquo;context doubled and performance crashed&amp;rdquo; is often really a case of the data path falling out of VRAM and into much slower memory.&lt;/p&gt;
&lt;h2 id=&#34;3-if-you-want-64k-kv-cache-quantization-matters-a-lot&#34;&gt;3. If you want 64K, KV Cache quantization matters a lot
&lt;/h2&gt;&lt;p&gt;One of the most important conclusions for &lt;code&gt;8GB&lt;/code&gt; VRAM users is that &lt;code&gt;KV Cache&lt;/code&gt; quantization matters a great deal.&lt;/p&gt;
&lt;p&gt;Without changing the model itself, quantizing only the cache can directly reduce cache memory usage under long context. That means some of the data that previously spilled out of VRAM can move back into VRAM. As a result, &lt;code&gt;64K&lt;/code&gt; is still heavier than &lt;code&gt;32K&lt;/code&gt;, but it is less likely to fall into the slowest performance zone.&lt;/p&gt;
&lt;p&gt;Put simply:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32K&lt;/code&gt; is the more practical default range for &lt;code&gt;8GB&lt;/code&gt; VRAM&lt;/li&gt;
&lt;li&gt;&lt;code&gt;64K&lt;/code&gt; is not impossible&lt;/li&gt;
&lt;li&gt;But without cache quantization, performance can drop from &amp;ldquo;usable&amp;rdquo; to &amp;ldquo;hard to use&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is stable long-context inference, the usual priority should be:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check whether VRAM is already near its ceiling&lt;/li&gt;
&lt;li&gt;Decide whether to enable &lt;code&gt;KV Cache&lt;/code&gt; quantization&lt;/li&gt;
&lt;li&gt;Only then continue experimenting with more aggressive throughput settings&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;4-low-gpu-utilization-does-not-mean-the-gpu-is-idle&#34;&gt;4. Low GPU utilization does not mean the GPU is idle
&lt;/h2&gt;&lt;p&gt;This is a point that often breaks intuition.&lt;/p&gt;
&lt;p&gt;When people see only 20% or 30% &lt;code&gt;GPU&lt;/code&gt; usage in Task Manager, they often assume:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the parameters must be wrong&lt;/li&gt;
&lt;li&gt;the model is not really running on the GPU&lt;/li&gt;
&lt;li&gt;the GPU is not being used fully&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But the more likely explanation in &lt;code&gt;llama.cpp&lt;/code&gt; inference is that the bottleneck is not core compute, but memory reads and writes.&lt;/p&gt;
&lt;p&gt;That means GPU cores may finish a batch of computation quickly, then spend the rest of the time waiting for the next batch of weights or cached data to arrive.&lt;/p&gt;
&lt;p&gt;So what you see becomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;core utilization is not especially high&lt;/li&gt;
&lt;li&gt;but end-to-end speed still fails to improve&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not the GPU being lazy. It is the data path being too narrow.&lt;/p&gt;
&lt;p&gt;That is why you should not look only at &lt;code&gt;GPU Usage&lt;/code&gt; when judging local LLM performance. VRAM capacity, memory bandwidth, and cache spillover often matter more.&lt;/p&gt;
&lt;h2 id=&#34;5-increasing-throughput-parameters-can-help-but-only-if-vram-can-handle-it&#34;&gt;5. Increasing throughput parameters can help, but only if VRAM can handle it
&lt;/h2&gt;&lt;p&gt;Another useful idea is this: if GPU cores are not fully saturated, maybe you can increase throughput-related parameters so the GPU processes more data at once and uses its parallelism more effectively.&lt;/p&gt;
&lt;p&gt;This can indeed improve speed.&lt;/p&gt;
&lt;p&gt;But there is an important condition: VRAM must still have headroom.&lt;/p&gt;
&lt;p&gt;Because once you increase throughput-related settings, you often also increase VRAM usage. If you are already in a &lt;code&gt;64K&lt;/code&gt; scenario with large cache and VRAM near exhaustion, pushing those parameters further can lead to two outcomes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a crash&lt;/li&gt;
&lt;li&gt;or a fallback into much slower shared-memory behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the safer sequence is usually not &amp;ldquo;max out the knobs first&amp;rdquo;, but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;protect the VRAM boundary first&lt;/li&gt;
&lt;li&gt;then try throughput optimization&lt;/li&gt;
&lt;li&gt;after every change, check both speed and stability again&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;6-more-cpu-threads-are-not-always-better&#34;&gt;6. More CPU threads are not always better
&lt;/h2&gt;&lt;p&gt;This is one of the easiest traps to remember.&lt;/p&gt;
&lt;p&gt;It is very natural to assume that more threads should mean better speed. But in practice, once the model is already running mostly on the GPU, forcing &lt;code&gt;CPU&lt;/code&gt; thread count higher can make performance noticeably worse.&lt;/p&gt;
&lt;p&gt;The reason is straightforward.&lt;/p&gt;
&lt;p&gt;In full-GPU inference, the &lt;code&gt;CPU&lt;/code&gt; is more of a scheduler and preprocessing helper than the main compute engine. If you open too many threads, CPU-side thread contention, scheduling overhead, and context-switching costs all become heavier, which can disrupt the data flow that should have stayed smooth.&lt;/p&gt;
&lt;p&gt;The result is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;CPU&lt;/code&gt; looks busier&lt;/li&gt;
&lt;li&gt;but overall speed gets slower&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So in this kind of setup, default settings or lower thread counts are often more reliable than simply maxing everything out.&lt;/p&gt;
&lt;h2 id=&#34;7-a-more-practical-approach-for-8gb-vram-users&#34;&gt;7. A more practical approach for 8GB VRAM users
&lt;/h2&gt;&lt;p&gt;If we compress the conclusions above into a practical workflow, it looks roughly like this:&lt;/p&gt;
&lt;h3 id=&#34;1-treat-32k-as-the-default-goal&#34;&gt;1. Treat 32K as the default goal
&lt;/h3&gt;&lt;p&gt;If you only have an &lt;code&gt;8GB&lt;/code&gt; GPU, do not rush to chase &lt;code&gt;64K&lt;/code&gt;. &lt;code&gt;32K&lt;/code&gt; is usually the more realistic balance between speed, stability, and memory usage.&lt;/p&gt;
&lt;h3 id=&#34;2-if-you-want-64k-deal-with-the-cache-first&#34;&gt;2. If you want 64K, deal with the cache first
&lt;/h3&gt;&lt;p&gt;Do not start by asking whether you can squeeze out a little more speed. First confirm whether &lt;code&gt;KV Cache&lt;/code&gt; is quantized and whether VRAM is already near the limit.&lt;/p&gt;
&lt;h3 id=&#34;3-do-not-judge-everything-by-gpu-utilization&#34;&gt;3. Do not judge everything by GPU utilization
&lt;/h3&gt;&lt;p&gt;Low utilization does not necessarily mean the settings are wrong. It may simply mean memory bandwidth is the real bottleneck.&lt;/p&gt;
&lt;h3 id=&#34;4-throughput-optimization-is-valid-but-do-not-cross-the-vram-boundary&#34;&gt;4. Throughput optimization is valid, but do not cross the VRAM boundary
&lt;/h3&gt;&lt;p&gt;These parameters can help, but only if there is still enough VRAM headroom.&lt;/p&gt;
&lt;h3 id=&#34;5-be-conservative-with-cpu-threads-first&#34;&gt;5. Be conservative with CPU threads first
&lt;/h3&gt;&lt;p&gt;If the model is already running mostly on the GPU, higher CPU thread counts are not automatically better. Start with defaults or lower thread counts, then test gradually.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;The most valuable part of this whole discussion is not just a few benchmark numbers, but the fact that it makes one easily overlooked truth much clearer:&lt;/p&gt;
&lt;p&gt;Local LLM tuning is often not about pushing every setting to the maximum. It is about understanding whether your real bottleneck is compute, VRAM capacity, memory bandwidth, or &lt;code&gt;CPU&lt;/code&gt; scheduling.&lt;/p&gt;
&lt;p&gt;For &lt;code&gt;8GB&lt;/code&gt; VRAM users, the safer strategy is usually not to force the longest possible context, but to protect the VRAM boundary first and only then decide how far to push further.&lt;/p&gt;
&lt;p&gt;If you only remember one sentence, make it this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;32K&lt;/code&gt; is often the more stable working range for &lt;code&gt;8GB&lt;/code&gt; VRAM; &lt;code&gt;64K&lt;/code&gt; is possible, but only if you have already brought &lt;code&gt;KV Cache&lt;/code&gt; and VRAM usage under control.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code&#39;s Four-Part Environment Setup: CLAUDE.md, Rules, Memory, and Hooks Explained</title>
        <link>https://knightli.com/en/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/en/2026/04/23/claude-code-claude-md-rules-memory-hooks-guide/</guid>
        <description>&lt;p&gt;If you use &lt;code&gt;Claude Code&lt;/code&gt; for a while, you quickly realize something: the model itself is important, but the environment you give it, the boundaries you define, and the rules you set matter just as much.&lt;/p&gt;
&lt;p&gt;At first, many people focus on &amp;ldquo;how should I write this prompt?&amp;rdquo; But once you really start using &lt;code&gt;Claude Code&lt;/code&gt; seriously, you care more about something else:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does it know who you are?&lt;/li&gt;
&lt;li&gt;Does it know how you work?&lt;/li&gt;
&lt;li&gt;Does it know which rules cannot be broken?&lt;/li&gt;
&lt;li&gt;Does it know which actions require confirmation first?&lt;/li&gt;
&lt;li&gt;Can it remember these boundaries over time?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What makes &lt;code&gt;Claude Code&lt;/code&gt; a mature tool is not just model capability. It is that there is a whole system for turning your working style into persistent structure. At a high level, that system can be divided into four layers:&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;This article explains all four in one pass.&lt;/p&gt;
&lt;h2 id=&#34;why-environment-setup-matters-more-than-one-off-prompts&#34;&gt;Why environment setup matters more than one-off prompts
&lt;/h2&gt;&lt;p&gt;You can think of &lt;code&gt;Claude Code&lt;/code&gt; as an assistant you hired.&lt;/p&gt;
&lt;p&gt;On day one, you would not just tell them, &amp;ldquo;help me do things.&amp;rdquo; You would give them a handbook and explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;who you are&lt;/li&gt;
&lt;li&gt;what communication style you prefer&lt;/li&gt;
&lt;li&gt;which actions always require confirmation&lt;/li&gt;
&lt;li&gt;which mistakes have happened before and must not happen again&lt;/li&gt;
&lt;li&gt;where the most important project documents live&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is why, in the long run, environment setup usually matters more than a single prompt.&lt;/p&gt;
&lt;p&gt;A prompt solves &amp;ldquo;what should we do this time?&amp;rdquo; Environment setup solves &amp;ldquo;how should we work every time from now on?&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;layer-1-claudemd&#34;&gt;Layer 1: &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Start with the most basic piece. &lt;code&gt;CLAUDE.md&lt;/code&gt; is essentially just a text file.&lt;/p&gt;
&lt;p&gt;You can write instructions for Claude in it, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;who you are&lt;/li&gt;
&lt;li&gt;what you are working on&lt;/li&gt;
&lt;li&gt;your communication preferences&lt;/li&gt;
&lt;li&gt;rules that must be followed&lt;/li&gt;
&lt;li&gt;special background for the current project&lt;/li&gt;
&lt;li&gt;where important documents or directories are&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every time &lt;code&gt;Claude Code&lt;/code&gt; starts, this document is automatically injected into context, so the model will definitely read it.&lt;/p&gt;
&lt;p&gt;I usually think of it as a &amp;ldquo;shared understanding file&amp;rdquo;, because that is what it really is: the standing agreement between you and the model.&lt;/p&gt;
&lt;h3 id=&#34;what-belongs-in-claudemd&#34;&gt;What belongs in &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;The best things to put in &lt;code&gt;CLAUDE.md&lt;/code&gt; are usually these kinds of information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;identity and work background&lt;/li&gt;
&lt;li&gt;tone and output preferences&lt;/li&gt;
&lt;li&gt;global behavior rules&lt;/li&gt;
&lt;li&gt;important project background that comes up often&lt;/li&gt;
&lt;li&gt;common mistakes and how to avoid them&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your time zone&lt;/li&gt;
&lt;li&gt;whether you allow the model to send emails or messages directly&lt;/li&gt;
&lt;li&gt;which actions count as irreversible&lt;/li&gt;
&lt;li&gt;your habits for handling documents and files&lt;/li&gt;
&lt;li&gt;security practices and boundaries around sensitive information&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;one-very-important-principle-keep-it-concise&#34;&gt;One very important principle: keep it concise
&lt;/h3&gt;&lt;p&gt;There is one especially important principle for &lt;code&gt;CLAUDE.md&lt;/code&gt;: keep it as concise as possible.&lt;/p&gt;
&lt;p&gt;The reason is simple: it gets injected into context every time.&lt;/p&gt;
&lt;p&gt;If it becomes too long, it takes up too much context space and dilutes the information that actually matters. The model is not ignoring it, but its attention becomes more spread out, so it is more likely to miss the rules you care about most.&lt;/p&gt;
&lt;p&gt;The official recommendation is usually to stay under &lt;code&gt;400&lt;/code&gt; lines.&lt;/p&gt;
&lt;p&gt;My own habit is even more conservative: I try to keep it under &lt;code&gt;200&lt;/code&gt; lines.&lt;/p&gt;
&lt;h3 id=&#34;common-scopes-for-claudemd&#34;&gt;Common scopes for &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;In practice, &lt;code&gt;CLAUDE.md&lt;/code&gt; can exist at different levels, and those levels determine its scope. The two most common ones are:&lt;/p&gt;
&lt;h4 id=&#34;1-user-level&#34;&gt;1. User Level
&lt;/h4&gt;&lt;p&gt;This is the global level.&lt;/p&gt;
&lt;p&gt;It lives in your machine-level environment and applies to all projects you work on locally.&lt;/p&gt;
&lt;p&gt;This is a good place for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your identity information&lt;/li&gt;
&lt;li&gt;general communication preferences&lt;/li&gt;
&lt;li&gt;habits that apply across projects&lt;/li&gt;
&lt;li&gt;global security rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if your time zone is not the default one people often assume, but Bangkok time, that fits very well at the &lt;code&gt;user level&lt;/code&gt;, because it helps the model avoid mistakes whenever it works with dates and times later.&lt;/p&gt;
&lt;h4 id=&#34;2-project-level&#34;&gt;2. Project Level
&lt;/h4&gt;&lt;p&gt;This is the project level.&lt;/p&gt;
&lt;p&gt;It sits inside a specific project directory and only applies to that project.&lt;/p&gt;
&lt;p&gt;This is a good place for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;project-specific background&lt;/li&gt;
&lt;li&gt;rules that only make sense in this project&lt;/li&gt;
&lt;li&gt;explanations of the project&amp;rsquo;s directory structure&lt;/li&gt;
&lt;li&gt;entry points to the project&amp;rsquo;s key documents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, if one project handles finance and another handles HR, the background and constraints are obviously different, so they should not live in the same global instructions.&lt;/p&gt;
&lt;h3 id=&#34;how-to-decide-which-level-to-use&#34;&gt;How to decide which level to use
&lt;/h3&gt;&lt;p&gt;The rule is actually simple:&lt;/p&gt;
&lt;p&gt;If the thing you are writing would still be true in another project, put it at the &lt;code&gt;user level&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If it stops being true as soon as you switch projects, put it at the &lt;code&gt;project level&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;how-to-write-the-first-version&#34;&gt;How to write the first version
&lt;/h3&gt;&lt;p&gt;There are two common ways to get started:&lt;/p&gt;
&lt;h4 id=&#34;1-use-init&#34;&gt;1. Use &lt;code&gt;/init&lt;/code&gt;
&lt;/h4&gt;&lt;p&gt;You can run the slash command &lt;code&gt;/init&lt;/code&gt; directly in the terminal and let Claude scan the current project to generate a basic &lt;code&gt;CLAUDE.md&lt;/code&gt; for you.&lt;/p&gt;
&lt;h4 id=&#34;2-let-claude-help-you-organize-it&#34;&gt;2. Let Claude help you organize it
&lt;/h4&gt;&lt;p&gt;You can also ask Claude to look up how other people structure &lt;code&gt;CLAUDE.md&lt;/code&gt;, ask you some questions based on your situation, and then help you organize a version that fits you.&lt;/p&gt;
&lt;p&gt;In many cases, that is much easier than writing it from scratch yourself.&lt;/p&gt;
&lt;h3 id=&#34;one-very-practical-habit&#34;&gt;One very practical habit
&lt;/h3&gt;&lt;p&gt;As you collaborate with Claude over time, whenever you notice something that definitely needs to be remembered in the future, or something that must not go wrong again, you can ask it to write that into &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Before doing that, though, you still want to decide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;is this a global rule?&lt;/li&gt;
&lt;li&gt;or a rule for the current project only?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do not dump everything into one file.&lt;/p&gt;
&lt;h2 id=&#34;layer-2-rules&#34;&gt;Layer 2: &lt;code&gt;Rules&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Next is &lt;code&gt;Rules&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The biggest difference between it and &lt;code&gt;CLAUDE.md&lt;/code&gt; is not the file format. It is how it gets loaded.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is read no matter what you are doing.&lt;/p&gt;
&lt;p&gt;The advantage of &lt;code&gt;Rules&lt;/code&gt; is that they can be &lt;strong&gt;loaded conditionally&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In other words, a rule can be loaded only for certain paths, files, tools, or scenarios.&lt;/p&gt;
&lt;h3 id=&#34;why-conditional-loading-matters&#34;&gt;Why conditional loading matters
&lt;/h3&gt;&lt;p&gt;Because context space is always scarce.&lt;/p&gt;
&lt;p&gt;If every rule gets shoved into context all the time, two things happen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the model carries more overhead&lt;/li&gt;
&lt;li&gt;truly important rules get buried&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is the value of loading rules on demand: the model sees the right information at the right time.&lt;/p&gt;
&lt;h3 id=&#34;when-to-move-rules-from-claudemd-into-rules&#34;&gt;When to move rules from &lt;code&gt;CLAUDE.md&lt;/code&gt; into &lt;code&gt;Rules&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Usually there are two situations:&lt;/p&gt;
&lt;h4 id=&#34;1-claudemd-has-become-too-long&#34;&gt;1. &lt;code&gt;CLAUDE.md&lt;/code&gt; has become too long
&lt;/h4&gt;&lt;p&gt;If your &lt;code&gt;CLAUDE.md&lt;/code&gt; starts going beyond &lt;code&gt;200&lt;/code&gt; lines, keeps growing, and the important content gets diluted, it is time to split some rules out.&lt;/p&gt;
&lt;h4 id=&#34;2-some-rules-only-apply-to-specific-paths&#34;&gt;2. Some rules only apply to specific paths
&lt;/h4&gt;&lt;p&gt;If you clearly know that some rules only make sense for certain kinds of files, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rules that only apply to Python scripts&lt;/li&gt;
&lt;li&gt;rules that only apply to a hooks directory&lt;/li&gt;
&lt;li&gt;rules that only apply to one subproject&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then those rules belong in &lt;code&gt;Rules&lt;/code&gt; much more naturally.&lt;/p&gt;
&lt;h3 id=&#34;where-rules-fit-best&#34;&gt;Where &lt;code&gt;Rules&lt;/code&gt; fit best
&lt;/h3&gt;&lt;p&gt;The most typical use case is &amp;ldquo;specific situation, specific path, specific file type&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;conventions that only apply when handling hook files&lt;/li&gt;
&lt;li&gt;coding rules that only matter in a certain class of scripts&lt;/li&gt;
&lt;li&gt;ways of working that only apply under one directory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keeping that kind of content inside &lt;code&gt;CLAUDE.md&lt;/code&gt; is usually not cost-effective.&lt;/p&gt;
&lt;h2 id=&#34;layer-3-memory&#34;&gt;Layer 3: &lt;code&gt;Memory&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;The third layer is &lt;code&gt;Memory&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Like &lt;code&gt;CLAUDE.md&lt;/code&gt; and &lt;code&gt;Rules&lt;/code&gt;, it also enters model context, but its core difference is this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; is something you define deliberately.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Memory&lt;/code&gt; is more like notes Claude writes for itself during collaboration.&lt;/p&gt;
&lt;h3 id=&#34;what-goes-into-memory&#34;&gt;What goes into &lt;code&gt;Memory&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;When Claude judges that something is worth remembering, or should be kept for a while, it writes that information into &lt;code&gt;Memory&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Common examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a way of working you corrected&lt;/li&gt;
&lt;li&gt;a newly added preference&lt;/li&gt;
&lt;li&gt;temporary state in the current project&lt;/li&gt;
&lt;li&gt;something you did not finish today and need to continue tomorrow&lt;/li&gt;
&lt;li&gt;who you have been collaborating with recently&lt;/li&gt;
&lt;li&gt;personal information or context that only came up recently&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, &lt;code&gt;Memory&lt;/code&gt; is closer to dynamic knowledge than long-term policy.&lt;/p&gt;
&lt;h3 id=&#34;how-it-differs-from-the-first-two-layers&#34;&gt;How it differs from the first two layers
&lt;/h3&gt;&lt;p&gt;A simple distinction is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;Rules&lt;/code&gt;: long-term, policy-like, explicit rules&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;: temporary, dynamic, newly learned context during work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If something only matters for the next few days, or keeps changing as the project evolves, it usually belongs in &lt;code&gt;Memory&lt;/code&gt;, not in a permanent rule file.&lt;/p&gt;
&lt;h3 id=&#34;memory-can-also-be-written-manually&#34;&gt;&lt;code&gt;Memory&lt;/code&gt; can also be written manually
&lt;/h3&gt;&lt;p&gt;Even though &lt;code&gt;Memory&lt;/code&gt; can be maintained automatically, you can also explicitly tell Claude things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;please remember what I need to do tomorrow&lt;/li&gt;
&lt;li&gt;please remember whose status I need to follow up on&lt;/li&gt;
&lt;li&gt;please remember the key milestone for this project this month&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It can write that into &lt;code&gt;Memory&lt;/code&gt; for you.&lt;/p&gt;
&lt;p&gt;You can also use the slash command &lt;code&gt;/memory&lt;/code&gt; to see what memories currently exist and edit or delete them manually.&lt;/p&gt;
&lt;p&gt;That said, I personally do not maintain it manually too often, because Claude itself can periodically reorganize these memories and clear out what has gone stale.&lt;/p&gt;
&lt;h2 id=&#34;layer-4-hooks&#34;&gt;Layer 4: &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;The last and most advanced layer is &lt;code&gt;Hooks&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Everything before this, including &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;Rules&lt;/code&gt;, and &lt;code&gt;Memory&lt;/code&gt;, is still ultimately natural-language guidance.&lt;/p&gt;
&lt;p&gt;You write rules, and the model usually follows them, but it is still operating by interpreting them first and then acting.&lt;/p&gt;
&lt;p&gt;As long as the rule lives in natural language, a few problems remain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the model may occasionally miss it&lt;/li&gt;
&lt;li&gt;too many rules can dilute attention&lt;/li&gt;
&lt;li&gt;in some situations, the model may decide the rule is not important enough&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is not because you wrote the rule badly. It is because natural-language rules are hard to enforce with &lt;code&gt;100%&lt;/code&gt; reliability.&lt;/p&gt;
&lt;h3 id=&#34;what-hooks-really-are&#34;&gt;What &lt;code&gt;Hooks&lt;/code&gt; really are
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; are no longer natural-language instructions. They are scripts.&lt;/p&gt;
&lt;p&gt;They are event-triggered, program-level enforcement logic.&lt;/p&gt;
&lt;p&gt;Once a certain event happens, that logic will run. It will not be skipped because the model decided to ignore it.&lt;/p&gt;
&lt;p&gt;That is the key value of &lt;code&gt;Hooks&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;they turn &amp;ldquo;should follow this&amp;rdquo; into &amp;ldquo;must execute this&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;when-you-should-upgrade-to-hooks&#34;&gt;When you should upgrade to &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;If you notice that a rule is already written in &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;Rules&lt;/code&gt;, but Claude still occasionally fails to follow it, and missing it carries real risk, then that rule should probably become a &lt;code&gt;Hook&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In simple terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;low-risk behavior: use rules&lt;/li&gt;
&lt;li&gt;high-risk behavior: use &lt;code&gt;Hooks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;the-most-typical-hooks-scenarios&#34;&gt;The most typical &lt;code&gt;Hooks&lt;/code&gt; scenarios
&lt;/h3&gt;&lt;p&gt;The most obvious examples are actions you absolutely do not want to get wrong, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;requiring confirmation before sending an email&lt;/li&gt;
&lt;li&gt;requiring confirmation before sending Slack, Outlook, or Gmail messages&lt;/li&gt;
&lt;li&gt;intercepting dangerous file deletions&lt;/li&gt;
&lt;li&gt;blocking the outbound leak of passwords or API keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If those are only written as natural-language rules, the model can still make a mistake someday.&lt;/p&gt;
&lt;p&gt;If they are implemented as &lt;code&gt;Hooks&lt;/code&gt;, the event gets intercepted every time.&lt;/p&gt;
&lt;p&gt;That is a real program-level safety barrier.&lt;/p&gt;
&lt;h3 id=&#34;common-trigger-points-for-hooks&#34;&gt;Common trigger points for &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Hooks&lt;/code&gt; can be attached at different stages, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;injecting reminders at the start of a conversation&lt;/li&gt;
&lt;li&gt;checking conditions before a tool runs&lt;/li&gt;
&lt;li&gt;validating results after a tool runs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You do not necessarily need to know the formal terminology yourself.&lt;/p&gt;
&lt;p&gt;Often, as long as you can describe the requirement clearly and ask Claude whether it should become a hook, it can help you design it.&lt;/p&gt;
&lt;p&gt;You can also use the slash command &lt;code&gt;/hook&lt;/code&gt; to inspect which hooks are currently configured.&lt;/p&gt;
&lt;h2 id=&#34;a-more-practical-way-to-get-started&#34;&gt;A more practical way to get started
&lt;/h2&gt;&lt;p&gt;If you want to connect all four layers together, I usually recommend this order:&lt;/p&gt;
&lt;h3 id=&#34;step-1-use-init-to-generate-a-basic-claudemd&#34;&gt;Step 1: use &lt;code&gt;/init&lt;/code&gt; to generate a basic &lt;code&gt;CLAUDE.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Do not try to hand-write a huge complete rule document at the start.&lt;/p&gt;
&lt;p&gt;Let Claude scan the project and generate a starting point, then iterate from there.&lt;/p&gt;
&lt;h3 id=&#34;step-2-add-things-as-you-work&#34;&gt;Step 2: add things as you work
&lt;/h3&gt;&lt;p&gt;As you collaborate, whenever you notice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this must be remembered in the future&lt;/li&gt;
&lt;li&gt;this mistake must not happen again&lt;/li&gt;
&lt;li&gt;this preference will keep applying every time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;then ask Claude to add it to &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;step-3-move-things-into-rules-once-claudemd-grows&#34;&gt;Step 3: move things into &lt;code&gt;Rules&lt;/code&gt; once &lt;code&gt;CLAUDE.md&lt;/code&gt; grows
&lt;/h3&gt;&lt;p&gt;Once &lt;code&gt;CLAUDE.md&lt;/code&gt; gets longer and longer, and the model no longer reliably follows every rule, split things out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;which rules are global?&lt;/li&gt;
&lt;li&gt;which ones only apply to certain paths?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Move the second kind into &lt;code&gt;Rules&lt;/code&gt; so they load conditionally.&lt;/p&gt;
&lt;h3 id=&#34;step-4-upgrade-high-risk-rules-into-hooks&#34;&gt;Step 4: upgrade high-risk rules into &lt;code&gt;Hooks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;If some rules still get missed even after you wrote them down, and the cost of missing them is high, do not stay in the natural-language layer. Upgrade them into &lt;code&gt;Hooks&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is the point where &amp;ldquo;reminder&amp;rdquo; becomes &amp;ldquo;enforcement&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;step-5-let-memory-handle-temporary-state&#34;&gt;Step 5: let &lt;code&gt;Memory&lt;/code&gt; handle temporary state
&lt;/h3&gt;&lt;p&gt;For things that expire, change frequently, or are not long-term policy, do not shove everything into &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is usually cleaner to let &lt;code&gt;Memory&lt;/code&gt; hold things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;current project progress&lt;/li&gt;
&lt;li&gt;recent collaborators&lt;/li&gt;
&lt;li&gt;newly added preferences&lt;/li&gt;
&lt;li&gt;short-term plans and to-dos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That keeps context cleaner and makes the model behave more consistently.&lt;/p&gt;
&lt;h2 id=&#34;what-each-layer-should-store&#34;&gt;What each layer should store
&lt;/h2&gt;&lt;p&gt;If you want a quick mental model, use this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;: long-term shared understanding, global instructions, foundational project background&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Rules&lt;/code&gt;: specialized rules loaded by path or scenario&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Memory&lt;/code&gt;: dynamic knowledge, temporary state, things learned recently&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Hooks&lt;/code&gt;: program-level enforcement for high-risk actions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing
&lt;/h2&gt;&lt;p&gt;Many people treat &lt;code&gt;Claude Code&lt;/code&gt; as &amp;ldquo;a chat interface that can write code&amp;rdquo;. But once you use it deeply, it feels more like a long-term intelligent workstation.&lt;/p&gt;
&lt;p&gt;The key is not only how you phrase each instruction. It is whether you have given it a stable, clear, and accumulative environment.&lt;/p&gt;
&lt;p&gt;Once you build these four layers:&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;the quality of collaboration between you and the model usually improves very noticeably.&lt;/p&gt;
&lt;p&gt;Because you are no longer re-explaining from scratch who you are, how you work, and what must not happen every single time. You have actually turned those things into part of the environment.&lt;/p&gt;
&lt;p&gt;That is the key step in turning a strong model into a mature tool.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>llama.cpp GPU Performance Ranking: Full CUDA, ROCm, and Vulkan Scoreboards Explained with pp512 / tg128 / FA</title>
        <link>https://knightli.com/en/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/en/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;h2 id=&#34;understanding-the-metrics-first&#34;&gt;Understanding the Metrics First
&lt;/h2&gt;&lt;h3 id=&#34;what-is-q4_0&#34;&gt;What is Q4_0
&lt;/h3&gt;&lt;p&gt;Q4_0 is a 4-bit quantization format. It does not mean the model is stronger. It means the model is smaller, uses less VRAM, and fits on more devices. Most of these scoreboards standardize on Llama 2 7B, Q4_0 so that GPU-to-GPU comparisons are easier.&lt;/p&gt;
&lt;h3 id=&#34;what-is-pp512&#34;&gt;What is pp512
&lt;/h3&gt;&lt;p&gt;pp512 usually means prompt processing 512 tokens, which is the throughput while processing 512 input tokens.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pp = prompt processing&lt;/li&gt;
&lt;li&gt;512 = input length is 512 tokens&lt;/li&gt;
&lt;li&gt;/s = tokens per second
This is closer to prompt-ingestion speed, so it is often much higher than generation speed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;what-is-g128&#34;&gt;What is 	g128
&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;g128 usually means 	ext generation 128 tokens, which is the speed while generating 128 tokens continuously.
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;g = text generation&lt;/li&gt;
&lt;li&gt;128 = generate 128 tokens continuously&lt;/li&gt;
&lt;li&gt;/s = tokens per second
This is usually closer to the speed users actually feel in interactive usage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;what-is-fa&#34;&gt;What is FA
&lt;/h3&gt;&lt;p&gt;FA stands for Flash Attention.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;with FA means Flash Attention is enabled&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o FA means Flash Attention is disabled
On many GPUs, FA improves pp512 more clearly than 	g128, but the gain is not identical across backends, drivers, and GPU architectures.&lt;/p&gt;
&lt;h3 id=&#34;how-to-read-s&#34;&gt;How to read 	/s
&lt;/h3&gt;&lt;pre&gt;&lt;code&gt;/s means 	okens per second. When reading these scoreboards, the key rule is to compare the same type of test with the same settings.
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Do not compare pp512 and 	g128 as if they were the same thing&lt;/li&gt;
&lt;li&gt;Do not mix
o FA and with FA&lt;/li&gt;
&lt;li&gt;Do not assume CUDA, ROCm, and Vulkan are directly interchangeable&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;quick-takeaways&#34;&gt;Quick Takeaways
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA is still the strongest overall path in llama.cpp GPU benchmarks, especially on high-end Nvidia GPUs.&lt;/li&gt;
&lt;li&gt;ROCm is already delivering strong results on high-end AMD GPUs and Instinct accelerators.&lt;/li&gt;
&lt;li&gt;Vulkan has the broadest hardware coverage, including Nvidia, AMD, Intel, older GPUs, and some Apple / Asahi setups.&lt;/li&gt;
&lt;li&gt;g128 is closer to everyday perceived speed, while pp512 is better for judging prompt throughput.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cuda-scoreboards&#34;&gt;CUDA Scoreboards
&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-as-a-reference-baseline&#34;&gt;Apple Silicon as a Reference Baseline
&lt;/h2&gt;&lt;p&gt;Discussion #4167 is useful because it established a more unified benchmark format early on. Besides Q4_0, it also includes F16 and Q8_0, which helps explain PP / TG / t/s.
The thread explicitly defines:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PP = prompt processing&lt;/li&gt;
&lt;li&gt;TG = 	ext-generation&lt;/li&gt;
&lt;li&gt;/s = 	okens per second
A representative example is the M2 Ultra time-series comparison:
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Time&lt;/th&gt;
          &lt;th&gt;Device&lt;/th&gt;
          &lt;th&gt;Version / Note&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Bandwidth GB/s&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;GPU Cores&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;tr&gt;
          &lt;td&gt;Representative Apple Silicon entries shown in the thread:&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;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;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Device&lt;/td&gt;
          &lt;td&gt;Q4_0 PP&lt;/td&gt;
          &lt;td&gt;Q4_0 TG&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;Q8_0 PP&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;Q8_0 TG&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;F16 PP&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;F16 TG&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;&amp;mdash;&lt;/td&gt;
          &lt;td&gt;&amp;mdash;:&lt;/td&gt;
          &lt;td&gt;&amp;mdash;:&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&amp;mdash;:&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&amp;mdash;:&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&amp;mdash;:&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&amp;mdash;:&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;M1 Pro 16 GPU&lt;/td&gt;
          &lt;td&gt;266.25&lt;/td&gt;
          &lt;td&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;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;M2 Ultra 76 GPU&lt;/td&gt;
          &lt;td&gt;1238.48&lt;/td&gt;
          &lt;td&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;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;M3 Max 40 GPU&lt;/td&gt;
          &lt;td&gt;690.99&lt;/td&gt;
          &lt;td&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;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;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;rocm--hip-scoreboards&#34;&gt;ROCm / HIP Scoreboards
&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-scoreboards&#34;&gt;Vulkan Scoreboards
&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;how-to-use-these-tables&#34;&gt;How to Use These Tables
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Decide whether you care more about 	g128 or pp512.
For chat and interactive use, 	g128 usually matters more. For long prompts and batch throughput, pp512 matters more.&lt;/li&gt;
&lt;li&gt;Match the backend you actually use.
Nvidia users should usually prioritize CUDA. AMD users should compare ROCm and Vulkan first. Cross-platform users should pay close attention to Vulkan.&lt;/li&gt;
&lt;li&gt;Check FA last.
On many GPUs, enabling FA improves pp512 more than 	g128, so a single headline number can be misleading.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;one-sentence-summary&#34;&gt;One-Sentence Summary
&lt;/h2&gt;&lt;p&gt;In llama.cpp benchmarks, pp512, 	g128, Q4_0, FA, and CUDA / ROCm / Vulkan describe different dimensions. Once the benchmark context is clear, the tables become much easier to read.&lt;/p&gt;
&lt;h2 id=&#34;sources&#34;&gt;Sources
&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>What the Common GPU Inference Benchmark Metrics Actually Mean: FA, pp512, tg128, and Q4_0</title>
        <link>https://knightli.com/en/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/en/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</guid>
        <description>&lt;p&gt;As soon as you start looking at local LLM or GPU inference benchmarks, you quickly run into a stack of abbreviations: &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, and &lt;code&gt;Q4_0&lt;/code&gt;. They all look like performance metrics, but without context they can be surprisingly hard to interpret.&lt;/p&gt;
&lt;p&gt;For example, you may see a line like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then right below it, you might also see:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;If you do not unpack what these terms mean, it becomes difficult to understand what the benchmark is actually measuring, or how to compare the results of two different GPUs.&lt;/p&gt;
&lt;p&gt;This article is not about which GPU is the better buy. It is specifically about breaking down the most common metrics you see in GPU inference benchmarks.&lt;/p&gt;
&lt;h2 id=&#34;first-what-the-whole-title-line-is-actually-saying&#34;&gt;First, what the whole title line is actually saying
&lt;/h2&gt;&lt;p&gt;A line like &lt;code&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)&lt;/code&gt; already tells you most of the test setup.&lt;/p&gt;
&lt;p&gt;At minimum, it contains four layers of information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt;: the benchmark is running on the NVIDIA CUDA path&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Llama 2 7B&lt;/code&gt;: the model being tested is the 7B version of &lt;code&gt;Llama 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: the model uses a 4-bit quantized format&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt;: &lt;code&gt;Flash Attention&lt;/code&gt; was disabled in this test&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So in practical terms, this kind of title usually means:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;A benchmark of a quantized large model running on an NVIDIA GPU, measured under a specific inference path.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-fa-means-flash-attention&#34;&gt;What FA means: Flash Attention
&lt;/h2&gt;&lt;p&gt;Here, &lt;code&gt;FA&lt;/code&gt; stands for &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is one of the most important acceleration techniques in large-model training and inference, mainly because it optimizes how attention is computed. In Transformer models, attention is already one of the most expensive and memory-bandwidth-heavy parts of the entire pipeline.&lt;/p&gt;
&lt;p&gt;A traditional attention implementation often suffers from a few problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;frequent memory reads and writes&lt;/li&gt;
&lt;li&gt;many intermediate results&lt;/li&gt;
&lt;li&gt;repeated data movement between VRAM and on-chip cache&lt;/li&gt;
&lt;li&gt;rapidly growing overhead as context length increases&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What &lt;code&gt;Flash Attention&lt;/code&gt; does, in simple terms, is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reorganize the computation order&lt;/li&gt;
&lt;li&gt;reduce how often intermediate results are written back to VRAM&lt;/li&gt;
&lt;li&gt;keep more of the work inside faster cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That gives it three typical advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it is faster&lt;/li&gt;
&lt;li&gt;it saves memory&lt;/li&gt;
&lt;li&gt;it is mathematically equivalent to standard attention rather than a lower-accuracy shortcut&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is why so many modern inference and training frameworks treat it as a major optimization feature.&lt;/p&gt;
&lt;h2 id=&#34;what-no-fa-means&#34;&gt;What no FA means
&lt;/h2&gt;&lt;p&gt;If &lt;code&gt;FA&lt;/code&gt; means &lt;code&gt;Flash Attention&lt;/code&gt;, then &lt;code&gt;no FA&lt;/code&gt; simply means that &lt;code&gt;Flash Attention&lt;/code&gt; was not enabled for this test.&lt;/p&gt;
&lt;p&gt;In other words, the benchmark was measured using a more traditional attention implementation.&lt;/p&gt;
&lt;p&gt;There are several reasons benchmark tables explicitly label &lt;code&gt;no FA&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to keep a baseline for comparison&lt;/li&gt;
&lt;li&gt;to support hardware or software environments where &lt;code&gt;FA&lt;/code&gt; is unavailable&lt;/li&gt;
&lt;li&gt;to avoid mixing scores from different optimization conditions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So when you see &lt;code&gt;no FA&lt;/code&gt;, you should not read it as &amp;ldquo;this GPU is weak.&amp;rdquo; A more accurate reading is:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;This score was measured without Flash Attention enabled.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-q4_0-means-a-quantization-format&#34;&gt;What Q4_0 means: a quantization format
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; refers to a 4-bit quantization format.&lt;/p&gt;
&lt;p&gt;The original model weights are usually not stored at such low precision. Quantization compresses higher-precision weights into a lower-bit representation so the model becomes easier to run on consumer GPUs.&lt;/p&gt;
&lt;p&gt;A rough way to think about it is:&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;: a specific quantization scheme identifier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its practical importance is straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;smaller model size&lt;/li&gt;
&lt;li&gt;lower VRAM requirements&lt;/li&gt;
&lt;li&gt;better chances of fitting on consumer hardware&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; does not mean just &amp;ldquo;a normal 7B model.&amp;rdquo; It means &amp;ldquo;a 7B model already compressed using a 4-bit quantization format.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;what-pp512-ts-means&#34;&gt;What pp512 t/s means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; usually means:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Processing 512 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It measures how fast the model processes the input prompt, usually in &lt;code&gt;t/s&lt;/code&gt;, meaning &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Here, &lt;code&gt;512&lt;/code&gt; means the prompt length used in the test was &lt;code&gt;512 tokens&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This metric does not measure output speed. It measures how quickly the model encodes and computes over the input before it starts responding. You can think of it as the speed of the &amp;ldquo;reading the prompt first&amp;rdquo; stage.&lt;/p&gt;
&lt;p&gt;One important property of this stage is that it is usually much more parallelizable.&lt;/p&gt;
&lt;p&gt;Because the input sequence can be processed in batches, the GPU can often keep its compute units highly utilized. That is why &lt;code&gt;pp512&lt;/code&gt; numbers can look extremely high, sometimes almost suspiciously high at first glance.&lt;/p&gt;
&lt;p&gt;So if you see something like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;there is no reason to panic. That is measuring prompt-processing throughput, not the speed of token-by-token output generation.&lt;/p&gt;
&lt;h2 id=&#34;what-tg128-ts-means&#34;&gt;What tg128 t/s means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; usually means:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Text Generation 128 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It measures the average speed of generating &lt;code&gt;128 tokens&lt;/code&gt;, again in &lt;code&gt;t/s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This metric is much closer to what people intuitively mean when they ask whether a model feels fast, because it is directly measuring the output stage.&lt;/p&gt;
&lt;p&gt;But the biggest difference from &lt;code&gt;pp512&lt;/code&gt; is that text generation is usually autoregressive.&lt;/p&gt;
&lt;p&gt;That means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the model must generate the first token&lt;/li&gt;
&lt;li&gt;then use that to generate the second&lt;/li&gt;
&lt;li&gt;then continue to the third&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So this stage cannot be parallelized the way prompt processing can, and it is naturally much slower.&lt;/p&gt;
&lt;p&gt;That is why it is perfectly normal to see something like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt; in the tens of thousands of &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; only in the hundreds of &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not a benchmark error. These two metrics are measuring fundamentally different workloads.&lt;/p&gt;
&lt;h2 id=&#34;why-pp512-and-tg128-differ-so-much&#34;&gt;Why pp512 and tg128 differ so much
&lt;/h2&gt;&lt;p&gt;This is often the first thing people find confusing when reading a scoreboard.&lt;/p&gt;
&lt;p&gt;The short explanation is:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; is closer to measuring parallel throughput, while &lt;code&gt;tg128&lt;/code&gt; is closer to measuring token-by-token generation ability.&lt;/p&gt;
&lt;p&gt;To expand on that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the input stage is easier to parallelize&lt;/li&gt;
&lt;li&gt;the output stage depends on sequential token generation&lt;/li&gt;
&lt;li&gt;generation is usually more sensitive to memory bandwidth and cache behavior&lt;/li&gt;
&lt;li&gt;so generation speed being much lower than prompt-processing speed is entirely normal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That also explains an interesting pattern you sometimes see in GPU comparisons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one GPU is stronger in &lt;code&gt;pp512&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;another ends up slightly faster in &lt;code&gt;tg128&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is not contradictory. One metric leans more toward peak compute throughput, while the other reflects the actual memory and latency behavior of the generation path.&lt;/p&gt;
&lt;h2 id=&#34;how-to-think-about-ts&#34;&gt;How to think about t/s
&lt;/h2&gt;&lt;p&gt;Here, &lt;code&gt;t/s&lt;/code&gt; simply means &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It tells you how many tokens the model can process or generate in one second.&lt;/p&gt;
&lt;p&gt;But there is one important caveat: a &lt;code&gt;token&lt;/code&gt; is not the same thing as a character or a word. It is the unit produced by the model&amp;rsquo;s tokenizer, and its actual text length can vary a lot across models and languages.&lt;/p&gt;
&lt;p&gt;So in practice, &lt;code&gt;t/s&lt;/code&gt; is most useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comparing different GPUs on the same model&lt;/li&gt;
&lt;li&gt;comparing different parameter settings in the same environment&lt;/li&gt;
&lt;li&gt;comparing a framework before and after a specific optimization is enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is much less reliable as a universal &amp;ldquo;absolute speed&amp;rdquo; metric across different models, frameworks, and tokenizers.&lt;/p&gt;
&lt;h2 id=&#34;what-to-focus-on-first-when-reading-a-scoreboard&#34;&gt;What to focus on first when reading a scoreboard
&lt;/h2&gt;&lt;p&gt;If you do not want to get buried under abbreviations every time, start with these questions.&lt;/p&gt;
&lt;h3 id=&#34;1-what-model-is-being-tested&#34;&gt;1. What model is being tested
&lt;/h3&gt;&lt;p&gt;For example, is it &lt;code&gt;Llama 2 7B&lt;/code&gt;? Is it the same quantized variant, such as &lt;code&gt;Q4_0&lt;/code&gt;? If the model or quantization format changes, direct comparison becomes much less meaningful.&lt;/p&gt;
&lt;h3 id=&#34;2-whether-key-optimizations-are-enabled&#34;&gt;2. Whether key optimizations are enabled
&lt;/h3&gt;&lt;p&gt;The most common example is &lt;code&gt;FA&lt;/code&gt;. If one benchmark uses &lt;code&gt;Flash Attention&lt;/code&gt; and the other does not, those scores are not directly comparable.&lt;/p&gt;
&lt;h3 id=&#34;3-whether-the-metric-is-measuring-input-speed-or-output-speed&#34;&gt;3. Whether the metric is measuring input speed or output speed
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; and &lt;code&gt;tg128&lt;/code&gt; are measuring different stages. One is closer to prompt-reading speed, the other is closer to answer-generation speed.&lt;/p&gt;
&lt;h3 id=&#34;4-whether-you-care-about-throughput-or-user-feel&#34;&gt;4. Whether you care about throughput or user feel
&lt;/h3&gt;&lt;p&gt;If you care more about how quickly a long prompt gets processed, &lt;code&gt;pp512&lt;/code&gt; matters more. If you care more about how fast the model feels while answering, &lt;code&gt;tg128&lt;/code&gt; is usually closer to the real experience.&lt;/p&gt;
&lt;h2 id=&#34;a-more-practical-way-to-remember-all-this&#34;&gt;A more practical way to remember all this
&lt;/h2&gt;&lt;p&gt;If you want to compress all of these into one short memory aid, you can think of them like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: the model is compressed into a 4-bit quantized version&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FA&lt;/code&gt;: whether Flash Attention is enabled&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;: how fast the model processes a 512-token input&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;: how fast the model generates a 128-token output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;: speed unit, tokens per second&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once those five points are clear, it becomes much easier to judge what a given CUDA Scoreboard is actually measuring.&lt;/p&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing
&lt;/h2&gt;&lt;p&gt;GPU benchmark tables often look more complicated than they really are, not because the metrics themselves are mysterious, but because model identity, quantization, optimization flags, and different stages of throughput are all compressed into a few short abbreviations.&lt;/p&gt;
&lt;p&gt;Once you unpack terms like &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, and &lt;code&gt;tg128&lt;/code&gt;, these benchmark tables become much easier to read.&lt;/p&gt;
&lt;p&gt;What matters is not just remembering a raw score, but knowing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;which model configuration the score came from&lt;/li&gt;
&lt;li&gt;whether key optimizations were enabled&lt;/li&gt;
&lt;li&gt;whether it measured input or output behavior&lt;/li&gt;
&lt;li&gt;whether it reflects compute throughput or something closer to actual generation feel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes it much easier to judge what these results really mean.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>A Practical Guide to Common Tensor Formats in LLMs: FP32, FP16, BF16, TF32, and FP8</title>
        <link>https://knightli.com/en/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/en/2026/04/22/common-tensor-formats-fp32-fp16-bf16-tf32-fp8/</guid>
        <description>&lt;p&gt;As soon as you start working with large-model training, inference, or deployment, you quickly run into a familiar set of abbreviations: &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;, and &lt;code&gt;FP8&lt;/code&gt;. They may look like small labels on a model page, but their impact is much bigger than a naming difference.&lt;/p&gt;
&lt;p&gt;These formats determine how numbers are stored in memory and represented during computation. They directly affect training stability, inference speed, and even how large a model a given GPU can realistically handle.&lt;/p&gt;
&lt;p&gt;So if you want to understand precision trade-offs in large models, one of the best places to start is not a benchmark chart for a specific model, but a clear picture of what these tensor formats are and why they were designed the way they are.&lt;/p&gt;
&lt;h2 id=&#34;what-tensor-formats-actually-determine&#34;&gt;What tensor formats actually determine
&lt;/h2&gt;&lt;p&gt;At its core, a large model is a massive set of matrix operations over huge numbers of parameters, and the tensor format is how those numbers are stored in memory and represented during computation.&lt;/p&gt;
&lt;p&gt;The trade-off usually revolves around three dimensions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;precision&lt;/li&gt;
&lt;li&gt;VRAM usage&lt;/li&gt;
&lt;li&gt;compute speed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is actually a lot like image formats. Lossless formats preserve more detail, but take more space and load more slowly. Compressed formats discard information that is less noticeable to the eye in exchange for smaller size and faster handling. Large models can accept similar trade-offs because, across extremely large parameter sets, many tiny numerical changes do not significantly affect the final output.&lt;/p&gt;
&lt;p&gt;That is why the model world has developed a whole family of precision formats.&lt;/p&gt;
&lt;h2 id=&#34;how-a-number-is-represented&#34;&gt;How a number is represented
&lt;/h2&gt;&lt;p&gt;Before getting into the formats, it helps to remember one basic structure. A floating-point number is usually made of three parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sign bit: determines positive or negative&lt;/li&gt;
&lt;li&gt;exponent bits: determine numerical range&lt;/li&gt;
&lt;li&gt;mantissa bits: determine numerical detail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In large models, mantissa precision certainly matters, but many models are even more sensitive to insufficient numerical range, meaning too few exponent bits and a higher risk of overflow or unstable training. A lot of tensor format design is essentially about reallocating a limited number of bits between range and detail.&lt;/p&gt;
&lt;p&gt;The diagram below gives a quick overall view:&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;Overview of the bit layouts of FP32, FP16, BF16, TF32, and FP8&#34;
	
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;fp32-the-most-stable-but-expensive&#34;&gt;FP32: the most stable, but expensive
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP32&lt;/code&gt; is the traditional single-precision floating-point format. It uses 32 bits in total, or 4 bytes.&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 bit layout diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Its strengths are straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wide numerical range&lt;/li&gt;
&lt;li&gt;high precision&lt;/li&gt;
&lt;li&gt;the most stable training behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But the downside is just as clear: it consumes a lot of VRAM.&lt;/p&gt;
&lt;p&gt;A very rough estimate is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;VRAM usage ≈ parameter count × bytes per parameter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If a 27B model stores weights entirely in &lt;code&gt;FP32&lt;/code&gt;, the weights alone take roughly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;And that still does not include activations, KV cache, optimizer state, or other runtime overhead. So in modern large-model training and inference, &lt;code&gt;FP32&lt;/code&gt; is no longer the default so much as the most stable baseline format.&lt;/p&gt;
&lt;h2 id=&#34;fp16-half-the-size-but-less-stable&#34;&gt;FP16: half the size, but less stable
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;FP16&lt;/code&gt; compresses each parameter to 2 bytes, cutting memory usage roughly in half compared with &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 bit layout diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;For the same 27B model, if you only look at weight size:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;That already explains why many deployment guides place a 27B model around the 50GB VRAM range.&lt;/p&gt;
&lt;p&gt;The advantages of &lt;code&gt;FP16&lt;/code&gt; are obvious:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;much lower VRAM pressure&lt;/li&gt;
&lt;li&gt;higher throughput&lt;/li&gt;
&lt;li&gt;widely used in early mixed-precision training&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Its weakness is the relatively small exponent range. In large-model training, that makes overflow more likely and often requires extra techniques such as loss scaling, which adds engineering complexity.&lt;/p&gt;
&lt;p&gt;So &lt;code&gt;FP16&lt;/code&gt; is still common, but in many scenarios it is no longer the most comfortable option.&lt;/p&gt;
&lt;h2 id=&#34;bf16-a-more-practical-half-precision-for-the-large-model-era&#34;&gt;BF16: a more practical half precision for the large-model era
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;BF16&lt;/code&gt; also uses 2 bytes, but it makes a different trade-off from &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 bit layout diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;It keeps a much larger exponent range, making its dynamic range closer to &lt;code&gt;FP32&lt;/code&gt;, while giving up some mantissa precision. That trade-off works especially well for large models, because they are often more sensitive to range than to losing a few mantissa bits.&lt;/p&gt;
&lt;p&gt;That is why many training frameworks, many large-model papers, and many real deployment setups prefer &lt;code&gt;BF16&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A simple way to think about it is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VRAM cost close to &lt;code&gt;FP16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;stability closer to &lt;code&gt;FP32&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If one 27B deployment guide asks for roughly 50GB of VRAM while another optimized one gets closer to 30GB, the former often still lives in the &lt;code&gt;FP16/BF16&lt;/code&gt; layer, while the latter has usually moved further toward lower precision or quantization.&lt;/p&gt;
&lt;h2 id=&#34;tf32-not-about-saving-vram-but-about-accelerating-fp32-workflows&#34;&gt;TF32: not about saving VRAM, but about accelerating FP32 workflows
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;TF32&lt;/code&gt; is easy to mistake for yet another memory-saving format, but its role is different.&lt;/p&gt;
&lt;p&gt;In common terms, you can roughly think of it as a computation format that keeps a large exponent range while shortening mantissa precision.&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 computation format diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;But it is important to note that &lt;code&gt;TF32&lt;/code&gt; is more like an internal computation format used on the Tensor Core path, rather than something primarily used to store weights like &lt;code&gt;FP16&lt;/code&gt; or &lt;code&gt;BF16&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is mainly a computation mode NVIDIA provides on newer GPUs. The goal is not to reduce VRAM usage, but to make originally &lt;code&gt;FP32&lt;/code&gt;-based training workflows run faster without requiring major code changes.&lt;/p&gt;
&lt;p&gt;Its role can be summarized in one sentence:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;externally it still looks like an &lt;code&gt;FP32&lt;/code&gt; workflow&lt;/li&gt;
&lt;li&gt;internally it performs faster approximate matrix math&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;TF32&lt;/code&gt; mainly solves the problem that &lt;code&gt;FP32&lt;/code&gt; is too slow, not that &lt;code&gt;FP32&lt;/code&gt; uses too much memory. If your question is why the same model can have very different VRAM requirements, &lt;code&gt;TF32&lt;/code&gt; is not the main answer.&lt;/p&gt;
&lt;h2 id=&#34;fp8-further-compression-but-much-more-demanding-engineering&#34;&gt;FP8: further compression, but much more demanding engineering
&lt;/h2&gt;&lt;p&gt;Going one step further leads to &lt;code&gt;FP8&lt;/code&gt;. It compresses each value into even fewer bits, reducing memory bandwidth and storage cost even more.&lt;/p&gt;
&lt;p&gt;It usually appears not as one single format, but as two common variants: &lt;code&gt;E4M3&lt;/code&gt; and &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 variant diagram&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;FP8&lt;/code&gt; comes with an obvious cost: once the bit count gets that low, it becomes very hard to preserve both range and precision at the same time. In practice, different variants are often used for different stages to balance forward passes, backward passes, and gradients.&lt;/p&gt;
&lt;p&gt;This format family represents a more aggressive strategy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;give up more precision&lt;/li&gt;
&lt;li&gt;gain lower storage cost and higher throughput&lt;/li&gt;
&lt;li&gt;rely on more mature hardware and frameworks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It has a lot of potential, but for most users, the main practical dividing lines are still &lt;code&gt;FP32&lt;/code&gt;, &lt;code&gt;FP16&lt;/code&gt;, and &lt;code&gt;BF16&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;why-understanding-these-formats-matters&#34;&gt;Why understanding these formats matters
&lt;/h2&gt;&lt;p&gt;Many people first treat these abbreviations as implementation details on a download page. In practice, though, they change how you think about both training and deployment.&lt;/p&gt;
&lt;p&gt;For example, they help explain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;why some training setups care so much about numerical stability&lt;/li&gt;
&lt;li&gt;why some inference stacks emphasize quantization and low precision first&lt;/li&gt;
&lt;li&gt;why models with similar parameter counts can still have very different deployment requirements&lt;/li&gt;
&lt;li&gt;why some formats are better for storing weights while others make more sense as compute paths&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you keep unpacking those questions, they usually lead back to the same issue: how you choose to trade off precision, range, memory, and speed.&lt;/p&gt;
&lt;p&gt;That is why understanding &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;, and &lt;code&gt;FP8&lt;/code&gt; is not just about decoding a glossary. It is about understanding what is really being exchanged when you read a training config, choose an inference engine, or compare deployment options.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-mental-model&#34;&gt;A practical mental model
&lt;/h2&gt;&lt;p&gt;If you do not want to memorize all the details right away, it helps to remember them in this order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FP32&lt;/code&gt;: most stable, most expensive&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP16&lt;/code&gt;: lower VRAM use, but smaller range&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BF16&lt;/code&gt;: similar VRAM cost to &lt;code&gt;FP16&lt;/code&gt;, but more suitable stability for large models&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TF32&lt;/code&gt;: mainly solves slow &lt;code&gt;FP32&lt;/code&gt;, not VRAM usage&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FP8&lt;/code&gt;: a more aggressive compression and acceleration route&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;Summary chart of common tensor formats&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;After that, when you see &lt;code&gt;fp16&lt;/code&gt;, &lt;code&gt;bf16&lt;/code&gt;, or &lt;code&gt;fp8&lt;/code&gt; on a model download page, or when different deployment guides give wildly different VRAM thresholds, it no longer looks like a difference in wording. Those labels reflect very different precision budgets and engineering choices.&lt;/p&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing
&lt;/h2&gt;&lt;p&gt;Tensor formats in large models may look like a discussion about bit widths, but underneath they are really a discussion about engineering trade-offs.&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;, and &lt;code&gt;FP8&lt;/code&gt; are not simply better or worse than one another. Each one sits at a different point on the trade-off curve between stability, range, precision, memory, and speed.&lt;/p&gt;
&lt;p&gt;Once you understand that layer clearly, it becomes much easier to read training papers, tune inference settings, and compare deployment strategies with the right mental model.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>A 16GB GPU Can Still Run 35B Models: VRAM Compression Strategies for MoE Models in LM Studio</title>
        <link>https://knightli.com/en/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/en/2026/04/22/16gb-gpu-run-35b-moe-models-in-lm-studio/</guid>
        <description>&lt;p&gt;Many people think of 16GB VRAM as the point where local LLM deployment more or less tops out at 12B to 14B models, and anything larger becomes too painful even with quantization. That view is understandable, but it is not the true ceiling of a 16GB GPU.&lt;/p&gt;
&lt;p&gt;If your model choice and parameter setup are good enough, a 16GB GPU does not have to stay limited to “small-parameter” models. One representative approach is to use &lt;code&gt;MoE&lt;/code&gt; models inside &lt;code&gt;LM Studio&lt;/code&gt; with a sensible unloading strategy, so that 35B-class models can still run at a genuinely usable speed.&lt;/p&gt;
&lt;h2 id=&#34;01-why-a-16gb-gpu-is-not-necessarily-limited-to-12b-to-14b&#34;&gt;01 Why a 16GB GPU is not necessarily limited to 12B to 14B
&lt;/h2&gt;&lt;p&gt;The core idea is straightforward: VRAM size matters, but model architecture matters just as much.&lt;/p&gt;
&lt;p&gt;If you try to cram a standard dense model into a 16GB GPU, you will hit the wall quickly. These models usually involve all parameters during inference, so VRAM pressure and bandwidth pressure rise immediately.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;MoE&lt;/code&gt; models are different. Their total parameter count can be large, while only part of the expert parameters are activated in a single inference step. Take a 35B-class model as an example: although the total parameter count is high, the actual number of parameters participating in each inference step is much smaller, so its real VRAM requirement is not as extreme as many people assume.&lt;/p&gt;
&lt;p&gt;That is exactly why a 16GB GPU still leaves some room to work with.&lt;/p&gt;
&lt;h2 id=&#34;02-key-practical-takeaway-35b-moe-models-can-run-surprisingly-fast&#34;&gt;02 Key practical takeaway: 35B MoE models can run surprisingly fast
&lt;/h2&gt;&lt;p&gt;One representative case is a quantized &lt;code&gt;MoE&lt;/code&gt; model such as &lt;code&gt;Qwen 3.5 35B A3B&lt;/code&gt;. With a 16GB GPU and the right settings in &lt;code&gt;LM Studio&lt;/code&gt;, &lt;code&gt;Q6&lt;/code&gt; quantization can reach something above 30 &lt;code&gt;tokens/s&lt;/code&gt;, and &lt;code&gt;Q4&lt;/code&gt; can sometimes test even higher.&lt;/p&gt;
&lt;p&gt;That result matters not just because the model “runs,” but because the speed is already in a clearly usable range.&lt;/p&gt;
&lt;p&gt;As a comparison, large models of a similar scale that are not &lt;code&gt;MoE&lt;/code&gt; often run into VRAM overflow and sharply lower speed on a 16GB GPU. In other words, the outcome is not determined by parameter count alone. What matters is how those parameters are actually used during inference.&lt;/p&gt;
&lt;h2 id=&#34;03-in-lm-studio-the-key-is-not-just-one-parameter&#34;&gt;03 In LM Studio, the key is not just one parameter
&lt;/h2&gt;&lt;p&gt;If you want this kind of model to run smoothly on a 16GB GPU, the real trick is not luck. It is tuning two parameters correctly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU Offload&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the setting that forces part of the expert layers into CPU memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first one is easy to understand. &lt;code&gt;GPU Offload&lt;/code&gt; is basically something you push as high as possible, so the model prioritizes GPU computation.&lt;/p&gt;
&lt;p&gt;The second one is the real key here. It is not the traditional “borrow system memory after VRAM overflows” approach. Instead, it proactively places part of the expert layers into CPU memory to reduce VRAM usage in advance. Since &lt;code&gt;MoE&lt;/code&gt; models do not activate every expert on every step anyway, moving some experts into memory does not hurt overall inference speed as much as many people would expect.&lt;/p&gt;
&lt;p&gt;A safer way to tune it is to start within a range and then adjust gradually for your machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start with related values somewhere between &lt;code&gt;20&lt;/code&gt; and &lt;code&gt;35&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;then fine-tune based on VRAM usage and memory pressure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At its core, this method is using system memory to buy back VRAM headroom.&lt;/p&gt;
&lt;h2 id=&#34;04-it-can-still-run-at-128k-context-and-smaller-contexts-reduce-vram-further&#34;&gt;04 It can still run at 128K context, and smaller contexts reduce VRAM further
&lt;/h2&gt;&lt;p&gt;Another interesting point is that even with the context length pushed to &lt;code&gt;128K&lt;/code&gt;, a 35B-class &lt;code&gt;MoE&lt;/code&gt; model can still maintain a relatively high speed.&lt;/p&gt;
&lt;p&gt;That tells us something important: the bottleneck of a 16GB GPU is not as rigid as many people imagine. Especially inside a local inference tool like &lt;code&gt;LM Studio&lt;/code&gt;, the real question is often not simply “can it run or not,” but rather:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;are you willing to trade more system memory for less VRAM usage&lt;/li&gt;
&lt;li&gt;are you willing to shorten the context length&lt;/li&gt;
&lt;li&gt;are you willing to accept different capability tradeoffs across quantization levels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the context is reduced further from &lt;code&gt;128K&lt;/code&gt; to &lt;code&gt;64K&lt;/code&gt; or &lt;code&gt;32K&lt;/code&gt;, VRAM pressure can drop even more. That means some 35B-class &lt;code&gt;MoE&lt;/code&gt; models may even run, barely, on GPUs with less VRAM, though speed and memory pressure will need to be rebalanced.&lt;/p&gt;
&lt;h2 id=&#34;05-the-cost-of-this-approach-much-higher-demands-on-ram-and-virtual-memory&#34;&gt;05 The cost of this approach: much higher demands on RAM and virtual memory
&lt;/h2&gt;&lt;p&gt;This kind of setup is not free performance.&lt;/p&gt;
&lt;p&gt;What you need to watch is that once VRAM pressure is compressed further, system RAM usage rises noticeably, and virtual memory pressure rises too. In other words, you are not removing the cost. You are shifting pressure from the GPU to RAM and disk swap space.&lt;/p&gt;
&lt;p&gt;So if you want to try it yourself, it is worth checking a few things first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether your system RAM is large enough&lt;/li&gt;
&lt;li&gt;whether your virtual memory allocation is large enough&lt;/li&gt;
&lt;li&gt;whether too many background applications are already consuming resources&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If those conditions are not in place, what you may get is not “35B running fast,” but an overall machine that becomes slow everywhere.&lt;/p&gt;
&lt;h2 id=&#34;06-more-aggressive-quantization-is-not-always-better&#34;&gt;06 More aggressive quantization is not always better
&lt;/h2&gt;&lt;p&gt;There is another practical tradeoff here. Lower-bit quantization often saves more VRAM, but that does not automatically make it the best choice.&lt;/p&gt;
&lt;p&gt;The practical takeaway is that some models do run faster under &lt;code&gt;Q4&lt;/code&gt;, but their original capability can also degrade more. By comparison, &lt;code&gt;Q6&lt;/code&gt; tends to strike a better balance between speed and capability retention. So the right choice depends on what you care about more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;maximum speed and fitting into VRAM&lt;/li&gt;
&lt;li&gt;or preserving more of the model’s original capability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those two priorities do not necessarily lead to the same quantization choice.&lt;/p&gt;
&lt;h2 id=&#34;07-what-kinds-of-models-are-worth-trying&#34;&gt;07 What kinds of models are worth trying
&lt;/h2&gt;&lt;p&gt;From this angle, the best thing to try is not “blindly chase bigger parameter counts,” but to first look for models that fit this strategy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;models built on &lt;code&gt;MoE&lt;/code&gt; architecture&lt;/li&gt;
&lt;li&gt;models that are well supported in &lt;code&gt;LM Studio&lt;/code&gt; and have complete quantized variants&lt;/li&gt;
&lt;li&gt;models with clear advantages in long context or instruction following&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And the idea does not stop at one 35B &lt;code&gt;MoE&lt;/code&gt; model. It also extends naturally to other directions, such as experimental models with stronger long-context memory, better instruction following, or lighter quantized versions with strong speed performance.&lt;/p&gt;
&lt;p&gt;The logic behind this is very consistent: first find models whose architecture fits the “trade memory for VRAM” strategy, and then talk about tuning. Do not start from parameter count alone and decide from there.&lt;/p&gt;
&lt;h2 id=&#34;08-short-conclusion&#34;&gt;08 Short conclusion
&lt;/h2&gt;&lt;p&gt;If you happen to have a 16GB GPU and assume local LLMs stop at 12B to 14B, that assumption is worth updating.&lt;/p&gt;
&lt;p&gt;A more accurate way to put it is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a 16GB GPU is not automatically ruled out for larger models&lt;/li&gt;
&lt;li&gt;dense models and &lt;code&gt;MoE&lt;/code&gt; models need to be considered separately&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPU Offload&lt;/code&gt; and expert-layer transfer to CPU memory inside &lt;code&gt;LM Studio&lt;/code&gt; can significantly change VRAM usage&lt;/li&gt;
&lt;li&gt;in practice, you are trading higher memory pressure for larger model scale and better usable speed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach will not fit every machine, but it does show one important thing: in local LLM deployment, VRAM is not the only limit. Model architecture and inference configuration matter just as much.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Code Multi-Agent Collaboration: How to Choose Between Subagents and Agent Teams</title>
        <link>https://knightli.com/en/2026/04/22/claude-code-subagents-vs-agent-teams/</link>
        <pubDate>Wed, 22 Apr 2026 21:35:52 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/22/claude-code-subagents-vs-agent-teams/</guid>
        <description>&lt;p&gt;When people talk about multi-agent collaboration in Claude Code, the easiest two concepts to mix up are &lt;code&gt;Subagents&lt;/code&gt; and &lt;code&gt;Agent Teams&lt;/code&gt;. They both sound like “spin up several agents to work together,” but they are meant for different kinds of work. In short, the former is better for splitting off independent tasks, while the latter is better when several agents need to collaborate around the same problem and cross-check each other over time.&lt;/p&gt;
&lt;p&gt;If you have used Skills before, this framing also helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Skill defines the workflow and rules&lt;/li&gt;
&lt;li&gt;A Subagent or Agent teammate does the actual execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the real question is not which one is “more advanced,” but what kind of collaboration problem you are solving.&lt;/p&gt;
&lt;h2 id=&#34;subagents-split-off-side-tasks&#34;&gt;Subagents: split off side tasks
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Subagents&lt;/code&gt; are closer to temporary worker copies launched from the current session. Each one gets its own context window, and when it finishes, it returns only a summary of the result. The main conversation stays cleaner because it does not have to absorb all the intermediate logs and output.&lt;/p&gt;
&lt;p&gt;That gives Subagents a few very practical strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The main thread stays clean instead of being flooded by test logs, search results, or long output&lt;/li&gt;
&lt;li&gt;Independent research or execution tasks can run in parallel&lt;/li&gt;
&lt;li&gt;They work well for tasks where “just bring me the result” is enough&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The original article notes that Claude Code comes with three built-in kinds of Subagents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Explore&lt;/code&gt;: read-only, useful for quickly searching a codebase&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Plan&lt;/code&gt;: read-only, useful for gathering information in the background during plan mode&lt;/li&gt;
&lt;li&gt;&lt;code&gt;General-purpose&lt;/code&gt;: can read and write, suitable for tasks that mix exploration and editing&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;custom-subagents&#34;&gt;Custom Subagents
&lt;/h3&gt;&lt;p&gt;If the built-in options are not enough, you can define your own Subagent. The mechanism is simple: write a Markdown file in one of these locations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.claude/agents/&lt;/code&gt;: only active in the current project&lt;/li&gt;
&lt;li&gt;&lt;code&gt;~/.claude/agents/&lt;/code&gt;: active across all your projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The file format looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;The key field here is &lt;code&gt;description&lt;/code&gt;. Claude uses it to decide when this Subagent should be called, so the more precise the description is, the more reliable the trigger tends to be.&lt;/p&gt;
&lt;p&gt;A few other common configuration fields are also worth knowing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tools&lt;/code&gt;: limits which tools the Subagent can use&lt;/li&gt;
&lt;li&gt;&lt;code&gt;model&lt;/code&gt;: chooses between &lt;code&gt;sonnet&lt;/code&gt;, &lt;code&gt;opus&lt;/code&gt;, &lt;code&gt;haiku&lt;/code&gt;, or &lt;code&gt;inherit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;permissionMode&lt;/code&gt;: controls edit permissions and permission prompt behavior&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memory&lt;/code&gt;: gives the Subagent a cross-conversation memory directory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only need a Subagent temporarily, you can also define it through the 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;when-subagents-fit-best&#34;&gt;When Subagents fit best
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Subagents&lt;/code&gt; are usually the best fit for tasks like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Running tests and returning only the failure summary instead of flooding the main thread with thousands of log lines&lt;/li&gt;
&lt;li&gt;Investigating several unrelated modules in parallel&lt;/li&gt;
&lt;li&gt;Splitting “find the issue” and “fix the issue” into a simple pipeline&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;But if a task needs constant back-and-forth adjustments, shares a lot of context across stages, or concentrates changes in only one or two files, handling it directly in the main conversation is often simpler than spinning up a Subagent.&lt;/p&gt;
&lt;h2 id=&#34;agent-teams-multiple-independent-sessions-working-together&#34;&gt;Agent Teams: multiple independent sessions working together
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; operate at a different level. Instead of launching worker copies inside one session, they start multiple fully independent Claude Code instances that collaborate around a shared task list and can also message one another directly.&lt;/p&gt;
&lt;p&gt;That makes an Agent Team feel more like a real small team than a simple side-task worker setup.&lt;/p&gt;
&lt;p&gt;The article notes that this is currently an experimental feature and needs to be enabled first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Once this is added to &lt;code&gt;settings.json&lt;/code&gt;, you can ask Claude to organize a team around a specific goal. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;what-an-agent-team-consists-of&#34;&gt;What an Agent Team consists of
&lt;/h3&gt;&lt;p&gt;An Agent Team mainly includes three parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Team lead: the main session you are using, responsible for organizing, assigning, and summarizing&lt;/li&gt;
&lt;li&gt;Teammates: multiple independent Claude Code instances&lt;/li&gt;
&lt;li&gt;Task list and Mailbox: the shared task list and communication channel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The biggest difference from &lt;code&gt;Subagents&lt;/code&gt; is that teammates can communicate directly with one another instead of routing everything through the lead. Tasks usually move through states such as &lt;code&gt;pending&lt;/code&gt;, &lt;code&gt;in progress&lt;/code&gt;, and &lt;code&gt;completed&lt;/code&gt;, and once a teammate finishes one task, it can pick up the next one.&lt;/p&gt;
&lt;h3 id=&#34;when-agent-teams-fit-best&#34;&gt;When Agent Teams fit best
&lt;/h3&gt;&lt;p&gt;When a task needs several perspectives, active discussion, conflicting hypotheses, or parallel work across modules, &lt;code&gt;Agent Teams&lt;/code&gt; are a better fit.&lt;/p&gt;
&lt;p&gt;The article gives several representative examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Several reviewers inspect the same PR in parallel, each focusing on a different dimension&lt;/li&gt;
&lt;li&gt;Multiple agents investigate the same bug with competing explanations and challenge each other’s conclusions&lt;/li&gt;
&lt;li&gt;Frontend, backend, and testing move forward in parallel on different parts of the project&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, parallel code review:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;And for debate-style debugging:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The common pattern here is that you do not just want one answer. You want several agents to exchange judgments, challenge assumptions, and gradually converge on a stronger conclusion.&lt;/p&gt;
&lt;h2 id=&#34;how-to-choose-between-them&#34;&gt;How to choose between them
&lt;/h2&gt;&lt;p&gt;If you want a quick rule of thumb, use this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you just need the result, use &lt;code&gt;Subagents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If the work requires discussion and cross-validation, use &lt;code&gt;Agent Teams&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Expanded a bit further, the main differences are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Communication style: &lt;code&gt;Subagents&lt;/code&gt; mainly report results back to the main session, while &lt;code&gt;Agent Teams&lt;/code&gt; members can talk directly to one another&lt;/li&gt;
&lt;li&gt;Coordination model: &lt;code&gt;Subagents&lt;/code&gt; depend more on the main conversation to orchestrate them, while &lt;code&gt;Agent Teams&lt;/code&gt; work from a shared task list that members can claim themselves&lt;/li&gt;
&lt;li&gt;Token cost: &lt;code&gt;Subagents&lt;/code&gt; are cheaper, while &lt;code&gt;Agent Teams&lt;/code&gt; cost more because each teammate is an independent instance&lt;/li&gt;
&lt;li&gt;Best-fit tasks: &lt;code&gt;Subagents&lt;/code&gt; are better for independent, result-oriented work, while &lt;code&gt;Agent Teams&lt;/code&gt; are better for discussion-heavy and cross-check-heavy work&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;practical-cautions&#34;&gt;Practical cautions
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Agent Teams&lt;/code&gt; are more powerful, but that does not mean every task deserves a full team. The article specifically calls out a few practical concerns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;token usage is noticeably higher&lt;/li&gt;
&lt;li&gt;if multiple teammates edit the same file at once, overwrite conflicts become very likely&lt;/li&gt;
&lt;li&gt;adding too many teammates increases coordination cost without guaranteeing better results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A safer default is usually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start with 3 to 5 teammates&lt;/li&gt;
&lt;li&gt;split tasks by module or file to avoid edit conflicts&lt;/li&gt;
&lt;li&gt;if the lead starts doing teammate work too early, explicitly tell it to wait for the others first&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The current experimental version also has a few limitations, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no support for &lt;code&gt;/resume&lt;/code&gt; and &lt;code&gt;/rewind&lt;/code&gt; for in-process teammates&lt;/li&gt;
&lt;li&gt;task status can lag and sometimes needs manual correction&lt;/li&gt;
&lt;li&gt;one lead can manage only one team at a time&lt;/li&gt;
&lt;li&gt;teammates cannot spawn child teams of their own&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;short-conclusion&#34;&gt;Short conclusion
&lt;/h2&gt;&lt;p&gt;These two features are not substitutes for one another. They solve two different collaboration problems.&lt;/p&gt;
&lt;p&gt;If your goal is “parallelize side tasks and keep the main context clean,” start with &lt;code&gt;Subagents&lt;/code&gt;. If your goal is “let several agents work like a small team, discuss, and cross-check each other,” then &lt;code&gt;Agent Teams&lt;/code&gt; are the better tool.&lt;/p&gt;
&lt;p&gt;Trying both in a real task usually makes the distinction obvious very quickly: one is optimized for context isolation and result collection, and the other is optimized for multi-perspective collaboration and ongoing interaction.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Original article: &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 Officially Launches: From Generating Images to Commercial Use</title>
        <link>https://knightli.com/en/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/en/2026/04/22/gpt-image-2-from-generation-to-commercial-use/</guid>
        <description>&lt;p&gt;OpenAI&amp;rsquo;s next-generation image model, &lt;code&gt;GPT Image 2&lt;/code&gt;, has officially rolled out to ChatGPT users. Based on community feedback from the leaked testing phase and the public examples now visible, this release feels less like a routine model update and more like a meaningful step in AI image generation moving from &amp;ldquo;looks usable&amp;rdquo; to &amp;ldquo;is usable.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;If earlier image models were still mainly for inspiration boards, concept art, and playful experimentation, the most notable thing about &lt;code&gt;GPT Image 2&lt;/code&gt; is that it is starting to feel closer to a production-grade tool. Whether the task is readable text, UI screenshots, marketing posters, or more realistic commercial-photography-style images, it feels much closer than before to something you can actually use directly.&lt;/p&gt;
&lt;h2 id=&#34;1-core-upgrades-five-things-most-worth-watching&#34;&gt;1. Core upgrades: five things most worth watching
&lt;/h2&gt;&lt;h3 id=&#34;1-text-rendering-has-finally-entered-a-usable-range&#34;&gt;1. Text rendering has finally entered a usable range
&lt;/h3&gt;&lt;p&gt;For AI image generation, text has always been one of the hardest problems. Garbled characters, spelling mistakes, broken long passages, and distorted type have been common across nearly every model.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; shows a very visible improvement here. It can handle clearer English and Chinese text, but it can also deal with more complex layout, longer paragraphs, and a certain amount of multilingual composition. That means many scenarios that previously required manual retouching can now be completed directly at generation time.&lt;/p&gt;
&lt;p&gt;Typical use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;posters&lt;/li&gt;
&lt;li&gt;social media covers&lt;/li&gt;
&lt;li&gt;promotional pages with headlines and explanatory text&lt;/li&gt;
&lt;li&gt;PPT visuals&lt;/li&gt;
&lt;li&gt;App screenshots with real copy and interface elements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For real workflows, this is a major step. Once text becomes stably readable, image generation stops being just &amp;ldquo;make me a background image&amp;rdquo; and starts becoming capable of handling marketing assets and product visuals.&lt;/p&gt;
&lt;h3 id=&#34;2-photorealism-is-noticeably-better&#34;&gt;2. Photorealism is noticeably better
&lt;/h3&gt;&lt;p&gt;Looking at community side-by-side comparisons, &lt;code&gt;GPT Image 2&lt;/code&gt; appears sharper overall, with finer material textures and more consistent lighting. Faces, hands, and edge details, which used to expose AI artifacts most easily, now look much more stable.&lt;/p&gt;
&lt;p&gt;More precisely, this does not mean flaws are gone. It means the obvious &amp;ldquo;AI look&amp;rdquo; has dropped significantly. Many images now look convincing enough at first glance to be mistaken for real photos, commercial photography samples, or game screenshots.&lt;/p&gt;
&lt;p&gt;That is why many people&amp;rsquo;s first reaction is no longer &amp;ldquo;this is drawn well,&amp;rdquo; but &amp;ldquo;this already looks real.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;3-stronger-integration-of-world-knowledge&#34;&gt;3. Stronger integration of world knowledge
&lt;/h3&gt;&lt;p&gt;This upgrade is less eye-catching, but very practical.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GPT Image 2&lt;/code&gt; feels less like a system that simply assembles visual fragments and styles, and more like a system that understands what it is depicting. A few examples mentioned in the source article are representative:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;watch dials show more logically consistent times&lt;/li&gt;
&lt;li&gt;brand details and character traits are reproduced more accurately&lt;/li&gt;
&lt;li&gt;Minecraft-style game screenshots or software interfaces follow more believable structural logic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means when it handles real-world objects, digital interfaces, or game scenes that depend on common sense and structural coherence, the success rate is higher. For users, that kind of improvement is often more valuable than a simple resolution bump.&lt;/p&gt;
&lt;h3 id=&#34;4-ui-and-screenshot-generation-are-very-strong&#34;&gt;4. UI and screenshot generation are very strong
&lt;/h3&gt;&lt;p&gt;From the leak period to the official release, one of the most talked-about directions for &lt;code&gt;GPT Image 2&lt;/code&gt; has been generating software interfaces, web screenshots, and App mockups.&lt;/p&gt;
&lt;p&gt;These tasks used to be difficult because they require all of the following at once:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;clear text&lt;/li&gt;
&lt;li&gt;orderly layout&lt;/li&gt;
&lt;li&gt;alignment across buttons, cards, navigation bars, and similar elements&lt;/li&gt;
&lt;li&gt;color and hierarchy that feel like a real product&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This time, the model&amp;rsquo;s performance in those areas already looks fairly mature. For product managers, indie developers, and designers, that means faster creation of high-fidelity mockups for proposals, demos, and even user testing.&lt;/p&gt;
&lt;h3 id=&#34;5-local-editing-is-closer-to-a-real-workflow&#34;&gt;5. Local editing is closer to a real workflow
&lt;/h3&gt;&lt;p&gt;Based on the source article, &lt;code&gt;GPT Image 2&lt;/code&gt; supports more precise localized editing, meaning it can modify a specific area of an image instead of forcing a full redraw every time.&lt;/p&gt;
&lt;p&gt;That matters a lot for creative workflows. In real design work, the task is often not &amp;ldquo;redo the whole image&amp;rdquo; but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;change one button&lt;/li&gt;
&lt;li&gt;replace one block of text&lt;/li&gt;
&lt;li&gt;move one object&lt;/li&gt;
&lt;li&gt;fix part of the background&lt;/li&gt;
&lt;li&gt;swap a local element&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If localized editing becomes stable enough, the value of AI image generation is no longer limited to the first draft. It can start participating in real iterative work.&lt;/p&gt;
&lt;h2 id=&#34;2-how-to-use-gpt-image-2&#34;&gt;2. How to use GPT Image 2
&lt;/h2&gt;&lt;h3 id=&#34;use-it-in-chatgpt&#34;&gt;Use it in ChatGPT
&lt;/h3&gt;&lt;p&gt;At the moment, &lt;code&gt;GPT Image 2&lt;/code&gt; is already integrated into ChatGPT, so regular users can access it directly through the image-generation feature.&lt;/p&gt;
&lt;p&gt;A typical workflow looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open ChatGPT on the web or in the app&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;+&lt;/code&gt; in the input box&lt;/li&gt;
&lt;li&gt;Choose &amp;ldquo;Create image&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Enter your prompt and submit&lt;/li&gt;
&lt;li&gt;The system calls &lt;code&gt;GPT Image 2&lt;/code&gt; and returns the result&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The source article also notes that different subscription tiers have different quotas, so free users and &lt;code&gt;Plus&lt;/code&gt; / &lt;code&gt;Pro&lt;/code&gt; users may have different generation limits. The exact quota rules should be checked against whatever ChatGPT shows in-product at that time, since those limits may change later.&lt;/p&gt;
&lt;h3 id=&#34;use-it-through-the-api&#34;&gt;Use it through the API
&lt;/h3&gt;&lt;p&gt;For developers, the image model can also be accessed through the OpenAI API. The source article refers to the model name as &lt;code&gt;gpt-image-2&lt;/code&gt;, but in real integrations it is still best to follow the latest official documentation for the current model name and parameters.&lt;/p&gt;
&lt;p&gt;The article lists several common resolutions:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Resolution&lt;/th&gt;
          &lt;th&gt;Typical use case&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;General square images, avatars, social media graphics&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;Landscape covers, slides, widescreen wallpapers&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;Vertical posters, phone wallpapers, story illustrations&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;High-resolution print, large-format display, detailed illustration&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;3-several-representative-use-cases&#34;&gt;3. Several representative use cases
&lt;/h2&gt;&lt;p&gt;The source article mentions many examples. Here are the most representative categories.&lt;/p&gt;
&lt;h3 id=&#34;1-app-interface-screenshots&#34;&gt;1. App interface screenshots
&lt;/h3&gt;&lt;p&gt;This kind of prompt is especially suitable for product prototypes, design demos, and requirement discussions.&lt;/p&gt;
&lt;p&gt;Typical characteristics include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;specifying a platform style such as iOS&lt;/li&gt;
&lt;li&gt;clearly describing the page structure&lt;/li&gt;
&lt;li&gt;listing the core data cards&lt;/li&gt;
&lt;li&gt;defining the bottom navigation&lt;/li&gt;
&lt;li&gt;explaining the color scheme and typography style&lt;/li&gt;
&lt;li&gt;emphasizing that text must be clear and elements must align&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The point of writing prompts this way is not simply to make the image attractive. It is to reduce the model&amp;rsquo;s room for improvisation and make the output look more like a real interface.&lt;/p&gt;
&lt;h3 id=&#34;2-e-commerce-product-images&#34;&gt;2. E-commerce product images
&lt;/h3&gt;&lt;p&gt;Images for products such as perfume, earphones, watches, and cosmetics are a strong fit for &lt;code&gt;GPT Image 2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is because it is now more stable at handling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the material feel of glass, metal, and liquids&lt;/li&gt;
&lt;li&gt;soft shadows and reflections&lt;/li&gt;
&lt;li&gt;the lighting logic common in commercial photography&lt;/li&gt;
&lt;li&gt;a premium presentation against a clean background&lt;/li&gt;
&lt;li&gt;small amounts of brand text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the output is stable, many e-commerce detail images, hero images for marketing pages, and product visuals for social media can be produced with much lower trial-and-error cost.&lt;/p&gt;
&lt;h3 id=&#34;3-text-heavy-posters&#34;&gt;3. Text-heavy posters
&lt;/h3&gt;&lt;p&gt;Posters are one of the clearest scenarios for showing off this generation&amp;rsquo;s text capabilities.&lt;/p&gt;
&lt;p&gt;The source article gives a typical direction: place a clear main headline, time and location, and artist list over a dusk city silhouette background, while requiring:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;crisp readable text&lt;/li&gt;
&lt;li&gt;no spelling mistakes&lt;/li&gt;
&lt;li&gt;stable Chinese-English mixed layout&lt;/li&gt;
&lt;li&gt;a unified style&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tasks like this used to require generating the background first and then manually adding text. If the model can now complete most of that work in one pass, its practical value rises substantially.&lt;/p&gt;
&lt;h3 id=&#34;4-game-concept-art-and-fake-screenshots&#34;&gt;4. Game concept art and &amp;ldquo;fake screenshots&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;This is one of the types of content most likely to spread on social media when made with &lt;code&gt;GPT Image 2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For example, third-person game screenshots, neon-lit streets, reflections in rainwater, depth of field, film grain, and a PS5 gameplay look can be combined into prompts that produce images people may mistake at first glance for leaked game footage.&lt;/p&gt;
&lt;p&gt;From a distribution perspective, these images are highly attention-grabbing. From a risk perspective, they also show that the threshold for convincing fake imagery has dropped noticeably, so users need to be more cautious when judging whether an image is real.&lt;/p&gt;
&lt;h3 id=&#34;5-realistic-portraits-and-creative-character-shots&#34;&gt;5. Realistic portraits and creative character shots
&lt;/h3&gt;&lt;p&gt;Portraits have always been one of the most direct tests of AI image capability.&lt;/p&gt;
&lt;p&gt;The examples in the source article focus on combinations such as natural light, cafes, rim lighting, knitwear, and warm blurred backgrounds. The real point behind those examples is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;natural skin texture&lt;/li&gt;
&lt;li&gt;complete hair detail&lt;/li&gt;
&lt;li&gt;hands that do not collapse structurally&lt;/li&gt;
&lt;li&gt;believable lighting logic&lt;/li&gt;
&lt;li&gt;an overall atmosphere without obvious AI artifacts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Only when those points can be handled consistently does portrait generation truly enter a usable stage.&lt;/p&gt;
&lt;h3 id=&#34;6-food-photography&#34;&gt;6. Food photography
&lt;/h3&gt;&lt;p&gt;The source article also includes a very long English prompt for generating a tonkotsu ramen photo in a high-end restaurant style. That example shows a very practical trend: once a model becomes strong enough, prompts can start to read like photography scripts.&lt;/p&gt;
&lt;p&gt;This style of prompt can get specific about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dish composition&lt;/li&gt;
&lt;li&gt;tableware material&lt;/li&gt;
&lt;li&gt;broth sheen&lt;/li&gt;
&lt;li&gt;the fat layers and charred edges of chashu&lt;/li&gt;
&lt;li&gt;the state of the soft-boiled egg&lt;/li&gt;
&lt;li&gt;depth of field and bokeh in the background&lt;/li&gt;
&lt;li&gt;light direction&lt;/li&gt;
&lt;li&gt;lens type and aperture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For restaurant brands, menu design, delivery-platform hero images, and social media content, that kind of generation is already getting very close to a substitute for commercial food photography.&lt;/p&gt;
&lt;h3 id=&#34;7-educational-illustrations&#34;&gt;7. Educational illustrations
&lt;/h3&gt;&lt;p&gt;Another representative direction is scientific and educational diagrams with labels.&lt;/p&gt;
&lt;p&gt;The source article uses a plant cell cross-section as an example and asks the model to handle all of the following at once:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;correct structure&lt;/li&gt;
&lt;li&gt;accurate label placement&lt;/li&gt;
&lt;li&gt;clear guide lines&lt;/li&gt;
&lt;li&gt;consistent typography&lt;/li&gt;
&lt;li&gt;layered color usage&lt;/li&gt;
&lt;li&gt;an overall style suitable for textbooks or teaching slides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This shows that the value of &lt;code&gt;GPT Image 2&lt;/code&gt; is not only in producing &amp;ldquo;good-looking&amp;rdquo; images, but also in producing informational visuals.&lt;/p&gt;
&lt;h2 id=&#34;4-what-this-means-most-practically-for-ordinary-users&#34;&gt;4. What this means most practically for ordinary users
&lt;/h2&gt;&lt;p&gt;What makes &lt;code&gt;GPT Image 2&lt;/code&gt; worth paying attention to is not just that it pushes image quality forward again. More importantly, it moves AI image generation further away from entertainment and experimentation and closer to a tool that can be used commercially and delivered as real work.&lt;/p&gt;
&lt;p&gt;That shows up in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;text is finally becoming dependable&lt;/li&gt;
&lt;li&gt;interfaces and posters look more like real materials&lt;/li&gt;
&lt;li&gt;commercial-photography-style images are more usable&lt;/li&gt;
&lt;li&gt;educational and informational graphics are now possible too&lt;/li&gt;
&lt;li&gt;localized editing makes iteration more realistic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course, that does not mean it fully replaces designers, photographers, or illustrators. Real commercial projects still require aesthetic judgment, brand control, copyright awareness, and human review.&lt;/p&gt;
&lt;p&gt;But at minimum, this update makes one thing clear: the competition in AI image generation is no longer just about whether a model can produce an image at all. It is about whether that model can enter real workflows more reliably.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Reference link mentioned in the source article: &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;Demo site mentioned in the source article: &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;Invite link mentioned in the source article: &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: Turning &#34;distilling a person&#34; from an idea into an executable workflow</title>
        <link>https://knightli.com/en/2026/04/22/nuwa-skill-distill-how-someone-thinks/</link>
        <pubDate>Wed, 22 Apr 2026 16:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/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; can easily make people think of one thing first: using AI to answer in a famous person&amp;rsquo;s voice. But what makes it genuinely interesting is not whether it sounds convincing. The key is that it tries to turn &amp;ldquo;distilling how a person thinks&amp;rdquo; into a repeatable workflow.&lt;/p&gt;
&lt;p&gt;If that works, the value goes far beyond a few entertaining character prompts. It means taking someone&amp;rsquo;s judgment framework, priorities, common heuristics, and communication habits, and turning them into a skill that can be called again and again. What you want is not a sentence that sounds like something a person might say, but something closer to a working interface for &amp;ldquo;if this person analyzed the issue, what would they look at first, how would they trade things off, and what would they question?&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;it-solves-modeling-not-imitation&#34;&gt;It solves modeling, not imitation
&lt;/h2&gt;&lt;p&gt;Many so-called persona prompts are basically just style overlays.&lt;/p&gt;
&lt;p&gt;They usually ask the model to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;speak in someone&amp;rsquo;s tone&lt;/li&gt;
&lt;li&gt;quote their signature lines more often&lt;/li&gt;
&lt;li&gt;imitate the phrasing they use in public&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That looks great in demos, but it often falls apart in real work. The reason is simple: tone is surface-level, while judgment structure is the core. A person is memorable not because they like a few certain words, but because they reliably approach problems in certain ways.&lt;/p&gt;
&lt;p&gt;The direction of &lt;code&gt;nuwa-skill&lt;/code&gt; is closer to extracting those stable methods. In other words, it cares less about &amp;ldquo;how to sound like them&amp;rdquo; and more about &amp;ldquo;how to think like them.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;a-more-complete-workflow&#34;&gt;A more complete workflow
&lt;/h2&gt;&lt;p&gt;From the repository description, &lt;code&gt;nuwa-skill&lt;/code&gt; aims to build an end-to-end flow: enter a person&amp;rsquo;s name, then automatically do the research, extraction, and validation, and finally organize the result into a skill that can be used inside Claude Code.&lt;/p&gt;
&lt;p&gt;There are several important shifts behind that idea.&lt;/p&gt;
&lt;p&gt;First, it assumes the person being distilled does not have to be your coworker. Many people first encounter this kind of idea in the form of &amp;ldquo;capture how a strong teammate works.&amp;rdquo; That is valuable, but it is also limited: the sample pool is small, and it usually only covers internal team experience. &lt;code&gt;nuwa-skill&lt;/code&gt; expands the target set to a much broader range of people, such as founders, investors, scientists, product managers, and writers.&lt;/p&gt;
&lt;p&gt;Second, it emphasizes automation rather than asking the user to handcraft prompts. What really makes this kind of capability practical is not beautiful prompt wording, but whether you can consistently do source gathering, viewpoint synthesis, pattern extraction, and result validation. As soon as any one of those steps depends entirely on manual work, the reuse cost rises quickly.&lt;/p&gt;
&lt;p&gt;Third, it tries to make the output a skill rather than a one-off conversation. The former can be reused, combined, and iterated on. The latter usually only works in the current context and falls apart after a few turns.&lt;/p&gt;
&lt;h2 id=&#34;why-this-direction-matters&#34;&gt;Why this direction matters
&lt;/h2&gt;&lt;p&gt;If you treat AI as a question-answering machine, the natural use case is &amp;ldquo;give me an answer.&amp;rdquo; But if you treat AI as a workbench, the question becomes &amp;ldquo;give me a way to look at this problem.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;That is where the value of &lt;code&gt;nuwa-skill&lt;/code&gt; leans.&lt;/p&gt;
&lt;p&gt;For example, when facing a product decision, what you want may not be one standard answer. You may want several sharply different analytical frames:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one person starts with long-term compounding&lt;/li&gt;
&lt;li&gt;one starts with resource constraints&lt;/li&gt;
&lt;li&gt;one starts with consistency of user experience&lt;/li&gt;
&lt;li&gt;one starts with timing of market entry&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If those frames can be packaged reliably, AI stops being &amp;ldquo;something that writes a paragraph for you&amp;rdquo; and becomes &amp;ldquo;something that helps you switch perspectives quickly.&amp;rdquo; That is much more useful than simply imitating famous quotes, because it directly affects decision quality.&lt;/p&gt;
&lt;h2 id=&#34;its-most-compelling-part-turning-tacit-knowledge-into-callable-assets&#34;&gt;Its most compelling part: turning tacit knowledge into callable assets
&lt;/h2&gt;&lt;p&gt;Many high-value capabilities are hard to write down as SOPs in the first place.&lt;/p&gt;
&lt;p&gt;Why someone consistently judges better than others is often not because they know more explicit rules, but because they have built a tacit filtering system through years of practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;which signals deserve attention first&lt;/li&gt;
&lt;li&gt;which noise should be ignored immediately&lt;/li&gt;
&lt;li&gt;which questions should be broken apart&lt;/li&gt;
&lt;li&gt;which questions should be inverted&lt;/li&gt;
&lt;li&gt;which conclusions must wait for more evidence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This kind of ability is hard to preserve because people cannot always explain it clearly themselves. That is exactly why structured extraction is so valuable. What makes &lt;code&gt;nuwa-skill&lt;/code&gt; appealing is that it is not trying to move around surface knowledge. It is trying to reorganize cognitive habits.&lt;/p&gt;
&lt;h2 id=&#34;where-it-fits-best&#34;&gt;Where it fits best
&lt;/h2&gt;&lt;p&gt;I think this kind of skill is especially useful in a few scenarios.&lt;/p&gt;
&lt;h3 id=&#34;1-multi-perspective-review-before-a-decision&#34;&gt;1. Multi-perspective review before a decision
&lt;/h3&gt;&lt;p&gt;If you already have a plan but worry that you are only thinking along the path you already know, switching into different &amp;ldquo;persona perspectives&amp;rdquo; to review the same issue is more valuable than asking the model to keep expanding your original wording.&lt;/p&gt;
&lt;h3 id=&#34;2-learning-the-judgment-framework-of-a-certain-kind-of-expert&#34;&gt;2. Learning the judgment framework of a certain kind of expert
&lt;/h3&gt;&lt;p&gt;Many people learn from experts by collecting quotes, watching interviews, and copying summaries. In the end, they often only remember a few nice lines. Once a thinking pattern becomes a skill, learning becomes much closer to &amp;ldquo;repeatedly invoking it with real questions&amp;rdquo; rather than &amp;ldquo;making a pile of static notes.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;3-sharing-an-analytical-style-across-a-team&#34;&gt;3. Sharing an analytical style across a team
&lt;/h3&gt;&lt;p&gt;What teams truly lack is often not just documentation, but a shared answer to &amp;ldquo;how do we usually think when we hit a problem?&amp;rdquo; If this workflow matures further, it could also be used in reverse to preserve the methods of strong internal operators. It is just clear that the project does not want to limit the idea to internal use cases.&lt;/p&gt;
&lt;h2 id=&#34;the-hard-part-of-projects-like-this&#34;&gt;The hard part of projects like this
&lt;/h2&gt;&lt;p&gt;Of course, an attractive direction does not mean the hard problems are already solved.&lt;/p&gt;
&lt;p&gt;The real challenge is never simply installing a skill. It is things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether the sources are reliable enough&lt;/li&gt;
&lt;li&gt;whether the extracted patterns are stable rather than illusions from scattered text&lt;/li&gt;
&lt;li&gt;whether the model is actually using a person&amp;rsquo;s framework or merely repeating common impressions&lt;/li&gt;
&lt;li&gt;whether the boundaries between different personas will blur inside the model&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, the key question is not &amp;ldquo;can it generate something that sounds plausible?&amp;rdquo; It is &amp;ldquo;can the cognitive framework produced by this skill survive reuse across many tasks?&amp;rdquo; If the project keeps going deeper on validation, its credibility will improve a lot.&lt;/p&gt;
&lt;h2 id=&#34;why-it-goes-beyond-a-prompt-template-library&#34;&gt;Why it goes beyond a prompt template library
&lt;/h2&gt;&lt;p&gt;In the past, many projects handled this kind of capability as a prompt template library: one persona, one prompt, and the user copies it into a chat. The problem is that a template library is still basically a static asset. It updates slowly, validation is weak, and it is hard to turn it into a complete production workflow.&lt;/p&gt;
&lt;p&gt;What &lt;code&gt;nuwa-skill&lt;/code&gt; pushes further is that it turns &amp;ldquo;persona distillation&amp;rdquo; from a template problem into a workflow problem.&lt;/p&gt;
&lt;p&gt;Once the center of gravity shifts from &amp;ldquo;write a prompt&amp;rdquo; to &amp;ldquo;systematically generate, validate, and iterate on a persona skill,&amp;rdquo; the whole thing starts to look more like engineering than inspiration. For anyone who wants to use it over the long term, that is the more important shift.&lt;/p&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nuwa-skill&lt;/code&gt; is interesting not because it turns AI into a celebrity impression show, but because it pushes &amp;ldquo;how to learn how someone thinks&amp;rdquo; one step closer to something executable, reusable, and iterable.&lt;/p&gt;
&lt;p&gt;If many persona prompts solve &amp;ldquo;how to talk like someone,&amp;rdquo; what this project wants to solve is &amp;ldquo;how to look at problems the way someone does.&amp;rdquo; The former is great for demos. The latter is much closer to a real productivity tool.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub repository: &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;Project README: &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 definition: &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 Introduces ChatGPT Images 2.0: Image Generation Starts Moving Toward Deliverable Output</title>
        <link>https://knightli.com/en/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/en/2026/04/22/openai-chatgpt-images-2-0-deliverable-image-generation/</guid>
        <description>&lt;p&gt;OpenAI published &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; on April 21, 2026. Judging from the announcement page, the main point is not simply that the images look better. The bigger message is that image generation is moving toward something more controllable, more layout-aware, and more directly usable.&lt;/p&gt;
&lt;p&gt;If you look only at this launch page, it reads more like a dense capability showcase than a traditional technical announcement. There is very little about model architecture, training details, or benchmarks. Instead, OpenAI uses a large set of examples to answer a more practical question: can ChatGPT now handle more of the work that previously required repeated manual fixes for text, layout, and final polish?&lt;/p&gt;
&lt;h2 id=&#34;01-the-clearest-signals-in-this-release&#34;&gt;01 The clearest signals in this release
&lt;/h2&gt;&lt;p&gt;The most prominent phrases on the page already summarize the focus:&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;Taken together, those three ideas say a lot.&lt;/p&gt;
&lt;p&gt;First, the emphasis is shifting away from imagination alone and toward control. The page includes many examples such as posters, magazine spreads, promo pages, infographics, character sheets, comic pages, and print-ready bookmark designs. What these examples share is not just visual appeal. They require text handling, hierarchy, whitespace, composition, stylistic consistency, and format control at the same time. That suggests OpenAI is intentionally pushing the product from &amp;ldquo;generate an image&amp;rdquo; toward &amp;ldquo;generate a visual asset people can actually use.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Second, multilingual text rendering is being treated as a headline feature. The page includes multilingual posters, book covers, a Korean hospitality campaign, Japanese manga, and several typography-focused examples. That matters because one of the most persistent weak points in image models has been long text, complex layouts, and non-English scripts. OpenAI putting this front and center is itself a signal: text rendering and cross-language layout are now capabilities it believes are worth showcasing directly.&lt;/p&gt;
&lt;p&gt;Third, the stylistic range is very broad. The examples span photorealistic images, retro collage posters, Bauhaus-inspired graphics, fashion editorials, black-and-white documentary styles, children&amp;rsquo;s-book illustrations, manga, educational infographics, product grids, and character reference sheets. The message is not only that the model can imitate many visual styles. It is that the system is trying to adapt to a wider set of real visual tasks.&lt;/p&gt;
&lt;h2 id=&#34;02-why-this-looks-like-a-move-toward-deliverable-output&#34;&gt;02 Why this looks like a move toward deliverable output
&lt;/h2&gt;&lt;p&gt;From the announcement itself, ChatGPT Images 2.0 looks less like a stronger text-to-image model and more like an upgraded visual production tool.&lt;/p&gt;
&lt;p&gt;Earlier models could produce impressive pictures, but the experience often broke down when the task changed into things like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;creating a poster with a full headline, subtitle, and supporting copy&lt;/li&gt;
&lt;li&gt;building a magazine or promo page with dense information&lt;/li&gt;
&lt;li&gt;generating a comic page with continuity across characters and panels&lt;/li&gt;
&lt;li&gt;producing marketing assets with fixed aspect ratios, clear layout constraints, and brand tone&lt;/li&gt;
&lt;li&gt;creating polished visual content that includes multilingual text&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This release seems designed to answer those older limitations directly.&lt;/p&gt;
&lt;p&gt;The page includes educational infographics, design-trend posters, print-ready bookmark layouts, a cafe launch poster, tourism promo material, product-merch mockups, and a redesigned academic poster. These are not just images that look nice at a glance. They are much closer to semi-finished or even finished outputs from real creative workflows.&lt;/p&gt;
&lt;p&gt;In that sense, the most important change here may not be a simple increase in image quality. It may be that the model is starting to look more like a system for content production, brand materials, education, and lightweight design work.&lt;/p&gt;
&lt;h2 id=&#34;03-what-this-means-for-chatgpts-product-direction&#34;&gt;03 What this means for ChatGPT&amp;rsquo;s product direction
&lt;/h2&gt;&lt;p&gt;The structure of the announcement also hints at a broader product shift.&lt;/p&gt;
&lt;p&gt;OpenAI does not present ChatGPT Images 2.0 as a niche tool only for artists or visual creators. Instead, it repeatedly frames the feature through research, reasoning, source transformation, layout organization, knowledge communication, and marketing output. The page even includes examples built around math proofs, design trends, historical notes, and academic papers.&lt;/p&gt;
&lt;p&gt;That suggests image generation inside ChatGPT is no longer just about adding a picture to a chat or generating a single illustration. It is moving closer to being a general-purpose expression layer. The goal seems to be this: once a user has already researched, thought through, organized, and written something in ChatGPT, the system should also be able to handle the final visual output.&lt;/p&gt;
&lt;p&gt;If that direction continues, competition in image generation will rely less on pure aesthetics or realism alone and more on capabilities like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;whether the system can reliably handle complex text&lt;/li&gt;
&lt;li&gt;whether it can preserve consistency across pages or panels&lt;/li&gt;
&lt;li&gt;whether it can produce layouts closer to real working materials&lt;/li&gt;
&lt;li&gt;whether it can connect naturally to research, writing, marketing, and teaching workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;04-what-the-announcement-does-not-say&#34;&gt;04 What the announcement does not say
&lt;/h2&gt;&lt;p&gt;At the same time, the format of the page also makes its limits clear.&lt;/p&gt;
&lt;p&gt;As of the official page published on April 21, 2026, the announcement focuses much more on outputs than on methods. It does not go into detail about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;quantified improvements over the previous generation&lt;/li&gt;
&lt;li&gt;explicit metrics for text accuracy or multilingual rendering&lt;/li&gt;
&lt;li&gt;failure boundaries for complex layout tasks&lt;/li&gt;
&lt;li&gt;API details, pricing, access modes, or enterprise integration specifics&lt;/li&gt;
&lt;li&gt;concrete changes to safety policies or generation limits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the page is best read as a product signal rather than a full technical specification.&lt;/p&gt;
&lt;h2 id=&#34;05-short-conclusion&#34;&gt;05 Short conclusion
&lt;/h2&gt;&lt;p&gt;If I had to summarize ChatGPT Images 2.0 in one sentence, the key upgrade is not that it &amp;ldquo;draws better,&amp;rdquo; but that it is becoming better at producing finished work.&lt;/p&gt;
&lt;p&gt;OpenAI clearly wants image generation to evolve from an inspiration tool into a production tool that is more executable, more layout-aware, more communicative, and more directly usable. Text control, multilingual output, layout structure, stylistic range, and long-form visual organization used to be places where image models often showed their weaknesses. In this release, those same areas are being presented as selling points.&lt;/p&gt;
&lt;p&gt;That does not mean image generation has solved every design problem. But this announcement does suggest a shift in what matters. The next competitive edge may not come from who can generate the most striking single image. It may come from who can most reliably generate visual content that is actually ready to use.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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&#39;s 65-Line CLAUDE.md: Helping AI Coding Avoid Three Common Mistakes</title>
        <link>https://knightli.com/en/2026/04/19/karpathy-claude-md-ai-coding-rules/</link>
        <pubDate>Sun, 19 Apr 2026 18:27:23 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/19/karpathy-claude-md-ai-coding-rules/</guid>
        <description>&lt;p&gt;A GitHub project about AI coding has been getting a lot of attention recently. Its core is not a complex codebase, but a roughly 65-line &lt;code&gt;CLAUDE.md&lt;/code&gt; file. The reason it attracted so many stars is not technical complexity. It is that it captures problems many people repeatedly run into when using AI to write code.&lt;/p&gt;
&lt;p&gt;The background starts with Andrej Karpathy&amp;rsquo;s observations on AI coding. Karpathy is an influential educator and engineer in AI: a Stanford PhD, an early OpenAI contributor, and a former Tesla AI leader responsible for Autopilot&amp;rsquo;s vision system. He has continued to share his views on large models, education, and AI tools, so his comments on changes in programming workflows tend to draw a lot of attention from developers.&lt;/p&gt;
&lt;p&gt;He once said that after using Claude Code for a few weeks, his programming style changed noticeably. Previously it was roughly 80% handwritten code and 20% AI assistance. Now it is closer to 80% code written by AI and 20% edits by himself. He described it as &amp;ldquo;programming in English&amp;rdquo;, telling an LLM what to write through natural language.&lt;/p&gt;
&lt;p&gt;But he also pointed out several recurring problems in AI coding.&lt;/p&gt;
&lt;h2 id=&#34;01-wrong-assumptions&#34;&gt;01 Wrong Assumptions
&lt;/h2&gt;&lt;p&gt;The first problem is that models easily make assumptions on behalf of the user, then keep writing along that path. They do not always manage their own confusion, and they do not always stop to ask questions when the requirement is ambiguous.&lt;/p&gt;
&lt;p&gt;For example, if the user only says &amp;ldquo;add a user export feature&amp;rdquo;, the model might assume it should export all users, output JSON, write to a local file, and skip any confirmation around permissions or fields. Only after the code is done does the user discover that the model&amp;rsquo;s understanding does not match the real scenario.&lt;/p&gt;
&lt;p&gt;A better approach is to list the uncertainties first: should it export all users or filtered results? Should it trigger a browser download or run as a background job? Which fields are needed? How large is the data set? Are there permission constraints? If these questions are not clarified, writing faster only means drifting farther.&lt;/p&gt;
&lt;h2 id=&#34;02-over-complexity&#34;&gt;02 Over-Complexity
&lt;/h2&gt;&lt;p&gt;The second problem is that models often turn simple problems into complex ones. A task that could be handled with one function might receive abstract classes, strategy patterns, factory patterns, configuration layers, and a pile of extension points that may never be needed.&lt;/p&gt;
&lt;p&gt;This kind of code can look engineered, but in practice it increases maintenance cost. AI is especially good at quickly generating large structures, but it does not always judge whether those structures are necessary. The result is that a task solvable in 100 lines becomes inflated into 1,000 lines.&lt;/p&gt;
&lt;p&gt;The test is straightforward: would a senior engineer look at the change and think it is over-designed? If the answer is yes, remove the extra layers and solve the current problem with the least code needed.&lt;/p&gt;
&lt;h2 id=&#34;03-collateral-damage&#34;&gt;03 Collateral Damage
&lt;/h2&gt;&lt;p&gt;The third problem is that models sometimes modify or delete code they do not fully understand. While fixing a small bug, they may casually change comments, reformat nearby code, clean up imports that look unused, or even touch logic unrelated to the current task.&lt;/p&gt;
&lt;p&gt;These &amp;ldquo;drive-by improvements&amp;rdquo; are risky because they expand the change scope and make review harder. The user may only want to fix a validator crash caused by an empty email, but the model may also enhance email validation, add username validation, and rewrite docstrings. In the end, it becomes hard to tell which line changed behavior.&lt;/p&gt;
&lt;p&gt;A safer rule is: only change what must be changed, and only clean up issues caused by your own change. Existing dead code, formatting problems, or historical baggage should not be touched unless the task explicitly asks for it. At most, mention it.&lt;/p&gt;
&lt;h2 id=&#34;04-turning-complaints-into-claudemd&#34;&gt;04 Turning Complaints Into CLAUDE.md
&lt;/h2&gt;&lt;p&gt;After Karpathy&amp;rsquo;s comments spread widely, developer Forrest Cheung did something clever: he organized these complaints into executable behavior rules and put them into a &lt;code&gt;CLAUDE.md&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;The project does not contain complicated code. Its key idea is to turn the most failure-prone parts of AI coding into clear working rules. They can be summarized as four principles.&lt;/p&gt;
&lt;p&gt;The first is to think before writing. Do not silently assume. Do not hide confusion. If a requirement has multiple interpretations, list them. If there is a simpler approach, say so. Ask when clarification is needed, and push back when needed.&lt;/p&gt;
&lt;p&gt;The second is to keep things simple. Do not add features that were not requested. Do not abstract one-off code. Do not add unnecessary configuration. Do not write large amounts of defensive code for extremely unlikely scenarios. If 50 lines can solve it, do not write 200.&lt;/p&gt;
&lt;p&gt;The third is to make precise changes. Every changed line should trace directly back to the user&amp;rsquo;s request. Do not improve nearby code as a side quest. Do not refactor something that is not broken. Match the existing project style as much as possible.&lt;/p&gt;
&lt;p&gt;The fourth is goal-driven execution. Do not give the model only a vague instruction. Give it a verifiable success criterion. For example, &amp;ldquo;fix the bug&amp;rdquo; can become &amp;ldquo;write a test that reproduces the bug, then make it pass&amp;rdquo;; &amp;ldquo;add validation&amp;rdquo; can become &amp;ldquo;write invalid-input tests and make them pass&amp;rdquo;. The clearer the success criterion, the easier it is for the model to loop toward completion.&lt;/p&gt;
&lt;h2 id=&#34;05-why-it-took-off&#34;&gt;05 Why It Took Off
&lt;/h2&gt;&lt;p&gt;This project became popular not because the content is mysterious, but because it is close to real development work.&lt;/p&gt;
&lt;p&gt;Many people using AI for coding have seen similar scenes: the model confidently misunderstands the requirement, the code gets more complex as it goes, or it touches places it should not touch. The value of &lt;code&gt;CLAUDE.md&lt;/code&gt; is that it turns those experiences into collaboration rules that can be placed inside a project.&lt;/p&gt;
&lt;p&gt;The entry cost is also low: one file can start making a difference, with no complicated integration. Combined with Karpathy&amp;rsquo;s influence and the project&amp;rsquo;s practical comparison examples, it naturally spread through the Claude Code user base and the broader AI coding community.&lt;/p&gt;
&lt;p&gt;More importantly, these rules are not only for Claude Code. No matter which AI coding tool you use, the underlying issues are similar: the model needs to know when to ask, when to simplify, when to stop, and how to decide that the task is complete.&lt;/p&gt;
&lt;h2 id=&#34;06-what-developers-can-take-away&#34;&gt;06 What Developers Can Take Away
&lt;/h2&gt;&lt;p&gt;The lesson for ordinary developers is simple: AI coding is not about throwing one sentence at a model and waiting for a miracle. The effective approach is to give the model boundaries.&lt;/p&gt;
&lt;p&gt;When the requirement is unclear, ask it to expose its assumptions first. When the implementation starts getting complicated, ask it to return to the smallest viable solution. When changing code, keep it focused on the task goal. When finishing work, use tests, commands, or explicit checkpoints to verify the result.&lt;/p&gt;
&lt;p&gt;AI is already very capable at writing code, but it still needs good collaboration constraints. The fact that a short &lt;code&gt;CLAUDE.md&lt;/code&gt; can attract so much attention shows that developers do not only need smarter models. They also need more reliable ways of working.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Think before writing to reduce wrong assumptions.&lt;/li&gt;
&lt;li&gt;Keep things simple to avoid over-design.&lt;/li&gt;
&lt;li&gt;Make precise changes to control change scope.&lt;/li&gt;
&lt;li&gt;Work toward goals with verifiable success criteria.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These four rules are not complicated, but they are practical. The prerequisite for AI coding to truly improve efficiency is not making the model write more. It is making it write more accurately, with less code, and under better control.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Using Claude Code Quota More Efficiently: Models, Context, Caching, and /compact</title>
        <link>https://knightli.com/en/2026/04/19/claude-code-usage-context-compact-notes/</link>
        <pubDate>Sun, 19 Apr 2026 15:29:06 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/19/claude-code-usage-context-compact-notes/</guid>
        <description>&lt;p&gt;Many Claude Code or Claude Max users run into the same problem: even after paying for Pro, Max 5x, or Max 20x, the usage warning appears quickly, or they have to wait for the next reset. This feels especially obvious when Claude Code reads many files, fixes complicated bugs, or runs long tasks in a large project.&lt;/p&gt;
&lt;p&gt;The key point is this: usage is not deducted linearly by &amp;ldquo;minutes.&amp;rdquo; It depends on the model, context length, attachments, codebase size, conversation history, tool calls, and current capacity. In the same 5-hour window, one person may work for a long time while another hits the limit in minutes. Usually the account is not broken; each request is simply too heavy.&lt;/p&gt;
&lt;p&gt;This note collects a set of practical habits for using quota more efficiently.&lt;/p&gt;
&lt;h2 id=&#34;01-first-understand-claudes-usage-window&#34;&gt;01 First Understand Claude&amp;rsquo;s Usage Window
&lt;/h2&gt;&lt;p&gt;Claude Pro and Max both have usage limits. Claude Code usage is shared with Claude on web, desktop, and mobile under the same subscription quota. Anthropic&amp;rsquo;s help center explains that message counts depend on message length, attachment size, current conversation length, model or feature used, and that Claude Code usage is also affected by project complexity, codebase size, and auto-accept settings.&lt;/p&gt;
&lt;p&gt;A simple way to think about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pro: suitable for light usage and small projects.&lt;/li&gt;
&lt;li&gt;Max 5x: suitable for more frequent usage and larger codebases.&lt;/li&gt;
&lt;li&gt;Max 20x: suitable for heavier daily collaboration.&lt;/li&gt;
&lt;li&gt;Usage windows reset on a 5-hour session basis.&lt;/li&gt;
&lt;li&gt;Long messages, long conversations, large files, and complex tasks consume usage faster.&lt;/li&gt;
&lt;li&gt;Stronger models such as Opus hit limits faster than Sonnet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &amp;ldquo;I only used it for 20 minutes&amp;rdquo; does not explain much by itself. What matters is how much context Claude read during those 20 minutes, which model was used, whether large files were processed repeatedly, and whether the same long conversation kept accumulating more tasks.&lt;/p&gt;
&lt;h2 id=&#34;02-first-habit-do-not-default-to-the-most-expensive-model&#34;&gt;02 First Habit: Do Not Default to the Most Expensive Model
&lt;/h2&gt;&lt;p&gt;The Claude model family is commonly positioned like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Opus&lt;/code&gt;: strongest capability, suitable for complex reasoning, architecture decisions, and hard bugs.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sonnet&lt;/code&gt;: balanced capability and cost, suitable for most everyday coding tasks.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Haiku&lt;/code&gt;: lighter, suitable for simple classification, summarization, and format conversion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For daily scripts, small bug fixes, documentation cleanup, and code explanation, Sonnet is usually enough. Save Opus for cases such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complex architecture design.&lt;/li&gt;
&lt;li&gt;Deep multi-file refactors.&lt;/li&gt;
&lt;li&gt;Bugs that are hard to reproduce.&lt;/li&gt;
&lt;li&gt;Long-chain troubleshooting.&lt;/li&gt;
&lt;li&gt;Tasks where the normal model is clearly stuck.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Claude Code, use &lt;code&gt;/model&lt;/code&gt; to switch models, or set the default in &lt;code&gt;/config&lt;/code&gt;. A steadier habit is to use Sonnet by default and switch to Opus only at key points, rather than running the whole task on Opus.&lt;/p&gt;
&lt;h2 id=&#34;03-second-habit-control-context-do-not-drag-old-tasks-along&#34;&gt;03 Second Habit: Control Context, Do Not Drag Old Tasks Along
&lt;/h2&gt;&lt;p&gt;The longer the context, the more Claude needs to process on each turn, and the faster usage is consumed. The Claude Code docs explicitly recommend proactive context management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;/clear&lt;/code&gt; when switching to an unrelated task.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/compact&lt;/code&gt; when one phase is done but important context should remain.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/context&lt;/code&gt; to see what is taking space.&lt;/li&gt;
&lt;li&gt;Configure a status line if you want continuous status visibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A useful rhythm:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Small phase done: /compact
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Large task done: /clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Switching to unrelated work: /clear
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Context usage getting high: /compact early
&lt;/span&gt;&lt;/span&gt;&lt;/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; summarizes earlier conversation history while preserving key task state, conclusions, file paths, and remaining work. It reduces the amount of history carried into later requests. You can also add a short instruction:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 Preserve changed files, test results, remaining TODOs, and key design decisions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Do not wait for automatic compaction. The docs note that Claude Code auto-compacts when context approaches the limit, but manually compacting at phase boundaries is usually easier to control.&lt;/p&gt;
&lt;h2 id=&#34;04-third-habit-long-conversations-and-large-files-make-every-request-heavier&#34;&gt;04 Third Habit: Long Conversations and Large Files Make Every Request Heavier
&lt;/h2&gt;&lt;p&gt;Many people assume that &amp;ldquo;I only asked one more question&amp;rdquo; should be cheap. But in a long conversation, that question may carry a lot of history, file summaries, tool definitions, and system rules behind it.&lt;/p&gt;
&lt;p&gt;Things that easily bloat context include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Long conversations that are never cleared.&lt;/li&gt;
&lt;li&gt;Asking Claude to read entire large files.&lt;/li&gt;
&lt;li&gt;Pasting long logs, build output, or test output.&lt;/li&gt;
&lt;li&gt;Adding many screenshots or images at once.&lt;/li&gt;
&lt;li&gt;Asking it to repeatedly scan the whole repository.&lt;/li&gt;
&lt;li&gt;An overly long &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Too many MCP servers enabled.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A more efficient approach: paste only key errors from logs, include only failing parts of test output, and let Claude use &lt;code&gt;rg&lt;/code&gt;, &lt;code&gt;head&lt;/code&gt;, &lt;code&gt;tail&lt;/code&gt;, and symbol search before reading only the necessary parts. If command-line filtering can shrink the content, do not paste the whole thing into context.&lt;/p&gt;
&lt;h2 id=&#34;05-fourth-habit-understand-caching-but-do-not-worship-it&#34;&gt;05 Fourth Habit: Understand Caching, but Do Not Worship It
&lt;/h2&gt;&lt;p&gt;Anthropic&amp;rsquo;s Prompt Caching can cache repeated prompt prefixes. The default cache lifetime is 5 minutes, and a 1-hour cache is also supported. When cache hits, large repeated context does not need to be fully reprocessed, which helps reduce cost and improve rate limit utilization.&lt;/p&gt;
&lt;p&gt;But caching has limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Content must match exactly, including text and images.&lt;/li&gt;
&lt;li&gt;The default cache is short-lived.&lt;/li&gt;
&lt;li&gt;Changing models, tools, system prompts, or context structure may reduce cache hits.&lt;/li&gt;
&lt;li&gt;Output tokens do not disappear because of caching; the response still needs to be generated.&lt;/li&gt;
&lt;li&gt;How Claude Code uses caching is a product-level implementation detail, so do not treat it as permanent &amp;ldquo;free memory.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, the important part is not studying every caching detail. It is keeping the session stable:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avoid frequent model switching within the same phase.&lt;/li&gt;
&lt;li&gt;Do not repeatedly rewrite large rule blocks mid-task.&lt;/li&gt;
&lt;li&gt;Do not keep adding new images inside the same task.&lt;/li&gt;
&lt;li&gt;Do not leave a long task idle for too long and then return with another huge request.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/compact&lt;/code&gt; at phase boundaries.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This makes repeated context easier to reuse and reduces later request weight.&lt;/p&gt;
&lt;h2 id=&#34;06-about-peak-hours-avoid-them-when-you-can-but-do-not-treat-them-as-a-formula&#34;&gt;06 About Peak Hours: Avoid Them When You Can, but Do Not Treat Them as a Formula
&lt;/h2&gt;&lt;p&gt;People often say certain hours feel tighter. Anthropic&amp;rsquo;s help center is more careful: message counts can be affected by current Claude capacity, conversation length, attachments, model, and features. In other words, peak capacity can affect the experience, but do not treat a specific local time window as a permanent rule.&lt;/p&gt;
&lt;p&gt;Practical suggestions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Put large refactors and heavy analysis in periods when both your network and the service are stable.&lt;/li&gt;
&lt;li&gt;Do not start a huge task right before you plan to step away.&lt;/li&gt;
&lt;li&gt;If you expect to leave for a long time, run &lt;code&gt;/compact&lt;/code&gt; or &lt;code&gt;/clear&lt;/code&gt; first.&lt;/li&gt;
&lt;li&gt;For small edits, do not use Opus with a long context unless you really need it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is more reliable than memorizing a fixed &amp;ldquo;do not use it from X to Y&amp;rdquo; rule.&lt;/p&gt;
&lt;h2 id=&#34;07-slim-down-claudemd-rules-mcp-and-skills&#34;&gt;07 Slim Down CLAUDE.md, rules, MCP, and skills
&lt;/h2&gt;&lt;p&gt;Claude Code loads project rules, tool information, and some environment context into the session. The official docs also recommend separating general rules from specialized rules so every session does not start with a large amount of unrelated text.&lt;/p&gt;
&lt;p&gt;A useful split:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;: only global rules that always apply.&lt;/li&gt;
&lt;li&gt;rules: path-specific or file-type-specific rules.&lt;/li&gt;
&lt;li&gt;skills: specific workflows, such as publishing posts, deployment, image generation, or committing code.&lt;/li&gt;
&lt;li&gt;MCP: only enable servers that the current task actually needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If &lt;code&gt;CLAUDE.md&lt;/code&gt; is hundreds or thousands of lines long, every session carries that cost. A better pattern is to move occasional workflows into skills and load them only when needed.&lt;/p&gt;
&lt;p&gt;MCP is similar. More tools do not automatically mean more efficiency. The Claude Code docs mention using &lt;code&gt;/mcp&lt;/code&gt; to view and disable unnecessary servers, and &lt;code&gt;/context&lt;/code&gt; to see what is consuming context space.&lt;/p&gt;
&lt;h2 id=&#34;08-practical-command-list&#34;&gt;08 Practical Command List
&lt;/h2&gt;&lt;p&gt;These are the most useful daily commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Switch models. Sonnet is a good default; use Opus for complex reasoning.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Clear the current context. Use it when switching to unrelated work.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Compress conversation history. Use it when a phase is done but the same task continues.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Inspect context usage and find what is taking space.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Check subscription or usage-related status. Anthropic&amp;rsquo;s help center also recommends monitoring remaining allocation.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;View and manage MCP servers, and disable tools not needed for the current task.&lt;/p&gt;
&lt;p&gt;If you use API billing, &lt;code&gt;/cost&lt;/code&gt; can be useful. But for Pro/Max subscriptions, the Claude Code docs explain that the dollar estimate from &lt;code&gt;/cost&lt;/code&gt; is not the right billing reference; subscribers should rely more on usage information such as &lt;code&gt;/stats&lt;/code&gt; and &lt;code&gt;/status&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;09-a-quota-saving-workflow&#34;&gt;09 A Quota-Saving Workflow
&lt;/h2&gt;&lt;p&gt;A practical workflow looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;/clear&lt;/code&gt; before starting a new task.&lt;/li&gt;
&lt;li&gt;Use Sonnet by default.&lt;/li&gt;
&lt;li&gt;Let Claude inspect project structure and key files first, not the whole repository.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/compact&lt;/code&gt; after each small phase.&lt;/li&gt;
&lt;li&gt;Switch to Opus only for hard blockers.&lt;/li&gt;
&lt;li&gt;Filter logs, errors, and test output before pasting them.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;/clear&lt;/code&gt; after the task is done; do not start new work with stale context.&lt;/li&gt;
&lt;li&gt;Periodically review &lt;code&gt;CLAUDE.md&lt;/code&gt;, MCP, and skills to shrink always-on context.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The core idea is simple: let Claude see only what it truly needs for the current task.&lt;/p&gt;
&lt;h2 id=&#34;10-summary&#34;&gt;10 Summary
&lt;/h2&gt;&lt;p&gt;Claude Code usage running out quickly is usually not caused by one thing. It is often a combination of high-cost models, long uncleared conversations, too many files and logs, heavy MCP and rule context, weaker cache reuse, and peak capacity fluctuations.&lt;/p&gt;
&lt;p&gt;The practical fixes are also simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use Sonnet for daily work.&lt;/li&gt;
&lt;li&gt;Save Opus for truly complex problems.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/compact&lt;/code&gt; when a phase is done.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/clear&lt;/code&gt; when switching tasks.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;/context&lt;/code&gt; to find context bloat.&lt;/li&gt;
&lt;li&gt;Slim down &lt;code&gt;CLAUDE.md&lt;/code&gt;, rules, MCP, and skills.&lt;/li&gt;
&lt;li&gt;Do not dump the whole repository, full logs, or large image batches into context.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How much work the same Pro or Max plan can support depends heavily on how you manage context. Make the context smaller and task boundaries clearer, and Claude Code will feel much steadier.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 Project Notes: A Local Background Removal Tool</title>
        <link>https://knightli.com/en/2026/04/19/rembg-background-removal-notes/</link>
        <pubDate>Sun, 19 Apr 2026 08:56:01 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/19/rembg-background-removal-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; is an image background removal tool. It can be used as a command-line tool, a Python library, an HTTP server, or a Docker container. Its purpose is straightforward: take an image as input and output the foreground with an alpha channel. It works well for product images, portraits, material processing, and automated image workflows.&lt;/p&gt;
&lt;p&gt;The best part is that it can run locally. If you do not want to upload source images to an online cutout service, need batch processing, or want to connect background removal to scripts and business systems, &lt;code&gt;rembg&lt;/code&gt; is easier to automate than a web tool.&lt;/p&gt;
&lt;h2 id=&#34;01-installation&#34;&gt;01 Installation
&lt;/h2&gt;&lt;p&gt;The current version requires Python &lt;code&gt;&amp;gt;=3.11,&amp;lt;3.14&lt;/code&gt;. Choose the backend according to your hardware:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you need the CLI, add &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;For NVIDIA CUDA environments, install the GPU version:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For AMD ROCm environments, install &lt;code&gt;onnxruntime-rocm&lt;/code&gt; first by following the official ROCm instructions, then install:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Most GPU-version trouble is not in &lt;code&gt;rembg&lt;/code&gt; itself, but in whether &lt;code&gt;onnxruntime-gpu&lt;/code&gt;, CUDA, cuDNN, and the driver versions match. If installation fails, first confirm the workflow with the CPU version, then deal with the GPU environment.&lt;/p&gt;
&lt;h2 id=&#34;02-cli-subcommands&#34;&gt;02 CLI Subcommands
&lt;/h2&gt;&lt;p&gt;After installing the CLI, you can use &lt;code&gt;rembg&lt;/code&gt; directly in the terminal. It mainly provides 4 subcommands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;: process a single file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt;: process a whole folder.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;: start an HTTP server.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt;: process an RGB24 pixel binary stream, often used with FFmpeg.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Show help:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Process a single local image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Pipe in a remote image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Specify a model:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Return only the 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;Enable 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; can sometimes produce more natural hair, fuzzy edges, and semi-transparent boundaries, but it is slower and does not noticeably improve every image.&lt;/p&gt;
&lt;h2 id=&#34;03-batch-processing-folders&#34;&gt;03 Batch Processing Folders
&lt;/h2&gt;&lt;p&gt;Batch processing is one of the more useful parts of &lt;code&gt;rembg&lt;/code&gt;. Put source images in one directory and output results to another:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Watch for directory changes and automatically process new or modified images:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This mode works well with download scripts, product image cleanup, and material folders. For example, drop images into &lt;code&gt;input&lt;/code&gt;, and let &lt;code&gt;rembg&lt;/code&gt; generate transparent PNG files in &lt;code&gt;output&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;04-using-it-as-a-python-library&#34;&gt;04 Using It as a Python Library
&lt;/h2&gt;&lt;p&gt;If you want to integrate it into your own script, the simplest way is &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;You can also process PIL images directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;For batch processing, reuse a session so the model is not initialized again for every image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;If you are building a long-running image processing service, session reuse is usually a better fit than repeatedly calling the CLI.&lt;/p&gt;
&lt;h2 id=&#34;05-starting-an-http-server&#34;&gt;05 Starting an HTTP Server
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; can also start an HTTP server directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After startup, visit:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Remove background from a 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;Upload a local image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you only need the API and do not need the Gradio UI, disable the UI to reduce idle CPU usage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Server mode is suitable for internal tools, automation flows, or other applications. But it is not a complete image asset management system. Authentication, rate limiting, queues, and file cleanup still need to be handled outside it.&lt;/p&gt;
&lt;h2 id=&#34;06-docker-usage&#34;&gt;06 Docker Usage
&lt;/h2&gt;&lt;p&gt;The CPU version can use the official image directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 acceleration requires NVIDIA Container Toolkit on the host, and usually requires building an image from the project&amp;rsquo;s &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;Run example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The official README notes that the GPU image is much larger than the CPU image, and model files are not included in the image. To avoid downloading models repeatedly, mount the model directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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-model-choices&#34;&gt;07 Model Choices
&lt;/h2&gt;&lt;p&gt;When &lt;code&gt;rembg&lt;/code&gt; uses a model for the first time, it automatically downloads it to &lt;code&gt;~/.u2net/&lt;/code&gt;. Common models include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u2net&lt;/code&gt;: a general-purpose model for common cases.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2netp&lt;/code&gt;: a lightweight version with friendlier speed and size.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_human_seg&lt;/code&gt;: focused on human segmentation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;u2net_cloth_seg&lt;/code&gt;: focused on clothing parsing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;silueta&lt;/code&gt;: similar to &lt;code&gt;u2net&lt;/code&gt;, but smaller.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-general-use&lt;/code&gt;: a newer general-purpose model.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isnet-anime&lt;/code&gt;: focused on anime character segmentation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;birefnet-general&lt;/code&gt;: a general image model used in the README example.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sam&lt;/code&gt;: can work with extra parameters such as prompt points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, do not choose only by model name. Product images, portraits, anime images, complex backgrounds, and transparent objects all have different requirements. A safer approach is to pick a representative image set, run several models, compare edges, missed areas, false removals, and speed, then decide the default model.&lt;/p&gt;
&lt;p&gt;If you want to use a custom &lt;code&gt;.onnx&lt;/code&gt; model, place it in the default model directory &lt;code&gt;~/.u2net/&lt;/code&gt;, and set this when needed:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This can prevent &lt;code&gt;rembg&lt;/code&gt; from overwriting your model file because of checksum logic.&lt;/p&gt;
&lt;h2 id=&#34;08-suitable-use-cases&#34;&gt;08 Suitable Use Cases
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; fits these tasks well:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Batch-generate transparent-background product images.&lt;/li&gt;
&lt;li&gt;Extract foregrounds from portraits, ID photos, and material images.&lt;/li&gt;
&lt;li&gt;Integrate background removal into Python scripts or backend services.&lt;/li&gt;
&lt;li&gt;Deploy a simple background removal API on an internal network.&lt;/li&gt;
&lt;li&gt;Use FFmpeg pipes to process video frames or image sequences.&lt;/li&gt;
&lt;li&gt;Keep privacy-sensitive or copyrighted materials away from third-party online services.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is less suitable for these cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You need hand-retouched edges and complex transparent materials.&lt;/li&gt;
&lt;li&gt;Every image must reach stable commercial photography quality.&lt;/li&gt;
&lt;li&gt;You want a full online design tool instead of only background removal.&lt;/li&gt;
&lt;li&gt;You do not want to maintain a Python or Docker environment.&lt;/li&gt;
&lt;li&gt;Your GPU driver, CUDA, or ROCm environment is already messy and the project needs to launch quickly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;09-usage-advice&#34;&gt;09 Usage Advice
&lt;/h2&gt;&lt;p&gt;If you only process images occasionally, the CPU version is enough:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For batch-processing thousands of images, consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reusing a Python session.&lt;/li&gt;
&lt;li&gt;Fixing the model directory to avoid repeated downloads.&lt;/li&gt;
&lt;li&gt;Using an SSD for inputs, outputs, and model files.&lt;/li&gt;
&lt;li&gt;Testing model quality on a small batch first.&lt;/li&gt;
&lt;li&gt;Deciding whether GPU acceleration is worth the trouble afterward.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The value of GPU is mainly batch throughput. For occasional single-image processing, the setup cost may be higher than the time saved. Especially on Windows, when CUDA, cuDNN, and &lt;code&gt;onnxruntime-gpu&lt;/code&gt; versions do not match, the CPU version can be the more practical choice.&lt;/p&gt;
&lt;h2 id=&#34;10-quick-take&#34;&gt;10 Quick Take
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;rembg&lt;/code&gt; is simple, open source, and flexible: it can run as a CLI, be called from Python, expose HTTP endpoints, or be packaged with Docker. It is a good base component for local automatic background removal.&lt;/p&gt;
&lt;p&gt;But it is not a magic eraser. Complex backgrounds, fine subject edges, transparent materials, shadow preservation, and commercial-grade retouching may still require manual work or a more specialized workflow. When putting it into batch automation, it is best to keep a human review or failed-sample recovery step.&lt;/p&gt;
&lt;p&gt;If the goal is to remove backgrounds from a batch of images quickly while keeping the process local, &lt;code&gt;rembg&lt;/code&gt; is worth keeping in the toolbox.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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 installation matrix: &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 Multi-GPU Notes: VRAM Pooling, GPU Selection, and Common Misunderstandings</title>
        <link>https://knightli.com/en/2026/04/19/ollama-multiple-gpu-notes/</link>
        <pubDate>Sun, 19 Apr 2026 00:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/19/ollama-multiple-gpu-notes/</guid>
        <description>&lt;p&gt;When running local inference with Ollama, a few questions come up quickly: if I already have one GPU and my motherboard still has empty PCIe slots, does adding more GPUs help? Do the GPUs need to be identical? Can VRAM be combined? Will it accelerate inference like a multi-GPU training framework?&lt;/p&gt;
&lt;p&gt;This note summarizes how Ollama behaves with multiple GPUs. The short version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama supports multiple GPUs.&lt;/li&gt;
&lt;li&gt;The main value of multiple GPUs is usually fitting larger models into available VRAM, not getting linear token/s scaling.&lt;/li&gt;
&lt;li&gt;By default, if a model fits entirely on one GPU, Ollama tends to load it on a single GPU.&lt;/li&gt;
&lt;li&gt;If a model does not fit on one GPU, Ollama can spread it across available GPUs.&lt;/li&gt;
&lt;li&gt;Mixed GPU models may be visible to Ollama, but performance and placement may not be ideal.&lt;/li&gt;
&lt;li&gt;SLI / NVLink is not required for multi-GPU use.&lt;/li&gt;
&lt;li&gt;To limit which GPUs Ollama can use, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;, &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt;, or &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;official-behavior-single-gpu-first-multi-gpu-when-needed&#34;&gt;Official Behavior: Single GPU First, Multi-GPU When Needed
&lt;/h2&gt;&lt;p&gt;Ollama&amp;rsquo;s FAQ describes the multi-GPU loading logic directly: when loading a new model, Ollama estimates the required VRAM and compares it with currently available GPU memory. If the model can fit entirely on one GPU, it loads the model onto that GPU. If it cannot fit on a single GPU, the model is spread across all available GPUs.&lt;/p&gt;
&lt;p&gt;The reason is performance. Keeping a model on one GPU usually reduces data transfers across the PCIe bus during inference, so it is often faster.&lt;/p&gt;
&lt;p&gt;So do not think of Ollama multi-GPU as &amp;ldquo;more cards automatically means several times faster.&amp;rdquo; A more accurate model is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Small model fits on one GPU: usually runs on one GPU.&lt;/li&gt;
&lt;li&gt;Large model does not fit on one GPU: split across multiple GPUs.&lt;/li&gt;
&lt;li&gt;Still not enough VRAM: part of the model falls back to system memory, and speed drops noticeably.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use this command to see where the model is loaded:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The &lt;code&gt;PROCESSOR&lt;/code&gt; column may show something like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If you see &lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;, part of the model is already in system memory. In that case, adding more GPU memory or using a larger-VRAM GPU is usually more useful than continuing to rely on CPU/RAM.&lt;/p&gt;
&lt;h2 id=&#34;multi-gpu-is-not-simple-compute-stacking&#34;&gt;Multi-GPU Is Not Simple Compute Stacking
&lt;/h2&gt;&lt;p&gt;Local LLM inference is not the same as SLI in games. With Ollama on multiple GPUs, the common pattern is that different layers or tensors are placed on different devices. This can make a larger model fit into the combined available VRAM, but data may still need to move between devices during inference.&lt;/p&gt;
&lt;p&gt;So multi-GPU benefits usually fall into two categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VRAM benefit: larger models fit more easily, or less of the model falls back to CPU/RAM.&lt;/li&gt;
&lt;li&gt;Performance benefit: usually most obvious when a model would otherwise not fit on one GPU or would heavily spill to CPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If an 8B or 14B model already fits entirely on a single RTX 3090, forcing it across two GPUs may not be faster. It may even slow down due to cross-GPU transfer overhead. Ollama&amp;rsquo;s default &amp;ldquo;use one GPU when it fits&amp;rdquo; strategy avoids that unnecessary PCIe cost.&lt;/p&gt;
&lt;h2 id=&#34;sli-or-nvlink-is-not-required&#34;&gt;SLI or NVLink Is Not Required
&lt;/h2&gt;&lt;p&gt;Ollama multi-GPU does not depend on SLI. Multiple normal PCIe GPUs can be scheduled as long as the driver and Ollama can detect them.&lt;/p&gt;
&lt;p&gt;NVLink or higher PCIe bandwidth may help in some cross-GPU scenarios, but it is not a requirement. Many used GPU servers and workstations can run multiple GPUs over ordinary PCIe.&lt;/p&gt;
&lt;p&gt;What you should pay attention to is PCIe bandwidth. The difference between &lt;code&gt;x1&lt;/code&gt;, &lt;code&gt;x4&lt;/code&gt;, &lt;code&gt;x8&lt;/code&gt;, and &lt;code&gt;x16&lt;/code&gt; affects how quickly a model is loaded into VRAM. If you frequently switch large models, PCIe bandwidth becomes more important. After a model is loaded, PCIe usually matters less during generation, but cross-GPU splitting can still add overhead.&lt;/p&gt;
&lt;p&gt;Safer rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefer x16 / x8 over mining-style x1 risers.&lt;/li&gt;
&lt;li&gt;PCIe bandwidth matters more when switching large models frequently.&lt;/li&gt;
&lt;li&gt;If a model stays resident in VRAM for a long time, PCIe bandwidth is less visible.&lt;/li&gt;
&lt;li&gt;For multi-GPU machines, check motherboard PCIe topology and CPU-attached lanes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;limit-which-nvidia-gpus-ollama-uses&#34;&gt;Limit Which NVIDIA GPUs Ollama Uses
&lt;/h2&gt;&lt;p&gt;On NVIDIA multi-GPU systems, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; to control which GPUs Ollama can see.&lt;/p&gt;
&lt;p&gt;Temporary run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Use only the second 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;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;Force Ollama not to use NVIDIA GPUs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The official docs note that numeric IDs may change order, so GPU UUIDs are more reliable. Check UUIDs first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Example output:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Then specify the 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;If Ollama is installed as a Linux systemd service, put the variable into the service environment:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Add:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Reload and restart:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-and-vulkan-device-selection&#34;&gt;AMD and Vulkan Device Selection
&lt;/h2&gt;&lt;p&gt;For AMD ROCm, use &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; to control visible GPUs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;To force Ollama not to use ROCm GPUs, use an invalid 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&amp;rsquo;s GPU docs also mention experimental Vulkan support. For Vulkan GPUs, use &lt;code&gt;GGML_VK_VISIBLE_DEVICES&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;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;If Vulkan devices cause problems, disable them:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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 multi-GPU setups are more likely to run into driver, ROCm version, and GFX version compatibility issues. The official docs also mention Linux ROCm driver requirements and compatibility overrides such as &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;. If you mix different generations of AMD GPUs, first verify that each card works on its own before trying multi-GPU.&lt;/p&gt;
&lt;h2 id=&#34;exposing-multiple-gpus-in-docker&#34;&gt;Exposing Multiple GPUs in Docker
&lt;/h2&gt;&lt;p&gt;If you run Ollama in Docker, NVIDIA setups usually require &lt;code&gt;nvidia-container-toolkit&lt;/code&gt;, then &lt;code&gt;--gpus&lt;/code&gt; to expose devices.&lt;/p&gt;
&lt;p&gt;Expose all GPUs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Expose specific GPUs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;You can also combine this with environment variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If &lt;code&gt;nvidia-smi&lt;/code&gt; cannot see GPUs inside the container, Ollama cannot use them either. Troubleshoot Docker GPU passthrough first, then Ollama.&lt;/p&gt;
&lt;h2 id=&#34;what-is-ollama_sched_spread&#34;&gt;What Is &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;In some multi-GPU configuration discussions, you may see &lt;code&gt;OLLAMA_SCHED_SPREAD=1&lt;/code&gt; or &lt;code&gt;OLLAMA_SCHED_SPREAD=true&lt;/code&gt;. It is related to Ollama&amp;rsquo;s scheduler and is often used when people want models or requests to be spread more broadly across GPUs.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Or with 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;But it is not a magic switch. Enabling it does not imply linear token/s scaling, and it may still run into OOM when multiple models are loaded, VRAM estimates are tight, context length grows, or the KV cache expands. The core FAQ behavior still applies: if one GPU can fully hold the model, one GPU is usually more efficient; if one GPU cannot hold it, then multi-GPU splitting becomes useful.&lt;/p&gt;
&lt;p&gt;Treat &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; as an advanced scheduling experiment, not a required multi-GPU setting. Understand the default behavior first, then adjust based on &lt;code&gt;ollama ps&lt;/code&gt;, logs, and &lt;code&gt;nvidia-smi&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-to-check-whether-multiple-gpus-are-being-used&#34;&gt;How to Check Whether Multiple GPUs Are Being Used
&lt;/h2&gt;&lt;p&gt;Useful commands:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;View the Ollama service logs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If using 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;Watch for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether Ollama discovers compatible GPUs.&lt;/li&gt;
&lt;li&gt;Whether the model shows &lt;code&gt;100% GPU&lt;/code&gt; or a CPU/GPU split.&lt;/li&gt;
&lt;li&gt;Whether each GPU has VRAM allocated.&lt;/li&gt;
&lt;li&gt;Whether VRAM grows on multiple GPUs during model loading.&lt;/li&gt;
&lt;li&gt;Whether generation token/s improves compared with CPU/RAM spillover.&lt;/li&gt;
&lt;li&gt;Whether OOM or model unloading happens frequently.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPU utilization alone can be misleading. LLM inference does not always keep GPUs fully loaded, especially with multiple GPUs, low batch sizes, small contexts, slow CPUs, or slow PCIe links.&lt;/p&gt;
&lt;h2 id=&#34;common-misunderstandings&#34;&gt;Common Misunderstandings
&lt;/h2&gt;&lt;h3 id=&#34;misunderstanding-1-two-12gb-gpus-equal-one-24gb-gpu&#34;&gt;Misunderstanding 1: Two 12GB GPUs Equal One 24GB GPU
&lt;/h3&gt;&lt;p&gt;Not exactly. Multiple GPUs can place a model across devices, but cross-device access has overhead. It solves the &amp;ldquo;does not fit&amp;rdquo; problem, but it is not equivalent to the speed and stability of one large-VRAM GPU.&lt;/p&gt;
&lt;h3 id=&#34;misunderstanding-2-different-gpu-models-cannot-be-mixed&#34;&gt;Misunderstanding 2: Different GPU Models Cannot Be Mixed
&lt;/h3&gt;&lt;p&gt;Not necessarily. If the driver, compute capability, and runtime libraries support the cards, Ollama can see multiple GPUs. But mixed setups are usually limited by the slower card, smaller VRAM, and PCIe topology. The most predictable setup is still same model, same VRAM size, and well-supported same-generation drivers.&lt;/p&gt;
&lt;h3 id=&#34;misunderstanding-3-multi-gpu-is-always-faster-than-single-gpu&#34;&gt;Misunderstanding 3: Multi-GPU Is Always Faster Than Single-GPU
&lt;/h3&gt;&lt;p&gt;Not always. If the model fits completely on one fast GPU, single-GPU may be faster. Multi-GPU is mainly useful for large models, long contexts, or insufficient single-GPU VRAM.&lt;/p&gt;
&lt;h3 id=&#34;misunderstanding-4-nvlink--sli-is-required&#34;&gt;Misunderstanding 4: NVLink / SLI Is Required
&lt;/h3&gt;&lt;p&gt;No. Ordinary PCIe multi-GPU systems can be used by Ollama. NVLink is not a prerequisite.&lt;/p&gt;
&lt;h3 id=&#34;misunderstanding-5-adding-a-gpu-does-not-require-restarting-services&#34;&gt;Misunderstanding 5: Adding a GPU Does Not Require Restarting Services
&lt;/h3&gt;&lt;p&gt;Not always true. Linux systemd services, Windows background apps, and Docker containers may need to be restarted before they rediscover devices and environment variables.&lt;/p&gt;
&lt;h2 id=&#34;gpu-selection-suggestions&#34;&gt;GPU Selection Suggestions
&lt;/h2&gt;&lt;p&gt;For Ollama local inference, the rough priority is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Larger single-GPU VRAM is usually easier to manage.&lt;/li&gt;
&lt;li&gt;Identical GPUs are easier to troubleshoot than mixed GPUs.&lt;/li&gt;
&lt;li&gt;More complete PCIe lanes make large-model loading smoother.&lt;/li&gt;
&lt;li&gt;Older cards should be checked for CUDA compute capability or ROCm support first.&lt;/li&gt;
&lt;li&gt;Multi-GPU power, cooling, and chassis airflow must be planned ahead.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For budget second-hand platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dual RTX 3090 remains a common high-VRAM option.&lt;/li&gt;
&lt;li&gt;Older Tesla cards such as P40 / M40 have large VRAM, but power, cooling, driver support, and performance all need trade-offs.&lt;/li&gt;
&lt;li&gt;Cards such as RTX 4070 / 4070 Ti have good efficiency, but single-card VRAM can be limiting.&lt;/li&gt;
&lt;li&gt;Multiple old 8GB cards can be fun to experiment with, but are not ideal for running large models long-term.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Ollama multi-GPU support is best understood as &amp;ldquo;VRAM expansion first, performance acceleration second.&amp;rdquo; If the model fits entirely on one GPU, the default single-GPU path is usually faster. If one GPU cannot hold it, multi-GPU can spread the model across devices and avoid heavy CPU/RAM spillover, making larger models usable.&lt;/p&gt;
&lt;p&gt;In practice, use &lt;code&gt;ollama ps&lt;/code&gt; to check where the model is loaded, then use &lt;code&gt;nvidia-smi&lt;/code&gt; or ROCm tools to observe VRAM allocation. For GPU selection, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; on NVIDIA, &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; on AMD ROCm, and &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt; for Vulkan. If running in Docker, first make sure the container can see the GPUs.&lt;/p&gt;
&lt;p&gt;Multi-GPU is not magic. It can help fit larger models, but it does not guarantee linear speedup. The stable route is still to prefer large-VRAM single GPUs or identical multi-GPU setups, while considering driver support, PCIe, power, cooling, and model quantization together.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 docs: 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 for Desktop: Bringing AI Search to Windows</title>
        <link>https://knightli.com/en/2026/04/18/google-app-desktop-ai-search-windows/</link>
        <pubDate>Sat, 18 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/18/google-app-desktop-ai-search-windows/</guid>
        <description>&lt;p&gt;Google has added a lighter search entry point to the Windows desktop. Instead of opening a browser first, you can press a shortcut, bring up a search box, ask questions, upload images, analyze files, select content on your screen, and keep asking follow-up questions.&lt;/p&gt;
&lt;p&gt;The official name is &lt;strong&gt;Google app for desktop&lt;/strong&gt;. It is not meant to replace a traditional browser. Its purpose is to bring Google Search, AI Mode, Google Lens, screen sharing, computer file search, and Google Drive search into one desktop search box.&lt;/p&gt;
&lt;p&gt;If you often look up information, summarize documents, identify screenshot content, or want a faster way to search your computer, this desktop Google App is worth trying.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements
&lt;/h2&gt;&lt;p&gt;According to Google&amp;rsquo;s official page, the current requirements are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must be 13 or older.&lt;/li&gt;
&lt;li&gt;The device must run Windows 10 or later.&lt;/li&gt;
&lt;li&gt;The app is currently only available in English.&lt;/li&gt;
&lt;li&gt;AI Mode in Google Search is not supported for all accounts, countries, and languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, Windows 10 and Windows 11 users can install it first and test it. The official page currently says &lt;strong&gt;Now available on Windows&lt;/strong&gt;, so this article focuses on the Windows version.&lt;/p&gt;
&lt;h2 id=&#34;main-features&#34;&gt;Main Features
&lt;/h2&gt;&lt;h3 id=&#34;1-open-search-with-a-shortcut&#34;&gt;1. Open Search With a Shortcut
&lt;/h3&gt;&lt;p&gt;After installation, press:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This opens the Google desktop search box. Press it again to hide the box.&lt;/p&gt;
&lt;p&gt;The experience is a bit like a system launcher. Whether you are writing a document, reading a web page, organizing files, or using another app, you can call up Search without switching back to the browser.&lt;/p&gt;
&lt;h3 id=&#34;2-ai-mode-and-follow-up-questions&#34;&gt;2. AI Mode and Follow-Up Questions
&lt;/h3&gt;&lt;p&gt;Traditional search usually gives you a list of links. AI Mode is closer to a summarized answer built from search results. You can ask a question directly, get a more complete response, and still open helpful links when needed.&lt;/p&gt;
&lt;p&gt;The useful part is that you can keep asking follow-up questions. For example, start with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;What is this tool best used for?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then continue with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;If I create written content, how can I use it to improve my workflow?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This avoids repeatedly rewriting keywords or jumping between multiple pages.&lt;/p&gt;
&lt;h3 id=&#34;3-upload-images-for-recognition-and-search&#34;&gt;3. Upload Images for Recognition and Search
&lt;/h3&gt;&lt;p&gt;The desktop Google App supports uploading an image and asking questions about it. Common uses include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifying people, places, products, or objects in an image.&lt;/li&gt;
&lt;li&gt;Finding similar images and related information.&lt;/li&gt;
&lt;li&gt;Extracting a description from image content.&lt;/li&gt;
&lt;li&gt;Asking AI to generate creative prompts based on the image.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, after uploading a portrait, you could ask:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Who is the person in this image? Please provide an introduction and related references.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For everyday image lookup, source finding, and object recognition, this is more convenient than manually opening a web page and uploading the image there.&lt;/p&gt;
&lt;h3 id=&#34;4-select-screen-content-with-google-lens&#34;&gt;4. Select Screen Content With Google Lens
&lt;/h3&gt;&lt;p&gt;Google Lens is one of the most useful parts of the desktop app. You can select an area on your screen and let it recognize and search that content.&lt;/p&gt;
&lt;p&gt;It is useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Selecting a product on a web page to find similar items or related information.&lt;/li&gt;
&lt;li&gt;Selecting text in a screenshot and asking for an explanation.&lt;/li&gt;
&lt;li&gt;Selecting a software interface and asking what tool it is.&lt;/li&gt;
&lt;li&gt;Selecting an error message and asking for troubleshooting ideas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The core idea is simple: search what you see. Previously, you might have needed to take a screenshot, save it, and upload it. Now you can select the target directly on the screen.&lt;/p&gt;
&lt;h3 id=&#34;5-screen-sharing-search&#34;&gt;5. Screen Sharing Search
&lt;/h3&gt;&lt;p&gt;In addition to selecting one part of the screen, the app also supports screen sharing. Once enabled, AI can see the current window or the entire screen, and you can ask questions about what is visible.&lt;/p&gt;
&lt;p&gt;For example, while reading an article, you can ask:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please summarize the key points on the current page.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;What parts of this page could be improved?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This can save time when reading web pages, reviewing designs, analyzing code snippets, or summarizing long pages. When screen sharing is enabled, the system usually displays a clear border so you can confirm what is being shared.&lt;/p&gt;
&lt;h3 id=&#34;6-search-computer-files-and-google-drive&#34;&gt;6. Search Computer Files and Google Drive
&lt;/h3&gt;&lt;p&gt;Google&amp;rsquo;s official page also says the app can find apps and files across your computer and Google Drive from the same search box.&lt;/p&gt;
&lt;p&gt;This combines desktop search and cloud search. If you remember part of a file name, a keyword from the content, or want to quickly find something in Google Drive, you do not need to open File Explorer and Drive separately.&lt;/p&gt;
&lt;p&gt;On first use, the app may ask whether you want to enable Google Drive search or local file search. Authorize only the areas you actually need, especially when local files and cloud data are involved.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-usage&#34;&gt;Installation and Usage
&lt;/h2&gt;&lt;h3 id=&#34;1-open-the-official-download-page&#34;&gt;1. Open the Official Download Page
&lt;/h3&gt;&lt;p&gt;Visit:&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;Click &lt;strong&gt;Download app&lt;/strong&gt; to download the installer.&lt;/p&gt;
&lt;h3 id=&#34;2-install-the-desktop-app&#34;&gt;2. Install the Desktop App
&lt;/h3&gt;&lt;p&gt;After the download finishes, run the installer and follow the prompts.&lt;/p&gt;
&lt;p&gt;You can choose to sign in with a Google account. Signing in is more useful if you want Google Drive search, personalized search, and some AI features. If you only want to try basic search, you can also start with the default prompts.&lt;/p&gt;
&lt;h3 id=&#34;3-open-the-search-box&#34;&gt;3. Open the Search Box
&lt;/h3&gt;&lt;p&gt;Press:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;A Google search box appears on the desktop. You can type a question directly, upload files, use Lens, or start screen sharing.&lt;/p&gt;
&lt;h3 id=&#34;4-enable-the-search-scope-you-need&#34;&gt;4. Enable the Search Scope You Need
&lt;/h3&gt;&lt;p&gt;If you want to search Google Drive or local files, follow the prompts to enable the relevant permissions.&lt;/p&gt;
&lt;p&gt;A practical approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable Google Drive search first and test cloud document search.&lt;/li&gt;
&lt;li&gt;Enable local file search only if you need it.&lt;/li&gt;
&lt;li&gt;Leave unnecessary scopes disabled.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This gives you access to the useful parts while keeping permissions clear.&lt;/p&gt;
&lt;h2 id=&#34;common-use-cases&#34;&gt;Common Use Cases
&lt;/h2&gt;&lt;h3 id=&#34;analyze-pdfs-and-documents&#34;&gt;Analyze PDFs and Documents
&lt;/h3&gt;&lt;p&gt;You can drag in a PDF, table, or document and ask it to summarize the key points.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please summarize the key points of this PDF and list anything I should pay attention to.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For dense files such as forms, statements, application materials, or manuals, continue with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please organize the key information by category.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is usually faster than reading a long document page by page.&lt;/p&gt;
&lt;h3 id=&#34;summarize-web-pages&#34;&gt;Summarize Web Pages
&lt;/h3&gt;&lt;p&gt;After enabling screen sharing, you can ask it to summarize the current page.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Extract the main ideas from this page and summarize them in five bullet points.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is useful for long articles, product pages, documentation, and news pages.&lt;/p&gt;
&lt;h3 id=&#34;identify-screenshots-and-interfaces&#34;&gt;Identify Screenshots and Interfaces
&lt;/h3&gt;&lt;p&gt;Use Google Lens to select a software interface, code snippet, error message, or image content on the screen, then ask it to explain what you are seeing.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Please explain what this error means and suggest a troubleshooting path.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;What tool is shown in this screenshot, and what scenarios is it likely used for?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;help-with-content-creation&#34;&gt;Help With Content Creation
&lt;/h3&gt;&lt;p&gt;It can also help write titles, generate outlines, and organize selling points.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Write 10 article titles about AI tool recommendations, with angles for practical tips, productivity tools, and office workflows.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;After getting a draft, you can continue:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Make these titles more suitable for a tech blog.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This follow-up style feels more natural than asking a search engine for everything in one shot.&lt;/p&gt;
&lt;h2 id=&#34;usage-tips&#34;&gt;Usage Tips
&lt;/h2&gt;&lt;p&gt;If you only need daily information lookup, treat it as a faster Google Search entry point. If you often work with images, PDFs, web pages, and screenshots, focus on Lens, file uploads, and screen sharing.&lt;/p&gt;
&lt;p&gt;Keep three points in mind:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The official page says the app is currently only available in English. Chinese prompts may behave differently depending on your account and region.&lt;/li&gt;
&lt;li&gt;AI Mode is not available to every account. If you cannot see it, check your account, region, and language settings.&lt;/li&gt;
&lt;li&gt;Local file search, Google Drive search, and screen sharing involve privacy permissions. Confirm what content you want the app to access before enabling them.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;quick-summary&#34;&gt;Quick Summary
&lt;/h2&gt;&lt;p&gt;The main value of Google app for desktop is that it moves search out of the browser and turns it into an AI search box you can call up at any time.&lt;/p&gt;
&lt;p&gt;In short, it can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open search quickly with &lt;code&gt;Alt + Space&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use AI Mode to get organized answers.&lt;/li&gt;
&lt;li&gt;Upload images or files for analysis.&lt;/li&gt;
&lt;li&gt;Select screen content with Google Lens.&lt;/li&gt;
&lt;li&gt;Understand the current window or the whole screen through screen sharing.&lt;/li&gt;
&lt;li&gt;Search local files, apps, and Google Drive content.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you already rely on Google Search and want the experience to feel more like asking an assistant, Google app for desktop is worth a try.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Google app for desktop official page: &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 Uncensored vs Official: What Actually Changes</title>
        <link>https://knightli.com/en/2026/04/18/gemma-4-e4b-uncensored-vs-official/</link>
        <pubDate>Sat, 18 Apr 2026 10:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/18/gemma-4-e4b-uncensored-vs-official/</guid>
        <description>&lt;p&gt;If you see a model like &lt;code&gt;HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive&lt;/code&gt;, the most important point is this: it is &lt;strong&gt;not a new Google base model&lt;/strong&gt;. It is a derivative release built on top of the official &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;, but with alignment behavior intentionally pushed toward fewer refusals.&lt;/p&gt;
&lt;p&gt;That means the real difference is usually &lt;strong&gt;behavioral policy and response style&lt;/strong&gt;, not a brand-new architecture.&lt;/p&gt;
&lt;h2 id=&#34;what-the-derivative-model-explicitly-claims&#34;&gt;What the derivative model explicitly claims
&lt;/h2&gt;&lt;p&gt;According to its Hugging Face model card, the HauhauCS release says:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it is based on &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;it makes &amp;ldquo;no changes to datasets or capabilities&amp;rdquo;&lt;/li&gt;
&lt;li&gt;it is &amp;ldquo;just without the refusals&amp;rdquo;&lt;/li&gt;
&lt;li&gt;the &lt;code&gt;Aggressive&lt;/code&gt; variant is &amp;ldquo;fully unlocked and won&amp;rsquo;t refuse prompts&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Those are the creator&amp;rsquo;s claims, not an independent benchmark. Still, they tell you the intended positioning very clearly: this is an unofficial derivative optimized to reduce safety refusals.&lt;/p&gt;
&lt;h2 id=&#34;official-model-vs-uncensored-derivative&#34;&gt;Official model vs &amp;ldquo;uncensored&amp;rdquo; derivative
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;Official &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;Source&lt;/td&gt;
          &lt;td&gt;Official Google release&lt;/td&gt;
          &lt;td&gt;Third-party derivative on Hugging Face&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Base architecture&lt;/td&gt;
          &lt;td&gt;Gemma 4 E4B instruction-tuned model&lt;/td&gt;
          &lt;td&gt;Same base family, explicitly described as based on &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Main goal&lt;/td&gt;
          &lt;td&gt;General-purpose helpful assistant with responsible-use framing&lt;/td&gt;
          &lt;td&gt;Reduce refusals and keep answering even when the official model might decline&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Safety posture&lt;/td&gt;
          &lt;td&gt;Aligned with Gemma family safety docs and prohibited-use policy&lt;/td&gt;
          &lt;td&gt;Intentionally weakened refusal behavior&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Response style&lt;/td&gt;
          &lt;td&gt;More likely to refuse, redirect, or soften certain requests&lt;/td&gt;
          &lt;td&gt;More likely to answer directly, including prompts the official model may block&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Risk profile&lt;/td&gt;
          &lt;td&gt;Lower misuse risk by default, but still not risk-free&lt;/td&gt;
          &lt;td&gt;Higher misuse risk, higher chance of unsafe or non-compliant output&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Predictability in products&lt;/td&gt;
          &lt;td&gt;Easier to justify in normal apps and enterprise environments&lt;/td&gt;
          &lt;td&gt;Harder to justify in public-facing, business, or policy-sensitive deployments&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compliance burden&lt;/td&gt;
          &lt;td&gt;Still requires application-level safeguards&lt;/td&gt;
          &lt;td&gt;Requires even stronger downstream safeguards because the model itself is less restrictive&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;the-core-difference-is-alignment-not-raw-capability&#34;&gt;The core difference is alignment, not raw capability
&lt;/h2&gt;&lt;p&gt;Many users mistakenly treat &amp;ldquo;uncensored&amp;rdquo; as if it means &amp;ldquo;smarter.&amp;rdquo; That is usually the wrong frame.&lt;/p&gt;
&lt;p&gt;For a derivative like this, what changes first is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how often the model refuses&lt;/li&gt;
&lt;li&gt;how strongly it follows harmful or policy-sensitive instructions&lt;/li&gt;
&lt;li&gt;how much filtering remains in its final answers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What does &lt;strong&gt;not&lt;/strong&gt; automatically change:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the underlying Gemma 4 family architecture&lt;/li&gt;
&lt;li&gt;context window class&lt;/li&gt;
&lt;li&gt;multimodal support class&lt;/li&gt;
&lt;li&gt;general reasoning ceiling&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, an uncensored derivative is often better described as a &lt;strong&gt;different behavioral tuning&lt;/strong&gt; of the same model family, not a higher-tier model.&lt;/p&gt;
&lt;h2 id=&#34;why-the-official-version-behaves-differently&#34;&gt;Why the official version behaves differently
&lt;/h2&gt;&lt;p&gt;Google&amp;rsquo;s official Gemma materials frame the family as being built for responsible AI development. The Gemma model card highlights misuse, harmful content, privacy, and bias risks, and Google&amp;rsquo;s Gemma Prohibited Use Policy explicitly forbids using Gemma or model derivatives to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;facilitate dangerous, illegal, or malicious activities&lt;/li&gt;
&lt;li&gt;generate harmful or deceptive content&lt;/li&gt;
&lt;li&gt;override or circumvent safety filters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the official model is not just &amp;ldquo;more conservative&amp;rdquo; by accident. Its surrounding policy and intended deployment posture are deliberately different.&lt;/p&gt;
&lt;h2 id=&#34;when-the-official-model-is-the-better-choice&#34;&gt;When the official model is the better choice
&lt;/h2&gt;&lt;p&gt;Use the official &lt;code&gt;google/gemma-4-E4B-it&lt;/code&gt; path if you care about:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;product deployment&lt;/li&gt;
&lt;li&gt;enterprise or team use&lt;/li&gt;
&lt;li&gt;lower legal and policy exposure&lt;/li&gt;
&lt;li&gt;fewer obviously unsafe outputs&lt;/li&gt;
&lt;li&gt;easier documentation and review&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For most normal applications, this is the safer default.&lt;/p&gt;
&lt;h2 id=&#34;when-people-choose-the-uncensored-derivative&#34;&gt;When people choose the uncensored derivative
&lt;/h2&gt;&lt;p&gt;Users usually choose an uncensored derivative for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;local private experimentation&lt;/li&gt;
&lt;li&gt;testing where the official model refuses too early&lt;/li&gt;
&lt;li&gt;roleplay or open-ended creative prompting&lt;/li&gt;
&lt;li&gt;comparing alignment behavior across variants&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But this comes with a real trade-off: you are moving more safety responsibility from the model provider to yourself.&lt;/p&gt;
&lt;h2 id=&#34;practical-conclusion&#34;&gt;Practical conclusion
&lt;/h2&gt;&lt;p&gt;The difference between a so-called &amp;ldquo;jailbroken&amp;rdquo; Gemma 4 E4B and the ordinary official version is mostly this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the official version is optimized for usable capability &lt;strong&gt;with guardrails&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;the uncensored derivative is optimized for fewer refusals &lt;strong&gt;with weaker guardrails&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That does &lt;strong&gt;not&lt;/strong&gt; automatically make the uncensored model stronger. It mainly makes it more permissive.&lt;/p&gt;
&lt;p&gt;If your goal is stable, explainable, and lower-risk deployment, use the official model first. If your goal is local experimentation and you understand the compliance and safety trade-offs, then an uncensored derivative is a behavior variant worth testing separately, not a drop-in &amp;ldquo;better&amp;rdquo; replacement.&lt;/p&gt;
&lt;h2 id=&#34;sources&#34;&gt;Sources
&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>Deploy Hermes Agent Locally on Windows with WSL &#43; Ollama and Connect Telegram</title>
        <link>https://knightli.com/en/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</link>
        <pubDate>Sat, 18 Apr 2026 00:48:22 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/18/windows-wsl-ollama-hermes-agent-telegram/</guid>
        <description>&lt;p&gt;If you want to run &lt;code&gt;Hermes Agent&lt;/code&gt; on &lt;code&gt;Windows&lt;/code&gt; with as little friction as possible, a practical path is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keep Windows as the host system&lt;/li&gt;
&lt;li&gt;run &lt;code&gt;Ubuntu&lt;/code&gt; inside &lt;code&gt;WSL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;use &lt;code&gt;Ollama&lt;/code&gt; to serve the local model&lt;/li&gt;
&lt;li&gt;let &lt;code&gt;Hermes Agent&lt;/code&gt; connect directly to the local Ollama endpoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach keeps the environment relatively clean, lets you run most commands in a Linux-style workflow, and avoids preparing a separate Linux machine.&lt;/p&gt;
&lt;h2 id=&#34;overall-flow&#34;&gt;Overall flow
&lt;/h2&gt;&lt;p&gt;You can split the setup into 4 steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable &lt;code&gt;WSL&lt;/code&gt; and install &lt;code&gt;Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install Python, Node.js, Git, and other basics inside Ubuntu&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;Ollama&lt;/code&gt; and pull a local model&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;Hermes Agent&lt;/code&gt;, then connect &lt;code&gt;Telegram&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If your goal is simply to get Hermes Agent running first, by the end of step 3 you are already close.&lt;/p&gt;
&lt;h2 id=&#34;1-install-wsl-and-ubuntu&#34;&gt;1. Install WSL and Ubuntu
&lt;/h2&gt;&lt;p&gt;Run this in PowerShell with administrator privileges:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;After the installation finishes, restart the PC, then continue with 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;After that, open Ubuntu in WSL. Most of the remaining commands are run there.&lt;/p&gt;
&lt;h2 id=&#34;2-update-ubuntu-and-install-the-base-environment&#34;&gt;2. Update Ubuntu and install the base environment
&lt;/h2&gt;&lt;p&gt;Update the system first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Then install Python, extraction tools, Node.js, and Git.&lt;/p&gt;
&lt;h3 id=&#34;install-python&#34;&gt;Install 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;install-zstd&#34;&gt;Install 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;install-nodejs&#34;&gt;Install 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;install-git&#34;&gt;Install 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;You can quickly verify the installation with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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-install-ollama-and-pull-gemma-4&#34;&gt;3. Install Ollama and pull Gemma 4
&lt;/h2&gt;&lt;p&gt;Install 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;If you want a local model for Hermes Agent, starting with &lt;code&gt;Gemma 4&lt;/code&gt; is reasonable.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If your machine is weaker, you can also try:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Larger variants include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;For most normal &lt;code&gt;Windows + WSL&lt;/code&gt; setups, &lt;code&gt;gemma4:e4b&lt;/code&gt; is usually the more practical starting point.&lt;/p&gt;
&lt;h2 id=&#34;4-install-and-configure-hermes-agent&#34;&gt;4. Install and configure Hermes Agent
&lt;/h2&gt;&lt;p&gt;Install it with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After installation, point it to the local Ollama 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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Use the local model name you actually installed, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the installer asks you to refresh the shell, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;common-hermes-agent-commands&#34;&gt;Common Hermes Agent commands
&lt;/h2&gt;&lt;p&gt;These are the commands you will use most often:&lt;/p&gt;
&lt;h3 id=&#34;start&#34;&gt;Start
&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;re-enter-setup&#34;&gt;Re-enter setup
&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;configure-the-chat-gateway&#34;&gt;Configure the chat gateway
&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;update&#34;&gt;Update
&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;basic-telegram-connection-steps&#34;&gt;Basic Telegram connection steps
&lt;/h2&gt;&lt;p&gt;If you want Hermes Agent to send and receive messages through Telegram, the core step is still:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then prepare the two Telegram-side items you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;create a bot with &lt;code&gt;BotFather&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;get your &lt;code&gt;User ID&lt;/code&gt; with &lt;code&gt;@userinfobot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once you have those basics, continue filling them into the Hermes Agent gateway setup.&lt;/p&gt;
&lt;h2 id=&#34;who-this-setup-fits&#34;&gt;Who this setup fits
&lt;/h2&gt;&lt;p&gt;This workflow is a good fit if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows is your main desktop system&lt;/li&gt;
&lt;li&gt;you do not want to maintain a separate Linux host&lt;/li&gt;
&lt;li&gt;you want to get a local Agent running first, then expand to chat platforms&lt;/li&gt;
&lt;li&gt;you prefer local models instead of depending on cloud APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you mainly want to experience a local Agent rather than build a full production deployment immediately, this path is already practical enough.&lt;/p&gt;
&lt;h2 id=&#34;a-few-things-to-keep-in-mind&#34;&gt;A few things to keep in mind
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;WSL&lt;/code&gt; is still a compatibility layer, so in extreme cases it may not behave exactly like native Linux&lt;/li&gt;
&lt;li&gt;whether a large model runs smoothly still depends on your RAM, VRAM, and CPU / GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gemma4:e4b&lt;/code&gt; is a realistic starting point, but actual experience still depends on the machine&lt;/li&gt;
&lt;li&gt;Hermes Agent platform integration is an extension step; getting the local model path working first, then adding Telegram, is usually more stable&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;If you want to deploy Hermes Agent locally on Windows with as little friction as possible, the smoother order is:&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;Get the local model running first, then add the gateway integration. That usually gives you a much higher success rate. For most users, this is easier to troubleshoot than piling on every component at the beginning, and it also leaves room for later expansion.&lt;/p&gt;
&lt;h2 id=&#34;original-reference&#34;&gt;Original reference
&lt;/h2&gt;&lt;p&gt;This post is rewritten and organized based on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xchaoge Blog: &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>Where Does llama-cli -hf Save Hugging Face Models by Default</title>
        <link>https://knightli.com/en/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/en/2026/04/17/llama-cli-hf-download-default-cache-path/</guid>
        <description>&lt;p&gt;If you use &lt;code&gt;llama-cli&lt;/code&gt; to download and run a model directly from Hugging Face, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;this uses the Hugging Face download support built into &lt;code&gt;llama.cpp&lt;/code&gt;. Recent &lt;code&gt;llama.cpp&lt;/code&gt; builds store models downloaded with &lt;code&gt;-hf&lt;/code&gt; in the standard Hugging Face Hub cache directory.&lt;/p&gt;
&lt;h2 id=&#34;default-cache-locations&#34;&gt;Default cache locations
&lt;/h2&gt;&lt;p&gt;The cache location used by &lt;code&gt;llama-cli -hf&lt;/code&gt; is first controlled by the &lt;code&gt;LLAMA_CACHE&lt;/code&gt; environment variable. If &lt;code&gt;LLAMA_CACHE&lt;/code&gt; is not set, &lt;code&gt;llama.cpp&lt;/code&gt; checks Hugging Face cache variables such as &lt;code&gt;HF_HUB_CACHE&lt;/code&gt;, &lt;code&gt;HUGGINGFACE_HUB_CACHE&lt;/code&gt;, and &lt;code&gt;HF_HOME&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If none of those variables are set, common default paths are:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;System&lt;/th&gt;
          &lt;th&gt;Default cache directory&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;On Windows, &lt;code&gt;%USERPROFILE%&lt;/code&gt; usually expands to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;So the default cache directory is roughly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;how-to-change-the-llama-cli-cache-directory&#34;&gt;How to change the llama-cli cache directory
&lt;/h2&gt;&lt;p&gt;Set &lt;code&gt;LLAMA_CACHE&lt;/code&gt; if you want to store the downloaded models on a specific disk or in a specific folder. You can also follow the Hugging Face convention and set &lt;code&gt;HF_HOME&lt;/code&gt;; in that case, the Hub cache directory will be &lt;code&gt;$HF_HOME/hub&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Temporary Windows CMD example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Temporary PowerShell example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Temporary Linux / macOS example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;llama-cli -hf ...&lt;/code&gt; uses the download logic from &lt;code&gt;llama.cpp&lt;/code&gt;, but recent builds default to the Hugging Face Hub cache.&lt;/li&gt;
&lt;li&gt;Linux / macOS default: &lt;code&gt;~/.cache/huggingface/hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Windows default: &lt;code&gt;%USERPROFILE%\.cache\huggingface\hub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;To change the location, set &lt;code&gt;LLAMA_CACHE&lt;/code&gt;, or set &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>How to Fix SSL Certificate Verification Failed When llama-cli Downloads from Hugging Face on Windows</title>
        <link>https://knightli.com/en/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/en/2026/04/17/llama-cli-hugging-face-ssl-certificate-failed-on-windows/</guid>
        <description>&lt;p&gt;If you run this command on 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;and see an error like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;the problem is usually not CUDA or &lt;code&gt;llama.cpp&lt;/code&gt; itself. More often, the program cannot correctly access the system certificate chain in the current environment, so HTTPS verification fails.&lt;/p&gt;
&lt;p&gt;From the log, &lt;code&gt;ggml-rpc.dll&lt;/code&gt; and &lt;code&gt;ggml-cpu-alderlake.dll&lt;/code&gt; were loaded successfully, which means the runtime environment is mostly fine. The issue is mainly in the model download step.&lt;/p&gt;
&lt;h2 id=&#34;the-easiest-workaround-download-the-model-manually&#34;&gt;The easiest workaround: download the model manually
&lt;/h2&gt;&lt;p&gt;If you just want to get it running quickly, downloading the model manually is usually the most stable option.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the matching Hugging Face repository page.&lt;/li&gt;
&lt;li&gt;Download the required &lt;code&gt;.gguf&lt;/code&gt; file from &lt;code&gt;Files and versions&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;After the download finishes, run it with the local file path:&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;This bypasses SSL verification during the &lt;code&gt;-hf&lt;/code&gt; download step and is useful when you only want to verify that the model can run locally.&lt;/p&gt;
&lt;h2 id=&#34;if-you-still-want-to-use--hf-automatic-download&#34;&gt;If you still want to use &lt;code&gt;-hf&lt;/code&gt; automatic download
&lt;/h2&gt;&lt;p&gt;You can manually specify a certificate file path so the program can find a usable CA bundle in the current session.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cacert.pem&lt;/code&gt; can be obtained from the CA Extract page maintained by the curl project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Page: &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;Direct download: &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;If you download it in a browser, open the direct download link and save it as &lt;code&gt;cacert.pem&lt;/code&gt;. You can also download it to a fixed directory with 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;After the download finishes, set these variables in the command line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Then run the original command again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;If the issue really comes from the certificate chain, this usually fixes it directly.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>codex-quota Practical Guide: Local, Web, and Docker Usage with Original CLI Commands</title>
        <link>https://knightli.com/en/2026/04/16/codex-quota-cli-web-docker-guide/</link>
        <pubDate>Thu, 16 Apr 2026 18:13:04 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/16/codex-quota-cli-web-docker-guide/</guid>
        <description>&lt;h2 id=&#34;what-this-project-does&#34;&gt;What This Project Does
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;codex-quota&lt;/code&gt; is a lightweight tool for checking ChatGPT Codex quota usage, with data fetched from &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Main features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Supports both single-account and multi-account queries (&lt;code&gt;account/*.auth.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Outputs &lt;code&gt;five_hour%&lt;/code&gt;, &lt;code&gt;weekly%&lt;/code&gt;, &lt;code&gt;weekly_reset&lt;/code&gt;, and marks the source (&lt;code&gt;network&lt;/code&gt; or &lt;code&gt;cache&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Uses exponential backoff retries for temporary failures (&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;Includes local caching to reduce repeated requests when quota is already exhausted.&lt;/li&gt;
&lt;li&gt;Provides a Web Dashboard, JSON API, and auth file management pages.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Advantages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lightweight: runs with simple scripts and minimal dependencies.&lt;/li&gt;
&lt;li&gt;Practical: supports both CLI and Web entry points.&lt;/li&gt;
&lt;li&gt;Deployable: works with Docker and Docker Compose.&lt;/li&gt;
&lt;li&gt;Easy to operate: includes retry, cache, and scheduled refresh support.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;prepare-account-credentials-first&#34;&gt;Prepare Account Credentials First
&lt;/h2&gt;&lt;p&gt;Create credential files in &lt;code&gt;account/&amp;lt;name&amp;gt;.auth.json&lt;/code&gt;, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Explanation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt; and &lt;code&gt;account_id&lt;/code&gt; are required by the usage API.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; in the filename is used as the account name in output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;local-cli-usage-keep-original-commands&#34;&gt;Local CLI Usage (Keep Original Commands)
&lt;/h2&gt;&lt;p&gt;Install dependencies:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: installs project dependencies.&lt;/p&gt;
&lt;p&gt;Query all accounts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: reads &lt;code&gt;account/*.auth.json&lt;/code&gt; and outputs quota summary for all accounts.&lt;/p&gt;
&lt;p&gt;Query one account:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: only queries &lt;code&gt;account/your_account_name.auth.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Force refresh (skip cache):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: ignores local cache and fetches fresh data directly.&lt;/p&gt;
&lt;h2 id=&#34;cli-options-aligned-with-readme&#34;&gt;CLI Options (Aligned with README)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;account_name&lt;/code&gt;: optional account name (without &lt;code&gt;.auth.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;: auth directory, default &lt;code&gt;account&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;: quota API endpoint.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-json&lt;/code&gt;: print full JSON response body.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--raw-headers&lt;/code&gt;: print response headers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;: ignore cache.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;: retry count, default &lt;code&gt;3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;: base retry delay in seconds, default &lt;code&gt;2.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;web-dashboard-usage-keep-original-command&#34;&gt;Web Dashboard Usage (Keep Original Command)
&lt;/h2&gt;&lt;p&gt;Start the service:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: starts HTTP service listening on port &lt;code&gt;8081&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Access URL: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Service options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--host&lt;/code&gt;: bind address, default &lt;code&gt;0.0.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--port&lt;/code&gt;: service port, default &lt;code&gt;8081&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--interval-seconds&lt;/code&gt;: scheduled refresh interval, default &lt;code&gt;3600&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--account-dir&lt;/code&gt;: auth directory, default &lt;code&gt;account&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--state-file&lt;/code&gt;: state file path, default &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;: optional single-account mode.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--chatgpt-url&lt;/code&gt;: quota API endpoint.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retries&lt;/code&gt;: retry count.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--retry-delay&lt;/code&gt;: base retry delay.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--refresh&lt;/code&gt;: ignore CLI cache during scheduled runs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;http-endpoints-for-automation&#34;&gt;HTTP Endpoints (For Automation)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /&lt;/code&gt;: dashboard page.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/results&lt;/code&gt;: latest results in JSON.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /refresh&lt;/code&gt;: trigger immediate refresh and redirect to &lt;code&gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth&lt;/code&gt;: list auth files.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/new&lt;/code&gt;: form to create auth file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /auth/edit?name=&amp;lt;account&amp;gt;&lt;/code&gt;: form to edit auth file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/save&lt;/code&gt;: create/update auth file.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /auth/delete&lt;/code&gt;: delete auth file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;docker-usage-keep-original-commands&#34;&gt;Docker Usage (Keep Original Commands)
&lt;/h2&gt;&lt;p&gt;Build image:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: builds the current project as image &lt;code&gt;codex-quota&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Run container (map 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;Explanation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--rm&lt;/code&gt;: remove container automatically after exit.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p 8081:8081&lt;/code&gt;: map host port to container port.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-v ./account:/app/account&lt;/code&gt;: mount local credentials into container.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access URL: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;docker-compose-usage-keep-original-command&#34;&gt;Docker Compose Usage (Keep Original Command)
&lt;/h2&gt;&lt;p&gt;Start:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Explanation: build and start services based on &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Access URL: &lt;code&gt;http://localhost:8081&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;usage-tips&#34;&gt;Usage Tips
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;For multi-account scenarios, use Dashboard first for unified view and auth management.&lt;/li&gt;
&lt;li&gt;For alerting or automation, prefer &lt;code&gt;GET /api/results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Do not commit real &lt;code&gt;access_token&lt;/code&gt; values to public repositories.&lt;/li&gt;
&lt;li&gt;If you see many temporary failures, increase &lt;code&gt;--retries&lt;/code&gt; and &lt;code&gt;--retry-delay&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Using Claude in VS Code: From API Setup to Page Generation</title>
        <link>https://knightli.com/en/2026/04/16/vscode-claude-api-coding-workflow/</link>
        <pubDate>Thu, 16 Apr 2026 17:47:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/16/vscode-claude-api-coding-workflow/</guid>
        <description>&lt;p&gt;Once you start bringing large models into daily development, the biggest shift is usually not whether they can write code. It is whether they can move a pile of small, scattered tasks forward in one go.&lt;/p&gt;
&lt;p&gt;The real value of these tools is not just filling in a few lines. It is the ability to chat, edit files, preview results, and keep iterating without leaving the editor. For simple pages, quick prototypes, style adjustments, and small feature additions, that workflow often feels much smoother than constantly switching back and forth manually.&lt;/p&gt;
&lt;p&gt;This article summarizes a practical approach: after connecting a Claude-like model to &lt;code&gt;VS Code&lt;/code&gt;, how do you actually use it for page generation and small feature iteration?&lt;/p&gt;
&lt;h2 id=&#34;1-get-the-toolchain-connected-first&#34;&gt;1. Get the toolchain connected first
&lt;/h2&gt;&lt;p&gt;The core flow for this kind of AI coding plugin is usually simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install a plugin in &lt;code&gt;VS Code&lt;/code&gt; that supports conversational code editing&lt;/li&gt;
&lt;li&gt;Fill in the model service &lt;code&gt;Base URL&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Add your own &lt;code&gt;API Key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Choose the model name you want to use&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once those steps are done, the AI side of the editor is truly usable. After that, the differences in experience are less about whether it works at all, and more about model quality, plugin interaction, and how stable the generated output is.&lt;/p&gt;
&lt;p&gt;If you have never configured this kind of plugin before, it helps to think of it this way:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The plugin turns your natural-language request into editor actions&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;API&lt;/code&gt; sends that request to a model service&lt;/li&gt;
&lt;li&gt;The model interprets your intent and returns code, edits, or structured results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the real matching work is about three things: the plugin, the endpoint, and the model name.&lt;/p&gt;
&lt;h2 id=&#34;2-start-with-small-tasks&#34;&gt;2. Start with small tasks
&lt;/h2&gt;&lt;p&gt;A lot of people want the tool to build a complete project on the first try. That can work, but for most beginners, the fastest way to build the right expectations is to start with something much smaller.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generate a simple frontend page&lt;/li&gt;
&lt;li&gt;Add a notice section to an existing page&lt;/li&gt;
&lt;li&gt;Create a registration form&lt;/li&gt;
&lt;li&gt;Make the UI feel a bit more polished and formal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tasks like these help because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The prompt is clearer, so the model has less room to misunderstand&lt;/li&gt;
&lt;li&gt;You can preview the result immediately&lt;/li&gt;
&lt;li&gt;You can clearly see how conversation and file edits work together&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the request is specific enough, the plugin often chats with you in a sidebar while editing files at the same time. Then you inspect the result, preview the page, and decide whether to add another request. That rhythm feels much closer to real work than plain chat alone.&lt;/p&gt;
&lt;h2 id=&#34;3-the-real-gain-is-iterative-work-not-one-shot-generation&#34;&gt;3. The real gain is iterative work, not one-shot generation
&lt;/h2&gt;&lt;p&gt;One common misunderstanding about AI coding is focusing too much on whether the first result looks impressive.&lt;/p&gt;
&lt;p&gt;In practice, what matters more is whether the second and third rounds still move in the right direction.&lt;/p&gt;
&lt;p&gt;A common pattern looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ask for a working page skeleton&lt;/li&gt;
&lt;li&gt;Add one or two clear follow-up features&lt;/li&gt;
&lt;li&gt;Check whether the code and UI both become more complete&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If the tool feels smooth, it starts to resemble working with a very fast junior developer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You describe the task&lt;/li&gt;
&lt;li&gt;It produces a first pass&lt;/li&gt;
&lt;li&gt;You point out what is missing&lt;/li&gt;
&lt;li&gt;It keeps refining&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That kind of iterative, conversational workflow is much closer to real development, and it is where these tools can create the biggest productivity difference.&lt;/p&gt;
&lt;h2 id=&#34;4-know-what-to-hand-to-ai-and-what-to-fix-yourself&#34;&gt;4. Know what to hand to AI and what to fix yourself
&lt;/h2&gt;&lt;p&gt;This distinction matters a lot.&lt;/p&gt;
&lt;p&gt;Page layout, component drafts, form scaffolding, style polishing, placeholder copy, and repetitive boilerplate are often great candidates for AI.&lt;/p&gt;
&lt;p&gt;But if all you need is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one button label changed&lt;/li&gt;
&lt;li&gt;one footer sentence adjusted&lt;/li&gt;
&lt;li&gt;one tiny style tweak&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;it is often faster to just edit it yourself. At that point, the change is too small to justify another full model interaction.&lt;/p&gt;
&lt;p&gt;The efficient approach is not to give everything to AI. It is to know when to let it handle a big chunk at once and when it is quicker to finish the last few details by hand.&lt;/p&gt;
&lt;h2 id=&#34;5-api-setup-is-a-hurdle-but-not-the-hard-part&#34;&gt;5. API setup is a hurdle, but not the hard part
&lt;/h2&gt;&lt;p&gt;Many people do not get stuck on coding. They get stuck on configuration.&lt;/p&gt;
&lt;p&gt;The usual checks are straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the endpoint correct?&lt;/li&gt;
&lt;li&gt;Is the key valid?&lt;/li&gt;
&lt;li&gt;Does the model name match the service?&lt;/li&gt;
&lt;li&gt;Does the plugin expect a specific &lt;code&gt;Base URL&lt;/code&gt; format?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If any one of those is wrong, the plugin may still open normally while requests fail underneath.&lt;/p&gt;
&lt;p&gt;So if the integration is not working, a practical troubleshooting order is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the endpoint&lt;/li&gt;
&lt;li&gt;Check the key&lt;/li&gt;
&lt;li&gt;Check the model name and URL format requirements&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Those three items solve most setup issues quickly.&lt;/p&gt;
&lt;h2 id=&#34;6-how-to-judge-whether-the-output-is-worth-using&#34;&gt;6. How to judge whether the output is worth using
&lt;/h2&gt;&lt;p&gt;A practical standard is not whether the output feels flashy. It is whether it holds up in a few basic ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does the generated page run right away?&lt;/li&gt;
&lt;li&gt;Is the structure reasonably clear?&lt;/li&gt;
&lt;li&gt;Does it stay on track after follow-up requests?&lt;/li&gt;
&lt;li&gt;Does it remain consistent as the edit scope gets larger?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If one or two rounds are enough to move a page from blank to something you can keep refining, the tool is already useful.&lt;/p&gt;
&lt;p&gt;If every result requires major rework, then it is not really saving time. It is only turning writing code into reviewing code.&lt;/p&gt;
&lt;h2 id=&#34;closing&#34;&gt;Closing
&lt;/h2&gt;&lt;p&gt;The most exciting part of using Claude-like models in &lt;code&gt;VS Code&lt;/code&gt; is not the fantasy of never writing code again. It is that many scattered, repetitive, context-breaking tasks can be pushed forward in one pass.&lt;/p&gt;
&lt;p&gt;A more grounded workflow looks like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;let AI build the first page and feature skeleton&lt;/li&gt;
&lt;li&gt;use two or three conversational rounds to refine it&lt;/li&gt;
&lt;li&gt;handle the small, definite finishing edits yourself&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Used that way, AI becomes an accelerator rather than a replacement that has to take over the whole development process.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Claude Identity Verification: Why It Exists, What You Need, and How Data Is Handled</title>
        <link>https://knightli.com/en/2026/04/16/claude-identity-verification-guide/</link>
        <pubDate>Thu, 16 Apr 2026 09:20:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/16/claude-identity-verification-guide/</guid>
        <description>&lt;p&gt;Anthropic is gradually rolling out identity verification on Claude. According to the official help article, this is not simply an added barrier. It is part of platform integrity, safety, compliance, and abuse-prevention work.&lt;/p&gt;
&lt;p&gt;In short, Claude identity verification is meant to solve three problems:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm who is using powerful AI tools.&lt;/li&gt;
&lt;li&gt;Help enforce usage policies and reduce abuse.&lt;/li&gt;
&lt;li&gt;Meet necessary legal and compliance obligations.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you see an identity verification prompt while accessing certain Claude features, it usually means the platform is running a routine safety and compliance check. Anthropic also states that verification data is used only to confirm your identity, not for other purposes.&lt;/p&gt;
&lt;h2 id=&#34;01-when-verification-may-be-required&#34;&gt;01 When Verification May Be Required
&lt;/h2&gt;&lt;p&gt;The official document does not list every trigger condition. It only says identity verification is being rolled out for some use cases and may appear when you access certain features.&lt;/p&gt;
&lt;p&gt;That means a verification prompt does not necessarily mean your account has a problem. More common cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are using a feature that requires a higher trust level.&lt;/li&gt;
&lt;li&gt;The platform is running an integrity check.&lt;/li&gt;
&lt;li&gt;Your account or usage scenario has triggered a safety and compliance process.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From a user perspective, the most important thing is knowing what you need before the verification flow starts.&lt;/p&gt;
&lt;h2 id=&#34;02-who-handles-verification&#34;&gt;02 Who Handles Verification
&lt;/h2&gt;&lt;p&gt;Claude identity verification is handled by Anthropic together with the third-party verification provider &lt;code&gt;Persona Identities&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Anthropic says it chose Persona because of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Technical strength&lt;/li&gt;
&lt;li&gt;Privacy controls&lt;/li&gt;
&lt;li&gt;Security safeguards&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, Anthropic sets the rules for how verification data is used and retained, while Persona processes the verification flow according to Anthropic&amp;rsquo;s instructions.&lt;/p&gt;
&lt;h2 id=&#34;03-what-you-need&#34;&gt;03 What You Need
&lt;/h2&gt;&lt;p&gt;Before starting verification, prepare three things:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;A valid government-issued photo ID&lt;/td&gt;
          &lt;td&gt;It must be a physical document and available nearby&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A phone or computer with a camera&lt;/td&gt;
          &lt;td&gt;You may need to take a live selfie or use a webcam&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;A few minutes&lt;/td&gt;
          &lt;td&gt;Verification usually takes less than 5 minutes&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your ID is not nearby or your device has no camera, the verification process may be interrupted.&lt;/p&gt;
&lt;h2 id=&#34;04-accepted-id-types&#34;&gt;04 Accepted ID Types
&lt;/h2&gt;&lt;p&gt;Anthropic accepts original, physical, government-issued photo IDs from most countries. Common examples include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Passport&lt;/li&gt;
&lt;li&gt;Driver&amp;rsquo;s license&lt;/li&gt;
&lt;li&gt;State, provincial, or regional ID&lt;/li&gt;
&lt;li&gt;National ID card&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The document must meet these basic requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Issued by a government&lt;/li&gt;
&lt;li&gt;Includes your photo&lt;/li&gt;
&lt;li&gt;Clear and readable&lt;/li&gt;
&lt;li&gt;Undamaged&lt;/li&gt;
&lt;li&gt;Not a copy or screenshot&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05-what-is-not-accepted&#34;&gt;05 What Is Not Accepted
&lt;/h2&gt;&lt;p&gt;These materials generally cannot be used for Claude identity verification:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copies&lt;/li&gt;
&lt;li&gt;Screenshots&lt;/li&gt;
&lt;li&gt;Scans&lt;/li&gt;
&lt;li&gt;Photos of photos of an ID&lt;/li&gt;
&lt;li&gt;Digital or mobile IDs, such as mobile driver&amp;rsquo;s licenses&lt;/li&gt;
&lt;li&gt;Non-government IDs, such as student IDs, employee badges, library cards, or bank cards&lt;/li&gt;
&lt;li&gt;Temporary paper IDs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is an easy place to make a mistake. The requirement is not just &amp;ldquo;readable&amp;rdquo;; it must be an original, physical, government-issued ID.&lt;/p&gt;
&lt;h2 id=&#34;06-how-data-is-protected&#34;&gt;06 How Data Is Protected
&lt;/h2&gt;&lt;p&gt;This is the most important part of the document.&lt;/p&gt;
&lt;p&gt;Anthropic&amp;rsquo;s explanation can be summarized as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Anthropic is the data controller for verification data and sets rules for use and retention.&lt;/li&gt;
&lt;li&gt;Persona is the processor and performs verification on Anthropic&amp;rsquo;s behalf.&lt;/li&gt;
&lt;li&gt;ID documents and selfies are collected and stored by Persona, not directly in Anthropic&amp;rsquo;s systems.&lt;/li&gt;
&lt;li&gt;Anthropic can access verification records through Persona when needed, such as when reviewing appeals.&lt;/li&gt;
&lt;li&gt;Persona is contractually limited in how it can use the data, mainly to provide and support verification and improve fraud prevention.&lt;/li&gt;
&lt;li&gt;Data sent to Persona is encrypted in transit and at rest.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In other words, the ID and selfie you submit are not treated as ordinary account profile data for general use. They are restricted to identity verification and compliance workflows.&lt;/p&gt;
&lt;h2 id=&#34;07-what-anthropic-says-it-does-not-do&#34;&gt;07 What Anthropic Says It Does Not Do
&lt;/h2&gt;&lt;p&gt;The official article explicitly lists several things Anthropic does not do:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It does not use identity verification data to train models.&lt;/li&gt;
&lt;li&gt;It does not collect more information than needed to verify identity.&lt;/li&gt;
&lt;li&gt;It does not use identity data for marketing, advertising, or unrelated purposes.&lt;/li&gt;
&lt;li&gt;It does not share verification data with unrelated third parties unless legally required to respond to valid legal process.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This matters because the sensitive part of identity verification is not only taking a photo of an ID, but what happens to the data afterward. Anthropic&amp;rsquo;s position in this document is that verification data is used only for identity confirmation, legal obligations, and safety compliance.&lt;/p&gt;
&lt;h2 id=&#34;08-what-if-verification-fails&#34;&gt;08 What If Verification Fails
&lt;/h2&gt;&lt;p&gt;Verification can fail for ordinary reasons, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blurry photos&lt;/li&gt;
&lt;li&gt;Poor lighting&lt;/li&gt;
&lt;li&gt;Unclear ID information&lt;/li&gt;
&lt;li&gt;Expired documents&lt;/li&gt;
&lt;li&gt;Technical issues&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Anthropic recommends this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Try again. The verification flow usually allows multiple attempts.&lt;/li&gt;
&lt;li&gt;Retake the photo in better lighting.&lt;/li&gt;
&lt;li&gt;Check that the ID is clear, complete, and not expired.&lt;/li&gt;
&lt;li&gt;If you have another government-issued photo ID, try that.&lt;/li&gt;
&lt;li&gt;If you run out of attempts and still cannot verify, contact support through the official form.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In practice, the most common fix is better lighting and a properly focused camera.&lt;/p&gt;
&lt;h2 id=&#34;09-why-an-account-may-still-be-disabled-after-verification&#34;&gt;09 Why an Account May Still Be Disabled After Verification
&lt;/h2&gt;&lt;p&gt;Passing identity verification does not guarantee that an account will never be restricted. Anthropic says accounts may still be disabled for other safety-process reasons, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Repeated violations of usage policies&lt;/li&gt;
&lt;li&gt;Creating an account from an unsupported location&lt;/li&gt;
&lt;li&gt;Violating the Terms of Service&lt;/li&gt;
&lt;li&gt;Use by someone under 18&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you believe your account was disabled by mistake, you can submit the official appeal form with your account information so the safety team can investigate.&lt;/p&gt;
&lt;h2 id=&#34;10-how-users-should-prepare&#34;&gt;10 How Users Should Prepare
&lt;/h2&gt;&lt;p&gt;If you plan to keep using Claude, especially higher-trust features, prepare these things ahead of time:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Have a valid, unexpired, physical government-issued photo ID ready.&lt;/li&gt;
&lt;li&gt;Make sure your camera works, ideally on both phone and computer.&lt;/li&gt;
&lt;li&gt;Verify in a well-lit environment.&lt;/li&gt;
&lt;li&gt;Do not upload screenshots, scans, or photos of ID photos.&lt;/li&gt;
&lt;li&gt;If verification fails, check image clarity and lighting before contacting support.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For most users, Claude identity verification is not a complicated process, but it is strict about document authenticity. If the document type is correct and the photo is clear, it usually takes only a few minutes.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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;Identity verification on 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 Privacy Policy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>How Codex Usage Limits Work: 5-Hour Limits, Weekly Limits, and Credits</title>
        <link>https://knightli.com/en/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/en/2026/04/15/codex-usage-limits-five-hour-weekly-credits/</guid>
        <description>&lt;p&gt;When people first look at Codex usage limits, it is easy to assume that the &lt;code&gt;5-hour limit&lt;/code&gt; is a short-term balance, and that the &lt;code&gt;weekly limit&lt;/code&gt; only starts decreasing after the 5-hour quota is used up.&lt;/p&gt;
&lt;p&gt;That is not how it works. Codex is better understood as checking multiple limit windows at the same time: a short window prevents burst usage, while the weekly window controls total usage over the week. A Codex request usually counts against both.&lt;/p&gt;
&lt;p&gt;So this situation is usually normal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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-hour quota still has plenty left
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;but weekly quota has already decreased
&lt;/span&gt;&lt;/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;01-the-short-version&#34;&gt;01 The Short Version
&lt;/h2&gt;&lt;p&gt;You can understand Codex usage with three rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;code&gt;5-hour limit&lt;/code&gt; and the &lt;code&gt;weekly limit&lt;/code&gt; apply at the same time.&lt;/li&gt;
&lt;li&gt;If the weekly limit is exhausted, you usually cannot continue using the same subscription quota pool even if the 5-hour quota still has room.&lt;/li&gt;
&lt;li&gt;Codex is not priced by simple message count. Usage depends on the model, tokens, task complexity, context size, and execution location.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In pseudocode:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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; no other product policy is triggered
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When the 5-hour window resets, only the 5-hour quota is restored. It does not restore weekly quota. Weekly quota resets on its own schedule, or you may be able to buy extra credits on supported plans.&lt;/p&gt;
&lt;h2 id=&#34;02-why-both-windows-decrease&#34;&gt;02 Why Both Windows Decrease
&lt;/h2&gt;&lt;p&gt;Think of Codex limits as two gates:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Window&lt;/th&gt;
          &lt;th&gt;Purpose&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;5-hour window&lt;/td&gt;
          &lt;td&gt;Prevents high-frequency burst usage&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Weekly window&lt;/td&gt;
          &lt;td&gt;Controls total weekly usage&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each Codex task creates real usage. That usage is reflected in the relevant rate limit windows.&lt;/p&gt;
&lt;p&gt;It is not:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Use 5-hour quota first
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;After the 5-hour quota runs out
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Start using weekly 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;It is closer to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;One Codex request
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; counts toward the 5-hour window
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;=&amp;gt; also counts toward the weekly window
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That is why weekly usage can drop even when the 5-hour quota is not exhausted.&lt;/p&gt;
&lt;h2 id=&#34;03-look-at-token-based-credits&#34;&gt;03 Look at Token-Based Credits
&lt;/h2&gt;&lt;p&gt;OpenAI does not publish a formula that lets users fully reproduce the exact Codex charge. What is public is the rate card, the main factors, and per-model credit pricing.&lt;/p&gt;
&lt;p&gt;As of 2026-04-15, the main Codex rate card model is &lt;code&gt;token-based credits&lt;/code&gt;. Usage is estimated from input tokens, cached input tokens, and output tokens.&lt;/p&gt;
&lt;p&gt;Example official rates:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Input / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Cached input / 1M tokens&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Output / 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;A rough estimate is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;usage
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;≈ input tokens / 1,000,000 × model input price
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ cached input tokens / 1,000,000 × model cached input price
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ output tokens / 1,000,000 × model output price
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is not an exact billing formula, but it explains the trend: output is expensive, long context is expensive, and stronger models cost more. The official rate card also says &lt;code&gt;Fast mode&lt;/code&gt; uses 2x credits, and &lt;code&gt;Code review&lt;/code&gt; uses GPT-5.3-Codex pricing.&lt;/p&gt;
&lt;h2 id=&#34;04-do-not-only-count-messages&#34;&gt;04 Do Not Only Count Messages
&lt;/h2&gt;&lt;p&gt;Ten Codex messages can consume very different amounts.&lt;/p&gt;
&lt;p&gt;Light tasks are usually cheaper:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editing one small function&lt;/li&gt;
&lt;li&gt;Explaining a short code snippet&lt;/li&gt;
&lt;li&gt;Writing a short paragraph&lt;/li&gt;
&lt;li&gt;Making a local change in a clearly specified file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Heavy tasks cost more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scanning a large codebase&lt;/li&gt;
&lt;li&gt;Running a long agent session&lt;/li&gt;
&lt;li&gt;Repeated read, edit, test, and fix loops&lt;/li&gt;
&lt;li&gt;Generating lots of code or a long report&lt;/li&gt;
&lt;li&gt;Using cloud tasks&lt;/li&gt;
&lt;li&gt;Enabling fast mode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So message count is only a rough feeling. It does not tell you the real usage.&lt;/p&gt;
&lt;h2 id=&#34;05-local-tasks-vs-cloud-tasks&#34;&gt;05 Local Tasks vs Cloud Tasks
&lt;/h2&gt;&lt;p&gt;Execution location can make a big difference.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;local task&lt;/code&gt; works in your local workspace: reading files, editing code, and running commands. A &lt;code&gt;cloud task&lt;/code&gt; is delegated to a hosted cloud environment, which is better for longer and more automated workflows.&lt;/p&gt;
&lt;p&gt;Cloud tasks are often more expensive because they involve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A hosted execution environment&lt;/li&gt;
&lt;li&gt;Longer tasks&lt;/li&gt;
&lt;li&gt;More tool calls&lt;/li&gt;
&lt;li&gt;Larger context&lt;/li&gt;
&lt;li&gt;A more complete automation loop&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For normal code edits, article cleanup, or small fixes, local tasks are usually cheaper. Use cloud tasks when the job truly needs hosted execution.&lt;/p&gt;
&lt;h2 id=&#34;06-why-weekly-usage-drops-fast&#34;&gt;06 Why Weekly Usage Drops Fast
&lt;/h2&gt;&lt;p&gt;If your 5-hour quota barely moves but weekly usage drops a lot, common causes include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You used cloud tasks.&lt;/li&gt;
&lt;li&gt;You used a more expensive model.&lt;/li&gt;
&lt;li&gt;You enabled fast mode.&lt;/li&gt;
&lt;li&gt;The context was large, with many files or a long conversation.&lt;/li&gt;
&lt;li&gt;The output was long, such as lots of code, a long report, or log analysis.&lt;/li&gt;
&lt;li&gt;The task chain was long: search, edit, test, fix, test again.&lt;/li&gt;
&lt;li&gt;Your quota script mislabeled the limit windows.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you read fields from something like &lt;code&gt;/backend-api/wham/usage&lt;/code&gt;, do not only trust processed labels such as &lt;code&gt;five_hour%&lt;/code&gt; or &lt;code&gt;weekly%&lt;/code&gt;. Check the raw JSON fields:&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 name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Typical 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;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; about 5 hours
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#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; about 7 days
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If your script labels the windows backwards, the quota display will be misleading.&lt;/p&gt;
&lt;h2 id=&#34;07-how-to-save-quota&#34;&gt;07 How to Save Quota
&lt;/h2&gt;&lt;p&gt;To make weekly quota last longer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Split large jobs into smaller tasks.&lt;/li&gt;
&lt;li&gt;Prefer local tasks when possible.&lt;/li&gt;
&lt;li&gt;Tell Codex the relevant paths to reduce unnecessary scanning.&lt;/li&gt;
&lt;li&gt;Avoid dumping huge logs, long files, or unrelated context.&lt;/li&gt;
&lt;li&gt;Use cheaper mini models for light work.&lt;/li&gt;
&lt;li&gt;Ask for a plan before starting a long task.&lt;/li&gt;
&lt;li&gt;Ask for concise answers when you do not need a long report.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A useful mental model:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;can continue using
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= short window has quota
&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 window has quota
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usage speed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;= model price
&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;× output length
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× task complexity
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;× execution location
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This model is not exact billing math, but it explains most Codex usage-limit behavior.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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 Project Notes: Features and Usage of an Open-Source RAG Engine</title>
        <link>https://knightli.com/en/2026/04/15/ragflow-rag-engine-guide/</link>
        <pubDate>Wed, 15 Apr 2026 22:09:25 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/15/ragflow-rag-engine-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;RAGFlow&lt;/code&gt; is an open-source RAG engine from &lt;code&gt;infiniflow&lt;/code&gt;. Its goal is not merely to provide a thin “upload documents and ask questions” shell, but to bring document parsing, chunking, retrieval, reranking, citation tracing, model configuration, agent capabilities, and API integration into one complete workflow.&lt;/p&gt;
&lt;p&gt;If you are building an enterprise knowledge base, document Q&amp;amp;A, a support assistant, internal information retrieval, or you want to give an LLM a more reliable context layer, RAGFlow is one of the open-source options worth serious attention.&lt;/p&gt;
&lt;h2 id=&#34;01-what-problem-ragflow-solves&#34;&gt;01 What Problem RAGFlow Solves
&lt;/h2&gt;&lt;p&gt;Most RAG systems run into three common issues:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Document parsing is unstable, especially for PDFs, scanned files, tables, images, and complex layouts.&lt;/li&gt;
&lt;li&gt;Chunking strategy is opaque, so retrieval may look correct while the actual context is incomplete.&lt;/li&gt;
&lt;li&gt;Answers lack trustworthy citations, making it hard for users to verify where the response came from.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;RAGFlow focuses on exactly these problems. The project README emphasizes &lt;code&gt;Deep document understanding&lt;/code&gt;, template-based chunking, chunk visualization, citation grounding, and multi-path retrieval with reranking. In other words, it cares more about “high-quality input leads to high-quality answers” than simply wiring a vector database to a chat UI.&lt;/p&gt;
&lt;h2 id=&#34;02-core-features&#34;&gt;02 Core Features
&lt;/h2&gt;&lt;h3 id=&#34;1-deep-document-understanding&#34;&gt;1. Deep Document Understanding
&lt;/h3&gt;&lt;p&gt;RAGFlow can extract knowledge from complex unstructured data. The README lists formats such as Word, PPT, Excel, TXT, images, scanned documents, structured data, and web pages.&lt;/p&gt;
&lt;p&gt;This matters a lot for enterprise knowledge bases. Real-world material is rarely clean Markdown. It is usually a mix of contracts, reports, tables, scanned PDFs, product manuals, screenshots, and web content. If parsing quality is weak, retrieval and LLM answers will both suffer.&lt;/p&gt;
&lt;h3 id=&#34;2-template-based-chunking&#34;&gt;2. Template-Based Chunking
&lt;/h3&gt;&lt;p&gt;RAGFlow provides template-based chunking. The value here is that chunking is not a black box; different document types can use different strategies.&lt;/p&gt;
&lt;p&gt;For example, articles, papers, tables, Q&amp;amp;A documents, image explanations, and contract clauses all need different chunk boundaries and granularity. Template-based chunking helps reduce problems like broken sentences, lost table context, and separated headings and body text.&lt;/p&gt;
&lt;h3 id=&#34;3-traceable-citations&#34;&gt;3. Traceable Citations
&lt;/h3&gt;&lt;p&gt;RAGFlow emphasizes grounded citations, meaning answers can be traced back to source passages. It also offers chunk visualization, making it easier for people to inspect and adjust parsing and chunking results.&lt;/p&gt;
&lt;p&gt;This is especially important in production. Internal enterprise Q&amp;amp;A is not only about producing something that “looks right”; it also has to be verifiable. For policy, compliance, finance, technical documents, and customer support content, citations and traceability are close to mandatory.&lt;/p&gt;
&lt;h3 id=&#34;4-automated-rag-workflow&#34;&gt;4. Automated RAG Workflow
&lt;/h3&gt;&lt;p&gt;RAGFlow turns the RAG lifecycle into a more complete workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a knowledge base&lt;/li&gt;
&lt;li&gt;Upload or sync data&lt;/li&gt;
&lt;li&gt;Parse documents&lt;/li&gt;
&lt;li&gt;Review and adjust chunks&lt;/li&gt;
&lt;li&gt;Configure LLM and embedding models&lt;/li&gt;
&lt;li&gt;Run multi-path retrieval and reranking&lt;/li&gt;
&lt;li&gt;Build chat assistants&lt;/li&gt;
&lt;li&gt;Integrate through APIs into business systems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes it closer to a RAG platform than a single library. For teams, both the UI and the API matter: non-engineers can maintain the knowledge base, while engineers can integrate the capability into existing systems.&lt;/p&gt;
&lt;h3 id=&#34;5-agent-mcp-and-workflow-extensions&#34;&gt;5. Agent, MCP, and Workflow Extensions
&lt;/h3&gt;&lt;p&gt;Recent RAGFlow updates already include Agentic workflow, MCP, Agent Memory, and code execution components. That suggests it is no longer limited to traditional knowledge-base Q&amp;amp;A and is also moving toward agent-oriented scenarios.&lt;/p&gt;
&lt;p&gt;A typical pattern is that an agent can use RAGFlow as a reliable enterprise knowledge layer: retrieve from the knowledge base when it needs context, generate answers with citations, and combine that with tools or workflow steps when necessary.&lt;/p&gt;
&lt;h2 id=&#34;03-basic-usage-flow&#34;&gt;03 Basic Usage Flow
&lt;/h2&gt;&lt;p&gt;According to the official quickstart documentation, the common usage path for RAGFlow can be summarized in the following steps.&lt;/p&gt;
&lt;h3 id=&#34;1-prepare-the-environment&#34;&gt;1. Prepare the Environment
&lt;/h3&gt;&lt;p&gt;The basic requirements listed in the official README are:&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;If you want to use the sandbox for the code executor, you also need &lt;code&gt;gVisor&lt;/code&gt;. Another practical note is that the official Docker images mainly target x86 platforms. For ARM64, the project documentation recommends building the image yourself.&lt;/p&gt;
&lt;h3 id=&#34;2-clone-the-project&#34;&gt;2. Clone the Project
&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-check-vmmax_map_count&#34;&gt;3. Check &lt;code&gt;vm.max_map_count&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;RAGFlow deployment depends on components such as Elasticsearch or OpenSearch, so on Linux you usually need to verify:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the value is below &lt;code&gt;262144&lt;/code&gt;, you can set it temporarily:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want the change to persist after reboot, add it to &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;4-start-with-docker-compose&#34;&gt;4. Start with Docker Compose
&lt;/h3&gt;&lt;p&gt;You can start the CPU mode directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want GPU acceleration for DeepDoc tasks, the README shows enabling &lt;code&gt;DEVICE=gpu&lt;/code&gt; in &lt;code&gt;.env&lt;/code&gt; before startup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Then inspect the logs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Once the services are ready, open the machine address in your browser. Under the default configuration, that is typically:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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-configure-model-api-keys&#34;&gt;5. Configure Model API Keys
&lt;/h3&gt;&lt;p&gt;RAGFlow needs LLM and embedding model configuration. The README mentions choosing the default LLM factory in &lt;code&gt;service_conf.yaml.template&lt;/code&gt; and updating the corresponding &lt;code&gt;API_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In practice, you need to configure models according to your provider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chat model&lt;/li&gt;
&lt;li&gt;Embedding model&lt;/li&gt;
&lt;li&gt;Rerank model&lt;/li&gt;
&lt;li&gt;Multimodal model, if you want to understand images inside PDFs or DOCX files&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-create-the-knowledge-base-and-upload-documents&#34;&gt;6. Create the Knowledge Base and Upload Documents
&lt;/h3&gt;&lt;p&gt;After the service starts, the typical workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the Web UI.&lt;/li&gt;
&lt;li&gt;Create a dataset or knowledge base.&lt;/li&gt;
&lt;li&gt;Upload documents or configure a data source sync.&lt;/li&gt;
&lt;li&gt;Wait for parsing to finish.&lt;/li&gt;
&lt;li&gt;Inspect chunk results and adjust them when necessary.&lt;/li&gt;
&lt;li&gt;Create a chat assistant and attach the knowledge base.&lt;/li&gt;
&lt;li&gt;Test answer quality and citation sources.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you need to integrate with a business system, you can continue with the RAGFlow API or SDK and connect retrieval and chat capabilities to your own application.&lt;/p&gt;
&lt;h2 id=&#34;04-suitable-scenarios&#34;&gt;04 Suitable Scenarios
&lt;/h2&gt;&lt;p&gt;RAGFlow fits these kinds of needs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enterprise internal knowledge-base Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;Product manuals, technical documentation, and FAQ retrieval&lt;/li&gt;
&lt;li&gt;Customer support and pre-sales assistants&lt;/li&gt;
&lt;li&gt;Traceable Q&amp;amp;A over contracts, reports, and policy documents&lt;/li&gt;
&lt;li&gt;Unified handling of multi-format materials&lt;/li&gt;
&lt;li&gt;Teams that want both UI-based maintenance and API integration&lt;/li&gt;
&lt;li&gt;Systems that want to use RAG as the context layer for agents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is especially suitable when document formats are complex, citations matter, and people want to inspect or intervene in parsing results.&lt;/p&gt;
&lt;h2 id=&#34;05-what-to-watch-out-for&#34;&gt;05 What to Watch Out For
&lt;/h2&gt;&lt;p&gt;First, RAGFlow is not a lightweight script. It has real infrastructure requirements. The official recommendation is at least 4 CPU cores, 16 GB RAM, and 50 GB disk. If you only want Q&amp;amp;A over a small amount of Markdown, a full platform may be unnecessary.&lt;/p&gt;
&lt;p&gt;Second, document quality still matters. RAGFlow can improve parsing and chunking, but it cannot magically make low-quality, outdated, or contradictory source material reliable. Knowledge-base governance still matters before production.&lt;/p&gt;
&lt;p&gt;Third, model selection directly affects quality. Embedding, rerank, chat, and multimodal model choices all influence retrieval and answer quality. RAGFlow gives you the workflow, but the final result still depends on data, models, and tuning.&lt;/p&gt;
&lt;p&gt;Fourth, production deployments need careful attention to permissions and data security. Enterprise knowledge bases often contain internal documents, so deployment model, access control, logs, API keys, and model-provider data policy all need to be designed in advance.&lt;/p&gt;
&lt;h2 id=&#34;06-quick-take&#34;&gt;06 Quick Take
&lt;/h2&gt;&lt;p&gt;RAGFlow’s strength is that it turns the hardest parts of RAG into platform capabilities: complex document parsing, explainable chunking, citation grounding, multi-path retrieval, reranking, model configuration, Web UI, API access, and agent extensions.&lt;/p&gt;
&lt;p&gt;If what you need is a verifiable, maintainable enterprise knowledge base that can connect to business systems, RAGFlow is more complete than a “vector database plus a simple chat UI” setup. On the other hand, if you only need small-scale personal Q&amp;amp;A over simple data, a lighter RAG framework may be more resource-efficient.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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;Official docs: &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;Online 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 Project Notes: Web Search, Scraping, and Interaction APIs for AI Agents</title>
        <link>https://knightli.com/en/2026/04/15/firecrawl-ai-web-data-api/</link>
        <pubDate>Wed, 15 Apr 2026 13:45:03 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/15/firecrawl-ai-web-data-api/</guid>
        <description>&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; has a clear purpose: turning web pages into data that AI agents can consume more easily. It is not just a crawler script. It wraps search, single-page scraping, site crawling, page interaction, structured extraction, and agent workflows into APIs, so models and automation systems can spend less effort dealing with web noise.&lt;/p&gt;
&lt;h2 id=&#34;01-what-it-solves&#34;&gt;01 What It Solves
&lt;/h2&gt;&lt;p&gt;Many AI applications need to read web pages, but real websites are messy: JavaScript-rendered content, pop-ups, pagination, login state, anti-bot defenses, PDFs or DOCX files, and plenty of navigation, ads, scripts, and styling that have nothing to do with the main content.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Firecrawl&lt;/code&gt; tries to solve this middle-layer problem. The application asks for data from a page, a site, or a topic; Firecrawl handles opening, scraping, cleaning, and returning output in formats that are easier for LLMs to use, such as Markdown, HTML, screenshots, or JSON.&lt;/p&gt;
&lt;p&gt;The value of this kind of tool is not merely whether it can request a URL. The real question is whether it can reliably turn complex pages into usable data. For RAG, AI search, competitive research, automated information gathering, and web content monitoring, this layer often becomes the unpleasant plumbing in the system.&lt;/p&gt;
&lt;h2 id=&#34;02-core-features&#34;&gt;02 Core Features
&lt;/h2&gt;&lt;p&gt;The Firecrawl README groups its capabilities into several areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Search&lt;/code&gt;: Search the web and return full page content from the results.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Scrape&lt;/code&gt;: Convert a single URL into Markdown, HTML, screenshots, or structured JSON.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Interact&lt;/code&gt;: Scrape a page, then use prompts or code to click, scroll, type, wait, and perform other actions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;: Describe what you want, and let the agent search, navigate, and return the result.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Crawl&lt;/code&gt;: Scrape multiple pages under a website.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Map&lt;/code&gt;: Quickly discover URLs on a website.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Batch Scrape&lt;/code&gt;: Asynchronously scrape large batches of URLs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At first glance, it looks like a scraping service. But as a full set of features, it is closer to a data entry point for AI applications: search discovers sources, scraping cleans content, interaction handles dynamic pages, and Agent pushes the whole &amp;ldquo;find information&amp;rdquo; task further toward automation.&lt;/p&gt;
&lt;h2 id=&#34;03-why-it-fits-ai-agents&#34;&gt;03 Why It Fits AI Agents
&lt;/h2&gt;&lt;p&gt;Traditional crawlers usually assume that you already know the URL and understand the page structure. Agent workflows are often different. A user might simply ask, &amp;ldquo;Find the differences between the latest pricing plans on a company&amp;rsquo;s pricing page.&amp;rdquo; The system then has to search, open pages, compare content, and return sources.&lt;/p&gt;
&lt;p&gt;Firecrawl&amp;rsquo;s &lt;code&gt;Agent&lt;/code&gt; endpoint is designed for this kind of task. It can accept only a natural-language prompt, or it can be constrained to specific URLs. If structured results are needed, it can also work with a schema to return fixed fields.&lt;/p&gt;
&lt;p&gt;This gives the application layer two benefits:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You do not have to write a separate parser for every website.&lt;/li&gt;
&lt;li&gt;The returned result is easier to send into an LLM, a database, or a downstream automation flow.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course, this does not mean it replaces every custom crawler. For highly constrained, high-frequency, large-scale tasks with very stable fields, writing dedicated parsing logic may still be cheaper and easier to control. Firecrawl is a better fit when sources are scattered, page structures change often, and you want to connect web data to an AI workflow quickly.&lt;/p&gt;
&lt;h2 id=&#34;04-mcp-cli-and-integrations&#34;&gt;04 MCP, CLI, and Integrations
&lt;/h2&gt;&lt;p&gt;Firecrawl is also clearly moving toward the agent tooling ecosystem. The README provides MCP Server setup, along with Skill/CLI initialization commands for AI coding agents.&lt;/p&gt;
&lt;p&gt;This means it is not only intended for backend API calls. It also wants to plug directly into Claude Code, OpenCode, Antigravity, MCP clients, and similar workflows. For people who frequently ask agents to research, scrape, and organize web content, this kind of integration is lighter than hand-writing API calls.&lt;/p&gt;
&lt;p&gt;It also lists integrations with platforms such as Zapier, n8n, and Lovable. That direction is practical: web data does not always go into code. It may flow into automation tables, low-code workflows, content systems, or internal knowledge bases.&lt;/p&gt;
&lt;h2 id=&#34;05-open-source-self-hosting-and-licensing&#34;&gt;05 Open Source, Self-Hosting, and Licensing
&lt;/h2&gt;&lt;p&gt;Firecrawl is open source. The main repository is primarily licensed under &lt;code&gt;AGPL-3.0&lt;/code&gt;; the README also notes that SDKs and some UI components use the &lt;code&gt;MIT&lt;/code&gt; license, with details depending on the LICENSE files in each directory.&lt;/p&gt;
&lt;p&gt;This matters. If you only use the cloud service, the main concerns are API cost, reliability, and compliance boundaries. If you plan to self-host it and provide a service to others, the obligations of &lt;code&gt;AGPL-3.0&lt;/code&gt; need careful review.&lt;/p&gt;
&lt;p&gt;The README also reminds users to respect website policies, privacy policies, and terms of use, and says that Firecrawl respects &lt;code&gt;robots.txt&lt;/code&gt; by default. The stronger this type of tool becomes, the more important it is to design compliance and scraping boundaries into the system instead of patching them in after launch.&lt;/p&gt;
&lt;h2 id=&#34;06-suitable-use-cases&#34;&gt;06 Suitable Use Cases
&lt;/h2&gt;&lt;p&gt;I would consider Firecrawl first in these scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scraping web content for a RAG system and wanting clean Markdown directly.&lt;/li&gt;
&lt;li&gt;Building AI search or research assistants that need to read full pages after search.&lt;/li&gt;
&lt;li&gt;Scraping JavaScript-heavy sites without maintaining a browser cluster yourself.&lt;/li&gt;
&lt;li&gt;Monitoring public information such as competitors, pricing, documentation, news, and job pages.&lt;/li&gt;
&lt;li&gt;Giving MCP clients or AI coding agents real-time web reading ability.&lt;/li&gt;
&lt;li&gt;Quickly validating a web-data product before building crawler infrastructure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The less suitable cases are also clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The target site has very few fields, a stable structure, and can be handled by a simple script.&lt;/li&gt;
&lt;li&gt;The scraping volume is huge, and cost sensitivity matters more than development and maintenance cost.&lt;/li&gt;
&lt;li&gt;The business needs very fine control over sources, retry strategy, anti-bot behavior, and audit trails.&lt;/li&gt;
&lt;li&gt;Licensing or compliance requirements do not allow AGPL components or external cloud services.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;07-quick-take&#34;&gt;07 Quick Take
&lt;/h2&gt;&lt;p&gt;Firecrawl&amp;rsquo;s core value is productizing the messy path from &amp;ldquo;web page&amp;rdquo; to &amp;ldquo;AI-usable data.&amp;rdquo; It puts search, scraping, cleaning, interaction, batch processing, and agent-style research into one interface, which is convenient for AI application developers.&lt;/p&gt;
&lt;p&gt;If your project often needs models to read real web pages, especially when sources are scattered, structures are unstable, and MCP or agent workflows are involved, Firecrawl is worth keeping in the toolbox. If the task is just low-cost bulk collection from fixed websites, a traditional crawler or dedicated parser may still be the better choice.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub project: &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 Video Recording: Recording, Chapter Markers, Overlays, and Debugging Tradeoffs</title>
        <link>https://knightli.com/en/2026/04/15/playwright-cli-video-recording/</link>
        <pubDate>Wed, 15 Apr 2026 08:22:45 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/15/playwright-cli-video-recording/</guid>
        <description>&lt;p&gt;If you want to record browser automation sessions as video for debugging, documentation, or proof of work, &lt;code&gt;Playwright CLI&lt;/code&gt; already provides a fairly direct workflow. It produces WebM video using the VP8/VP9 codec.&lt;/p&gt;
&lt;p&gt;This article follows the official &lt;code&gt;video-recording&lt;/code&gt; reference and focuses on the parts that matter most in practice: the basic recording flow, chapter markers, full hero-script recording, the Overlay API, and the difference between video and tracing. The command lines, code snippets, and parameter details are preserved from the reference.&lt;/p&gt;
&lt;h2 id=&#34;01-basic-recording-flow&#34;&gt;01 Basic Recording Flow
&lt;/h2&gt;&lt;p&gt;The basic pattern is simple: open the browser, start recording, perform actions, then stop and save.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;These commands already cover the most common recording flow. &lt;code&gt;video-chapter&lt;/code&gt; is useful for inserting chapter cards between stages so the final video is easier to follow.&lt;/p&gt;
&lt;h2 id=&#34;02-best-practices&#34;&gt;02 Best Practices
&lt;/h2&gt;&lt;h3 id=&#34;1-use-descriptive-filenames&#34;&gt;1. Use Descriptive Filenames
&lt;/h3&gt;&lt;p&gt;If the video is meant for other people or for later review, the filename should include enough context to make it understandable at a glance.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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-record-entire-hero-scripts&#34;&gt;2. Record Entire Hero Scripts
&lt;/h3&gt;&lt;p&gt;The official recommendation is that when a video is for a user or serves as proof of work, it is best to turn the scenario into a code snippet and execute it with &lt;code&gt;run-code&lt;/code&gt;. That gives you better control over pacing, pauses, and annotations in the video. The reference also notes that Playwright now includes APIs designed specifically for this kind of recording flow.&lt;/p&gt;
&lt;p&gt;The suggested process is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First perform the scenario with the CLI and note all locators and actions. You will need those locators later if you want their bounding boxes for highlight overlays.&lt;/li&gt;
&lt;li&gt;Create a dedicated script file for the video and write it in the style shown below. Use &lt;code&gt;pressSequentially&lt;/code&gt; with &lt;code&gt;delay&lt;/code&gt; for smoother typing, and add pauses where they feel natural.&lt;/li&gt;
&lt;li&gt;Use &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;The value of this script is not only that it records the flow, but that it makes the video easier to understand: chapter cards handle transitions, &lt;code&gt;pressSequentially&lt;/code&gt; makes typing look natural, and &lt;code&gt;showOverlay&lt;/code&gt; adds explanation, highlights, and context.&lt;/p&gt;
&lt;p&gt;The reference closes this section with a short reminder: Embrace creativity, overlays are powerful.&lt;/p&gt;
&lt;h2 id=&#34;03-overlay-api-summary&#34;&gt;03 Overlay API Summary
&lt;/h2&gt;&lt;p&gt;When recording video, the Overlay API is especially useful for section transitions, local callouts, and sticky annotations. The official summary is:&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;If your goal is to turn automation into a video people can comfortably watch, this API set is one of the most valuable pieces to learn first.&lt;/p&gt;
&lt;h2 id=&#34;04-tracing-vs-video&#34;&gt;04 Tracing vs Video
&lt;/h2&gt;&lt;p&gt;The official documentation makes the difference between the two very clear:&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;A simple way to think about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; is better for demos, delivery, and reviewing what a user would see&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tracing&lt;/code&gt; is better for debugging, inspecting action details, and analyzing execution context&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They are not replacements for each other. Each serves a different purpose.&lt;/p&gt;
&lt;h2 id=&#34;05-limitations&#34;&gt;05 Limitations
&lt;/h2&gt;&lt;p&gt;The reference also points out two practical limitations:&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;So while video recording is very useful, it does add some runtime overhead, and longer recordings can grow large on disk.&lt;/p&gt;
&lt;h2 id=&#34;06-quick-summary&#34;&gt;06 Quick Summary
&lt;/h2&gt;&lt;p&gt;If you only want the essentials, remember these points:&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; are the core commands for recording&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video-chapter&lt;/code&gt; adds section transitions and makes demos easier to follow&lt;/li&gt;
&lt;li&gt;More advanced recording scenarios are best written as scripts and executed with &lt;code&gt;run-code&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;showOverlay&lt;/code&gt; and &lt;code&gt;showChapter&lt;/code&gt; can significantly improve video readability&lt;/li&gt;
&lt;li&gt;&lt;code&gt;video&lt;/code&gt; is best for demos, while &lt;code&gt;tracing&lt;/code&gt; is best for debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your workflow already includes automation demos, acceptance evidence, or proof-of-work recordings, &lt;code&gt;video recording&lt;/code&gt; is a very worthwhile part of &lt;code&gt;Playwright CLI&lt;/code&gt; to add.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI video-recording reference: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/video-recording.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/video-recording.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Playwright CLI project homepage: &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;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI Session Management: Multiple Browser Sessions, Isolation, Persistence, and Cleanup</title>
        <link>https://knightli.com/en/2026/04/15/playwright-cli-session-management/</link>
        <pubDate>Wed, 15 Apr 2026 08:15:12 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/15/playwright-cli-session-management/</guid>
        <description>&lt;p&gt;If you use &lt;code&gt;Playwright CLI&lt;/code&gt; for automation, you will quickly run into a practical question: can you open multiple browser sessions at the same time without them interfering with each other? The answer is yes, and &lt;code&gt;Playwright CLI&lt;/code&gt; already makes this mechanism quite straightforward.&lt;/p&gt;
&lt;p&gt;Following the official &lt;code&gt;session-management&lt;/code&gt; reference, this article focuses on its most practical pieces: named sessions, session isolation, persistent profiles, concurrent patterns, and common cleanup commands. The command lines and command block explanations are preserved from the reference content.&lt;/p&gt;
&lt;h2 id=&#34;01-named-browser-sessions&#34;&gt;01 Named Browser Sessions
&lt;/h2&gt;&lt;p&gt;The official recommendation is to use the &lt;code&gt;-s&lt;/code&gt; parameter to isolate different browser contexts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;The key point here is that different &lt;code&gt;session&lt;/code&gt; names map to different browser contexts. You can use &lt;code&gt;auth&lt;/code&gt; for the sign-in flow and &lt;code&gt;public&lt;/code&gt; for anonymous browsing, and they will not share cookies or local state.&lt;/p&gt;
&lt;h2 id=&#34;02-what-does-browser-session-isolation-separate&#34;&gt;02 What Does Browser Session Isolation Separate?
&lt;/h2&gt;&lt;p&gt;Each browser session maintains the following items independently:&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;That means if you sign in to a site in the &lt;code&gt;auth&lt;/code&gt; session, it will not automatically affect the &lt;code&gt;public&lt;/code&gt; session. This is especially important for multi-account testing, login-state verification, and anonymous-vs-authenticated comparisons.&lt;/p&gt;
&lt;h2 id=&#34;03-commands-related-to-browser-sessions&#34;&gt;03 Commands Related to Browser Sessions
&lt;/h2&gt;&lt;p&gt;The official documentation groups the most commonly used session-management commands together:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;You can think of them as three kinds of operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt;: see which sessions currently exist&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;: stop sessions or clean up stuck browser processes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete-data&lt;/code&gt;: remove the user data directory for a specific session&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you just want to close a browser, &lt;code&gt;close&lt;/code&gt; is usually the first choice. If leftover or zombie processes have already appeared, &lt;code&gt;kill-all&lt;/code&gt; is the better fit.&lt;/p&gt;
&lt;h2 id=&#34;04-set-a-default-session-with-an-environment-variable&#34;&gt;04 Set a Default Session with an Environment Variable
&lt;/h2&gt;&lt;p&gt;If you do not want to repeat &lt;code&gt;-s=mysession&lt;/code&gt; on every command, the official docs also provide an environment-variable approach:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;After that, when you do not explicitly specify &lt;code&gt;-s&lt;/code&gt;, the command will use &lt;code&gt;mysession&lt;/code&gt; as the default browser session.&lt;/p&gt;
&lt;h2 id=&#34;05-common-pattern-concurrent-scraping&#34;&gt;05 Common Pattern: Concurrent Scraping
&lt;/h2&gt;&lt;p&gt;The reference gives a very typical concurrent-scraping example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;This pattern works well when you want to open multiple sites at once, capture each page state, and then clean everything up together. Because each site runs in an independent session, they do not contaminate each other&amp;rsquo;s local state.&lt;/p&gt;
&lt;h2 id=&#34;06-common-pattern-ab-test-sessions&#34;&gt;06 Common Pattern: A/B Test Sessions
&lt;/h2&gt;&lt;p&gt;Another common scenario is comparing different experiment variants at the same time:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This style is great for A/B page comparisons because the two variants run in separate sessions, making screenshots and state checks easier to manage independently.&lt;/p&gt;
&lt;h2 id=&#34;07-persisting-browser-profiles&#34;&gt;07 Persisting Browser Profiles
&lt;/h2&gt;&lt;p&gt;The official documentation specifically points out that browser profiles are stored only in memory by default.&lt;/p&gt;
&lt;p&gt;If you want to persist a browser profile to disk, add &lt;code&gt;--persistent&lt;/code&gt; when running &lt;code&gt;open&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;This capability is useful when you need to reuse login state, local cache, or an extension-debugging environment over the long term. When repeatedly debugging the same site, a persistent profile is often much more efficient than starting from scratch every time.&lt;/p&gt;
&lt;h2 id=&#34;08-the-default-browser-session&#34;&gt;08 The Default Browser Session
&lt;/h2&gt;&lt;p&gt;If &lt;code&gt;-s&lt;/code&gt; is not explicitly provided, the command uses the default browser 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;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;In other words, commands without &lt;code&gt;-s&lt;/code&gt; are executed continuously within the same default session.&lt;/p&gt;
&lt;h2 id=&#34;09-session-related-startup-configuration&#34;&gt;09 Session-Related Startup Configuration
&lt;/h2&gt;&lt;p&gt;In addition to the session name, the official docs also show several common startup configuration patterns:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;These parameters can be combined with session management. For example, you can make one named session always run in &lt;code&gt;firefox&lt;/code&gt;, or make a specific session always launch in &lt;code&gt;headed&lt;/code&gt; mode for easier manual inspection.&lt;/p&gt;
&lt;h2 id=&#34;10-best-practices-from-the-official-docs&#34;&gt;10 Best Practices from the Official Docs
&lt;/h2&gt;&lt;p&gt;The reference lists three practical best practices.&lt;/p&gt;
&lt;h3 id=&#34;1-use-meaningful-session-names&#34;&gt;1. Use Meaningful Session Names
&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;Session names should ideally communicate their purpose directly. Names like &lt;code&gt;github-auth&lt;/code&gt; and &lt;code&gt;docs-scrape&lt;/code&gt; make later script maintenance much clearer.&lt;/p&gt;
&lt;h3 id=&#34;2-clean-up-promptly-after-use&#34;&gt;2. Clean Up Promptly After Use
&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;If you do not close the browser after a task finishes, the session and background processes will remain. That may not seem serious in the short term, but once tasks pile up, the environment can become messy very quickly.&lt;/p&gt;
&lt;h3 id=&#34;3-remove-stale-browser-data&#34;&gt;3. Remove Stale Browser Data
&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;When some old sessions are no longer needed, deleting their data directories saves disk space and also helps avoid accidentally reusing outdated state later.&lt;/p&gt;
&lt;h2 id=&#34;11-quick-summary&#34;&gt;11 Quick Summary
&lt;/h2&gt;&lt;p&gt;If you only want the essentials, remember these points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-s=&amp;lt;name&amp;gt;&lt;/code&gt; creates and uses an independent browser session&lt;/li&gt;
&lt;li&gt;Different sessions isolate cookies, different kinds of storage, cache, history, and tabs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; is useful for unified shutdown, while &lt;code&gt;kill-all&lt;/code&gt; is useful for cleaning up abnormal leftover processes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--persistent&lt;/code&gt; writes the profile to disk and is useful for long-term state reuse&lt;/li&gt;
&lt;li&gt;Session names should be meaningful, and old data should be cleaned up regularly&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your workflow already includes reused login states, parallel multi-account work, A/B comparisons, or batch scraping, then &lt;code&gt;session management&lt;/code&gt; is basically one of the most worthwhile pieces of &lt;code&gt;Playwright CLI&lt;/code&gt; to learn first.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI session-management reference: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/session-management.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/session-management.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Playwright CLI project homepage: &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;/ul&gt;
</description>
        </item>
        <item>
        <title>Playwright CLI storage state: Save Login Sessions, Read Cookies, and Local Storage</title>
        <link>https://knightli.com/en/2026/04/14/playwright-cli-storage-state-commands/</link>
        <pubDate>Tue, 14 Apr 2026 22:19:55 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/14/playwright-cli-storage-state-commands/</guid>
        <description>&lt;p&gt;If you use &lt;code&gt;Playwright CLI&lt;/code&gt; for browser automation, &lt;code&gt;storage state&lt;/code&gt; is one of the most useful features. Its job is simple: save the current login session and local browser state so you can reuse them later instead of logging in every time.&lt;/p&gt;
&lt;h2 id=&#34;01-save-the-current-storage-state&#34;&gt;01 Save the current storage state
&lt;/h2&gt;&lt;p&gt;The most common workflow is to log in once, then export the current state to a file.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This command saves the current browser context state to &lt;code&gt;auth.json&lt;/code&gt;. If you want to reuse a login session later, this is usually the first step.&lt;/p&gt;
&lt;h2 id=&#34;02-load-an-existing-storage-state&#34;&gt;02 Load an existing storage state
&lt;/h2&gt;&lt;p&gt;Once you already have a state file, you can load it directly at startup.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;It launches the browser context with the state stored in &lt;code&gt;auth.json&lt;/code&gt;. The usual purpose is to skip repeated login and jump straight into a signed-in environment.&lt;/p&gt;
&lt;h2 id=&#34;03-view-current-cookies&#34;&gt;03 View current cookies
&lt;/h2&gt;&lt;p&gt;If you only want to check which cookies exist in the current session, you can inspect them directly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This command lists the cookies in the current context. It is useful when checking whether the login state exists or whether cookies were written successfully.&lt;/p&gt;
&lt;h2 id=&#34;04-set-cookies&#34;&gt;04 Set cookies
&lt;/h2&gt;&lt;p&gt;If you already have cookie data, you can inject it directly as well.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This is useful for auth debugging, reproducing a specific session, or injecting cookie conditions before a script runs.&lt;/p&gt;
&lt;h2 id=&#34;05-read-localstorage&#34;&gt;05 Read localStorage
&lt;/h2&gt;&lt;p&gt;Some sites store login-related or frontend state not only in cookies, but also in &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;This command shows the &lt;code&gt;localStorage&lt;/code&gt; content of the current page. It is especially useful when a page looks logged in but still behaves incorrectly.&lt;/p&gt;
&lt;h2 id=&#34;06-write-localstorage&#34;&gt;06 Write localStorage
&lt;/h2&gt;&lt;p&gt;If you need to simulate specific frontend state, you can set it directly.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;It writes the given key and value into &lt;code&gt;localStorage&lt;/code&gt;. Common uses include injecting a token, a preference, or a frontend flag.&lt;/p&gt;
&lt;h2 id=&#34;07-read-sessionstorage&#34;&gt;07 Read sessionStorage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sessionStorage&lt;/code&gt; is useful for checking temporary state tied to the current 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;This command outputs the current page&amp;rsquo;s &lt;code&gt;sessionStorage&lt;/code&gt;. If a page flow depends on one-time session data, this is a good place to inspect it.&lt;/p&gt;
&lt;h2 id=&#34;08-write-sessionstorage&#34;&gt;08 Write sessionStorage
&lt;/h2&gt;&lt;p&gt;When needed, you can also set &lt;code&gt;sessionStorage&lt;/code&gt; manually.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;It is useful for reproducing page behavior that depends on temporary state, or for filling in fields required by an initialization step.&lt;/p&gt;
&lt;h2 id=&#34;09-view-indexeddb&#34;&gt;09 View IndexedDB
&lt;/h2&gt;&lt;p&gt;For heavier web apps, the most important local data may actually live in &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;This command lets you inspect the current page&amp;rsquo;s &lt;code&gt;IndexedDB&lt;/code&gt; data. It is worth checking first when you are dealing with complex SPAs, offline cache, or app-like local databases.&lt;/p&gt;
&lt;h2 id=&#34;10-a-practical-workflow&#34;&gt;10 A practical workflow
&lt;/h2&gt;&lt;p&gt;If your goal is simply to reuse a login session reliably, the most practical flow is usually this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the site and complete login manually.&lt;/li&gt;
&lt;li&gt;Save the state with this command:&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;Load it directly in later runs:&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;If the page still behaves incorrectly after loading, continue by checking:&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;That sequence covers most cases where the restored state is incomplete.&lt;/p&gt;
&lt;h2 id=&#34;11-what-to-watch-out-for&#34;&gt;11 What to watch out for
&lt;/h2&gt;&lt;p&gt;Three points matter most:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;storage state&lt;/code&gt; file is sensitive data. It may contain login cookies or tokens, so do not commit it casually.&lt;/li&gt;
&lt;li&gt;Restoring cookies alone may not be enough. Many modern sites also depend on &lt;code&gt;localStorage&lt;/code&gt;, &lt;code&gt;sessionStorage&lt;/code&gt;, or &lt;code&gt;IndexedDB&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;State files do not stay valid forever. After cookie expiration, account changes, or environment changes, you usually need to generate them again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;12-quick-summary&#34;&gt;12 Quick summary
&lt;/h2&gt;&lt;p&gt;If you only remember one sentence:&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; means saving the browser&amp;rsquo;s current state and reusing it in later tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In practice, the most useful commands are these:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Save first, then load; if something still looks wrong, inspect cookies and the different local storage layers one by one. That is the most practical part of this reference.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Playwright CLI storage-state reference: &lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/storage-state.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/microsoft/playwright-cli/blob/main/skills/playwright-cli/references/storage-state.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Playwright CLI project page: &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;/ul&gt;
</description>
        </item>
        <item>
        <title>What Is OpenHarness: What This Open Source Agent Harness Can Do</title>
        <link>https://knightli.com/en/2026/04/12/openharness-basic-functions/</link>
        <pubDate>Sun, 12 Apr 2026 23:45:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/openharness-basic-functions/</guid>
        <description>&lt;p&gt;If you have been following open source AI agent tools lately, &lt;code&gt;HKUDS/OpenHarness&lt;/code&gt; is a project worth watching. It is not just another chat wrapper. Instead, it pulls the infrastructure layer for a runnable, extensible, and governable agent into a standalone open source &lt;strong&gt;Agent Harness&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;According to the official README, OpenHarness provides a lightweight but fairly complete set of agent capabilities, including tool calling, skill loading, memory, permission governance, and multi-agent coordination. The bundled &lt;code&gt;ohmo&lt;/code&gt; is the personal AI assistant application built on top of that foundation.&lt;/p&gt;
&lt;h2 id=&#34;01-what-is-openharness&#34;&gt;01 What Is OpenHarness
&lt;/h2&gt;&lt;p&gt;You can think of OpenHarness as the runtime layer that gives a foundation model hands, memory, and boundaries.&lt;/p&gt;
&lt;p&gt;A model may already be good at reasoning and generation, but if you want it to function as a long-running agent, it usually still needs these surrounding capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calling tools instead of only producing text&lt;/li&gt;
&lt;li&gt;Reading and writing files, executing commands, and using search and web access&lt;/li&gt;
&lt;li&gt;Preserving context and memory across long sessions&lt;/li&gt;
&lt;li&gt;Applying permission controls to risky actions&lt;/li&gt;
&lt;li&gt;Splitting larger tasks across multiple sub-agents in parallel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The goal of OpenHarness is to turn that engineering layer around the model into a clear, open source, inspectable Python implementation. It is closer to an agent operating substrate than to a single model experience or a single chat interface.&lt;/p&gt;
&lt;h2 id=&#34;02-the-projects-basic-functions&#34;&gt;02 The Project&amp;rsquo;s Basic Functions
&lt;/h2&gt;&lt;p&gt;Based on the current GitHub homepage and README, OpenHarness centers on the following capability areas.&lt;/p&gt;
&lt;h3 id=&#34;1-agent-loop&#34;&gt;1. Agent Loop
&lt;/h3&gt;&lt;p&gt;This is the core execution loop that lets an agent keep working over multiple steps. The official highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Streaming tool-calling loops&lt;/li&gt;
&lt;li&gt;API retries with exponential backoff&lt;/li&gt;
&lt;li&gt;Parallel tool execution&lt;/li&gt;
&lt;li&gt;Token accounting and cost tracking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The practical point is that the agent is not limited to a one-shot response. It can observe, reason, call tools, read results, and continue iterating within the same task.&lt;/p&gt;
&lt;h3 id=&#34;2-tools-skills-and-plugins&#34;&gt;2. Tools, Skills, and Plugins
&lt;/h3&gt;&lt;p&gt;OpenHarness puts serious effort into the tool layer. The project page says it already includes built-in tools for files, Shell, search, web access, and MCP, and it supports on-demand loading of Markdown skill files.&lt;/p&gt;
&lt;p&gt;Its value is not only that it has many tools, but that the composition model is fairly open:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can use built-in tools directly&lt;/li&gt;
&lt;li&gt;You can load skills for a specific task&lt;/li&gt;
&lt;li&gt;You can extend hooks, skills, and agents through plugins&lt;/li&gt;
&lt;li&gt;It is compatible with the &lt;code&gt;anthropics/skills&lt;/code&gt; ecosystem and related plugins&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to turn repeated workflows into reusable capabilities rather than re-describing them in prompts every time, this layer is especially useful.&lt;/p&gt;
&lt;h3 id=&#34;3-context-and-memory&#34;&gt;3. Context and Memory
&lt;/h3&gt;&lt;p&gt;This is one of the more important differentiators in OpenHarness. The official keywords include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; discovery and injection&lt;/li&gt;
&lt;li&gt;Automatic context compression&lt;/li&gt;
&lt;li&gt;Persistent memory through &lt;code&gt;MEMORY.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Session recovery and history continuation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means it is not only reacting to the current input. It is designed to preserve project conventions, historical tasks, and long-term preferences, making the agent better suited for ongoing work instead of always starting from scratch.&lt;/p&gt;
&lt;h3 id=&#34;4-permission-governance-and-safety-boundaries&#34;&gt;4. Permission Governance and Safety Boundaries
&lt;/h3&gt;&lt;p&gt;Once an agent starts interacting with the filesystem, terminal, and network, governance becomes critical. OpenHarness provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multiple permission modes&lt;/li&gt;
&lt;li&gt;Rule controls based on paths and commands&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;Interactive approval prompts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, it is not only about enabling the agent to do things. It also defines which things can be done directly and which ones should require confirmation first.&lt;/p&gt;
&lt;h3 id=&#34;5-multi-agent-coordination&#34;&gt;5. Multi-Agent Coordination
&lt;/h3&gt;&lt;p&gt;OpenHarness also supports delegating work to sub-agents. The currently public materials mention capabilities such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sub-agent creation and delegation&lt;/li&gt;
&lt;li&gt;Team registration and task management&lt;/li&gt;
&lt;li&gt;Background task lifecycle management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more complex work, this means it can move beyond a single serial agent and attempt parallel collaboration.&lt;/p&gt;
&lt;h3 id=&#34;6-multi-provider-workflows&#34;&gt;6. Multi-Provider Workflows
&lt;/h3&gt;&lt;p&gt;OpenHarness does not treat providers as mere API labels. It abstracts them as workflow + profile combinations. According to the README, current directions include:&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;Compatible backends such as Moonshot(Kimi), GLM, and MiniMax&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That makes it feel more like a multi-model, multi-entry agent runtime framework rather than something tied to a single vendor.&lt;/p&gt;
&lt;h3 id=&#34;7-react-tui-and-non-interactive-mode&#34;&gt;7. React TUI and Non-Interactive Mode
&lt;/h3&gt;&lt;p&gt;OpenHarness ships with a terminal UI. Running &lt;code&gt;oh&lt;/code&gt; opens a React/Ink TUI, and the official README says it supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A command picker&lt;/li&gt;
&lt;li&gt;Permission confirmation&lt;/li&gt;
&lt;li&gt;Model switching&lt;/li&gt;
&lt;li&gt;Provider switching&lt;/li&gt;
&lt;li&gt;Session recovery&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you do not want to enter an interactive interface, you can also use non-interactive mode to run a task once and return the result as standard output, JSON, or streaming JSON, which is helpful for scripting and automation.&lt;/p&gt;
&lt;h2 id=&#34;03-what-is-ohmo&#34;&gt;03 What Is &lt;code&gt;ohmo&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;If OpenHarness is the infrastructure layer, &lt;code&gt;ohmo&lt;/code&gt; is the personal agent application built on top of it.&lt;/p&gt;
&lt;p&gt;The project homepage is very clear about its positioning: it is not just a generic chatbot, but a personal assistant that can keep working across long conversations. The official description says it can interact with you through channels such as Feishu, Slack, Telegram, and Discord, and carry out tasks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;forking a branch&lt;/li&gt;
&lt;li&gt;writing code&lt;/li&gt;
&lt;li&gt;running tests&lt;/li&gt;
&lt;li&gt;opening a PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The README also highlights that &lt;code&gt;ohmo&lt;/code&gt; can run on top of your existing Claude Code or Codex subscription, so it does not necessarily require you to provision a new API key. For people already using those subscriptions, that lowers the barrier considerably.&lt;/p&gt;
&lt;h2 id=&#34;04-what-scenarios-it-fits&#34;&gt;04 What Scenarios It Fits
&lt;/h2&gt;&lt;p&gt;From the currently public capabilities, OpenHarness is a strong fit for people who:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Want to study what a production-grade agent is actually made of&lt;/li&gt;
&lt;li&gt;Want to build an extensible open source agent runtime of their own&lt;/li&gt;
&lt;li&gt;Want tools, skills, memory, permissions, and multi-agent coordination in one framework&lt;/li&gt;
&lt;li&gt;Do not want to be locked into a single model vendor or client form factor&lt;/li&gt;
&lt;li&gt;Want to build vertical agents or personal assistants on top of an existing architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your goal is simply to find a finished assistant that can chat right away, OpenHarness itself may not be the lightest option. But if you care more about agent infrastructure, engineering control, and long-term extensibility, it is a very worthwhile project to study.&lt;/p&gt;
&lt;h2 id=&#34;05-a-quick-way-to-understand-its-positioning&#34;&gt;05 A Quick Way to Understand Its Positioning
&lt;/h2&gt;&lt;p&gt;In one sentence:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenHarness turns foundation models into agents that can actually execute work, while &lt;code&gt;ohmo&lt;/code&gt; packages that capability into a personal assistant that can keep working with you over time.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can also think of it as two layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenHarness: an open source Agent Harness, essentially the infrastructure layer&lt;/li&gt;
&lt;li&gt;ohmo: a personal-agent app built on top of that infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As of &lt;strong&gt;April 12, 2026&lt;/strong&gt;, the GitHub homepage shows the project had already advanced to &lt;strong&gt;v0.1.6 (April 10, 2026)&lt;/strong&gt;, with continued emphasis on automatic context compression, MCP transport support, the React TUI, and runtime stability for multi-agent workflows. That suggests it is still evolving quickly, but its direction is already quite clear.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;GitHub repository: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;English README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness/blob/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chinese README: &lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/HKUDS/OpenHarness/blob/main/README.zh-CN.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Getting Started with Playwright CLI: Installation, Skills, Sessions, and Essential Commands</title>
        <link>https://knightli.com/en/2026/04/12/playwright-cli-getting-started/</link>
        <pubDate>Sun, 12 Apr 2026 14:36:58 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/playwright-cli-getting-started/</guid>
        <description>&lt;p&gt;If you have been using Claude Code, GitHub Copilot, or other coding agents for browser automation, &lt;code&gt;microsoft/playwright-cli&lt;/code&gt; is a tool worth watching. It is not the traditional kind of browser helper meant mainly for humans typing commands by hand. Instead, it is a Playwright CLI designed for coding agents, with an emphasis on lower token overhead, a lighter command interface, and integration with Skills-based workflows.&lt;/p&gt;
&lt;p&gt;From the official README, the core idea behind Playwright CLI is very clear: compared with MCP, which can push large tool schemas and page structure into the model context, the CLI approach is more compact and better suited for agent workflows that constantly switch between large codebases, tests, and browser automation.&lt;/p&gt;
&lt;h2 id=&#34;01-what-playwright-cli-is&#34;&gt;01 What Playwright CLI is
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;playwright-cli&lt;/code&gt; is an open-source Playwright command-line tool from Microsoft. The official description is “CLI for common Playwright actions.” It is mainly used for tasks like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opening pages and driving the browser&lt;/li&gt;
&lt;li&gt;Recording and generating Playwright code&lt;/li&gt;
&lt;li&gt;Capturing page snapshots to get element references&lt;/li&gt;
&lt;li&gt;Taking screenshots and exporting PDFs&lt;/li&gt;
&lt;li&gt;Working with coding agents for test automation and web interaction&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The current GitHub README is very explicit about its positioning: if you are using coding agents, the CLI is often a better fit than Playwright MCP; if you need persistent state, richer introspection, and longer-running agentic loops, MCP still has its place.&lt;/p&gt;
&lt;p&gt;In other words, Playwright CLI feels more like a browser automation interface built for AI coding assistants, not just a tool for engineers to click around manually.&lt;/p&gt;
&lt;h2 id=&#34;02-where-it-stands-out&#34;&gt;02 Where it stands out
&lt;/h2&gt;&lt;h3 id=&#34;1-it-fits-agent-workflows-better&#34;&gt;1. It fits agent workflows better
&lt;/h3&gt;&lt;p&gt;The official README lists &lt;code&gt;Token-efficient&lt;/code&gt; as a key feature. It does not force full-page data into the LLM context. Instead, it lets the agent operate the browser through shorter and more focused commands.&lt;/p&gt;
&lt;p&gt;That matters a lot for coding agents. In real projects, an agent is not only driving the browser. It also has to read code, edit files, run tests, and inspect logs. If the browser interface itself consumes too much context, the overall workflow becomes less efficient.&lt;/p&gt;
&lt;h3 id=&#34;2-it-works-well-with-skills&#34;&gt;2. It works well with Skills
&lt;/h3&gt;&lt;p&gt;The README specifically highlights &lt;code&gt;playwright-cli install --skills&lt;/code&gt;. That shows Microsoft is not treating it as just another shell utility, but as something that can be consumed directly by Claude Code, GitHub Copilot, and similar agents through a Skills-based workflow.&lt;/p&gt;
&lt;p&gt;If your setup already relies on Skills, Playwright CLI should slot in naturally.&lt;/p&gt;
&lt;h3 id=&#34;3-session-management-is-fairly-complete&#34;&gt;3. Session management is fairly complete
&lt;/h3&gt;&lt;p&gt;Playwright CLI supports sessions. By default, the browser profile stays in memory, so cookies and storage state are preserved across multiple CLI calls within the same session. If you add &lt;code&gt;--persistent&lt;/code&gt;, the profile can be saved to disk and reused across browser restarts.&lt;/p&gt;
&lt;p&gt;That makes it much more practical than tools that simply open a browser for one command and then throw everything away. It is also a better fit for long debugging cycles and longer-running agent flows.&lt;/p&gt;
&lt;h3 id=&#34;4-it-includes-a-visual-monitoring-dashboard&#34;&gt;4. It includes a visual monitoring dashboard
&lt;/h3&gt;&lt;p&gt;The README provides &lt;code&gt;playwright-cli show&lt;/code&gt;, which opens a dashboard for observing and controlling all running browser sessions. This is especially useful when an agent is running automation in the background, because you can step in, inspect progress, and help with debugging instead of flying blind.&lt;/p&gt;
&lt;h2 id=&#34;03-installation-and-requirements&#34;&gt;03 Installation and requirements
&lt;/h2&gt;&lt;p&gt;According to the current GitHub README, the basic requirements for Playwright CLI are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Node.js 18 or newer&lt;/li&gt;
&lt;li&gt;Claude Code, GitHub Copilot, or another coding agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The installation commands are:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;There is one easy mistake worth calling out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The officially recommended package right now is &lt;code&gt;@playwright/cli&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Do not confuse it with the old deprecated npm package &lt;code&gt;playwright-cli&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the package you actually want is the scoped package, not the older historical one.&lt;/p&gt;
&lt;h2 id=&#34;04-how-to-start-using-it&#34;&gt;04 How to start using it
&lt;/h2&gt;&lt;h3 id=&#34;1-install-skills&#34;&gt;1. Install skills
&lt;/h3&gt;&lt;p&gt;If you want a coding agent to use Playwright CLI directly, the official recommendation is to install the skills first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The README explicitly says that Claude Code, GitHub Copilot, and similar tools will use the locally installed skills.&lt;/p&gt;
&lt;h3 id=&#34;2-let-the-agent-call-the-cli-directly&#34;&gt;2. Let the agent call the CLI directly
&lt;/h3&gt;&lt;p&gt;If you do not want to handle Skills first, you can also let the agent read the CLI help output directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;The README calls this “Skills-less operation.” The idea is that even without preinstalled skills, the CLI can still describe itself well enough for an agent to use it.&lt;/p&gt;
&lt;h3 id=&#34;3-try-a-minimal-flow-manually&#34;&gt;3. Try a minimal flow manually
&lt;/h3&gt;&lt;p&gt;The README includes a TodoMVC example that works very well as a first hands-on demo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This sequence is useful because it quickly shows how Playwright CLI works in practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;open&lt;/code&gt; opens the page&lt;/li&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt; and &lt;code&gt;press&lt;/code&gt; handle text input&lt;/li&gt;
&lt;li&gt;&lt;code&gt;check&lt;/code&gt; uses an element reference to toggle checkboxes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;screenshot&lt;/code&gt; saves the result&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;05---headed-sessions-and-the-monitoring-dashboard&#34;&gt;05 &lt;code&gt;--headed&lt;/code&gt;, sessions, and the monitoring dashboard
&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 is headless by default. If you want to see the browser window directly, you need to pass &lt;code&gt;--headed&lt;/code&gt; when using &lt;code&gt;open&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;This is especially helpful when debugging selectors, login flows, or any interaction that is easier to inspect visually.&lt;/p&gt;
&lt;h3 id=&#34;sessions&#34;&gt;sessions
&lt;/h3&gt;&lt;p&gt;The official README places a lot of emphasis on sessions. You can use different sessions to isolate different projects or sites:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;If you are letting an agent run over a longer period, you can also pass the session through an environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Useful session management commands include:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;In practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;list&lt;/code&gt; shows all sessions&lt;/li&gt;
&lt;li&gt;&lt;code&gt;close-all&lt;/code&gt; closes all browsers gracefully&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kill-all&lt;/code&gt; forcefully terminates all browser processes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;monitoring-dashboard&#34;&gt;Monitoring dashboard
&lt;/h3&gt;&lt;p&gt;If you want to see what the agent is actually doing in the browser, you can run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;According to the README, this dashboard has two main views:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Session grid: shows active sessions by workspace, with live preview, URL, and page title&lt;/li&gt;
&lt;li&gt;Session detail: shows a live view of a selected session and lets you take over mouse and keyboard input&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That means Playwright CLI is not only usable from the command line. It also has a fairly mature observability layer.&lt;/p&gt;
&lt;h2 id=&#34;06-which-commands-are-worth-memorizing-first&#34;&gt;06 Which commands are worth memorizing first
&lt;/h2&gt;&lt;p&gt;If this is your first time using Playwright CLI, you do not need to memorize every command up front. These are the core ones worth learning first:&lt;/p&gt;
&lt;h3 id=&#34;pages-and-interaction&#34;&gt;Pages and interaction
&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;getting-page-structure&#34;&gt;Getting page structure
&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; is especially important because many later operations depend on element references stored as &lt;code&gt;ref&lt;/code&gt;. In practice, you usually capture a snapshot first, then use the returned element identifiers for clicking, filling, checking, or taking screenshots.&lt;/p&gt;
&lt;h3 id=&#34;saving-output&#34;&gt;Saving output
&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;tabs&#34;&gt;Tabs
&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-who-should-try-it&#34;&gt;07 Who should try it
&lt;/h2&gt;&lt;p&gt;Playwright CLI is especially worth trying in these kinds of scenarios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are using Claude Code, Copilot, or another coding agent for E2E testing&lt;/li&gt;
&lt;li&gt;You want a lighter browser automation interface without pushing large page structures into model context&lt;/li&gt;
&lt;li&gt;You want one browser session to persist across multiple commands&lt;/li&gt;
&lt;li&gt;You want to monitor agent-driven web tasks through a dashboard while they run&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your main question is how to make browser automation work efficiently with coding agents, Playwright CLI will likely feel more natural than traditional manual debugging workflows.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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>What Is Hermes Agent: Overview, Strengths, Getting Started, and How It Compares to OpenClaw</title>
        <link>https://knightli.com/en/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</link>
        <pubDate>Sun, 12 Apr 2026 14:07:58 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/hermes-agent-intro-guide-vs-openclaw/</guid>
        <description>&lt;p&gt;If you have been following open-source AI agents lately, &lt;code&gt;Hermes Agent&lt;/code&gt; is a project worth paying attention to. Built by Nous Research, its main appeal is not simply that it is “another chat wrapper,” but that it tries to bring long-term memory, reusable skills, context files, MCP extensions, a messaging gateway, and parallel sub-agents into one unified agent runtime.&lt;/p&gt;
&lt;p&gt;Based on the official README, Hermes Agent has a very clear goal: it can work like a local CLI assistant in your terminal, or like a cloud-hosted personal assistant that stays available through Telegram, Discord, Slack, WhatsApp, Signal, and other channels. For users who want to combine a coding assistant, an automation assistant, and a personal AI workspace into one system, that positioning is compelling.&lt;/p&gt;
&lt;h2 id=&#34;01-an-overview-of-hermes-agent&#34;&gt;01 An overview of Hermes Agent
&lt;/h2&gt;&lt;p&gt;Hermes Agent is an open-source self-improving AI agent from Nous Research. It supports multiple model providers, including Nous Portal, OpenRouter, OpenAI, and custom OpenAI-compatible endpoints. It can also run across different execution backends such as a local terminal, Docker, SSH, Daytona, and Modal.&lt;/p&gt;
&lt;p&gt;What separates Hermes from many “tool-using chatbots” is that it does not focus only on tool calls within a single session. It puts much more emphasis on building persistent capability across sessions. The official docs break this idea down into several parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persistent memory: stores key information about the environment, project, and user preferences through &lt;code&gt;MEMORY.md&lt;/code&gt; and &lt;code&gt;USER.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Skills system: turns successful workflows into reusable skills that can be loaded on demand.&lt;/li&gt;
&lt;li&gt;Context files: automatically reads files such as &lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;SOUL.md&lt;/code&gt;, and &lt;code&gt;.cursorrules&lt;/code&gt; to inject project conventions directly into the session.&lt;/li&gt;
&lt;li&gt;MCP integration: can connect to any MCP-compatible tool server to extend database, GitHub, filesystem, and scraping capabilities.&lt;/li&gt;
&lt;li&gt;Messaging gateway: beyond the CLI, it can also be used through Telegram, Discord, Slack, WhatsApp, Signal, Email, and other entry points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In one sentence, Hermes Agent feels more like a general-purpose agent operating layer with memory, skills, extensibility, and multi-channel access.&lt;/p&gt;
&lt;h2 id=&#34;02-where-it-stands-out&#34;&gt;02 Where it stands out
&lt;/h2&gt;&lt;h3 id=&#34;1-it-covers-both-cli-workflows-and-messaging-workflows&#34;&gt;1. It covers both CLI workflows and messaging workflows
&lt;/h3&gt;&lt;p&gt;Many agent projects lean either toward terminal-based developer assistance or toward chat-platform bots. Hermes tries to combine both. You can run &lt;code&gt;hermes&lt;/code&gt; directly in the terminal, or continue with the same assistant through Telegram or Discord after starting the gateway.&lt;/p&gt;
&lt;p&gt;The practical benefit is that Hermes is not limited to being useful only when you are sitting in front of your computer. If you deploy it to the cloud or a VPS, it can become a continuously available personal AI assistant.&lt;/p&gt;
&lt;h3 id=&#34;2-it-is-designed-for-long-term-use&#34;&gt;2. It is designed for long-term use
&lt;/h3&gt;&lt;p&gt;Hermes does more than chat and call tools. It is also built around long-term accumulation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Persistent memory with boundaries, instead of endlessly stuffing more context into each conversation.&lt;/li&gt;
&lt;li&gt;A skills system that lets you save and reuse successful workflows.&lt;/li&gt;
&lt;li&gt;Search across past sessions for retrieval and recall.&lt;/li&gt;
&lt;li&gt;Project context files that reduce the need to repeatedly explain the same background.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This matters a lot for people who work repeatedly inside the same repositories, workflows, and team conventions. It means the agent is not just helping once; it can gradually become more familiar with your environment.&lt;/p&gt;
&lt;h3 id=&#34;3-mcp-support-gives-it-strong-extensibility&#34;&gt;3. MCP support gives it strong extensibility
&lt;/h3&gt;&lt;p&gt;The Hermes documentation explicitly supports MCP and describes both stdio and HTTP integration modes. In practice, that means if an external system already has an MCP server, Hermes can usually connect to it with much lower integration cost.&lt;/p&gt;
&lt;p&gt;That is more flexible than writing a custom plugin for every single system. For users who already have tools built around the MCP ecosystem, Hermes should be much easier to extend.&lt;/p&gt;
&lt;h3 id=&#34;4-it-is-friendly-to-openclaw-users&#34;&gt;4. It is friendly to OpenClaw users
&lt;/h3&gt;&lt;p&gt;This part is especially interesting. The Hermes README directly provides &lt;code&gt;hermes claw migrate&lt;/code&gt;, and explicitly says it can import configuration, memory, skills, API keys, and messaging platform settings from OpenClaw.&lt;/p&gt;
&lt;p&gt;That suggests Hermes is not trying to ignore the existing ecosystem and start from zero. It is clearly positioning some OpenClaw users as a migration audience.&lt;/p&gt;
&lt;h2 id=&#34;03-how-to-get-started-quickly&#34;&gt;03 How to get started quickly
&lt;/h2&gt;&lt;p&gt;The officially recommended Hermes Agent installation method is very straightforward:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;According to the official README, it supports Linux, macOS, WSL2, and Android Termux. One important note is that native Windows is explicitly not supported right now, so Windows users are advised to use WSL2.&lt;/p&gt;
&lt;p&gt;After installation, you would usually refresh your shell first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then you can launch it directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want to go through a more complete step-by-step initialization flow, the easiest command is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Based on the official documentation and README, a simple first-time setup path looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;hermes setup&lt;/code&gt; to finish the base configuration.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;hermes model&lt;/code&gt; to choose a model provider and model.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;hermes tools&lt;/code&gt; to enable the toolsets you want.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;hermes&lt;/code&gt; to enter the interactive CLI.&lt;/li&gt;
&lt;li&gt;If you want channels such as Telegram or Discord, continue with &lt;code&gt;hermes gateway&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you are already an OpenClaw user, it is also worth previewing the migration command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;That lets you inspect what can be migrated before doing a real import.&lt;/p&gt;
&lt;h2 id=&#34;04-how-to-think-about-it-versus-openclaw&#34;&gt;04 How to think about it versus OpenClaw
&lt;/h2&gt;&lt;p&gt;From the official docs and README, Hermes Agent and OpenClaw are not simply a case of one replacing the other. Their positioning overlaps, but their priorities are clearly different.&lt;/p&gt;
&lt;h3 id=&#34;what-hermes-agent-feels-like&#34;&gt;What Hermes Agent feels like
&lt;/h3&gt;&lt;p&gt;Hermes feels more like a product centered on an agent core and workflow system. It emphasizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI experience&lt;/li&gt;
&lt;li&gt;Memory and skill accumulation&lt;/li&gt;
&lt;li&gt;Project context files&lt;/li&gt;
&lt;li&gt;MCP extensibility&lt;/li&gt;
&lt;li&gt;Parallel sub-agents&lt;/li&gt;
&lt;li&gt;Switching execution backends across local, container, remote, and serverless environments&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your main goal is to make the agent understand your project better, reuse capabilities over time, and connect more naturally into MCP and developer workflows, Hermes is likely the better fit.&lt;/p&gt;
&lt;h3 id=&#34;what-openclaw-feels-like&#34;&gt;What OpenClaw feels like
&lt;/h3&gt;&lt;p&gt;OpenClaw feels more like a platform centered on a personal AI assistant plus a messaging gateway. It emphasizes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rich messaging channel integration&lt;/li&gt;
&lt;li&gt;A continuously running Gateway&lt;/li&gt;
&lt;li&gt;A browser-based Control UI&lt;/li&gt;
&lt;li&gt;Device pairing, remote access, and status management&lt;/li&gt;
&lt;li&gt;Stronger assistant-oriented surfaces such as voice, mobile access, and Canvas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If your main goal is to keep a personal AI assistant reliably available across multiple chat channels and devices, with a control panel to manage it, OpenClaw has a stronger product feel in that direction.&lt;/p&gt;
&lt;h3 id=&#34;a-more-practical-rule-of-thumb&#34;&gt;A more practical rule of thumb
&lt;/h3&gt;&lt;p&gt;You can roughly think of the two like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hermes Agent: more of a “growing general-purpose agent workspace”&lt;/li&gt;
&lt;li&gt;OpenClaw: more of a “multi-channel always-on personal AI assistant platform”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That distinction is not absolute, because both projects are still expanding and Hermes also offers a migration path from OpenClaw. But based on the currently public material, Hermes is more prominent on the memory, skills, context, MCP, and developer-workflow side, while OpenClaw looks more mature on the gateway, multi-channel, Control UI, and device-access side.&lt;/p&gt;
&lt;h2 id=&#34;05-who-should-try-it&#34;&gt;05 Who should try it
&lt;/h2&gt;&lt;p&gt;Hermes Agent is especially worth trying first if you fit one of these profiles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You already rely heavily on AI tools in the terminal and want an agent that better understands your codebase and project rules.&lt;/li&gt;
&lt;li&gt;You want to combine &lt;code&gt;AGENTS.md&lt;/code&gt;, skills, memory, and MCP into one workflow.&lt;/li&gt;
&lt;li&gt;You do not want to be locked into a single model vendor and prefer flexible provider switching.&lt;/li&gt;
&lt;li&gt;You already use OpenClaw and want to explore a direction that is more centered on agent workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you care more about mobile reach, broad IM platform integration, a browser control console, and the feeling of an always-online personal assistant, OpenClaw still has a lot of appeal.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&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 Docs: &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: Machines Start Dreaming While Humans Lose Sleep</title>
        <link>https://knightli.com/en/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/en/2026/04/12/openclaw-dreaming-machine-dreams-humans-lose-sleep/</guid>
        <description>&lt;p&gt;Long-term memory has always been a weak point for large models. As context grows, memory becomes harder to manage. An agent may appear to remember everything, yet become worse at judging what matters and what should be forgotten.&lt;/p&gt;
&lt;p&gt;On April 5, OpenClaw introduced an experimental feature called Dreaming. It is not just a catchy label. It is a background memory-management system modeled on human sleep, designed to help agents wake up with cleaner and more useful memory.&lt;/p&gt;
&lt;h2 id=&#34;01-a-sleep-based-pipeline-for-memory-consolidation&#34;&gt;01 A sleep-based pipeline for memory consolidation
&lt;/h2&gt;&lt;p&gt;Dreaming does more than index data. It breaks memory processing into three stages that mirror different functions of human sleep.&lt;/p&gt;
&lt;p&gt;Light Sleep: the system scans recent conversations and retrieval traces, removes duplication, and builds a candidate list. At this stage, it only buffers information and does not modify the core memory file &lt;code&gt;MEMORY.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Deep Sleep: the system applies stricter filters to identify durable information. Only entries that pass thresholds for score, recall count, and distinct query count move forward. Before writing anything, it checks the latest logs again to remove stale content. The final result is appended to &lt;code&gt;MEMORY.md&lt;/code&gt;, while a deep-sleep summary is written to &lt;code&gt;DREAMS.md&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;REM: after memory consolidation, the system looks for hidden links across recent behavior traces. It extracts patterns and reflective summaries, then stores them in a dedicated REM section to help the agent respond with better structure and broader context.&lt;/p&gt;
&lt;p&gt;Dreaming also produces a human-readable dream journal. Once enough material accumulates, a background sub-agent calls the default model and appends a short natural-language entry to &lt;code&gt;DREAMS.md&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;02-a-scoring-system-for-deciding-what-deserves-to-stay&#34;&gt;02 A scoring system for deciding what deserves to stay
&lt;/h2&gt;&lt;p&gt;The real point of Dreaming is not just organizing memory, but filtering it. Instead of keeping everything, OpenClaw uses a weighted scoring model to decide what belongs in long-term storage.&lt;/p&gt;
&lt;p&gt;The six dimensions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Relevance (30%): how useful the information is when retrieved.&lt;/li&gt;
&lt;li&gt;Frequency (24%): how often the item appears in short-term signals.&lt;/li&gt;
&lt;li&gt;Query diversity (15%): whether it shows up across different prompts and contexts.&lt;/li&gt;
&lt;li&gt;Recency (15%): whether the information is still fresh and actionable.&lt;/li&gt;
&lt;li&gt;Integration (10%): whether it remains stable across multiple days.&lt;/li&gt;
&lt;li&gt;Concept richness (6%): how dense and connected its concept graph is.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, this means the system tries to keep information that is repeated, useful, current, and broadly applicable, while letting lower-value noise fade away.&lt;/p&gt;
&lt;h2 id=&#34;03-why-it-reminds-people-of-claudes-dreaming-approach&#34;&gt;03 Why it reminds people of Claude&amp;rsquo;s &amp;ldquo;dreaming&amp;rdquo; approach
&lt;/h2&gt;&lt;p&gt;Some developers have noted that Dreaming resembles the automated dreaming logic described in leaked Claude Code material around the KAIROS system. Older approaches that repeatedly rewrote the entire &lt;code&gt;MEMORY.md&lt;/code&gt; could become messy over time. By splitting the flow into light sleep, deep sleep, and REM, Dreaming makes the pipeline more explicit: consolidate first, preserve next, and derive higher-level patterns last.&lt;/p&gt;
&lt;p&gt;Others have highlighted the neuroscience angle. Terms like Dreaming, Light Sleep, Deep Sleep, and REM are not random branding. They directly borrow from human models of sleep-based memory consolidation.&lt;/p&gt;
&lt;p&gt;OpenClaw already uses files like &lt;code&gt;IDENTITY.md&lt;/code&gt;, &lt;code&gt;USER.md&lt;/code&gt;, and &lt;code&gt;HEARTBEAT.md&lt;/code&gt; to preserve identity, user context, and continuity. &lt;code&gt;DREAMS.md&lt;/code&gt; fills in the missing piece: deciding which memories are actually worth keeping.&lt;/p&gt;
&lt;h2 id=&#34;04-the-most-ironic-part-machines-dream-humans-stay-awake&#34;&gt;04 The most ironic part: machines dream, humans stay awake
&lt;/h2&gt;&lt;p&gt;The value of Dreaming is not that AI remembers everything. It is that AI learns to review short-term traces, extract patterns, and discard noise. A strong agent should not behave like a dumb storage device. It should become better over time at understanding a user&amp;rsquo;s preferences, recurring goals, and long-term context.&lt;/p&gt;
&lt;p&gt;From an engineering perspective, the most interesting part is that the system is not presented as a mystical black box. It is a structured backend process with stages, thresholds, reflection, and forgetting rules. That makes AI memory feel less like uncontrolled context bloat and more like a designed system.&lt;/p&gt;
&lt;p&gt;That is also what makes the whole thing feel ironic. We are spending enormous effort teaching machines how to dream, while many people are losing sleep over being replaced by those same increasingly capable systems.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Use llama-quantize for GGUF Models</title>
        <link>https://knightli.com/en/2026/04/12/llama-quantize-gguf-guide/</link>
        <pubDate>Sun, 12 Apr 2026 09:42:36 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/llama-quantize-gguf-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama-quantize&lt;/code&gt; is the quantization tool in &lt;code&gt;llama.cpp&lt;/code&gt;. It is used to convert high-precision &lt;code&gt;GGUF&lt;/code&gt; models into smaller quantized versions.&lt;/p&gt;
&lt;p&gt;Its most common use is turning formats such as &lt;code&gt;F32&lt;/code&gt;, &lt;code&gt;BF16&lt;/code&gt;, or &lt;code&gt;FP16&lt;/code&gt; into versions like &lt;code&gt;Q4_K_M&lt;/code&gt;, &lt;code&gt;Q5_K_M&lt;/code&gt;, or &lt;code&gt;Q8_0&lt;/code&gt; that are easier to run locally. After quantization, models usually become much smaller and often faster at inference, but some quality loss is expected.&lt;/p&gt;
&lt;h2 id=&#34;basic-workflow&#34;&gt;Basic workflow
&lt;/h2&gt;&lt;p&gt;A typical workflow is to prepare the original model, convert it to GGUF, and then run quantization.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;After that, you can run the quantized model with &lt;code&gt;llama-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;&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;common-options&#34;&gt;Common options
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--allow-requantize&lt;/code&gt;: allows requantizing an already quantized model, usually not ideal for quality&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--leave-output-tensor&lt;/code&gt;: keeps the output layer unquantized, increasing size but sometimes helping quality&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--pure&lt;/code&gt;: disables mixed quantization and uses a more uniform quant type&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--imatrix&lt;/code&gt;: uses an importance matrix to improve quantization quality&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--keep-split&lt;/code&gt;: keeps the original shard layout instead of producing one merged file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you just want a practical starting point, this is often enough:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;how-to-choose-a-quant&#34;&gt;How to choose a quant
&lt;/h2&gt;&lt;p&gt;You can think of quant levels as a tradeoff between size, speed, and quality:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q8_0&lt;/code&gt;: larger, but usually safer for quality&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q6_K&lt;/code&gt; / &lt;code&gt;Q5_K_M&lt;/code&gt;: common balanced choices&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_K_M&lt;/code&gt;: a very common default with a good size-quality balance&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q3&lt;/code&gt; / &lt;code&gt;Q2&lt;/code&gt;: useful when hardware is very limited, but quality loss is more visible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The practical goal is usually not to pick the biggest quant you can fit, but the one that runs reliably on your hardware while keeping acceptable quality.&lt;/p&gt;
&lt;h2 id=&#34;practical-takeaway&#34;&gt;Practical takeaway
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;start with &lt;code&gt;Q4_K_M&lt;/code&gt; or &lt;code&gt;Q5_K_M&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;move up to &lt;code&gt;Q6_K&lt;/code&gt; or &lt;code&gt;Q8_0&lt;/code&gt; if quality matters more&lt;/li&gt;
&lt;li&gt;move down to &lt;code&gt;Q3&lt;/code&gt; or &lt;code&gt;Q2&lt;/code&gt; if memory is tight&lt;/li&gt;
&lt;li&gt;compare versions with the same prompt set&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In short, &lt;code&gt;llama-quantize&lt;/code&gt; is useful because it makes GGUF models easier to run on local hardware, not just because it makes files smaller.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Get GGUF Models from Hugging Face with llama.cpp</title>
        <link>https://knightli.com/en/2026/04/12/llama-cpp-hugging-face-gguf-models/</link>
        <pubDate>Sun, 12 Apr 2026 09:31:38 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/llama-cpp-hugging-face-gguf-models/</guid>
        <description>&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; can work directly with GGUF models hosted on Hugging Face, so you do not always need to download model files manually first.&lt;/p&gt;
&lt;p&gt;If a model repository already provides GGUF files, you can use the &lt;code&gt;-hf&lt;/code&gt; argument in the CLI, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;By default, this downloads from Hugging Face.&lt;br&gt;
If you use another service that exposes a Hugging Face compatible API, you can switch the download endpoint with the &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt; environment variable.&lt;/p&gt;
&lt;p&gt;One important detail is that &lt;code&gt;llama.cpp&lt;/code&gt; only works directly with the &lt;code&gt;GGUF&lt;/code&gt; format.&lt;br&gt;
If your model is in another format, you need to convert it first with the &lt;code&gt;convert_*.py&lt;/code&gt; scripts provided in the repository.&lt;/p&gt;
&lt;p&gt;Hugging Face also offers several online tools related to &lt;code&gt;llama.cpp&lt;/code&gt;, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;converting models to &lt;code&gt;GGUF&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;quantizing weights to reduce size&lt;/li&gt;
&lt;li&gt;converting LoRA adapters&lt;/li&gt;
&lt;li&gt;editing GGUF metadata in the browser&lt;/li&gt;
&lt;li&gt;hosting &lt;code&gt;llama.cpp&lt;/code&gt; inference endpoints&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only want the practical takeaway, start with repositories that already provide &lt;code&gt;GGUF&lt;/code&gt;, then use &lt;code&gt;llama-cli -hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;. In most cases, that is the simplest path.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex Usage and Quota Check</title>
        <link>https://knightli.com/en/2026/04/12/codex-usage-quota-check/</link>
        <pubDate>Sun, 12 Apr 2026 00:01:33 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/12/codex-usage-quota-check/</guid>
        <description>&lt;p&gt;If you want to check the remaining quota for a Codex account, a small local script can call ChatGPT&amp;rsquo;s &lt;code&gt;/backend-api/wham/usage&lt;/code&gt; endpoint directly.&lt;/p&gt;
&lt;p&gt;The overall flow is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read &lt;code&gt;tokens.access_token&lt;/code&gt; and &lt;code&gt;tokens.account_id&lt;/code&gt; from &lt;code&gt;auth.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Send a request to &lt;code&gt;https://chatgpt.com/backend-api/wham/usage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Include &lt;code&gt;Authorization: Bearer ...&lt;/code&gt; and &lt;code&gt;ChatGPT-Account-Id&lt;/code&gt; in the headers&lt;/li&gt;
&lt;li&gt;Parse the five-hour and weekly quota windows from the response&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-this-is-useful-for&#34;&gt;What this is useful for
&lt;/h2&gt;&lt;p&gt;This approach is handy when you want to quickly confirm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how much five-hour quota is left&lt;/li&gt;
&lt;li&gt;how much weekly quota is left&lt;/li&gt;
&lt;li&gt;when the quota resets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you manage multiple accounts, the script can also scan &lt;code&gt;account/*.auth.json&lt;/code&gt; and print a compact summary table. The &lt;code&gt;auth.json&lt;/code&gt; file for your current signed-in ChatGPT account can usually be found under &lt;code&gt;~/.codex/&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;the-key-inputs&#34;&gt;The key inputs
&lt;/h2&gt;&lt;p&gt;In practice, the script mainly depends on two values:&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;Both are often available in a local &lt;code&gt;auth.json&lt;/code&gt;. With them, the request headers usually look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;how-to-read-the-response&#34;&gt;How to read the response
&lt;/h2&gt;&lt;p&gt;After the request succeeds, the most important entries are the two quota windows:&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;A practical script usually normalizes them into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;remaining percentage&lt;/li&gt;
&lt;li&gt;reset time&lt;/li&gt;
&lt;li&gt;window length&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is also useful to handle alternate field names such as &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;, and &lt;code&gt;weekly_limit&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;common-issues&#34;&gt;Common issues
&lt;/h2&gt;&lt;p&gt;A 401 response usually means the &lt;code&gt;access_token&lt;/code&gt; is expired or invalid.&lt;/p&gt;
&lt;p&gt;A 403 response usually means the account cannot access this endpoint, or the account is in an abnormal state.&lt;/p&gt;
&lt;p&gt;If the response uses inconsistent field names, it is better to normalize them before printing the summary.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference
&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;code&#34;&gt;Code
&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>What Does `it` Mean in Gemma-4-31B-it</title>
        <link>https://knightli.com/en/2026/04/11/gemma-4-31b-it-meaning/</link>
        <pubDate>Sat, 11 Apr 2026 20:45:34 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/11/gemma-4-31b-it-meaning/</guid>
        <description>&lt;p&gt;In &lt;code&gt;gemma-4-31B-it&lt;/code&gt;, &lt;code&gt;it&lt;/code&gt; stands for &lt;code&gt;Instruction Tuned&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For most users, that means this version is designed for chat, Q&amp;amp;A, coding help, and other instruction-following tasks.&lt;/p&gt;
&lt;h2 id=&#34;what-it-means&#34;&gt;What &lt;code&gt;it&lt;/code&gt; means
&lt;/h2&gt;&lt;p&gt;Models often come in two common forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base / Pre-trained: closer to a raw next-token predictor&lt;/li&gt;
&lt;li&gt;&lt;code&gt;it&lt;/code&gt;: tuned to follow user instructions more reliably&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you ask something like &amp;ldquo;translate this text&amp;rdquo; or &amp;ldquo;write a Python script&amp;rdquo;, the &lt;code&gt;it&lt;/code&gt; version usually behaves more like an assistant.&lt;/p&gt;
&lt;h2 id=&#34;what-31b-means&#34;&gt;What &lt;code&gt;31B&lt;/code&gt; means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;31B&lt;/code&gt; means the model has about 31 billion parameters.&lt;/p&gt;
&lt;p&gt;In general:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;more parameters often mean stronger capability&lt;/li&gt;
&lt;li&gt;but also higher VRAM or RAM requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So &lt;code&gt;31B&lt;/code&gt; is a relatively large model and needs stronger hardware.&lt;/p&gt;
&lt;h2 id=&#34;what-gemma-4-means&#34;&gt;What &lt;code&gt;Gemma-4&lt;/code&gt; means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Gemma-4&lt;/code&gt; identifies the model family and generation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma&lt;/code&gt;: Google&amp;rsquo;s open model family&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;: the fourth generation in that family&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;which-one-to-choose&#34;&gt;Which one to choose
&lt;/h2&gt;&lt;p&gt;If your goal is chat, Q&amp;amp;A, translation, or coding, the &lt;code&gt;-it&lt;/code&gt; version is usually the better choice.&lt;/p&gt;
&lt;p&gt;The base version is more relevant for lower-level research, fine-tuning, or custom training workflows.&lt;/p&gt;
&lt;h2 id=&#34;one-line-summary&#34;&gt;One-line summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;gemma-4-31B-it&lt;/code&gt; means: Gemma 4 family, 31 billion parameters, instruction-tuned for conversation and task execution.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Choosing Llama GGUF Quantization on Hugging Face: Practical Advice from Q8 to Q2</title>
        <link>https://knightli.com/en/2026/04/11/llama-gguf-quantization-selection/</link>
        <pubDate>Sat, 11 Apr 2026 20:07:29 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/11/llama-gguf-quantization-selection/</guid>
        <description>&lt;p&gt;When selecting a Llama GGUF model on Hugging Face, you can think of quantization levels like resolution: lower levels need less VRAM/RAM, but quality drops gradually.&lt;/p&gt;
&lt;h2 id=&#34;understand-32-16-and-q-levels-first&#34;&gt;Understand 32, 16, and Q levels first
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;32&lt;/code&gt;: closest to original/uncompressed quality, but hardware demand is extreme.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16&lt;/code&gt;: still very close to original quality, around half the size of &lt;code&gt;32&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q8&lt;/code&gt;: common entry point for quantized models (&lt;code&gt;Q8_0&lt;/code&gt; or &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;: lower number means lower resource use and higher quality loss risk.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-k_m--k_s-means&#34;&gt;What &lt;code&gt;K_M&lt;/code&gt; / &lt;code&gt;K_S&lt;/code&gt; means
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;K_M&lt;/code&gt; and &lt;code&gt;K_S&lt;/code&gt; are mixed quantization variants:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;most weights stay at the target quantization level&lt;/li&gt;
&lt;li&gt;important parts keep higher precision&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So at the same level, &lt;code&gt;Qx_K_M&lt;/code&gt; or &lt;code&gt;Qx_K_S&lt;/code&gt; is usually slightly better than plain &lt;code&gt;Qx&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;practical-picking-strategy&#34;&gt;Practical picking strategy
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;If hardware allows, start with &lt;code&gt;Q8&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If memory is tight, step down through &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;Try not to go below &lt;code&gt;Q4&lt;/code&gt;; &lt;code&gt;Q4_K_M&lt;/code&gt; is a common lower bound.&lt;/li&gt;
&lt;li&gt;Below &lt;code&gt;Q4&lt;/code&gt;, quality degradation becomes increasingly visible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;quality-order-best-to-worst&#34;&gt;Quality order (best to worst)
&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; Above this point, quality is effectively the same, but hardware requirements are extreme &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; This is the typical sweet spot &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; Below this point, quality loss becomes visible &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;If you want one short rule: start with &lt;code&gt;Q8&lt;/code&gt; or &lt;code&gt;Q6_K_M&lt;/code&gt;, then move down to &lt;code&gt;Q5&lt;/code&gt; or &lt;code&gt;Q4_K_M&lt;/code&gt; only when needed.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Access a Local Ollama API Over LAN on Windows</title>
        <link>https://knightli.com/en/2026/04/11/ollama-api-lan-access-windows/</link>
        <pubDate>Sat, 11 Apr 2026 16:43:52 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/11/ollama-api-lan-access-windows/</guid>
        <description>&lt;p&gt;If you want other devices in the same LAN to access your local Ollama API, follow these steps.&lt;/p&gt;
&lt;h2 id=&#34;set-the-listening-host&#34;&gt;Set the listening host
&lt;/h2&gt;&lt;p&gt;First, set Ollama to listen on all network interfaces:&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;open-the-firewall&#34;&gt;Open the firewall
&lt;/h2&gt;&lt;p&gt;In Windows Firewall advanced settings, create an inbound rule and allow the target port (for example &lt;code&gt;8080&lt;/code&gt;):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Press Win + S, search and open &amp;ldquo;Windows Defender Firewall&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;Advanced settings&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Select &amp;ldquo;Inbound Rules&amp;rdquo; -&amp;gt; &amp;ldquo;New Rule&amp;hellip;&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Choose &amp;ldquo;Port&amp;rdquo;, then click &amp;ldquo;Next&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Select protocol (usually TCP), enter the target port in &amp;ldquo;Specific local ports&amp;rdquo; (for example &lt;code&gt;8080&lt;/code&gt;), then click &amp;ldquo;Next&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Choose &amp;ldquo;Allow the connection&amp;rdquo;, then click &amp;ldquo;Next&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;In &amp;ldquo;Profile&amp;rdquo;, select Domain, Private, and Public, then click &amp;ldquo;Next&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Name the rule (for example &lt;code&gt;OpenPort8080&lt;/code&gt;) and click &amp;ldquo;Finish&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;run-ollama&#34;&gt;Run Ollama
&lt;/h2&gt;&lt;p&gt;Ollama run 模型&lt;/p&gt;
&lt;h2 id=&#34;access-the-model-through-api&#34;&gt;Access the model through 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>What Models Power fnOS AI Photos: Face, Object, and Semantic Search Stack</title>
        <link>https://knightli.com/en/2026/04/11/fnos-ai-photo-model-stack/</link>
        <pubDate>Sat, 11 Apr 2026 08:27:57 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/11/fnos-ai-photo-model-stack/</guid>
        <description>&lt;p&gt;The AI photo feature in Feiniu NAS (fnOS) is typically built by integrating mainstream open-source models, rather than training all core algorithms from scratch.&lt;/p&gt;
&lt;h2 id=&#34;1-face-recognition-insightface&#34;&gt;1) Face recognition: InsightFace
&lt;/h2&gt;&lt;p&gt;For face-related functions, InsightFace is usually the core.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Common feature-learning method: ArcFace&lt;/li&gt;
&lt;li&gt;Main role: face detection, embedding extraction, clustering, and person recognition&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-object-and-scene-understanding-yolo-family&#34;&gt;2) Object and scene understanding: YOLO family
&lt;/h2&gt;&lt;p&gt;Object detection in photos (for example cats, dogs, cars, computers) and part of scene-level understanding are generally handled by YOLO models (often YOLOv8 or lightweight variants).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Strength: good speed/accuracy balance&lt;/li&gt;
&lt;li&gt;Fit: edge-like NAS environments with limited compute budgets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-semantic-search-clip--chinese-clip&#34;&gt;3) Semantic search: CLIP / Chinese-CLIP
&lt;/h2&gt;&lt;p&gt;A key capability is natural-language photo search, such as &amp;ldquo;a dog on the grass&amp;rdquo; or &amp;ldquo;a man wearing sunglasses.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Typical implementation uses CLIP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;images and text are projected into the same embedding space&lt;/li&gt;
&lt;li&gt;Chinese deployments usually add Chinese-CLIP or similar localized variants&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;A simple way to view the fnOS AI photo stack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;InsightFace for faces&lt;/li&gt;
&lt;li&gt;YOLO for objects and scenes&lt;/li&gt;
&lt;li&gt;CLIP for text-image semantic alignment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The main engineering value is in integration quality, localization, and hardware acceleration, more than from-zero model invention.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 Local Runtime Guide: From One-Command Start to Dev Integration</title>
        <link>https://knightli.com/en/2026/04/10/gemma4-local-runtime-options/</link>
        <pubDate>Fri, 10 Apr 2026 22:54:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/10/gemma4-local-runtime-options/</guid>
        <description>&lt;p&gt;If you want to run Gemma 4 locally, you can choose from four practical paths depending on your goal and hardware.&lt;/p&gt;
&lt;h2 id=&#34;1-fastest-start-ollama-recommended&#34;&gt;1) Fastest start: Ollama (recommended)
&lt;/h2&gt;&lt;p&gt;This is the lowest-friction option for quick testing, daily chat, and local API usage.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Works on Windows, macOS, and Linux&lt;/li&gt;
&lt;li&gt;Handles hardware acceleration automatically&lt;/li&gt;
&lt;li&gt;Offers OpenAI-style local API compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-gui-workflow-lm-studio--unsloth-studio&#34;&gt;2) GUI workflow: LM Studio / Unsloth Studio
&lt;/h2&gt;&lt;p&gt;If you prefer a desktop UI instead of terminal commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LM Studio: browse and run Gemma 4 quantized variants from Hugging Face (for example 4-bit, 8-bit), with resource visibility.&lt;/li&gt;
&lt;li&gt;Unsloth Studio: supports both inference and low-VRAM fine-tuning, often friendlier on 6GB-8GB GPUs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-low-spec-and-maximum-control-llamacpp&#34;&gt;3) Low-spec and maximum control: llama.cpp
&lt;/h2&gt;&lt;p&gt;Good for older hardware, CPU-focused setups, or users who want deeper runtime control.&lt;/p&gt;
&lt;p&gt;With &lt;code&gt;.gguf&lt;/code&gt; model files and quantization, Gemma 4 can be made practical on much smaller hardware budgets.&lt;/p&gt;
&lt;h2 id=&#34;4-developer-integration-transformers--vllm&#34;&gt;4) Developer integration: Transformers / vLLM
&lt;/h2&gt;&lt;p&gt;If you need Gemma 4 inside your own application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformers: straightforward Python integration&lt;/li&gt;
&lt;li&gt;vLLM: high-throughput inference for stronger GPU environments&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;quick-selection&#34;&gt;Quick selection
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Need&lt;/th&gt;
          &lt;th&gt;Recommended tools&lt;/th&gt;
          &lt;th&gt;Hardware bar&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;I just want it running now&lt;/td&gt;
          &lt;td&gt;Ollama&lt;/td&gt;
          &lt;td&gt;Low&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;I want a ChatGPT-like UI&lt;/td&gt;
          &lt;td&gt;LM Studio&lt;/td&gt;
          &lt;td&gt;Medium&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;My VRAM is limited (6GB-8GB)&lt;/td&gt;
          &lt;td&gt;Unsloth / llama.cpp&lt;/td&gt;
          &lt;td&gt;Low&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;I am building local AI apps&lt;/td&gt;
          &lt;td&gt;Ollama / Transformers / vLLM&lt;/td&gt;
          &lt;td&gt;Medium to high&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;I need fine-tuning&lt;/td&gt;
          &lt;td&gt;Unsloth Studio&lt;/td&gt;
          &lt;td&gt;Medium to high&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;model-size-suggestion&#34;&gt;Model size suggestion
&lt;/h2&gt;&lt;p&gt;Gemma 4 comes in multiple sizes (for example E2B, E4B, 31B).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start with quantized E2B/E4B on mainstream laptops&lt;/li&gt;
&lt;li&gt;Move to larger variants only after your baseline pipeline is stable&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Drop MCP? Why CLI Is Becoming the Default Tool Layer for Agents</title>
        <link>https://knightli.com/en/2026/04/10/mcp-vs-cli-for-agents/</link>
        <pubDate>Fri, 10 Apr 2026 21:55:12 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/10/mcp-vs-cli-for-agents/</guid>
        <description>&lt;p&gt;Over the last year, debates about agent toolchains have increasingly centered on one question:&lt;/p&gt;
&lt;p&gt;Does MCP (Model Context Protocol) make tool calling simpler, or does it make simple tasks more complex?&lt;/p&gt;
&lt;p&gt;For most day-to-day engineering tasks, CLI is becoming the more practical default.&lt;/p&gt;
&lt;h2 id=&#34;cost-gap-is-not-a-ux-issue-but-an-order-of-magnitude-issue&#34;&gt;Cost gap is not a UX issue, but an order-of-magnitude issue
&lt;/h2&gt;&lt;p&gt;The biggest practical pressure in MCP is token overhead.&lt;/p&gt;
&lt;p&gt;In common scenarios, MCP often has to load large tool schemas before actual execution. Using a GitHub MCP Server as an example, initialization alone can consume tens of thousands of tokens. For long tasks, this directly squeezes context budget.&lt;/p&gt;
&lt;p&gt;Community benchmarks keep pointing to the same conclusion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single MCP calls commonly cost several to dozens of times more than CLI&lt;/li&gt;
&lt;li&gt;Retry recovery is also more expensive (reconnect plus context reload)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not just &amp;ldquo;a little slower.&amp;rdquo; It scales into API cost, latency, and reliability issues.&lt;/p&gt;
&lt;h2 id=&#34;why-models-are-naturally-better-at-cli&#34;&gt;Why models are naturally better at CLI
&lt;/h2&gt;&lt;p&gt;A frequently overlooked fact is training distribution.&lt;/p&gt;
&lt;p&gt;LLMs have seen massive amounts of terminal text during training: commands, outputs, errors, scripts, and man pages. In other words, CLI interaction is already close to the model&amp;rsquo;s native input pattern.&lt;/p&gt;
&lt;p&gt;By contrast, MCP&amp;rsquo;s JSON-RPC and tool schema style became widespread only in recent years. Models can learn it, but familiarity and compression efficiency are often still weaker than long-established CLI patterns.&lt;/p&gt;
&lt;p&gt;That also explains why, in many cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;for the same goal, CLI commands are shorter&lt;/li&gt;
&lt;li&gt;outputs are easier to continue reasoning over&lt;/li&gt;
&lt;li&gt;error recovery paths are more stable&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;security-and-isolation-mcp-still-has-catching-up-to-do&#34;&gt;Security and isolation: MCP still has catching up to do
&lt;/h2&gt;&lt;p&gt;MCP is not incapable of security, but its ecosystem is still early.&lt;/p&gt;
&lt;p&gt;Common concerns today include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tool Poisoning in descriptions&lt;/li&gt;
&lt;li&gt;behavior drift (Rug Pull)&lt;/li&gt;
&lt;li&gt;same-name tool override (Shadowing)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLI also has security risks (injection, privilege misuse, path risks), but its process model, permission boundaries, and audit chain have been validated through decades of engineering practice. In production, that predictability matters.&lt;/p&gt;
&lt;h2 id=&#34;this-does-not-mean-mcp-has-no-value&#34;&gt;This does not mean MCP has no value
&lt;/h2&gt;&lt;p&gt;I do not think MCP should be abandoned.&lt;/p&gt;
&lt;p&gt;A more reasonable positioning is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI handles the execution layer (local, low-latency, high-frequency calls)&lt;/li&gt;
&lt;li&gt;MCP handles the connection layer (remote service discovery, unified auth, audit, and multitenancy)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is the commonly discussed hybrid architecture: &lt;code&gt;CLI + MCP Gateway&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When integrating many remote systems and enforcing unified governance and compliance, MCP still has clear value. But for helping agents complete engineering work quickly, CLI-first usually better matches current model capability boundaries.&lt;/p&gt;
&lt;p&gt;In today&amp;rsquo;s engineering reality, CLI is closer to an agent&amp;rsquo;s working native language; MCP is better positioned as a connection protocol rather than the only execution protocol.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>PersonaPlex Quick Guide: Full-Duplex Conversational Speech with Persona and Voice Control</title>
        <link>https://knightli.com/en/2026/04/10/personaplex-full-duplex-speech-model-guide/</link>
        <pubDate>Fri, 10 Apr 2026 11:34:38 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/10/personaplex-full-duplex-speech-model-guide/</guid>
        <description>&lt;p&gt;PersonaPlex is a real-time full-duplex speech-to-speech conversational model. It provides two key control dimensions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;text prompts for role/persona control&lt;/li&gt;
&lt;li&gt;audio conditioning for voice style control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is built on Moshi architecture and weights, aiming for low-latency and more natural spoken interactions with consistent persona behavior.&lt;/p&gt;
&lt;h2 id=&#34;what-it-is-good-for&#34;&gt;What It Is Good For
&lt;/h2&gt;&lt;p&gt;Common use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;real-time voice assistants&lt;/li&gt;
&lt;li&gt;customer-service style role interactions&lt;/li&gt;
&lt;li&gt;low-latency conversational demos&lt;/li&gt;
&lt;li&gt;persona + voice control experiments&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites
&lt;/h2&gt;&lt;p&gt;Install the Opus audio codec development library:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;installation-and-environment&#34;&gt;Installation and Environment
&lt;/h2&gt;&lt;p&gt;Install from repository:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;For Blackwell GPUs, an extra step can be used:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After accepting the PersonaPlex model license on Hugging Face, set your 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;launch-live-server&#34;&gt;Launch Live Server
&lt;/h2&gt;&lt;p&gt;Standard launch (temporary 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;If GPU memory is limited, enable CPU offload (&lt;code&gt;accelerate&lt;/code&gt; required):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&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;Use &lt;code&gt;localhost:8998&lt;/code&gt; for local runs, or the printed access link for remote setups.&lt;/p&gt;
&lt;h2 id=&#34;offline-evaluation&#34;&gt;Offline Evaluation
&lt;/h2&gt;&lt;p&gt;The offline script consumes an input wav and produces an output wav with the same duration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;built-in-voice-labels&#34;&gt;Built-in Voice Labels
&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;prompting-tips&#34;&gt;Prompting Tips
&lt;/h2&gt;&lt;p&gt;Training coverage mainly includes:&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;Practical tips:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;define role identity first, then add task context&lt;/li&gt;
&lt;li&gt;keep prompts concise to reduce persona drift&lt;/li&gt;
&lt;li&gt;reuse the same voice prompt for stable comparisons&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;PersonaPlex stands out not because it gives one smarter answer, but because it keeps persona and voice behavior more consistent in real-time speech interaction.&lt;/p&gt;
&lt;p&gt;For full-duplex voice agents, this is a practical option worth testing and benchmarking.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Anthropic&#39;s Harness Direction: Agent Infrastructure Is Becoming an Agent OS</title>
        <link>https://knightli.com/en/2026/04/10/anthropic-harness-agent-os/</link>
        <pubDate>Fri, 10 Apr 2026 09:22:56 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/10/anthropic-harness-agent-os/</guid>
        <description>&lt;p&gt;Anthropic recently published an engineering write-up on Harness. On the surface, it explains product implementation. At a deeper level, it answers a longer-term question:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As model capabilities keep evolving, which layers in an Agent system should stay stable, and which should remain fast to replace?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;core-judgment&#34;&gt;Core Judgment
&lt;/h2&gt;&lt;p&gt;My key takeaway is: Agent infrastructure is becoming more like a lightweight &lt;strong&gt;Agent OS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The focus is not to hard-code today&amp;rsquo;s best workflow, but to define long-lived system abstractions.&lt;/p&gt;
&lt;h2 id=&#34;why-this-matters&#34;&gt;Why This Matters
&lt;/h2&gt;&lt;p&gt;Common problems in many Agent frameworks include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;turning temporary model limitations into permanent architecture&lt;/li&gt;
&lt;li&gt;treating prompt engineering as a system boundary&lt;/li&gt;
&lt;li&gt;turning one useful patch into a long-term dependency&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Models will keep improving. A patch that is reasonable today may become technical debt tomorrow.&lt;/p&gt;
&lt;h2 id=&#34;anthropics-approach-from-concrete-harness-to-meta-harness&#34;&gt;Anthropic&amp;rsquo;s Approach: From Concrete Harness to Meta-Harness
&lt;/h2&gt;&lt;p&gt;Instead of committing to one fixed orchestration style, this approach abstracts three stable interfaces:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;session&lt;/code&gt;: recoverable event and state history&lt;/li&gt;
&lt;li&gt;&lt;code&gt;harness&lt;/code&gt;: reasoning and orchestration loop (brain)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sandbox&lt;/code&gt;: execution environment and tool capabilities (hands)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After separation, the system becomes easier to replace, recover, and scale.&lt;/p&gt;
&lt;h2 id=&#34;1-session-is-not-the-context-window&#34;&gt;1) Session Is Not the Context Window
&lt;/h2&gt;&lt;p&gt;A critical point is: &lt;strong&gt;Session is not model context.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Session should be a queryable, replayable, and recoverable event log, not a direct history dump into the model.&lt;/p&gt;
&lt;p&gt;Benefits of this design:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trimming does not mean history disappears&lt;/li&gt;
&lt;li&gt;compaction does not mean facts are lost&lt;/li&gt;
&lt;li&gt;crash recovery can return to the event layer instead of relying on summary memory&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-harness-as-a-replaceable-orchestration-layer&#34;&gt;2) Harness as a Replaceable Orchestration Layer
&lt;/h2&gt;&lt;p&gt;Harness should focus on orchestration rather than holding business state.&lt;/p&gt;
&lt;p&gt;An ideal interface is closer to:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;execute(name, input) -&amp;gt; string&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This means the model only needs to know what capabilities it can call, without being tightly bound to specific devices, containers, or operating systems.&lt;/p&gt;
&lt;h2 id=&#34;3-sandbox-is-the-hands-not-the-brain&#34;&gt;3) Sandbox Is the &amp;ldquo;Hands,&amp;rdquo; Not the &amp;ldquo;Brain&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;When brain and hands are decoupled:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tool environments can evolve independently&lt;/li&gt;
&lt;li&gt;different infrastructure can be integrated in parallel&lt;/li&gt;
&lt;li&gt;not every session needs a fully prewarmed execution environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This directly improves startup and scalability behavior.&lt;/p&gt;
&lt;h2 id=&#34;performance-and-security-insights&#34;&gt;Performance and Security Insights
&lt;/h2&gt;&lt;p&gt;This split often improves both performance and security.&lt;/p&gt;
&lt;p&gt;On performance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start the brain first, then provision hands on demand&lt;/li&gt;
&lt;li&gt;reduce Time To First Token (TTFT)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On security:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;do not expose high-value credentials directly to the model&lt;/li&gt;
&lt;li&gt;use controlled proxy/vault paths for indirect credential access&lt;/li&gt;
&lt;li&gt;build security boundaries on system constraints, not on assumptions that &amp;ldquo;the model probably can&amp;rsquo;t do this&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links
&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 and Agent Harness: Why It Looks Like AGI</title>
        <link>https://knightli.com/en/2026/04/10/openclaw-agent-architecture-enterprise-ai/</link>
        <pubDate>Fri, 10 Apr 2026 09:16:17 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/10/openclaw-agent-architecture-enterprise-ai/</guid>
        <description>&lt;p&gt;When many people first try OpenClaw, it feels more like a teammate who can get work done than a chatbot.&lt;/p&gt;
&lt;p&gt;That feeling is not mysterious. The key is this: OpenClaw is not a jump in one model capability; it is a complete &lt;strong&gt;Agent Harness&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;core-conclusion&#34;&gt;Core Conclusion
&lt;/h2&gt;&lt;p&gt;The essence of OpenClaw can be summarized as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the model handles understanding and decisions&lt;/li&gt;
&lt;li&gt;the harness handles memory, tools, triggers, execution, and outputs&lt;/li&gt;
&lt;li&gt;the two collaborate through a loop to create continuous action&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So the core reason it &amp;ldquo;feels like AGI&amp;rdquo; is not that the model suddenly became all-powerful, but that systems engineering amplifies what the model can execute.&lt;/p&gt;
&lt;h2 id=&#34;what-is-a-harness&#34;&gt;What Is a Harness
&lt;/h2&gt;&lt;p&gt;You can think of a harness as an exoskeleton for the model.&lt;/p&gt;
&lt;p&gt;A standalone LLM usually provides an answer in a single request. A harness adds these capabilities:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;session and state management: link multi-turn tasks&lt;/li&gt;
&lt;li&gt;memory mechanisms: store and retrieve context when needed&lt;/li&gt;
&lt;li&gt;tool system: call browsers, terminals, files, and external APIs&lt;/li&gt;
&lt;li&gt;trigger mechanisms: wake on timers or events instead of waiting for a human prompt every time&lt;/li&gt;
&lt;li&gt;output channels: write results back to systems, not just return a paragraph&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When these capabilities are connected in one loop, the model shifts from a responder to an executor.&lt;/p&gt;
&lt;h2 id=&#34;why-openclaw-feels-different&#34;&gt;Why OpenClaw Feels Different
&lt;/h2&gt;&lt;p&gt;A traditional chatbot is &amp;ldquo;ask once, answer once&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;OpenClaw is more like a closed loop of &amp;ldquo;observe -&amp;gt; use tools -&amp;gt; inspect results -&amp;gt; decide next&amp;rdquo;. Once this loop is established, the system can keep moving a task forward.&lt;/p&gt;
&lt;p&gt;This is also the most valuable lesson from OpenClaw:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it proves the agent experience mainly comes from architecture design&lt;/li&gt;
&lt;li&gt;it decomposes &amp;ldquo;autonomy&amp;rdquo; into modules that can be engineered&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;value-and-boundaries&#34;&gt;Value and Boundaries
&lt;/h2&gt;&lt;p&gt;OpenClaw is general and flexible, but the trade-offs are also clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the more context and tool definitions you include, the higher the cost&lt;/li&gt;
&lt;li&gt;the more general the system is, the more complex debugging and governance become&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In production scenarios, many teams choose smaller, more specialized agents instead of one universal agent.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Sharing an Agent Skill for E-commerce Product Image Cutout and Standardization</title>
        <link>https://knightli.com/en/2026/04/09/product-cutout-normalize-agent-skill-guide/</link>
        <pubDate>Thu, 09 Apr 2026 21:43:50 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/09/product-cutout-normalize-agent-skill-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;product-cutout-normalize&lt;/code&gt; is an Agent Skill for product images.&lt;/p&gt;
&lt;p&gt;It turns raw product photos into square transparent images with a consistent layout. The default rules are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a &lt;code&gt;1024x1024&lt;/code&gt; canvas&lt;/li&gt;
&lt;li&gt;transparent background&lt;/li&gt;
&lt;li&gt;preserve the full subject as much as possible&lt;/li&gt;
&lt;li&gt;rotate vertical subjects to horizontal&lt;/li&gt;
&lt;li&gt;center the subject&lt;/li&gt;
&lt;li&gt;normalize visible subject width to &lt;code&gt;820px&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is a good fit for e-commerce assets, product libraries, and product detail page image preparation.&lt;/p&gt;
&lt;h2 id=&#34;what-this-skill-solves&#34;&gt;What this skill solves
&lt;/h2&gt;&lt;p&gt;Even after a basic cutout, product images often still have issues such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;leftover white or light gray edges&lt;/li&gt;
&lt;li&gt;inconsistent subject orientation&lt;/li&gt;
&lt;li&gt;inconsistent canvas size&lt;/li&gt;
&lt;li&gt;inconsistent subject scale&lt;/li&gt;
&lt;li&gt;small specks in transparent regions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This skill handles them with a fixed workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use Gemini for cutout&lt;/li&gt;
&lt;li&gt;Clean light-colored background from the borders&lt;/li&gt;
&lt;li&gt;Remove small noise fragments&lt;/li&gt;
&lt;li&gt;Rotate vertical images to horizontal&lt;/li&gt;
&lt;li&gt;Scale the subject to a target width&lt;/li&gt;
&lt;li&gt;Place it in the center of a transparent square canvas&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That makes the output cleaner and more suitable for batch use.&lt;/p&gt;
&lt;h2 id=&#34;when-to-use-it&#34;&gt;When to use it
&lt;/h2&gt;&lt;p&gt;This is a good fit when you need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;batch-process product photos&lt;/li&gt;
&lt;li&gt;export transparent PNG assets&lt;/li&gt;
&lt;li&gt;keep a consistent visual size&lt;/li&gt;
&lt;li&gt;use a stable and repeatable workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only edit a few images or need to manually adjust each layout, this may not be the right tool.&lt;/p&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick start
&lt;/h2&gt;&lt;p&gt;The most direct way to run it is:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Before running it, make sure you have:&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;Install dependencies:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;Set the environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;output-rules&#34;&gt;Output rules
&lt;/h2&gt;&lt;p&gt;The default output is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;transparent-background &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1024x1024&lt;/code&gt; canvas&lt;/li&gt;
&lt;li&gt;&lt;code&gt;820px&lt;/code&gt; subject width&lt;/li&gt;
&lt;li&gt;centered subject&lt;/li&gt;
&lt;li&gt;small noise fragments removed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So this is more than a simple background-removal script. It is closer to a product image cleanup script.&lt;/p&gt;
&lt;h2 id=&#34;main-parameters&#34;&gt;Main parameters
&lt;/h2&gt;&lt;p&gt;Common flags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--model&lt;/code&gt;
Default: &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;
Output square canvas size, default &lt;code&gt;1024&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--target-width&lt;/code&gt;
Visible subject width, default &lt;code&gt;820&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--min-component-pixels&lt;/code&gt;
Transparent fragments smaller than this are removed, default &lt;code&gt;500&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--overwrite&lt;/code&gt;
Overwrite existing outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;workflow&#34;&gt;Workflow
&lt;/h2&gt;&lt;p&gt;The workflow is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use Gemini for cutout&lt;/li&gt;
&lt;li&gt;Clean light-colored border background&lt;/li&gt;
&lt;li&gt;Remove small fragments&lt;/li&gt;
&lt;li&gt;Rotate vertical images to horizontal&lt;/li&gt;
&lt;li&gt;Scale to the target width&lt;/li&gt;
&lt;li&gt;Place the result on a transparent square canvas&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;how-it-differs-from-a-basic-cutout-script&#34;&gt;How it differs from a basic cutout script
&lt;/h2&gt;&lt;p&gt;Compared with a basic background-removal script, it also handles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;subject orientation normalization&lt;/li&gt;
&lt;li&gt;subject size normalization&lt;/li&gt;
&lt;li&gt;canvas size normalization&lt;/li&gt;
&lt;li&gt;small-fragment cleanup&lt;/li&gt;
&lt;li&gt;outputs that are easier to place directly into an asset library&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skillmd-source&#34;&gt;SKILL.md source
&lt;/h2&gt;&lt;p&gt;The full &lt;code&gt;SKILL.md&lt;/code&gt; source is preserved below without modification:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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-source&#34;&gt;scripts/run_pipeline.py source
&lt;/h2&gt;&lt;p&gt;The full &lt;code&gt;scripts/run_pipeline.py&lt;/code&gt; source is preserved below without modification:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&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;Download attachment: &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>How to Use Google Nano Banana for Image Cutouts</title>
        <link>https://knightli.com/en/2026/04/09/google-nano-banana-cutout-guide/</link>
        <pubDate>Thu, 09 Apr 2026 20:10:48 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/09/google-nano-banana-cutout-guide/</guid>
        <description>&lt;p&gt;This article uses a practical Python script to show how to call Google&amp;rsquo;s &lt;code&gt;Nano Banana&lt;/code&gt; image editing capability for product-image cutouts.&lt;/p&gt;
&lt;p&gt;The goal of this implementation is very clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read product images from a directory&lt;/li&gt;
&lt;li&gt;Call a Google image model to remove the background&lt;/li&gt;
&lt;li&gt;Apply one more round of local transparent-background cleanup to the returned image&lt;/li&gt;
&lt;li&gt;Export the final result as a transparent &lt;code&gt;PNG&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you already have a batch of white-background product photos, headset images, or cable images and want to quickly generate transparent-background assets for e-commerce use, this approach is very direct.&lt;/p&gt;
&lt;h2 id=&#34;what-this-code-does&#34;&gt;What this code does
&lt;/h2&gt;&lt;p&gt;This script is mainly divided into 4 parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define a prompt so the model understands it should remove the background, keep the subject intact, and avoid adding shadows&lt;/li&gt;
&lt;li&gt;Call the &lt;code&gt;google-genai&lt;/code&gt; image generation interface&lt;/li&gt;
&lt;li&gt;Extract the image result from the model response&lt;/li&gt;
&lt;li&gt;Use local logic to turn light-colored edge background areas transparent and reduce leftover halos&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In other words, it does not simply send the image to the model and stop there. It combines model editing with local post-processing.&lt;/p&gt;
&lt;h2 id=&#34;before-you-run-it&#34;&gt;Before you run it
&lt;/h2&gt;&lt;p&gt;Install the dependencies first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;how-to-get-gemini_api_key&#34;&gt;How to get GEMINI_API_KEY
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt; is the key used when calling the Gemini API. According to Google&amp;rsquo;s official quickstart, if you do not already have one, you can create it directly in Google AI Studio.&lt;/p&gt;
&lt;p&gt;The process is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Google AI Studio.&lt;/li&gt;
&lt;li&gt;Sign in with your Google account.&lt;/li&gt;
&lt;li&gt;Find the &lt;code&gt;Get API key&lt;/code&gt; or &lt;code&gt;API keys&lt;/code&gt; page.&lt;/li&gt;
&lt;li&gt;Create a new API key.&lt;/li&gt;
&lt;li&gt;Copy the generated key.&lt;/li&gt;
&lt;li&gt;Configure it as a local environment variable for the script to read.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If there is no available project on the page yet, you typically need to finish project initialization first and then return to the API key page to create the key.&lt;/p&gt;
&lt;p&gt;After you have the key, configure the environment variable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you are using &lt;code&gt;cmd&lt;/code&gt;, you can write:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If both &lt;code&gt;GEMINI_API_KEY&lt;/code&gt; and &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt; are set, the runtime will usually prefer &lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;, so it is better to keep only one of them to avoid confusion.&lt;/p&gt;
&lt;h2 id=&#34;example-directory-structure&#34;&gt;Example directory structure
&lt;/h2&gt;&lt;p&gt;The script accepts two arguments:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;input_dir&lt;/code&gt;: input image directory&lt;/li&gt;
&lt;li&gt;&lt;code&gt;output_dir&lt;/code&gt;: output image directory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;how-to-run-it&#34;&gt;How to run it
&lt;/h2&gt;&lt;p&gt;Assuming the script file is named &lt;code&gt;cutout.py&lt;/code&gt;, run it like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you want to switch models, you can also pass it explicitly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The script will iterate over these file types in the input directory:&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;After processing, it will generate transparent-background &lt;code&gt;PNG&lt;/code&gt; files with matching names in the output directory.&lt;/p&gt;
&lt;h2 id=&#34;core-api-call-flow&#34;&gt;Core API call flow
&lt;/h2&gt;&lt;p&gt;The key code that actually calls Google Nano Banana is here:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Two pieces of content are passed in here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A text prompt, &lt;code&gt;PROMPT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;PIL.Image&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The prompt asks the model to remove the full background from the product image, keep only the subject, and pay attention to a few important requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep the full product intact&lt;/li&gt;
&lt;li&gt;Preserve thin lines and cable details&lt;/li&gt;
&lt;li&gt;Clean up inner holes and loop areas&lt;/li&gt;
&lt;li&gt;Do not add new objects&lt;/li&gt;
&lt;li&gt;Do not add shadows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prompts like this have a big effect on cutout quality, especially for details such as earphone wires, transparent edges, and hollow regions.&lt;/p&gt;
&lt;h2 id=&#34;why-local-post-processing-is-still-needed&#34;&gt;Why local post-processing is still needed
&lt;/h2&gt;&lt;p&gt;After the model returns the result, the script does not save it directly. It also runs &lt;code&gt;make_transparent_from_borders(image)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The idea behind this step is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start from the outer border of the image and find light-colored background pixels&lt;/li&gt;
&lt;li&gt;Use breadth-first search to mark all connected light-colored regions&lt;/li&gt;
&lt;li&gt;Convert those regions to transparent in one pass&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefit is that it can further clean up leftover white edges, light gray backgrounds, and edge areas that are not clean enough.&lt;/p&gt;
&lt;p&gt;The condition used to decide whether a pixel is background is here:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;In simple terms, this means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The overall color must be bright enough&lt;/li&gt;
&lt;li&gt;The RGB channel difference cannot be too large&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is especially suitable for product images with white, light gray, or near-solid-color backgrounds.&lt;/p&gt;
&lt;h2 id=&#34;full-source-code&#34;&gt;Full source code
&lt;/h2&gt;&lt;p&gt;The complete source code is preserved below so you can reuse or modify it directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&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;good-places-to-improve-it-further&#34;&gt;Good places to improve it further
&lt;/h2&gt;&lt;p&gt;If you plan to use this script for batch production, you can continue improving it in these directions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add retry logic so one failed image does not stop the whole batch&lt;/li&gt;
&lt;li&gt;Add logs to make it easier to identify which image failed&lt;/li&gt;
&lt;li&gt;Make background thresholds configurable&lt;/li&gt;
&lt;li&gt;Support recursive scanning of subdirectories&lt;/li&gt;
&lt;li&gt;Add a side-by-side preview of the original and processed result&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;If you only want the shortest explanation of how to use Google Nano Banana for cutouts, the core process is just three steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;code&gt;google-genai&lt;/code&gt; and &lt;code&gt;Pillow&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pass the prompt and image to &lt;code&gt;client.models.generate_content()&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The value of this code is that it does more than just call the model. It also adds transparent-background post-processing, which makes it more suitable for direct product-image cutout work.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>What are Ollama cloud models and how do you use them</title>
        <link>https://knightli.com/en/2026/04/09/ollama-cloud-models-guide/</link>
        <pubDate>Thu, 09 Apr 2026 18:42:32 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/09/ollama-cloud-models-guide/</guid>
        <description>&lt;p&gt;If you already use &lt;code&gt;Ollama&lt;/code&gt; to run local models, cloud models are easy to understand.&lt;/p&gt;
&lt;p&gt;There is only one core difference:&lt;br&gt;
local models run on your own machine, while cloud models run on Ollama&amp;rsquo;s cloud infrastructure and return the result to you.&lt;/p&gt;
&lt;h2 id=&#34;what-are-ollama-cloud-models&#34;&gt;What are Ollama cloud models
&lt;/h2&gt;&lt;p&gt;Ollama cloud models keep the Ollama workflow, but move the actual computation from your local machine to the cloud.&lt;/p&gt;
&lt;p&gt;The main benefits are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Less pressure on local hardware&lt;/li&gt;
&lt;li&gt;Easier access to larger models that your machine cannot run well&lt;/li&gt;
&lt;li&gt;You can keep using the familiar Ollama workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-they-differ-from-local-models&#34;&gt;How they differ from local models
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Item&lt;/th&gt;
          &lt;th&gt;Local models&lt;/th&gt;
          &lt;th&gt;Cloud models&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Runtime location&lt;/td&gt;
          &lt;td&gt;Your machine&lt;/td&gt;
          &lt;td&gt;Cloud&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hardware requirements&lt;/td&gt;
          &lt;td&gt;High&lt;/td&gt;
          &lt;td&gt;Low&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Latency&lt;/td&gt;
          &lt;td&gt;Usually lower&lt;/td&gt;
          &lt;td&gt;Affected by network&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Privacy&lt;/td&gt;
          &lt;td&gt;Stronger&lt;/td&gt;
          &lt;td&gt;Requests are sent to the cloud&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If you care more about privacy, low latency, and offline use, local models are a better fit.&lt;br&gt;
If your hardware is limited but you still want to use larger models, cloud models are more convenient.&lt;/p&gt;
&lt;h2 id=&#34;how-to-identify-a-cloud-model&#34;&gt;How to identify a cloud model
&lt;/h2&gt;&lt;p&gt;At the moment, Ollama cloud models are typically labeled with a &lt;code&gt;-cloud&lt;/code&gt; suffix, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;The available model list may change over time, so the official Ollama pages should be treated as the source of truth.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-them&#34;&gt;How to use them
&lt;/h2&gt;&lt;p&gt;First, sign in:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;After that, run a cloud model directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you are calling it from code, you can also configure an 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 example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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;Why is the sky blue?&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;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Ollama cloud models can be summarized in one sentence:&lt;/p&gt;
&lt;p&gt;the commands are almost the same, but the model is no longer running on your local machine.&lt;/p&gt;
&lt;p&gt;If your computer cannot handle large models well, but you still want to keep the Ollama workflow, cloud models are a very direct option.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Download a GGUF Model from Hugging Face and Import It into Ollama</title>
        <link>https://knightli.com/en/2026/04/09/import-huggingface-gguf-into-ollama/</link>
        <pubDate>Thu, 09 Apr 2026 11:00:07 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/09/import-huggingface-gguf-into-ollama/</guid>
        <description>&lt;p&gt;If a model is not available in the official Ollama library, or if you want to use a specific &lt;code&gt;GGUF&lt;/code&gt; file from Hugging Face, you can download it manually and then import it into Ollama.&lt;/p&gt;
&lt;h2 id=&#34;step-1-download-the-gguf-file-from-hugging-face&#34;&gt;Step 1: Download the GGUF file from Hugging Face
&lt;/h2&gt;&lt;p&gt;First, find the target model&amp;rsquo;s &lt;code&gt;GGUF&lt;/code&gt; file on Hugging Face. You will usually see multiple quantized versions, such as:&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;Which version you choose depends on your VRAM, RAM, and your tradeoff between speed and quality. After downloading, place the &lt;code&gt;.gguf&lt;/code&gt; file in a fixed directory so you can reference it from the &lt;code&gt;Modelfile&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-2-write-the-modelfile&#34;&gt;Step 2: Write the Modelfile
&lt;/h2&gt;&lt;p&gt;Create a &lt;code&gt;Modelfile&lt;/code&gt; in the same directory as the model file. The most basic version looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If the filename is different, replace it with the actual filename, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If your goal is just to get it running, this single &lt;code&gt;FROM&lt;/code&gt; line is usually enough.&lt;/p&gt;
&lt;h2 id=&#34;step-3-import-it-into-ollama&#34;&gt;Step 3: Import it into Ollama
&lt;/h2&gt;&lt;p&gt;Then run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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; is the local model name you want to use inside Ollama&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f Modelfile&lt;/code&gt; tells Ollama to create the model from that file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once the creation succeeds, the GGUF file becomes a local model that you can call directly.&lt;/p&gt;
&lt;h2 id=&#34;step-4-run-the-model&#34;&gt;Step 4: Run the model
&lt;/h2&gt;&lt;p&gt;After creation, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;From that point on, it works much like a model pulled with &lt;code&gt;ollama pull&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-to-inspect-an-existing-models-modelfile&#34;&gt;How to inspect an existing model&amp;rsquo;s Modelfile
&lt;/h2&gt;&lt;p&gt;If you are not sure how to write a &lt;code&gt;Modelfile&lt;/code&gt;, you can inspect the configuration of an existing model directly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;This command prints the &lt;code&gt;Modelfile&lt;/code&gt; for &lt;code&gt;llama3.2&lt;/code&gt;, which is useful as a reference for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How &lt;code&gt;FROM&lt;/code&gt; should be written&lt;/li&gt;
&lt;li&gt;How the template and system prompt are structured&lt;/li&gt;
&lt;li&gt;How parameters are declared&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-this-approach-makes-sense&#34;&gt;When this approach makes sense
&lt;/h2&gt;&lt;p&gt;This manual Hugging Face import flow is useful when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The model you want is not available in Ollama&amp;rsquo;s official library&lt;/li&gt;
&lt;li&gt;You want a specific quantized variant&lt;/li&gt;
&lt;li&gt;You have already downloaded the &lt;code&gt;GGUF&lt;/code&gt; file manually&lt;/li&gt;
&lt;li&gt;You want finer control over how the model is packaged&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If Ollama already provides an official version, using &lt;code&gt;pull&lt;/code&gt; is usually simpler. But when you need a specific quantization or a custom wrapper, &lt;code&gt;GGUF + Modelfile&lt;/code&gt; gives you more flexibility.&lt;/p&gt;
&lt;h2 id=&#34;common-notes&#34;&gt;Common notes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;The path after &lt;code&gt;FROM&lt;/code&gt; must match the actual location of the &lt;code&gt;.gguf&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;If the filename contains spaces or special characters, it is better to rename it first.&lt;/li&gt;
&lt;li&gt;Different &lt;code&gt;GGUF&lt;/code&gt; quantization levels can greatly affect memory use and speed, so successful import does not guarantee smooth runtime performance.&lt;/li&gt;
&lt;li&gt;If the model is a chat model, you may still need to adjust the prompt template later for better results.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Downloading a &lt;code&gt;GGUF&lt;/code&gt; file from Hugging Face and importing it into Ollama is not complicated. Prepare the model file, write a minimal &lt;code&gt;Modelfile&lt;/code&gt;, then run &lt;code&gt;ollama create&lt;/code&gt;, and you can bring a third-party &lt;code&gt;GGUF&lt;/code&gt; model into your Ollama workflow.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How to Troubleshoot Slow `ollama pull` Model Downloads</title>
        <link>https://knightli.com/en/2026/04/09/ollama-download-slow-troubleshooting/</link>
        <pubDate>Thu, 09 Apr 2026 10:42:39 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/09/ollama-download-slow-troubleshooting/</guid>
        <description>&lt;p&gt;&lt;code&gt;ollama pull model_name:tag&lt;/code&gt; can be very slow in some regions, and the download process is not always stable.&lt;/p&gt;
&lt;p&gt;If your issue looks like repeated interruptions halfway through a large model download, with errors such as &lt;code&gt;TLS handshake timeout&lt;/code&gt; or &lt;code&gt;unexpected EOF&lt;/code&gt;, the bottleneck may not be &lt;code&gt;registry.ollama.ai&lt;/code&gt; itself, but the actual download path after the redirect.&lt;/p&gt;
&lt;p&gt;This article walks through a simple troubleshooting approach: first get the real model file URLs, then confirm where the traffic actually ends up, and finally optimize only the domains that matter.&lt;/p&gt;
&lt;h2 id=&#34;get-the-model-file-download-urls&#34;&gt;Get the model file download URLs
&lt;/h2&gt;&lt;p&gt;You can use the following project to extract the manifest and blob download URLs for an Ollama model directly:&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;Using &lt;code&gt;gemma4:latest&lt;/code&gt; as an example, you can extract links like the following.&lt;/p&gt;
&lt;h3 id=&#34;manifest-url&#34;&gt;Manifest URL
&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-urls&#34;&gt;Blob URLs
&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;If you only want a quick verification, you can also download the manifest and blobs directly with &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 -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;the-real-download-url-after-the-redirect&#34;&gt;The real download URL after the redirect
&lt;/h2&gt;&lt;p&gt;If you try downloading one of the blobs with &lt;code&gt;wget&lt;/code&gt;, you will notice that the request does not stay on &lt;code&gt;registry.ollama.ai&lt;/code&gt;. It gets redirected to a &lt;code&gt;Cloudflare R2&lt;/code&gt; object storage 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;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;There are a few key details in the log:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;registry.ollama.ai&lt;/code&gt; returns &lt;code&gt;307 Temporary Redirect&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The final download URL lands on &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The large file transfer is actually being served by the object storage domain behind the redirect&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This matters because if your proxy or routing rules only cover &lt;code&gt;registry.ollama.ai&lt;/code&gt; but not &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;, downloads can still be slow or repeatedly interrupted.&lt;/p&gt;
&lt;p&gt;Here is one example of an actual redirect 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;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;adjust-your-network-settings&#34;&gt;Adjust your network settings
&lt;/h2&gt;&lt;p&gt;Once you confirm the real download path, the troubleshooting direction becomes much clearer.&lt;/p&gt;
&lt;p&gt;If you are using a proxy, split routing, or custom DNS, check these first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether &lt;code&gt;registry.ollama.ai&lt;/code&gt; and &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt; are using the same stable route&lt;/li&gt;
&lt;li&gt;Whether your proxy rules cover only the former but miss the latter&lt;/li&gt;
&lt;li&gt;Whether your current outbound path is suitable for sustained multi-GB downloads&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key issue here is not simply whether the official site opens, but whether the redirected object storage path is stable enough for long-running large-file transfers. In many cases, the real bottleneck is the &lt;code&gt;Cloudflare R2&lt;/code&gt; layer rather than the registry domain in front of it.&lt;/p&gt;
&lt;h2 id=&#34;before-and-after-comparison&#34;&gt;Before-and-after comparison
&lt;/h2&gt;&lt;p&gt;Here is one real-world example while downloading &lt;code&gt;gemma4:31b-it-q8_0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Before adjusting the network path, the download was slow and failed midway:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;After the adjustment, the same model download became noticeably faster and more stable:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;This does not mean every network environment will see the same improvement, but it does support one useful conclusion: the bottleneck may be the actual large-file download path rather than the Ollama client itself.&lt;/p&gt;
&lt;h2 id=&#34;a-more-practical-troubleshooting-order&#34;&gt;A more practical troubleshooting order
&lt;/h2&gt;&lt;p&gt;If you run into the same issue, this order usually works well:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;ollama pull&lt;/code&gt; or &lt;code&gt;ollama run&lt;/code&gt; once and confirm the issue is reproducible.&lt;/li&gt;
&lt;li&gt;Test a blob URL with &lt;code&gt;wget&lt;/code&gt; or &lt;code&gt;curl -L&lt;/code&gt; and confirm whether it redirects to &lt;code&gt;*.r2.cloudflarestorage.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Adjust your proxy or routing only for the real download domain, then test speed and stability again.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The benefit of this order is that each step validates one clear hypothesis, so you do not have to troubleshoot blindly.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;When &lt;code&gt;ollama pull&lt;/code&gt; is slow, the problem is often not that &lt;code&gt;registry.ollama.ai&lt;/code&gt; is unreachable, but that the &lt;code&gt;Cloudflare R2&lt;/code&gt; path actually serving the large files is unstable.&lt;/p&gt;
&lt;p&gt;So instead of retrying over and over, a better approach is to identify the real download path first and optimize the network route where the traffic actually lands.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gemma 4 on Raspberry Pi 5: It Works, But Responses Are Slow</title>
        <link>https://knightli.com/en/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</link>
        <pubDate>Wed, 08 Apr 2026 18:42:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/08/gemma4-on-raspberry-pi5-benchmark/</guid>
        <description>&lt;p&gt;I ran a near-limit experiment: running Gemma 4 on a &lt;code&gt;Raspberry Pi 5 (8GB RAM)&lt;/code&gt;. I was not targeting larger variants, only the smallest &lt;code&gt;E2B&lt;/code&gt; model.&lt;/p&gt;
&lt;p&gt;Conclusion first: it runs and it is usable, but it fits low-interaction workflows better than real-time chat.&lt;/p&gt;
&lt;h2 id=&#34;test-environment&#34;&gt;Test Environment
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Device: Raspberry Pi 5 (4-core CPU, 8GB RAM)&lt;/li&gt;
&lt;li&gt;OS: Ubuntu Server (no GUI)&lt;/li&gt;
&lt;li&gt;Access method: SSH&lt;/li&gt;
&lt;li&gt;Runtime: LM Studio CLI (command-line-only mode)&lt;/li&gt;
&lt;li&gt;Model: Gemma 4 E2B (about 4.5GB)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;step-1-install-and-start-lm-studio-cli&#34;&gt;Step 1: Install and Start LM Studio CLI
&lt;/h2&gt;&lt;p&gt;I installed the LM Studio CLI build on the Pi, then started the service and checked available commands.&lt;/p&gt;
&lt;p&gt;For a terminal-only setup, this deployment mode is a good fit for Raspberry Pi.&lt;/p&gt;
&lt;h2 id=&#34;step-2-move-model-storage-to-ssd&#34;&gt;Step 2: Move Model Storage to SSD
&lt;/h2&gt;&lt;p&gt;To avoid heavy SD card writes, I switched model download storage to an external SSD.&lt;/p&gt;
&lt;p&gt;On Raspberry Pi 5, SSD usage is much more practical than on older models. For long-term local model runs, SSD is strongly recommended.&lt;/p&gt;
&lt;h2 id=&#34;step-3-download-and-load-gemma-4-e2b&#34;&gt;Step 3: Download and Load Gemma 4 E2B
&lt;/h2&gt;&lt;p&gt;After download, the model loaded into memory successfully.&lt;/p&gt;
&lt;p&gt;According to official information, Gemma 4 includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tool-calling support for agent-style workflows (function calling)&lt;/li&gt;
&lt;li&gt;Multimodal capabilities (image/video; smaller models also include audio-related capability)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128K&lt;/code&gt; context window&lt;/li&gt;
&lt;li&gt;Apache 2.0 license (commercial use allowed)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given Raspberry Pi hardware limits, E2B is the most practical tier to start with.&lt;/p&gt;
&lt;h2 id=&#34;step-4-start-api-and-enable-lan-access&#34;&gt;Step 4: Start API and Enable LAN Access
&lt;/h2&gt;&lt;p&gt;After loading, I started the API on local port &lt;code&gt;4000&lt;/code&gt; and confirmed model listing works via HTTP.&lt;/p&gt;
&lt;p&gt;The issue: by default, it only listens on localhost, so other LAN devices cannot access it directly.&lt;/p&gt;
&lt;p&gt;Since host binding was not exposed by the startup options, I used &lt;code&gt;socat&lt;/code&gt; for port forwarding, bridging an external Pi port to LM Studio&amp;rsquo;s internal port.&lt;/p&gt;
&lt;p&gt;Result: successful. I could query the model list from a MacBook on the same LAN.&lt;/p&gt;
&lt;h2 id=&#34;step-5-connect-to-editor-zed&#34;&gt;Step 5: Connect to Editor (Zed)
&lt;/h2&gt;&lt;p&gt;LM Studio&amp;rsquo;s local server is OpenAI-API-compatible, so most tools that support custom &lt;code&gt;base_url&lt;/code&gt; can connect.&lt;/p&gt;
&lt;p&gt;I added a new LLM provider in Zed pointing to the Pi-hosted Gemma 4 instance, and in-editor chat worked.&lt;/p&gt;
&lt;h2 id=&#34;practical-usability&#34;&gt;Practical Usability
&lt;/h2&gt;&lt;p&gt;This setup is suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Local automation scripts&lt;/li&gt;
&lt;li&gt;Low-concurrency, low-real-time assistant tasks&lt;/li&gt;
&lt;li&gt;Personal learning and edge-device experimentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Less suitable for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;High-frequency interactive chat&lt;/li&gt;
&lt;li&gt;Development collaboration scenarios sensitive to response latency&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Running Gemma 4 (E2B) on &lt;code&gt;Raspberry Pi 5&lt;/code&gt; is feasible, and the practical output quality is better than expected.&lt;/p&gt;
&lt;p&gt;If your goal is offline operation, tool integration, and lightweight-to-mid tasks, this setup is worth trying. If your goal is smooth real-time interaction, stronger hardware is still the better choice.&lt;/p&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Google Gemma 4 Model Comparison: How to Choose Between 2B/4B/26B/31B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/&#34; &gt;How to Install and Run Gemma 4 on Android: Complete Getting-Started Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/&#34; &gt;How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/openclaw-connect-gemma4-local/&#34; &gt;Connect OpenClaw to Local Gemma 4: Complete Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Connect OpenClaw to Local Gemma 4: Complete Setup Guide</title>
        <link>https://knightli.com/en/2026/04/08/openclaw-connect-gemma4-local/</link>
        <pubDate>Wed, 08 Apr 2026 18:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/08/openclaw-connect-gemma4-local/</guid>
        <description>&lt;p&gt;This guide shows how to connect &lt;code&gt;OpenClaw&lt;/code&gt; to a local &lt;code&gt;Gemma 4&lt;/code&gt; model through &lt;code&gt;Ollama&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you have not deployed Gemma 4 locally yet, start here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/&#34; &gt;How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;step-1-start-the-ollama-api-service&#34;&gt;Step 1: Start the Ollama API Service
&lt;/h2&gt;&lt;p&gt;Start Ollama first:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then verify the API quickly with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;Hello&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;If you get a model response, your local API is ready.&lt;/p&gt;
&lt;h2 id=&#34;step-2-configure-openclaw-to-use-ollama&#34;&gt;Step 2: Configure OpenClaw to Use Ollama
&lt;/h2&gt;&lt;p&gt;The OpenClaw config file is usually located at:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Edit &lt;code&gt;config.yaml&lt;/code&gt; and add a local model entry under &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;# Your existing model config...&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;step-3-set-default-model-optional&#34;&gt;Step 3: Set Default Model (Optional)
&lt;/h2&gt;&lt;p&gt;If you want Gemma 4 as the default model:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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;step-4-restart-and-verify-openclaw&#34;&gt;Step 4: Restart and Verify OpenClaw
&lt;/h2&gt;&lt;p&gt;Restart 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;List available models:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Run a quick chat test:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Hello&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;If the chat returns normally, OpenClaw is successfully connected to local Gemma 4.&lt;/p&gt;
&lt;h2 id=&#34;common-troubleshooting&#34;&gt;Common Troubleshooting
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;connection refused&lt;/code&gt;: make sure &lt;code&gt;ollama serve&lt;/code&gt; is running.&lt;/li&gt;
&lt;li&gt;Model not found: check model name with &lt;code&gt;ollama list&lt;/code&gt; (for example &lt;code&gt;gemma4:12b&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Timeout: increase &lt;code&gt;timeout&lt;/code&gt; and test a smaller model first.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Google Gemma 4 Model Comparison: How to Choose Between 2B/4B/26B/31B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/&#34; &gt;How to Install and Run Gemma 4 on Android: Complete Getting-Started Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/&#34; &gt;How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide</title>
        <link>https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/</link>
        <pubDate>Wed, 08 Apr 2026 18:06:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/</guid>
        <description>&lt;p&gt;If you want to run Gemma 4 locally on a laptop, &lt;code&gt;Ollama&lt;/code&gt; is one of the fastest and simplest options. Even without complex setup, you can usually get it running in about five minutes.&lt;/p&gt;
&lt;h2 id=&#34;step-1-install-ollama&#34;&gt;Step 1: Install Ollama
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Open &lt;code&gt;https://ollama.com&lt;/code&gt; and download the installer for your OS.&lt;/li&gt;
&lt;li&gt;Complete installation based on your system:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;macOS: drag it to &lt;code&gt;Applications&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Windows: run the &lt;code&gt;.exe&lt;/code&gt; installer.&lt;/li&gt;
&lt;li&gt;Linux: use the install script from the official site.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After installation, Ollama runs as a background service. Beyond initial setup, daily usage is mostly simple commands.&lt;/p&gt;
&lt;h2 id=&#34;step-2-download-a-gemma-4-model&#34;&gt;Step 2: Download a Gemma 4 Model
&lt;/h2&gt;&lt;p&gt;Open a terminal and run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If your machine is stronger, you can switch to &lt;code&gt;12b&lt;/code&gt; or &lt;code&gt;27b&lt;/code&gt;. Once downloaded, the model is stored locally.&lt;/p&gt;
&lt;p&gt;Check downloaded models with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;step-3-run-the-model&#34;&gt;Step 3: Run the Model
&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;This opens an interactive chat session in your terminal. Type your prompt and press Enter. To exit, type:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;If you prefer a browser chat UI, you can pair it with &lt;code&gt;Open WebUI&lt;/code&gt;. It wraps Ollama with a local web interface and is usually quick to set up with Docker.&lt;/p&gt;
&lt;h2 id=&#34;laptop-performance-tips&#34;&gt;Laptop Performance Tips
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Apple Silicon (M2/M3/M4): Metal acceleration is enabled by default, and &lt;code&gt;12B&lt;/code&gt; can run well.&lt;/li&gt;
&lt;li&gt;NVIDIA GPU: CUDA is used automatically when a compatible GPU is detected. Keep drivers updated.&lt;/li&gt;
&lt;li&gt;CPU-only inference: works, but larger models will be slower. For most CPU-only setups, &lt;code&gt;4B&lt;/code&gt; is the practical default.&lt;/li&gt;
&lt;li&gt;Free memory before loading large models: as a rough rule, each billion parameters needs about &lt;code&gt;0.5GB to 1GB&lt;/code&gt; RAM.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-choose-a-model&#34;&gt;How to Choose a Model
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 1B&lt;/code&gt;: good for lightweight Q&amp;amp;A, simple summarization, and quick lookups; limited on complex reasoning.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 4B&lt;/code&gt;: best for most daily tasks (writing help, coding help, document summarization) with strong speed/quality balance.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 12B&lt;/code&gt;: better for longer context and more complex tasks, especially coding and reasoning.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Gemma 4 27B&lt;/code&gt;: better for high-demand workloads and closer to frontier-cloud quality, but needs significantly stronger hardware.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Google Gemma 4 Model Comparison: How to Choose Between 2B/4B/26B/31B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/&#34; &gt;How to Install and Run Gemma 4 on Android: Complete Getting-Started Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>How to Install and Run Gemma 4 on Android: Complete Getting-Started Guide</title>
        <link>https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/</link>
        <pubDate>Wed, 08 Apr 2026 17:55:53 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/</guid>
        <description>&lt;p&gt;If you want to run Gemma 4 offline on your phone, this guide walks you through the full process from setup to practical usage.&lt;/p&gt;
&lt;h2 id=&#34;step-1-get-the-app&#34;&gt;Step 1: Get the App
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Google AI Edge Gallery&lt;/code&gt; is currently not available on Google Play, so you need to install it via APK sideloading.&lt;/p&gt;
&lt;p&gt;On your Android device, go to:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Settings -&amp;gt; Apps -&amp;gt; Special app access -&amp;gt; Install unknown apps&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find your browser (for example, Chrome or Firefox) and enable &amp;ldquo;Allow from this source.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Open the &lt;code&gt;Google AI Edge Gallery&lt;/code&gt; GitHub Releases page in your mobile browser.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;a class=&#34;link&#34; href=&#34;https://github.com/google-ai-edge/gallery/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/google-ai-edge/gallery/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Download the latest &lt;code&gt;.apk&lt;/code&gt; package.&lt;/li&gt;
&lt;li&gt;After the download completes, open the file from notifications or your file manager and follow the prompts.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With a stable connection, this step usually takes around 2 minutes.&lt;/p&gt;
&lt;h2 id=&#34;step-2-open-the-app-and-grant-permissions&#34;&gt;Step 2: Open the App and Grant Permissions
&lt;/h2&gt;&lt;p&gt;When you first open &lt;code&gt;AI Edge Gallery&lt;/code&gt;, it will request storage permission to save model files. It&amp;rsquo;s best to allow this; otherwise, the app cannot download or load models.&lt;/p&gt;
&lt;p&gt;You will typically see these sections on the home screen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ask Image&lt;/code&gt;: Vision tasks (describe images, answer questions about photos)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AI Chat&lt;/code&gt;: Standard text chat&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Summarize&lt;/code&gt;: Paste text and generate summaries&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Smart Reply&lt;/code&gt;: Generate reply suggestions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For most users, &lt;code&gt;AI Chat&lt;/code&gt; is the primary entry point.&lt;/p&gt;
&lt;h2 id=&#34;step-3-download-a-gemma-4-model&#34;&gt;Step 3: Download a Gemma 4 Model
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Enter &lt;code&gt;AI Chat&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;code&gt;Get Models&lt;/code&gt; when prompted.&lt;/li&gt;
&lt;li&gt;Choose a Gemma 4 model from the list (model size is shown).&lt;/li&gt;
&lt;li&gt;Pick based on your device capability; if your phone has &lt;code&gt;8GB RAM&lt;/code&gt;, start with &lt;code&gt;Gemma 4 4B&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tap &lt;code&gt;Download&lt;/code&gt; and let it run in the background.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: Larger models take longer to download. You can download multiple models and switch between them later. Downloaded models stay on your device, so you do not need to re-download them.&lt;/p&gt;
&lt;h2 id=&#34;step-4-start-chatting&#34;&gt;Step 4: Start Chatting
&lt;/h2&gt;&lt;p&gt;After the model download is finished:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tap the model name to load it (the first load usually takes 10 to 30 seconds depending on model size and device performance).&lt;/li&gt;
&lt;li&gt;Enter your prompt in the chat box and send it.&lt;/li&gt;
&lt;li&gt;The model generates responses locally, and your data does not leave the phone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The first reply is often slower due to model warm-up. Later messages in the same session are usually faster.&lt;/p&gt;
&lt;h2 id=&#34;step-5-try-vision-features-gemma-4-multimodal&#34;&gt;Step 5: Try Vision Features (Gemma 4 Multimodal)
&lt;/h2&gt;&lt;p&gt;If you downloaded a Gemma 4 multimodal variant:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go back to the main menu and open &lt;code&gt;Ask Image&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Select an image or take a photo.&lt;/li&gt;
&lt;li&gt;Ask a question (for example, &amp;ldquo;What&amp;rsquo;s in this image?&amp;rdquo; or &amp;ldquo;Is there any text I should pay attention to?&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;Wait for the model to analyze the image locally and return a result.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This feature works offline, and your image is not sent to external servers.&lt;/p&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Google Gemma 4 Model Comparison: How to Choose Between 2B/4B/26B/31B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/&#34; &gt;How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Using Agent Skills to Replace Copilot&#39;s &#39;Generate Commit Message&#39; in VS Code</title>
        <link>https://knightli.com/en/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/en/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</guid>
        <description>&lt;p&gt;GitHub Copilot&amp;rsquo;s &amp;ldquo;Generate Commit Message&amp;rdquo; in VS Code is very useful. Once the quota is exhausted, the reset cycle can feel long.
This post is a practical attempt to replace that feature with local 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;Generate commit message&#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;problem-and-goal&#34;&gt;Problem and Goal
&lt;/h2&gt;&lt;p&gt;The goal of this post is to provide a practical alternative: use &lt;code&gt;git-commit-push-zh&lt;/code&gt; skill agents to complete standardized commits and pushes.&lt;/p&gt;
&lt;h2 id=&#34;alternative-git-commit-push-zh&#34;&gt;Alternative: &lt;code&gt;git-commit-push-zh&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;This skill turns your current changes into a fixed workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check change status.&lt;/li&gt;
&lt;li&gt;Confirm the current branch.&lt;/li&gt;
&lt;li&gt;Stage changes.&lt;/li&gt;
&lt;li&gt;Generate a Chinese commit message.&lt;/li&gt;
&lt;li&gt;Run commit.&lt;/li&gt;
&lt;li&gt;Push to the remote branch.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The corresponding commands are:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;suggested-commit-message-convention&#34;&gt;Suggested Commit Message Convention
&lt;/h2&gt;&lt;p&gt;Use this format consistently:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Type examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat&lt;/code&gt;: New feature&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix&lt;/code&gt;: Bug fix&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs&lt;/code&gt;: Documentation update&lt;/li&gt;
&lt;li&gt;&lt;code&gt;refactor&lt;/code&gt;: Refactoring&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore&lt;/code&gt;: Maintenance changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples:&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;common-failure-scenarios&#34;&gt;Common Failure Scenarios
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nothing to commit&lt;/code&gt;: no new changes to commit; stop before pushing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt; failed: check permissions, remote branch state, and conflicts first.&lt;/li&gt;
&lt;li&gt;SSH/permission issues: verify credentials and access, then retry.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;appendix-original-skillmd&#34;&gt;Appendix: Original &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;The content below is the original &lt;code&gt;git-commit-push-zh&lt;/code&gt; document, preserved as-is for reuse and maintenance.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&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>How to Check Whether an Ollama Model Is Loaded on GPU</title>
        <link>https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/</link>
        <pubDate>Mon, 06 Apr 2026 10:15:18 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/</guid>
        <description>&lt;p&gt;If you want to confirm whether an Ollama model is actually running on GPU, the most direct way is checking processor allocation for currently loaded models.&lt;/p&gt;
&lt;h2 id=&#34;command&#34;&gt;Command
&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;example-output&#34;&gt;Example Output
&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;how-to-read-the-processor-column&#34;&gt;How to Read the &lt;code&gt;PROCESSOR&lt;/code&gt; Column
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;100% GPU&lt;/code&gt;: The model is fully loaded into GPU VRAM.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100% CPU&lt;/code&gt;: The model is fully loaded in system memory (no GPU inference).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;48%/52% CPU/GPU&lt;/code&gt;: The model is split between system memory and GPU VRAM.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;practical-tips&#34;&gt;Practical Tips
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;If you expect GPU usage but see &lt;code&gt;100% CPU&lt;/code&gt;, first check GPU drivers, CUDA/ROCm environment, and Ollama runtime settings.&lt;/li&gt;
&lt;li&gt;With larger models and limited VRAM, CPU/GPU mixed loading is common.&lt;/li&gt;
&lt;li&gt;For performance troubleshooting, run &lt;code&gt;ollama ps&lt;/code&gt; before checking speed metrics to locate bottlenecks faster.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ollama ps&lt;/code&gt; is the first step to verify real GPU usage. Focus on the &lt;code&gt;PROCESSOR&lt;/code&gt; column to quickly identify where the model is loaded and decide your next optimization action.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Gemma 4 Model Comparison and Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/&#34; &gt;LLM Quantization Guide (FP16/Q8/Q5/Q4/Q2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/&#34; &gt;Completely Uninstall Ollama on Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/&#34; &gt;Ollama Model Storage Path and Migration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ollama-related-links:end --&gt;
</description>
        </item>
        <item>
        <title>Using AI Agent Skills to Maintain a Hugo Multilingual Blog</title>
        <link>https://knightli.com/en/2026/04/06/agent-skill-sync-post-translations-guide/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/06/agent-skill-sync-post-translations-guide/</guid>
        <description>&lt;p&gt;If you maintain a Hugo multilingual blog, you probably run into a frequent pain point:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;After finishing Chinese content, you still need synchronized English and Traditional Chinese versions&lt;/li&gt;
&lt;li&gt;All language files must keep the same structure&lt;/li&gt;
&lt;li&gt;Front matter must be translated while still following Hugo format rules&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; is built for exactly this scenario.&lt;/p&gt;
&lt;h2 id=&#34;what-problem-this-skill-solves&#34;&gt;What Problem This Skill Solves
&lt;/h2&gt;&lt;p&gt;The positioning of &lt;code&gt;sync-post-translations&lt;/code&gt; is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;code&gt;index.zh-cn.md&lt;/code&gt; as the source file&lt;/li&gt;
&lt;li&gt;Generate or update &lt;code&gt;index.en.md&lt;/code&gt; and &lt;code&gt;index.zh-tw.md&lt;/code&gt; in the same directory&lt;/li&gt;
&lt;li&gt;Keep Markdown structure consistent&lt;/li&gt;
&lt;li&gt;Apply explicit front matter rules (especially &lt;code&gt;date&lt;/code&gt; and &lt;code&gt;slug&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Example trigger phrases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Sync translation to English and Traditional Chinese&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Translate this post to English and Traditional Chinese&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;skill-directory-structure&#34;&gt;Skill Directory Structure
&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;core-code-1-skillmd&#34;&gt;Core Code 1: SKILL.md
&lt;/h2&gt;&lt;p&gt;Below is the core rules file of this 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;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;core-code-2-agentsopenaiyaml&#34;&gt;Core Code 2: agents/openai.yaml
&lt;/h2&gt;&lt;p&gt;This file defines how the skill is presented and prompted on the agent side:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;practical-usage-example&#34;&gt;Practical Usage Example
&lt;/h2&gt;&lt;h3 id=&#34;1-natural-language-trigger&#34;&gt;1) Natural language trigger
&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-expected-output&#34;&gt;2) Expected output
&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;why-these-rules-matter&#34;&gt;Why These Rules Matter
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Keeping &lt;code&gt;slug&lt;/code&gt; unchanged preserves stable URLs and historical backlinks.&lt;/li&gt;
&lt;li&gt;Normalizing &lt;code&gt;date&lt;/code&gt; to RFC3339 with timezone avoids Hugo/theme parsing ambiguity.&lt;/li&gt;
&lt;li&gt;Keeping Markdown structure unchanged prevents TOC, code block, and shortcode rendering issues.&lt;/li&gt;
&lt;li&gt;Not translating technical identifiers significantly reduces broken command/file mismatches.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;common-pitfalls-and-how-to-avoid-them&#34;&gt;Common Pitfalls and How to Avoid Them
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;If &lt;code&gt;title&lt;/code&gt; contains &lt;code&gt;:&lt;/code&gt; without quotes, YAML parsing can fail.&lt;/li&gt;
&lt;li&gt;Translating &lt;code&gt;--flags&lt;/code&gt;, URLs, or package names will break command examples.&lt;/li&gt;
&lt;li&gt;If heading levels differ across languages (for example, &lt;code&gt;##&lt;/code&gt; becoming &lt;code&gt;###&lt;/code&gt;), anchors can become inconsistent.&lt;/li&gt;
&lt;li&gt;Translating only body content but not front matter can break list pages and SEO metadata.&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>Ollama Default Model Storage Path and Migration Guide (Avoid Filling Up C Drive)</title>
        <link>https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/</link>
        <pubDate>Mon, 06 Apr 2026 09:38:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/</guid>
        <description>&lt;p&gt;When running local LLMs, the system drive is often the first thing to run out of space. Ollama stores models in user or system directories by default, so your C drive can fill up quickly without path planning.&lt;/p&gt;
&lt;h2 id=&#34;common-default-ollama-model-directories&#34;&gt;Common Default Ollama Model Directories
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;C:\Users\&amp;lt;username&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; (may vary by installation method)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows-move-the-model-directory-to-a-non-system-drive&#34;&gt;Windows: Move the Model Directory to a Non-System Drive
&lt;/h2&gt;&lt;p&gt;A practical choice is moving model storage to a path like &lt;code&gt;D:\OllamaModels&lt;/code&gt;. The key is setting the &lt;code&gt;OLLAMA_MODELS&lt;/code&gt; system environment variable.&lt;/p&gt;
&lt;h2 id=&#34;1-create-the-target-directory&#34;&gt;1. Create the Target Directory
&lt;/h2&gt;&lt;p&gt;For example, create: &lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-configure-the-system-environment-variable&#34;&gt;2. Configure the System Environment Variable
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Variable name: &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Variable value: &lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can set it in &amp;ldquo;System Properties -&amp;gt; Advanced -&amp;gt; Environment Variables&amp;rdquo;, or with an admin PowerShell command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&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-restart-ollama-or-reboot-the-system&#34;&gt;3. Restart Ollama (or Reboot the System)
&lt;/h2&gt;&lt;p&gt;After setting the variable, restart the Ollama service/app. If you&amp;rsquo;re unsure whether it has taken effect, rebooting the PC is the most reliable option.&lt;/p&gt;
&lt;h2 id=&#34;4-verify-the-new-path-is-active&#34;&gt;4. Verify the New Path Is Active
&lt;/h2&gt;&lt;p&gt;Pull any model and check whether new files appear under &lt;code&gt;D:\OllamaModels&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;5-clean-up-the-old-directory-after-confirmation&#34;&gt;5. Clean Up the Old Directory (After Confirmation)
&lt;/h2&gt;&lt;p&gt;Once models work correctly in the new location, remove old files to reclaim C drive space.&lt;/p&gt;
&lt;h2 id=&#34;faq&#34;&gt;FAQ
&lt;/h2&gt;&lt;h3 id=&#34;still-writing-to-c-drive-after-configuration&#34;&gt;Still Writing to C Drive After Configuration
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Confirm the variable is a system variable, not a temporary session variable.&lt;/li&gt;
&lt;li&gt;Confirm the Ollama process was restarted.&lt;/li&gt;
&lt;li&gt;Verify the variable name is exactly &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;do-i-need-to-migrate-existing-model-files&#34;&gt;Do I Need to Migrate Existing Model Files
&lt;/h3&gt;&lt;p&gt;If you want to avoid re-downloading, stop Ollama, copy existing model files to the new directory, then restart Ollama and verify.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Gemma 4 Model Comparison and Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/&#34; &gt;LLM Quantization Guide (FP16/Q8/Q5/Q4/Q2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/&#34; &gt;Completely Uninstall Ollama on Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/&#34; &gt;How to Check Whether Ollama Uses GPU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ollama-related-links:end --&gt;
</description>
        </item>
        <item>
        <title>Completely Uninstall Ollama on Linux (Including Leftover Cleanup)</title>
        <link>https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/</link>
        <pubDate>Mon, 06 Apr 2026 09:16:29 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/</guid>
        <description>&lt;p&gt;If you need to remove Ollama completely from Linux, follow the steps below in order. This guide cleans up the service, executable, model directory, and the &lt;code&gt;ollama&lt;/code&gt; user/group.&lt;/p&gt;
&lt;h2 id=&#34;before-you-uninstall&#34;&gt;Before You Uninstall
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;The commands below will delete local Ollama model files (usually in &lt;code&gt;/usr/share/ollama&lt;/code&gt;). Back up first if needed.&lt;/li&gt;
&lt;li&gt;These commands use &lt;code&gt;sudo&lt;/code&gt; by default. Make sure your account has administrator privileges.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-stop-and-remove-the-systemd-service&#34;&gt;1. Stop and Remove the systemd Service
&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-remove-the-ollama-binary&#34;&gt;2. Remove the Ollama Binary
&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-remove-ollama-library-directories-if-present&#34;&gt;3. Remove Ollama Library Directories (If Present)
&lt;/h2&gt;&lt;p&gt;If your installation wrote Ollama files into a &lt;code&gt;lib&lt;/code&gt; directory, clean them up with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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-remove-model-and-data-directory&#34;&gt;4. Remove Model and Data Directory
&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-remove-system-user-and-group-if-present&#34;&gt;5. Remove System User and Group (If Present)
&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-verify-uninstall-completion&#34;&gt;6. Verify Uninstall Completion
&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;If &lt;code&gt;ollama&lt;/code&gt; is no longer found in the checks above, the uninstall is complete.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Gemma 4 Model Comparison and Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/&#34; &gt;LLM Quantization Guide (FP16/Q8/Q5/Q4/Q2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/&#34; &gt;Ollama Model Storage Path and Migration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/&#34; &gt;How to Check Whether Ollama Uses GPU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ollama-related-links:end --&gt;
</description>
        </item>
        <item>
        <title>LLM Quantization Explained: How to Choose FP16, Q8, Q5, Q4, or Q2</title>
        <link>https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/</link>
        <pubDate>Sun, 05 Apr 2026 22:09:11 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/</guid>
        <description>&lt;p&gt;The core goal of quantization is simple: trade a small amount of precision for a smaller model size, lower VRAM usage, and faster inference.&lt;br&gt;
For local deployment, picking the right quantization format is often more important than chasing a larger parameter count.&lt;/p&gt;
&lt;h2 id=&#34;what-is-quantization&#34;&gt;What Is Quantization
&lt;/h2&gt;&lt;p&gt;Quantization means compressing model parameters from higher-precision formats (such as &lt;code&gt;FP16&lt;/code&gt;) into lower-bit formats (such as &lt;code&gt;Q8&lt;/code&gt; and &lt;code&gt;Q4&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;A simple analogy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Original model: like a high-quality photo, clear but large.&lt;/li&gt;
&lt;li&gt;Quantized model: like a compressed photo, slightly less detail but lighter and faster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;common-quantization-formats&#34;&gt;Common Quantization Formats
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Quantization&lt;/th&gt;
          &lt;th&gt;Precision / Bit Width&lt;/th&gt;
          &lt;th&gt;Size&lt;/th&gt;
          &lt;th&gt;Quality Loss&lt;/th&gt;
          &lt;th&gt;Recommended Use&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-bit float&lt;/td&gt;
          &lt;td&gt;Largest&lt;/td&gt;
          &lt;td&gt;Almost none&lt;/td&gt;
          &lt;td&gt;Research, evaluation, max quality&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q8_0&lt;/td&gt;
          &lt;td&gt;8-bit integer&lt;/td&gt;
          &lt;td&gt;Larger&lt;/td&gt;
          &lt;td&gt;Almost none&lt;/td&gt;
          &lt;td&gt;High-end PCs, quality + performance&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q5_K_M&lt;/td&gt;
          &lt;td&gt;5-bit mixed&lt;/td&gt;
          &lt;td&gt;Medium&lt;/td&gt;
          &lt;td&gt;Slight&lt;/td&gt;
          &lt;td&gt;Daily driver, balanced choice&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q4_K_M&lt;/td&gt;
          &lt;td&gt;4-bit mixed&lt;/td&gt;
          &lt;td&gt;Smaller&lt;/td&gt;
          &lt;td&gt;Acceptable&lt;/td&gt;
          &lt;td&gt;General default, strong value&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q3_K_M&lt;/td&gt;
          &lt;td&gt;3-bit mixed&lt;/td&gt;
          &lt;td&gt;Very small&lt;/td&gt;
          &lt;td&gt;Noticeable&lt;/td&gt;
          &lt;td&gt;Low-spec devices, run-first&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Q2_K&lt;/td&gt;
          &lt;td&gt;2-bit mixed&lt;/td&gt;
          &lt;td&gt;Smallest&lt;/td&gt;
          &lt;td&gt;Significant&lt;/td&gt;
          &lt;td&gt;Extreme resource limits, fallback&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;quantization-naming-rules&#34;&gt;Quantization Naming Rules
&lt;/h2&gt;&lt;p&gt;Take &lt;code&gt;gemma-4:4b-q4_k_m&lt;/code&gt; as an example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gemma-4:4b&lt;/code&gt;: model name and parameter scale.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q4&lt;/code&gt;: 4-bit quantization.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt;: K-quants (an improved quantization method).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt;: medium level (common options also include &lt;code&gt;s&lt;/code&gt;/small and &lt;code&gt;l&lt;/code&gt;/large).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;quick-selection-by-vram&#34;&gt;Quick Selection by VRAM
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;RAM / VRAM&lt;/th&gt;
          &lt;th&gt;Recommended Quantization&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;Start with a version that runs stably on your machine, then move up in precision step by step instead of jumping straight to the biggest model.&lt;/p&gt;
&lt;h2 id=&#34;practical-tips&#34;&gt;Practical Tips
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Start with &lt;code&gt;Q4_K_M&lt;/code&gt; by default and test real tasks first.&lt;/li&gt;
&lt;li&gt;If response quality is not enough, move up to &lt;code&gt;Q5_K_M&lt;/code&gt; or &lt;code&gt;Q8_0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If VRAM or speed is the main bottleneck, move down to &lt;code&gt;Q3_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use the same test set every time you switch quantization formats.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Quality first: &lt;code&gt;FP16&lt;/code&gt; or &lt;code&gt;Q8_0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Balance first: &lt;code&gt;Q5_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;General default: &lt;code&gt;Q4_K_M&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Low-spec fallback: &lt;code&gt;Q3_K_M&lt;/code&gt; or &lt;code&gt;Q2_K&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key is not &amp;ldquo;bigger is always better&amp;rdquo;, but &amp;ldquo;the most stable and usable result under your hardware limits.&amp;rdquo;&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/&#34; &gt;Gemma 4 Model Comparison and Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/&#34; &gt;Completely Uninstall Ollama on Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/&#34; &gt;Ollama Model Storage Path and Migration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/&#34; &gt;How to Check Whether Ollama Uses GPU&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ollama-related-links:end --&gt;
</description>
        </item>
        <item>
        <title>Google Gemma 4 Model Comparison: How to Choose Between 2B/4B/26B/31B</title>
        <link>https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/</link>
        <pubDate>Sun, 05 Apr 2026 08:30:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/05/google-gemma-4-model-comparison/</guid>
        <description>&lt;p&gt;Gemma 4 focuses on &lt;code&gt;multimodality&lt;/code&gt; and &lt;code&gt;local offline inference&lt;/code&gt;, with a full range from lightweight to high-performance models. For most local deployment users, the key is not choosing the largest model, but choosing the one that best matches hardware and task needs.&lt;/p&gt;
&lt;h2 id=&#34;gemma-4-model-comparison&#34;&gt;Gemma 4 Model Comparison
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;The table below is for quick model selection. Actual performance and resource usage should be validated in your own environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Model&lt;/th&gt;
          &lt;th&gt;Parameter Size&lt;/th&gt;
          &lt;th&gt;Positioning&lt;/th&gt;
          &lt;th&gt;Key Strengths&lt;/th&gt;
          &lt;th&gt;Main Limitations&lt;/th&gt;
          &lt;th&gt;Recommended Scenarios&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;2B&lt;/td&gt;
          &lt;td&gt;Ultra-lightweight&lt;/td&gt;
          &lt;td&gt;Low latency, low resource usage, lowest deployment barrier&lt;/td&gt;
          &lt;td&gt;Limited performance on complex reasoning and long task chains&lt;/td&gt;
          &lt;td&gt;Mobile, IoT, lightweight Q&amp;amp;A, simple automation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 4B&lt;/td&gt;
          &lt;td&gt;4B&lt;/td&gt;
          &lt;td&gt;Lightweight enhanced&lt;/td&gt;
          &lt;td&gt;Stronger understanding and generation than 2B, still easy to deploy locally&lt;/td&gt;
          &lt;td&gt;Limited ceiling for heavy coding and complex agent tasks&lt;/td&gt;
          &lt;td&gt;Local assistant, basic document work, multilingual daily tasks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 26B&lt;/td&gt;
          &lt;td&gt;26B&lt;/td&gt;
          &lt;td&gt;High-performance (MoE)&lt;/td&gt;
          &lt;td&gt;Better reasoning and tool use, suitable for production workflows&lt;/td&gt;
          &lt;td&gt;Significantly higher VRAM requirement and hardware threshold&lt;/td&gt;
          &lt;td&gt;Coding assistant, complex workflows, enterprise internal agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Gemma 4 31B&lt;/td&gt;
          &lt;td&gt;31B&lt;/td&gt;
          &lt;td&gt;High-performance (dense)&lt;/td&gt;
          &lt;td&gt;Best overall capability and stronger stability on complex tasks&lt;/td&gt;
          &lt;td&gt;Highest resource cost and tuning complexity&lt;/td&gt;
          &lt;td&gt;Advanced reasoning, complex coding tasks, heavy automation&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-to-choose-start-from-hardware-and-tasks&#34;&gt;How to Choose: Start from Hardware and Tasks
&lt;/h2&gt;&lt;p&gt;If your top concern is whether it runs smoothly, use this guideline:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;8GB&lt;/code&gt; VRAM: prioritize &lt;code&gt;2B/4B&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;12GB&lt;/code&gt; VRAM: prioritize &lt;code&gt;4B&lt;/code&gt; or quantized variants of larger models.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;24GB&lt;/code&gt; VRAM: focus on &lt;code&gt;26B&lt;/code&gt;, and evaluate quantized &lt;code&gt;31B&lt;/code&gt; based on workload.&lt;/li&gt;
&lt;li&gt;Higher VRAM or multi-GPU: consider high-precision &lt;code&gt;31B&lt;/code&gt; setups.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prioritize stability and inference speed first, then scale up model size gradually.&lt;/p&gt;
&lt;h2 id=&#34;four-typical-use-cases&#34;&gt;Four Typical Use Cases
&lt;/h2&gt;&lt;h3 id=&#34;1-local-general-assistant&#34;&gt;1) Local General Assistant
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Preferred model: &lt;code&gt;4B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Why: strong balance between cost and quality, suitable for long-running local use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-coding-and-automation&#34;&gt;2) Coding and Automation
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Preferred model: &lt;code&gt;26B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Why: more stable in multi-step tasks, tool calls, and script generation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-advanced-reasoning-and-complex-agents&#34;&gt;3) Advanced Reasoning and Complex Agents
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Preferred model: &lt;code&gt;31B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Why: stronger robustness under complex context.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-edge-devices-and-lightweight-offline-use&#34;&gt;4) Edge Devices and Lightweight Offline Use
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Preferred model: &lt;code&gt;2B&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Why: easiest to deploy on resource-constrained devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;deployment-suggestions-ollama&#34;&gt;Deployment Suggestions (Ollama)
&lt;/h2&gt;&lt;p&gt;A practical approach is to iterate in small steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start with &lt;code&gt;4B&lt;/code&gt; to establish a baseline (latency, memory, quality).&lt;/li&gt;
&lt;li&gt;Build a fixed test set from real tasks (for example, 20 common questions + 10 automation tasks).&lt;/li&gt;
&lt;li&gt;Compare &lt;code&gt;26B/31B&lt;/code&gt; against that set for accuracy, latency, and VRAM cost.&lt;/li&gt;
&lt;li&gt;Upgrade only when the gain is clear.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This avoids jumping to a large model too early and running into lag, low throughput, and maintenance overhead.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;The real value of Gemma 4 is not just larger parameter counts, but a practical model ladder from lightweight to high-performance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For low-cost fast rollout: start with &lt;code&gt;2B/4B&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For production-grade local AI workflows: prioritize &lt;code&gt;26B&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For advanced reasoning and heavy automation: move to &lt;code&gt;31B&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In most cases, the best Gemma 4 choice is not the biggest model, but the one with the best fit for your hardware and task goals.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
&lt;h2 id=&#34;related-posts&#34;&gt;Related Posts
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/05/llm-quantization-guide-fp16-q4-q2/&#34; &gt;LLM Quantization Guide (FP16/Q8/Q5/Q4/Q2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/uninstall-ollama-on-linux/&#34; &gt;Completely Uninstall Ollama on Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/ollama-model-storage-path-and-migration/&#34; &gt;Ollama Model Storage Path and Migration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/06/check-ollama-model-loaded-on-gpu/&#34; &gt;How to Check Whether Ollama Uses GPU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/android-gemma4-install-run-guide/&#34; &gt;How to Install and Run Gemma 4 on Android (Chinese)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/en/2026/04/08/run-gemma4-on-laptop/&#34; &gt;How to Run Gemma 4 on a Laptop: 5-Minute Local Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ollama-related-links:end --&gt;
</description>
        </item>
        <item>
        <title>Analyzing Anthropic&#39;s docx Agent Skill: Features, Code Structure, Usage, and Caveats</title>
        <link>https://knightli.com/en/2026/04/04/analyze-docx-agent-skill/</link>
        <pubDate>Sat, 04 Apr 2026 11:00:00 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/04/04/analyze-docx-agent-skill/</guid>
        <description>&lt;p&gt;Anthropic&amp;rsquo;s &lt;code&gt;skills/docx&lt;/code&gt; is essentially a workflow spec plus a script toolkit for handling Word documents more reliably with AI.&lt;br&gt;
It does not just tell a model to &amp;ldquo;generate a &lt;code&gt;.docx&lt;/code&gt;.&amp;rdquo; Instead, it breaks document work into explicit paths: create, read, edit existing files, handle tracked changes, add comments, convert formats, and validate OOXML structure.&lt;/p&gt;
&lt;p&gt;If we reduce it to one line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It treats &lt;code&gt;.docx&lt;/code&gt; as ZIP + XML + Office compatibility constraints, not as a black box.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;what-this-skill-solves&#34;&gt;What this skill solves
&lt;/h2&gt;&lt;p&gt;When general-purpose models handle Word files, we often see the same failure patterns:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;They output text, but not a structurally valid &lt;code&gt;.docx&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;They break OOXML while editing existing documents.&lt;/li&gt;
&lt;li&gt;They do not know which XML parts to update for comments or tracked changes.&lt;/li&gt;
&lt;li&gt;Output opens in one app but behaves inconsistently across Word, LibreOffice, and Google Docs.&lt;/li&gt;
&lt;li&gt;They lack clear routing for when to use &lt;code&gt;pandoc&lt;/code&gt; vs. unpack/edit/repack.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The value of this skill is that it front-loads those decisions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;pandoc&lt;/code&gt; or unpacking for reading and analysis.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;docx-js&lt;/code&gt; for creating new &lt;code&gt;.docx&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;Use &amp;ldquo;unpack -&amp;gt; edit XML -&amp;gt; repack -&amp;gt; validate&amp;rdquo; for existing documents.&lt;/li&gt;
&lt;li&gt;Use dedicated scripts for tracked changes/comments/schema-sensitive operations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That approach works because Word problems are usually not about wording quality. They are about structural correctness and compatibility.&lt;/p&gt;
&lt;h2 id=&#34;directory-and-code-structure&#34;&gt;Directory and code structure
&lt;/h2&gt;&lt;p&gt;This skill can be understood in four layers.&lt;/p&gt;
&lt;h3 id=&#34;1-guidance-layer-skillmd&#34;&gt;1. Guidance layer: &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; does two important jobs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It defines trigger conditions.&lt;br&gt;
If a request mentions Word, &lt;code&gt;.docx&lt;/code&gt;, comments, tracked changes, TOC, page numbers, or polished document formatting, this skill should be activated.&lt;/li&gt;
&lt;li&gt;It defines execution routes.&lt;br&gt;
Different task types map to different toolchains, instead of improvising every run.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It also captures practical compatibility rules, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt; defaults to A4, not US Letter.&lt;/li&gt;
&lt;li&gt;Landscape page sizing must follow &lt;code&gt;docx-js&lt;/code&gt; internals.&lt;/li&gt;
&lt;li&gt;Lists should not be built from manual Unicode bullets.&lt;/li&gt;
&lt;li&gt;Table width needs coordinated settings at table and cell levels.&lt;/li&gt;
&lt;li&gt;Image &lt;code&gt;type&lt;/code&gt; is required.&lt;/li&gt;
&lt;li&gt;Generated files should be validated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That is a strong signal that the goal is not just &amp;ldquo;generate something,&amp;rdquo; but &amp;ldquo;generate something that is robust.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;2-office-package-layer-scriptsoffice&#34;&gt;2. Office package layer: &lt;code&gt;scripts/office/*&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;This layer treats &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt; as Open XML packages.&lt;/p&gt;
&lt;h3 id=&#34;unpackpy&#34;&gt;&lt;code&gt;unpack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This script unpacks files and prepares XML for safer editing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extracts ZIP package content&lt;/li&gt;
&lt;li&gt;Pretty-prints XML and &lt;code&gt;.rels&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Optionally runs &lt;code&gt;merge_runs&lt;/code&gt; for DOCX&lt;/li&gt;
&lt;li&gt;Optionally runs &lt;code&gt;simplify_redlines&lt;/code&gt; for DOCX&lt;/li&gt;
&lt;li&gt;Escapes smart quotes into XML entities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So it is not just decompression. It normalizes content into an editing-friendly shape.&lt;/p&gt;
&lt;h3 id=&#34;packpy&#34;&gt;&lt;code&gt;pack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This script repacks a directory into &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt;.&lt;br&gt;
Before packaging, it can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run validation and auto-repair&lt;/li&gt;
&lt;li&gt;Condense XML formatting safely&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If &lt;code&gt;--original&lt;/code&gt; is provided, it compares and validates against the source context.&lt;br&gt;
That matters because &amp;ldquo;repacked successfully&amp;rdquo; is not equal to &amp;ldquo;semantically safe.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;validatepy&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This is the quality gate. It checks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML well-formedness&lt;/li&gt;
&lt;li&gt;Namespace correctness&lt;/li&gt;
&lt;li&gt;Unique ID constraints&lt;/li&gt;
&lt;li&gt;Relationship/content type consistency&lt;/li&gt;
&lt;li&gt;XSD compliance&lt;/li&gt;
&lt;li&gt;Whitespace preservation rules&lt;/li&gt;
&lt;li&gt;Insertion/deletion/comment marker constraints&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For DOCX work, this is a core component, not an optional extra.&lt;/p&gt;
&lt;h3 id=&#34;sofficepy&#34;&gt;&lt;code&gt;soffice.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This helper wraps LibreOffice execution for restricted/sandboxed environments.&lt;br&gt;
It configures &lt;code&gt;SAL_USE_VCLPLUGIN=svp&lt;/code&gt; and can apply a shim for AF_UNIX socket limitations when needed.&lt;/p&gt;
&lt;p&gt;That tells us the skill is designed for automated agent workflows, not only local manual usage.&lt;/p&gt;
&lt;h2 id=&#34;3-word-specific-layer-comments-revisions-and-redlines&#34;&gt;3. Word-specific layer: comments, revisions, and redlines
&lt;/h2&gt;&lt;h3 id=&#34;commentpy&#34;&gt;&lt;code&gt;comment.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;This script adds comments to DOCX, including required package plumbing across multiple parts:&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;comment range markers in &lt;code&gt;document.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;declarations in &lt;code&gt;[Content_Types].xml&lt;/code&gt; and &lt;code&gt;document.xml.rels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If comment parts do not exist yet, it can initialize templates and required relationships/content types.&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;This script accepts all tracked changes via LibreOffice headless + macro (&lt;code&gt;.uno:AcceptAllTrackedChanges&lt;/code&gt;) rather than fragile raw XML surgery.&lt;/p&gt;
&lt;p&gt;That is a pragmatic choice because accepting revisions is a behavior-level operation, not just deleting &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt; tags.&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;This is one of the most valuable pieces.&lt;br&gt;
It removes tracked changes for a specific author in both original and modified documents, then compares resulting text to verify that changes are properly represented in revision markup.&lt;/p&gt;
&lt;p&gt;So it validates revision semantics, not only XML syntax.&lt;/p&gt;
&lt;h2 id=&#34;4-schema-and-support-layer-schemas-helpers-templates&#34;&gt;4. Schema and support layer: &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;Contains OOXML/ECMA/Microsoft-related XSD files used by validators.&lt;br&gt;
Validation is therefore grounded in formal schema constraints.&lt;/p&gt;
&lt;h3 id=&#34;helpers&#34;&gt;&lt;code&gt;helpers/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Includes utilities such as:&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;These stabilize XML structure for clearer edits and diffs.&lt;/p&gt;
&lt;h3 id=&#34;templates&#34;&gt;&lt;code&gt;templates/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Contains XML templates needed for comment support, including:&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;These templates help avoid package-level inconsistencies when creating comment-related parts.&lt;/p&gt;
&lt;h2 id=&#34;typical-usage-patterns&#34;&gt;Typical usage patterns
&lt;/h2&gt;&lt;p&gt;From &lt;code&gt;SKILL.md&lt;/code&gt;, the most common workflows are:&lt;/p&gt;
&lt;h2 id=&#34;scenario-1-readanalyze-an-existing-docx&#34;&gt;Scenario 1: Read/analyze an existing DOCX
&lt;/h2&gt;&lt;p&gt;Use &lt;code&gt;pandoc&lt;/code&gt; for text-level extraction with tracked changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Use unpacking for raw XML inspection:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;h2 id=&#34;scenario-2-create-a-new-docx&#34;&gt;Scenario 2: Create a new DOCX
&lt;/h2&gt;&lt;p&gt;Use &lt;code&gt;docx-js&lt;/code&gt; for generation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;Then validate:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#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;h2 id=&#34;scenario-3-edit-an-existing-docx&#34;&gt;Scenario 3: Edit an existing DOCX
&lt;/h2&gt;&lt;p&gt;Core workflow:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&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;# edit XML under unpacked/&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; is the critical part because it enables stronger structural and revision-aware checks.&lt;/p&gt;
&lt;h2 id=&#34;scenario-4-accept-all-tracked-changes&#34;&gt;Scenario 4: Accept all tracked changes
&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;Requires LibreOffice; useful for producing a clean post-review file.&lt;/p&gt;
&lt;h2 id=&#34;scenario-5-add-comments&#34;&gt;Scenario 5: Add comments
&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;You still need to place comment range markers in &lt;code&gt;document.xml&lt;/code&gt; where the comment should attach.&lt;/p&gt;
&lt;h2 id=&#34;key-caveats-to-remember&#34;&gt;Key caveats to remember
&lt;/h2&gt;&lt;h3 id=&#34;1-docx-is-not-a-plain-text-file&#34;&gt;1. &lt;code&gt;.docx&lt;/code&gt; is not a plain text file
&lt;/h3&gt;&lt;p&gt;A single edit may involve body XML, relationships, content types, comment parts, IDs, and schema constraints.&lt;/p&gt;
&lt;h3 id=&#34;2-docx-js-generation-still-needs-explicit-guardrails&#34;&gt;2. &lt;code&gt;docx-js&lt;/code&gt; generation still needs explicit guardrails
&lt;/h3&gt;&lt;p&gt;Defaults can be wrong for your target layout and compatibility goals.&lt;/p&gt;
&lt;h3 id=&#34;3-comments-and-tracked-changes-are-multi-part-operations&#34;&gt;3. Comments and tracked changes are multi-part operations
&lt;/h3&gt;&lt;p&gt;They are package-level features, not single-tag edits.&lt;/p&gt;
&lt;h3 id=&#34;4-opens-successfully-does-not-mean-correctly-modified&#34;&gt;4. &amp;ldquo;Opens successfully&amp;rdquo; does not mean &amp;ldquo;correctly modified&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;Many issues only surface later during editing, reviewing, cross-app opening, or acceptance of changes.&lt;/p&gt;
&lt;h3 id=&#34;5-environment-readiness-matters&#34;&gt;5. Environment readiness matters
&lt;/h3&gt;&lt;p&gt;You need tools such as &lt;code&gt;pandoc&lt;/code&gt;, &lt;code&gt;LibreOffice/soffice&lt;/code&gt;, &lt;code&gt;docx-js&lt;/code&gt;, and Python deps (&lt;code&gt;defusedxml&lt;/code&gt;, &lt;code&gt;lxml&lt;/code&gt;) available.&lt;/p&gt;
&lt;h2 id=&#34;what-this-skill-is-good-for-and-not&#34;&gt;What this skill is good for (and not)
&lt;/h2&gt;&lt;h3 id=&#34;good-fit&#34;&gt;Good fit
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Batch Word report generation&lt;/li&gt;
&lt;li&gt;Structured formal document production&lt;/li&gt;
&lt;li&gt;Automated edits to existing &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tracked-changes aware workflows&lt;/li&gt;
&lt;li&gt;Automated comment insertion&lt;/li&gt;
&lt;li&gt;Agent/script-driven document pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;not-ideal&#34;&gt;Not ideal
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Very simple PDF-only output cases&lt;/li&gt;
&lt;li&gt;Pure text extraction with no document fidelity requirement&lt;/li&gt;
&lt;li&gt;Fully manual visual editing workflows&lt;/li&gt;
&lt;li&gt;Zero-dependency expectations for end-to-end Word automation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Anthropic&amp;rsquo;s &lt;code&gt;skills/docx&lt;/code&gt; is strong not because it can &amp;ldquo;generate Word files,&amp;rdquo; but because it encodes why Word automation fails and how to handle those failure modes systematically.&lt;br&gt;
It combines generation, low-level XML editing, revision semantics, schema validation, and cross-app compatibility into one executable workflow.&lt;/p&gt;
&lt;p&gt;If your use case includes existing DOCX edits, comments, tracked changes, or compatibility-sensitive automation, this design is very practical and high value.&lt;/p&gt;
&lt;p&gt;Code location: &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>
